{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "toast",
  "title": "Toast",
  "description": "Notifications that unfold out of a capsule at the top edge.",
  "dependencies": [
    "@base-ui/react@^1.8.0"
  ],
  "registryDependencies": [
    "https://liquikit.dev/r/core.json",
    "https://liquikit.dev/r/glass.json",
    "https://liquikit.dev/r/popup.json"
  ],
  "files": [
    {
      "path": "src/toast.tsx",
      "content": "\"use client\";\n\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport {\n\ttype ComponentProps,\n\ttype CSSProperties,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport type { GlassRefraction, GlassTheme } from \"./glass\";\nimport { MorphPane, PopupState } from \"./popup\";\nimport \"./liquikit.css\";\n\nconst TOAST_RADIUS = 26;\nconst TOAST_GAP = 8;\n\ntype ToastObject = BaseToast.Root.ToastObject;\n\nfunction ToastGlass({\n\topen,\n\t...props\n}: ComponentProps<typeof MorphPane> & { open: boolean }) {\n\tconst trigger = useRef<HTMLElement | null>(null);\n\tconst state = useMemo(() => ({ open, trigger }), [open]);\n\treturn (\n\t\t<PopupState.Provider value={state}>\n\t\t\t<MorphPane {...props} origin=\"top\" panelRadius={TOAST_RADIUS} />\n\t\t</PopupState.Provider>\n\t);\n}\n\nfunction GlassToast({\n\ttoast,\n\toffset,\n\ttheme,\n\trefraction,\n}: {\n\ttoast: ToastObject;\n\toffset: number;\n\ttheme?: GlassTheme;\n\trefraction?: GlassRefraction;\n}) {\n\treturn (\n\t\t<BaseToast.Root\n\t\t\ttoast={toast}\n\t\t\tswipeDirection=\"up\"\n\t\t\tclassName=\"glass-ui-popup glass-ui-toast\"\n\t\t\tstyle={{ \"--glass-toast-y\": `${offset}px` } as CSSProperties}\n\t\t\trender={(props, state) => (\n\t\t\t\t<ToastGlass\n\t\t\t\t\t{...props}\n\t\t\t\t\topen={state.transitionStatus !== \"ending\"}\n\t\t\t\t\ttheme={theme}\n\t\t\t\t\trefraction={refraction}\n\t\t\t\t/>\n\t\t\t)}\n\t\t>\n\t\t\t<BaseToast.Content className=\"glass-ui-toast__content\">\n\t\t\t\t<BaseToast.Title className=\"glass-ui-toast__title\" />\n\t\t\t\t<BaseToast.Description className=\"glass-ui-toast__description\" />\n\t\t\t</BaseToast.Content>\n\t\t\t<BaseToast.Close className=\"glass-ui-toast__close\" aria-label=\"Dismiss\">\n\t\t\t\t<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\">\n\t\t\t\t\t<path d=\"m5 5 6 6m0-6-6 6\" />\n\t\t\t\t</svg>\n\t\t\t</BaseToast.Close>\n\t\t</BaseToast.Root>\n\t);\n}\n\nexport type ToastViewportProps = {\n\ttheme?: GlassTheme;\n\trefraction?: GlassRefraction;\n\tcontainer?: BaseToast.Portal.Props[\"container\"];\n};\n\nfunction Viewport({ theme, refraction, container }: ToastViewportProps) {\n\tconst { toasts } = BaseToast.useToastManager();\n\tlet below = 0;\n\tconst offsets = toasts.map((toast) => {\n\t\tconst offset = below;\n\t\tif (toast.transitionStatus !== \"ending\" && !toast.limited) {\n\t\t\tbelow += (toast.height ?? 0) + TOAST_GAP;\n\t\t}\n\t\treturn offset;\n\t});\n\treturn (\n\t\t<BaseToast.Portal container={container}>\n\t\t\t<BaseToast.Viewport className=\"glass-ui-toast__viewport\">\n\t\t\t\t{toasts.map((toast, index) => (\n\t\t\t\t\t<GlassToast\n\t\t\t\t\t\tkey={toast.id}\n\t\t\t\t\t\ttoast={toast}\n\t\t\t\t\t\toffset={offsets[index]}\n\t\t\t\t\t\ttheme={theme}\n\t\t\t\t\t\trefraction={refraction}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</BaseToast.Viewport>\n\t\t</BaseToast.Portal>\n\t);\n}\n\nexport const Toast = {\n\tProvider: BaseToast.Provider,\n\tViewport,\n};\n\nexport const useToast = BaseToast.useToastManager;\n\nexport const ToastProvider = Toast.Provider;\nexport const ToastViewport = Toast.Viewport;\n",
      "type": "registry:ui",
      "target": "@components/liquikit/toast.tsx"
    }
  ],
  "type": "registry:ui"
}