import StyleDictionary from "style-dictionary"; import * as prettier from "prettier"; import { simplifyTokens } from "./utils.js"; StyleDictionary.registerFormat({ name: "vanilla-extract/sprinkle-values", formatter({ dictionary }) { const { color: colorTokens, size: sizeTokens, ...otherTokens } = simplifyTokens(dictionary.tokens); const { type: typeSizeTokens, spacing: spacingSizeTokens, ...otherSizeTokens } = sizeTokens; const colors = Object.keys(colorTokens) .reduce((acc, key) => { if (typeof colorTokens[key] === "object") { for (const subkey of Object.keys(colorTokens[key])) { acc[`${key}-${subkey}`] = colorTokens[key][subkey]; } } else { acc[key] = colorTokens[key]; } return acc; }, {}); const fontSizes = Object.keys(typeSizeTokens) .reduce((acc, key) => ({ ...acc, [key]: typeSizeTokens[key].font, }), {}); const lineHeights = Object.keys(typeSizeTokens) .reduce((acc, key) => ({ ...acc, [key]: typeSizeTokens[key].line, }), {}); const values = { colors, fontSizes, lineHeights, spacing: { ...spacingSizeTokens, none: 0, auto: "auto", }, ...otherTokens, }; for (const key of Object.keys(otherSizeTokens)) { // some need to be merged vs overwriting if (values.hasOwnProperty(key)) { Object.assign(values[key], otherSizeTokens[key]); } else { values[key] = otherSizeTokens[key]; } } return prettier.format(` /* eslint-disable */ /** * GENERATED * Do not edit directly */ export const sprinkleValues = Object.freeze(${JSON.stringify(values, null, 0)}); `, { parser: "typescript" }); }, });