Tabs
A set of layered sections of content—known as tab panels—that are displayed one at a time.
Kobalte
The Tabs component is built on top of Kobalte Tabs, which provides the accessible tab, tablist, and tabpanel primitives with keyboard navigation.
Overview
View your key metrics and recent project activity. Track progress across all your active projects.
You have 12 active projects and 3 pending tasks.
import { Card, CardContent, CardDescription, CardHeader, CardTitle,} from "~/components/ui/card";import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/components/ui/tabs";
export default function TabsDemo() { return ( <Tabs defaultValue="overview" class="w-[400px]"> <TabsList> <TabsTrigger value="overview">Overview</TabsTrigger> <TabsTrigger value="analytics">Analytics</TabsTrigger> <TabsTrigger value="reports">Reports</TabsTrigger> <TabsTrigger value="settings">Settings</TabsTrigger> </TabsList> <TabsContent value="overview"> <Card> <CardHeader> <CardTitle>Overview</CardTitle> <CardDescription> View your key metrics and recent project activity. Track progress across all your active projects. </CardDescription> </CardHeader> <CardContent class="text-muted-foreground text-sm"> You have 12 active projects and 3 pending tasks. </CardContent> </Card> </TabsContent> <TabsContent value="analytics"> <Card> <CardHeader> <CardTitle>Analytics</CardTitle> <CardDescription> Track performance and user engagement metrics. Monitor trends and identify growth opportunities. </CardDescription> </CardHeader> <CardContent class="text-muted-foreground text-sm"> Page views are up 25% compared to last month. </CardContent> </Card> </TabsContent> <TabsContent value="reports"> <Card> <CardHeader> <CardTitle>Reports</CardTitle> <CardDescription> Generate and download your detailed reports. Export data in multiple formats for analysis. </CardDescription> </CardHeader> <CardContent class="text-muted-foreground text-sm"> You have 5 reports ready and available to export. </CardContent> </Card> </TabsContent> <TabsContent value="settings"> <Card> <CardHeader> <CardTitle>Settings</CardTitle> <CardDescription> Manage your account preferences and options. Customize your experience to fit your needs. </CardDescription> </CardHeader> <CardContent class="text-muted-foreground text-sm"> Configure notifications, security, and themes. </CardContent> </Card> </TabsContent> </Tabs> );}Installation
Usage
import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/components/ui/tabs";<Tabs defaultValue="account" class="w-[400px]"> <TabsList> <TabsTrigger value="account">Account</TabsTrigger> <TabsTrigger value="password">Password</TabsTrigger> </TabsList> <TabsContent value="account">Make changes to your account here.</TabsContent> <TabsContent value="password">Change your password here.</TabsContent></Tabs>Composition
Use the following composition to build Tabs:
Tabs├── TabsList│ ├── TabsTrigger│ └── TabsTrigger├── TabsContent└── TabsContentLine
Use the variant="line" prop on TabsList for a line style.
import { Tabs, TabsList, TabsTrigger } from "~/components/ui/tabs";
export default function TabsLine() { return ( <Tabs defaultValue="overview"> <TabsList variant="line"> <TabsTrigger value="overview">Overview</TabsTrigger> <TabsTrigger value="analytics">Analytics</TabsTrigger> <TabsTrigger value="reports">Reports</TabsTrigger> </TabsList> </Tabs> );}Vertical
Use orientation="vertical" for vertical tabs.
import { Tabs, TabsList, TabsTrigger } from "~/components/ui/tabs";
export default function TabsVertical() { return ( <Tabs defaultValue="account" orientation="vertical"> <TabsList> <TabsTrigger value="account">Account</TabsTrigger> <TabsTrigger value="password">Password</TabsTrigger> <TabsTrigger value="notifications">Notifications</TabsTrigger> </TabsList> </Tabs> );}Disabled
import { Tabs, TabsList, TabsTrigger } from "~/components/ui/tabs";
export default function TabsDisabled() { return ( <Tabs defaultValue="home"> <TabsList> <TabsTrigger value="home">Home</TabsTrigger> <TabsTrigger value="settings" disabled> Disabled </TabsTrigger> </TabsList> </Tabs> );}Icons
import { AppWindow, Code } from "lucide-solid";import { Tabs, TabsList, TabsTrigger } from "~/components/ui/tabs";
export default function TabsIcons() { return ( <Tabs defaultValue="preview"> <TabsList> <TabsTrigger value="preview"> <AppWindow /> Preview </TabsTrigger> <TabsTrigger value="code"> <Code /> Code </TabsTrigger> </TabsList> </Tabs> );}API Reference
For primitive props, keyboard behavior, and accessibility details, see the Kobalte Tabs API reference.