{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "popover",
  "title": "Popover",
  "author": "@fma-ui/ui",
  "description": "A non-modal floating panel anchored to a trigger — for supplementary controls or content (e.g. a settings form) that shouldn't block the rest of the page.",
  "dependencies": [
    "cn@^0.4.0",
    "react-aria-components@^1.21.1"
  ],
  "files": [
    {
      "path": "src/core/popover/popover.tsx",
      "content": "import { cn } from \"cn\";\nimport type * as React from \"react\";\nimport {\n  DialogTrigger,\n  type DialogTriggerProps,\n  Heading,\n  Popover as PopoverPrimitive,\n  type PopoverProps as PopoverPrimitiveProps,\n} from \"react-aria-components\";\n\nfunction PopoverTrigger({ children, ...props }: DialogTriggerProps) {\n  return (\n    <DialogTrigger data-slot=\"popover-trigger\" {...props}>\n      {children}\n    </DialogTrigger>\n  );\n}\n\nfunction Popover({\n  className,\n  placement = \"bottom\",\n  offset = 4,\n  crossOffset = 0,\n  ...props\n}: Omit<PopoverPrimitiveProps, \"className\"> & {\n  className?: string;\n}) {\n  return (\n    <PopoverPrimitive\n      data-slot=\"popover-content\"\n      placement={placement}\n      offset={offset}\n      crossOffset={crossOffset}\n      className={cn(\n        \"z-50 flex w-72 origin-(--trigger-anchor-point) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-entering:animate-in data-entering:fade-in-0 data-entering:zoom-in-95 data-exiting:animate-out data-exiting:fade-out-0 data-exiting:zoom-out-95 data-[placement=bottom]:slide-in-from-top-2 data-[placement=left]:slide-in-from-right-2 data-[placement=right]:slide-in-from-left-2 data-[placement=top]:slide-in-from-bottom-2\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"popover-header\"\n      className={cn(\"flex flex-col gap-0.5 text-sm\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<typeof Heading>) {\n  return <Heading data-slot=\"popover-title\" className={cn(\"font-medium\", className)} {...props} />;\n}\n\nfunction PopoverDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"popover-description\"\n      className={cn(\"text-muted-foreground\", className)}\n      {...props}\n    />\n  );\n}\n\nexport { Popover, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };\n",
      "type": "registry:component",
      "target": "components/fma-ui/popover.tsx"
    }
  ],
  "meta": {
    "status": "stable",
    "source": "shadcn",
    "tags": [
      "overlay",
      "floating",
      "react-aria"
    ]
  },
  "categories": [
    "overlay"
  ],
  "type": "registry:ui"
}