Color Picker
A component that allows users to select a color from a color picker.
Saved Colors
Anatomy
To set up the color picker correctly, you'll need to understand its anatomy and how we name its parts.
Each part includes a
data-partattribute to help identify them in the DOM.
Examples
Learn how to use the ColorPicker component in your project. Let's take a look at the most basic
example
import { ColorPicker } from '@ark-ui/react'
export const Basic = () => {
  return (
    <ColorPicker.Root defaultValue="#eb5e41">
      <ColorPicker.Label>Color</ColorPicker.Label>
      <ColorPicker.Control>
        <ColorPicker.ChannelInput channel="hex" />
        <ColorPicker.ChannelInput channel="alpha" />
        <ColorPicker.ValueText />
        <ColorPicker.Trigger>
          <ColorPicker.TransparencyGrid />
          <ColorPicker.Context>
            {(colorPicker) => <ColorPicker.Swatch value={colorPicker.value} />}
          </ColorPicker.Context>
        </ColorPicker.Trigger>
      </ColorPicker.Control>
      <ColorPicker.Positioner>
        <ColorPicker.Content>
          <ColorPicker.FormatTrigger>Toggle ColorFormat</ColorPicker.FormatTrigger>
          <ColorPicker.FormatSelect />
          <ColorPicker.Area>
            <ColorPicker.AreaBackground />
            <ColorPicker.AreaThumb />
          </ColorPicker.Area>
          <ColorPicker.ChannelSlider channel="hue">
            <ColorPicker.ChannelSliderTrack />
            <ColorPicker.ChannelSliderThumb />
          </ColorPicker.ChannelSlider>
          <ColorPicker.ChannelSlider channel="alpha">
            <ColorPicker.TransparencyGrid />
            <ColorPicker.ChannelSliderTrack />
            <ColorPicker.ChannelSliderThumb />
          </ColorPicker.ChannelSlider>
          <ColorPicker.SwatchGroup>
            <ColorPicker.SwatchTrigger value="red">
              <ColorPicker.Swatch value="red">
                <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
              </ColorPicker.Swatch>
            </ColorPicker.SwatchTrigger>
            <ColorPicker.SwatchTrigger value="blue">
              <ColorPicker.Swatch value="blue">
                <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
              </ColorPicker.Swatch>
            </ColorPicker.SwatchTrigger>
            <ColorPicker.SwatchTrigger value="green">
              <ColorPicker.Swatch value="green">
                <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
              </ColorPicker.Swatch>
            </ColorPicker.SwatchTrigger>
          </ColorPicker.SwatchGroup>
          <ColorPicker.View format="rgba">
            <ColorPicker.ChannelInput channel="hex" />
            <ColorPicker.ChannelInput channel="alpha" />
          </ColorPicker.View>
          <ColorPicker.View format="hsla">
            <ColorPicker.ChannelInput channel="hue" />
            <ColorPicker.ChannelInput channel="saturation" />
            <ColorPicker.ChannelInput channel="lightness" />
          </ColorPicker.View>
          <ColorPicker.EyeDropperTrigger>Pick color</ColorPicker.EyeDropperTrigger>
        </ColorPicker.Content>
      </ColorPicker.Positioner>
      <ColorPicker.HiddenInput />
    </ColorPicker.Root>
  )
}
import { ColorPicker } from '@ark-ui/solid'
export const Basic = () => {
  return (
    <ColorPicker.Root value="#eb5e41">
      <ColorPicker.Context>
        {(api) => (
          <>
            <ColorPicker.Label>Color</ColorPicker.Label>
            <ColorPicker.Control>
              <ColorPicker.ChannelInput channel="hex" />
              <ColorPicker.ChannelInput channel="alpha" />
              <ColorPicker.ValueText />
              <ColorPicker.Trigger>
                <ColorPicker.TransparencyGrid />
                <ColorPicker.Swatch value={api().value} />
              </ColorPicker.Trigger>
            </ColorPicker.Control>
            <ColorPicker.Positioner>
              <ColorPicker.Content>
                <ColorPicker.FormatTrigger>Toggle ColorFormat</ColorPicker.FormatTrigger>
                <ColorPicker.FormatSelect />
                <ColorPicker.Area>
                  <ColorPicker.AreaBackground />
                  <ColorPicker.AreaThumb />
                </ColorPicker.Area>
                <ColorPicker.ChannelSlider channel="hue">
                  <ColorPicker.ChannelSliderTrack />
                  <ColorPicker.ChannelSliderThumb />
                </ColorPicker.ChannelSlider>
                <ColorPicker.ChannelSlider channel="alpha">
                  <ColorPicker.TransparencyGrid />
                  <ColorPicker.ChannelSliderTrack />
                  <ColorPicker.ChannelSliderThumb />
                </ColorPicker.ChannelSlider>
                <ColorPicker.SwatchGroup>
                  <ColorPicker.SwatchTrigger value="red">
                    <ColorPicker.Swatch value="red">
                      <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
                    </ColorPicker.Swatch>
                  </ColorPicker.SwatchTrigger>
                  <ColorPicker.SwatchTrigger value="blue">
                    <ColorPicker.Swatch value="blue">
                      <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
                    </ColorPicker.Swatch>
                  </ColorPicker.SwatchTrigger>
                  <ColorPicker.SwatchTrigger value="green">
                    <ColorPicker.Swatch value="green">
                      <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
                    </ColorPicker.Swatch>
                  </ColorPicker.SwatchTrigger>
                </ColorPicker.SwatchGroup>
                <ColorPicker.View format="rgba">
                  <ColorPicker.ChannelInput channel="hex" />
                  <ColorPicker.ChannelInput channel="alpha" />
                </ColorPicker.View>
                <ColorPicker.View format="hsla">
                  <ColorPicker.ChannelInput channel="hue" />
                  <ColorPicker.ChannelInput channel="saturation" />
                  <ColorPicker.ChannelInput channel="lightness" />
                </ColorPicker.View>
                <ColorPicker.EyeDropperTrigger>Pick color</ColorPicker.EyeDropperTrigger>
              </ColorPicker.Content>
            </ColorPicker.Positioner>
          </>
        )}
      </ColorPicker.Context>
      <ColorPicker.HiddenInput />
    </ColorPicker.Root>
  )
}
<script setup lang="ts">
import { ColorPicker } from '@ark-ui/vue'
</script>
<template>
  <ColorPicker.Root defaultValue="#ff00ff">
    <ColorPicker.Label>Color</ColorPicker.Label>
    <ColorPicker.Control>
      <ColorPicker.ChannelInput channel="hex" />
      <ColorPicker.ChannelInput channel="alpha" />
      <ColorPicker.ValueText />
      <ColorPicker.Trigger>
        <ColorPicker.TransparencyGrid />
        <ColorPicker.Context v-slot="api">
          <ColorPicker.Swatch :value="api.value" />
        </ColorPicker.Context>
      </ColorPicker.Trigger>
    </ColorPicker.Control>
    <ColorPicker.Positioner>
      <ColorPicker.Content>
        <ColorPicker.FormatTrigger>Toggle ColorFormat</ColorPicker.FormatTrigger>
        <ColorPicker.FormatSelect />
        <ColorPicker.Area>
          <ColorPicker.AreaBackground />
          <ColorPicker.AreaThumb />
        </ColorPicker.Area>
        <ColorPicker.ChannelSlider channel="hue">
          <ColorPicker.ChannelSliderTrack />
          <ColorPicker.ChannelSliderThumb />
        </ColorPicker.ChannelSlider>
        <ColorPicker.ChannelSlider channel="alpha">
          <ColorPicker.TransparencyGrid />
          <ColorPicker.ChannelSliderTrack />
          <ColorPicker.ChannelSliderThumb />
        </ColorPicker.ChannelSlider>
        <ColorPicker.SwatchGroup>
          <ColorPicker.SwatchTrigger value="red">
            <ColorPicker.Swatch value="red">
              <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
            </ColorPicker.Swatch>
          </ColorPicker.SwatchTrigger>
          <ColorPicker.SwatchTrigger value="blue">
            <ColorPicker.Swatch value="blue">
              <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
            </ColorPicker.Swatch>
          </ColorPicker.SwatchTrigger>
          <ColorPicker.SwatchTrigger value="green">
            <ColorPicker.Swatch value="green">
              <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
            </ColorPicker.Swatch>
          </ColorPicker.SwatchTrigger>
        </ColorPicker.SwatchGroup>
        <ColorPicker.View format="rgba">
          <ColorPicker.ChannelInput channel="hex" />
          <ColorPicker.ChannelInput channel="alpha" />
        </ColorPicker.View>
        <ColorPicker.View format="hsla">
          <ColorPicker.ChannelInput channel="hue" />
          <ColorPicker.ChannelInput channel="saturation" />
          <ColorPicker.ChannelInput channel="lightness" />
        </ColorPicker.View>
        <ColorPicker.EyeDropperTrigger>Pick color</ColorPicker.EyeDropperTrigger>
      </ColorPicker.Content>
    </ColorPicker.Positioner>
    <ColorPicker.HiddenInput />
  </ColorPicker.Root>
