Slider
A slider input for selecting numeric values, supporting single and range modes.
bun x bosia@latest add sliderA slider built on pointer events and ARIA role="slider", with single-thumb and range (two-thumb) modes, horizontal and vertical orientations.
Preview
Value: 50
Range: 25 – 75
Step: 25
Disabled
Vertical
Props
| Prop | Type | Default |
|---|---|---|
type |
"single" | "range" |
"single" |
value |
number | [number, number] |
0 or [0,0] |
min |
number |
0 |
max |
number |
100 |
step |
number |
1 |
orientation |
"horizontal" | "vertical" |
"horizontal" |
disabled |
boolean |
false |
name |
string |
— |
id |
string |
— |
class |
string |
"" |
Usage
<script lang="ts">
import { Slider } from "$lib/components/ui/slider";
let value = $state(50);
</script>
<Slider bind:value /><p>Value: {value}</p>Range
Use type="range" for two thumbs. The value is a [number, number] tuple.
<script lang="ts">
import { Slider } from "$lib/components/ui/slider";
let range = $state<[number, number]>([20, 80]);
</script>
<Slider type="range" bind:value={range} /><p>From {range[0]} to {range[1]}</p>Vertical
<div class="h-40">
<Slider orientation="vertical" value={40} />
</div>Custom Step
<Slider step={10} value={50} />Disabled
<Slider disabled value={60} />Form Usage
When a name prop is provided, hidden <input> elements are rendered for native form submission. Range mode submits two values with name[].
<form method="POST">
<Slider name="volume" value={75} />
<button type="submit">Save</button>
</form>