{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "tabs",
  "title": "Tabs",
  "description": "Keyboard-accessible tabs with raised active controls and inset lists.",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "@neumorphism-ui/utils"
  ],
  "files": [
    {
      "path": "src/components/ui/tabs.tsx",
      "content": "\"use client\";\n\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\n\nimport { mergeClassName } from \"@/lib/utils\";\n\nfunction Tabs({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: TabsPrimitive.Root.Props) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      orientation={orientation}\n      className={mergeClassName<TabsPrimitive.Root.State>(\n        \"flex w-full min-w-0 flex-col gap-3 data-[orientation=vertical]:flex-row\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction TabsList({ className, ...props }: TabsPrimitive.List.Props) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      className={mergeClassName<TabsPrimitive.List.State>(\n        \"inline-flex h-11 min-w-0 shrink-0 max-w-full w-fit items-center justify-start overflow-x-auto gap-1 rounded-[var(--neu-radius-control)] border border-transparent bg-[var(--neu-surface)] [background-image:var(--neu-fill-inset)] p-1 shadow-[var(--neu-shadow-inset)] data-[orientation=vertical]:h-fit data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch data-[orientation=vertical]:max-w-[50%] [&[data-orientation=vertical]>[data-slot=tabs-trigger]]:flex-none\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction TabsTrigger({\n  className,\n  ...props\n}: TabsPrimitive.Tab.Props) {\n  return (\n    <TabsPrimitive.Tab\n      data-slot=\"tabs-trigger\"\n      className={mergeClassName<TabsPrimitive.Tab.State>(\n        \"inline-flex h-8 leading-5 tracking-normal shrink-0 flex-1 items-center justify-center gap-1.5 rounded-[var(--neu-radius-small)] border border-transparent px-4 text-sm font-semibold whitespace-nowrap text-[var(--muted-foreground)] outline-hidden transition-[color,background-color,box-shadow,transform] duration-[var(--neu-duration)] motion-reduce:transition-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-[-2px] focus-visible:outline-[color:var(--ring)] hover:not-data-disabled:text-[var(--foreground)] data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[active]:border-[color:var(--neu-edge)] data-[active]:bg-[var(--neu-surface)] data-[active]:[background-image:var(--neu-fill-raised)] data-[active]:text-[var(--neu-accent-ink)] data-[active]:shadow-[var(--neu-shadow-raised-sm)] [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction TabsContent({\n  className,\n  ...props\n}: TabsPrimitive.Panel.Props) {\n  return (\n    <TabsPrimitive.Panel\n      data-slot=\"tabs-content\"\n      className={mergeClassName<TabsPrimitive.Panel.State>(\n        \"min-w-0 flex-1 rounded-[var(--neu-radius-surface)] outline-hidden focus-visible:ring-2 focus-visible:ring-[var(--ring)]\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}