import React, { useState, useCallback, createContext, useContext } from 'react'; type ToastType = 'success' | 'error' | 'info'; interface Toast { id: number; message: string; type: ToastType; } interface ToastContextType { addToast: (message: string, type?: ToastType) => void; } const ToastContext = createContext({ addToast: () => { } }); export const useToast = () => useContext(ToastContext); let toastId = 0; export const ToastProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { const [toasts, setToasts] = useState([]); const addToast = useCallback((message: string, type: ToastType = 'info') => { const id = ++toastId; setToasts(prev => [...prev, { id, message, type }]); setTimeout(() => { setToasts(prev => prev.filter(t => t.id !== id)); }, 4000); }, []); const removeToast = (id: number) => { setToasts(prev => prev.filter(t => t.id !== id)); }; const icons: Record = { success: 'M5 13l4 4L19 7', error: 'M6 18L18 6M6 6l12 12', info: 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z', }; const colors: Record = { success: 'bg-emerald-500', error: 'bg-red-500', info: 'bg-blue-500', }; const bgColors: Record = { success: 'bg-emerald-50 dark:bg-emerald-900/20 border-emerald-200 dark:border-emerald-800', error: 'bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800', info: 'bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800', }; return ( {children}
{toasts.map(toast => (

{toast.message}

))}
); };