docs / core / slider
Slider
one number, picked along a track by feel: a speed, an opacity, a blur radius. when the exact digits matter, ask with Input instead.
intensity · recedesrsc · client
provenance
authored in usvalayer
core / primitivesintensity
recedes · safe anywhere, including dense surfacescomposition
settings rows, filter panels, anywhere a value is tuned by feelpair label with showValue so the number stays visible while draggingnot a range picker. one thumb, one numbernot a substitute for a typed field when precision mattersa11y
role="slider" named by its label · arrow keys, Home and End move the thumb · focus ring on the thumbjest-axedependencies
@base-ui/react · class-variance-authoritylive demo · try it out
Opacity
customize
labeltext above the track
sizesm is for dense rows
minlower bound
maxupper bound
stepincrement per tick
defaultValuestarting position
suffixunit appended to the readout
showValuevalue readout on the right
disableddims and ignores input
usage
import { Slider } from "@usva-ui/react/primitives/slider";
<Slider
label="Opacity"
defaultValue={80}
step={5}
showValue
formatValue={(v) => `${v}%`}
/>props
| prop | type | default | notes |
|---|---|---|---|
| value | number | — | controlled value. |
| defaultValue | number | — | initial value when uncontrolled. |
| onValueChange | (value: number, event) => void | — | fires on every change, mid-drag and per key press. use onValueCommitted for release only. |
| min | number | 0 | lower bound. |
| max | number | 100 | upper bound. |
| step | number | 1 | increment per arrow key press and per drag tick. |
| disabled | boolean | false | dims to 50% and ignores pointer and keyboard. |
| label | ReactNode | — | label above the track. also names the slider for screen readers. |
| showValue | boolean | — | current value on the right of the label row. |
| formatValue | (value: number) => string | — | formats the readout. without it, Base UI's own formatting is used. |
| size | "sm" | "md" | "md" | track and thumb size. sm is for dense rows. |
get it
bun add @usva-ui/reactusage
import { Slider } from "@usva-ui/react/primitives/slider";
<Slider label="Speed" defaultValue={40} step={5} showValue />