{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "snapp-filter-controls", "title": "Snapp Filter Controls", "description": "Figma-aligned filter menu surface and removable active-filter pills with portal-safe interaction detection.", "dependencies": [ "lucide-react" ], "registryDependencies": [ "@snapp/snapp-theme", "@snapp/snapp-utils" ], "files": [ { "path": "registry/radix-nova/components/filters/filter-controls.tsx", "content": "/* eslint-disable react-refresh/only-export-components */\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst FILTER_INTERACTION_ATTRIBUTE = \"data-snapp-filter-interaction\"\n\nfunction FilterMenuSurface({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n
\n )\n}\n\nfunction FilterTokenList({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction FilterChip({\n className,\n children,\n removeLabel,\n type = \"button\",\n ...props\n}: React.ComponentProps<\"button\"> & {\n removeLabel: string\n}) {\n return (\n \n )\n}\n\nfunction isFilterInteraction(event: Event) {\n return event.composedPath().some(\n (node) =>\n typeof Element !== \"undefined\" &&\n node instanceof Element &&\n node.hasAttribute(FILTER_INTERACTION_ATTRIBUTE)\n )\n}\n\nexport {\n FILTER_INTERACTION_ATTRIBUTE,\n FilterChip,\n FilterMenuSurface,\n FilterTokenList,\n isFilterInteraction,\n}\n", "type": "registry:component", "target": "@components/snapp/filters/filter-controls.tsx" } ], "type": "registry:component" }