UNPKG

@terrazzo/react-color-picker

Version:

React color picker that supports Color Module 4, wide color gamut (WCG), and Display-P3 using WebGL for monitor-accurate colors. Powered by Culori.

165 lines (143 loc) 4.67 kB
.tz-color-channel-slider-wrapper { height: var(--tz-color-channel-slider-track-height); position: relative; transform: translate3d(0, 0, 0); width: 100%; &::after { border-radius: var(--tz-color-channel-slider-track-height); box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.2); content: ""; inset: 0; pointer-events: none; position: absolute; z-index: 2; } } .tz-color-channel-slider-bg { height: 100%; width: 100%; } .tz-color-channel-slider-bg__alpha { --tz-square-color: var(--tz-color-base-gray-800); --tz-square-size: calc(0.625 * var(--tz-color-channel-slider-track-height)); background-image: linear-gradient(to right, var(--left-color), var(--right-color)), url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'><rect fill='%23dad9d6' width='32' height='32'/><rect fill='%23dad9d6' x='32' y='32' width='32' height='32'/></svg>"); background-repeat: no-repeat, repeat; background-size: 100% 100%, var(--tz-square-size) var(--tz-square-size); } .tz-color-channel-slider-bg-wrapper { border-radius: var(--tz-radius-1000); display: flex; height: 100%; left: 0; overflow: hidden; position: absolute; top: 0; width: 100%; z-index: 1; } .tz-color-channel-slider-overlay { --overlay-offset: calc(0.75 * var(--tz-color-channel-slider-track-height)); background-color: color(srgb 0 0 0 / 0.5); display: flex; height: 100%; pointer-events: none; position: absolute; width: calc(var(--width) - var(--overlay-offset)); z-index: 2; } .tz-color-channel-slider-overlay__min { left: 0; &::after { background-image: url('data:image/svg+xml;utf8,<svg viewBox="0 0 256 512" xmlns="http://www.w3.org/2000/svg"><path d="m256 512c-141.4 0-256-114.6-256-256s114.6-256 256-256h-256v512z" fill="rgb(0, 0, 0, 0.5)"/></svg>'); background-repeat: no-repeat; content: ""; display: block; flex-shrink: 0; height: var(--tz-color-channel-slider-track-height); left: 100%; position: absolute; top: 0; width: calc(0.5 * var(--tz-color-channel-slider-track-height)); } } .tz-color-channel-slider-overlay__max { right: 0; &::before { background-image: url('data:image/svg+xml;utf8,<svg viewBox="0 0 256 512" xmlns="http://www.w3.org/2000/svg"><path d="m0 0c141.4 0 256 114.6 256 256s-114.6 256-256 256h256v-512z" fill="rgb(0, 0, 0, 0.5)"/></svg>'); background-repeat: no-repeat; content: ""; display: block; flex-shrink: 0; height: var(--tz-color-channel-slider-track-height); position: absolute; right: 100%; top: 0; width: calc(0.5 * var(--tz-color-channel-slider-track-height)); } } .tz-color-picker { background-color: var(--tz-color-bg-1); color: var(--tz-text-primary); display: flex; flex-direction: column; gap: var(--tz-space-200); } .tz-color-picker-code { --copy-btn-width: 2rem; display: flex; padding: 0; position: relative; } .tz-color-picker-code-input { --tz-color-picker-input-bg: var(--tz-color-bg-1); --tz-color-picker-input-border: var(--tz-color-border-3); --tz-color-picker-input-text: var(--tz-color-text-1); background-color: var(--tz-color-picker-input-bg); border: 1px solid var(--tz-color-picker-input-border); border-radius: var(--tz-radius-300); color: var(--tz-color-picker-input); flex: 1 0 auto; font-family: var(--tz-font-mono); font-size: var(--tz-font-label-small-font-size); font-variant-ligatures: none; font-weight: var(--tz-font-label-small-font-weight); height: var(--tz-space-control-m); letter-spacing: 0; line-height: var(--tz-space-control-m); outline: none; padding: 0; text-indent: var(--tz-space-200); &:focus { --tz-color-picker-input-border: var(--tz-color-control-border-focus); } } .tz-color-picker-preview { border: 1px solid var(--tz-button-secondary-border); border-radius: var(--tz-radius-300); display: flex; flex-direction: column; } .tz-color-picker-sliders { display: flex; flex-direction: column; gap: var(--tz-space-200); } .tz-color-picker-swatch { background-image: linear-gradient(var(--current-color), var(--current-color)), url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'><rect fill='%23dad9d6' width='32' height='32'/><rect fill='%23dad9d6' x='32' y='32' width='32' height='32'/></svg>"); background-repeat: no-repeat, repeat; background-size: 100% 100%, 10px; border-top-left-radius: var(--tz-radius-300); border-top-right-radius: var(--tz-radius-300); height: 6rem; } .tz-color-picker-tooltip-icon { color: var(--tz-color-base-gray-900); }