"use client"; import { useEffect, useState } from "react"; import { X, AlertCircle, CheckCircle2 } from "lucide-react"; import type { ToastDetail } from "@/lib/toast"; export default function Toaster() { const [items, setItems] = useState([]); useEffect(() => { const handler = (e: Event) => { const detail = (e as CustomEvent).detail; setItems((list) => [...list.slice(-2), detail]); window.setTimeout(() => { setItems((list) => list.filter((t) => t.id !== detail.id)); }, 3600); }; window.addEventListener("j13-toast", handler); return () => window.removeEventListener("j13-toast", handler); }, []); const dismiss = (id: number) => setItems((list) => list.filter((t) => t.id !== id)); return (
{items.map((t) => ( dismiss(t.id)} /> ))}
); } function ToastCard({ toast, onClose }: { toast: ToastDetail; onClose: () => void }) { const color = toast.variant === "error" ? "var(--danger)" : "var(--ok)"; return (
{toast.variant === "error" ? : }

{toast.message}

); }