ColorPicker
PaletteManager
PaletteManager lets you add your own colors by typing in the hexadecimal code and clicking the check icon or pressing Enter. To remove custom colors, simply click the Close icon on each item.
tsx
import { Flex } from '@semcore/ui/base-components';
import ColorPicker, { PaletteManager } from '@semcore/ui/color-picker';
import { Text } from '@semcore/ui/typography';
import React from 'react';
const Demo = () => {
return (
<Flex direction='column'>
<Text tag='label' size={200} htmlFor='main-theme-color'>
Main theme color
</Text>
<ColorPicker>
<ColorPicker.Trigger mt={2} id='main-theme-color' />
<ColorPicker.Popper>
<ColorPicker.Colors />
<PaletteManager>
<PaletteManager.Colors />
<PaletteManager.InputColor />
</PaletteManager>
</ColorPicker.Popper>
</ColorPicker>
</Flex>
);
};
export default Demo;
Custom trigger
You have complete control over the appearance of ColorPicker, including the trigger.
tsx
import { Flex, Box } from '@semcore/ui/base-components';
import ColorPicker from '@semcore/ui/color-picker';
import Input from '@semcore/ui/input';
import { Text } from '@semcore/ui/typography';
import React from 'react';
const Demo = () => {
const [value, setValue] = React.useState('#C695FF');
return (
<Flex direction='column' gap={2}>
<Text tag='label' size={300} htmlFor='new-tag'>
New tag
</Text>
<ColorPicker value={value} onChange={setValue}>
<Input w={300} size='l'>
<ColorPicker.Trigger tag={Input.Addon} tabIndex={0} aria-label='New tag color'>
<div
style={{
width: '16px',
height: '16px',
borderRadius: '50%',
border: '1px solid var(--intergalactic-border-secondary)',
backgroundColor: value,
}}
/>
</ColorPicker.Trigger>
<Input.Value placeholder='Tag name' id='new-tag' />
</Input>
<ColorPicker.Popper>
<ColorPicker.Colors />
</ColorPicker.Popper>
</ColorPicker>
</Flex>
);
};
export default Demo;
Predefined palette
tsx
import { Flex } from '@semcore/ui/base-components';
import ColorPicker, { PaletteManager } from '@semcore/ui/color-picker';
import { Text } from '@semcore/ui/typography';
import React from 'react';
const Demo = () => {
const [value, setValue] = React.useState('#98848D');
const [customColors, setCustomColors] = React.useState(['#8649E6', '#8649E7', '#8649E8']);
return (
<Flex direction='column'>
<Text tag='label' size={200} htmlFor='player-1-color'>
Color
</Text>
<ColorPicker value={value} onChange={setValue}>
<ColorPicker.Trigger mt={2} id='player-1-color' />
<ColorPicker.Popper>
<ColorPicker.Colors
colors={[
null,
'#8649E1',
'#FF5733',
'#98848D',
'#8E3B29',
'#B0E727',
'#27D3E7',
'#2D747C',
'#6ad0de',
'#6E2D7C',
]}
/>
<PaletteManager colors={customColors} onColorsChange={setCustomColors}>
<PaletteManager.Colors />
<PaletteManager.InputColor />
</PaletteManager>
</ColorPicker.Popper>
</ColorPicker>
</Flex>
);
};
export default Demo;