Skip to content

Segmented

<ax-segmented> is a single-select control rendered as a connected row of segments. Unlike ToggleGroup, it is always single-select, data-driven via an options array, and follows the WAI-ARIA radiogroup pattern: one segment is always tabbable, and arrow keys move and select, skipping disabled segments.

Use Segmented for a small, mutually-exclusive choice with an always-selected value (view switchers, ranges). Use ToggleGroup when you project custom toggle children or need multi-select.

import { AxSegmentedComponent, type SegmentedOption } from '@axisui-ng/buttons';
<ax-segmented
[options]="[
{ label: 'Day', value: 'd' },
{ label: 'Week', value: 'w' },
{ label: 'Month', value: 'm' },
]"
[(value)]="range"
ariaLabel="Date range"
/>
<!-- with a disabled segment -->
<ax-segmented
[options]="[
{ label: 'Left', value: 'l' },
{ label: 'Center', value: 'c', disabled: true },
{ label: 'Right', value: 'r' },
]"
[(value)]="align"
ariaLabel="Alignment"
/>
OptionValuesDefaultNotes
size'sm' | 'md' | 'lg''md'Track text size and segment padding.
<ax-segmented
size="sm"
[options]="[{ label: 'Day', value: 'd' }, { label: 'Week', value: 'w' }]"
[(value)]="range"
ariaLabel="Date range"
/>
InputTypeDefaultNotes
optionsreadonly SegmentedOption[][]{ label: string; value: string; disabled?: boolean }.
valuemodel<string | null>nullTwo-way selected value.
sizeSegmentedSize'md'Padding + text size.
disabledbooleanfalseDisables the whole control.
ariaLabelstring | nullnullRequired for a11y — labels the radiogroup.
KeyAction
/ Select next enabled segment (wraps)
/ Select previous enabled segment (wraps)
Home / EndSelect first / last enabled segment
  • Host is role="radiogroup" (label it with ariaLabel).
  • Each segment is a <button role="radio"> with aria-checked.
  • Roving tabindex: only the selected segment (or the first enabled one) is in the tab order.
  • Disabled segments are skipped by keyboard navigation and are not focusable.

Interactive examples live in Storybook under Buttons / Segmented. Run pnpm storybook to explore them.