{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "popover", "type": "registry:ui", "title": "TAC Popover", "description": "Radix Popover with suppressHydrationWarning on the Trigger (Radix useId React 19 / Next 16 workaround) plus paper-scope content.", "registryDependencies": [ "@radix-ui/react-popover" ], "files": [ { "path": "src/components/primitives/popover.tsx", "type": "registry:ui", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@workspace/ui/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps) {\n // Radix's `@radix-ui/react-id` shim wraps React.useId in useState + a\n // useLayoutEffect fallback. Under React 19 + Next 16 SSR the counter diverges\n // between server and client, producing a harmless `aria-controls` hydration\n // mismatch (React keeps the client value; popover a11y is intact). Suppressing\n // here is the centralized escape hatch — applies to every trigger consistently.\n return (\n \n )\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nexport { Popover, PopoverAnchor, PopoverContent, PopoverTrigger }\n" } ] }