Components
Tabs
Segmented and browser-style navigation with a stable active indicator.
Composition
Anatomy
- <Tabs>
- <TabsList>
- <TabsTab />
- <TabsPanel />
- <TabsList>
Connected surface
- <Tabs>
- <TabsList>
- <TabsTab />
- <TabsSurface>
- <TabsPanel />
- <TabsList>
Installation
The Control UI source installs this primitive from src/registry/sources/control-ui/ui/tabs.tsx.
Raw code
Primary installed source
Knobs
Typed custom properties the recipe paints with. Set one on the root — style, a utility class, or a skin — and every slot inherits it.
--cui-tabs-* · 16 knobsHow the cascade resolves--cui-tabs-surface-background<color>var(--background)--cui-tabs-surface-radius<length-percentage>var(--radius-panel)--cui-tabs-trigger-radius<length-percentage>var(--radius-control)--cui-tabs-list-padding<length-percentage>calc(var(--spacing) * 1)--cui-tabs-list-radius<length-percentage>calc(
var(--cui-tabs-trigger-radius) +
clamp(0px, calc(var(--cui-tabs-trigger-radius) * 1000), var(--cui-tabs-list-padding))
)--cui-tabs-list-background<color>var(--hover-fill)--cui-tabs-list-backdrop-filter*none--cui-tabs-indicator-background<color>var(--background)--cui-tabs-foreground<color>var(--muted-foreground)--cui-tabs-active-foreground<color>var(--foreground)--cui-tabs-hover-foreground<color>var(--foreground)--cui-tabs-indicator-shadow*var(--shadow-sm)--cui-tabs-list-shadow*inset 0 0 0 var(--control-rim-width) var(--control-rim), var(--shadow-inset)--cui-tabs-border-color<color>var(--border)--cui-tabs-border-width<length>var(--control-rim-width)--cui-tabs-indicator-background-image*none