Skip to main content

Tabs

Tab navigation with content panels. Supports keyboard navigation and roving tabindex.

Preview
Loading preview…

Import

// Web Component
import '@kittl/ui';

// React
import { Tabs, TabsTrigger, TabsContent } from '@kittl/ui-react';

Usage

Web Component

<kittl-tabs value="designs">
<kittl-tabs-trigger value="designs" slot="tab">Designs</kittl-tabs-trigger>
<kittl-tabs-trigger value="templates" slot="tab">Templates</kittl-tabs-trigger>
<kittl-tabs-content value="designs">Your designs here.</kittl-tabs-content>
<kittl-tabs-content value="templates">Browse templates.</kittl-tabs-content>
</kittl-tabs>

React

<Tabs value="designs" onTabsChange={(e) => console.log(e.detail.value)}>
<TabsTrigger value="designs" slot="tab">Designs</TabsTrigger>
<TabsTrigger value="templates" slot="tab">Templates</TabsTrigger>
<TabsContent value="designs">Your designs here.</TabsContent>
<TabsContent value="templates">Browse templates.</TabsContent>
</Tabs>

Tabs Props

PropertyTypeDefaultDescription
valuestring''Currently active tab value
size's' | 'm''m'Tab size
fluidbooleanfalseTabs fill available width equally

TabsTrigger Props

PropertyTypeDefaultDescription
valuestring''Unique value matching a TabsContent
activebooleanfalseWhether this tab is active (managed by parent)

TabsContent Props

PropertyTypeDefaultDescription
valuestring''Unique value matching a TabsTrigger
activebooleanfalseWhether this panel is visible (managed by parent)

Slots

SlotParentDescription
tabTabsPlace TabsTrigger elements here
(default)TabsPlace TabsContent elements here

Events

EventSourceDetailDescription
tabs-changeTabs{ value: string }Active tab changed
tab-selectTabsTrigger{ value: string }A trigger was clicked

React props: onTabsChange, onTabSelect

Accessibility

  • Triggers: role="tab", aria-selected, aria-controls
  • Content: role="tabpanel", aria-labelledby
  • Keyboard: ArrowLeft/ArrowRight to navigate, auto-selects on arrow key
  • Roving tabindex pattern — only the active tab is in the tab order