import { createPortal } from "react-dom"; import { useHive } from "../store"; import { dismissToast } from "../store/raw"; // Toast stack (K1/Decision 7). A single mount renders every transient // notification pushed by a mutating flow (comment/approve, override save, prune, // session/project delete). Bottom-right, click-to-dismiss, auto-expiring. export default function Toast() { const toasts = useHive((s) => s.toasts); if (!toasts.length) return null; return createPortal(
{toasts.map((t) => { const accent = t.kind === "error" ? "var(--crit)" : t.kind === "success" ? "var(--done)" : "var(--brand)"; return (
dismissToast(t.id)} title="Dismiss" > {t.kind === "error" ? "✕" : t.kind === "success" ? "✓" : "ℹ"} {t.message}
); })}
, document.body, ); }