Tabs
Gliding Pill Tabs
Tabs with a single pill underneath: it measures the active button and glides across with a light overshoot.
What you can change
- the items array: id, label and panel content — content is a ReactNode
- defaultId — which tab starts open
- the list name through label: a screen reader announces it, the screen does not show it
A link for your AI agent: preview, code and instructions.
Preview
Use it with AI
- 1. Copy the link.
- 2. Write to your agent in your own words and drop the link into the sentence.
- 3. The agent opens the link and installs the component from the registry.
put this on the home page as the hero:
https://vibeui.ru/c/tabs-015?lang=en&theme=dark
Not sure where to paste it? Step-by-step guide
Show the full instructions
What the link says, spelled out. Use it when your agent cannot open links — paste this text instead.
Loading…
For developers
The install command lives in the “Component source” block below — a signed link that stays valid for 24 hours.
Technical notes
One file, zero dependencies, the --vibeui-tabs-015-* palette. Client component: useState holds the selection, a useEffect with a ResizeObserver measures the active button. The markup follows the WAI-ARIA tabs pattern: role="tablist" with an aria-label, role="tab" with aria-selected and aria-controls, role="tabpanel" with aria-labelledby; only the active tab lives in the Tab order, the rest are reached with the arrows, Home and End. The pill is the track's single ::before: its width and offset come from the --vibeui-tabs-015-w and --vibeui-tabs-015-x variables that the component writes from the active button's offsetWidth and offsetLeft. Until the first measurement the pill is transparent and the track is marked data-ready. The theme comes from color-scheme through light-dark(), while the .dark class and data-theme="dark" declare color-scheme:dark.
Tags
- tabs
- pill
- indicator
- spring
- keyboard
Component source
The same file your agent installs. Here in case you would rather copy it by hand.
Loading…