jellyfish_designtokens
Version:
Ultimate design tokens from Jelly Fish Design System
109 lines (88 loc) • 3.02 kB
JavaScript
const { registerTransforms } = require("@tokens-studio/sd-transforms");
const StyleDictionary = require("style-dictionary");
const { componentNames, configComponentsFiles } = require("./getCompsFiles.js");
const { brandNames, themesNames, configBrandFiles} = require("./getBrandFiles.js");
const { patternNamesArray, configPatternsFiles } = require("./getPatternsFiles.js");
const outputRefs = require("./outputRefs.js");
StyleDictionary.registerFormat({
name: "outputRefs",
formatter: outputRefs,
});
registerTransforms(StyleDictionary, {
expand: { composition: false, typography: true, border: false, shadow: false },
excludeParentKeys: false,
});
//Constant transformGroup used across platforms
StyleDictionary.registerTransformGroup({
name: "jellyfish/web",
transforms: [
"name/cti/kebab",
"attribute/cti",
"ts/opacity",
"ts/resolveMath",
"ts/size/lineheight",
"ts/typography/fontWeight",
"ts/size/css/letterspacing",
"ts/typography/css/fontFamily",
"ts/typography/css/shorthand",
"ts/border/css/shorthand",
"ts/shadow/css/shorthand",
"ts/color/css/hexrgba",
"ts/color/modifiers",
],
});
//Global Tokens Builder Configuration
const Global = StyleDictionary.extend({
source: ["figma/GLOBAL/*.+(json)"],
platforms: {
scss: {
transformGroup: "jellyfish/web",
buildPath: "dist/global/",
files: [{ destination: "global.css", format: "css/variables" }],
},
},
});
//Patterns Files Builder Configuration
const Patterns = StyleDictionary.extend({
include: ["figma/**/*.+(json)"],
source: ["figma/PATTERNS/**/*.+(json)"],
platforms: {
scss: {
transformGroup: "jellyfish/web",
buildPath: "dist/patterns/",
files: configPatternsFiles(patternNamesArray),
},
},
});
//Components Files Builder Configuration
const Comps = StyleDictionary.extend({
source: ["figma/**/*.+(json)"],
platforms: {
scss: {
transformGroup: "jellyfish/web",
buildPath: "dist/comps/",
files: configComponentsFiles(componentNames),
},
},
});
//Running Builders
console.log("\n==============================================");
console.log("\nBuilding Global Tokens");
Global.cleanAllPlatforms();
Global.buildAllPlatforms();
brandNames.map(function (brand) {
themesNames.map(function (themes) {
console.log("\n==============================================");
console.log(`\nProcessing: [${themes}] [${brand}]`);
const Brands = StyleDictionary.extend(configBrandFiles(brand, themes));
Brands.buildAllPlatforms();
});
});
console.log("\n==============================================");
console.log("\nBuilding Patterns Tokens");
Patterns.cleanAllPlatforms();
Patterns.buildAllPlatforms();
console.log("\n==============================================");
console.log("\nBuilding Component Tokens");
Comps.cleanAllPlatforms();
Comps.buildAllPlatforms();