Form
slider
Same API as upstream: shadcn/ui docs
$
npx shadcn@latest add @preactcn/sliderBasic
Basic
SliderBasic
function SliderBasic() {
return (
<Example title="Basic">
<Slider defaultValue={[50]} max={100} step={1} />
</Example>
)
}Range
Range
SliderRange
function SliderRange() {
return (
<Example title="Range">
<Slider defaultValue={[25, 50]} max={100} step={5} />
</Example>
)
}Multiple Thumbs
Multiple Thumbs
SliderMultiple
function SliderMultiple() {
return (
<Example title="Multiple Thumbs">
<Slider defaultValue={[10, 20, 70]} max={100} step={10} />
</Example>
)
}Vertical
Vertical
SliderVertical
function SliderVertical() {
return (
<Example title="Vertical">
<div className="flex items-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>
</Example>
)
}Controlled
Controlled
0.3, 0.7
SliderControlled
function SliderControlled() {
const [value, setValue] = useState([0.3, 0.7])
return (
<Example title="Controlled">
<div className="grid w-full gap-3">
<div className="flex items-center justify-between gap-2">
<Label htmlFor="slider-demo-temperature">Temperature</Label>
<span className="text-sm text-muted-foreground">
{value.join(", ")}
</span>
</div>
<Slider
id="slider-demo-temperature"
value={value}
onValueChange={setValue}
min={0}
max={1}
step={0.1}
/>
</div>
</Example>
)
}Disabled
Disabled
SliderDisabled
function SliderDisabled() {
return (
<Example title="Disabled">
<Slider defaultValue={[50]} max={100} step={1} disabled />
</Example>
)
}Full example source
slider-example.tsx
import { useState } from "preact/hooks"
import {
Example,
ExampleWrapper,
} from "@/components/example"
import { Label } from "@/components/ui/label"
import { Slider } from "@/components/ui/slider"
export default function SliderExample() {
return (
<ExampleWrapper>
<SliderBasic />
<SliderRange />
<SliderMultiple />
<SliderVertical />
<SliderControlled />
<SliderDisabled />
</ExampleWrapper>
)
}
function SliderBasic() {
return (
<Example title="Basic">
<Slider defaultValue={[50]} max={100} step={1} />
</Example>
)
}
function SliderRange() {
return (
<Example title="Range">
<Slider defaultValue={[25, 50]} max={100} step={5} />
</Example>
)
}
function SliderMultiple() {
return (
<Example title="Multiple Thumbs">
<Slider defaultValue={[10, 20, 70]} max={100} step={10} />
</Example>
)
}
function SliderVertical() {
return (
<Example title="Vertical">
<div className="flex items-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>
</Example>
)
}
function SliderControlled() {
const [value, setValue] = useState([0.3, 0.7])
return (
<Example title="Controlled">
<div className="grid w-full gap-3">
<div className="flex items-center justify-between gap-2">
<Label htmlFor="slider-demo-temperature">Temperature</Label>
<span className="text-sm text-muted-foreground">
{value.join(", ")}
</span>
</div>
<Slider
id="slider-demo-temperature"
value={value}
onValueChange={setValue}
min={0}
max={1}
step={0.1}
/>
</div>
</Example>
)
}
function SliderDisabled() {
return (
<Example title="Disabled">
<Slider defaultValue={[50]} max={100} step={1} disabled />
</Example>
)
}