Skip to content

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

Free

With Gradient Track Slider for React

A Heat slider at 70° on a track that fades from a cool color to a hot one, with the reading beside the label.

Heat is on the left and 70° is on the right. The whole track fades from a cool color to a hot one, past the thumb as well as behind it.

Use it for heat or any cold-to-hot scale. A Progress bar can show the same scale when nobody drags it. In React, Base UI does not supply the gradient.

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.

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>Heat</Label>
    <span className="text-muted-foreground text-sm tabular-nums">
      {value[0]}°
    </span>
  </div>
  <Slider
    aria-label="Heat"
    className="[&_[data-slot=slider-range]]:bg-transparent [&_[data-slot=slider-track]]:bg-linear-to-r [&_[data-slot=slider-track]]:from-info [&_[data-slot=slider-track]]:to-destructive rtl:[&_[data-slot=slider-track]]:bg-linear-to-l"
    onValueChange={handleValueChange}
    value={value}
  />
</div>

FAQ

How is the gradient drawn?

The slider's class gives the part with data-slot="slider-track" bg-linear-to-r from info to destructive, and the range bg-transparent.

How does the readout follow the thumb?

The value lives in state, starting at 70, and goes back to the slider as value. The number beside the label prints it with a degree sign. onValueChange receives the new value, and the handler stores it as an array.

Can I change the colors?

Change the from- and to- classes. Theme tokens keep it working in dark mode.

How is the slider named?

The Heat 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="Heat", onValueChange={handleValueChange} and value={value}. The rest is on the Slider page.