import { SpecifyColorValue } from '@specifyapp/specify-design-token-format'; //@ts-ignore import color from 'tinycolor2'; export function colorToJson(value: SpecifyColorValue) { switch (value.model) { case 'hex': const hexColor = color(value.hex); hexColor.setAlpha(value.alpha); return value.alpha === 1 ? hexColor.toHexString() : hexColor.toHex8String(); case 'rgb': const rgbColor = color({ r: value.red, g: value.green, b: value.blue, }); rgbColor.setAlpha(value.alpha); return rgbColor.toRgbString(); case 'hsl': const hslColor = color({ h: value.hue, s: value.saturation, l: value.lightness, }); hslColor.setAlpha(value.alpha); return hslColor.toHslString(); case 'lab': return `lab(${value.lightness}% ${value.aAxis} ${value.bAxis} / ${value.alpha})`; case 'lch': return `lch(${value.lightness}% ${value.chroma} ${value.hue} / ${value.alpha})`; default: return undefined; } }