@uiw/react-color-wheel
TypeScript icon, indicating that this package has built-in type declarations

2.7.3 • Public • Published
Using my app is also a way to support me:
Vidwall Mousio Hint Mousio Musicer Audioer FileSentinel FocusCursor Videoer KeyClicker DayBar Iconed RightMenu Master Quick RSS Quick RSS Web Serve Copybook Generator DevTutor for SwiftUI RegexMate Time Passage Iconize Folder Textsound Saver Create Custom Symbols DevHub Resume Revise Palette Genius Symbol Scribe

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

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) }}></div>
    </Fragment>
  );
}

export default Demo;
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;
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) }}></div>
    </Fragment>
  );
}

export default Demo;

Custom Pointer

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.

Dependents (12)

Package Sidebar

Install

npm i @uiw/react-color-wheel

Weekly Downloads

43,525

Version

2.7.3

License

MIT

Unpacked Size

45.2 kB

Total Files

17

Last publish

Collaborators

  • wcjiang
  • uiwjs