components / tabs

tabs.

tab-strip in a bordered pill or underline style. controlled selection with roving-tabindex arrow-key nav and ARIA, split into a headless useTabs hook.

things i've shipped.
installation
bunx @justin06lee/chrome@latest add tabs
props
nametypedefaultdescription
value *T-
onValueChange *(value: T) => void-
items *TabItem<T>[]-{ value, label, disabled? }[]
variant'pill' | 'underline''pill'visual style — bordered pill buttons, or a bottom-border bar where the active tab gets a 2px white underline.
loopbooleantrueloop arrow-key focus past the ends.