{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "popover",
  "type": "registry:ui",
  "title": "Popover",
  "description": "Floating translucent panel anchored to a trigger, with focus management and origin-aware motion.",
  "dependencies": [
    "radix-ui"
  ],
  "registryDependencies": [
    "https://kuro.abstergo.fyi/r/kura-theme.json",
    "utils"
  ],
  "files": [
    {
      "path": "registry/kura/popover/index.ts",
      "type": "registry:ui",
      "target": "components/kura/popover/index.ts",
      "content": "export {\n  Popover,\n  PopoverAnchor,\n  type PopoverAnchorProps,\n  PopoverClose,\n  type PopoverCloseProps,\n  PopoverContent,\n  type PopoverContentProps,\n  type PopoverProps,\n  PopoverTrigger,\n  type PopoverTriggerProps,\n} from \"./popover\";\n"
    },
    {
      "path": "registry/kura/popover/popover.tsx",
      "type": "registry:ui",
      "target": "components/kura/popover/popover.tsx",
      "content": "\"use client\";\n\nimport { Popover as PopoverPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface PopoverProps extends React.ComponentProps<typeof PopoverPrimitive.Root> {}\n\n/**\n * Root. Controlled via `open` + `onOpenChange` or uncontrolled via `defaultOpen`.\n * Compose with PopoverTrigger and PopoverContent.\n */\nexport function Popover(props: PopoverProps) {\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nexport interface PopoverTriggerProps\n  extends React.ComponentProps<typeof PopoverPrimitive.Trigger> {}\n\nexport function PopoverTrigger(props: PopoverTriggerProps) {\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nexport interface PopoverAnchorProps extends React.ComponentProps<typeof PopoverPrimitive.Anchor> {}\n\nexport function PopoverAnchor(props: PopoverAnchorProps) {\n  return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport interface PopoverCloseProps extends React.ComponentProps<typeof PopoverPrimitive.Close> {}\n\nexport function PopoverClose(props: PopoverCloseProps) {\n  return <PopoverPrimitive.Close data-slot=\"popover-close\" {...props} />;\n}\n\nexport interface PopoverContentProps extends React.ComponentProps<typeof PopoverPrimitive.Content> {\n  /** Render without a portal (e.g. inside a dialog that traps focus). Default false. */\n  inline?: boolean;\n}\n\n/**\n * Floating surface. Translucent overlay with a hairline ring, origin-aware scale+fade.\n * Focus moves inside on open and returns to the trigger on close.\n */\nexport function PopoverContent({\n  className,\n  align = \"center\",\n  sideOffset = 8,\n  collisionPadding = 8,\n  inline = false,\n  ...props\n}: PopoverContentProps) {\n  const content = (\n    <PopoverPrimitive.Content\n      data-slot=\"popover-content\"\n      align={align}\n      sideOffset={sideOffset}\n      collisionPadding={collisionPadding}\n      className={cn(\n        \"z-50 w-72 max-w-[calc(100vw-16px)] rounded-kura-lg bg-kura-overlay p-3 font-kura-sans text-kura-fg text-sm shadow-kura-lg outline-none backdrop-blur-xl backdrop-saturate-150\",\n        \"origin-(--radix-popover-content-transform-origin)\",\n        \"data-[state=open]:animate-kura-pop-in data-[state=closed]:animate-kura-pop-out\",\n        className,\n      )}\n      {...props}\n    />\n  );\n  return inline ? content : <PopoverPrimitive.Portal>{content}</PopoverPrimitive.Portal>;\n}\n"
    }
  ],
  "categories": [
    "primitives",
    "popover",
    "overlay",
    "floating",
    "panel"
  ],
  "docs": "Docs: https://kuro.abstergo.fyi/components/popover · Markdown for agents: https://kuro.abstergo.fyi/components/popover.md",
  "meta": {
    "kura": {
      "status": "stable",
      "whenToUse": [
        "Small interactive panels: settings for a composer, a model's details, a share menu, a filter form.",
        "Content anchored to a control that should not navigate away."
      ],
      "whenNotToUse": [
        "Plain hover labels — use tooltip.",
        "Choosing a model — use model-picker. Slash commands — use slash-command-menu. Global search — use command-palette.",
        "Blocking decisions — use a dialog or approval-prompt."
      ]
    }
  }
}
