Tabs
A set of layered sections of content, known as tab panels.
Account
Make changes to your account here. Click save when you're done.
Password
Change your password. After saving, you'll be logged out.
Tabs — sélecteur d'un panel parmi plusieurs, tous préchargés dans le DOM. TabsList porte les triggers, TabsContent les panels. Un seul TabsContent est visible à la fois (les autres portent hidden).
Bon pour : préférences groupées, dashboards multi-vue, docs (Preview / Code). Mauvais pour : navigation entre pages (utiliser NavigationMenu).
Installation
$ bext ui add tabs
Copy and paste the following into src/components/ui/tabs.tsx.
This component is interactive — make sure the shared island is loaded (see Islands). It reacts to data-ui="tabs" hooks.
Usage
Anatomy
<Tabs defaultValue="a"> ├── <TabsList> │ ├── <TabsTrigger value="a">A</TabsTrigger> │ └── <TabsTrigger value="b">B</TabsTrigger> ├── <TabsContent value="a">Panel A</TabsContent> └── <TabsContent value="b">Panel B</TabsContent> </Tabs>
API Reference
Tabs
| Prop | Type | Default | Description |
|---|---|---|---|
| defaultValue | string | — | Valeur du tab actif au montage. |
| className | string | — | undefined |
TabsList
| Prop | Type | Default | Description |
|---|---|---|---|
| children | ReactNode | — | undefined |
TabsTrigger
| Prop | Type | Default | Description |
|---|---|---|---|
| value | string | — | Doit matcher un TabsContent frère. |
| children | ReactNode | — | undefined |
TabsContent
| Prop | Type | Default | Description |
|---|---|---|---|
| value | string | — | undefined |
| children | ReactNode | — | undefined |
Data Attributes
Attributs qu'on peut cibler en CSS custom pour override le style par état.
| Attribute | On | Values | Description |
|---|---|---|---|
| data-ui="tabs" | Tabs root | — | undefined |
| data-state | TabsTrigger, TabsContent | "active" | "inactive" | undefined |
| data-value | TabsTrigger, TabsContent | string | undefined |
Keyboard
| Key | Action |
|---|---|
| Arrow Left / Right | Naviguer entre triggers. |
| Home / End | Premier / dernier trigger. |
| Enter / Space | Activer le trigger focus. |
Accessibility
TabsList porte role="tablist", TabsTrigger role="tab" aria-selected aria-controls, TabsContent role="tabpanel" aria-labelledby.
Edit this component live in the bext playground. The PRISM + signals version is the bext-native idiom — fine-grained reactivity, no virtual DOM.
On This Page