├── .github └── workflows │ └── create-tokens.yml ├── .gitignore ├── LICENSE ├── README.md ├── build.js ├── output ├── dark.css ├── global.css └── light.css ├── package-lock.json ├── package.json ├── tokens.json └── tokens ├── dark.json ├── global.json ├── input.json └── light.json /.github/workflows/create-tokens.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: [push] 3 | 4 | jobs: 5 | build: 6 | runs-on: ubuntu-latest 7 | 8 | steps: 9 | - uses: actions/checkout@v2 10 | - name: Setup Node.js environment 11 | uses: actions/setup-node@v2.4.0 12 | # Install dependencies 13 | - run: npm install 14 | # Transform Figma Tokens JSON to something Style Dictionary can read 15 | - run: npx token-transformer tokens.json tokens/global.json global 16 | # Create a light theme, exclude the global tokens 17 | - run: npx token-transformer tokens.json tokens/light.json global,light,theme global 18 | # Create a dark theme, exclude the global tokens 19 | - run: npx token-transformer tokens.json tokens/dark.json global,dark,theme global 20 | # Convert tokens according to Style Dictionary config 21 | - run: node build.js 22 | # Add files that were created during a run, e.g. created files from style dictionary or token-transformer. 23 | - uses: stefanzweifel/git-auto-commit-action@v4 24 | with: 25 | commit_message: Update Tokens 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Jan Six 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # figma-tokens-example-multi 2 | 3 | This example illustrates how you can transform your tokens stored on Figma Tokens (with GitHub sync enabled) to be automatically transformed with token-transformer and Style Dictionary in a dark/light theme environment. 4 | 5 | Change your tokens in `tokens.json` (either directly or with the Figma Tokens plugin in Figma). The GitHub action will automatically generate tokens to the `tokens/` directory that can then be read by Style Dictionary, which will output tokens to the format you defined in `build.js` - css variables will be generated in the `output` directory. 6 | -------------------------------------------------------------------------------- /build.js: -------------------------------------------------------------------------------- 1 | const StyleDictionaryPackage = require('style-dictionary'); 2 | 3 | // HAVE THE STYLE DICTIONARY CONFIG DYNAMICALLY GENERATED 4 | 5 | StyleDictionaryPackage.registerFormat({ 6 | name: 'css/variables', 7 | formatter: function (dictionary, config) { 8 | return `${this.selector} { 9 | ${dictionary.allProperties.map(prop => ` --${prop.name}: ${prop.value};`).join('\n')} 10 | }` 11 | } 12 | }); 13 | 14 | StyleDictionaryPackage.registerTransform({ 15 | name: 'sizes/px', 16 | type: 'value', 17 | matcher: function(prop) { 18 | // You can be more specific here if you only want 'em' units for font sizes 19 | return ["fontSize", "spacing", "borderRadius", "borderWidth", "sizing"].includes(prop.attributes.category); 20 | }, 21 | transformer: function(prop) { 22 | // You can also modify the value here if you want to convert pixels to ems 23 | return parseFloat(prop.original.value) + 'px'; 24 | } 25 | }); 26 | 27 | function getStyleDictionaryConfig(theme) { 28 | return { 29 | "source": [ 30 | `tokens/${theme}.json`, 31 | ], 32 | "platforms": { 33 | "web": { 34 | "transforms": ["attribute/cti", "name/cti/kebab", "sizes/px"], 35 | "buildPath": `output/`, 36 | "files": [{ 37 | "destination": `${theme}.css`, 38 | "format": "css/variables", 39 | "selector": `.${theme}-theme` 40 | }] 41 | } 42 | } 43 | }; 44 | } 45 | 46 | console.log('Build started...'); 47 | 48 | // PROCESS THE DESIGN TOKENS FOR THE DIFFEREN BRANDS AND PLATFORMS 49 | 50 | ['global', 'dark', 'light'].map(function (theme) { 51 | 52 | console.log('\n=============================================='); 53 | console.log(`\nProcessing: [${theme}]`); 54 | 55 | const StyleDictionary = StyleDictionaryPackage.extend(getStyleDictionaryConfig(theme)); 56 | 57 | StyleDictionary.buildPlatform('web'); 58 | 59 | console.log('\nEnd processing'); 60 | }) 61 | 62 | console.log('\n=============================================='); 63 | console.log('\nBuild completed!'); 64 | -------------------------------------------------------------------------------- /output/dark.css: -------------------------------------------------------------------------------- 1 | .dark-theme { 2 | --theme-bg-default: #171717; 3 | --theme-bg-subtle: #323232; 4 | --theme-bg-muted: #757575; 5 | --theme-fg-default: #ffffff; 6 | --theme-fg-on-accent: #ffffff; 7 | --theme-fg-muted: #eeeeee; 8 | --theme-fg-subtle: #9e9e9e; 9 | --theme-accent-default: #3d53f5; 10 | --theme-accent-subtle: #060818; 11 | } -------------------------------------------------------------------------------- /output/global.css: -------------------------------------------------------------------------------- 1 | .global-theme { 2 | --colors-black: #171717; 3 | --colors-white: #ffffff; 4 | --colors-red-50: #FFF5F7; 5 | --colors-red-100: #fce8ec; 6 | --colors-red-200: #f9d0d9; 7 | --colors-red-300: #f2a2b3; 8 | --colors-red-400: #e95c7b; 9 | --colors-red-500: #df1642; 10 | --colors-red-600: #9c0f2e; 11 | --colors-red-700: #59091a; 12 | --colors-red-800: #2d040d; 13 | --colors-red-900: #160207; 14 | --colors-red-950: #100105; 15 | --colors-blue-50: #eceefe; 16 | --colors-blue-100: #d8ddfd; 17 | --colors-blue-200: #b1bafb; 18 | --colors-blue-300: #8b98f9; 19 | --colors-blue-400: #6475f7; 20 | --colors-blue-500: #3d53f5; 21 | --colors-blue-600: #3142c4; 22 | --colors-blue-700: #253293; 23 | --colors-blue-800: #182162; 24 | --colors-blue-900: #0c1131; 25 | --colors-blue-950: #060818; 26 | --colors-grey-50: #fcfcfc; 27 | --colors-grey-100: #f5f5f5; 28 | --colors-grey-200: #eeeeee; 29 | --colors-grey-300: #e0e0e0; 30 | --colors-grey-400: #bdbdbd; 31 | --colors-grey-500: #9e9e9e; 32 | --colors-grey-600: #757575; 33 | --colors-grey-700: #616161; 34 | --colors-grey-800: #424242; 35 | --colors-grey-900: #323232; 36 | --colors-grey-950: #212121; 37 | } -------------------------------------------------------------------------------- /output/light.css: -------------------------------------------------------------------------------- 1 | .light-theme { 2 | --theme-bg-default: #ffffff; 3 | --theme-bg-subtle: #f5f5f5; 4 | --theme-bg-muted: #e0e0e0; 5 | --theme-fg-default: #171717; 6 | --theme-fg-on-accent: #ffffff; 7 | --theme-fg-muted: #616161; 8 | --theme-fg-subtle: #9e9e9e; 9 | --theme-accent-default: #3d53f5; 10 | --theme-accent-subtle: #eceefe; 11 | } -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "my-app", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "style-dictionary": "^3.0.2" 12 | } 13 | }, 14 | "node_modules/ansi-styles": { 15 | "version": "4.3.0", 16 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 17 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 18 | "dependencies": { 19 | "color-convert": "^2.0.1" 20 | }, 21 | "engines": { 22 | "node": ">=8" 23 | }, 24 | "funding": { 25 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 26 | } 27 | }, 28 | "node_modules/balanced-match": { 29 | "version": "1.0.2", 30 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 31 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 32 | }, 33 | "node_modules/brace-expansion": { 34 | "version": "1.1.11", 35 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 36 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 37 | "dependencies": { 38 | "balanced-match": "^1.0.0", 39 | "concat-map": "0.0.1" 40 | } 41 | }, 42 | "node_modules/camel-case": { 43 | "version": "4.1.2", 44 | "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", 45 | "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", 46 | "dependencies": { 47 | "pascal-case": "^3.1.2", 48 | "tslib": "^2.0.3" 49 | } 50 | }, 51 | "node_modules/capital-case": { 52 | "version": "1.0.4", 53 | "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", 54 | "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", 55 | "dependencies": { 56 | "no-case": "^3.0.4", 57 | "tslib": "^2.0.3", 58 | "upper-case-first": "^2.0.2" 59 | } 60 | }, 61 | "node_modules/chalk": { 62 | "version": "4.1.2", 63 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 64 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 65 | "dependencies": { 66 | "ansi-styles": "^4.1.0", 67 | "supports-color": "^7.1.0" 68 | }, 69 | "engines": { 70 | "node": ">=10" 71 | }, 72 | "funding": { 73 | "url": "https://github.com/chalk/chalk?sponsor=1" 74 | } 75 | }, 76 | "node_modules/change-case": { 77 | "version": "4.1.2", 78 | "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", 79 | "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", 80 | "dependencies": { 81 | "camel-case": "^4.1.2", 82 | "capital-case": "^1.0.4", 83 | "constant-case": "^3.0.4", 84 | "dot-case": "^3.0.4", 85 | "header-case": "^2.0.4", 86 | "no-case": "^3.0.4", 87 | "param-case": "^3.0.4", 88 | "pascal-case": "^3.1.2", 89 | "path-case": "^3.0.4", 90 | "sentence-case": "^3.0.4", 91 | "snake-case": "^3.0.4", 92 | "tslib": "^2.0.3" 93 | } 94 | }, 95 | "node_modules/color-convert": { 96 | "version": "2.0.1", 97 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 98 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 99 | "dependencies": { 100 | "color-name": "~1.1.4" 101 | }, 102 | "engines": { 103 | "node": ">=7.0.0" 104 | } 105 | }, 106 | "node_modules/color-name": { 107 | "version": "1.1.4", 108 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 109 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 110 | }, 111 | "node_modules/commander": { 112 | "version": "5.1.0", 113 | "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", 114 | "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", 115 | "engines": { 116 | "node": ">= 6" 117 | } 118 | }, 119 | "node_modules/concat-map": { 120 | "version": "0.0.1", 121 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 122 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 123 | }, 124 | "node_modules/constant-case": { 125 | "version": "3.0.4", 126 | "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", 127 | "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", 128 | "dependencies": { 129 | "no-case": "^3.0.4", 130 | "tslib": "^2.0.3", 131 | "upper-case": "^2.0.2" 132 | } 133 | }, 134 | "node_modules/dot-case": { 135 | "version": "3.0.4", 136 | "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", 137 | "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", 138 | "dependencies": { 139 | "no-case": "^3.0.4", 140 | "tslib": "^2.0.3" 141 | } 142 | }, 143 | "node_modules/fs-extra": { 144 | "version": "8.1.0", 145 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 146 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 147 | "dependencies": { 148 | "graceful-fs": "^4.2.0", 149 | "jsonfile": "^4.0.0", 150 | "universalify": "^0.1.0" 151 | }, 152 | "engines": { 153 | "node": ">=6 <7 || >=8" 154 | } 155 | }, 156 | "node_modules/fs.realpath": { 157 | "version": "1.0.0", 158 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 159 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 160 | }, 161 | "node_modules/glob": { 162 | "version": "7.2.0", 163 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 164 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 165 | "dependencies": { 166 | "fs.realpath": "^1.0.0", 167 | "inflight": "^1.0.4", 168 | "inherits": "2", 169 | "minimatch": "^3.0.4", 170 | "once": "^1.3.0", 171 | "path-is-absolute": "^1.0.0" 172 | }, 173 | "engines": { 174 | "node": "*" 175 | }, 176 | "funding": { 177 | "url": "https://github.com/sponsors/isaacs" 178 | } 179 | }, 180 | "node_modules/graceful-fs": { 181 | "version": "4.2.8", 182 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 183 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" 184 | }, 185 | "node_modules/has-flag": { 186 | "version": "4.0.0", 187 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 188 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 189 | "engines": { 190 | "node": ">=8" 191 | } 192 | }, 193 | "node_modules/header-case": { 194 | "version": "2.0.4", 195 | "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", 196 | "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", 197 | "dependencies": { 198 | "capital-case": "^1.0.4", 199 | "tslib": "^2.0.3" 200 | } 201 | }, 202 | "node_modules/inflight": { 203 | "version": "1.0.6", 204 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 205 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 206 | "dependencies": { 207 | "once": "^1.3.0", 208 | "wrappy": "1" 209 | } 210 | }, 211 | "node_modules/inherits": { 212 | "version": "2.0.4", 213 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 214 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 215 | }, 216 | "node_modules/json5": { 217 | "version": "2.2.0", 218 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", 219 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", 220 | "dependencies": { 221 | "minimist": "^1.2.5" 222 | }, 223 | "bin": { 224 | "json5": "lib/cli.js" 225 | }, 226 | "engines": { 227 | "node": ">=6" 228 | } 229 | }, 230 | "node_modules/jsonfile": { 231 | "version": "4.0.0", 232 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 233 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 234 | "optionalDependencies": { 235 | "graceful-fs": "^4.1.6" 236 | } 237 | }, 238 | "node_modules/lodash": { 239 | "version": "4.17.21", 240 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 241 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 242 | }, 243 | "node_modules/lower-case": { 244 | "version": "2.0.2", 245 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", 246 | "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", 247 | "dependencies": { 248 | "tslib": "^2.0.3" 249 | } 250 | }, 251 | "node_modules/minimatch": { 252 | "version": "3.0.4", 253 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 254 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 255 | "dependencies": { 256 | "brace-expansion": "^1.1.7" 257 | }, 258 | "engines": { 259 | "node": "*" 260 | } 261 | }, 262 | "node_modules/minimist": { 263 | "version": "1.2.5", 264 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 265 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 266 | }, 267 | "node_modules/no-case": { 268 | "version": "3.0.4", 269 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", 270 | "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", 271 | "dependencies": { 272 | "lower-case": "^2.0.2", 273 | "tslib": "^2.0.3" 274 | } 275 | }, 276 | "node_modules/once": { 277 | "version": "1.4.0", 278 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 279 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 280 | "dependencies": { 281 | "wrappy": "1" 282 | } 283 | }, 284 | "node_modules/param-case": { 285 | "version": "3.0.4", 286 | "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", 287 | "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", 288 | "dependencies": { 289 | "dot-case": "^3.0.4", 290 | "tslib": "^2.0.3" 291 | } 292 | }, 293 | "node_modules/pascal-case": { 294 | "version": "3.1.2", 295 | "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", 296 | "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", 297 | "dependencies": { 298 | "no-case": "^3.0.4", 299 | "tslib": "^2.0.3" 300 | } 301 | }, 302 | "node_modules/path-case": { 303 | "version": "3.0.4", 304 | "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", 305 | "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", 306 | "dependencies": { 307 | "dot-case": "^3.0.4", 308 | "tslib": "^2.0.3" 309 | } 310 | }, 311 | "node_modules/path-is-absolute": { 312 | "version": "1.0.1", 313 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 314 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 315 | "engines": { 316 | "node": ">=0.10.0" 317 | } 318 | }, 319 | "node_modules/sentence-case": { 320 | "version": "3.0.4", 321 | "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", 322 | "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", 323 | "dependencies": { 324 | "no-case": "^3.0.4", 325 | "tslib": "^2.0.3", 326 | "upper-case-first": "^2.0.2" 327 | } 328 | }, 329 | "node_modules/snake-case": { 330 | "version": "3.0.4", 331 | "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", 332 | "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", 333 | "dependencies": { 334 | "dot-case": "^3.0.4", 335 | "tslib": "^2.0.3" 336 | } 337 | }, 338 | "node_modules/style-dictionary": { 339 | "version": "3.0.3", 340 | "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.0.3.tgz", 341 | "integrity": "sha512-4s8wK1o4M/o9AhwsMqOdu0swBJrvxXspcQ7efdKpER5OP7DnnGC5KeCPHlLdciNYDng+z7TWHUXlw1xs7rR50g==", 342 | "dependencies": { 343 | "chalk": "^4.0.0", 344 | "change-case": "^4.1.2", 345 | "commander": "^5.1.0", 346 | "fs-extra": "^8.1.0", 347 | "glob": "^7.1.6", 348 | "json5": "^2.1.3", 349 | "lodash": "^4.17.15", 350 | "tinycolor2": "^1.4.1" 351 | }, 352 | "bin": { 353 | "style-dictionary": "bin/style-dictionary" 354 | }, 355 | "engines": { 356 | "node": ">=12.0.0" 357 | } 358 | }, 359 | "node_modules/supports-color": { 360 | "version": "7.2.0", 361 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 362 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 363 | "dependencies": { 364 | "has-flag": "^4.0.0" 365 | }, 366 | "engines": { 367 | "node": ">=8" 368 | } 369 | }, 370 | "node_modules/tinycolor2": { 371 | "version": "1.4.2", 372 | "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", 373 | "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", 374 | "engines": { 375 | "node": "*" 376 | } 377 | }, 378 | "node_modules/tslib": { 379 | "version": "2.3.1", 380 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", 381 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" 382 | }, 383 | "node_modules/universalify": { 384 | "version": "0.1.2", 385 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 386 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 387 | "engines": { 388 | "node": ">= 4.0.0" 389 | } 390 | }, 391 | "node_modules/upper-case": { 392 | "version": "2.0.2", 393 | "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", 394 | "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", 395 | "dependencies": { 396 | "tslib": "^2.0.3" 397 | } 398 | }, 399 | "node_modules/upper-case-first": { 400 | "version": "2.0.2", 401 | "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", 402 | "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", 403 | "dependencies": { 404 | "tslib": "^2.0.3" 405 | } 406 | }, 407 | "node_modules/wrappy": { 408 | "version": "1.0.2", 409 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 410 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 411 | } 412 | }, 413 | "dependencies": { 414 | "ansi-styles": { 415 | "version": "4.3.0", 416 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 417 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 418 | "requires": { 419 | "color-convert": "^2.0.1" 420 | } 421 | }, 422 | "balanced-match": { 423 | "version": "1.0.2", 424 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 425 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 426 | }, 427 | "brace-expansion": { 428 | "version": "1.1.11", 429 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 430 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 431 | "requires": { 432 | "balanced-match": "^1.0.0", 433 | "concat-map": "0.0.1" 434 | } 435 | }, 436 | "camel-case": { 437 | "version": "4.1.2", 438 | "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", 439 | "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", 440 | "requires": { 441 | "pascal-case": "^3.1.2", 442 | "tslib": "^2.0.3" 443 | } 444 | }, 445 | "capital-case": { 446 | "version": "1.0.4", 447 | "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", 448 | "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", 449 | "requires": { 450 | "no-case": "^3.0.4", 451 | "tslib": "^2.0.3", 452 | "upper-case-first": "^2.0.2" 453 | } 454 | }, 455 | "chalk": { 456 | "version": "4.1.2", 457 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 458 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 459 | "requires": { 460 | "ansi-styles": "^4.1.0", 461 | "supports-color": "^7.1.0" 462 | } 463 | }, 464 | "change-case": { 465 | "version": "4.1.2", 466 | "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", 467 | "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", 468 | "requires": { 469 | "camel-case": "^4.1.2", 470 | "capital-case": "^1.0.4", 471 | "constant-case": "^3.0.4", 472 | "dot-case": "^3.0.4", 473 | "header-case": "^2.0.4", 474 | "no-case": "^3.0.4", 475 | "param-case": "^3.0.4", 476 | "pascal-case": "^3.1.2", 477 | "path-case": "^3.0.4", 478 | "sentence-case": "^3.0.4", 479 | "snake-case": "^3.0.4", 480 | "tslib": "^2.0.3" 481 | } 482 | }, 483 | "color-convert": { 484 | "version": "2.0.1", 485 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 486 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 487 | "requires": { 488 | "color-name": "~1.1.4" 489 | } 490 | }, 491 | "color-name": { 492 | "version": "1.1.4", 493 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 494 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 495 | }, 496 | "commander": { 497 | "version": "5.1.0", 498 | "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", 499 | "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" 500 | }, 501 | "concat-map": { 502 | "version": "0.0.1", 503 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 504 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 505 | }, 506 | "constant-case": { 507 | "version": "3.0.4", 508 | "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", 509 | "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", 510 | "requires": { 511 | "no-case": "^3.0.4", 512 | "tslib": "^2.0.3", 513 | "upper-case": "^2.0.2" 514 | } 515 | }, 516 | "dot-case": { 517 | "version": "3.0.4", 518 | "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", 519 | "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", 520 | "requires": { 521 | "no-case": "^3.0.4", 522 | "tslib": "^2.0.3" 523 | } 524 | }, 525 | "fs-extra": { 526 | "version": "8.1.0", 527 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 528 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 529 | "requires": { 530 | "graceful-fs": "^4.2.0", 531 | "jsonfile": "^4.0.0", 532 | "universalify": "^0.1.0" 533 | } 534 | }, 535 | "fs.realpath": { 536 | "version": "1.0.0", 537 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 538 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 539 | }, 540 | "glob": { 541 | "version": "7.2.0", 542 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 543 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 544 | "requires": { 545 | "fs.realpath": "^1.0.0", 546 | "inflight": "^1.0.4", 547 | "inherits": "2", 548 | "minimatch": "^3.0.4", 549 | "once": "^1.3.0", 550 | "path-is-absolute": "^1.0.0" 551 | } 552 | }, 553 | "graceful-fs": { 554 | "version": "4.2.8", 555 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 556 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" 557 | }, 558 | "has-flag": { 559 | "version": "4.0.0", 560 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 561 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 562 | }, 563 | "header-case": { 564 | "version": "2.0.4", 565 | "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", 566 | "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", 567 | "requires": { 568 | "capital-case": "^1.0.4", 569 | "tslib": "^2.0.3" 570 | } 571 | }, 572 | "inflight": { 573 | "version": "1.0.6", 574 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 575 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 576 | "requires": { 577 | "once": "^1.3.0", 578 | "wrappy": "1" 579 | } 580 | }, 581 | "inherits": { 582 | "version": "2.0.4", 583 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 584 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 585 | }, 586 | "json5": { 587 | "version": "2.2.0", 588 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", 589 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", 590 | "requires": { 591 | "minimist": "^1.2.5" 592 | } 593 | }, 594 | "jsonfile": { 595 | "version": "4.0.0", 596 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 597 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 598 | "requires": { 599 | "graceful-fs": "^4.1.6" 600 | } 601 | }, 602 | "lodash": { 603 | "version": "4.17.21", 604 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 605 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 606 | }, 607 | "lower-case": { 608 | "version": "2.0.2", 609 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", 610 | "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", 611 | "requires": { 612 | "tslib": "^2.0.3" 613 | } 614 | }, 615 | "minimatch": { 616 | "version": "3.0.4", 617 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 618 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 619 | "requires": { 620 | "brace-expansion": "^1.1.7" 621 | } 622 | }, 623 | "minimist": { 624 | "version": "1.2.5", 625 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 626 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 627 | }, 628 | "no-case": { 629 | "version": "3.0.4", 630 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", 631 | "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", 632 | "requires": { 633 | "lower-case": "^2.0.2", 634 | "tslib": "^2.0.3" 635 | } 636 | }, 637 | "once": { 638 | "version": "1.4.0", 639 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 640 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 641 | "requires": { 642 | "wrappy": "1" 643 | } 644 | }, 645 | "param-case": { 646 | "version": "3.0.4", 647 | "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", 648 | "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", 649 | "requires": { 650 | "dot-case": "^3.0.4", 651 | "tslib": "^2.0.3" 652 | } 653 | }, 654 | "pascal-case": { 655 | "version": "3.1.2", 656 | "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", 657 | "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", 658 | "requires": { 659 | "no-case": "^3.0.4", 660 | "tslib": "^2.0.3" 661 | } 662 | }, 663 | "path-case": { 664 | "version": "3.0.4", 665 | "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", 666 | "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", 667 | "requires": { 668 | "dot-case": "^3.0.4", 669 | "tslib": "^2.0.3" 670 | } 671 | }, 672 | "path-is-absolute": { 673 | "version": "1.0.1", 674 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 675 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 676 | }, 677 | "sentence-case": { 678 | "version": "3.0.4", 679 | "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", 680 | "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", 681 | "requires": { 682 | "no-case": "^3.0.4", 683 | "tslib": "^2.0.3", 684 | "upper-case-first": "^2.0.2" 685 | } 686 | }, 687 | "snake-case": { 688 | "version": "3.0.4", 689 | "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", 690 | "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", 691 | "requires": { 692 | "dot-case": "^3.0.4", 693 | "tslib": "^2.0.3" 694 | } 695 | }, 696 | "style-dictionary": { 697 | "version": "3.0.3", 698 | "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.0.3.tgz", 699 | "integrity": "sha512-4s8wK1o4M/o9AhwsMqOdu0swBJrvxXspcQ7efdKpER5OP7DnnGC5KeCPHlLdciNYDng+z7TWHUXlw1xs7rR50g==", 700 | "requires": { 701 | "chalk": "^4.0.0", 702 | "change-case": "^4.1.2", 703 | "commander": "^5.1.0", 704 | "fs-extra": "^8.1.0", 705 | "glob": "^7.1.6", 706 | "json5": "^2.1.3", 707 | "lodash": "^4.17.15", 708 | "tinycolor2": "^1.4.1" 709 | } 710 | }, 711 | "supports-color": { 712 | "version": "7.2.0", 713 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 714 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 715 | "requires": { 716 | "has-flag": "^4.0.0" 717 | } 718 | }, 719 | "tinycolor2": { 720 | "version": "1.4.2", 721 | "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", 722 | "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" 723 | }, 724 | "tslib": { 725 | "version": "2.3.1", 726 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", 727 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" 728 | }, 729 | "universalify": { 730 | "version": "0.1.2", 731 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 732 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 733 | }, 734 | "upper-case": { 735 | "version": "2.0.2", 736 | "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", 737 | "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", 738 | "requires": { 739 | "tslib": "^2.0.3" 740 | } 741 | }, 742 | "upper-case-first": { 743 | "version": "2.0.2", 744 | "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", 745 | "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", 746 | "requires": { 747 | "tslib": "^2.0.3" 748 | } 749 | }, 750 | "wrappy": { 751 | "version": "1.0.2", 752 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 753 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 754 | } 755 | } 756 | } 757 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": {}, 6 | "dependencies": { 7 | "style-dictionary": "^3.0.2" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tokens.json: -------------------------------------------------------------------------------- 1 | { 2 | "global": { 3 | "_colors": { 4 | "black": { 5 | "value": "#171717", 6 | "type": "color" 7 | }, 8 | "white": { 9 | "value": "#ffffff", 10 | "type": "color" 11 | }, 12 | "red": { 13 | "50": { 14 | "value": "#FFF5F7", 15 | "type": "color" 16 | }, 17 | "100": { 18 | "value": "#fce8ec", 19 | "type": "color" 20 | }, 21 | "200": { 22 | "value": "#f9d0d9", 23 | "type": "color" 24 | }, 25 | "300": { 26 | "value": "#f2a2b3", 27 | "type": "color" 28 | }, 29 | "400": { 30 | "value": "#e95c7b", 31 | "type": "color" 32 | }, 33 | "500": { 34 | "value": "#df1642", 35 | "type": "color" 36 | }, 37 | "600": { 38 | "value": "#9c0f2e", 39 | "type": "color" 40 | }, 41 | "700": { 42 | "value": "#59091a", 43 | "type": "color" 44 | }, 45 | "800": { 46 | "value": "#2d040d", 47 | "type": "color" 48 | }, 49 | "900": { 50 | "value": "#160207", 51 | "type": "color" 52 | }, 53 | "950": { 54 | "value": "#100105", 55 | "type": "color" 56 | } 57 | }, 58 | "blue": { 59 | "50": { 60 | "value": "#eceefe", 61 | "type": "color" 62 | }, 63 | "100": { 64 | "value": "#d8ddfd", 65 | "type": "color" 66 | }, 67 | "200": { 68 | "value": "#b1bafb", 69 | "type": "color" 70 | }, 71 | "300": { 72 | "value": "#8b98f9", 73 | "type": "color" 74 | }, 75 | "400": { 76 | "value": "#6475f7", 77 | "type": "color" 78 | }, 79 | "500": { 80 | "value": "#3d53f5", 81 | "type": "color" 82 | }, 83 | "600": { 84 | "value": "#3142c4", 85 | "type": "color" 86 | }, 87 | "700": { 88 | "value": "#253293", 89 | "type": "color" 90 | }, 91 | "800": { 92 | "value": "#182162", 93 | "type": "color" 94 | }, 95 | "900": { 96 | "value": "#0c1131", 97 | "type": "color" 98 | }, 99 | "950": { 100 | "value": "#060818", 101 | "type": "color" 102 | } 103 | }, 104 | "grey": { 105 | "50": { 106 | "value": "#fcfcfc", 107 | "type": "color" 108 | }, 109 | "100": { 110 | "value": "#f5f5f5", 111 | "type": "color" 112 | }, 113 | "200": { 114 | "value": "#eeeeee", 115 | "type": "color" 116 | }, 117 | "300": { 118 | "value": "#e0e0e0", 119 | "type": "color" 120 | }, 121 | "400": { 122 | "value": "#bdbdbd", 123 | "type": "color" 124 | }, 125 | "500": { 126 | "value": "#9e9e9e", 127 | "type": "color" 128 | }, 129 | "600": { 130 | "value": "#757575", 131 | "type": "color" 132 | }, 133 | "700": { 134 | "value": "#616161", 135 | "type": "color" 136 | }, 137 | "800": { 138 | "value": "#424242", 139 | "type": "color" 140 | }, 141 | "900": { 142 | "value": "#323232", 143 | "type": "color" 144 | }, 145 | "950": { 146 | "value": "#212121", 147 | "type": "color" 148 | } 149 | } 150 | } 151 | }, 152 | "light": { 153 | "theme": { 154 | "bg": { 155 | "default": { 156 | "value": "{_colors.white}", 157 | "type": "color" 158 | }, 159 | "subtle": { 160 | "value": "{_colors.grey.100}", 161 | "type": "color" 162 | }, 163 | "muted": { 164 | "value": "{_colors.grey.300}", 165 | "type": "color" 166 | } 167 | }, 168 | "fg": { 169 | "default": { 170 | "value": "{_colors.black}", 171 | "type": "color" 172 | }, 173 | "onAccent": { 174 | "value": "{_colors.white}", 175 | "type": "color" 176 | }, 177 | "muted": { 178 | "value": "{_colors.grey.700}", 179 | "type": "color" 180 | }, 181 | "subtle": { 182 | "value": "{_colors.grey.500}", 183 | "type": "color" 184 | } 185 | }, 186 | "accent": { 187 | "default": { 188 | "value": "{_colors.blue.500}", 189 | "type": "color" 190 | }, 191 | "subtle": { 192 | "value": "{_colors.blue.50}", 193 | "type": "color" 194 | } 195 | } 196 | } 197 | }, 198 | "dark": { 199 | "theme": { 200 | "bg": { 201 | "default": { 202 | "value": "{_colors.black}", 203 | "type": "color" 204 | }, 205 | "subtle": { 206 | "value": "{_colors.grey.900}", 207 | "type": "color" 208 | }, 209 | "muted": { 210 | "value": "{_colors.grey.600}", 211 | "type": "color" 212 | } 213 | }, 214 | "fg": { 215 | "default": { 216 | "value": "{_colors.white}", 217 | "type": "color" 218 | }, 219 | "onAccent": { 220 | "value": "{_colors.white}", 221 | "type": "color" 222 | }, 223 | "muted": { 224 | "value": "{_colors.grey.200}", 225 | "type": "color" 226 | }, 227 | "subtle": { 228 | "value": "{_colors.grey.500}", 229 | "type": "color" 230 | } 231 | }, 232 | "accent": { 233 | "default": { 234 | "value": "{_colors.blue.500}", 235 | "type": "color" 236 | }, 237 | "subtle": { 238 | "value": "{_colors.blue.950}", 239 | "type": "color" 240 | } 241 | } 242 | } 243 | } 244 | } -------------------------------------------------------------------------------- /tokens/dark.json: -------------------------------------------------------------------------------- 1 | { 2 | "theme": { 3 | "bg": { 4 | "default": { 5 | "value": "#171717", 6 | "type": "color" 7 | }, 8 | "subtle": { 9 | "value": "#323232", 10 | "type": "color" 11 | }, 12 | "muted": { 13 | "value": "#757575", 14 | "type": "color" 15 | } 16 | }, 17 | "fg": { 18 | "default": { 19 | "value": "#ffffff", 20 | "type": "color" 21 | }, 22 | "onAccent": { 23 | "value": "#ffffff", 24 | "type": "color" 25 | }, 26 | "muted": { 27 | "value": "#eeeeee", 28 | "type": "color" 29 | }, 30 | "subtle": { 31 | "value": "#9e9e9e", 32 | "type": "color" 33 | } 34 | }, 35 | "accent": { 36 | "default": { 37 | "value": "#3d53f5", 38 | "type": "color" 39 | }, 40 | "subtle": { 41 | "value": "#060818", 42 | "type": "color" 43 | } 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /tokens/global.json: -------------------------------------------------------------------------------- 1 | { 2 | "_colors": { 3 | "black": { 4 | "value": "#171717", 5 | "type": "color" 6 | }, 7 | "white": { 8 | "value": "#ffffff", 9 | "type": "color" 10 | }, 11 | "red": { 12 | "50": { 13 | "value": "#FFF5F7", 14 | "type": "color" 15 | }, 16 | "100": { 17 | "value": "#fce8ec", 18 | "type": "color" 19 | }, 20 | "200": { 21 | "value": "#f9d0d9", 22 | "type": "color" 23 | }, 24 | "300": { 25 | "value": "#f2a2b3", 26 | "type": "color" 27 | }, 28 | "400": { 29 | "value": "#e95c7b", 30 | "type": "color" 31 | }, 32 | "500": { 33 | "value": "#df1642", 34 | "type": "color" 35 | }, 36 | "600": { 37 | "value": "#9c0f2e", 38 | "type": "color" 39 | }, 40 | "700": { 41 | "value": "#59091a", 42 | "type": "color" 43 | }, 44 | "800": { 45 | "value": "#2d040d", 46 | "type": "color" 47 | }, 48 | "900": { 49 | "value": "#160207", 50 | "type": "color" 51 | }, 52 | "950": { 53 | "value": "#100105", 54 | "type": "color" 55 | } 56 | }, 57 | "blue": { 58 | "50": { 59 | "value": "#eceefe", 60 | "type": "color" 61 | }, 62 | "100": { 63 | "value": "#d8ddfd", 64 | "type": "color" 65 | }, 66 | "200": { 67 | "value": "#b1bafb", 68 | "type": "color" 69 | }, 70 | "300": { 71 | "value": "#8b98f9", 72 | "type": "color" 73 | }, 74 | "400": { 75 | "value": "#6475f7", 76 | "type": "color" 77 | }, 78 | "500": { 79 | "value": "#3d53f5", 80 | "type": "color" 81 | }, 82 | "600": { 83 | "value": "#3142c4", 84 | "type": "color" 85 | }, 86 | "700": { 87 | "value": "#253293", 88 | "type": "color" 89 | }, 90 | "800": { 91 | "value": "#182162", 92 | "type": "color" 93 | }, 94 | "900": { 95 | "value": "#0c1131", 96 | "type": "color" 97 | }, 98 | "950": { 99 | "value": "#060818", 100 | "type": "color" 101 | } 102 | }, 103 | "grey": { 104 | "50": { 105 | "value": "#fcfcfc", 106 | "type": "color" 107 | }, 108 | "100": { 109 | "value": "#f5f5f5", 110 | "type": "color" 111 | }, 112 | "200": { 113 | "value": "#eeeeee", 114 | "type": "color" 115 | }, 116 | "300": { 117 | "value": "#e0e0e0", 118 | "type": "color" 119 | }, 120 | "400": { 121 | "value": "#bdbdbd", 122 | "type": "color" 123 | }, 124 | "500": { 125 | "value": "#9e9e9e", 126 | "type": "color" 127 | }, 128 | "600": { 129 | "value": "#757575", 130 | "type": "color" 131 | }, 132 | "700": { 133 | "value": "#616161", 134 | "type": "color" 135 | }, 136 | "800": { 137 | "value": "#424242", 138 | "type": "color" 139 | }, 140 | "900": { 141 | "value": "#323232", 142 | "type": "color" 143 | }, 144 | "950": { 145 | "value": "#212121", 146 | "type": "color" 147 | } 148 | } 149 | } 150 | } -------------------------------------------------------------------------------- /tokens/input.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors": { 3 | "red": { 4 | "300": { 5 | "value": "#FCA5A5", 6 | "type": "color" 7 | }, 8 | "500": { 9 | "value": "#EF4444", 10 | "type": "color" 11 | }, 12 | "700": { 13 | "value": "#B91C1C", 14 | "type": "color" 15 | } 16 | }, 17 | "black": { 18 | "value": "#000000", 19 | "type": "color" 20 | }, 21 | "white": { 22 | "value": "#ffffff", 23 | "type": "color" 24 | } 25 | }, 26 | "spacing": { 27 | "sm": { 28 | "value": 4, 29 | "type": "spacing" 30 | }, 31 | "md": { 32 | "value": 8, 33 | "type": "spacing" 34 | }, 35 | "lg": { 36 | "value": 16, 37 | "type": "spacing" 38 | }, 39 | "xl": { 40 | "value": 32, 41 | "type": "spacing" 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /tokens/light.json: -------------------------------------------------------------------------------- 1 | { 2 | "theme": { 3 | "bg": { 4 | "default": { 5 | "value": "#ffffff", 6 | "type": "color" 7 | }, 8 | "subtle": { 9 | "value": "#f5f5f5", 10 | "type": "color" 11 | }, 12 | "muted": { 13 | "value": "#e0e0e0", 14 | "type": "color" 15 | } 16 | }, 17 | "fg": { 18 | "default": { 19 | "value": "#171717", 20 | "type": "color" 21 | }, 22 | "onAccent": { 23 | "value": "#ffffff", 24 | "type": "color" 25 | }, 26 | "muted": { 27 | "value": "#616161", 28 | "type": "color" 29 | }, 30 | "subtle": { 31 | "value": "#9e9e9e", 32 | "type": "color" 33 | } 34 | }, 35 | "accent": { 36 | "default": { 37 | "value": "#3d53f5", 38 | "type": "color" 39 | }, 40 | "subtle": { 41 | "value": "#eceefe", 42 | "type": "color" 43 | } 44 | } 45 | } 46 | } --------------------------------------------------------------------------------