{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "dialog",
  "title": "Dialog",
  "description": "A modal surface that focuses an important task.",
  "dependencies": [
    "@radix-ui/react-dialog",
    "lucide-react"
  ],
  "registryDependencies": [
    "@rivelle/utils"
  ],
  "files": [
    {
      "path": "registry/nova/ui/dialog.tsx",
      "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\nconst DialogTrigger = DialogPrimitive.Trigger\nconst DialogClose = DialogPrimitive.Close\nconst DialogPortal = DialogPrimitive.Portal\nfunction DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>) { return <DialogPrimitive.Overlay data-slot=\"dialog-overlay\" className={cn(\"fixed inset-0 z-50 bg-black/48 backdrop-blur-[5px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\", className)} {...props} /> }\nfunction DialogContent({ className, children, showCloseButton = true, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & { showCloseButton?: boolean }) { return <DialogPortal><DialogOverlay /><DialogPrimitive.Content data-slot=\"dialog-content\" className={cn(\"fixed left-1/2 top-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-5 rounded-3xl border border-foreground/12 bg-background/96 p-7 shadow-[0_36px_100px_-28px_color-mix(in_oklch,var(--foreground)_38%,transparent),inset_0_1px_0_color-mix(in_oklch,var(--background)_78%,transparent)] backdrop-blur-xl outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:slide-in-from-top-[48%]\", className)} {...props}>{children}{showCloseButton && <DialogPrimitive.Close className=\"absolute right-5 top-5 grid size-8 place-items-center rounded-xl border border-transparent text-muted-foreground outline-none transition-[color,background-color,border-color,transform] hover:border-foreground/8 hover:bg-foreground/[.055] hover:text-foreground active:scale-90 focus-visible:ring-2 focus-visible:ring-ring/45\"><X className=\"size-4\" /><span className=\"sr-only\">Close</span></DialogPrimitive.Close>}</DialogPrimitive.Content></DialogPortal> }\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) { return <div data-slot=\"dialog-header\" className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)} {...props} /> }\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) { return <div data-slot=\"dialog-footer\" className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)} {...props} /> }\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) { return <DialogPrimitive.Title className={cn(\"text-xl font-semibold tracking-[-0.035em]\", className)} {...props} /> }\nfunction DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>) { return <DialogPrimitive.Description className={cn(\"text-sm leading-relaxed text-muted-foreground\", className)} {...props} /> }\n\nexport { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger }\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}