"use client"; import { createContext, useContext, useState, useCallback, type ReactNode } from "react"; import { Check, X, AlertTriangle } from "lucide-react"; interface Toast { id: number; message: string; type: "success" | "error"; } const ToastContext = createContext<{ toast: (message: string, type?: "success" | "error") => void; }>({ toast: () => {} }); export function useToast() { return useContext(ToastContext); } export function ToastProvider({ children }: { children: ReactNode }) { const [toasts, setToasts] = useState([]); let nextId = 0; const toast = useCallback((message: string, type: "success" | "error" = "success") => { const id = ++nextId; setToasts((t) => [...t, { id, message, type }]); setTimeout(() => setToasts((t) => t.filter((x) => x.id !== id)), 2500); }, []); return ( {children}
{toasts.map((t) => (
{t.type === "error" ? ( ) : ( )} {t.message}
))}
); }