Segmented Control
The Segmented Control provides a set of mutually exclusive options in a button-group layout.
Basic Usage
import { SegCtrl } from "@paramanu/forms-react"
export default function App() { return ( <SegCtrl> <button aria-pressed="true">Day</button> <button>Week</button> <button>Month</button> </SegCtrl> )}<div class="pm-seg-ctrl pm-seg-ctrl--md" role="radiogroup"> <button type="button" class="pm-seg-ctrl__item" aria-pressed="true">Day</button> <button type="button" class="pm-seg-ctrl__item">Week</button> <button type="button" class="pm-seg-ctrl__item">Month</button></div>Full Width
import { SegCtrl } from "@paramanu/forms-react"
export default function App() { return ( <SegCtrl fullWidth> <button aria-pressed="true">Tab 1</button> <button>Tab 2</button> </SegCtrl> )}<div class="pm-seg-ctrl pm-seg-ctrl--md pm-seg-ctrl--full-width" role="radiogroup"> <button type="button" class="pm-seg-ctrl__item" aria-pressed="true">Tab 1</button> <button type="button" class="pm-seg-ctrl__item">Tab 2</button></div>Accessibility
| Feature | Detail |
|---|---|
role="radiogroup" | Container uses radiogroup role |
aria-pressed | Active segment has aria-pressed="true" |
| Keyboard | Arrow keys navigate between segments |
Best Practices
- Use for 2-5 mutually exclusive options.
- Prefer segmented controls over tabs for filtering or view switching.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
size | "xs" | "sm" | "md" | "lg" | "md" | Control size |
fullWidth | boolean | false | Full-width layout |
CSS Classes
| Class | Description |
|---|---|
pm-seg-ctrl | Base class |
pm-seg-ctrl__item | Segment button |
pm-seg-ctrl--full-width | Full-width modifier |