</template>
Controlled Color Picker
To create a controlled Color Picker component, manage the state of the current color using the
value prop and update it when the onValueChange or onValueChangeEnd event handler is called:
import { useState } from 'react'
import { ColorPicker } from '@ark-ui/react'
export const Controlled = () => {
  const [currentValue, setCurrentValue] = useState('hsl(20, 100%, 50%)')
  return (
    <ColorPicker.Root
      format="hsla"
      value={currentValue}
      onValueChange={(details) => setCurrentValue(details.valueAsString)}
    >
      <ColorPicker.Label>Color</ColorPicker.Label>
      <ColorPicker.Control>
        <ColorPicker.ChannelInput channel="hex" />
        <ColorPicker.ChannelInput channel="alpha" />
        <ColorPicker.ValueText />
        <ColorPicker.Trigger>
          <ColorPicker.TransparencyGrid />
          <ColorPicker.Context>
            {(colorPicker) => <ColorPicker.Swatch value={colorPicker.value} />}
          </ColorPicker.Context>
        </ColorPicker.Trigger>
      </ColorPicker.Control>
      <ColorPicker.Positioner>
        <ColorPicker.Content>
          <ColorPicker.Area>
            <ColorPicker.AreaBackground />
            <ColorPicker.AreaThumb />
          </ColorPicker.Area>
          <ColorPicker.ChannelSlider channel="hue">
            <ColorPicker.ChannelSliderTrack />
            <ColorPicker.ChannelSliderThumb />
          </ColorPicker.ChannelSlider>
          <ColorPicker.ChannelSlider channel="alpha">
            <ColorPicker.TransparencyGrid />
            <ColorPicker.ChannelSliderTrack />
            <ColorPicker.ChannelSliderThumb />
          </ColorPicker.ChannelSlider>
          <ColorPicker.SwatchGroup>
            <ColorPicker.SwatchTrigger value="red">
              <ColorPicker.Swatch value="red">
                <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
              </ColorPicker.Swatch>
            </ColorPicker.SwatchTrigger>
            <ColorPicker.SwatchTrigger value="blue">
              <ColorPicker.Swatch value="blue">
                <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
              </ColorPicker.Swatch>
            </ColorPicker.SwatchTrigger>
            <ColorPicker.SwatchTrigger value="green">
              <ColorPicker.Swatch value="green">
                <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
              </ColorPicker.Swatch>
            </ColorPicker.SwatchTrigger>
          </ColorPicker.SwatchGroup>
          <ColorPicker.View format="rgba">
            <ColorPicker.ChannelInput channel="hex" />
            <ColorPicker.ChannelInput channel="alpha" />
          </ColorPicker.View>
          <ColorPicker.View format="hsla">
            <ColorPicker.ChannelInput channel="hue" />
            <ColorPicker.ChannelInput channel="saturation" />
            <ColorPicker.ChannelInput channel="lightness" />
          </ColorPicker.View>
          <ColorPicker.EyeDropperTrigger>Pick color</ColorPicker.EyeDropperTrigger>
        </ColorPicker.Content>
      </ColorPicker.Positioner>
      <ColorPicker.HiddenInput />
    </ColorPicker.Root>
  )
}
import { createSignal } from 'solid-js'
import { ColorPicker } from '@ark-ui/solid'
export const Controlled = () => {
  const [currentValue, setCurrentValue] = createSignal('hsl(0, 100%, 50%)')
  return (
    <ColorPicker.Root
      value={currentValue()}
      onValueChange={(details) => setCurrentValue(details.valueAsString)}
      onValueChangeEnd={(details) => console.log(details.valueAsString)}
    >
      <ColorPicker.Context>
        {(api) => (
          <>
            <ColorPicker.Label>Color</ColorPicker.Label>
            <ColorPicker.Control>
              <ColorPicker.ChannelInput channel="hex" />
              <ColorPicker.ChannelInput channel="alpha" />
              <ColorPicker.ValueText />
              <ColorPicker.Trigger>
                <ColorPicker.TransparencyGrid />
                <ColorPicker.Swatch value={api().value} />
              </ColorPicker.Trigger>
            </ColorPicker.Control>
            <ColorPicker.Positioner>
              <ColorPicker.Content>
                <ColorPicker.Area>
                  <ColorPicker.AreaBackground />
                  <ColorPicker.AreaThumb />
                </ColorPicker.Area>
                <ColorPicker.ChannelSlider channel="hue">
                  <ColorPicker.ChannelSliderTrack />
                  <ColorPicker.ChannelSliderThumb />
                </ColorPicker.ChannelSlider>
                <ColorPicker.ChannelSlider channel="alpha">
                  <ColorPicker.TransparencyGrid />
                  <ColorPicker.ChannelSliderTrack />
                  <ColorPicker.ChannelSliderThumb />
                </ColorPicker.ChannelSlider>
                <ColorPicker.SwatchGroup>
                  <ColorPicker.SwatchTrigger value="red">
                    <ColorPicker.Swatch value="red">
                      <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
                    </ColorPicker.Swatch>
                  </ColorPicker.SwatchTrigger>
                  <ColorPicker.SwatchTrigger value="blue">
                    <ColorPicker.Swatch value="blue">
                      <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
                    </ColorPicker.Swatch>
                  </ColorPicker.SwatchTrigger>
                  <ColorPicker.SwatchTrigger value="green">
                    <ColorPicker.Swatch value="green">
                      <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
                    </ColorPicker.Swatch>
                  </ColorPicker.SwatchTrigger>
                </ColorPicker.SwatchGroup>
                <ColorPicker.View format="rgba">
                  <ColorPicker.ChannelInput channel="hex" />
                  <ColorPicker.ChannelInput channel="alpha" />
                </ColorPicker.View>
                <ColorPicker.View format="hsla">
                  <ColorPicker.ChannelInput channel="hue" />
                  <ColorPicker.ChannelInput channel="saturation" />
                  <ColorPicker.ChannelInput channel="lightness" />
                </ColorPicker.View>
                <ColorPicker.EyeDropperTrigger>Pick color</ColorPicker.EyeDropperTrigger>
              </ColorPicker.Content>
            </ColorPicker.Positioner>
          </>
        )}
      </ColorPicker.Context>
      <ColorPicker.HiddenInput />
    </ColorPicker.Root>
  )
}
<script setup lang="ts">
import { ref } from 'vue'
import { ColorPicker } from '@ark-ui/vue'
const value = ref('hsl(20, 100%, 50%)')
</script>
<template>
  <ColorPicker.Root format="hsla" v-model="value">
    <ColorPicker.Label>Color</ColorPicker.Label>
    <ColorPicker.Control>
      <ColorPicker.ChannelInput channel="hex" />
      <ColorPicker.ChannelInput channel="alpha" />
      <ColorPicker.ValueText />
      <ColorPicker.Trigger>
        <ColorPicker.TransparencyGrid />
        <ColorPicker.Context v-slot="api">
          <ColorPicker.Swatch :value="api.value" />
        </ColorPicker.Context>
      </ColorPicker.Trigger>
    </ColorPicker.Control>
    <ColorPicker.Positioner>
      <ColorPicker.Content>
        <ColorPicker.Area>
          <ColorPicker.AreaBackground />
          <ColorPicker.AreaThumb />
        </ColorPicker.Area>
        <ColorPicker.ChannelSlider channel="hue">
          <ColorPicker.ChannelSliderTrack />
          <ColorPicker.ChannelSliderThumb />
        </ColorPicker.ChannelSlider>
        <ColorPicker.ChannelSlider channel="alpha">
          <ColorPicker.TransparencyGrid />
          <ColorPicker.ChannelSliderTrack />
          <ColorPicker.ChannelSliderThumb />
        </ColorPicker.ChannelSlider>
        <ColorPicker.SwatchGroup>
          <ColorPicker.SwatchTrigger value="red">
            <ColorPicker.Swatch value="red">
              <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
            </ColorPicker.Swatch>
          </ColorPicker.SwatchTrigger>
          <ColorPicker.SwatchTrigger value="blue">
            <ColorPicker.Swatch value="blue">
              <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
            </ColorPicker.Swatch>
          </ColorPicker.SwatchTrigger>
          <ColorPicker.SwatchTrigger value="green">
            <ColorPicker.Swatch value="green">
              <ColorPicker.SwatchIndicator>✓</ColorPicker.SwatchIndicator>
            </ColorPicker.Swatch>
          </ColorPicker.SwatchTrigger>
        </ColorPicker.SwatchGroup>
        <ColorPicker.View format="rgba">
          <ColorPicker.ChannelInput channel="hex" />
          <ColorPicker.ChannelInput channel="alpha" />
        </ColorPicker.View>
        <ColorPicker.View format="hsla">
          <ColorPicker.ChannelInput channel="hue" />
          <ColorPicker.ChannelInput channel="saturation" />
          <ColorPicker.ChannelInput channel="lightness" />
        </ColorPicker.View>
        <ColorPicker.EyeDropperTrigger>Pick color</ColorPicker.EyeDropperTrigger>
      </ColorPicker.Content>
    </ColorPicker.Positioner>
    <ColorPicker.HiddenInput />
  </ColorPicker.Root>
