Beta Preview

ColorField

A color field allows users to edit a hex color or individual color channel value.

 
colorSpace 
channel 
 
isDisabled 
Example
ColorField.tsx
ColorField.css
import {ColorField} from './ColorField';

<ColorField
  label="Color"
  defaultValue="#ff0000" />

Value

Use the value or defaultValue prop to set the color value, and onChange to handle user input. The value may be a string or object, parsed using the function. onChange is always called with a Color object.

Current value: #E73623
import {ColorField} from './ColorField';
import {parseColor} from 'react-aria-components';
import {useState} from 'react';

function Example() {
  let [value, setValue] = useState(parseColor('#e73623'));

  return (
    <div>
      <ColorField
        label="Primary color"
        value={value}
        onChange={setValue} />
      <pre style={{fontSize: 12}}>Current value: {value.toString('hex')}</pre>
    </div>
  );
}

Channel

By default, ColorField displays a hex value. Set the colorSpace and channel props to display a specific color channel.

Current value: #7F007F
import {ColorField} from './ColorField';
import {parseColor} from 'react-aria-components';
import {useState} from 'react';

function Example() {
  let [color, setColor] = useState(parseColor('#7f007f'));

  return (
    <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>
      <ColorField
        label="Hue"
        value={color}
        onChange={setColor}
        colorSpace="hsl"
        channel="hue" />
      <ColorField
        label="Saturation"
        value={color}
        onChange={setColor}
        colorSpace="hsl"
        channel="saturation" />
      <ColorField
        label="Lightness"
        value={color}
        onChange={setColor}
        colorSpace="hsl"
        channel="lightness" />
      <pre style={{fontSize: 12}}>Current value: {color?.toString('hex')}</pre>
    </div>
  );
}

Forms

Use the name prop to submit the text value to the server. Set the isRequired prop to validate the value, or implement custom client or server-side validation. See the Forms guide to learn more.

import {ColorField, Button, Form} from './ColorField';
import {Button} from './Button';
import {Form} from './Form';

function Example(props) {
  return (
    <Form>
      <ColorField
        {...props}
        label="Brand color"
        name="brandColor"
        isRequired />
      <Button type="submit" style={{marginTop: 8}}>Submit</Button>
    </Form>
  );
}

API

Shows a color field component with labels pointing to its parts, including the input, and label elements.#ABCDEFBackground colorInputLabel