Github

Slider

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

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

export function SliderDemo() {
	return (
		<Slider
			defaultValue={[75]}
			max={100}
			step={1}
			className="mx-auto w-full max-w-xs"
		/>
	);
}

Installation

pnpm dlx shadcn@latest add https://herocn.dev/r/slider.json

Usage

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

Examples

Range

Use an array with two values for a range slider.

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

export function SliderRange() {
	return (
		<Slider
			defaultValue={[25, 75]}
			max={100}
			step={5}
			className="mx-auto w-full max-w-xs"
		/>
	);
}

Multiple Thumbs

Use an array with multiple values for multiple thumbs.

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

export function SliderMultiple() {
	return (
		<Slider
			defaultValue={[10, 40, 70]}
			max={100}
			step={10}
			className="mx-auto w-full max-w-xs"
		/>
	);
}

Vertical

Use orientation="vertical" for a vertical slider.

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

export function SliderVertical() {
	return (
		<div className="mx-auto flex w-full max-w-xs items-center justify-center gap-6">
			<Slider
				defaultValue={[50]}
				max={100}
				step={1}
				orientation="vertical"
				className="h-40"
			/>
			<Slider
				defaultValue={[25]}
				max={100}
				step={1}
				orientation="vertical"
				className="h-40"
			/>
		</div>
	);
}

Controlled

0.3, 0.7
"use client";

import * as React from "react";

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

export function SliderControlled() {
	const [value, setValue] = React.useState([0.3, 0.7]);

	return (
		<div className="mx-auto grid w-full max-w-xs gap-3">
			<div className="flex items-center justify-between gap-2">
				<Label htmlFor="slider-controlled-temperature">Temperature</Label>
				<span className="text-muted-foreground text-sm">
					{value.join(", ")}
				</span>
			</div>
			<Slider
				id="slider-controlled-temperature"
				value={value}
				onValueChange={(val) => setValue(val as number[])}
				min={0}
				max={1}
				step={0.1}
			/>
		</div>
	);
}

Disabled

Use the disabled prop to disable the slider.

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

export function SliderDisabled() {
	return (
		<Slider
			defaultValue={[50]}
			max={100}
			step={1}
			disabled
			className="mx-auto w-full max-w-xs"
		/>
	);
}

RTL

"use client";

import {
	type Translations,
	useTranslation,
} from "@/components/language-selector";
import { Slider } from "@/components/ui/slider";

const translations: Translations = {
	en: {
		dir: "ltr",
		values: {},
	},
	ar: {
		dir: "rtl",
		values: {},
	},
	he: {
		dir: "rtl",
		values: {},
	},
};

export function SliderRtl() {
	const { dir } = useTranslation(translations, "ar");

	return (
		<Slider
			defaultValue={[75]}
			max={100}
			step={1}
			className="mx-auto w-full max-w-xs"
			dir={dir}
		/>
	);
}

API Reference

Slider

PropTypeDefault

See the Base UI Slider documentation for the full API reference.