Skip to content

shadcn.io is an independent project built on shadcn/ui

Free

Colored Slider for React

A Success Rate slider at 60%, with the percentage beside the label and a success color on the fill and thumb.

Success Rate is on the left and 60% is on the right. The filled part of the track and the thumb border use the success color.

Use it when the color carries a status, such as a rate that looks healthy. A Progress bar is enough when nobody drags the value. In React, Base UI does not pick that color.

Preview

Preview width

Installation

Sign in to get your install command
Free with an account. It carries your token, so the CLI installs everything in one go.
Use email insteadNo credit card

Anatomy

Slider anatomy: root, label, value, track, range, thumb

Usage

<div className="flex w-full max-w-md flex-col gap-2">
  <div className="flex items-center justify-between">
    <Label>Success Rate</Label>
    <span className="text-muted-foreground text-sm tabular-nums">
      {value[0]}%
    </span>
  </div>
  <Slider
    aria-label="Success Rate"
    className="[&_[data-slot=slider-range]]:bg-success [&_[data-slot=slider-thumb]]:border-success"
    onValueChange={handleValueChange}
    value={value}
  />
</div>

FAQ

How is it colored?

The slider's class sets bg-success on the part with data-slot="slider-range" and border-success on the part with data-slot="slider-thumb". Both follow the theme.

How does the readout follow the thumb?

The value lives in state, starting at 60, and goes back to the slider as value. The percentage beside the label prints it. onValueChange receives the new value, and the handler stores it as an array.

How do I use another color?

Swap the tokens, such as bg-destructive or bg-warning. Keep to theme tokens so dark mode still works.

How is the slider named?

The Success Rate text is a visible Label, and the slider gets the same name with aria-label, so screen readers announce what it sets. On Base UI, aria-label is one string on the slider.

What range does it cover?

0 to 100. min and max set the ends.

Can I move it from the keyboard?

Yes. The thumb takes focus with Tab. The arrow keys move it by one step, Page Up and Page Down by a larger step, and Home and End jump to the ends.

API Reference

Label

No extra props in this demo. The rest is on the Label page.

Slider

Sets aria-label="Success Rate", onValueChange={handleValueChange} and value={value}. The rest is on the Slider page.