import React, { createContext, useContext, useMemo, useState, useCallback } from 'react'; const ToastCtx = createContext(null); export function ToastProvider({ children }) { const [toasts, setToasts] = useState([]); const push = useCallback((msg, tone = 'good', ttl = 3200) => { const id = Math.random().toString(36).slice(2); setToasts(t => [...t, { id, msg, tone }]); setTimeout(() => setToasts(t => t.filter(x => x.id !== id)), ttl); }, []); const api = useMemo(() => ({ push }), [push]); return ( {children}
{toasts.map(t => (
{t.msg}
))}
); } export function useToasts() { const ctx = useContext(ToastCtx); if (!ctx) throw new Error('useToasts must be used inside '); return ctx; }