{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "tabs", "title": "Tabs", "description": "A neumorphic tabs component with animated indicator.", "dependencies": ["@base-ui/react", "class-variance-authority"], "registryDependencies": ["utils"], "files": [ { "path": "src/components/ui/tabs.tsx", "content": "\"use client\";\n\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nconst tabsTriggerVariants = cva(\n [\n \"relative text-foreground/70 rounded-lg transition-all duration-200 flex-1 text-center\",\n \"data-[selected]:text-foreground data-[selected]:font-semibold data-[active]:text-foreground data-[active]:font-semibold\",\n \"hover:text-foreground\",\n \"focus-visible:outline-2 focus-visible:outline-primary focus-visible:-outline-offset-2\",\n \"z-10 bg-transparent cursor-pointer select-none outline-none\",\n ],\n {\n variants: {\n size: {\n sm: \"text-sm px-3 py-1.5\",\n md: \"text-base px-4 py-2\",\n lg: \"text-lg px-5 py-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\ntype TabsSize = \"sm\" | \"md\" | \"lg\";\nconst TabsContext = React.createContext<{ size: TabsSize }>({ size: \"md\" });\n\ninterface TabsProps\n extends React.ComponentPropsWithoutRef,\n VariantProps {}\n\nconst Tabs = React.forwardRef(\n ({ className, size = \"md\", children, ...props }, ref) => {\n return (\n \n \n {children}\n \n \n );\n },\n);\nTabs.displayName = \"Tabs\";\n\nconst TabsList = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n {children}\n \n \n));\nTabsList.displayName = \"TabsList\";\n\nconst TabsTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n const { size } = React.useContext(TabsContext);\n\n return (\n \n );\n});\nTabsTrigger.displayName = \"TabsTrigger\";\n\nconst TabsContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nTabsContent.displayName = \"TabsContent\";\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsTriggerVariants };\n", "type": "registry:ui" } ], "type": "registry:ui" }