Embossed UI

Search documentation

Search for a page or component.

Slider

An input where the user selects a value from within a given range.

40%
"use client"

import * as React from "react"

import { Label } from "@/components/ui/label"
import { Slider } from "@/components/ui/slider"

export function SliderDemo() {
  const [volume, setVolume] = React.useState(40)

  return (
    <div className="flex w-full max-w-xs flex-col gap-3">
      <div className="flex items-center justify-between">
        <Label>Volume</Label>
        <span className="text-sm text-muted-foreground tabular-nums">
          {volume}%
        </span>
      </div>
      <Slider
        aria-label="Volume"
        value={volume}
        onValueChange={(next) => setVolume(next as number)}
      />
    </div>
  )
}

Installation

pnpm dlx shadcn@latest add https://ui.ikramhasan.com/r/slider.json

Usage

import { Slider } from "@/components/ui/slider"
<Slider defaultValue={[33]} max={100} step={1} />

Examples

Range and steps

"use client"

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

export function SliderRangeAndSteps() {
  return (
    <Slider
      aria-label="Price range"
      defaultValue={[20, 80]}
      step={10}
      className="max-w-xs"
    />
  )
}

Vertical

"use client"

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

export function SliderVertical() {
  return (
    <div className="flex h-40 items-center gap-6">
      <Slider aria-label="Bass" defaultValue={60} orientation="vertical" />
      <Slider
        aria-label="Treble"
        defaultValue={[25, 75]}
        orientation="vertical"
      />
    </div>
  )
}

Disabled

"use client"

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

export function SliderDisabled() {
  return (
    <Slider
      aria-label="Brightness"
      defaultValue={50}
      disabled
      className="max-w-xs"
    />
  )
}

API Reference

Slider is built on the Base UI Slider primitive. See the Base UI documentation for every prop.