import React, { useEffect, useState } from 'react'; import { NotificationProps } from '../types'; export const Notification: React.FC = (props) => { const { notification, styles, config, remove: removeNotification } = props; const [isVisible, setIsVisible] = useState(false); const { closeIcon, successIcon, errorIcon, infoIcon, isCloseable, showTitle, showIcon, successColor, errorColor, infoColor, } = config; useEffect(() => { let hiddenClassTimer: NodeJS.Timeout; if (notification.animate) { hiddenClassTimer = setTimeout(() => { setIsVisible(true); }, config.animationDuration); } else { setIsVisible(false); } return () => { clearTimeout(hiddenClassTimer); }; }, [notification.animate]); return (
{showIcon && ( {notification.variant === 'success' && (successIcon ?? ( ))} {notification.variant === 'error' && (errorIcon ?? ( ))} {notification.variant === 'info' && (infoIcon ?? ( ))} )}
{showTitle && (

{notification.title || notification.variant?.toLocaleLowerCase()}

)}

{notification.message}

{isCloseable && ( )}
); };