UnreviewedOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptionalonOptional UnreviewedkeyReact/Preact reconciliation key when rendered inside a list.
Optional UnreviewedidHTML id attribute.
Optional UnreviewedclassHTML class attribute (standard DOM).
Optional UnreviewedclassReact/Preact-style class name. Alias for class.
Optional UnreviewedstyleInline styles applied to the element.
OptionalchildrenOptional UnreviewedslotAssigns the element to a named <slot> (e.g. slot="title").
Optional UnreviewedtabTab order. Set to 0 to make the element keyboard-focusable.
Optional UnreviewedstateControlled selected value (the active tab's value). Present → controlled: the
element reflects changes to this attribute and a pick only dispatches
statechange. Absent → uncontrolled (seed with default-state).
Optional Unrevieweddefault-Uncontrolled initial selected value — read once on connect.
Optional UnreviewedpriorityVisual priority. primary (default) is the raised pill on a recessed track; secondary
keeps that sizing but drops the track (selected = subtle active background fill, no
border); tertiary is a bottom-underline under the selected tab only (no track, no rest
line). tone tints secondary + tertiary; primary stays neutral.
Optional UnreviewedtoneTone applied to the selected indicator/label, or any literal CSS color for a
one-off custom tone (derived in oklch). 'neutral' is the default.
Optional UnreviewedsizeSize variant. small=24px, medium (default)=28px, large=32px tall — matching Button's scale (the label leading runs a touch tighter, offset by 1px more block padding per side).
Optional UnreviewedorientationLayout + arrow-key axis. 'horizontal' (default) ellipsizes labels when tabs
overflow (scrolling is opt-in via CSS); 'vertical' stacks them.
Optional UnreviewedfillMake horizontal tabs share the available inline space equally. Presence-based
('' on, omit off).
Optional UnreviewednoslideDisable the sliding indicator. By default the selected-tab indicator is a single
rectangle that animates between tabs via CSS anchor positioning; with noslide the
highlight is painted on each tab and snaps with no movement (also the automatic
fallback where anchor positioning isn't supported). Presence-based ('' on, omit off).
Optional UnrevieweddisabledDisable the whole strip. Presence-based ('' on, omit off).
Optional UnreviewedroundFully-round tabs + sliding indicator (via --tab-radius: 999px) and the primary
track well. A length value (round="10px") applies to the top-level track well
only (pills + indicator stay full). Presence-based for the boolean form.
Optional UnreviewedonstatechangeFires whenever the active tab changes. detail carries { next, prev } (values;
null = none). Cancelable: a synchronous preventDefault() vetoes the pick in
uncontrolled mode. All-lowercase to bind across both renderers (like
<a-radio-group>).
Optional UnreviewedonchangeNative change, fired after a selection applies (post-apply counterpart to
onstatechange). Lowercase so both renderers bind the native event.
Optional UnreviewedonfocusinStrip focus enter / leave — wired from the bubbling focusin / focusout (focus
lands on a tab, not the tablist). The Tabs wrapper maps its onFocus/onBlur.
OptionalonfocusoutOptional UnreviewedroleARIA — set by the Tabs wrapper (the element never touches these).
Optionalaria-Optionalaria-Optionalaria-
Attributes for the
<a-tabs>custom element — the tablist + single-select coordinator. No shadow DOM:<a-tab>children are plain light-DOM, laid out bya-tabs.css, so the strip is restylable with ordinary CSS and usable hand-assembled. Unlike<a-radio-group>it is NOT form-associated (a tablist submits nothing), and the panels live outside it (siblings theTabswrapper shows/hides). The element coordinates off-DOM only — selection via each tab'sselectedproperty, focus viainternals.ariaActiveDescendantElement, scroll viascrollIntoView. Rovingtabindex(the JSX path) is rendered by theTabswrapper, not the element. For the typed JSX wrapper useTabsfrom@antadesign/anta.