"use client"; import { createContext, useCallback, useContext, useState, ReactNode, } from "react"; import { CheckCircle2, XCircle } from "lucide-react"; interface Toast { id: number; message: string; tone: "success" | "error"; } interface ToastContextValue { showSuccess: (message: string) => void; showError: (message: string) => void; } const ToastContext = createContext(null); let idCounter = 0; export function ToastProvider({ children }: { children: ReactNode }) { const [toasts, setToasts] = useState([]); const push = useCallback((message: string, tone: Toast["tone"]) => { const id = ++idCounter; setToasts((prev) => [...prev, { id, message, tone }]); setTimeout(() => { setToasts((prev) => prev.filter((t) => t.id !== id)); }, 3500); }, []); const showSuccess = useCallback((m: string) => push(m, "success"), [push]); const showError = useCallback((m: string) => push(m, "error"), [push]); return ( {children}
{toasts.map((t) => (
{t.tone === "success" ? : } {t.message}
))}
); } export function useToast() { const ctx = useContext(ToastContext); if (!ctx) throw new Error("useToast باید داخل ToastProvider استفاده بشه"); return ctx; }