Tabs
Tabs provides the Windows 98 tab strip pattern with roving focus and controlled or uncontrolled selection.
Props
| Export | Key props | Description |
|---|---|---|
Tabs | defaultValue, value, onValueChange, keepMounted | Root state provider. |
TabList | menu props | Horizontal tab list. |
Tab | value, disabled | Selectable tab label. |
TabPanel | value | Panel matched to a tab value. |
Examples
Settings tabs
General settings appear in this panel.
Advanced settings stay mounted because `keepMounted` is enabled.
Disabled panel
import { Tab, TabList, TabPanel, Tabs } from '@murasaki/react98'
export function TabsBasicDemo(): React.ReactElement {
return (
<Tabs defaultValue="general" keepMounted className="w-80">
<TabList>
<Tab value="general">General</Tab>
<Tab value="advanced">Advanced</Tab>
<Tab value="disabled" disabled>Disabled</Tab>
</TabList>
<TabPanel value="general" className="min-h-24">
General settings appear in this panel.
</TabPanel>
<TabPanel value="advanced" className="min-h-24">
Advanced settings stay mounted because `keepMounted` is enabled.
</TabPanel>
<TabPanel value="disabled" className="min-h-24">
Disabled panel
</TabPanel>
</Tabs>
)
}ARIA
Tabs follows the ARIA tabs pattern with tablist, tab, tabpanel, aria-controls, and roving arrow-key focus. Press Enter or Space to activate the focused tab.
Keyboard
ArrowLeft and ArrowRight move focus between enabled tabs. Home and End move focus to the first and last enabled tab. Enter and Space activate the focused tab.
SSR
Use defaultValue for uncontrolled tabs, or keep controlled value consistent between server and client.
Last updated on