{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "extends": "none",
  "name": "popover",
  "title": "popover",
  "description": "popover",
  "dependencies": [
    "react-aria-components"
  ],
  "registryDependencies": [
    "https://intentui.com/r/primitive",
    "https://intentui.com/r/dialog"
  ],
  "files": [
    {
      "path": "src/components/ui/popover.tsx",
      "content": "\"use client\"\n\nimport {\n  OverlayArrow,\n  Popover as PopoverPrimitive,\n  type PopoverProps as PopoverPrimitiveProps,\n} from \"react-aria-components/Popover\"\nimport { cx } from \"@/lib/primitive\"\nimport {\n  DialogBody,\n  DialogClose,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"./dialog\"\n\nexport const PopoverTrigger = DialogTrigger\n\nexport const PopoverTitle = DialogTitle\nexport const PopoverHeader = DialogHeader\nexport const PopoverBody = DialogBody\nexport const PopoverFooter = DialogFooter\n\nexport interface PopoverProps extends PopoverPrimitiveProps {\n  arrow?: boolean\n  ref?: React.Ref<HTMLDivElement>\n}\n\nexport function Popover({ children, arrow = false, className, ref, ...props }: PopoverProps) {\n  const offset = props.offset ?? (arrow ? 12 : 8)\n  return (\n    <PopoverPrimitive\n      ref={ref}\n      offset={offset}\n      className={cx(\n        \"[--visual-viewport-vertical-padding:16px] sm:[--visual-viewport-vertical-padding:32px]\",\n        \"max-h-[calc(var(--visual-viewport-height)-var(--visual-viewport-vertical-padding)*2)]\",\n        \"group/popover min-w-(--trigger-width) max-w-xs origin-(--trigger-anchor-point) rounded-(--popover-radius) bg-overlay text-overlay-foreground shadow-xs outline-hidden ring ring-muted-foreground/20 drop-shadow-xl transition-transform [--gutter:--spacing(6)] [--popover-radius:var(--radius-lg)] sm:text-sm dark:ring-border dark:backdrop-saturate-200 **:[[role=dialog]]:[--gutter:--spacing(6)]\",\n        \"entering:fade-in exiting:fade-out entering:animate-in exiting:animate-out\",\n        \"placement-left:entering:slide-in-from-right-1 placement-right:entering:slide-in-from-left-1 placement-top:entering:slide-in-from-bottom-1 placement-bottom:entering:slide-in-from-top-1\",\n        \"placement-left:exiting:slide-out-to-right-1 placement-right:exiting:slide-out-to-left-1 placement-top:exiting:slide-out-to-bottom-1 placement-bottom:exiting:slide-out-to-top-1\",\n        \"forced-colors:bg-[Canvas]\",\n        className\n      )}\n      {...props}\n    >\n      {(values) => (\n        <>\n          {arrow && (\n            <OverlayArrow className=\"group\">\n              <svg\n                width={12}\n                height={12}\n                viewBox=\"0 0 12 12\"\n                className=\"block fill-overlay stroke-border group-placement-bottom:rotate-180 group-placement-left:-rotate-90 group-placement-right:rotate-90 forced-colors:fill-[Canvas] forced-colors:stroke-[ButtonBorder]\"\n              >\n                <path d=\"M0 0 L6 6 L12 0\" />\n              </svg>\n            </OverlayArrow>\n          )}\n          <div data-slot=\"popover-inner\" className=\"max-h-[inherit] overflow-y-auto flex flex-col\">\n            {typeof children === \"function\" ? children(values) : children}\n          </div>\n        </>\n      )}\n    </PopoverPrimitive>\n  )\n}\n\nexport const PopoverClose = DialogClose\nexport const PopoverDescription = DialogDescription\n",
      "type": "registry:ui"
    }
  ],
  "cssVars": {
    "theme": {
      "color-overlay": "var(--overlay)",
      "color-overlay-foreground": "var(--overlay-foreground)"
    },
    "light": {
      "overlay": "oklch(1 0 0)",
      "overlay-foreground": "oklch(0.141 0.005 285.823)"
    },
    "dark": {
      "overlay": "oklch(0.210 0.006 285.885)",
      "overlay-foreground": "oklch(0.985 0 0)"
    }
  },
  "type": "registry:ui"
}