{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "sf-tabs",
"title": "SF Tabs",
"description": "Industrial tabs with 2px borders, invert active state",
"registryDependencies": [
"tabs"
],
"files": [
{
"path": "components/sf/sf-tabs.tsx",
"content": "\"use client\";\n\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * Tabbed interface — FRAME layer navigation primitive.\n *\n * Radix Tabs root wrapped with SF contract. Compose with\n * SFTabsList, SFTabsTrigger, and SFTabsContent for a full tab interface.\n * Triggers use underline active indicator (border-b-2) not background fill,\n * with muted → foreground color transition on hover.\n *\n * @example\n * \n * \n * Overview\n * Specs\n * \n * Content here\n * \n */\nfunction SFTabs(props: React.ComponentProps) {\n return ;\n}\n\n/** Sub-component of SFTabs — tab navigation bar with 2px bottom border and no padding. */\nfunction SFTabsList({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/** Sub-component of SFTabs — tab button with underline active indicator and mono uppercase type. */\nfunction SFTabsTrigger({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/** Sub-component of SFTabs — content panel shown when its matching tab trigger is active. */\nfunction SFTabsContent(props: React.ComponentProps) {\n return ;\n}\n\nexport { SFTabs, SFTabsList, SFTabsTrigger, SFTabsContent };\n",
"type": "registry:ui"
}
],
"meta": {
"layer": "frame",
"pattern": "A"
},
"type": "registry:ui"
}