Skip to content
Components

Tabs

Segmented and browser-style navigation with a stable active indicator.

Composition

Anatomy

  • <Tabs>
    • <TabsList>
      • <TabsTab />
      </TabsList>
    • <TabsPanel />
    </Tabs>

Connected surface

  • <Tabs>
    • <TabsList>
      • <TabsTab />
      </TabsList>
    • <TabsSurface>
      • <TabsPanel />
      </TabsSurface>
    </Tabs>

Installation

The Control UI source installs this primitive from src/registry/sources/control-ui/ui/tabs.tsx.

Registry command
See registry manifest

Raw code

Primary installed source

src/registry/sources/control-ui/ui/tabs.tsx

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