import { useState, useEffect } from 'react' import type { Toast } from './toast-utils' type ToastEvent = CustomEvent const Toaster = () => { const [toasts, setToasts] = useState([]) useEffect(() => { const handleToast = (e: ToastEvent) => { const toastItem = { ...e.detail, id: Math.random().toString(36) } setToasts((prev) => [...prev, toastItem]) setTimeout(() => { setToasts((prev) => prev.filter((t) => t.id !== toastItem.id)) }, 5000) } window.addEventListener('toast', handleToast as EventListener) return () => window.removeEventListener('toast', handleToast as EventListener) }, []) if (toasts.length === 0) return null return (
{toasts.map((toastItem) => (
{toastItem.title &&
{toastItem.title}
} {toastItem.description &&
{toastItem.description}
}
))}
) } export { Toaster }