Segmented Control

A row of connected buttons that lets users switch between a small set of views or modes. Only one segment can be active at a time, controlled by value and onChange.

1<SegmentedControl value={view} onChange={setView}>
2  <SegmentedControl.Item value="list">List</SegmentedControl.Item>
3  <SegmentedControl.Item value="grid">Grid</SegmentedControl.Item>
4  <SegmentedControl.Item value="board">Board</SegmentedControl.Item>
5</SegmentedControl>
6

Usage

1import { SegmentedControl } from "atlas";
2
3<SegmentedControl value={view} onChange={setView}>
4  <SegmentedControl.Item value="list">List</SegmentedControl.Item>
5  <SegmentedControl.Item value="grid">Grid</SegmentedControl.Item>
6</SegmentedControl>
7

Examples

Default
The default SegmentedControl renders a row of connected segments with one active at a time.
1<SegmentedControl value={view} onChange={setView}>
2  <SegmentedControl.Item value="list">List</SegmentedControl.Item>
3  <SegmentedControl.Item value="grid">Grid</SegmentedControl.Item>
4  <SegmentedControl.Item value="board">Board</SegmentedControl.Item>
5</SegmentedControl>
6
Two options
Works just as well with two segments as with three or more. Each segment sizes to its content.
1<SegmentedControl value={size} onChange={setSize}>
2  <SegmentedControl.Item value="sm">Small</SegmentedControl.Item>
3  <SegmentedControl.Item value="md">Medium</SegmentedControl.Item>
4</SegmentedControl>
5
With icons
Pass an icon prop to render an icon before the label.
1<SegmentedControl value={mode} onChange={setMode}>
2  <SegmentedControl.Item value="preview" icon={<IconLayoutWindow />}>Preview</SegmentedControl.Item>
3  <SegmentedControl.Item value="code" icon={<IconCode />}>Code</SegmentedControl.Item>
4</SegmentedControl>
5
Disabled item
Set disabled on individual items to prevent specific segments from being selected.
1<SegmentedControl value={view} onChange={setView}>
2  <SegmentedControl.Item value="list">List</SegmentedControl.Item>
3  <SegmentedControl.Item value="grid">Grid</SegmentedControl.Item>
4  <SegmentedControl.Item value="board" disabled>Board</SegmentedControl.Item>
5</SegmentedControl>
6

API Reference

PropTypeDefault
valuestring-
onChange(value: string) => void-
disabledbooleanfalse