Tabs
uiable/tabsFreeComponent
Tabs component.
Live preview
live · rendered by the registry
Rendered by uiable on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://uiable.com/r/tabs.jsonSource
1"use client";23import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";4import { cva, type VariantProps } from "class-variance-authority";56import { cn } from "@/lib/utils";78function Tabs({9 className,10 orientation = "horizontal",11 ...props12}: TabsPrimitive.Root.Props) {13 return (14 <TabsPrimitive.Root15 data-slot="tabs"16 data-orientation={orientation}17 className={cn(18 "group/tabs flex gap-2 data-horizontal:flex-col",19 className20 )}21 {...props}22 />23 );24}2526const tabsListVariants = cva(27 "rounded-lg p-1.5 group-data-horizontal/tabs:h-12 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col",28 {29 variants: {30 variant: {31 default: "bg-background",32 line: "gap-1 bg-transparent"33 }34 },35 defaultVariants: {36 variant: "default"37 }38 }39);4041function TabsList({42 className,43 variant = "default",44 ...props45}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {46 return (47 <TabsPrimitive.List48 data-slot="tabs-list"49 data-variant={variant}50 className={cn(tabsListVariants({ variant }), className)}51 {...props}52 />53 );54}5556function TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {57 return (58 <TabsPrimitive.Tab59 data-slot="tabs-trigger"60 className={cn(61 "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground data-active:hover:text-white dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-lg border border-transparent px-3 py-1.5 text-base font-medium whitespace-nowrap transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",62// … truncated
What it pulls in
npm packages
Files it writes
More from uiable
All 747 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | uiable | Components | Free | 2 deps | |
| Accordion Basicaccordion-basic | uiable | Components | Free | no deps | |
| Accordion Bordersaccordion-borders | uiable | Components | Free | no deps | |
| Accordion Cardaccordion-card | uiable | Components | Free | no deps | |
| Accordion Disabledaccordion-disabled | uiable | Components | Free | no deps | |
| Accordion Flushaccordion-flush | uiable | Components | Free | no deps | |
| Accordion Multipleaccordion-multiple | uiable | Components | Free | no deps | |
| Alertalert | uiable | Components | Free | 1 dep |