</template>
API Reference
Root
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | |
| closeOnSelect | false | booleanWhether to close the color picker when a swatch is selected | 
| defaultOpen | booleanThe initial open state of the color picker when it is first rendered. Use when you do not need to control its open state. | |
| defaultValue | stringThe initial value of the color picker when it is first rendered. Use when you do not need to control the state of the color picker. | |
| disabled | booleanWhether the color picker is disabled | |
| format | 'rgba' | ColorFormatThe color format to use | 
| id | stringThe unique identifier of the machine. | |
| ids | Partial<{
  root: string
  control: string
  trigger: string
  label: string
  input: string
  content: string
  area: string
  areaGradient: string
  areaThumb: string
  channelInput(id: string): string
  channelSliderTrack(id: ColorChannel): string
  channelSliderThumb(id: ColorChannel): string
}>The ids of the elements in the color picker. Useful for composition. | |
| immediate | booleanWhether to synchronize the present change immediately or defer it to the next frame | |
| initialFocusEl | () => HTMLElement | nullThe initial focus element when the color picker is opened. | |
| lazyMount | false | booleanWhether to enable lazy mounting | 
| name | stringThe name for the form input | |
| onExitComplete | () => voidFunction called when the animation ends in the closed state | |
| onFocusOutside | (event: FocusOutsideEvent) => voidFunction called when the focus is moved outside the component | |
| onFormatChange | (details: FormatChangeDetails) => voidFunction called when the color format changes | |
| onInteractOutside | (event: InteractOutsideEvent) => voidFunction called when an interaction happens outside the component | |
| onOpenChange | (details: OpenChangeDetails) => voidHandler that is called when the user opens or closes the color picker. | |
| onPointerDownOutside | (event: PointerDownOutsideEvent) => voidFunction called when the pointer is pressed down outside the component | |
| onValueChange | (details: ValueChangeDetails) => voidHandler that is called when the value changes, as the user drags. | |
| onValueChangeEnd | (details: ValueChangeDetails) => voidHandler that is called when the user stops dragging. | |
| open | booleanWhether the color picker is open | |
| positioning | PositioningOptionsThe positioning options for the color picker | |
| present | booleanWhether the node is present (controlled by the user) | |
| readOnly | booleanWhether the color picker is read-only | |
| unmountOnExit | false | booleanWhether to unmount on exit. | 
| value | stringThe current value of the color picker. | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | root | 
| [data-disabled] | Present when disabled | 
| [data-readonly] | Present when read-only | 
AreaBackground
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
Area
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | |
| xChannel | ColorChannel | |
| yChannel | ColorChannel | 
AreaThumb
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | area-thumb | 
| [data-disabled] | Present when disabled | 
ChannelInput
| Prop | Default | Type | 
|---|---|---|
| channel | ExtendedColorChannel | |
| asChild | booleanRender as a different element type. | |
| orientation | Orientation | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | channel-input | 
| [data-channel] | The color channel of the channelinput | 
| [data-disabled] | Present when disabled | 
ChannelSlider
| Prop | Default | Type | 
|---|---|---|
| channel | ColorChannel | |
| asChild | booleanRender as a different element type. | |
| orientation | Orientation | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | channel-slider | 
| [data-channel] | The color channel of the channelslider | 
| [data-orientation] | The orientation of the channelslider | 
ChannelSliderThumb
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | channel-slider-thumb | 
| [data-channel] | The color channel of the channelsliderthumb | 
| [data-disabled] | Present when disabled | 
| [data-orientation] | The orientation of the channelsliderthumb | 
ChannelSliderTrack
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | channel-slider-track | 
| [data-channel] | The color channel of the channelslidertrack | 
| [data-orientation] | The orientation of the channelslidertrack | 
Content
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | content | 
| [data-placement] | The placement of the content | 
| [data-state] | "open" | "closed" | 
Control
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | control | 
| [data-disabled] | Present when disabled | 
| [data-readonly] | Present when read-only | 
| [data-state] | "open" | "closed" | 
| [data-focus] | Present when focused | 
EyeDropperTrigger
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | eye-dropper-trigger | 
| [data-disabled] | Present when disabled | 
FormatSelect
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
FormatTrigger
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
HiddenInput
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
Label
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | label | 
| [data-disabled] | Present when disabled | 
| [data-readonly] | Present when read-only | 
| [data-focus] | Present when focused | 
Positioner
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
RootProvider
| Prop | Default | Type | 
|---|---|---|
| value | UseColorPickerReturn | |
| asChild | booleanRender as a different element type. | |
| immediate | booleanWhether to synchronize the present change immediately or defer it to the next frame | |
| lazyMount | false | booleanWhether to enable lazy mounting | 
| onExitComplete | () => voidFunction called when the animation ends in the closed state | |
| present | booleanWhether the node is present (controlled by the user) | |
| unmountOnExit | false | booleanWhether to unmount on exit. | 
SwatchGroup
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
SwatchIndicator
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
Swatch
| Prop | Default | Type | 
|---|---|---|
| value | string | ColorThe color value | |
| asChild | booleanRender as a different element type. | |
| respectAlpha | booleanWhether to include the alpha channel in the color | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | swatch | 
| [data-state] | "checked" | "unchecked" | 
| [data-value] | 
SwatchTrigger
| Prop | Default | Type | 
|---|---|---|
| value | string | ColorThe color value | |
| asChild | booleanRender as a different element type. | |
| disabled | booleanWhether the swatch trigger is disabled | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | swatch-trigger | 
| [data-state] | "checked" | "unchecked" | 
| [data-value] | |
| [data-disabled] | Present when disabled | 
TransparencyGrid
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | |
| size | string | 
Trigger
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
| Data Attribute | Value | 
|---|---|
| [data-scope] | color-picker | 
| [data-part] | trigger | 
| [data-disabled] | Present when disabled | 
| [data-readonly] | Present when read-only | 
| [data-placement] | The placement of the trigger | 
| [data-state] | "open" | "closed" | 
| [data-focus] | Present when focused | 
ValueText
| Prop | Default | Type | 
|---|---|---|
| asChild | booleanRender as a different element type. | 
View
| Prop | Default | Type | 
|---|---|---|
| format | ColorFormat | |
| asChild | booleanRender as a different element type. | 
Accessibility
Keyboard Support
| Key | Description | 
|---|---|
| Enter | When focus is on the trigger, opens the color picker When focus is on a trigger of a swatch, selects the color (and closes the color picker) When focus is on the input or channel inputs, selects the color | 
| ArrowLeft | When focus is on the color area, decreases the hue value of the color When focus is on the channel sliders, decreases the value of the channel | 
| ArrowRight | When focus is on the color area, increases the hue value of the color When focus is on the channel sliders, increases the value of the channel | 
| ArrowUp | When focus is on the color area, increases the saturation value of the color When focus is on the channel sliders, increases the value of the channel | 
| ArrowDown | When focus is on the color area, decreases the saturation value of the color When focus is on the channel sliders, decreases the value of the channel | 
| Esc | Closes the color picker and moves focus to the trigger |