Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@uiw/react-color-wheel

uiwjs194.7kMIT2.5.5TypeScript support: included

Color wheel

react, react-color, react-component, color-picker, colorpicker, color picker, colorful, react-color-wheel, wheel, color, convert

readme

React Color Wheel

Buy me a coffee npm bundle size npm version Open in unpkg

Wheel Component is a subcomponent of @react-color.

react-color-wheel

Install

npm i @uiw/react-color-wheel

Usage

`tsx mdx:preview import React, { useState, Fragment } from 'react'; import Wheel from '@uiw/react-color-wheel'; import { hsvaToHex } from '@uiw/color-convert';

function Demo() { const [hsva, setHsva] = useState({ h: 214, s: 43, v: 90, a: 1 }); return ( <Fragment> <Wheel color={hsva} onChange={(color) => setHsva({ ...hsva, ...color.hsva })} /> <div style={{ width: '100%', height: 34, marginTop: 20, background: hsvaToHex(hsva) }}> </Fragment> ); }

export default Demo;


```tsx mdx:preview
import React, { useState } from 'react';
import Wheel from '@uiw/react-color-wheel';
import { hsvaToHex } from '@uiw/color-convert';

function Demo() {
  const [hsva, setHsva] = useState({ h: 214, s: 43, v: 90, a: 1 });
  return (
    <div style={{ display: 'grid', gap: 20, gridTemplateColumns: 'repeat(auto-fill, minmax(200px, 1fr))' }}>
      <Wheel color={{a: 1, h: 214, s: 0, v: 100}} />
      <Wheel color={{a: 1, h: 214, s: 0, v: 90}} />
      <Wheel color={{a: 1, h: 214, s: 0, v: 80}} />
      <Wheel color={{a: 1, h: 214, s: 0, v: 70}} />
      <Wheel color={{a: 1, h: 214, s: 0, v: 50}} />
      <Wheel color={{a: 1, h: 214, s: 0, v: 40}} />
      <Wheel color={{a: 1, h: 214, s: 0, v: 40}} width={100} height={100} />
      <Wheel color={{a: 1, h: 214, s: 0, v: 30}} width={100} height={100} />
      <Wheel color={{a: 1, h: 214, s: 0, v: 20}} width={100} height={100} />
      <Wheel color={{a: 1, h: 214, s: 0, v: 10}} width={100} height={100} />
    </div>
  );
}

export default Demo;

`tsx mdx:preview import React, { useState, Fragment } from 'react'; import Wheel from '@uiw/react-color-wheel'; import ShadeSlider from '@uiw/react-color-shade-slider'; import { hsvaToHex } from '@uiw/color-convert';

function Demo() { const [hsva, setHsva] = useState({ h: 214, s: 43, v: 90, a: 1 }); return ( <Fragment> <Wheel color={hsva} onChange={(color) => setHsva({ ...hsva, ...color.hsva })} /> <ShadeSlider hsva={hsva} style={{ width: 210, marginTop: 20 }} onChange={(newShade) => { setHsva({ ...hsva, ...newShade }); }} /> <div style={{ width: '100%', height: 34, marginTop: 20, background: hsvaToHex(hsva) }}> </Fragment> ); }

export default Demo;

### Custom Pointer

```tsx mdx:preview
import React, { useState, Fragment } from 'react';
import Wheel from '@uiw/react-color-wheel';
import ShadeSlider from '@uiw/react-color-shade-slider';
import { hsvaToHex } from '@uiw/color-convert';

function Demo() {
  const [hsva, setHsva] = useState({ h: 214, s: 43, v: 90, a: 1 });
  return (
    <Fragment>
      <Wheel
        color={hsva}
        onChange={(color) => setHsva({ ...hsva, ...color.hsva })}
        /* Passing the style prop is required in the topmost element. */
        pointer={({ color, style }) => {
          return (
            <div style={style}>
              <div
                style={{
                  width: 12,
                  height: 12,
                  transform: 'translate(-5px, -5px)',
                  backgroundColor: color,
                  border: '1px solid #000',
                }}
              />
            </div>
          );
        }}
      />
      <ShadeSlider
        hsva={hsva}
        style={{ width: 210, marginTop: 20 }}
        onChange={(newShade) => {
          setHsva({ ...hsva, ...newShade });
        }}
      />
      <div style={{ width: '100%', height: 34, marginTop: 20, background: hsvaToHex(hsva) }}></div>
    </Fragment>
  );
}

export default Demo;

Props

import React from 'react';
import { HsvaColor, ColorResult } from '@uiw/color-convert';
import { PointerProps } from './Pointer';
export interface WheelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'color'> {
  prefixCls?: string;
  color?: string | HsvaColor;
  width?: number;
  height?: number;
  radius?: React.CSSProperties['borderRadius'];
  /** Direction of the oval: 'x' or 'y'. */ 
  oval?: string;
  /** Starting angle of the color wheel's hue gradient, measured in degrees. */
  angle?: number;
  /** Direction of the color wheel's hue gradient; either clockwise or anticlockwise. Default: `anticlockwise` */
  direction?: 'clockwise' | 'anticlockwise';
  /** Passing the style prop is required in the topmost element. */
  pointer?: ({ color, style }: PointerProps) => JSX.Element;
  onChange?: (color: ColorResult) => void;
}
declare const Wheel: React.ForwardRefExoticComponent<WheelProps & React.RefAttributes<HTMLDivElement>>;
export default Wheel;

Contributors

As always, thanks to our amazing contributors!

Made with contributors.

License

Licensed under the MIT License.