{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "tabs",
  "title": "Tabs",
  "description": "Tabs uses Base UI, not Radix. The default pill and line variants use brand roles; the active pill carries the control border rather than a shadow. Compose TabsTrigger with a kit Button to preserve button styling. Tabs provides roving focus, manual or automatic activation, wrapping, orientation-aware arrow keys and tab-panel associations.",
  "dependencies": [
    "@base-ui/react@1.9.0",
    "class-variance-authority@0.7.1"
  ],
  "registryDependencies": [
    "@waimakers/utils",
    "@waimakers/theme"
  ],
  "files": [
    {
      "path": "src/components/ui/tabs.tsx",
      "content": "import {\n  Tabs as TabsPrimitive,\n  type TabsListProps,\n  type TabsPanelProps,\n  type TabsRootProps,\n  type TabsTabProps,\n} from \"@base-ui/react/tabs\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\n\nimport { cn, focusRing } from \"../../lib/utils\";\n\nfunction Tabs({\n  className,\n  orientation = \"horizontal\",\n  render,\n  ...props\n}: Omit<TabsRootProps, \"className\"> & { className?: string }) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      orientation={orientation}\n      className={\n        render === undefined\n          ? cn(\"group/tabs flex gap-2 data-[orientation=horizontal]:flex-col\", className)\n          : className\n      }\n      render={render}\n      {...props}\n    />\n  );\n}\n\nconst tabsListVariants = cva(\n  \"group/tabs-list inline-flex w-fit items-center justify-center rounded-full p-[3px] text-muted-foreground data-[orientation=horizontal]:h-9 data-[orientation=vertical]:h-fit data-[orientation=vertical]:flex-col data-[variant=line]:rounded-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-muted\",\n        line: \"gap-1 bg-transparent\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  },\n);\n\nfunction TabsList({\n  className,\n  render,\n  variant = \"default\",\n  ...props\n}: Omit<TabsListProps, \"className\"> &\n  VariantProps<typeof tabsListVariants> & { className?: string }) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      data-variant={variant}\n      className={render === undefined ? cn(tabsListVariants({ variant }), className) : className}\n      render={render}\n      {...props}\n    />\n  );\n}\n\nfunction TabsTrigger({\n  className,\n  render,\n  ...props\n}: Omit<TabsTabProps, \"className\"> & { className?: string }) {\n  return (\n    <TabsPrimitive.Tab\n      data-slot=\"tabs-trigger\"\n      className={\n        render === undefined\n          ? cn(\n              \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-full border border-transparent px-3 py-1 text-sm font-medium whitespace-nowrap text-muted-foreground transition-colors ease-brand\",\n              \"hover:text-foreground\",\n              focusRing,\n              \"data-disabled:pointer-events-none data-disabled:opacity-50 data-active:text-foreground\",\n              \"group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start\",\n              \"group-data-[variant=default]/tabs-list:data-active:border-input group-data-[variant=default]/tabs-list:data-active:bg-background\",\n              \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity after:ease-brand group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n              \"group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:-bottom-1 group-data-[orientation=horizontal]/tabs:after:h-0.5\",\n              \"group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5\",\n              className,\n            )\n          : className\n      }\n      render={render}\n      {...props}\n    />\n  );\n}\n\nfunction TabsContent({\n  className,\n  render,\n  ...props\n}: Omit<TabsPanelProps, \"className\"> & { className?: string }) {\n  return (\n    <TabsPrimitive.Panel\n      data-slot=\"tabs-content\"\n      className={render === undefined ? cn(\"flex-1\", focusRing, className) : className}\n      render={render}\n      {...props}\n    />\n  );\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants };\n",
      "type": "registry:ui",
      "target": "components/ui/tabs.tsx"
    }
  ],
  "type": "registry:ui"
}