@hh.ru/magritte-design-tokens-utils 2.1.3 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cli/index.js CHANGED
@@ -6,6 +6,7 @@ import { purify } from '../purify.js';
6
6
  import 'style-dictionary';
7
7
  import '../tokenize.js';
8
8
  import 'change-case';
9
+ import 'spring-easing';
9
10
  import 'token-transformer';
10
11
  import '../constants.js';
11
12
 
package/cli/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/cli/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { tokenize } from '@hh.ru/magritte-design-tokens-utils/cli/tokenize';\nimport { filterThemeSets, prepareThemesTokens } from '@hh.ru/magritte-design-tokens-utils/prepare';\nimport { purify } from '@hh.ru/magritte-design-tokens-utils/purify';\nimport { Tokens } from '@hh.ru/magritte-design-tokens-utils/types';\n\nconst main = () => {\n if (process.argv.length < 3) {\n console.error('Missing required argument: file');\n process.exit(1);\n }\n const inputFile = process.argv[2];\n\n let tokens;\n try {\n tokens = fs.readFileSync(path.resolve(process.cwd(), inputFile), 'utf8');\n tokens = JSON.parse(tokens) as Tokens;\n } catch (e) {\n console.error('Error while reading tokens file');\n console.error(e);\n process.exit(1);\n }\n const purifiedTokens = purify(tokens);\n const themes = filterThemeSets(purifiedTokens);\n if (themes.length !== 1) {\n console.error('Tokens must contain exactly one theme');\n console.error(`Themes found: [${themes.join(', ')}}]`);\n process.exit(1);\n }\n const prepareTheme = prepareThemesTokens(purifiedTokens)[0];\n\n tokenize(prepareTheme);\n};\n\nmain();\n"],"names":[],"mappings":";;;;;;;;;;;AAQA,MAAM,IAAI,GAAG,MAAK;IACd,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACjD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAElC,IAAA,IAAI,MAAM,CAAC;AACX,IAAA,IAAI;AACA,QAAA,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AACzE,QAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAW,CAAC;KACzC;IAAC,OAAO,CAAC,EAAE;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACjD,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;AACD,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,IAAA,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;AAC/C,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACvD,QAAA,OAAO,CAAC,KAAK,CAAC,CAAA,eAAA,EAAkB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAC;AACvD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;IACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,IAAI,EAAE"}
1
+ {"version":3,"file":"index.js","sources":["../../src/cli/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { tokenize } from '@hh.ru/magritte-design-tokens-utils/cli/tokenize';\nimport { filterThemeSets, prepareThemesTokens } from '@hh.ru/magritte-design-tokens-utils/prepare';\nimport { purify } from '@hh.ru/magritte-design-tokens-utils/purify';\nimport { Tokens } from '@hh.ru/magritte-design-tokens-utils/types';\n\nconst main = () => {\n if (process.argv.length < 3) {\n console.error('Missing required argument: file');\n process.exit(1);\n }\n const inputFile = process.argv[2];\n\n let tokens;\n try {\n tokens = fs.readFileSync(path.resolve(process.cwd(), inputFile), 'utf8');\n tokens = JSON.parse(tokens) as Tokens;\n } catch (e) {\n console.error('Error while reading tokens file');\n console.error(e);\n process.exit(1);\n }\n const purifiedTokens = purify(tokens);\n const themes = filterThemeSets(purifiedTokens);\n if (themes.length !== 1) {\n console.error('Tokens must contain exactly one theme');\n console.error(`Themes found: [${themes.join(', ')}}]`);\n process.exit(1);\n }\n const prepareTheme = prepareThemesTokens(purifiedTokens)[0];\n\n tokenize(prepareTheme);\n};\n\nmain();\n"],"names":[],"mappings":";;;;;;;;;;;;AAQA,MAAM,IAAI,GAAG,MAAK;IACd,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACjD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAElC,IAAA,IAAI,MAAM,CAAC;AACX,IAAA,IAAI;AACA,QAAA,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AACzE,QAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAW,CAAC;KACzC;IAAC,OAAO,CAAC,EAAE;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACjD,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;AACD,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,IAAA,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;AAC/C,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACvD,QAAA,OAAO,CAAC,KAAK,CAAC,CAAA,eAAA,EAAkB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAC;AACvD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;IACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,IAAI,EAAE"}
package/cli/tokenize.js CHANGED
@@ -2,6 +2,7 @@ import fs from 'fs';
2
2
  import StyleDictionary from 'style-dictionary';
