Skip to Content

Tabs

The Tabs component provides a tabbed interface for organizing content by categories.

Anatomy

Import all parts and piece them together.

import { Tabs } from '@xsolla-zk/react' export default () => ( <Tabs> <Tabs.List> <Tabs.Tab> <Tabs.Tab.Icon /> <Tabs.Tab.Text /> </Tabs.Tab> </Tabs.List> <Tabs.Content /> </Tabs> )

Examples

Basic example

import { Tabs } from '@xsolla-zk/react' function App() { return ( <Tabs defaultValue="tab1"> <Tabs.List> <Tabs.Tab value="tab1"> <Tabs.Tab.Text>First tab</Tabs.Tab.Text> </Tabs.Tab> <Tabs.Tab value="tab2"> <Tabs.Tab.Text>Second tab</Tabs.Tab.Text> </Tabs.Tab> </Tabs.List> <Tabs.Content value="tab1"> <p>First tab content</p> </Tabs.Content> <Tabs.Content value="tab2"> <p>Second tab content</p> </Tabs.Content> </Tabs> ) }

With controlled state

import { Tabs } from '@xsolla-zk/react' import { useState } from 'react' function App() { const [activeTab, setActiveTab] = useState('tab1') return ( <Tabs value={activeTab} onValueChange={setActiveTab}> <Tabs.List> <Tabs.Tab value="tab1"> <Tabs.Tab.Text>Tab 1</Tabs.Tab.Text> </Tabs.Tab> <Tabs.Tab value="tab2"> <Tabs.Tab.Text>Tab 2</Tabs.Tab.Text> </Tabs.Tab> </Tabs.List> <Tabs.Content value="tab1"> Content 1 </Tabs.Content> <Tabs.Content value="tab2"> Content 2 </Tabs.Content> </Tabs> ) }

With icons

import { Tabs } from '@xsolla-zk/react' import { Home, Settings } from '@xsolla-zk/icons' function App() { return ( <Tabs defaultValue="home"> <Tabs.List> <Tabs.Tab value="home"> <Tabs.Tab.Icon> <Home /> </Tabs.Tab.Icon> <Tabs.Tab.Text>Home</Tabs.Tab.Text> </Tabs.Tab> <Tabs.Tab value="settings"> <Tabs.Tab.Icon> <Settings /> </Tabs.Tab.Icon> <Tabs.Tab.Text>Settings</Tabs.Tab.Text> </Tabs.Tab> </Tabs.List> <Tabs.Content value="home"> Home page </Tabs.Content> <Tabs.Content value="settings"> Settings page </Tabs.Content> </Tabs> ) }

All Sizes

<Tabs size="$200" defaultValue="tab1"> <Tabs.List> <Tabs.Tab value="tab1"> <Tabs.Tab.Text>Small</Tabs.Tab.Text> </Tabs.Tab> </Tabs.List> </Tabs> <Tabs size="$500" defaultValue="tab1"> <Tabs.List> <Tabs.Tab value="tab1"> <Tabs.Tab.Text>Large</Tabs.Tab.Text> </Tabs.Tab> </Tabs.List> </Tabs>

API

Tabs Props

Tabs extend Tamagui tabs inheriting all standard props, plus:

PropTypeDefaultDescription
defaultValuestring-Default active tab value
valuestring-Current active tab value
onValueChange(value: string) => void-Active tab change handler
sizeTabsSizes'$300'Tab size
orientation'horizontal' | 'vertical''horizontal'Tab orientation

Tabs.List Props

Container for the list of tabs.

Tabs.Tab Props

PropTypeDefaultDescription
valuestring-Unique tab value
disabledbooleanfalseDisables the tab

Tabs.Tab.Text Props

Component for displaying tab text.

Tabs.Tab.Icon Props

Component for displaying tab icon.

Tabs.Content Props

PropTypeDefaultDescription
valuestring-Associated tab value

Accessibility

  • Supports keyboard navigation (Arrow keys, Home, End)
  • Works correctly with screen readers
  • Implements ARIA pattern for tabs
  • Automatically manages focus between tabs