{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "popover",
  "type": "registry:ui",
  "title": "Popover",
  "description": "A small anchored surface for contextual information.",
  "categories": [
    "disclosure"
  ],
  "dependencies": [
    "@radix-ui/react-popover"
  ],
  "registryDependencies": [
    "https://irisui.dev/r/foundation.json",
    "https://irisui.dev/r/utils.json"
  ],
  "files": [
    {
      "path": "src/registry/components/popover/popover.tsx",
      "content": "\"use client\";\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport const Popover = PopoverPrimitive.Root;\nexport const PopoverClose = PopoverPrimitive.Close;\n\n/** The trigger anchors the panel, so it opts out of press-scale: a scaled rect measured on open would shift the panel as the trigger springs back. */\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, ComponentPropsWithoutRef<typeof PopoverPrimitive.Trigger>>(\n  function PopoverTrigger({ className, ...props }, ref) {\n    return <PopoverPrimitive.Trigger {...props} ref={ref} className={cn(\"enabled:active:transform-none\", className)} />;\n  },\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\nexport const PopoverContent = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>>(\n  function PopoverContent({ className, align = \"start\", sideOffset = 6, collisionPadding = 10, ...props }, ref) {\n    return (\n      <PopoverPrimitive.Portal>\n        <PopoverPrimitive.Content\n          {...props}\n          ref={ref}\n          align={align}\n          sideOffset={sideOffset}\n          collisionPadding={collisionPadding}\n          // The panel starts a few pixels toward its trigger and settles on a spring; it leaves faster than it arrives. Transitions\n          // instead of keyframes, so a close that interrupts the open, or a reopen during the close, reverses from where the panel is.\n          // Radix unmounts when the exit animation ends, so a no-op keyframe times the exit while the transition does the visual work.\n          className={cn(\n            \"z-80 max-w-[min(22rem,calc(100vw_-_20px))] min-w-48 origin-(--radix-popover-content-transform-origin) rounded-panel border border-line bg-surface p-4 text-ink shadow-floating [--popover-x:0px] [--popover-y:-5px] [transition:opacity_var(--duration-fast)_var(--ease-enter),transform_var(--duration-spring)_var(--ease-spring)] focus:outline-none\",\n            \"data-[side=left]:[--popover-x:5px] data-[side=left]:[--popover-y:0px] data-[side=right]:[--popover-x:-5px] data-[side=right]:[--popover-y:0px] data-[side=top]:[--popover-y:5px]\",\n            \"starting:data-[state=open]:[transform:translate(var(--popover-x),var(--popover-y))_scale(.97)] starting:data-[state=open]:opacity-0\",\n            \"data-[state=closed]:pointer-events-none data-[state=closed]:animate-popover-exit data-[state=closed]:opacity-0 data-[state=closed]:[transform:translate(calc(var(--popover-x)*.5),calc(var(--popover-y)*.5))_scale(.98)] data-[state=closed]:[transition:opacity_var(--duration-fast)_var(--ease-standard),transform_var(--duration-fast)_var(--ease-standard)]\",\n            \"motion-reduce:transform-none motion-reduce:[transition:opacity_var(--duration-instant)_var(--ease-standard)] motion-reduce:data-[state=closed]:transform-none motion-reduce:data-[state=closed]:[transition:opacity_var(--duration-instant)_var(--ease-standard)]\",\n            className,\n          )}\n        />\n      </PopoverPrimitive.Portal>\n    );\n  },\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n",
      "type": "registry:component",
      "target": "@components/iris/popover/popover.tsx"
    }
  ],
  "docs": "Docs and live preview: https://irisui.dev/components/popover",
  "meta": {
    "kind": "component",
    "group": "Overlays & disclosure",
    "export": "Popover",
    "tags": [
      "overlay",
      "menu"
    ],
    "docs": "https://irisui.dev/components/popover"
  }
}
