<script lang="ts">
import { Slider } from '@skeletonlabs/skeleton-svelte';
</script>
<Slider defaultValue={[50]}>
<Slider.Label>Label</Slider.Label>
<Slider.Control>
<Slider.Track>
<Slider.Range />
</Slider.Track>
<Slider.Thumb index={0}>
<Slider.HiddenInput />
</Slider.Thumb>
</Slider.Control>
<Slider.MarkerGroup>
<Slider.Marker value={25} />
<Slider.Marker value={50} />
<Slider.Marker value={75} />
</Slider.MarkerGroup>
</Slider>
import { Slider } from '@skeletonlabs/skeleton-react';
export default function Default() {
return (
<Slider defaultValue={[50]}>
<Slider.Label>Label</Slider.Label>
<Slider.Control>
<Slider.Track>
<Slider.Range />
</Slider.Track>
<Slider.Thumb index={0}>
<Slider.HiddenInput />
</Slider.Thumb>
</Slider.Control>
<Slider.MarkerGroup>
<Slider.Marker value={25} />
<Slider.Marker value={50} />
<Slider.Marker value={75} />
</Slider.MarkerGroup>
</Slider>
);
}
Color
<script lang="ts">
import { Slider } from '@skeletonlabs/skeleton-svelte';
</script>
<div class="space-y-8 w-full">
<Slider defaultValue={[50]}>
<Slider.Control>
<Slider.Track>
<Slider.Range class="bg-primary-500" />
</Slider.Track>
<Slider.Thumb index={0}>
<Slider.HiddenInput />
</Slider.Thumb>
</Slider.Control>
</Slider>
<Slider defaultValue={[50]}>
<Slider.Control>
<Slider.Track>
<Slider.Range class="bg-secondary-500" />
</Slider.Track>
<Slider.Thumb index={0}>
<Slider.HiddenInput />
</Slider.Thumb>
</Slider.Control>
</Slider>
<Slider defaultValue={[50]}>
<Slider.Control>
<Slider.Track>
<Slider.Range class="bg-tertiary-500" />
</Slider.Track>
<Slider.Thumb index={0}>
<Slider.HiddenInput />
</Slider.Thumb>
</Slider.Control>
</Slider>
</div>
import { Slider } from '@skeletonlabs/skeleton-react';
export default function Color() {
return (
<div className="space-y-8 w-full">
<Slider defaultValue={[50]}>
<Slider.Control>
<Slider.Track>
<Slider.Range className="bg-primary-500" />
</Slider.Track>
<Slider.Thumb index={0}>
<Slider.HiddenInput />
</Slider.Thumb>
</Slider.Control>
</Slider>
<Slider defaultValue={[50]}>
<Slider.Control>
<Slider.Track>
<Slider.Range className="bg-secondary-500" />
</Slider.Track>
<Slider.Thumb index={0}>
<Slider.HiddenInput />
</Slider.Thumb>
</Slider.Control>
</Slider>
<Slider defaultValue={[50]}>
<Slider.Control>
<Slider.Track>
<Slider.Range className="bg-tertiary-500" />
</Slider.Track>
<Slider.Thumb index={0}>
<Slider.HiddenInput />
</Slider.Thumb>
</Slider.Control>
</Slider>
</div>
);
}
Multiple Thumbs
<script lang="ts">
import { Slider } from '@skeletonlabs/skeleton-svelte';
</script>
<Slider defaultValue={[25, 75]}>
<Slider.Control>
<Slider.Track>
<Slider.Range />
</Slider.Track>
<Slider.Thumb index={0}>
<Slider.HiddenInput />
</Slider.Thumb>
<Slider.Thumb index={1}>
<Slider.HiddenInput />
</Slider.Thumb>
</Slider.Control>
</Slider>
import { Slider } from '@skeletonlabs/skeleton-react';
export default function MultipleThumbs() {
return (
<Slider defaultValue={[25, 75]}>
<Slider.Control>
<Slider.Track>
<Slider.Range />
</Slider.Track>
<Slider.Thumb index={0}>
<Slider.HiddenInput />
</Slider.Thumb>
<Slider.Thumb index={1}>
<Slider.HiddenInput />
</Slider.Thumb>
</Slider.Control>
</Slider>
);
}
API Reference
Root
| Property | Default | Type |
|---|---|---|
ids | - | Partial<{ root: string; thumb: (index: number) => string; hiddenInput: (index: number) => string; control: string; track: string; range: string; label: string; valueText: string; marker: (index: number) => string; }> | undefined The ids of the elements in the slider. Useful for composition. |
aria-label | - | string[] | undefinedThe aria-label of each slider thumb. Useful for providing an accessible name to the slider |
aria-labelledby | - | string[] | undefinedThe `id` of the elements that labels each slider thumb. Useful for providing an accessible name to the slider |
name | - | string | undefinedThe name associated with each slider thumb (when used in a form) |
form | - | string | undefinedThe associate form of the underlying input element. |
value | - | number[] | undefinedThe controlled value of the slider |
defaultValue | - | number[] | undefinedThe initial value of the slider when rendered. Use when you don't need to control the value of the slider. |
disabled | - | boolean | undefinedWhether the slider is disabled |
readOnly | - | boolean | undefinedWhether the slider is read-only |
invalid | - | boolean | undefinedWhether the slider is invalid |
onValueChange | - | ((details: ValueChangeDetails) => void) | undefinedFunction invoked when the value of the slider changes |
onValueChangeEnd | - | ((details: ValueChangeDetails) => void) | undefinedFunction invoked when the slider value change is done |
onFocusChange | - | ((details: FocusChangeDetails) => void) | undefinedFunction invoked when the slider's focused index changes |
getAriaValueText | - | ((details: ValueTextDetails) => string) | undefinedFunction that returns a human readable value for the slider thumb |
min | 0 | number | undefinedThe minimum value of the slider |
max | 100 | number | undefinedThe maximum value of the slider |
step | 1 | number | undefinedThe step value of the slider |
minStepsBetweenThumbs | 0 | number | undefinedThe minimum permitted steps between multiple thumbs. `minStepsBetweenThumbs` * `step` should reflect the gap between the thumbs. - `step: 1` and `minStepsBetweenThumbs: 10` => gap is `10` - `step: 10` and `minStepsBetweenThumbs: 2` => gap is `20` |
orientation | "horizontal" | "vertical" | "horizontal" | undefinedThe orientation of the slider |
origin | "start" | "start" | "center" | "end" | undefinedThe origin of the slider range. The track is filled from the origin to the thumb for single values. - "start": Useful when the value represents an absolute value - "center": Useful when the value represents an offset (relative) - "end": Useful when the value represents an offset from the end |
thumbAlignment | "contain" | "center" | "contain" | undefinedThe alignment of the slider thumb relative to the track - `center`: the thumb will extend beyond the bounds of the slider track. - `contain`: the thumb will be contained within the bounds of the track. |
thumbSize | - | { width: number; height: number; } | undefined The slider thumbs dimensions |
dir | "ltr" | "ltr" | "rtl" | undefinedThe document's text/writing direction. |
getRootNode | - | (() => ShadowRoot | Node | Document) | undefinedA root node to correctly resolve document in custom environments. E.x.: Iframes, Electron. |
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
RootProvider
| Property | Default | Type |
|---|---|---|
value | - | SliderApi<PropTypes> |
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
RootContext
| Property | Default | Type |
|---|---|---|
children | - | (slider: SliderApi<PropTypes>) => ReactNode |
Label
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"label">) => Element) | undefinedRender the element yourself |
ValueText
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"output">) => Element) | undefinedRender the element yourself |
Control
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
Track
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
Range
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
Thumb
| Property | Default | Type |
|---|---|---|
index | - | number |
name | - | string | undefined |
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
HiddenInput
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"input">) => Element) | undefinedRender the element yourself |
MarkerGroup
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
Marker
| Property | Default | Type |
|---|---|---|
value | - | number |
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |