Slider

An easily stylable range input.

API reference

Import the component and assemble its parts:

Anatomy
import { Slider } from '@base-ui-components/react/slider';

<Slider.Root>
  <Slider.Value />
  <Slider.Control>
    <Slider.Track>
      <Slider.Indicator />
      <Slider.Thumb />
    </Slider.Track>
  </Slider.Control>
</Slider.Root>

Root

Groups all parts of the slider. Renders a <div> element.

PropTypeDefault
name

string

undefined

defaultValue

unknown

undefined

value

unknown

undefined

onValueChange

((value: any, event: Event, activeThumbIndex: number) => void)

undefined

onValueCommitted

((value: any, event: Event) => void)

undefined

ref

RefObject

undefined

tabIndex

number

undefined

step

number

1

largeStep

number

10

minStepsBetweenValues

number

0

min

number

0

max

number

100

format

NumberFormatOptions

undefined

disabled

boolean

false

orientation

"horizontal" | "vertical"

'horizontal'

className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused

Value

Displays the current value of the slider as text. Renders an <output> element.

PropTypeDefault
aria-live

"off" | "assertive" | "polite"

'off'

children

| null
| ((formattedValues: string[], values: number[]) => ReactNode)

undefined

className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused

Control

The clickable, interactive part of the slider. Renders a <div> element.

PropTypeDefault
className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused

Track

Contains the slider indicator and represents the entire range of the slider. Renders a <div> element.

PropTypeDefault
className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused

Indicator

Visualizes the current value of the slider. Renders a <div> element.

PropTypeDefault
className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused

Thumb

The draggable part of the the slider at the tip of the indicator. Renders a <div> element.

PropTypeDefault
aria-label

string

undefined

aria-labelledby

string

undefined

name

string

undefined

active

number

undefined

aria-valuetext

string

undefined

getAriaLabel

null | ((index: number) => string)

undefined

getAriaValueText

| null
| ((formattedValue: string, value: number, index: number) => string)

undefined

handleInputChange

((valueInput: number, index: number, event: KeyboardEvent | ChangeEvent) => void)

undefined

inputId

string

undefined

onBlur

FocusEventHandler<Element>

undefined

onFocus

FocusEventHandler<Element>

undefined

onKeyDown

KeyboardEventHandler<Element>

undefined

onPointerLeave

PointerEventHandler<Element>

undefined

onPointerOver

PointerEventHandler<Element>

undefined

percentageValues

number[]

undefined

tabIndex

null | number

null

values

number[]

undefined

step

number

1

largeStep

number

10

minStepsBetweenValues

number

undefined

min

number

undefined

max

number

undefined

format

null | NumberFormatOptions

null

disabled

boolean

undefined

orientation

"horizontal" | "vertical"

'horizontal'

id

string

undefined

className

string | ((state: State) => string)

undefined

render

| ((props: DetailedHTMLProps<HTMLAttributes, HTMLDivElement>, inputProps: DetailedHTMLProps<InputHTMLAttributes, HTMLInputElement>, state: State) => ReactElement)
| { ref }

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused