SegmentedControl

iOS-style segmented toggle — radio behaviour, animated sliding indicator, full keyboard nav (←/→ to move, Enter/Space to select). Use it for view switches, filter buckets, small mode toggles.

Default · md
Full-width · sm

Usage

import { SegmentedControl } from '@bwo-ui/react';

const OPTIONS = [
  { value: 'list', label: 'List' },
  { value: 'grid', label: 'Grid' },
  { value: 'kanban', label: 'Kanban' },
] as const;

<SegmentedControl
  options={OPTIONS}
  value={view}
  onValueChange={setView}
/>

// Full-width
<SegmentedControl options={OPTIONS} value={view} onValueChange={setView} fullWidth />

Props

PropTypeDefaultDescription
optionsSegmentedOption<V>[]Array of { value, label, icon?, disabled? }.
valueVControlled value.
defaultValueVUncontrolled default.
onValueChange(value: V) => voidFires on selection change.
size'sm' | 'md' | 'lg''md'Height + font preset.
fullWidthbooleanfalseStretch each segment to equal share of the container.