diff --git a/packages/ffe-core/scripts/generate-semantic-colors.js b/packages/ffe-core/scripts/generate-semantic-colors.js index 298df4cdb3..db3c2aa06c 100755 --- a/packages/ffe-core/scripts/generate-semantic-colors.js +++ b/packages/ffe-core/scripts/generate-semantic-colors.js @@ -3,6 +3,9 @@ const fs = require('fs'); const path = require('path'); const writeToFile = require('./lib/writeToFile'); +const usedPrimitive = {}; +const usedSemantic = {}; + const files = { primitive: '01 Primitive.value.json', semanticLight: '02 Semantic.Light.json', @@ -23,7 +26,9 @@ const convertPrimitivesJsonToCss = jsonFile => { .replace(/ø/g, 'oe') .replace(/æ/g, 'ae') .replace(/å/g, 'aa'); - cssLines.push(`${cssVarName}: ${value.$value};`); + if (usedPrimitive[`var(${cssVarName})`]) { + cssLines.push(`${cssVarName}: ${value.$value};`); + } } else if (typeof value === 'object') { processColorTokens(value, `${prefix}${key}-`); } @@ -58,6 +63,7 @@ const convertContextJsonToCss = jsonFile => { .replace(/å/g, 'aa')})` : value.$value; cssLines.push(`${cssVarName}: ${cssVarValue};`); + usedSemantic[cssVarValue] = true; } else if (typeof value === 'object') { processColorTokens(value, `${prefix}${key}-`); } @@ -98,7 +104,10 @@ const convertSemanticJsonToCss = ( .replace(/æ/g, 'ae') .replace(/å/g, 'aa')})` : value.$value; - cssLines.push(`${cssVarName}: ${cssVarValue};`); + if (usedSemantic[`var(${cssVarName})`]) { + cssLines.push(`${cssVarName}: ${cssVarValue};`); + usedPrimitive[cssVarValue] = true; + } } else if (typeof value === 'object') { processColorTokens(value, `${prefix}${key}-`); } @@ -135,11 +144,11 @@ function filePath(filename) { function generateSemanticColors() { let cssContent = '// Generated from Figma tokens'; - cssContent += `\n\n${convertPrimitivesJsonToCss(filePath(files.primitive))}`; - cssContent += `\n\n${convertSemanticJsonToCss(filePath(files.semanticLight))}`; - cssContent += `\n\n${convertSemanticJsonToCss(filePath(files.semanticDark), filePath(files.context), filePath(files.contextAccent))}`; cssContent += `\n\n// Context accent \n.accent {\n${convertContextJsonToCss(filePath(files.contextAccent)).join('\n')}}\n`; cssContent += `\n\n// Context \n:root,\n:host {\n${convertContextJsonToCss(filePath(files.context)).join('\n')}}\n`; + cssContent += `\n\n${convertSemanticJsonToCss(filePath(files.semanticLight))}`; + cssContent += `\n\n${convertSemanticJsonToCss(filePath(files.semanticDark), filePath(files.context), filePath(files.contextAccent))}`; + cssContent += `\n\n${convertPrimitivesJsonToCss(filePath(files.primitive))}`; writeToFile('less/colors-semantic.less')(cssContent); writeToFile('css/colors-semantic.css')(cssContent);