---
title: Tabs
description: Easily create accessible, fully customizable tab interfaces, with robust focus management and keyboard navigation support.
---
Easily create accessible, fully customizable tab interfaces, with robust focus management and keyboard navigation support.
Tabs are built using the `TabGroup`, `TabList`, `Tab`, and `TabPanel` components. Clicking on any tab or selecting it with the keyboard will activate the corresponding panel.
## Styling states
| CSS selector | Description
| --------------- | --------------
| `.ui-hidden` | Added to all `TabPanel` except the one that is active.
| `.ui-selected` | Added to the selected `Tab`.
| `.ui-disabled` | Added to disabled `Tab`s.
## Disabling a tab
To disable a tab, use the disabled attribute on the `Tab` component. Disabled tabs cannot be selected with the mouse, and are also skipped when navigating the tab list using the keyboard.
Disabling tabs might be confusing for users. Instead, I reccomend you either remove it or explain why there is no content for that tab when is selected.
## Manually activating tabs
By default, tabs are automatically selected as the user navigates through them using the arrow kbds.
If you'd rather not change the current tab until the user presses Enter or Space, use the `manual` attribute on the `TabGroup` component.
Remember to add styles to the `:focus` state of the tab so is clear to the user that the tab is focused.
The manual prop has no impact on mouse interactions — tabs will still be selected as soon as they are clicked.
## Vertical tabs
If you've styled your `TabList` to appear vertically, use the `vertical` attribute to enable navigating with the ↑ and ↓ arrow kbds instead of ← and →, and to update the `aria-orientation` attribute for assistive technologies.
## Controlling the tabs with a `