Range Slider

Slider with tick dots and a vertical-bar thumb that bounces as it lands on each step. Drag or keyboard, reduced-motion safe.

Inline Slider

range-slider-inline.tsx

An inset fill and inline label and value. Ten evenly spaced stops span the track; markers under text stay hidden but remain interactive, and the thumb parts around either label as it passes.

Install

$ bunx --bun shadcn add @beui/range-slider-inline

API Reference

step?
number

Rounds snap-stop values. While dragging, the readout keeps this step's decimal precision.

label
string

Compact label inside the left edge of the track.

format?
((value: number) => string)

Formats the inline value without changing its precision.

showTicks?
boolean

Show markers for the ten evenly spaced snap stops, except where they overlap inline text.

true
className?
string
value?
number
defaultValue?
number
onValueChange?
((value: number) => void)
min?
number
max?
number
disabled?
boolean
aria-label?
string
formatValueText?
((value: number) => string)

Announced instead of the raw number — pass one when the value carries a unit or a suffix ("72.5 kg", "35%"); a bare number needs no valueText.

Range Slider

range-slider.tsx

Tick dots, and a vertical-bar thumb that bounces as it lands on each step.

Drag the handle40

Install

$ bunx --bun shadcn add @beui/range-slider

API Reference

showTicks?
boolean

Render a tick dot at each step.

true
className?
string
value?
number
defaultValue?
number
onValueChange?
((value: number) => void)
min?
number
max?
number
step?
number
disabled?
boolean
aria-label?
string
formatValueText?
((value: number) => string)

Announced instead of the raw number — pass one when the value carries a unit or a suffix ("72.5 kg", "35%"); a bare number needs no valueText.

Fluid Slider

range-slider-fluid.tsx

No thumb. The fill slides behind a rounded liquid cap, and the label flips color wherever the fill covers it.

Brightness35%
Brightness35%

Install

$ bunx --bun shadcn add @beui/range-slider-fluid

API Reference

label?
string

Text shown on the left of the track.

format?
((value: number) => string)

Formats the value shown on the right.

(v) => `${v}%`
className?
string
value?
number
defaultValue?
number
onValueChange?
((value: number) => void)
min?
number
max?
number
step?
number
disabled?
boolean
aria-label?
string
formatValueText?
((value: number) => string)

Announced instead of the raw number — pass one when the value carries a unit or a suffix ("72.5 kg", "35%"); a bare number needs no valueText.

Wave Slider

range-slider-wave.tsx

Equalizer bars peak around the handle and drop back once it passes, so the value moves down the track as a wave.

Gain45

Install

$ bunx --bun shadcn add @beui/range-slider-wave

API Reference

bars?
number

Number of bars drawn across the track.

32
className?
string
value?
number
defaultValue?
number
onValueChange?
((value: number) => void)
min?
number
max?
number
step?
number
disabled?
boolean
aria-label?
string
formatValueText?
((value: number) => string)

Announced instead of the raw number — pass one when the value carries a unit or a suffix ("72.5 kg", "35%"); a bare number needs no valueText.

Bubble Slider

range-slider-bubble.tsx

Grab the thumb and a value bubble pops out of it. The bubble tilts and squashes with how fast you drag, then settles upright.

Drag fast and the bubble leans

Install

$ bunx --bun shadcn add @beui/range-slider-bubble

API Reference

format?
((value: number) => string)

Formats the value shown in the bubble.

className?
string
value?
number
defaultValue?
number
onValueChange?
((value: number) => void)
min?
number
max?
number
step?
number
disabled?
boolean
aria-label?
string
formatValueText?
((value: number) => string)

Announced instead of the raw number — pass one when the value carries a unit or a suffix ("72.5 kg", "35%"); a bare number needs no valueText.

Ruler Slider

range-slider-ruler.tsx

The needle stays put and the scale scrolls under it. A flick keeps going and settles on the nearest tick. Fractional steps read at the step's own precision.

72.5kg
404550556065707580859095100105110115120

Install

$ bunx --bun shadcn add @beui/range-slider-ruler

API Reference

gap?
number

Pixels between two steps.

14
majorEvery?
number

Label every Nth step; those ticks are drawn tall.

5
unit?
string

Unit shown next to the value.

className?
string
value?
number
defaultValue?
number
onValueChange?
((value: number) => void)
min?
number
max?
number
step?
number
disabled?
boolean
aria-label?
string
formatValueText?
((value: number) => string)

Announced instead of the raw number — pass one when the value carries a unit or a suffix ("72.5 kg", "35%"); a bare number needs no valueText.

Updated