Skip to Content

Slider

Interactive sliders for selecting numeric values or ranges by dragging.

Import

import { Slider, RangeSlider } from "@raydenui/ui";

Usage

Basic Slider

0%
<Slider />

Controlled Slider

const [value, setValue] = useState(50); <Slider value={value} onChange={setValue} />

Sizes

0%
0%
0%
<Slider size="sm" /> <Slider size="md" /> <Slider size="lg" />

With Label

Volume
0%
<Slider label="Volume" />

With Metadata

Download Speed
50 MB/s
0%
Connection
5G•Low latency•Stable
0%
<Slider label="Download Speed" metadata="50 MB/s" /> <Slider label="Connection" metadata={["5G", "Low latency", "Stable"]} />

Hide Percentage

<Slider showPercentage={false} />

Custom Range

Custom Range (0-1000)
0%
<Slider min={0} max={1000} step={10} />

Disabled

Disabled Slider
0%
<Slider disabled value={30} />

RangeSlider

A dual-handle slider for selecting a range of values.

Basic Range

25%75%
<RangeSlider />

Controlled Range

const [range, setRange] = useState<[number, number]>([25, 75]); <RangeSlider value={range} onChange={setRange} />

With Label

Price Range
25%75%
<RangeSlider label="Price Range" />

Hide Labels

<RangeSlider showLabels={false} />

Custom Range

Budget ($)
3%8%
<RangeSlider min={0} max={1000} step={50} label="Budget ($)" />

In Context

// Price filter <div className="space-y-4"> <h3>Filter by Price</h3> <RangeSlider value={priceRange} onChange={setPriceRange} min={0} max={500} label="Price Range" /> <p className="text-sm text-grey-500"> ${priceRange[0]} - ${priceRange[1]} </p> </div> // Audio equalizer <div className="space-y-2"> <Slider label="Bass" value={bass} onChange={setBass} /> <Slider label="Mid" value={mid} onChange={setMid} /> <Slider label="Treble" value={treble} onChange={setTreble} /> </div>

Props

Slider

PropTypeDefaultDescription
valuenumber—Current value (0-100)
onChange(value: number) => void—Change callback
size"sm" | "md" | "lg""lg"Track/handle size
labelstring—Label above the slider
metadatastring | string[]—Text(s) below the slider
showPercentagebooleantrueShow percentage text
minnumber0Minimum value
maxnumber100Maximum value
stepnumber1Step increment
disabledbooleanfalseDisabled state
classNamestring—Additional CSS classes

RangeSlider

PropTypeDefaultDescription
value[number, number]—Current range [low, high]
onChange(value: [number, number]) => void—Change callback
size"sm" | "md" | "lg""lg"Track/handle size
labelstring—Label above the slider
showLabelsbooleantrueShow min/max percentage labels
minnumber0Minimum value
maxnumber100Maximum value
stepnumber1Step increment
disabledbooleanfalseDisabled state
classNamestring—Additional CSS classes

Size Reference

SizeTrack HeightHandle SizeBorder Width
sm4px14px2.33px
md8px16px2.67px
lg12px20px3.33px

Accessibility

  • Uses role="slider" for screen readers
  • aria-valuenow, aria-valuemin, aria-valuemax set correctly
  • Keyboard accessible (Tab to focus)
  • Supports touch, mouse, and pen input
  • Disabled state reduces opacity and prevents interaction
Last updated on