Primitive / Moleculestable

Tabs

Tabbed interface for switching between grouped content panels.

@glinui/uiComponent: tabs

Installation$

Package Manager$

pnpm add @glinui/ui @glinui/tokens

Registry$

pnpm dlx @glinui/cli@latest add tabs

Usage$

Overview content
TSX
1import { Tabs, TabsList, TabsTrigger, TabsContent } from "@glinui/ui"
2
3export function TabsBasicDemo() {
4return (
5 <Tabs defaultValue="overview">
6 <TabsList>
7 <TabsTrigger value="overview">Overview</TabsTrigger>
8 <TabsTrigger value="settings">Settings</TabsTrigger>
9 </TabsList>
10 <TabsContent value="overview">Overview content</TabsContent>
11 <TabsContent value="settings">Settings content</TabsContent>
12 </Tabs>
13)
14}

Examples$

Glass$

First panel
TSX
1import { Tabs, TabsList, TabsTrigger, TabsContent } from "@glinui/ui"
2
3export function TabsGlassDemo() {
4return (
5 <Tabs defaultValue="first">
6 <TabsList variant="glass">
7 <TabsTrigger value="first" variant="glass">First</TabsTrigger>
8 <TabsTrigger value="second" variant="glass">Second</TabsTrigger>
9 </TabsList>
10 <TabsContent value="first" variant="glass">First panel</TabsContent>
11 <TabsContent value="second" variant="glass">Second panel</TabsContent>
12 </Tabs>
13)
14}

Liquid + Matte$

Liquid panel
Matte panel
TSX
1import { Tabs, TabsList, TabsTrigger, TabsContent } from "@glinui/ui"
2
3export function TabsSurfaceVariantsDemo() {
4return (
5 <div className="grid gap-4 md:grid-cols-2">
6 <Tabs defaultValue="liquid-1">
7 <TabsList variant="liquid">
8 <TabsTrigger value="liquid-1" variant="liquid">Liquid A</TabsTrigger>
9 <TabsTrigger value="liquid-2" variant="liquid">Liquid B</TabsTrigger>
10 </TabsList>
11 <TabsContent value="liquid-1" variant="liquid">Liquid panel</TabsContent>
12 <TabsContent value="liquid-2" variant="liquid">Second liquid panel</TabsContent>
13 </Tabs>
14 <Tabs defaultValue="matte-1">
15 <TabsList variant="matte">
16 <TabsTrigger value="matte-1" variant="matte">Matte A</TabsTrigger>
17 <TabsTrigger value="matte-2" variant="matte">Matte B</TabsTrigger>
18 </TabsList>
19 <TabsContent value="matte-1" variant="matte">Matte panel</TabsContent>
20 <TabsContent value="matte-2" variant="matte">Second matte panel</TabsContent>
21 </Tabs>
22 </div>
23)
24}

Accessibility$

  • Built on Radix Tabs with full keyboard nav.
  • Use clear trigger labels for each panel.

Reduced Motion$

Tabs do not require motion for state communication.

API Reference$

Tabs root follows Radix Tabs.Root props (value, defaultValue, onValueChange, orientation, dir).

TabsList$

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from tabsListVariants.
variant"default" | "glass" | "outline" | "ghost" | "liquid" | "matte"No"default"Variant option from tabsListVariants.

TabsTrigger$

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from tabsTriggerVariants.
variant"default" | "glass" | "outline" | "ghost" | "liquid" | "matte"No"default"Variant option from tabsTriggerVariants.

TabsContent$

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from tabsContentVariants.
variant"default" | "glass" | "outline" | "ghost" | "liquid" | "matte"No"default"Variant option from tabsContentVariants.

Source$

TSX
1import { Tabs, TabsList, TabsTrigger, TabsContent } from "@glinui/ui"

Generated API Snapshot

Beta

Auto-extracted from TypeScript source in packages/ui/src/components/tabs.tsx. This section is in beta and may lag behind hand-curated docs. Regenerate with pnpm --filter @glinui/docs api:generate.

Generated: 2026-02-19T17:59:28.468Z · Full index: /docs/api-metadata

Primary Props Type

TabsProps

TabsContentProps

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from tabsContentVariants.
variant"default" | "glass" | "outline" | "ghost" | "liquid" | "matte"No"default"Variant option from tabsContentVariants.

TabsListProps

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from tabsListVariants.
variant"default" | "glass" | "outline" | "ghost" | "liquid" | "matte"No"default"Variant option from tabsListVariants.

TabsProps

No explicit fields extracted for this props type.

TabsTriggerProps

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from tabsTriggerVariants.
variant"default" | "glass" | "outline" | "ghost" | "liquid" | "matte"No"default"Variant option from tabsTriggerVariants.