solid-color
Version:
<p> <img width="100%" src="https://assets.solidjs.com/banner?type=solid-color&background=tiles&project=%20" alt="solid-color"> </p>
37 lines (36 loc) • 1.34 kB
JSX
import { mergeProps } from 'solid-js';
import { getContrastingColor } from '../../helpers/color';
import { Swatch } from '../_common';
export default function CompactColor(_props) {
const props = mergeProps({ onClick: () => { } }, _props);
const styles = () => {
const { color, active } = props;
return {
color: {
background: color,
width: '15px',
height: '15px',
float: 'left',
'margin-right': '5px',
'margin-bottom': '5px',
position: 'relative',
cursor: 'pointer',
'box-shadow': color === '#FFFFFF' ? 'inset 0 0 0 1px #ddd' : undefined,
},
dot: {
position: 'absolute',
inset: '5px',
background: color === '#FFFFFF'
? '#000'
: color === 'transparent'
? '#000'
: getContrastingColor(color),
'border-radius': '50%',
opacity: active ? 1 : 0,
},
};
};
return (<Swatch styles={styles().color} color={props.color} onClick={props.onClick} focusStyle={{ 'box-shadow': `0 0 4px ${props.color}` }}>
<div style={styles().dot}/>
</Swatch>);
}