UNPKG

@maggioli-design-system/design-tokens

Version:

This is the Design Token library of Maggioli Design System, here you'll find all the visual data used around the libraries.

69 lines (68 loc) 3.09 kB
import StyleDictionary from 'style-dictionary'; import { flutterColorFormat, cssHexFormat, cssRgbFormat, jsFormat, jsTailwindColorsFormat, jsonCoolorsFormat, jsTailwindFontFamilyFormat, flutterFontFormat, flutterFontWeightTransform, flutterToDoubleTransform, jsTailwindFontSizeFormat, jsTailwindLeadingFormat, jsTailwindPropsFormat, jsTailwindScreensFormat, tailwindcssAspetctRationTransform, tailwindPxToRemTransform, } from '../formats/index.js'; import { getBrandColorConfig } from '../config/sd-brand-color.config.js'; import chalk from 'chalk'; import pkg from 'fs-extra'; import { resolve } from 'path'; import { lilconfig } from 'lilconfig'; // importing for esm const { mkdir, writeFile } = pkg; export async function getColorsConfig(path) { if (path) return lilconfig('magma-design-tokens').load(path); return lilconfig('magma-design-tokens', {}).search(); } // eslint-disable-next-line @typescript-eslint/no-explicit-any export function writeJsonTokens(tokens, name, dirPath) { const jsonTokens = JSON.stringify(tokens, null, 2); mkdir(dirPath, { recursive: true }); writeFile(resolve(`${dirPath}/${name}.json`), jsonTokens, 'utf8', err => { if (err) { console.error(chalk.red('An error occured while writing JSON Object to File.')); console.error(chalk.red(err)); } }); } /** * Export colors with base style dictionary configuration (see config/sd-brand-color.config.ts) * @param tokens * @param fileName the suffix of generated files * @param outputDir output directory * @param platform array of platform that needs to build, if undefined build all platform for colors (css, dart, js) */ export function exportColors(tokens, fileName, outputDir, platform) { const s = StyleDictionary.registerFormat(cssHexFormat) .registerFormat(cssRgbFormat) .registerFormat(jsTailwindColorsFormat) .registerFormat(flutterColorFormat) .extend(getBrandColorConfig(fileName, tokens, outputDir)); if (platform) { platform.forEach(p => s.buildPlatform(p)); } else { s.buildAllPlatforms(); } } export function getStyleDictionaryWithAllCustomTransform() { return (StyleDictionary // COLOR .registerFormat(jsFormat) .registerFormat(jsTailwindColorsFormat) .registerFormat(flutterColorFormat) .registerFormat(cssHexFormat) .registerFormat(cssRgbFormat) .registerFormat(jsonCoolorsFormat) // FONT .registerFormat(flutterFontFormat) .registerFormat(jsTailwindFontFamilyFormat) .registerFormat(jsTailwindFontSizeFormat) .registerFormat(jsTailwindLeadingFormat) .registerFormat(jsTailwindScreensFormat) .registerFormat(jsTailwindPropsFormat) // transform for flutter font .registerTransform(flutterFontWeightTransform) .registerTransform(flutterToDoubleTransform) // transform for tailwind props .registerTransform(tailwindcssAspetctRationTransform) .registerTransform(tailwindPxToRemTransform)); }