import { Fragment, useEffect } from 'react' import { Transition } from '@headlessui/react' import { useDispatch, useSelector } from 'react-redux' import { XMarkIcon, InformationCircleIcon, ExclamationTriangleIcon, ExclamationCircleIcon } from '@heroicons/react/24/outline' import { RootState } from '../../redux/store' import { NotificationProps } from '../../redux/features/notifications/types' import { dismissCurrentNotification } from '../../redux/features/notifications/notificationQueueSlice' const renderIcon = (level: NotificationProps['level'] = 'info') => { switch (level) { default: return case 'info': return case 'warning': return case 'error': return } } const notificationTime = 3000 const Notification = () => { const { currentNotification, queue } = useSelector((state: RootState) => state.notificationQueue) const dispatch = useDispatch() const handleOnClick = () => { if (currentNotification?.onActionClickCallback) currentNotification?.onActionClickCallback() if (currentNotification?.closeOnAction) dispatch(dismissCurrentNotification()) } useEffect(() => { if (queue.length) setTimeout(() => dispatch(dismissCurrentNotification()), notificationTime) }, [currentNotification]) return <>
{renderIcon(currentNotification?.level)}

{currentNotification?.message}

{currentNotification?.actionButtonText ? : <> }
} export default Notification