shadcn.io is an independent project built on shadcn/ui
Price Range labels a track with two thumbs. It opens at $200 and $800, and those prices sit under the track.
Use it in a product filter next to other facets. Add a Number Input at each end if shoppers type the bounds. In Vue, Ark UI does not format the prices.
Installation
Anatomy

Usage
<div class="flex w-full max-w-md flex-col gap-2">
<Label>Price Range</Label>
<Slider
:aria-label='["Minimum price", "Maximum price"]'
:max="1000"
:min="0"
@value-change="handleValueChange"
:value="value"
/>
<div class="flex items-center justify-between text-muted-foreground text-sm tabular-nums">
<span>${{ value[0] }}</span>
<span>${{ value[1] }}</span>
</div>
</div>FAQ
How does the readout follow the thumb?
The value lives in state, starting at [200, 800], and goes back to the slider as value. The two prices under the track print value[0] and value[1] with a dollar sign.
The Vue file binds :value and listens to @value-change, which receives details.value.
How are the thumbs named?
Price Range is a visible Label.
On Ark UI, aria-label names each thumb: Minimum price and Maximum price.
API Reference
Label
No extra props in this demo. The rest is on the Label page.
Slider
Sets aria-label="[Minimum price, Maximum price]", max="1000", min="0", value-change="handleValueChange" and value="value". The rest is on the Slider page.





