{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "glass-alert-dialog",
  "title": "Glass Alert Dialog",
  "author": "Alex Chih (https://alexchih.com)",
  "description": "Confirmation dialog on strong glass, built on Radix AlertDialog.",
  "dependencies": [
    "radix-ui"
  ],
  "registryDependencies": [
    "https://washiveil.alexchih.com/r/theme.json"
  ],
  "files": [
    {
      "path": "registry/washiveil/ui/glass-alert-dialog.tsx",
      "content": "'use client'\n\nimport * as React from 'react'\nimport { AlertDialog as AlertDialogPrimitive } from 'radix-ui'\n\nimport { cn } from '@/lib/utils'\n\nconst GlassAlertDialog = AlertDialogPrimitive.Root\n\nconst GlassAlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst GlassAlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst GlassAlertDialogOverlay = React.forwardRef<\n  React.ComponentRef<typeof AlertDialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      'fixed inset-0 z-50 bg-deep/20 backdrop-blur-sm dark:bg-black/40 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n      className,\n    )}\n    {...props}\n  />\n))\nGlassAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst GlassAlertDialogContent = React.forwardRef<\n  React.ComponentRef<typeof AlertDialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <GlassAlertDialogPortal>\n    <GlassAlertDialogOverlay />\n    <AlertDialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-3xl border border-glass-edge bg-glass-stronger p-6 backdrop-blur-2xl backdrop-saturate-150 shadow-[0_16px_48px_rgba(28,25,20,0.12)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',\n        className,\n      )}\n      {...props}\n    />\n  </GlassAlertDialogPortal>\n))\nGlassAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nfunction GlassAlertDialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n  return <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n}\nGlassAlertDialogHeader.displayName = 'GlassAlertDialogHeader'\n\nfunction GlassAlertDialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n  return <div className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)} {...props} />\n}\nGlassAlertDialogFooter.displayName = 'GlassAlertDialogFooter'\n\nconst GlassAlertDialogTitle = React.forwardRef<\n  React.ComponentRef<typeof AlertDialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPrimitive.Title\n    ref={ref}\n    className={cn('font-display text-lg font-medium leading-none tracking-tight', className)}\n    {...props}\n  />\n))\nGlassAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst GlassAlertDialogDescription = React.forwardRef<\n  React.ComponentRef<typeof AlertDialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPrimitive.Description ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />\n))\nGlassAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName\n\nconst GlassAlertDialogAction = React.forwardRef<\n  React.ComponentRef<typeof AlertDialogPrimitive.Action>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPrimitive.Action\n    ref={ref}\n    className={cn(\n      'inline-flex items-center justify-center rounded-full bg-primary px-4 py-2 text-sm font-semibold text-primary-foreground transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50',\n      className,\n    )}\n    {...props}\n  />\n))\nGlassAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst GlassAlertDialogCancel = React.forwardRef<\n  React.ComponentRef<typeof AlertDialogPrimitive.Cancel>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPrimitive.Cancel\n    ref={ref}\n    className={cn(\n      'inline-flex items-center justify-center rounded-full border border-border px-4 py-2 text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50',\n      className,\n    )}\n    {...props}\n  />\n))\nGlassAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n  GlassAlertDialog,\n  GlassAlertDialogPortal,\n  GlassAlertDialogOverlay,\n  GlassAlertDialogTrigger,\n  GlassAlertDialogContent,\n  GlassAlertDialogHeader,\n  GlassAlertDialogFooter,\n  GlassAlertDialogTitle,\n  GlassAlertDialogDescription,\n  GlassAlertDialogAction,\n  GlassAlertDialogCancel,\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}