{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "toast",
  "type": "registry:ui",
  "title": "Toast",
  "description": "Toast notifications built on Base UI with a bouncy seam entrance.",
  "dependencies": [
    "@base-ui/react",
    "lucide-react"
  ],
  "registryDependencies": [
    "https://seamui.dev/r/utils.json",
    "https://seamui.dev/r/motion.json",
    "https://seamui.dev/r/button.json"
  ],
  "files": [
    {
      "path": "registry/seam/ui/toast.tsx",
      "content": "\"use client\"\n\nimport type * as React from \"react\"\nimport { Toast as BaseToast } from \"@base-ui/react/toast\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { condense } from \"@/lib/motion\"\nimport { Button } from \"./button\"\n\n/** Re-exported so callers can `const toast = useToast(); toast.add({ ... })`. */\nconst useToast = BaseToast.useToastManager\n\nfunction ToastProvider({\n  children,\n  ...props\n}: React.ComponentProps<typeof BaseToast.Provider>) {\n  return (\n    <BaseToast.Provider {...props}>\n      {children}\n      <Toaster />\n    </BaseToast.Provider>\n  )\n}\n\nfunction Toaster() {\n  const { toasts } = BaseToast.useToastManager()\n\n  return (\n    <BaseToast.Portal>\n      <BaseToast.Viewport\n        data-slot=\"toast-viewport\"\n        className=\"fixed bottom-4 right-4 z-50 mx-auto flex w-[calc(100vw-2rem)] max-w-sm flex-col sm:right-4\"\n      >\n        {toasts.map((toast) => (\n          <BaseToast.Root\n            key={toast.id}\n            toast={toast}\n            data-slot=\"toast\"\n            className={cn(\n              \"bg-popover text-popover-foreground absolute inset-x-0 bottom-0 z-[calc(1000-var(--toast-index))] rounded-lg squircle border p-4 shadow-overlay\",\n              condense.toast\n            )}\n            style={{\n              // stack the toasts with a small vertical offset\n              transform:\n                \"translateY(calc(var(--toast-index) * -0.75rem)) scale(calc(1 - var(--toast-index) * 0.05))\",\n            }}\n          >\n            <BaseToast.Title\n              data-slot=\"toast-title\"\n              className=\"text-sm font-medium\"\n            />\n            <BaseToast.Description\n              data-slot=\"toast-description\"\n              className=\"text-muted-foreground text-sm\"\n            />\n            <BaseToast.Close\n              render={\n                <Button\n                  variant=\"ghost\"\n                  size=\"icon\"\n                  className=\"text-muted-foreground absolute right-2 top-2 size-8\"\n                />\n              }\n              aria-label=\"Close\"\n            >\n              <X className=\"size-4\" />\n            </BaseToast.Close>\n          </BaseToast.Root>\n        ))}\n      </BaseToast.Viewport>\n    </BaseToast.Portal>\n  )\n}\n\nexport { ToastProvider, Toaster, useToast }\n",
      "type": "registry:ui",
      "target": "components/ui/toast.tsx"
    }
  ]
}