{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "popover",
  "title": "Popover",
  "description": "Popover on radix-ui with portal, directional slide/zoom animations, 3 content sizes (sm, md, lg) and an optional anchor. Exports Popover, PopoverTrigger, PopoverContent, PopoverAnchor.",
  "dependencies": [
    "radix-ui@^1.6.1",
    "tw-animate-css@^1.4.0"
  ],
  "registryDependencies": [
    "@ai2/tokens",
    "@ai2/primitives"
  ],
  "files": [
    {
      "path": "registry/ai2/ui/popover.tsx",
      "content": "\"use client\"\n\nimport type * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"@/registry/ai2/ui/primitives\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst popoverContentVariants = cva(\n  \"z-50 max-w-[calc(100vw-2rem)] origin-(--radix-popover-content-transform-origin) rounded-lg border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1 motion-reduce:animate-none\",\n  {\n    variants: {\n      size: {\n        sm: \"w-56\",\n        md: \"w-72\",\n        lg: \"w-80\",\n      },\n    },\n    defaultVariants: { size: \"md\" },\n  }\n)\n\nfunction Popover(props: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger(props: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverAnchor(props: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n  return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverContent({\n  className,\n  align = \"center\",\n  sideOffset = 6,\n  size,\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content> &\n  VariantProps<typeof popoverContentVariants>) {\n  return (\n    <PopoverPrimitive.Portal>\n      <PopoverPrimitive.Content\n        data-slot=\"popover-content\"\n        data-size={size ?? \"md\"}\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(popoverContentVariants({ size, className }))}\n        {...props}\n      />\n    </PopoverPrimitive.Portal>\n  )\n}\n\nexport {\n  Popover,\n  PopoverTrigger,\n  PopoverContent,\n  PopoverAnchor,\n  popoverContentVariants,\n}\n",
      "type": "registry:ui"
    }
  ],
  "docs": "Content renders in a portal so it escapes overflow-hidden. Use PopoverAnchor to detach the position from the trigger.",
  "categories": [
    "overlay"
  ],
  "type": "registry:ui"
}