typescript import React, { createContext, useContext, useState, ReactNode } from 'react' export type ToastType = 'success' | 'error' | 'warning' | 'info' interface Toast { id: string type: ToastType title: string message?: string } interface ToastContextType { toasts: Toast[] addToast: (toast: Omit) => void removeToast: (id: string) => void } const ToastContext = createContext(undefined) export const useToast = () => { const context = useContext(ToastContext) if (context === undefined) { throw new Error('useToast must be used within a ToastProvider') } return context } interface ToastProviderProps { children: ReactNode } export const ToastProvider: React.FC = ({ children }) => { const [toasts, setToasts] = useState([]) const addToast = (toast: Omit) => { const id = Math.random().toString(36).substr(2, 9) setToasts(prev => [...prev, { ...toast, id }]) // Auto remove after 5 seconds setTimeout(() => { removeToast(id) }, 5000) } const removeToast = (id: string) => { setToasts(prev => prev.filter(toast => toast.id !== id)) } return ( {children} ) }