1. framework components
  2. tabs

Tabs

Use tabs to quickly switch between different views and pages.

A concise overview of the project: usage, goals, and recent highlights. Use this area to orient readers with key metrics and links to deeper docs.

Controlled

Use the value and onValueChange props to control the active tab programmatically.

A concise overview of the project: usage, goals, and recent highlights. Use this area to orient readers with key metrics and links to deeper docs.

Use the element slot to override the default button with an a tag for navigation tabs.

A concise overview of the project: usage, goals, and recent highlights. Use this area to orient readers with key metrics and links to deeper docs.

Fluid Width

Use flex utility classes to make the tabs stretch to fill the width of their container.

A concise overview of the project: usage, goals, and recent highlights. Use this area to orient readers with key metrics and links to deeper docs.

Vertical

Use the vertical prop to render tabs stacked vertically.

A concise overview of the project: usage, goals, and recent highlights. Use this area to orient readers with key metrics and links to deeper docs.

Direction

Use the dir prop to switch direction for RTL/LTR layouts.

A concise overview of the project: usage, goals, and recent highlights. Use this area to orient readers with key metrics and links to deeper docs.

API Reference

Root

txt
w-full flex data-[orientation=horizontal]:flex-col data-[orientation=vertical]:flex-row
PropDefaultType
idsPartial<{ root: string; trigger: (value: string) => string; list: string; content: (value: string) => string; indicator: string; }> | undefined

The ids of the elements in the tabs. Useful for composition.

translationsIntlTranslations | undefined

Specifies the localized strings that identifies the accessibility elements and their states

loopFocustrueboolean | undefined

Whether the keyboard navigation will loop from last tab to first, and vice versa.

valuestring | null | undefined

The controlled selected tab value

defaultValuestring | null | undefined

The initial selected tab value when rendered. Use when you don't need to control the selected tab value.

orientation"horizontal""horizontal" | "vertical" | undefined

The orientation of the tabs. Can be `horizontal` or `vertical` - `horizontal`: only left and right arrow key navigation will work. - `vertical`: only up and down arrow key navigation will work.

activationMode"automatic""manual" | "automatic" | undefined

The activation mode of the tabs. Can be `manual` or `automatic` - `manual`: Tabs are activated when clicked or press `enter` key. - `automatic`: Tabs are activated when receiving focus

onValueChange((details: ValueChangeDetails) => void) | undefined

Callback to be called when the selected/active tab changes

onFocusChange((details: FocusChangeDetails) => void) | undefined

Callback to be called when the focused tab changes

compositeboolean | undefined

Whether the tab is composite

deselectableboolean | undefined

Whether the active tab can be deselected when clicking on it.

navigate((details: NavigateDetails) => void) | null | undefined

Function to navigate to the selected tab when clicking on it. Useful if tab triggers are anchor elements.

dir"ltr""ltr" | "rtl" | undefined

The document's text/writing direction.

getRootNode(() => ShadowRoot | Node | Document) | undefined

A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron.

element((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

Provider

PropDefaultType
valueTabsApi<PropTypes>

element((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

Context

PropDefaultType
children(tabs: TabsApi<PropTypes>) => ReactNode

List

txt
relative flex gap-2 border-surface-200-800 data-[orientation=horizontal]:pb-2 data-[orientation=horizontal]:mb-4 data-[orientation=horizontal]:flex-row data-[orientation=horizontal]:border-b data-[orientation=vertical]:pe-2 data-[orientation=vertical]:me-4 data-[orientation=vertical]:flex-col data-[orientation=vertical]:border-e
PropDefaultType
element((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

Trigger

txt
btn hover:preset-tonal-primary data-disabled:opacity-50
PropDefaultType
valuestring

The value of the tab

disabledboolean | undefined

Whether the tab is disabled

element((attributes: HTMLAttributes<"button">) => Element) | undefined

Render the element yourself

Indicator

txt
bg-surface-950-50 data-[orientation=horizontal]:w-(--width) data-[orientation=horizontal]:h-0.5 data-[orientation=horizontal]:bottom-0 data-[orientation=vertical]:w-0.5 data-[orientation=vertical]:h-(--height) data-[orientation=vertical]:end-0
PropDefaultType
element((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

Content

PropDefaultType
valuestring

The value of the tab

element((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

View page on GitHub