Slider

A slider to select a value or range

A slider component built with Ark UI. Use the convenience API with defaultValue (array for single or range) or the compound API for custom layout and multiple thumbs.

import { Slider } from "@/components/ui/slider";

export default function Example() {
  return (
    <Slider defaultValue={[50]} min={0} max={100} label="Volume" />
  );
}

Installation

bash
liminal add slider

Usage

Pass defaultValue as an array (e.g. [50] for single value, [20, 80] for range), plus min, max, and optional step and label.

<Slider defaultValue={[30]} min={0} max={100} />

Examples

With label

<Slider defaultValue={[60]} min={0} max={100} label="Brightness" />

Range slider (compound API)

For a range (two thumbs), use the compound API with two SliderThumb components (index 0 and 1).

tsx
import {
  SliderRoot,
  SliderLabel,
  SliderControl,
  SliderTrack,
  SliderRange,
  SliderThumb,
} from "@/components/ui/slider";

export default function Example() {
  return (
    <SliderRoot defaultValue={[25, 75]} min={0} max={100}>
      <SliderLabel>Range</SliderLabel>
      <SliderControl>
        <SliderTrack>
          <SliderRange />
        </SliderTrack>
        <SliderThumb index={0} />
        <SliderThumb index={1} />
      </SliderControl>
    </SliderRoot>
  );
}

API

PropTypeDefaultDescription
defaultValuenumber[]-Initial value(s), e.g. [50] or [20, 80] for range.
valuenumber[]-Controlled value(s).
minnumber0Minimum value.
maxnumber100Maximum value.
stepnumber1Step increment.
labelReact.ReactNode-Accessible label (convenience API).
onValueChange(details: { value: number[] }) => void-Callback when value changes.