Tabs

Organises content into switchable panels.

Basic

Tabs manages the active panel. TabsList holds the trigger buttons, TabsTrigger selects a panel by value, and TabsContent renders when its value matches.

The overview shows a high-level summary of your project's current status, recent activity, and key metrics at a glance.

<Tabs defaultValue="overview">
<TabsList>
  <TabsTrigger value="overview">Overview</TabsTrigger>
  <TabsTrigger value="analytics">Analytics</TabsTrigger>
  <TabsTrigger value="settings">Settings</TabsTrigger>
</TabsList>
<TabsContent value="overview" className="mt-4">
  <p>The overview shows a high-level summary of your project's current status.</p>
</TabsContent>
<TabsContent value="analytics" className="mt-4">
  <p>Analytics provides detailed breakdowns of usage trends and performance data.</p>
</TabsContent>
<TabsContent value="settings" className="mt-4">
  <p>Settings lets you configure project preferences and manage team access.</p>
</TabsContent>
</Tabs>

Controlled

Pass value and onValueChange to control the active tab externally. Omit defaultValue in controlled mode.

'use client';

import { useState } from 'react';
import { Tabs, TabsList, TabsTrigger, TabsContent } from '@venator-ui/ui';

export function ControlledTabs() {
const [tab, setTab] = useState('overview');

return (
  <Tabs value={tab} onValueChange={setTab}>
    <TabsList>
      <TabsTrigger value="overview">Overview</TabsTrigger>
      <TabsTrigger value="analytics">Analytics</TabsTrigger>
      <TabsTrigger value="settings">Settings</TabsTrigger>
    </TabsList>
    <TabsContent value="overview" className="mt-4">…</TabsContent>
    <TabsContent value="analytics" className="mt-4">…</TabsContent>
    <TabsContent value="settings" className="mt-4">…</TabsContent>
  </Tabs>
);
}

Props

Tabs

PropTypeDefaultDescription
defaultValuestring''Initially active tab in uncontrolled mode
valuestringActive tab in controlled mode
onValueChange(value: string) => voidCalled when the active tab changes
childrenReactNodeTabsList and TabsContent elements

TabsList

PropTypeDefaultDescription
classNamestringAdditional Tailwind classes
childrenReactNodeTabsTrigger elements

TabsTrigger

PropTypeDefaultDescription
valuestringIdentifier matching a TabsContent value
disabledbooleanfalsePrevents selection and applies muted styles
disableFocusRingbooleanfalseRemoves the focus ring on click
classNamestringAdditional Tailwind classes

TabsContent

PropTypeDefaultDescription
valuestringIdentifier matching a TabsTrigger value
classNamestringAdditional Tailwind classes on the content wrapper
childrenReactNodePanel content rendered when this tab is active