Skip to Content
ComponentsTabs

Tabs

A component for switching between content panels using tabs. Built on Ark UI .

Import

import { Tabs } from '@grannyshot/ui'

Usage

<Tabs.Root defaultValue="tab1"> <Tabs.List> <Tabs.Trigger value="tab1">Overview</Tabs.Trigger> <Tabs.Trigger value="tab2">Features</Tabs.Trigger> <Tabs.Trigger value="tab3">Settings</Tabs.Trigger> <Tabs.Indicator /> </Tabs.List> <Tabs.Content value="tab1">Overview content</Tabs.Content> <Tabs.Content value="tab2">Features content</Tabs.Content> <Tabs.Content value="tab3">Settings content</Tabs.Content> </Tabs.Root>

Variants

Set the variant prop on Tabs.Root to automatically propagate the style to all child components.

Line (default)

A tab style with a bottom border indicator.

<Tabs.Root variant="line" defaultValue="tab1"> <Tabs.List> <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger> <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger> <Tabs.Indicator /> </Tabs.List> <Tabs.Content value="tab1">Line style content</Tabs.Content> <Tabs.Content value="tab2">Line style content</Tabs.Content> </Tabs.Root>

Pill

A rounded tab style with background color.

<Tabs.Root variant="pill" defaultValue="tab1"> <Tabs.List> <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger> <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger> </Tabs.List> <Tabs.Content value="tab1">Pill style content</Tabs.Content> <Tabs.Content value="tab2">Pill style content</Tabs.Content> </Tabs.Root>

Disabled

Individual tabs can be disabled.

<Tabs.Root defaultValue="tab1"> <Tabs.List> <Tabs.Trigger value="tab1">Active</Tabs.Trigger> <Tabs.Trigger value="tab2" disabled>Disabled</Tabs.Trigger> <Tabs.Indicator /> </Tabs.List> <Tabs.Content value="tab1">Active tab content</Tabs.Content> </Tabs.Root>

Compound Components

ComponentDescription
Tabs.RootTab root. Sets variant, defaultValue, etc.
Tabs.ListContainer for tab triggers
Tabs.TriggerIndividual tab button. value is required
Tabs.ContentTab content panel. Linked to trigger by value
Tabs.IndicatorActive tab indicator (used with line variant)

Props

Tabs.Root

PropTypeDefaultDescription
variant'line' | 'pill''line'Tab style (auto-propagated to children)
defaultValuestringInitial active tab value
valuestringActive tab value in controlled mode
onValueChange(details: { value: string }) => voidCallback when tab changes
lazyMountbooleantrueLazy mount content panels

Supports all Ark UI Tabs props.

Last updated on