ButtonGroup
Atom
Segmented controls, split buttons, attached groups.
Playground
Every control sets a real prop of ButtonGroupProps. The JSX below updates as you go.
Web
iOS
Android
JSX · ButtonGroupProps
Variants
9 examples from src/atoms/button-group/button-group.md, each rendered live from its own JSX.
Sizes
States
Hover, focus and press are pinned so they can be compared side by side; the rest are real props.
Anatomy
1
Track
2
Segment
3
Active thumb
Dimmed parts appear only in some states or variants.
Props
23 props on ButtonGroupProps, grouped as they are declared in source. Required props are marked *.
MeasureProps · width steps xxxs 192 · xxs 256 · xs 320 · sm 384 · md 448 · lg 512 · xl 576 · xxl 672 · xxxl 768 · wide 896 · wider 1024 · widest 1152 · page 1280, plus start to pin to the leading edge.
Accessibility and keyboard
Keyboard
Tab
Enters the group on the checked option
ArrowDown
ArrowRight
Checks the next option
ArrowUp
ArrowLeft
Checks the previous option
Space
Checks the focused option
Semantics
Roles
button
menu
menuitem
tab
tablist
States
disabled
expanded
selected
ARIA on web
aria-disabled
aria-expanded
aria-hidden
aria-label
aria-selected
Below the platform minimum, the touch area grows to 44 pt on iOS and 48 dp on Android without moving the layout.
Platform skins
The playground's props on each platform: same tree, native shapes, type and touch sizes.
Usage
On the web the segmented control is the v4 hand-off's: the options sit in a rounded track on the raised fill, and the selected one rides a flat card thumb with a small shadow, the rest in the muted ink. It is 30, 36 or 44 px tall at the small, default and large sizes. The split button is the green call-to-action pill with its chevron half, and the stepper and the spaced peers are hairline pills the height of a Button beside them.
Pass rounded for a capsule segmented track with equal cells and one sliding selection thumb. The small capsule is 32 px tall, as in the docs appearance picker. Its spring transition follows Reduce Motion. On iOS and Android the groups keep their platform shapes (the iOS segmented control, the Material 3 segmented button) in the theme's colours.
All four kinds follow the theme's surface mode. Toggle Liquid Glass in the docs, or use <ThemeProvider glass> in an app: segmented groups paint a glass selection puck, in the segment's own corners, on the selected segment, a split group is its call to action's brand-tinted glass (the action colour under the material, as a primary Button), a stepper shares a glass capsule, and spaced peers get individual glass surfaces. Every kind keeps its solid size under glass: the material covers the track or cell's whole footprint and a hairline border gives way to the material's edge, so switching the surface mode never moves the page. Solid mode keeps each platform's existing skin. The material uses native Liquid Glass on supported iOS versions, the native blur or tint fallback on Android and older iOS, and the hand-off's frost in the browser. Reduce Transparency and Increase Contrast use the shared material's opaque fallbacks.
Tokens
Read from the playground render. Values follow the scheme and the ion hue.
--fd
--ft
--ln
--sf
--sf3
--sh-sm
--tx
--tx2