Examples
Peer views
A visible tab list keeps the current subject in place while switching panels.
Tabs preview with overview and activity panels
"use client";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@phuctech/ui/components/tabs";
export function Example() {
return (
<Tabs defaultValue="overview">
<TabsList aria-label="Project sections">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="activity">Activity</TabsTrigger>
</TabsList>
<TabsContent value="overview">A short project summary.</TabsContent>
<TabsContent value="activity">Recent changes and events.</TabsContent>
</Tabs>
);
}
Controlled active tab
The feature can coordinate the selected tab with surrounding state.
Current tab: overview
Controlled Tabs with current value
"use client";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@phuctech/ui/components/tabs";
export function Example() {
return (
<Tabs defaultValue="overview">
<TabsList aria-label="Project sections">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="activity">Activity</TabsTrigger>
</TabsList>
<TabsContent value="overview">A short project summary.</TabsContent>
<TabsContent value="activity">Recent changes and events.</TabsContent>
</Tabs>
);
}Disabled tab
A tab can remain visible while unavailable in the current context.
Tabs with a disabled trigger
"use client";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@phuctech/ui/components/tabs";
export function Example() {
return (
<Tabs defaultValue="overview">
<TabsList aria-label="Project sections">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="activity">Activity</TabsTrigger>
</TabsList>
<TabsContent value="overview">A short project summary.</TabsContent>
<TabsContent value="activity">Recent changes and events.</TabsContent>
</Tabs>
);
}Labels with icons
Decorative icons reinforce short labels without replacing them.
Tabs with decorative icons
"use client";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@phuctech/ui/components/tabs";
export function Example() {
return (
<Tabs defaultValue="overview">
<TabsList aria-label="Project sections">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="activity">Activity</TabsTrigger>
</TabsList>
<TabsContent value="overview">A short project summary.</TabsContent>
<TabsContent value="activity">Recent changes and events.</TabsContent>
</Tabs>
);
}Long panel content
Panel content wraps and scrolls with the surrounding page instead of clipping.
Tabs with long panel content
"use client";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@phuctech/ui/components/tabs";
export function Example() {
return (
<Tabs defaultValue="overview">
<TabsList aria-label="Project sections">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="activity">Activity</TabsTrigger>
</TabsList>
<TabsContent value="overview">A short project summary.</TabsContent>
<TabsContent value="activity">Recent changes and events.</TabsContent>
</Tabs>
);
}When to use
Use Tabs for peer views of the same subject where people may move between sections without losing context. Use navigation links for different resources and an accordion when several sections should be open in a single flow.
Usage
"use client";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@phuctech/ui/components/tabs";
export function Example() {
return (
<Tabs defaultValue="overview">
<TabsList aria-label="Project sections">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="activity">Activity</TabsTrigger>
</TabsList>
<TabsContent value="overview">A short project summary.</TabsContent>
<TabsContent value="activity">Recent changes and events.</TabsContent>
</Tabs>
);
}
Use a stable value for each tab and panel. The root can be uncontrolled with defaultValue or controlled with value and onValueChange.
Admin example
This data-only admin surface composes Tabs, Card, Badge, Input, Tooltip, IconButton, and Button without adding a backend or hiding actions behind hover.
Active projects
18
Events this week
4,280
Pending invites
7
A small administration screen using the Phase 4 component set.
API
Tokens
Accessibility
- Use Arrow Left/Right (or Up/Down for vertical tabs) to move between tabs and Enter/Space when activation on focus is disabled.
- Ensure the active tab and its panel are linked by the primitive; do not render a panel with a mismatched value.
- Keep tab labels concise and do not use tabs for a single action or unrelated navigation.
Do and don’t
Use tabs for genuinely peer views and keep the current subject in place.
Use a tab strip as a wizard, hide required content only on hover, or create a tab for one item.
Related
- Card provides the surface for a tab panel.
- DropdownMenu is better for a compact action/choice list.
- Accessibility documents keyboard and focus review.