{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "popover",
  "type": "registry:ui",
  "title": "Popover",
  "description": "Floating panel anchored to a trigger button with click-outside dismissal.",
  "dependencies": [
    "clsx",
    "tailwind-merge",
    "motion"
  ],
  "devDependencies": [],
  "registryDependencies": [],
  "files": [
    {
      "path": "components/ui/popover.tsx",
      "content": "'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cn } from '@/lib/utils'\n\nexport const PopoverRoot = PopoverPrimitive.Root\nexport const PopoverTrigger = PopoverPrimitive.Trigger\nexport const PopoverAnchor = PopoverPrimitive.Anchor\nexport const PopoverClose = PopoverPrimitive.Close\n\nexport const PopoverContent = React.forwardRef<\n  React.ElementRef<typeof PopoverPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 10, ...props }, ref) => (\n  <PopoverPrimitive.Portal>\n    <PopoverPrimitive.Content\n      ref={ref}\n      align={align}\n      sideOffset={sideOffset}\n      className={cn(\n        'z-[9999] w-72 rounded-[20px] border-3 border-rk-ink bg-white p-4 font-sans text-rk-ink rk-shadow-lg outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n        className\n      )}\n      {...props}\n    />\n  </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\n/* ------------------------------------------------------------------ */\n/* Legacy compatibility wrapper (compound root is `PopoverRoot`)       */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverProps {\n  trigger: React.ReactNode\n  children: React.ReactNode\n  align?: 'start' | 'center' | 'end'\n  side?: 'top' | 'bottom' | 'left' | 'right'\n  sideOffset?: number\n  className?: string\n  closeOnClickOutside?: boolean\n  open?: boolean\n  onOpenChange?: (open: boolean) => void\n}\n\nexport function Popover({\n  trigger,\n  children,\n  align = 'center',\n  side = 'bottom',\n  sideOffset = 10,\n  className,\n  closeOnClickOutside = true,\n  open: controlledOpen,\n  onOpenChange,\n}: PopoverProps) {\n  return (\n    <PopoverRoot\n      open={controlledOpen}\n      onOpenChange={(next) => {\n        if (closeOnClickOutside || next) {\n          onOpenChange?.(next)\n        }\n      }}\n    >\n      <PopoverTrigger asChild>\n        <span className=\"inline-flex cursor-pointer\">{trigger}</span>\n      </PopoverTrigger>\n      <PopoverContent align={align} side={side} sideOffset={sideOffset} className={className}>\n        {children}\n      </PopoverContent>\n    </PopoverRoot>\n  )\n}\n",
      "type": "registry:ui",
      "target": "components/ui/popover.tsx"
    }
  ]
}