// @ts-nocheck import React from 'react'; type ToastAction = { label: string; onClick: () => void }; type Toast = { id: number; text: string; type?: 'success' | 'error' | 'info'; action?: ToastAction; durationMs?: number; }; const Ctx = React.createContext<{ push: (t: Omit) => void } | null>(null); export function ToastProvider({ children }: { children: React.ReactNode }) { const [list, setList] = React.useState([]); const push = React.useCallback((t: Omit) => { const id = Date.now() + Math.random(); const durationMs = t.durationMs ?? 3000; setList((arr) => [...arr, { id, ...t, durationMs }]); if (durationMs > 0) { setTimeout(() => setList((arr) => arr.filter((x) => x.id !== id)), durationMs); } }, []); const dismiss = React.useCallback((id: number) => { setList((arr) => arr.filter((x) => x.id !== id)); }, []); const contextValue = React.useMemo(() => ({ push }), [push]); React.useEffect(() => { const onEvt = (e: CustomEvent>) => push(e.detail); window.addEventListener('guest-toast', onEvt); return () => window.removeEventListener('guest-toast', onEvt); }, [push]); return ( {children}
{list.map((t) => (
{t.text} {t.action ? ( ) : null}
))}
); } export function useToast() { const ctx = React.useContext(Ctx); if (!ctx) throw new Error('ToastProvider missing'); return ctx; }