/* eslint-disable react/default-props-match-prop-types */ import { ReactNode } from "react" // @mui material components import Snackbar from "@mui/material/Snackbar" import IconButton from "@mui/material/IconButton" import Icon from "@mui/material/Icon" import Divider from "@mui/material/Divider" import Fade from "@mui/material/Fade" import { SnackbarProps } from "@mui/material" // ThreeD Garden components import MDBox from "~/components/mui/MDBox" import MDTypography from "~/components/mui/MDTypography" // Custom styles for the MDSnackbar import MDSnackbarIconRoot from "~/components/mui/MDSnackbar/MDSnackbarIconRoot" // ThreeD Garden context import { useMaterialUIController } from "~/context" // Declaring props types for MDSnackbar interface Props extends SnackbarProps { color?: | "primary" | "secondary" | "info" | "success" | "warning" | "error" | "dark" | "light" icon: ReactNode title: string dateTime: string content: string close: () => void bgWhite?: boolean [key: string]: any } function MDSnackbar({ color, icon, title, dateTime, content, close, bgWhite, ...rest }: Props): JSX.Element { const [controller] = useMaterialUIController() const { darkMode } = controller let titleColor: any let dateTimeColor: any let dividerColor: any if (bgWhite) { titleColor = color dateTimeColor = "dark" dividerColor = false } else if (color === "light") { titleColor = darkMode ? "inherit" : "dark" dateTimeColor = darkMode ? "inherit" : "text" dividerColor = false } else { titleColor = "white" dateTimeColor = "white" dividerColor = true } return ( close }> darkMode ? palette.background.card : palette[color] || palette.white.main, }}> {icon} {title} {dateTime} (bgWhite && !darkMode) || color === "light" ? dark.main : white.main, fontWeight: ({ typography: { fontWeightBold } }) => fontWeightBold, cursor: "pointer", marginLeft: 2, transform: "translateY(-1px)", }} onClick={close}> close size.sm, color: ({ palette }: { palette: any }) => { let colorValue = bgWhite || color === "light" ? palette.text.main : palette.white.main if (darkMode) { colorValue = color === "light" ? "inherit" : palette.white.main } return colorValue }, }}> {content} ) } // Setting default values for the props of MDSnackbar MDSnackbar.defaultProps = { bgWhite: false, color: "info", } export default MDSnackbar