UNPKG

@terrazzo/token-tools

Version:

Various utilities for token types

37 lines 1.66 kB
import { transformColor } from './color.js'; import { defaultAliasTransform } from './lib.js'; /** Convert gradient value to CSS */ export function transformGradient(token, options) { const { tokensSet, transformAlias = defaultAliasTransform } = options; if (token.aliasChain?.[0]) { return transformAlias(tokensSet[token.aliasChain[0]]); } let isHDR = false; const colors = []; const positions = []; for (let i = 0; i < token.$value.length; i++) { const { color, position } = token.$value[i]; const colorValue = token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: color }, options); if (typeof colorValue !== 'string') { isHDR = true; } colors.push(colorValue); positions.push(token.partialAliasOf?.[i]?.position ? transformAlias(tokensSet[token.partialAliasOf[i].position]) : `${+(100 * position).toFixed(3)}%`); } function formatStop(i, colorKey = '.') { return `${typeof colors[i] === 'string' ? colors[i] : colors[i][colorKey]} ${positions[i]}`; } return isHDR ? { '.': token.$value.map((_, i) => formatStop(i, '.')).join(', '), srgb: token.$value.map((_, i) => formatStop(i, 'srgb')).join(', '), p3: token.$value.map((_, i) => formatStop(i, 'p3')).join(', '), rec2020: token.$value.map((_, i) => formatStop(i, 'rec2020')).join(', '), } : token.$value.map((_, i) => formatStop(i, positions[i])).join(', '); } //# sourceMappingURL=gradient.js.map