Beta Preview

ColorField

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

 
colorSpace 
channel 
size 
labelPosition 
 
contextualHelp 
isDisabled 
import {ColorField} from '@react-spectrum/s2';

<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 '@react-spectrum/s2';
import {useState} from 'react';
import {parseColor} from '@react-stately/color';

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, parseColor} from '@react-spectrum/s2';
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.

isRequired 
necessityIndicator 
import {ColorField, Button, Form} from '@react-spectrum/s2';

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

API

NameTypeDefault
size'S''M''L''XL'Default: 'M'
The size of the color field.
channelDefault:
The color channel that this field edits. If not provided, the color is edited as a hex value.
colorSpaceDefault:
The color space that the color field operates in if a channel prop is provided. If no channel is provided, the color field always displays the color as an RGB hex value.
isWheelDisabledbooleanDefault:
Enables or disables changing the value with scroll.
isDisabledbooleanDefault:
Whether the input is disabled.
isReadOnlybooleanDefault:
Whether the input can be selected but not changed by the user.
stylesDefault:
Spectrum-defined styles, returned by the style() macro.
valueTDefault:
The current value (controlled).
defaultValueTDefault:
The default value (uncontrolled).
onChange(color: null) => voidDefault:
Handler that is called when the value changes.