ProComponents, templates & AI tooling
HeroUI
27.7k

ColorSlider

A color slider allows users to adjust an individual channel of a color value

Usage

import { ColorSlider, Label } from '@heroui/react';

Anatomy

import { ColorSlider, Label } from '@heroui/react';

export default () => (
  <ColorSlider channel="hue" defaultValue="hsl(0, 100%, 50%)">
    <Label>Hue</Label>
    <ColorSlider.Output />
    <ColorSlider.Track>
      <ColorSlider.Thumb />
    </ColorSlider.Track>
  </ColorSlider>
)

Examples

Disabled

Vertical

Controlled

HSL Channels

Use multiple ColorSliders to control different channels of a color value. The sliders can share the same color value to create a complete color picker.

Alpha Channel

The alpha channel slider shows a transparency checkerboard pattern to help visualize the transparency level.

RGB Channels

You can also use RGB color space with red, green, and blue channels.

Render Function

Customization

Tailwind CSS

Global CSS

To customize the ColorSlider component classes, you can use the @layer components directive. Learn more.

@layer components {
  .color-slider {
    @apply flex flex-col gap-2;
  }

  .color-slider__output {
    @apply text-muted text-sm;
  }

  .color-slider__track {
    @apply relative h-5 w-full rounded-full;
  }

  .color-slider__thumb {
    @apply size-4 rounded-full border-3 border-white shadow-overlay;
  }
}

Styling Reference

HeroUI follows the BEM methodology to ensure component variants and states are reusable and easy to customize.

CSS Classes

The ColorSlider component uses these CSS classes (View source styles):

Base Classes

  • .color-slider - Base slider container
  • .color-slider__output - Output element displaying current value
  • .color-slider__track - Track element with color gradient
  • .color-slider__thumb - Thumb element showing current color

State Classes

  • .color-slider[data-disabled="true"] - Disabled slider state
  • .color-slider[data-orientation="vertical"] - Vertical orientation
  • .color-slider__thumb[data-dragging="true"] - Thumb being dragged
  • .color-slider__thumb[data-focus-visible="true"] - Thumb keyboard focused
  • .color-slider__thumb[data-disabled="true"] - Disabled thumb state

Interactive States

The component supports both CSS pseudo-classes and data attributes for flexibility:

  • Hover: :hover or [data-hovered="true"] on thumb
  • Focus: :focus-visible or [data-focus-visible="true"] on thumb
  • Dragging: [data-dragging="true"] on thumb
  • Disabled: :disabled or [data-disabled="true"] on slider or thumb

API Reference

ColorSlider

Inherits from React Aria ColorSlider.

PropTypeDefaultDescription
channelColorChannel-The color channel that the slider manipulates (hue, saturation, lightness, brightness, alpha, red, green, blue)
colorSpaceColorSpace-The color space (hsl, hsb, rgb). Defaults to the color space of the value
valuestring | Color-The current color value (controlled)
defaultValuestring | Color-The default color value (uncontrolled)
onChange(value: Color) => void-Handler called when the value changes during dragging
onChangeEnd(value: Color) => void-Handler called when dragging ends
orientation"horizontal" | "vertical""horizontal"The orientation of the slider
isDisabledboolean-Whether the slider is disabled
namestring-The name of the input element for form submission
aria-labelstring-Accessibility label for the slider
classNamestring-Additional CSS classes
childrenReactNode | RenderFunction-Slider content or render function
renderDOMRenderFunction<keyof React.JSX.IntrinsicElements, ColorSliderRenderProps>-Overrides the default DOM element with a custom render function.

ColorSlider.Output

PropTypeDefaultDescription
classNamestring-Additional CSS classes
childrenReactNode | RenderFunction-Output content or render function

ColorSlider.Track

PropTypeDefaultDescription
classNamestring-Additional CSS classes
styleCSSProperties | RenderFunction-Inline styles or render function
childrenReactNode | RenderFunction-Track content or render function

ColorSlider.Thumb

PropTypeDefaultDescription
classNamestring-Additional CSS classes
styleCSSProperties | RenderFunction-Inline styles or render function
childrenReactNode | RenderFunction-Thumb content or render function

Render Props

When using render functions, these values are provided:

PropTypeDescription
stateColorSliderStateThe state of the color slider
colorColorThe current color value
orientation"horizontal" | "vertical"The orientation of the slider
isDisabledbooleanWhether the slider is disabled

Accessibility

The ColorSlider component implements the ARIA slider pattern and provides:

  • Full keyboard navigation support (Arrow keys, Home, End, Page Up/Down)
  • Screen reader announcements for value changes
  • Proper focus management
  • Support for disabled states
  • HTML form integration via hidden input elements
  • Internationalization support with locale-aware value formatting

For more information, see the React Aria ColorSlider documentation.

On this page