Tabs

Tabs organize related content into separate views, allowing users to switch between sections without leaving the current page.

Quick Start

Use Tabs to group related content into navigable sections.

Account content
Security content
1import {
2Tabs,
3TabsList,
4TabsTrigger,
5TabsContent,
6} from "@ecos/ui";
7
8<Tabs defaultValue="account">
9  <TabsList>
10    <TabsTrigger value="account">
11      Account
12    </TabsTrigger>
13
14    <TabsTrigger value="security">
15      Security
16    </TabsTrigger>
17  </TabsList>
18
19  <TabsContent value="account">
20    Account content
21  </TabsContent>
22
23  <TabsContent value="security">
24    Security content
25  </TabsContent>
26</Tabs>

Default Tabs

Tabs display a horizontal list of triggers above related content.

Overview content
Products content
Pricing content
1<Tabs defaultValue="overview">
2  <TabsList>
3    <TabsTrigger value="overview">
4      Overview
5    </TabsTrigger>
6
7    <TabsTrigger value="products">
8      Products
9    </TabsTrigger>
10
11    <TabsTrigger value="pricing">
12      Pricing
13    </TabsTrigger>
14  </TabsList>
15
16  <TabsContent value="overview">
17    Overview content
18  </TabsContent>
19
20  <TabsContent value="products">
21    Products content
22  </TabsContent>
23
24  <TabsContent value="pricing">
25    Pricing content
26  </TabsContent>
27</Tabs>

Controlled Usage

Manage the selected tab externally using React state.

Account content
Security content
1const [value, setValue] = useState("account");
2
3<Tabs
4  value={value}
5  onValueChange={setValue}
6>
7  <TabsList>
8    <TabsTrigger value="account">
9      Account
10    </TabsTrigger>
11
12    <TabsTrigger value="security">
13      Security
14    </TabsTrigger>
15  </TabsList>
16
17  <TabsContent value="account">
18    Account content
19  </TabsContent>
20
21  <TabsContent value="security">
22    Security content
23  </TabsContent>
24</Tabs>

With Icons

Tab triggers can contain icons alongside text.

Account content
Security content
1<Tabs defaultValue="account">
2  <TabsList>
3    <TabsTrigger value="account">
4      <User />
5      Account
6    </TabsTrigger>
7
8    <TabsTrigger value="security">
9      <Shield />
10      Security
11    </TabsTrigger>
12  </TabsList>
13
14  <TabsContent value="account">
15    Account content
16  </TabsContent>
17
18  <TabsContent value="security">
19    Security content
20  </TabsContent>
21</Tabs>

Disabled Tabs

Prevent users from interacting with specific tabs.

Account content
Security content
1<Tabs defaultValue="account">
2  <TabsList>
3    <TabsTrigger value="account">
4      Account
5    </TabsTrigger>
6
7    <TabsTrigger
8      value="security"
9      disabled
10    >
11      Security
12    </TabsTrigger>
13  </TabsList>
14
15  <TabsContent value="account">
16    Account content
17  </TabsContent>
18
19  <TabsContent value="security">
20    Security content
21  </TabsContent>
22</Tabs>

Responsive Navigation

Tabs automatically become scrollable when the available width is insufficient to display all tab triggers. Navigation controls are displayed when additional tabs are available.

Overview content
Products content
Pricing content
Support content
Billing content
Settings content
1<Tabs defaultValue="overview">
2  <TabsList>
3    <TabsTrigger value="overview">
4      Overview
5    </TabsTrigger>
6
7    <TabsTrigger value="products">
8      Products
9    </TabsTrigger>
10
11    <TabsTrigger value="pricing">
12      Pricing
13    </TabsTrigger>
14
15    <TabsTrigger value="support">
16      Support
17    </TabsTrigger>
18
19    <TabsTrigger value="billing">
20      Billing
21    </TabsTrigger>
22
23    <TabsTrigger value="settings">
24      Settings
25    </TabsTrigger>
26  </TabsList>
27
28  <TabsContent value="overview">
29    Overview content
30  </TabsContent>
31  <TabsContent value="products">
32    Products content
33  </TabsContent>
34  <TabsContent value="pricing">
35    Pricing content
36  </TabsContent>
37  <TabsContent value="support">
38    Support content
39  </TabsContent>
40  <TabsContent value="billing">
41    Billing content
42  </TabsContent>
43  <TabsContent value="settings">
44    Settings content
45  </TabsContent>
46</Tabs>

Vertical Tabs

Use the orientation prop to display navigation vertically. On mobile devices, vertical tabs automatically switch to the horizontal scrollable experience.

Account content
Security content
Notifications content
Billing content
1<Tabs
2  orientation="vertical"
3  defaultValue="account"
4>
5  <TabsList>
6    <TabsTrigger value="account">
7      Account
8    </TabsTrigger>
9
10    <TabsTrigger value="security">
11      Security
12    </TabsTrigger>
13
14    <TabsTrigger value="notifications">
15      Notifications
16    </TabsTrigger>
17
18    <TabsTrigger value="billing">
19      Billing
20    </TabsTrigger>
21  </TabsList>
22
23  <TabsContent value="account">
24    Account content
25  </TabsContent>
26
27  <TabsContent value="security">
28    Security content
29  </TabsContent>
30
31  <TabsContent value="notifications">
32    Notifications content
33  </TabsContent>
34
35  <TabsContent value="billing">
36    Billing content
37  </TabsContent>
38</Tabs>

Long Tab Labels

Tab labels support wrapping for longer text.

Content
Content
1<Tabs defaultValue="account">
2  <TabsList>
3    <TabsTrigger value="account">
4      Account Settings and Preferences
5    </TabsTrigger>
6
7    <TabsTrigger value="notifications">
8      Notification Preferences and Alerts
9    </TabsTrigger>
10  </TabsList>
11
12  <TabsContent value="account">
13    Content
14  </TabsContent>
15
16  <TabsContent value="notifications">
17    Content
18  </TabsContent>
19</Tabs>

API Reference

Tabs

Property

Type

Default

Description

valuestring-Controls the currently selected tab.
defaultValuestring-The initially selected tab when uncontrolled.
orientation"horizontal" | "vertical""horizontal"Determines whether tabs render horizontally or vertically. Vertical tabs automatically render as horizontal on mobile devices.
onValueChange(value: string) => void-Called when the active tab changes.
classNamestring-Additional classes applied to the tabs root.

TabsList

Property

Type

Default

Description

childrenReactNode-Collection of tab triggers displayed within the tab list.
classNamestring-Additional classes applied to the tab list.

TabsTrigger

Property

Type

Default

Description

valuestring-Unique identifier associated with a tab panel.
childrenReactNode-Content displayed within the tab trigger.
disabledbooleanfalsePrevents interaction with the tab trigger.
classNamestring-Additional classes applied to the tab trigger.

TabsContent

Property

Type

Default

Description

valuestring-Matches the value of the associated tab trigger.
classNamestring-Additional classes applied to the tab panel.

Visual Reference

Configuration

Preview

Default
Active Tab
With Icons
Disabled Tab
Vertical