With Value Display
showValue prints the number opposite the label.
<div style={{ width: '300px' }}>
<Slider
label="Opacity"
defaultValue={0.75}
max={1}
step={0.05}Chooses a number, or a range with one thumb per value, along a track.
<div style={{ width: '300px' }}>
<Slider label="Volume" defaultValue={50} />
</div>pnpm add @usefragments/uiImport styles once from @usefragments/ui/styles. See the installation guide for framework and theme setup.
showValue prints the number opposite the label.
<div style={{ width: '300px' }}>
<Slider
label="Opacity"
defaultValue={0.75}
max={1}
step={0.05}min, max and step bound the track to real-world units.
<div style={{ width: '300px', display: 'flex', flexDirection: 'column', gap: '16px' }}>
<Slider
label="Temperature"
min={60}
max={80}
defaultValue={72}Two thumbs choose a span; each thumb has its own name.
<div style={{ width: '300px' }}>
<Slider
label="Price"
defaultValue={[20, 80]}
getAriaLabel={(index) => (index === 0 ? 'Minimum price' : 'Maximum price')}
format={{ style: 'currency', currency: 'USD', maximumFractionDigits: 0 }}The parent owns the value and can react to every move.
<ControlledSliderDemo />The number floats above the thumb only while dragging.
<div style={{ width: '300px' }}>
<Slider label="Mix" defaultValue={40} showValueOnDrag />
</div>A line below the track explains the trade-off.
<div style={{ width: '300px' }}>
<Slider
label="Quality"
defaultValue={80}
showValue
helperText="Higher quality increases file size"The track takes the danger edge; the message has an icon and words.
<div style={{ width: '300px' }}>
<Slider
label="Budget"
defaultValue={90}
showValue
invalidA dashed track; the thumb does not move.
<div style={{ width: '300px' }}>
<Slider label="Seats" defaultValue={12} max={20} showValue readOnly />
</div>Dimmed; the thumb will not move.
<div style={{ width: '300px' }}>
<Slider
label="Locked Setting"
defaultValue={30}
showValue
disabledProp | Type | Default | Description |
|---|---|---|---|
aria-describedby | string | undefined | Not set | Accessible described-by relationship |
aria-label | string | undefined | Not set | Accessible label when the visible label is omitted |
aria-labelledby | string | undefined | Not set | Accessible labelled-by relationship |
defaultValue | Value | undefined | Not set | Default value for uncontrolled usage |
disabled | boolean | undefined | false | Disable the slider |
errorMessage | React.ReactNode | Not set | Message shown under the slider while invalid is true |
form | string | undefined | Not set | ID of the form that owns the hidden input |
format | Intl.NumberFormatOptions | undefined | Not set | Number formatting for the shown value, the bubble and the announced value |
getAriaLabel | ((index: number) => string) | undefined | Not set | Accessible name for each thumb of a range, by index: (index: number) => string |
helperText | string | undefined | Not set | Helper text shown below the slider |
invalid | boolean | undefined | false | Whether the value fails validation. The track takes the danger edge and errorMessage shows under it with an icon. |
label | string | undefined | Not set | Visible label text. A slider needs a label, aria-label or aria-labelledby; there is no fallback name. |
largeStep | number | undefined | Not set | Larger step for Page Up/Page Down and shift-arrow keys |
locale | Intl.LocalesArgument | Not set | Locale for format; defaults to the runtime locale |
max | number | undefined | 100 | Maximum value |
min | number | undefined | 0 | Minimum value |
name | string | undefined | Not set | Name of the hidden input for form submission |
onValueChange | ((value: SliderOutput<Value>) => void) | undefined | Not set | Called with the new value while the user moves a thumb: (value: number | number[]) => void |
onValueCommitted | ((value: SliderOutput<Value>) => void) | undefined | Not set | Called with the value when the user finishes an interaction |
readOnly | boolean | undefined | false | Show the value without letting the user change it |
showValue | boolean | undefined | false | Show the formatted value beside the label |
showValueOnDrag | boolean | undefined | false | Show the formatted value in a bubble above the thumb while dragging |
size | "xs" | "sm" | "md" | "lg" | undefinedxssmmdlg | "md" | Height of the control strip, so a slider lines up with fields of the same size. The track and thumb keep one size. |
step | number | undefined | 1 | Step interval |
thumbAlignment | "center" | "edge" | "edge-client-only" | undefinedcenteredgeedge-client-only | Not set | How the thumb aligns at the minimum and maximum edges |
value | Value | undefined | Not set | Controlled value: a number, or an array for a range (one thumb per value) |
id | string | undefined | Not set | ID of the slider root |