{
  "$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  DialogTrigger as DialogTriggerPrimitive,\n  type DialogTriggerProps,\n} from 'react-aria-components/Dialog'\nimport {\n  OverlayArrow,\n  Popover as PopoverPrimitive,\n  type PopoverProps,\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\nconst Popover = (props: DialogTriggerProps) => {\n  return <DialogTriggerPrimitive {...props} />\n}\n\nconst PopoverTitle = DialogTitle\nconst PopoverHeader = DialogHeader\nconst PopoverBody = DialogBody\nconst PopoverFooter = DialogFooter\n\ninterface PopoverContentProps extends PopoverProps {\n  arrow?: boolean\n  ref?: React.Ref<HTMLDivElement>\n}\n\nconst PopoverContent = ({\n  children,\n  arrow = false,\n  className,\n  ref,\n  ...props\n}: PopoverContentProps) => {\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-fg shadow-xs outline-hidden ring ring-muted-fg/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\nconst PopoverTrigger = DialogTrigger\nconst PopoverClose = DialogClose\nconst PopoverDescription = DialogDescription\n\nexport type { PopoverContentProps, PopoverProps }\nexport {\n  Popover,\n  PopoverBody,\n  PopoverClose,\n  PopoverContent,\n  PopoverDescription,\n  PopoverFooter,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}