Skip to content

Tabs

An accessible tab list component built on @zeus-ui/headless.

Import

tsx
import { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/ui/tabs'

Usage

tsx
function MyTabs() {
  return (
    <Tabs defaultValue="overview">
      <TabsList>
        <TabsTrigger value="overview">Overview</TabsTrigger>
        <TabsTrigger value="settings">Settings</TabsTrigger>
        <TabsTrigger value="analytics">Analytics</TabsTrigger>
      </TabsList>
      <TabsContent value="overview">
        <p>Overview content goes here.</p>
      </TabsContent>
      <TabsContent value="settings">
        <p>Settings content goes here.</p>
      </TabsContent>
      <TabsContent value="analytics">
        <p>Analytics content goes here.</p>
      </TabsContent>
    </Tabs>
  )
}

Controlled

tsx
import { useState } from 'react'

function ControlledTabs() {
  const [value, setValue] = useState('overview')

  return (
    <Tabs value={value} onValueChange={setValue}>
      <TabsList>
        <TabsTrigger value="a">Tab A</TabsTrigger>
        <TabsTrigger value="b">Tab B</TabsTrigger>
      </TabsList>
      <TabsContent value="a">Content A</TabsContent>
      <TabsContent value="b">Content B</TabsContent>
    </Tabs>
  )
}

Props

Tabs

PropTypeDefaultDescription
valuestringControlled active tab value
defaultValuestringDefault active tab value
onValueChange(value: string) => voidTab change handler

TabsTrigger

PropTypeDefaultDescription
valuestringThe value this trigger represents
disabledbooleanfalseDisables the trigger