BoM Daily / design

components

Segmented control

A single-select control built on Radix Toggle Group, in the iOS style. Segments sit in a muted track and the active one lifts into a raised pill. It always keeps one option selected, so a click on the active segment is ignored rather than clearing the choice. Great for switching list and grid views or compact filter modes on mobile.

Basic

With icons

Full width

Stretches to fill its container, with equal-width segments.

Sizes

Props

PropTypeDefaultDescription
options{ value, label, icon? }[]noneSegments to render.
valuestringnoneControlled selected value.
defaultValuestringnoneUncontrolled initial value. Falls back to the first option.
onValueChange(v: string) => voidnoneFires on selection. Never fires with an empty value.
size"sm" | "md" | "lg""md"Touch-first size. Every size keeps a 44px tap target.
fullWidthbooleanfalseStretch to fill the container width.