// 零依赖的事件总线式 toast,避免在每个交互组件里包 Context export type ToastVariant = "error" | "ok"; export interface ToastDetail { id: number; message: string; variant: ToastVariant; } export function toast(message: string, variant: ToastVariant = "error") { if (typeof window === "undefined") return; window.dispatchEvent( new CustomEvent("j13-toast", { detail: { id: Date.now() + Math.random(), message, variant }, }) ); }