‮Skip to content‬
uiify

Slider

‮Slider for choosing one value or a range between two bounds.‬

‮Browsers‬
Chrome 123+Firefox 121+Safari 17.5+
‮Tier‬
0
‮Bundle compressed‬
465 B
‮Forced layout budget‬
0 ms
‮Axe budget‬
0
‮SSR compatible‬
‮Yes‬
‮Published contract‬
‮Test harness‬

‮Playground‬

Slider

Default slider

Controlled slider

Marked slider

Range slider

Vertical slider

Disabled slider

‮API‬

Slider

‮Prop‬‮Type‬‮Default‬‮Description‬
valuenumber—‮Current value, making the slider controlled.‬
defaultValuenumber—‮Starting value for the uncontrolled slider, which the native range input then owns.‬
onValueChange(value: number) => void—‮Called with the new number whenever the slider moves.‬
minnumber0‮Lowest selectable value.‬
maxnumber100‮Highest selectable value.‬
stepnumber1‮Increment between selectable values.‬
disabledbooleanfalse‮Disables the native input and sets the data-disabled attribute.‬
renderReactElement | ((props, state) => ReactElement)—‮Replace the rendered element while keeping behavior and accessibility wiring.‬

SliderClient

‮Prop‬‮Type‬‮Default‬‮Description‬
valuenumber | readonly [number, number]—‮Controlled value; a tuple renders a lower and upper thumb.‬
defaultValuenumber | readonly [number, number]—‮Initial value for the native range input or two-thumb range.‬
onValueChange(value: number | readonly [number, number]) => void—‮Called when the selected value or ordered range changes.‬
minnumber0‮Lowest selectable value.‬
maxnumber100‮Highest selectable value.‬
stepnumber | null1‮Numeric step keeps native stepping before hydration; null restricts values to min, max, and marks after hydration.‬
marksreadonly { value: number; label?: ReactNode }[]—‮Tick labels and snap stops when step is null.‬
orientation"horizontal" | "vertical""horizontal"‮Layout direction for the control and its marks.‬
thumbLabelsreadonly [string, string]—‮Accessible names for the lower and upper range thumbs.‬
disabledbooleanfalse‮Disables all native range inputs.‬
renderReactElement | ((props, state) => ReactElement)—‮Replace the rendered element while keeping behavior and accessibility wiring.‬

‮Keyboard‬

‮Key‬‮Action‬
Arrow keys‮Adjust the focused native range input by one step or stop‬
Home / End‮Move the focused thumb to the minimum or maximum‬
Tab‮Move between the lower and upper range thumbs‬

‮Accessibility‬

‮Slider renders a native range input that works before hydration and with JavaScript disabled. SliderClient also server-renders native range inputs, then controls them after hydration for range values, labeled marks, and nonuniform snapping. Numeric step keeps native stepping before hydration; step={null} mark snapping starts after hydration. Give a single slider an aria-label or aria-labelledby; give both range thumbs thumbLabels.‬

‮Styling hooks‬

data-uiify-sliderdata-uiify-slider-clientdata-part="root"data-part="track"data-part="range"data-part="mark"data-part="thumb"data-orientationdata-disableddata-enhanced--uiify-slider-start--uiify-slider-end--uiify-slider-position