{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "dialog",
  "type": "registry:ui",
  "title": "Dialog",
  "description": "Modal dialog with void overlay and corner notch content panel.",
  "dependencies": [
    "@radix-ui/react-dialog"
  ],
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "ui/dialog/dialog.tsx",
      "type": "registry:ui",
      "content": "'use client'\n\nimport * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { cn } from '@/lib/utils'\n\nconst Dialog        = DialogPrimitive.Root\nconst DialogTrigger = DialogPrimitive.Trigger\nconst DialogPortal  = DialogPrimitive.Portal\nconst DialogClose   = DialogPrimitive.Close\n\n/* ── Overlay ── */\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      'fixed inset-0 z-50',\n      'data-[state=open]:animate-in data-[state=closed]:animate-out',\n      'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n      className\n    )}\n    style={{ background: 'rgba(7, 5, 15, 0.88)' }}\n    {...props}\n  />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\n/* ── Content ── */\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        'fixed left-[50%] top-[50%] z-50',\n        'translate-x-[-50%] translate-y-[-50%]',\n        'w-full max-w-lg',\n        'border border-[var(--border)]',\n        'bg-[var(--surface-raised)]',\n        'rounded-none',\n        'shadow-[var(--glow-green)]',\n        'focus:outline-none',\n        'data-[state=open]:animate-in data-[state=closed]:animate-out',\n        'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n        'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n        className\n      )}\n      style={{ clipPath: 'var(--clip-corner-md)' }}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close\n        style={{\n          position:   'absolute',\n          right:      '0.75rem',\n          top:        '0.75rem',\n          background: 'transparent',\n          border:     'none',\n          color:      'var(--text-muted)',\n          cursor:     'pointer',\n          fontSize:   '0.8rem',\n          padding:    '2px 4px',\n          lineHeight: 1,\n          transition: 'color 0.15s',\n          fontFamily: 'var(--font-mono)',\n        }}\n        onMouseEnter={(e) => (e.currentTarget.style.color = 'var(--color-red)')}\n        onMouseLeave={(e) => (e.currentTarget.style.color = 'var(--text-muted)')}\n      >\n        ✕\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\n/* ── Header ── */\nfunction DialogHeader({ className, style, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(className)}\n      style={{\n        padding:      '1rem',\n        borderBottom: '1px solid var(--border)',\n        ...style,\n      }}\n      {...props}\n    />\n  )\n}\nDialogHeader.displayName = 'DialogHeader'\n\n/* ── Footer ── */\nfunction DialogFooter({ className, style, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(className)}\n      style={{\n        display:   'flex',\n        justifyContent: 'flex-end',\n        gap:       '0.5rem',\n        padding:   '1rem',\n        borderTop: '1px solid var(--border)',\n        ...style,\n      }}\n      {...props}\n    />\n  )\n}\nDialogFooter.displayName = 'DialogFooter'\n\n/* ── Title ── */\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, style, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(className)}\n    style={{\n      fontSize:      '0.85rem',\n      fontWeight:    700,\n      color:         'var(--text-secondary)',\n      letterSpacing: '0.08em',\n      textTransform: 'uppercase',\n      margin:        0,\n      ...style,\n    }}\n    {...props}\n  />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\n/* ── Description ── */\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, style, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn(className)}\n    style={{\n      fontSize:   '0.8rem',\n      color:      'var(--text-muted)',\n      lineHeight: 1.6,\n      marginTop:  '0.25rem',\n      ...style,\n    }}\n    {...props}\n  />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\n/* ── Body ── */\nfunction DialogBody({ className, style, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(className)}\n      style={{ padding: '1rem', ...style }}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Dialog,\n  DialogTrigger,\n  DialogPortal,\n  DialogOverlay,\n  DialogClose,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n  DialogBody,\n}\n"
    }
  ]
}