3
3
  import { kebabWithUnderscoreTransformer, cssFormatter } from '../tokenize.js';
4
4
  import 'change-case';
5
+ import 'spring-easing';
5
6
 
6
7
  // eslint-disable-next-line no-template-curly-in-string
7
8
  const versionPostfix = '-v${major}-${minor}-${patch}';
@@ -1 +1 @@
1
- {"version":3,"file":"tokenize.js","sources":["../../src/cli/tokenize.ts"],"sourcesContent":["import fs from 'fs';\nimport StyleDictionary, { Config } from 'style-dictionary';\n\nimport { kebabWithUnderscoreTransformer, cssFormatter } from '@hh.ru/magritte-design-tokens-utils/tokenize';\nimport { PreparedThemesTokens } from '@hh.ru/magritte-design-tokens-utils/types';\n\n// eslint-disable-next-line no-template-curly-in-string\nconst versionPostfix = '-v${major}-${minor}-${patch}';\n\nexport const tokenize = ({ themeTokens: tokens, themeName }: PreparedThemesTokens): void => {\n const tmpFileName = `tokens.${Date.now()}.json`;\n fs.writeFileSync(tmpFileName, JSON.stringify(tokens, null, 2));\n\n const config: Config = {\n source: [tmpFileName],\n platforms: {\n ts: {\n transformGroup: 'ts',\n transforms: ['name/cti/kebabWithUnderscore'],\n prefix: 'magritte-',\n buildPath: './',\n files: [\n {\n destination: `magritte${themeName.charAt(0).toUpperCase()}${themeName.slice(1)}Theme.ts`,\n format: 'ts/variables',\n },\n ],\n },\n },\n };\n\n const build = StyleDictionary.extend(config);\n\n build.registerTransform(kebabWithUnderscoreTransformer);\n\n build.registerFormat({\n name: 'ts/variables',\n formatter({ dictionary }) {\n return `export default (tokensVersion: string): { tokensString: string; themeClassName: string } => {\n const [major, minor, patch] = tokensVersion.split('.');\n const tokensString = \\`\n.magritte-${themeName}-theme {\\n${cssFormatter(dictionary, versionPostfix)}\\n}\\`;\n\n return { tokensString, themeClassName: 'magritte-${themeName}-theme' };\n};\\n`;\n },\n });\n\n build.buildAllPlatforms();\n fs.unlinkSync(tmpFileName);\n};\n"],"names":[],"mappings":";;;;;AAMA;AACA,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAE/C,MAAM,QAAQ,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAwB,KAAU;IACvF,MAAM,WAAW,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;AAChD,IAAA,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/D,IAAA,MAAM,MAAM,GAAW;QACnB,MAAM,EAAE,CAAC,WAAW,CAAC;AACrB,QAAA,SAAS,EAAE;AACP,YAAA,EAAE,EAAE;AACA,gBAAA,cAAc,EAAE,IAAI;gBACpB,UAAU,EAAE,CAAC,8BAA8B,CAAC;AAC5C,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE;AACH,oBAAA;AACI,wBAAA,WAAW,EAAE,CAAW,QAAA,EAAA,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAU,QAAA,CAAA;AACxF,wBAAA,MAAM,EAAE,cAAc;AACzB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ,CAAC;IAEF,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAE7C,IAAA,KAAK,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,CAAC;IAExD,KAAK,CAAC,cAAc,CAAC;AACjB,QAAA,IAAI,EAAE,cAAc;QACpB,SAAS,CAAC,EAAE,UAAU,EAAE,EAAA;YACpB,OAAO,CAAA;;;AAGP,UAAA,EAAA,SAAS,aAAa,YAAY,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;;uDAEnB,SAAS,CAAA;KAC3D,CAAC;SACG;AACJ,KAAA,CAAC,CAAC;IAEH,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC1B,IAAA,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC/B;;;;"}
1
+ {"version":3,"file":"tokenize.js","sources":["../../src/cli/tokenize.ts"],"sourcesContent":["import fs from 'fs';\nimport StyleDictionary, { Config } from 'style-dictionary';\n\nimport { kebabWithUnderscoreTransformer, cssFormatter } from '@hh.ru/magritte-design-tokens-utils/tokenize';\nimport { PreparedThemesTokens } from '@hh.ru/magritte-design-tokens-utils/types';\n\n// eslint-disable-next-line no-template-curly-in-string\nconst versionPostfix = '-v${major}-${minor}-${patch}';\n\nexport const tokenize = ({ themeTokens: tokens, themeName }: PreparedThemesTokens): void => {\n const tmpFileName = `tokens.${Date.now()}.json`;\n fs.writeFileSync(tmpFileName, JSON.stringify(tokens, null, 2));\n\n const config: Config = {\n source: [tmpFileName],\n platforms: {\n ts: {\n transformGroup: 'ts',\n transforms: ['name/cti/kebabWithUnderscore'],\n prefix: 'magritte-',\n buildPath: './',\n files: [\n {\n destination: `magritte${themeName.charAt(0).toUpperCase()}${themeName.slice(1)}Theme.ts`,\n format: 'ts/variables',\n },\n ],\n },\n },\n };\n\n const build = StyleDictionary.extend(config);\n\n build.registerTransform(kebabWithUnderscoreTransformer);\n\n build.registerFormat({\n name: 'ts/variables',\n formatter({ dictionary }) {\n return `export default (tokensVersion: string): { tokensString: string; themeClassName: string } => {\n const [major, minor, patch] = tokensVersion.split('.');\n const tokensString = \\`\n.magritte-${themeName}-theme {\\n${cssFormatter(dictionary, versionPostfix)}\\n}\\`;\n\n return { tokensString, themeClassName: 'magritte-${themeName}-theme' };\n};\\n`;\n },\n });\n\n build.buildAllPlatforms();\n fs.unlinkSync(tmpFileName);\n};\n"],"names":[],"mappings":";;;;;;AAMA;AACA,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAE/C,MAAM,QAAQ,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAwB,KAAU;IACvF,MAAM,WAAW,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;AAChD,IAAA,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/D,IAAA,MAAM,MAAM,GAAW;QACnB,MAAM,EAAE,CAAC,WAAW,CAAC;AACrB,QAAA,SAAS,EAAE;AACP,YAAA,EAAE,EAAE;AACA,gBAAA,cAAc,EAAE,IAAI;gBACpB,UAAU,EAAE,CAAC,8BAA8B,CAAC;AAC5C,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE;AACH,oBAAA;AACI,wBAAA,WAAW,EAAE,CAAW,QAAA,EAAA,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAU,QAAA,CAAA;AACxF,wBAAA,MAAM,EAAE,cAAc;AACzB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ,CAAC;IAEF,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAE7C,IAAA,KAAK,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,CAAC;IAExD,KAAK,CAAC,cAAc,CAAC;AACjB,QAAA,IAAI,EAAE,cAAc;QACpB,SAAS,CAAC,EAAE,UAAU,EAAE,EAAA;YACpB,OAAO,CAAA;;;AAGP,UAAA,EAAA,SAAS,aAAa,YAAY,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;;uDAEnB,SAAS,CAAA;KAC3D,CAAC;SACG;AACJ,KAAA,CAAC,CAAC;IAEH,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC1B,IAAA,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC/B;;;;"}
package/index.d.ts CHANGED
@@ -2,3 +2,4 @@ export * from '@hh.ru/magritte-design-tokens-utils/purify';
2
2
  export * from '@hh.ru/magritte-design-tokens-utils/tokenize';
