displaytexulinot agent-emittableapp
Tabs
tabs
A tab list that shows one panel at a time.
One token contract, every theme. Display components take color, radius, density and state styling from the --tx-* token contract — the same variables the theme strip below overrides — so a theme swap re-colors them without per-component fixes.
Live examples
Line tabs
Line tabs
Loading demo…
In your theme
This page renders in the site theme, enterprise-neutral. Every one of the 210 library themes re-colors every component through the --tx-* contract. The three below carry real token values from the library, rendered at build — no island, no extra requests.
Violet
backgroundsurfaceprimaryaccentborder
Monochrome
backgroundsurfaceprimaryaccentborder
Accessible Dark Contrast
backgroundsurfaceprimaryaccentborder
Props
| Name | Kind | Required | Default | Description |
|---|---|---|---|---|
items | array | yes | — | Tabs: value, label, optional badge and panel |
value | string | no | — | The selected tab value |
onValueChange | event | no | — | Selected tab changed |
label | string | no | — | Accessible name of the tab list |
variant | enum (line, pills, enclosed) | no | "line" | — |
orientation | enum (horizontal, vertical) | no | "horizontal" | — |
activationMode | enum (automatic, manual) | no | "automatic" | — |
loop | boolean | no | false | — |
disabled | boolean | no | false | — |
class | string | no | — | — |
content | slot | no | — | Panel body for each item |
Keyboard
| Key | Action |
|---|---|
Tab, tab | Tab list is labelled; arrow keys move among tabs; the selected tab is aria-selected |
tab | Each tab names its panel |
Accessibility
- Tab list is labelled; arrow keys move among tabs; the selected tab is aria-selected
- Each tab names its panel
Evidence for tabs
Latest committed gates for tabs (as of 2026-10-23). Static snapshot — not live CI.
Behavior
checkedscenario tabs
Rows in tests/behavior/scenarios/tabs.spec.ts, held to the WAI-ARIA APG pattern, run on Chromium and WebKit, and its touch rows on the Pixel 7.
Size (gzip)
texuli/tabs · budget 12.0 KiB
Budget from texuli.budgets.json; re-measure with `pnpm size --filter <entry>`.
Axe
documented
tests/e2e/site-component-pages.spec.tsdocs/quality (a11y-*)
Site component pages axe gate; package-level a11y docs under docs/quality when present.
Browsers
chromiumwebkitmobile
Playwright projects: Desktop Chrome, Desktop Safari, Pixel 7. Firefox is a known gap on this host.
When to use
Use when
- Switch between peer views of the same page
Don’t use when
Prefer another component
- A sequence of steps (use stepper or wizard)
- Mobile app destinations (use bottom-nav)

