{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "sf-input-group", "title": "SF InputGroup", "description": "Grouped input with inline addons and action buttons. Zero border-radius on all sub-elements.", "registryDependencies": [ "input-group" ], "files": [ { "path": "components/sf/sf-input-group.tsx", "content": "\"use client\";\n\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n} from \"@/components/ui/input-group\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * Grouped input with addons — FRAME layer form primitive.\n * Wraps all sub-elements with zero border-radius.\n *\n * Overrides `ui/input-group.tsx`'s `rounded-lg` on the root and\n * CVA-generated `rounded-[calc(var(--radius)-5px)]` / `rounded-[calc(var(--radius)-3px)]`\n * on addon and button children.\n *\n * @example\n * \n * \n * @\n * \n * \n * \n * Send\n * \n * \n */\nfunction SFInputGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/** Sub-component of SFInputGroup — addon wrapper for inline or block decorators. Zero border-radius on kbd children. */\nfunction SFInputGroupAddon({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n kbd]:rounded-none\", className)}\n {...props}\n />\n );\n}\n\n/** Sub-component of SFInputGroup — action button inside input group. Overrides CVA's calc-based radius with rounded-none. */\nfunction SFInputGroupButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/** Sub-component of SFInputGroup — non-interactive text label or icon inside the group. */\nfunction SFInputGroupText({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/** Sub-component of SFInputGroup — the primary input field. Base already applies rounded-none; passthrough maintains the contract. */\nfunction SFInputGroupInput({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/** Sub-component of SFInputGroup — multiline textarea variant. Base already applies rounded-none; passthrough maintains the contract. */\nfunction SFInputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n SFInputGroup,\n SFInputGroupAddon,\n SFInputGroupButton,\n SFInputGroupText,\n SFInputGroupInput,\n SFInputGroupTextarea,\n};\n", "type": "registry:ui" } ], "meta": { "layer": "frame", "pattern": "A" }, "type": "registry:ui" }