Composables
ComposableOriginal

Circular Slider

A radial slider component for selecting values along a circular path

The circular slider selects a numeric value by dragging a thumb around a ring. Use it for radial inputs like timers, volume or brightness knobs, temperature dials, and color or angle pickers.

Preview

Installation

Usage

Composition

Examples

With Value Display

Add CircularSliderValue to render the current value in the center.

75

Sizes

Set size on the root and strokeWidth or thumb size on the parts to scale each dimension independently.

60
60
60

Variants

Use variant to switch between a ring and a filled circle with a radial indicator.

70

Default

93

Filled

ValueDescription
defaultA ring track with a circular thumb. Default.
filledA filled circle with a radial indicator line.

Format Value

Pass formatValue to CircularSliderValue to append units or symbols to the displayed value.

72°F

Temperature

180°

Angle

65%

Percentage

With Markers

Add CircularSliderMarkers to draw evenly-spaced tick marks around the circle.

4h

Direction

Use direction to set which way the value progresses around the circle.

75

Clockwise (default)

75

Counterclockwise

ValueDescription
clockwiseValue increases clockwise. Default.
counterclockwiseValue increases counterclockwise.

Non-Continuous Mode

Set continuous={false} to show a gap at the bottom and stop the value from wrapping between max and min.

350°

Continuous (default)

270°

Non-continuous (has gap)

Custom Start Angle

Use startAngle to set where the value scale begins on the circle.

50

Start: 0° (top)

50

Start: 90° (right)

50

Start: 270° (left)

Accessibility

The slider renders a visually hidden native <input type="range"> that owns focus, value semantics, and form integration, so screen readers announce it as a slider. Set aria-label (or aria-labelledby) on CircularSliderRoot to name it, and pass aria-valuetext to announce a formatted value instead of the raw number.

Keyboard

When the slider is focused, the native range input handles arrow keys, Home, and End. Page Up and Page Down move by largeStep.

KeyAction
/ Increase by step.
/ Decrease by step.
Page UpIncrease by largeStep.
Page DownDecrease by largeStep.
Home / EndJump to min / max.

API Reference

The Circular Slider is a custom component built with SVG and follows the established patterns from Base UI components (using useRender and mergeProps).

Props

CircularSliderRoot

The root container that manages state and provides context to child components.

Prop

Form & Accessibility

These props are forwarded to an underlying native <input type="range"> for form integration and screen reader support.

Prop

CircularSliderTrack

The background circle or arc that shows the full range.

Prop

CircularSliderIndicator

The arc that shows the selected value range from min to current value.

Prop

CircularSliderThumb

The draggable handle on the circle that controls the value.

Prop

CircularSliderValue

Text display of the current value, typically shown in the center of the circle.

Prop

CircularSliderMarkers

Visual tick marks around the circle for better value indication.

Prop