RangeSlider

Molecule

Numeric range input built on native `<input type="range">`. Single-handle by default, or `range` for a dual-handle min/max selector. Distinct from the `Slider` carousel component.

Single value

Preview
65
Code
const [v, setV] = useState(65);
<RangeSlider label="Volume" value={v} onChange={setV} min={0} max={100} />

Dual-handle range

Preview
Price range20 – 80
Code
const [range, setRange] = useState<[number, number]>([20, 80]);
<RangeSlider range label="Price range" value={range} onChange={setRange} min={0} max={100} />

Commit on release (one write per gesture)

Preview
40

Commits: none yet

Code
<RangeSlider label="Fan speed" value={v} onChange={setV} onCommit={(n) => api.setFan(n)} min={0} max={100} step={5} />

Pending (a write is in flight)

Preview
40
Code
<RangeSlider label="Fan speed" value={40} onChange={setV} min={0} max={100} step={5} pending />
Sourcemodules/ui/RangeSlider.tsx