{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "tabs",
  "title": "Tabs",
  "description": "Tabbed views built on Base UI Tabs.",
  "dependencies": [
    "@base-ui/react@^1.8.0"
  ],
  "files": [
    {
      "path": "registry/rapid/ui/tabs/tabs.tsx",
      "content": "'use client'\n\nimport { Tabs as TabsPrimitive } from '@base-ui/react/tabs'\nimport { cn } from '@/lib/utils'\n\nfunction Tabs({ className, orientation = 'horizontal', ...props }: TabsPrimitive.Root.Props) {\n\treturn (\n\t\t<TabsPrimitive.Root\n\t\t\tdata-slot=\"tabs\"\n\t\t\tdata-orientation={orientation}\n\t\t\torientation={orientation}\n\t\t\tclassName={cn('group/tabs flex gap-2 data-horizontal:flex-col', className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction TabsList({ className, ...props }: TabsPrimitive.List.Props) {\n\treturn (\n\t\t<TabsPrimitive.List\n\t\t\tdata-slot=\"tabs-list\"\n\t\t\tclassName={cn(\n\t\t\t\t'inline-flex w-fit items-center group-data-vertical/tabs:flex-col group-data-vertical/tabs:items-stretch',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n\treturn (\n\t\t<TabsPrimitive.Tab\n\t\t\tdata-slot=\"tabs-trigger\"\n\t\t\tclassName={cn(\n\t\t\t\t// Rapid underline tabs with shadcn sizing: a muted line under every tab, a thicker primary line on the\n\t\t\t\t// active tab, and primary text on hover and when active (solid text-primary for 4.5:1 contrast)\n\t\t\t\t\"relative inline-flex h-10 cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 text-sm font-medium whitespace-nowrap text-foreground transition-colors outline-none hover:text-primary focus-visible:ring-3 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:font-semibold data-active:text-primary group-data-vertical/tabs:justify-start has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\t'after:absolute after:rounded-none after:bg-muted after:transition-colors after:duration-200 hover:after:bg-primary/90 data-active:after:bg-primary data-active:hover:after:bg-primary/90',\n\t\t\t\t'group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-0 group-data-horizontal/tabs:after:h-0.5 group-data-horizontal/tabs:hover:after:h-[3px] group-data-horizontal/tabs:data-active:after:h-[3px]',\n\t\t\t\t'group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:left-0 group-data-vertical/tabs:after:w-0.5',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n\treturn (\n\t\t<TabsPrimitive.Panel\n\t\t\tdata-slot=\"tabs-content\"\n\t\t\tclassName={cn('flex-1 rounded-md text-sm outline-none focus-visible:ring-3 focus-visible:ring-ring', className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n",
      "type": "registry:ui",
      "target": "components/ui/tabs.tsx"
    }
  ],
  "type": "registry:ui"
}