Navigation
tabs
Same API as upstream: shadcn/ui docs
$
npx shadcn@latest add @preactcn/tabsBasic
Basic
TabsBasic
function TabsBasic() {
return (
<Example title="Basic">
<Tabs defaultValue="home">
<TabsList>
<TabsTrigger value="home">Home</TabsTrigger>
<TabsTrigger value="settings">Settings</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}Line
Line
TabsLine
function TabsLine() {
return (
<Example title="Line">
<Tabs defaultValue="overview">
<TabsList variant="line">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
<TabsTrigger value="reports">Reports</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}Variants Alignment
Variants Alignment
TabsVariantsComparison
function TabsVariantsComparison() {
return (
<Example title="Variants Alignment">
<div className="flex gap-4">
<Tabs defaultValue="overview">
<TabsList>
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
</TabsList>
</Tabs>
<Tabs defaultValue="overview">
<TabsList variant="line">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
</TabsList>
</Tabs>
</div>
</Example>
)
}Disabled
Disabled
TabsDisabled
function TabsDisabled() {
return (
<Example title="Disabled">
<Tabs defaultValue="home">
<TabsList>
<TabsTrigger value="home">Home</TabsTrigger>
<TabsTrigger value="settings" disabled>
Disabled
</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}With Icons
With Icons
TabsWithIcons
function TabsWithIcons() {
return (
<Example title="With Icons">
<Tabs defaultValue="preview">
<TabsList>
<TabsTrigger value="preview">
<AppWindowIcon
data-icon="inline-start"
/>
Preview
</TabsTrigger>
<TabsTrigger value="code">
<CodeIcon
data-icon="inline-start"
/>
Code
</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}Icon Only
Icon Only
TabsIconOnly
function TabsIconOnly() {
return (
<Example title="Icon Only">
<Tabs defaultValue="home">
<TabsList>
<TabsTrigger value="home">
<HomeIcon />
</TabsTrigger>
<TabsTrigger value="search">
<SearchIcon />
</TabsTrigger>
<TabsTrigger value="settings">
<SettingsIcon />
</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}Multiple
Multiple
TabsMultiple
function TabsMultiple() {
return (
<Example title="Multiple">
<Tabs defaultValue="overview">
<TabsList>
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
<TabsTrigger value="reports">Reports</TabsTrigger>
<TabsTrigger value="settings">Settings</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}With Content
With Content
Manage your account preferences and profile information.
TabsWithContent
function TabsWithContent() {
return (
<Example title="With Content">
<Tabs defaultValue="account">
<TabsList>
<TabsTrigger value="account">Account</TabsTrigger>
<TabsTrigger value="password">Password</TabsTrigger>
<TabsTrigger value="notifications">Notifications</TabsTrigger>
</TabsList>
<div className="border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4 style-luma:rounded-xl style-luma:p-6 style-sera:rounded-none style-sera:p-6 style-rhea:rounded-xl style-rhea:p-6">
<TabsContent value="account">
Manage your account preferences and profile information.
</TabsContent>
<TabsContent value="password">
Update your password to keep your account secure.
</TabsContent>
<TabsContent value="notifications">
Configure how you receive notifications and alerts.
</TabsContent>
</div>
</Tabs>
</Example>
)
}Line With Content
Line With Content
Manage your account preferences and profile information.
TabsLineWithContent
function TabsLineWithContent() {
return (
<Example title="Line With Content">
<Tabs defaultValue="account">
<TabsList variant="line">
<TabsTrigger value="account">Account</TabsTrigger>
<TabsTrigger value="password">Password</TabsTrigger>
<TabsTrigger value="notifications">Notifications</TabsTrigger>
</TabsList>
<div className="border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4 style-luma:rounded-xl style-luma:p-6 style-sera:rounded-none style-sera:p-6 style-rhea:rounded-xl style-rhea:p-6">
<TabsContent value="account">
Manage your account preferences and profile information.
</TabsContent>
<TabsContent value="password">
Update your password to keep your account secure.
</TabsContent>
<TabsContent value="notifications">
Configure how you receive notifications and alerts.
</TabsContent>
</div>
</Tabs>
</Example>
)
}Line Disabled
Line Disabled
TabsLineDisabled
function TabsLineDisabled() {
return (
<Example title="Line Disabled">
<Tabs defaultValue="overview">
<TabsList variant="line">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
<TabsTrigger value="reports" disabled>
Reports
</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}With Dropdown
With Dropdown
View your dashboard metrics and key performance indicators.
TabsWithDropdown
function TabsWithDropdown() {
return (
<Example title="With Dropdown">
<Tabs defaultValue="overview">
<div className="flex items-center justify-between">
<TabsList>
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
<TabsTrigger value="reports">Reports</TabsTrigger>
</TabsList>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="ghost" size="icon" className="size-8">
<MoreHorizontalIcon />
<span className="sr-only">More options</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuItem>Export</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Archive</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div>
<div className="border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4 style-luma:rounded-xl style-luma:p-6 style-sera:rounded-none style-sera:p-6 style-rhea:rounded-xl style-rhea:p-6">
<TabsContent value="overview">
View your dashboard metrics and key performance indicators.
</TabsContent>
<TabsContent value="analytics">
Detailed analytics and insights about your data.
</TabsContent>
<TabsContent value="reports">
Generate and view custom reports.
</TabsContent>
</div>
</Tabs>
</Example>
)
}Vertical
Vertical
Manage your account preferences and profile information.
TabsVertical
function TabsVertical() {
return (
<Example title="Vertical">
<Tabs defaultValue="account" orientation="vertical">
<TabsList>
<TabsTrigger value="account">Account</TabsTrigger>
<TabsTrigger value="password">Password</TabsTrigger>
<TabsTrigger value="notifications">Notifications</TabsTrigger>
</TabsList>
<div className="border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4 style-luma:rounded-xl style-luma:p-6 style-sera:rounded-none style-sera:p-6 style-rhea:rounded-xl style-rhea:p-6">
<TabsContent value="account">
Manage your account preferences and profile information.
</TabsContent>
<TabsContent value="password">
Update your password to keep your account secure. Use a strong
password with a mix of letters, numbers, and symbols.
</TabsContent>
<TabsContent value="notifications">
Configure how you receive notifications and alerts. Choose which
types of notifications you want to receive and how you want to
receive them.
</TabsContent>
</div>
</Tabs>
</Example>
)
}With Input and Button
Full example source
tabs-example.tsx
import {
Example,
ExampleWrapper,
} from "@/components/example"
import { Button } from "@/components/ui/button"
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu"
import { Input } from "@/components/ui/input"
import {
Tabs,
TabsContent,
TabsList,
TabsTrigger,
} from "@/components/ui/tabs"
import {
AppWindowIcon,
CodeIcon,
HomeIcon,
MoreHorizontalIcon,
SearchIcon,
SettingsIcon,
} from "lucide-preact"
export default function TabsExample() {
return (
<ExampleWrapper>
<TabsBasic />
<TabsLine />
<TabsVariantsComparison />
<TabsDisabled />
<TabsWithIcons />
<TabsIconOnly />
<TabsMultiple />
<TabsWithContent />
<TabsLineWithContent />
<TabsLineDisabled />
<TabsWithDropdown />
<TabsVertical />
<TabsWithInputAndButton />
</ExampleWrapper>
)
}
function TabsBasic() {
return (
<Example title="Basic">
<Tabs defaultValue="home">
<TabsList>
<TabsTrigger value="home">Home</TabsTrigger>
<TabsTrigger value="settings">Settings</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}
function TabsLine() {
return (
<Example title="Line">
<Tabs defaultValue="overview">
<TabsList variant="line">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
<TabsTrigger value="reports">Reports</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}
function TabsVariantsComparison() {
return (
<Example title="Variants Alignment">
<div className="flex gap-4">
<Tabs defaultValue="overview">
<TabsList>
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
</TabsList>
</Tabs>
<Tabs defaultValue="overview">
<TabsList variant="line">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
</TabsList>
</Tabs>
</div>
</Example>
)
}
function TabsDisabled() {
return (
<Example title="Disabled">
<Tabs defaultValue="home">
<TabsList>
<TabsTrigger value="home">Home</TabsTrigger>
<TabsTrigger value="settings" disabled>
Disabled
</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}
function TabsWithIcons() {
return (
<Example title="With Icons">
<Tabs defaultValue="preview">
<TabsList>
<TabsTrigger value="preview">
<AppWindowIcon
data-icon="inline-start"
/>
Preview
</TabsTrigger>
<TabsTrigger value="code">
<CodeIcon
data-icon="inline-start"
/>
Code
</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}
function TabsIconOnly() {
return (
<Example title="Icon Only">
<Tabs defaultValue="home">
<TabsList>
<TabsTrigger value="home">
<HomeIcon />
</TabsTrigger>
<TabsTrigger value="search">
<SearchIcon />
</TabsTrigger>
<TabsTrigger value="settings">
<SettingsIcon />
</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}
function TabsMultiple() {
return (
<Example title="Multiple">
<Tabs defaultValue="overview">
<TabsList>
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
<TabsTrigger value="reports">Reports</TabsTrigger>
<TabsTrigger value="settings">Settings</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}
function TabsWithContent() {
return (
<Example title="With Content">
<Tabs defaultValue="account">
<TabsList>
<TabsTrigger value="account">Account</TabsTrigger>
<TabsTrigger value="password">Password</TabsTrigger>
<TabsTrigger value="notifications">Notifications</TabsTrigger>
</TabsList>
<div className="border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4 style-luma:rounded-xl style-luma:p-6 style-sera:rounded-none style-sera:p-6 style-rhea:rounded-xl style-rhea:p-6">
<TabsContent value="account">
Manage your account preferences and profile information.
</TabsContent>
<TabsContent value="password">
Update your password to keep your account secure.
</TabsContent>
<TabsContent value="notifications">
Configure how you receive notifications and alerts.
</TabsContent>
</div>
</Tabs>
</Example>
)
}
function TabsLineWithContent() {
return (
<Example title="Line With Content">
<Tabs defaultValue="account">
<TabsList variant="line">
<TabsTrigger value="account">Account</TabsTrigger>
<TabsTrigger value="password">Password</TabsTrigger>
<TabsTrigger value="notifications">Notifications</TabsTrigger>
</TabsList>
<div className="border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4 style-luma:rounded-xl style-luma:p-6 style-sera:rounded-none style-sera:p-6 style-rhea:rounded-xl style-rhea:p-6">
<TabsContent value="account">
Manage your account preferences and profile information.
</TabsContent>
<TabsContent value="password">
Update your password to keep your account secure.
</TabsContent>
<TabsContent value="notifications">
Configure how you receive notifications and alerts.
</TabsContent>
</div>
</Tabs>
</Example>
)
}
function TabsLineDisabled() {
return (
<Example title="Line Disabled">
<Tabs defaultValue="overview">
<TabsList variant="line">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
<TabsTrigger value="reports" disabled>
Reports
</TabsTrigger>
</TabsList>
</Tabs>
</Example>
)
}
function TabsWithDropdown() {
return (
<Example title="With Dropdown">
<Tabs defaultValue="overview">
<div className="flex items-center justify-between">
<TabsList>
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
<TabsTrigger value="reports">Reports</TabsTrigger>
</TabsList>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="ghost" size="icon" className="size-8">
<MoreHorizontalIcon />
<span className="sr-only">More options</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuItem>Export</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Archive</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div>
<div className="border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4 style-luma:rounded-xl style-luma:p-6 style-sera:rounded-none style-sera:p-6 style-rhea:rounded-xl style-rhea:p-6">
<TabsContent value="overview">
View your dashboard metrics and key performance indicators.
</TabsContent>
<TabsContent value="analytics">
Detailed analytics and insights about your data.
</TabsContent>
<TabsContent value="reports">
Generate and view custom reports.
</TabsContent>
</div>
</Tabs>
</Example>
)
}
function TabsVertical() {
return (
<Example title="Vertical">
<Tabs defaultValue="account" orientation="vertical">
<TabsList>
<TabsTrigger value="account">Account</TabsTrigger>
<TabsTrigger value="password">Password</TabsTrigger>
<TabsTrigger value="notifications">Notifications</TabsTrigger>
</TabsList>
<div className="border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4 style-luma:rounded-xl style-luma:p-6 style-sera:rounded-none style-sera:p-6 style-rhea:rounded-xl style-rhea:p-6">
<TabsContent value="account">
Manage your account preferences and profile information.
</TabsContent>
<TabsContent value="password">
Update your password to keep your account secure. Use a strong
password with a mix of letters, numbers, and symbols.
</TabsContent>
<TabsContent value="notifications">
Configure how you receive notifications and alerts. Choose which
types of notifications you want to receive and how you want to
receive them.
</TabsContent>
</div>
</Tabs>
</Example>
)
}
function TabsWithInputAndButton() {
return (
<Example title="With Input and Button" containerClassName="col-span-full">
<Tabs defaultValue="overview" className="mx-auto w-full max-w-lg">
<div className="flex items-center gap-4">
<TabsList>
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="analytics">Analytics</TabsTrigger>
</TabsList>
<div className="ml-auto flex items-center gap-2">
<Input placeholder="Search..." className="w-44" />
<Button>Action</Button>
</div>
</div>
<div className="border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4 style-luma:rounded-xl style-luma:p-6 style-sera:rounded-none style-sera:p-6 style-rhea:rounded-xl style-rhea:p-6">
<TabsContent value="overview">
View your dashboard metrics and key performance indicators.
</TabsContent>
<TabsContent value="analytics">
Detailed analytics and insights about your data.
</TabsContent>
<TabsContent value="reports">
Generate and view custom reports.
</TabsContent>
</div>
</Tabs>
</Example>
)
}