import { ReactNode, SyntheticEvent } from 'react'; import Alert, { AlertColor } from '@mui/material/Alert'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import Slide, { SlideProps } from '@mui/material/Slide'; import Snackbar from '@mui/material/Snackbar'; const iconMapping = { success: , }; export interface ToastProps { open: boolean; onClose: (event?: SyntheticEvent) => void; severity?: AlertColor; autoHideDuration?: number; children?: ReactNode; } // MUI's Snackbar already self-portals to the end of document.body; adding our // own createPortal wrapper would leak
s under React StrictMode's double- // invoked effects. Render the Snackbar directly. function Toast({ open, onClose, severity = 'success', autoHideDuration = 10000, children }: ToastProps) { const handleClose = (event?: SyntheticEvent | Event, reason?: string) => { if (reason === 'clickaway') { return; } onClose(event as SyntheticEvent | undefined); }; return ( ); } function TransitionLeft(props: SlideProps) { return ; } export default Toast;