loom muslin

Toast Region

Stacks toasts bottom-right in one column; each entry keeps the declarative Toast API. Empty list renders nothing.

Previewlive — edit controls below

Invoice saved

INV-2041 is now in the books.

Card expiring

Save + warn

Push toasts into state; onOpenChange removes them.

import { ToastRegion } from "@loom/muslin-react";

<ToastRegion
  toasts={[
    { id: "saved", title: "Invoice saved", description: "INV-2041 is now in the books.", variant: "success", open: true, onOpenChange: dismiss("saved") },
    { id: "card", title: "Card expiring", variant: "warning", open: true, onOpenChange: dismiss("card") },
  ]}
/>