{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "gummy-radix-dialog",
  "type": "registry:ui",
  "title": "Gummy Dialog · Radix UI",
  "description": "Gummy Dialog behavior implemented with Radix UI.",
  "registryDependencies": [
    "https://gummyui.dev/r/gummy-base.json",
    "https://gummyui.dev/r/gummy-core-styles.json",
    "https://gummyui.dev/r/gummy-primitives-styles.json",
    "https://gummyui.dev/r/gummy-radix-compat.json"
  ],
  "dependencies": [
    "@radix-ui/react-dialog@1.1.23"
  ],
  "files": [
    {
      "path": "components/ui/GummyDialog.tsx",
      "type": "registry:ui",
      "content": "\"use client\";\n\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport * as React from \"react\";\n\nfunction joinClassNames(...values: Array<string | false | null | undefined>) {\n  return values.filter(Boolean).join(\" \");\n}\n\nexport const GummyDialog = Dialog.Root;\n\nexport type GummyDialogPortalProps = React.ComponentPropsWithoutRef<\n  typeof Dialog.Portal\n> & { keepMounted?: boolean };\n\nexport function GummyDialogPortal({\n  keepMounted,\n  ...props\n}: GummyDialogPortalProps) {\n  void keepMounted;\n  return <Dialog.Portal {...props} />;\n}\n\nexport const GummyDialogTrigger = React.forwardRef<\n  React.ElementRef<typeof Dialog.Trigger>,\n  React.ComponentPropsWithoutRef<typeof Dialog.Trigger>\n>(function GummyDialogTrigger({ className, children, ...props }, ref) {\n  return (\n    <Dialog.Trigger\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-dialog__trigger\", className)}\n    >\n      <span className=\"gummy-dialog__trigger-copy\">{children}</span>\n      <span className=\"gummy-dialog__trigger-pool\" aria-hidden=\"true\" />\n    </Dialog.Trigger>\n  );\n});\n\nexport const GummyDialogBackdrop = React.forwardRef<\n  React.ElementRef<typeof Dialog.Overlay>,\n  React.ComponentPropsWithoutRef<typeof Dialog.Overlay>\n>(function GummyDialogBackdrop({ className, ...props }, ref) {\n  return (\n    <Dialog.Overlay\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-dialog__backdrop\", className)}\n    />\n  );\n});\n\nexport const GummyDialogViewport = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(function GummyDialogViewport({ className, ...props }, ref) {\n  return (\n    <div\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-dialog__viewport\", className)}\n    />\n  );\n});\n\nexport const GummyDialogPopup = React.forwardRef<\n  React.ElementRef<typeof Dialog.Content>,\n  React.ComponentPropsWithoutRef<typeof Dialog.Content>\n>(function GummyDialogPopup({ className, children, ...props }, ref) {\n  return (\n    <Dialog.Content\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-dialog__popup\", className)}\n    >\n      <span className=\"gummy-dialog__reservoir gummy-dialog__reservoir--start\" aria-hidden=\"true\" />\n      <span className=\"gummy-dialog__reservoir gummy-dialog__reservoir--end\" aria-hidden=\"true\" />\n      <div className=\"gummy-dialog__plane\">{children}</div>\n    </Dialog.Content>\n  );\n});\n\nexport const GummyDialogTitle = React.forwardRef<\n  React.ElementRef<typeof Dialog.Title>,\n  React.ComponentPropsWithoutRef<typeof Dialog.Title>\n>(function GummyDialogTitle({ className, ...props }, ref) {\n  return (\n    <Dialog.Title\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-dialog__title\", className)}\n    />\n  );\n});\n\nexport const GummyDialogDescription = React.forwardRef<\n  React.ElementRef<typeof Dialog.Description>,\n  React.ComponentPropsWithoutRef<typeof Dialog.Description>\n>(function GummyDialogDescription({ className, ...props }, ref) {\n  return (\n    <Dialog.Description\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-dialog__description\", className)}\n    />\n  );\n});\n\nexport const GummyDialogClose = React.forwardRef<\n  React.ElementRef<typeof Dialog.Close>,\n  React.ComponentPropsWithoutRef<typeof Dialog.Close>\n>(function GummyDialogClose({ className, ...props }, ref) {\n  return (\n    <Dialog.Close\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-dialog__close\", className)}\n    />\n  );\n});\n\nexport function GummyDialogSurface({\n  children,\n  className,\n}: React.PropsWithChildren<{ className?: string }>) {\n  return (\n    <div\n      aria-hidden=\"true\"\n      className={joinClassNames(\n        \"gummy-dialog__popup\",\n        \"gummy-dialog__popup--preview\",\n        className,\n      )}\n    >\n      <span className=\"gummy-dialog__reservoir gummy-dialog__reservoir--start\" aria-hidden=\"true\" />\n      <span className=\"gummy-dialog__reservoir gummy-dialog__reservoir--end\" aria-hidden=\"true\" />\n      <div className=\"gummy-dialog__plane\">{children}</div>\n    </div>\n  );\n}\n\nGummyDialogTrigger.displayName = \"GummyDialogTrigger\";\nGummyDialogBackdrop.displayName = \"GummyDialogBackdrop\";\nGummyDialogViewport.displayName = \"GummyDialogViewport\";\nGummyDialogPopup.displayName = \"GummyDialogPopup\";\nGummyDialogTitle.displayName = \"GummyDialogTitle\";\nGummyDialogDescription.displayName = \"GummyDialogDescription\";\nGummyDialogClose.displayName = \"GummyDialogClose\";\n"
    }
  ]
}
