Tally UI
UI

Slider

A draggable input for selecting a numeric value within a range.

Import

import { Slider } from '@tallyui/components';

Usage

Slider is a compound primitive composed of Root, Track, Range, and Thumb -- but the styled component wraps all of those into a single <Slider> element for convenience.

<Slider defaultValue={50} />

Props

PropTypeDefaultDescription
valuenumberControlled current value
defaultValuenumberUncontrolled initial value
onValueChange(value: number) => voidCalled when the value changes
minnumber0Minimum value
maxnumber100Maximum value
stepnumber1Step increment
disabledbooleanfalseDisables the slider
asChildbooleanfalseRenders as a Slot, merging props onto the child element
classNamestringAdditional NativeWind classes merged via cn()

Plus all React Native ViewProps on the root.

Anatomy

The styled Slider renders this structure internally:

<Slider.Root>       {/* relative flex w-full touch-none select-none items-center */}
  <Slider.Track>    {/* h-2 w-full rounded-full bg-secondary */}
    <Slider.Range>  {/* absolute h-full bg-primary */}
  </Slider.Track>
  <Slider.Thumb>    {/* h-5 w-5 rounded-full border-2 border-primary bg-background */}
</Slider.Root>

Examples

Controlled slider

const [volume, setVolume] = useState(50);

<Slider value={volume} onValueChange={setVolume} />
<Text>{volume}%</Text>

Custom range

<Slider min={0} max={10} step={1} defaultValue={5} />

With step increments

<Slider min={0} max={100} step={25} defaultValue={50} />

Disabled

<Slider value={30} disabled />

On this page