const fs = require('fs'); const colors = require('../app/theme/colors.js'); // Helper function to flatten the nested color objects const flattenColors = (colors) => { let flatColors = {}; for (const [key, value] of Object.entries(colors)) { if (typeof value === 'object') { for (const [nestedKey, nestedValue] of Object.entries(value)) { flatColors[`${key}-${nestedKey}`] = nestedValue; } } else { flatColors[key] = value; } } return flatColors; }; const flatColors = flattenColors(colors); const generatedCSS = `/* Auto-generated, DO NOT EDIT */ /* fill */ ${ Object.entries(flatColors).map(([name, value]) => `.fill-${ name.replace(/ /g, '-') } { fill: ${ value } }`).join('\n') } ${ Object.entries(flatColors).map(([name, value]) => `.hover-fill-${ name.replace(/ /g, '-') }:hover svg { fill: ${ value } }`).join('\n') } /* color */ ${ Object.entries(flatColors).map(([name, value]) => `.color-${ name.replace(/ /g, '-') } { color: ${ value } }`).join('\n') } /* hover color */ ${ Object.entries(flatColors).map(([name, value]) => `.hover-${ name.replace(/ /g, '-') }:hover { color: ${ value } }`).join('\n') } ${ Object.entries(flatColors).map(([name, value]) => `.border-${ name.replace(/ /g, '-') } { border-color: ${ value } }`).join('\n') } `; // Write the generated CSS to a file fs.writeFileSync('app/styles/colors-autogen.css', generatedCSS);