shadcn.io is an independent project built on shadcn/ui
A speaker icon, the word Volume, and 65% share one row. A single thumb sits on the track underneath.
Use it in a media player or in sound settings. A mute Button helps when silence should be one click. In React, Ark UI does not draw the speaker.
Installation
Anatomy

Usage
<div className="flex w-full max-w-md flex-col gap-2">
<div className="flex items-center justify-between">
<div className="flex items-center gap-2">
<Volume2Icon aria-hidden="true" className="size-4" />
<Label>Volume</Label>
</div>
<span className="text-muted-foreground text-sm tabular-nums">
{value[0]}%
</span>
</div>
<Slider
aria-label={["Volume"]}
onValueChange={handleValueChange}
value={value}
/>
</div>FAQ
How does the readout follow the thumb?
The value lives in state, starting at 65, and goes back to the slider as value. The percentage beside the label prints it.
onValueChange receives details.value, the new array.
Is the speaker icon announced?
No. It has aria-hidden="true"; the Volume label and the slider's aria-label name the control.
How do I add a mute button?
Put a Button with the icon before the slider and set the value to 0 on click, keeping the last level to restore. The demo has no mute.
API Reference
Label
No extra props in this demo. The rest is on the Label page.
Slider
Sets aria-label={["Volume"]}, onValueChange={handleValueChange} and value={value}. The rest is on the Slider page.





