Skip to content
  • System
  • Light
  • Dark
  • High contrast

Slider

import { Slider } from '@eekodigital/raster';

const [value, setValue] = useState([50]);

<Slider.Root value={value} onValueChange={setValue} aria-label="Volume">
  <Slider.Track />
  <Slider.Thumb aria-label="Volume" />
</Slider.Root>

Use two thumbs for selecting a range between a minimum and maximum.

const [value, setValue] = useState([20, 80]);

<Slider.Root value={value} onValueChange={setValue} aria-label="Price range">
  <Slider.Track />
  <Slider.Thumb aria-label="Minimum price" />
  <Slider.Thumb aria-label="Maximum price" />
</Slider.Root>

The step prop snaps the thumb to discrete intervals.

<Slider.Root value={value} onValueChange={setValue} min={0} max={100} step={10} aria-label="Steps">
  <Slider.Track />
  <Slider.Thumb aria-label="Steps" />
</Slider.Root>
<Slider.Root value={[40]} disabled aria-label="Volume">
  <Slider.Track />
  <Slider.Thumb aria-label="Volume" />
</Slider.Root>
PropTypeDefaultDescription
valuenumber[]Controlled value(s).
defaultValuenumber[]Uncontrolled initial value(s).
onValueChange(value: number[]) => voidCalled when value changes.
minnumber0Minimum value.
maxnumber100Maximum value.
stepnumber1Step interval for snapping.
disabledbooleanfalsePrevents interaction.
orientation”horizontal” | “vertical""horizontal”Slider orientation.
classNamestringAdditional CSS classes.