@hh.ru/magritte-design-tokens-utils 3.0.3 → 4.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hh.ru/magritte-design-tokens-utils",
3
- "version": "3.0.3",
3
+ "version": "4.0.0",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "type": "module",
@@ -25,5 +25,5 @@
25
25
  "publishConfig": {
26
26
  "access": "public"
27
27
  },
28
- "gitHead": "bcc47002e5afb62cdb3f71fee209867b84407086"
28
+ "gitHead": "dbdbcad65f9d7dc14f074ed3e1e83a48d1ef832c"
29
29
  }
package/tokenize.js CHANGED
@@ -106,6 +106,14 @@ const renderTokensWithFormatter = (dictionary, versionPostfix, formatter = forma
106
106
  }
107
107
  else if (type === 'letterSpacing') {
108
108
  result.push(formatter(name, `${parseFloat(value) / 100}em`, versionPostfix));
109
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
110
+ }
111
+ else if (type === 'color' && value.toString().includes('linear-gradient')) {
112
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
113
+ let colorString = value.toString().replace('linear-gradient(', '').replace(')', '');
114
+ // убираем угол градиента, так как он не нужен в css переменной
115
+ colorString = colorString.split(', ').slice(1).join(', ');
116
+ result.push(formatter(name, colorString, versionPostfix));
109
117
  }
110
118
  else {
111
119
  // eslint-disable-next-line @typescript-eslint/no-base-to-string
package/tokenize.js.map CHANGED
@@ -1 +1 @@
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, Display: 800 };\n\nexport const getFontWeightValue = (value: TokenCasualValue): 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\nexport interface FormatterTypographyToken {\n (token: RealTransformedToken, versionPostfix?: string): string[];\n}\nconst formatterTypographyToCssVariable: FormatterTypographyToken = (token, versionPostfix) => {\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 interface FormatterToken {\n (name: string, value: TokenCasualValue, versionPostfix?: string): string;\n}\nconst formatterTokenToCssVariable: FormatterToken = (name, value, versionPostfix) =>\n ` --${name}${versionPostfix}: ${value};`;\n\n// рендерит токены с использованием выбранных форматоров\n// дефолтные форматеры позволят получить токены в виде css переменных\nexport const renderTokensWithFormatter = (\n dictionary: Dictionary,\n versionPostfix: string,\n formatter = formatterTokenToCssVariable,\n formatterTypography = formatterTypographyToCssVariable\n): 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(...formatterTypography(token, versionPostfix));\n } else if (type === 'fontWeights') {\n result.push(formatter(name, getFontWeightValue(value as TokenCasualValue), versionPostfix));\n } else if (type === 'animation') {\n const { x1, y1, x2, y2, duration } = rawValue as Duration & Ease;\n result.push(\n formatter(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`, versionPostfix)\n );\n result.push(formatter(`${name}-duration`, `${duration}ms`, versionPostfix));\n } else if (type === 'animationTime') {\n const { duration } = rawValue as Duration;\n result.push(formatter(`${name}-duration`, `${duration}ms`, versionPostfix));\n } else if (type === 'animationEaseBase') {\n const { x1, y1, x2, y2 } = rawValue as Ease;\n result.push(\n formatter(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`, versionPostfix)\n );\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(formatter(`${name}-timing-function`, `linear(${easings})`, versionPostfix));\n } else if (type === 'border') {\n const { width, style } = rawValue as Record<string, string | number>;\n result.push(formatter(name, `${width}px ${style}`, versionPostfix));\n } else if (type === 'letterSpacing') {\n result.push(formatter(name, `${parseFloat(value as string) / 100}em`, versionPostfix));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n result.push(formatter(name, `${value}${getVariableUnit(token)}`, versionPostfix));\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, Display: 800 };\n\nexport const getFontWeightValue = (value: TokenCasualValue): 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\nexport interface FormatterTypographyToken {\n (token: RealTransformedToken, versionPostfix?: string): string[];\n}\nconst formatterTypographyToCssVariable: FormatterTypographyToken = (token, versionPostfix) => {\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 interface FormatterToken {\n (name: string, value: TokenCasualValue, versionPostfix?: string): string;\n}\nconst formatterTokenToCssVariable: FormatterToken = (name, value, versionPostfix) =>\n ` --${name}${versionPostfix}: ${value};`;\n\n// рендерит токены с использованием выбранных форматоров\n// дефолтные форматеры позволят получить токены в виде css переменных\nexport const renderTokensWithFormatter = (\n dictionary: Dictionary,\n versionPostfix: string,\n formatter = formatterTokenToCssVariable,\n formatterTypography = formatterTypographyToCssVariable\n): 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(...formatterTypography(token, versionPostfix));\n } else if (type === 'fontWeights') {\n result.push(formatter(name, getFontWeightValue(value as TokenCasualValue), versionPostfix));\n } else if (type === 'animation') {\n const { x1, y1, x2, y2, duration } = rawValue as Duration & Ease;\n result.push(\n formatter(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`, versionPostfix)\n );\n result.push(formatter(`${name}-duration`, `${duration}ms`, versionPostfix));\n } else if (type === 'animationTime') {\n const { duration } = rawValue as Duration;\n result.push(formatter(`${name}-duration`, `${duration}ms`, versionPostfix));\n } else if (type === 'animationEaseBase') {\n const { x1, y1, x2, y2 } = rawValue as Ease;\n result.push(\n formatter(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`, versionPostfix)\n );\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(formatter(`${name}-timing-function`, `linear(${easings})`, versionPostfix));\n } else if (type === 'border') {\n const { width, style } = rawValue as Record<string, string | number>;\n result.push(formatter(name, `${width}px ${style}`, versionPostfix));\n } else if (type === 'letterSpacing') {\n result.push(formatter(name, `${parseFloat(value as string) / 100}em`, versionPostfix));\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n } else if (type === 'color' && value.toString().includes('linear-gradient')) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n let colorString = value.toString().replace('linear-gradient(', '').replace(')', '');\n // убираем угол градиента, так как он не нужен в css переменной\n colorString = colorString.split(', ').slice(1).join(', ');\n result.push(formatter(name, colorString, versionPostfix));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n result.push(formatter(name, `${value}${getVariableUnit(token)}`, versionPostfix));\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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"}