Slider
Pick a number or a range by dragging or with the keyboard.
- Exact values people know: use Input type="number".
Install
Terminal
pnpm dlx shadcn@latest add @acme/sliderOr import from the package: import { Slider } from '@acme/react'
Examples
Basic
Volume
Price range (USD)
slider-basic.tsx
'use client'
import { Slider } from '@/components/ui/slider'
export default function SliderBasic() {
return (
<div className="flex w-full max-w-sm flex-col gap-6">
<Slider label="Volume" defaultValue={40} />
<Slider label="Price range (USD)" defaultValue={[20, 80]} step={5} />
</div>
)
}Props
| Prop | Type | Default | Description |
|---|---|---|---|
| label (required) | ReactNode | — | Visible label; names the slider. |
| value / defaultValue | number | number[] | — | One value, or two for a range. |
| min / max / step | number | 0 / 100 / 1 | Range and increment. |
| showValue | boolean | true | Show the current value. |
Accessibility
| Key | Action |
|---|---|
| Arrow keys | Change by one step |
| Page Up / Down | Change by a larger step |
| Home / End | Minimum / maximum |
- Role
- slider
- You provide
- label (enforced by TypeScript).
- Built in
- Keyboard works without dragging (WCAG 2.5.7).
- Track outline meets 3:1; the thumb hit area is at least 24px.
- WCAG 2.2 criteria
- 1.4.11, 2.1.1, 2.5.7, 2.5.8, 4.1.2
Don’t
- Use a slider for values that need precision.
Tokens
- color.primary
- color.muted
- color.input
- color.ring