3
3
  export * from '@hh.ru/magritte-design-tokens-utils/prepare';
4
4
  export * from '@hh.ru/magritte-design-tokens-utils/constants';
5
+ export * from '@hh.ru/magritte-design-tokens-utils/types';
package/index.js CHANGED
@@ -3,5 +3,6 @@ export { TYPES, cssFormatter, getVariableUnit, kebabWithUnderscoreTransformer, t
3
3
  export { filterThemeSets, prepareBaseTokens, prepareThemesTokens } from './prepare.js';
4
4
  export { BASE_SET, TOKENS_DEFAULT_THEME } from './constants.js';
5
5
  import 'change-case';
6
+ import 'spring-easing';
6
7
  import 'token-transformer';
7
8
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@hh.ru/magritte-design-tokens-utils",
3
- "version": "2.1.3",
3
+ "version": "2.2.0",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "type": "module",
7
7
  "bin": "cli.js",
8
8
  "scripts": {
9
- "build": "yarn root:build $(pwd) && bash tools/build.sh",
9
+ "build": "yarn root:build $(pwd) && cp cli.js lib",
10
10
  "build-test-branch": "yarn root:build-test-branch $(pwd)",
11
11
  "prepack": "yarn root:prepack $(pwd)",
12
12
  "postpublish": "yarn root:postpublish $(pwd)",
@@ -19,11 +19,12 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "change-case": "4.1.2",
22
+ "spring-easing": "2.3.3",
22
23
  "style-dictionary": "^3.7.1",
23
24
  "token-transformer": "^0.0.32"
24
25
  },
25
26
  "publishConfig": {
26
27
  "access": "public"
27
28
  },
28
- "gitHead": "06867ef491cf6de9d1c064477f70dad510e93e7b"
29
+ "gitHead": "32b212447694d1d24e4f9453672dcaa63335c657"
29
30
  }
