DialGroup
A dial group is a container for multiple dial components, providing semantic grouping for related rotary controls. Dial groups are used when several dials need to be presented and operated together, such as audio mixing controls or multi-parameter adjustments.
This headless component uses a <div> element with role="group" and an aria-label to provide accessible grouping semantics for the contained dial components.
Implementation Notes
- Uses
<div>element withrole="group"to semantically group dials aria-labeldescribes the group purpose- Renders child dial components in source order
- Consumer controls layout and spacing via CSS
Props
label: string (required) -- accessible label for the dial groupchildren: slot -- dial components...restProps: Any additional HTML attributes
Usage
Audio mixer with volume, bass, and treble controls:
<DialGroup label="Audio controls">
<Dial label="Volume" value={volume} min={0} max={100} />
<Dial label="Bass" value={bass} min={0} max={100} />
<Dial label="Treble" value={treble} min={0} max={100} />
</DialGroup>
HVAC control panel:
<DialGroup label="Climate controls">
<Dial label="Temperature" value={temperature} min={16} max={30} step={0.5} />
<Dial label="Fan speed" value={fanSpeed} min={1} max={5} />
</DialGroup>
Keyboard Interactions
- None at the group level -- individual dials handle their own keyboard interactions
ARIA
role="group"-- semantically groups the contained dialsaria-label-- describes the purpose of the group
When to Use
- Use to group multiple dial controls together, such as an audio mixer or multi-parameter control panel.
- Use when multiple dials share a common purpose and should be perceived as a group by assistive technology.
- Use for equalizer interfaces, multi-channel audio controls, or multi-axis configuration panels.
When Not to Use
- Do not use for a single dial -- render Dial directly without a group wrapper.
- Do not use for linear slider groups -- use multiple Slider components instead.
Headless
This component provides role="group" with aria-label for accessible grouping, with zero visual styling. The consumer is responsible for all CSS including layout direction, spacing, alignment, and responsive behavior.
Styles
The consumer provides all CSS styling. The component renders with a .dial-group class for targeting. No default styles are included -- this is a fully headless component.
Testing
- Verify the component renders a
<div>element with classdial-group - Verify
role="group"is present - Verify
aria-labelis applied - Verify child dial components are rendered
- Verify pass-through attributes are applied
Advice
- Designers: Arrange dials in a logical order that reflects their relationship. Use consistent sizing and spacing within the group.
- Developers: Always provide a descriptive
labelprop that conveys the group's purpose to screen readers.
Composition
DialGroup is a container for Dial components.
Related components
dial— a rotary dial control for selecting a valueslider— a draggable control for selecting a value along a track