import React from 'react'; import ReactNotification, { store as libStore, ReactNotificationOptions, DismissOptions, } from 'react-notifications-component'; import 'react-notifications-component/dist/scss/notification.scss'; import styles from './Notifications.module.scss'; export default function Notifications() { return (
); } const defaultParams: Partial = { insert: 'top', container: 'top-right', animationIn: ['animate__animated', 'animate__fadeIn'], animationOut: ['animate__animated', 'animate__fadeOut'], }; export type NotificationOptions = { title?: string; message: string | JSX.Element; additionalInfo?: string[]; type: 'success' | 'danger' | 'info' | 'warning'; dismiss?: DismissOptions; onRemoval?: ((id: string, removedBy: ShamefulAny) => void) | undefined; }; function Message({ message, additionalInfo, }: { message: string | JSX.Element; additionalInfo?: string[]; }) { const msg = typeof message === 'string' ?

{message}

: message; return (
{msg} {additionalInfo &&

Additional Info:

} {additionalInfo && ( )}
); } export const store = { addNotification({ title, message, type, dismiss, onRemoval, additionalInfo, }: NotificationOptions) { dismiss = dismiss || { duration: 5000, pauseOnHover: true, click: false, touch: false, showIcon: true, onScreen: true, }; libStore.addNotification({ ...defaultParams, title, message: , type, dismiss, onRemoval, container: 'top-right', }); }, };