package/tokenize.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Named, Transform, TransformedToken, Dictionary } from 'style-dictionary';
2
+ import type { TypographyTransformations } from '@hh.ru/magritte-design-tokens-utils/types';
2
3
  export declare const TYPES: {
3
4
  BORDER_RADIUS: string;
4
5
  BORDER_WIDTH: string;
@@ -18,14 +19,7 @@ export declare const TYPES: {
18
19
  BLUR: string;
19
20
  SPREAD: string;
20
21
  };
21
- type TokenCasualValue = string | number;
22
- type TypographyTransformationsResult = Array<{
23
- name: string;
24
- value: TokenCasualValue;
25
- }>;
26
- type TypographyTransformations = Record<string, (value: TokenCasualValue) => TypographyTransformationsResult>;
27
22
  export declare const typographyTransformations: TypographyTransformations;
28
23
  export declare const getVariableUnit: (token: TransformedToken) => string;
29
24
  export declare const cssFormatter: (dictionary: Dictionary, versionPostfix: string) => string;
30
25
  export declare const kebabWithUnderscoreTransformer: Named<Transform>;
31
- export {};
package/tokenize.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { paramCase } from 'change-case';
2
+ import { CSSSpringEasing } from 'spring-easing';
2
3
 
3
4
  const TYPES = {
4
5
  BORDER_RADIUS: 'borderRadius',
@@ -69,6 +70,7 @@ const expandTypographyCss = (token, versionPostfix) => {
69
70
  .map(({ name, value }) => ` --${token.name}-${name}${versionPostfix}: ${value};`);
70
71
  };
71
72
  const cssFormatter = (dictionary, versionPostfix) => {
73
+ const formatCssVariable = (name, value) => ` --${name}${versionPostfix}: ${value};`;
72
74
  const props = dictionary.allProperties
73
75
  .reduce((result, token) => {
74
76
  const { name, value, type, rawValue } = token;
@@ -76,23 +78,36 @@ const cssFormatter = (dictionary, versionPostfix) => {
76
78
  result.push(...expandTypographyCss(token, versionPostfix));
77
79
  }
78
80
  else if (type === 'fontWeights') {
79
- result.push(` --${name}${versionPostfix}: ${getFontWeightValue(value)};`);
81
+ result.push(formatCssVariable(name, getFontWeightValue(value)));
80
82
  }
81
83
  else if (type === 'animation') {
82
84
  const { x1, y1, x2, y2, duration } = rawValue;
83
- result.push(` --${name}-timing-function${versionPostfix}: cubic-bezier(${x1}, ${y1}, ${x2}, ${y2});`);
84
- result.push(` --${name}-duration${versionPostfix}: ${duration}ms;`);
85
+ result.push(formatCssVariable(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`));
86
+ result.push(formatCssVariable(`${name}-duration`, `${duration}ms`));
87
+ }
88
+ else if (type === 'animationTime') {
89
+ const { duration } = rawValue;
90
+ result.push(formatCssVariable(`${name}-duration`, `${duration}ms`));
91
+ }
92
+ else if (type === 'animationEaseBase') {
93
+ const { x1, y1, x2, y2 } = rawValue;
94
+ result.push(formatCssVariable(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`));
95
+ }
96
+ else if (type === 'animationEaseSpring') {
97
+ const { stiffness, damping, mass } = rawValue;
98
+ const [easings] = CSSSpringEasing({ easing: `spring(${mass}, ${stiffness}, ${damping})` });
99
+ result.push(formatCssVariable(`${name}-timing-function`, `linear(${easings})`));
85
100
  }
86
101
  else if (type === 'border') {
87
102
  const { width, style } = rawValue;
88
- result.push(` --${name}${versionPostfix}: ${width}px ${style};`);
103
+ result.push(formatCssVariable(name, `${width}px ${style}`));
89
104
  }
90
105
  else if (type === 'letterSpacing') {
91
- result.push(` --${name}${versionPostfix}: ${parseFloat(value) / 100}em;`);
106
+ result.push(formatCssVariable(name, `${parseFloat(value) / 100}em`));
92
107
  }
93
108
  else {
94
109
  // eslint-disable-next-line @typescript-eslint/no-base-to-string
95
- result.push(` --${name}${versionPostfix}: ${value}${getVariableUnit(token)};`);
110
+ result.push(formatCssVariable(name, `${value}${getVariableUnit(token)}`));
96
111
  }
97
112
  return result;
98
113
  }, [])
package/tokenize.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tokenize.js","sources":["../src/tokenize.ts"],"sourcesContent":["import { paramCase } from 'change-case';\nimport { Named, Transform, TransformedToken, Dictionary } from 'style-dictionary';\n\nexport const TYPES = {\n BORDER_RADIUS: 'borderRadius',\n BORDER_WIDTH: 'borderWidth',\n COLOR: 'color',\n FONT_FAMILY: 'fontFamily',\n FONT_SIZE: 'fontSizes',\n FONT_WEIGHT: 'fontWeights',\n LETTER_SPACING: 'letterSpacing',\n LINE_HEIGHT: 'lineHeights',\n PARAGRAPH_SPACING: 'paragraphSpacing',\n SIZING: 'sizing',\n SPACING: 'spacing',\n TEXT_CASE: 'textCase',\n\n TEXT_DECORATION: 'textDecoration',\n // shadows\n X: 'x',\n Y: 'y',\n BLUR: 'blur',\n SPREAD: 'spread',\n};\n\ntype TypographyTokenValue = Record<string, string | number>;\ntype TokenCasualValue = string | number;\ntype TokenValue = TokenCasualValue | TypographyTokenValue;\n\ntype TypographyTransformationsResult = Array<{ name: string; value: TokenCasualValue }>;\ntype TypographyTransformations = Record<string, (value: TokenCasualValue) => TypographyTransformationsResult>;\n\ntype RealTransformedToken = Omit<TransformedToken, 'value'> & {\n value: TokenValue;\n rawValue?: TokenValue;\n};\n\nconst FONT_WEIGHT_VALUES = { Bold: 700, 'Semi Bold': 600, Medium: 500, Regular: 400, Italic: 400 };\n\nconst getFontWeightValue = (value: TokenCasualValue) =>\n value in FONT_WEIGHT_VALUES ? FONT_WEIGHT_VALUES[value as keyof typeof FONT_WEIGHT_VALUES] : value;\n\nexport const typographyTransformations: TypographyTransformations = {\n fontFamily: (value) => [{ name: 'font-family', value: `\"${value}\"` }],\n fontWeight: (value) => [\n {\n name: 'font-weight',\n value: getFontWeightValue(value),\n },\n ],\n fontSize: (value) => [{ name: 'font-size', value: `${value}px` }],\n lineHeight: (value) => [{ name: 'line-height', value: `${value}px` }],\n letterSpacing: (value) => [{ name: 'letter-spacing', value: `${parseFloat(value as string) / 100}em` }],\n textCase: (value) => [{ name: 'text-transform', value: (value as string).toLowerCase() }],\n textDecoration: (value) => [{ name: 'text-decoration', value: (value as string).toLowerCase() }],\n paragraphIndent: (value) => [{ name: 'text-indent', value }],\n};\n\nexport const getVariableUnit = (token: TransformedToken): string => {\n const { type } = token;\n\n switch (type) {\n case TYPES.BORDER_RADIUS:\n case TYPES.BORDER_WIDTH:\n case TYPES.PARAGRAPH_SPACING:\n case TYPES.SIZING:\n case TYPES.SPACING:\n case TYPES.X:\n case TYPES.Y:\n case TYPES.BLUR:\n case TYPES.SPREAD:\n case TYPES.FONT_SIZE:\n return 'px';\n default:\n return '';\n }\n};\n\nconst expandTypographyCss = (token: RealTransformedToken, versionPostfix: string) => {\n const tokenValue = token.value as TypographyTokenValue;\n return Object.keys(tokenValue)\n .reduce<TypographyTransformationsResult>((result, key) => {\n if (!typographyTransformations[key]) {\n return result;\n }\n const transformed = typographyTransformations[key](tokenValue[key]);\n result.push(...transformed);\n return result;\n }, [])\n .map(({ name, value }) => ` --${token.name}-${name}${versionPostfix}: ${value};`);\n};\n\nexport const cssFormatter = (dictionary: Dictionary, versionPostfix: string): string => {\n const props = dictionary.allProperties\n .reduce<string[]>((result, token) => {\n const { name, value, type, rawValue } = token as RealTransformedToken;\n if (type === 'typography') {\n result.push(...expandTypographyCss(token, versionPostfix));\n } else if (type === 'fontWeights') {\n result.push(` --${name}${versionPostfix}: ${getFontWeightValue(value as TokenCasualValue)};`);\n } else if (type === 'animation') {\n const { x1, y1, x2, y2, duration } = rawValue as Record<string, string | number>;\n result.push(` --${name}-timing-function${versionPostfix}: cubic-bezier(${x1}, ${y1}, ${x2}, ${y2});`);\n result.push(` --${name}-duration${versionPostfix}: ${duration}ms;`);\n } else if (type === 'border') {\n const { width, style } = rawValue as Record<string, string | number>;\n result.push(` --${name}${versionPostfix}: ${width}px ${style};`);\n } else if (type === 'letterSpacing') {\n result.push(` --${name}${versionPostfix}: ${parseFloat(value as string) / 100}em;`);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n result.push(` --${name}${versionPostfix}: ${value}${getVariableUnit(token)};`);\n }\n return result;\n }, [])\n .join('\\n');\n\n return props;\n};\n\nexport const kebabWithUnderscoreTransformer: Named<Transform> = {\n type: 'name',\n name: 'name/cti/kebabWithUnderscore',\n transformer: (token, options = {}) =>\n paramCase([options.prefix].concat(token.path).join(' '), {\n stripRegexp: /[^A-Z0-9_]+/gi,\n }),\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenize.js","sources":["../src/tokenize.ts"],"sourcesContent":["import { paramCase } from 'change-case';\nimport { CSSSpringEasing } from 'spring-easing';\nimport { Named, Transform, TransformedToken, Dictionary } from 'style-dictionary';\n\nimport type {\n TypographyTokenValue,\n TokenCasualValue,\n TypographyTransformationsResult,\n TypographyTransformations,\n RealTransformedToken,\n} from '@hh.ru/magritte-design-tokens-utils/types';\n\nexport const TYPES = {\n BORDER_RADIUS: 'borderRadius',\n BORDER_WIDTH: 'borderWidth',\n COLOR: 'color',\n FONT_FAMILY: 'fontFamily',\n FONT_SIZE: 'fontSizes',\n FONT_WEIGHT: 'fontWeights',\n LETTER_SPACING: 'letterSpacing',\n LINE_HEIGHT: 'lineHeights',\n PARAGRAPH_SPACING: 'paragraphSpacing',\n SIZING: 'sizing',\n SPACING: 'spacing',\n TEXT_CASE: 'textCase',\n\n TEXT_DECORATION: 'textDecoration',\n // shadows\n X: 'x',\n Y: 'y',\n BLUR: 'blur',\n SPREAD: 'spread',\n};\n\nconst FONT_WEIGHT_VALUES = { Bold: 700, 'Semi Bold': 600, Medium: 500, Regular: 400, Italic: 400 };\n\nconst getFontWeightValue = (value: TokenCasualValue) =>\n value in FONT_WEIGHT_VALUES ? FONT_WEIGHT_VALUES[value as keyof typeof FONT_WEIGHT_VALUES] : value;\n\nexport const typographyTransformations: TypographyTransformations = {\n fontFamily: (value) => [{ name: 'font-family', value: `\"${value}\"` }],\n fontWeight: (value) => [\n {\n name: 'font-weight',\n value: getFontWeightValue(value),\n },\n ],\n fontSize: (value) => [{ name: 'font-size', value: `${value}px` }],\n lineHeight: (value) => [{ name: 'line-height', value: `${value}px` }],\n letterSpacing: (value) => [{ name: 'letter-spacing', value: `${parseFloat(value as string) / 100}em` }],\n textCase: (value) => [{ name: 'text-transform', value: (value as string).toLowerCase() }],\n textDecoration: (value) => [{ name: 'text-decoration', value: (value as string).toLowerCase() }],\n paragraphIndent: (value) => [{ name: 'text-indent', value }],\n};\n\nexport const getVariableUnit = (token: TransformedToken): string => {\n const { type } = token;\n\n switch (type) {\n case TYPES.BORDER_RADIUS:\n case TYPES.BORDER_WIDTH:\n case TYPES.PARAGRAPH_SPACING:\n case TYPES.SIZING:\n case TYPES.SPACING:\n case TYPES.X:\n case TYPES.Y:\n case TYPES.BLUR:\n case TYPES.SPREAD:\n case TYPES.FONT_SIZE:\n return 'px';\n default:\n return '';\n }\n};\n\nconst expandTypographyCss = (token: RealTransformedToken, versionPostfix: string) => {\n const tokenValue = token.value as TypographyTokenValue;\n return Object.keys(tokenValue)\n .reduce<TypographyTransformationsResult>((result, key) => {\n if (!typographyTransformations[key]) {\n return result;\n }\n const transformed = typographyTransformations[key](tokenValue[key]);\n result.push(...transformed);\n return result;\n }, [])\n .map(({ name, value }) => ` --${token.name}-${name}${versionPostfix}: ${value};`);\n};\n\ntype Duration = { duration: number };\n\ntype Ease = { x1: number; y1: number; x2: number; y2: number };\n\ntype Spring = { stiffness: number; damping: number; mass: number };\n\nexport const cssFormatter = (dictionary: Dictionary, versionPostfix: string): string => {\n const formatCssVariable = (name: string, value: TokenCasualValue) => ` --${name}${versionPostfix}: ${value};`;\n\n const props = dictionary.allProperties\n .reduce<string[]>((result, token) => {\n const { name, value, type, rawValue } = token as RealTransformedToken;\n if (type === 'typography') {\n result.push(...expandTypographyCss(token, versionPostfix));\n } else if (type === 'fontWeights') {\n result.push(formatCssVariable(name, getFontWeightValue(value as TokenCasualValue)));\n } else if (type === 'animation') {\n const { x1, y1, x2, y2, duration } = rawValue as Duration & Ease;\n result.push(formatCssVariable(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`));\n result.push(formatCssVariable(`${name}-duration`, `${duration}ms`));\n } else if (type === 'animationTime') {\n const { duration } = rawValue as Duration;\n result.push(formatCssVariable(`${name}-duration`, `${duration}ms`));\n } else if (type === 'animationEaseBase') {\n const { x1, y1, x2, y2 } = rawValue as Ease;\n result.push(formatCssVariable(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`));\n } else if (type === 'animationEaseSpring') {\n const { stiffness, damping, mass } = rawValue as Spring;\n const [easings] = CSSSpringEasing({ easing: `spring(${mass}, ${stiffness}, ${damping})` });\n result.push(formatCssVariable(`${name}-timing-function`, `linear(${easings})`));\n } else if (type === 'border') {\n const { width, style } = rawValue as Record<string, string | number>;\n result.push(formatCssVariable(name, `${width}px ${style}`));\n } else if (type === 'letterSpacing') {\n result.push(formatCssVariable(name, `${parseFloat(value as string) / 100}em`));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n result.push(formatCssVariable(name, `${value}${getVariableUnit(token)}`));\n }\n return result;\n }, [])\n .join('\\n');\n\n return props;\n};\n\nexport const kebabWithUnderscoreTransformer: Named<Transform> = {\n type: 'name',\n name: 'name/cti/kebabWithUnderscore',\n transformer: (token, options = {}) =>\n paramCase([options.prefix].concat(token.path).join(' '), {\n stripRegexp: /[^A-Z0-9_]+/gi,\n }),\n};\n"],"names":[],"mappings":"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"}
package/types.d.ts CHANGED
@@ -1,4 +1,18 @@
1
+ import type { TransformedToken } from 'style-dictionary';
1
2
  export type Tokens = Record<string, unknown>;
3
+ export type TypographyTokenValue = Record<string, string | number>;
4
+ export type TokenCasualValue = string | number;
5
+ export type TokenValue = TokenCasualValue | TypographyTokenValue;
6
+ export type TypographyTransformationsResult = Array<{
7
+ name: string;
8
+ value: TokenCasualValue;
9
+ }>;
10
+ export type TypographyTransformations = Record<string, (value: TokenCasualValue) => TypographyTransformationsResult>;
11
+ export type RealTransformedToken = Omit<TransformedToken, 'value'> & {
12
+ name: string;
13
+ value: TokenValue;
14
+ rawValue?: TokenValue;
15
+ };
2
16
  export interface PreparedThemesTokens {
3
17
  themeTokens: Tokens;
4
18
  themeName: string;