import React, { createContext, useContext, useState, useCallback } from 'react'; interface ToastContextProps { showSuccessToast: (message: string | React.ReactNode) => void; showErrorToast: (message: string | React.ReactNode) => void; } const ToastContext = createContext(undefined); export const ToastProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { const [toastMessage, setToastMessage] = useState(null); const [toastType, setToastType] = useState<'success' | 'error'>('success'); const showSuccessToast = useCallback((message: string | React.ReactNode) => { setToastMessage(message); setToastType('success'); setTimeout(() => setToastMessage(null), 4000); }, []); const showErrorToast = useCallback((message: string | React.ReactNode) => { setToastMessage(message); setToastType('error'); setTimeout(() => setToastMessage(null), 4000); }, []); return ( {children} {toastMessage && setToastMessage(null)} />} ); }; export const useToast = () => { const context = useContext(ToastContext); if (context === undefined) { throw new Error('useToast must be used within a ToastProvider'); } return context; }; const Toast: React.FC<{ message: string | React.ReactNode; type: 'success' | 'error'; onClose: () => void }> = ({ message, type, onClose }) => { return (
{message}
); };