@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
JavaScript
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));
}