@primer/primitives 7.16.0 → 7.17.0-rc.1685583f
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/dist/styleLint/base/size/size.json +427 -0
- package/dist/styleLint/base/typography/typography.json +54 -0
- package/dist/styleLint/functional/motion/motion.json +47 -0
- package/dist/styleLint/functional/size/border.json +234 -0
- package/dist/styleLint/functional/size/breakpoints.json +152 -0
- package/dist/styleLint/functional/size/size-coarse.json +41 -0
- package/dist/styleLint/functional/size/size-fine.json +41 -0
- package/dist/styleLint/functional/size/size.json +1838 -0
- package/dist/styleLint/functional/size/viewport.json +80 -0
- package/dist/styleLint/functional/themes/dark-colorblind.json +16155 -0
- package/dist/styleLint/functional/themes/dark-dimmed.json +16159 -0
- package/dist/styleLint/functional/themes/dark-high-contrast.json +16175 -0
- package/dist/styleLint/functional/themes/dark-tritanopia.json +16161 -0
- package/dist/styleLint/functional/themes/dark.json +16159 -0
- package/dist/styleLint/functional/themes/light-colorblind.json +16123 -0
- package/dist/styleLint/functional/themes/light-high-contrast.json +16125 -0
- package/dist/styleLint/functional/themes/light-tritanopia.json +16115 -0
- package/dist/styleLint/functional/themes/light.json +16113 -0
- package/dist/styleLint/functional/typography/typography.json +663 -0
- package/package.json +11 -9
- package/src/PrimerStyleDictionary.ts +226 -0
- package/src/filters/index.ts +12 -0
- package/src/filters/isBorder.ts +10 -0
- package/src/filters/isColor.ts +10 -0
- package/src/filters/isColorWithAlpha.ts +11 -0
- package/src/filters/isColorWithMix.ts +33 -0
- package/src/filters/isDeprecated.ts +10 -0
- package/src/filters/isDimension.ts +10 -0
- package/src/filters/isDuration.ts +10 -0
- package/src/filters/isFontFamily.ts +10 -0
- package/src/filters/isFontWeight.ts +10 -0
- package/src/filters/isFromFile.ts +12 -0
- package/src/filters/isShadow.ts +10 -0
- package/src/filters/isSource.ts +10 -0
- package/src/filters/isTypography.ts +10 -0
- package/src/formats/cssCustomMedia.ts +24 -0
- package/src/formats/cssThemed.ts +35 -0
- package/src/formats/cssVariables.ts +25 -0
- package/src/formats/cssWrapMediaQuery.ts +29 -0
- package/src/formats/index.ts +11 -0
- package/src/formats/javascriptCommonJs.ts +21 -0
- package/src/formats/javascriptEsm.ts +21 -0
- package/src/formats/jsonFigma.ts +131 -0
- package/src/formats/jsonNestedPrefixed.ts +23 -0
- package/src/formats/jsonOneDimensional.ts +18 -0
- package/src/formats/jsonPostCssFallback.ts +16 -0
- package/src/formats/typescriptExportDefinition.ts +170 -0
- package/src/formats/utilities/jsonToFlat.ts +10 -0
- package/src/formats/utilities/jsonToNestedValue.ts +20 -0
- package/src/formats/utilities/prefixTokens.ts +17 -0
- package/src/parsers/index.ts +1 -0
- package/src/parsers/w3cJsonParser.ts +25 -0
- package/src/platforms/css.ts +93 -0
- package/src/platforms/deprecatedJson.ts +16 -0
- package/src/platforms/docJson.ts +34 -0
- package/src/platforms/fallbacks.ts +34 -0
- package/src/platforms/figma.ts +48 -0
- package/src/platforms/index.ts +10 -0
- package/src/platforms/javascript.ts +30 -0
- package/src/platforms/json.ts +32 -0
- package/src/platforms/styleLint.ts +34 -0
- package/src/platforms/typeDefinitions.ts +30 -0
- package/src/platforms/typescript.ts +30 -0
- package/src/schemas/alphaValue.ts +12 -0
- package/src/schemas/baseToken.ts +7 -0
- package/src/schemas/borderToken.ts +19 -0
- package/src/schemas/collections.ts +47 -0
- package/src/schemas/colorHexValue.ts +18 -0
- package/src/schemas/colorToken.ts +50 -0
- package/src/schemas/designToken.ts +38 -0
- package/src/schemas/dimensionToken.ts +22 -0
- package/src/schemas/dimensionValue.ts +16 -0
- package/src/schemas/durationToken.ts +12 -0
- package/src/schemas/durationValue.ts +9 -0
- package/src/schemas/fontFamilyToken.ts +11 -0
- package/src/schemas/fontWeightToken.ts +12 -0
- package/src/schemas/fontWeightValue.ts +14 -0
- package/src/schemas/numberToken.ts +11 -0
- package/src/schemas/referenceValue.ts +12 -0
- package/src/schemas/scopes.ts +16 -0
- package/src/schemas/shadowToken.ts +45 -0
- package/src/schemas/stringToken.ts +11 -0
- package/src/schemas/tokenName.ts +12 -0
- package/src/schemas/tokenType.ts +4 -0
- package/src/schemas/typographyToken.ts +20 -0
- package/src/schemas/validTokenType.ts +44 -0
- package/src/schemas/viewportRangeToken.ts +11 -0
- package/src/test-utilities/getMockDictionary.ts +22 -0
- package/src/test-utilities/getMockFormatterArguments.ts +21 -0
- package/src/test-utilities/getMockParserInput.ts +72 -0
- package/src/test-utilities/getMockToken.ts +25 -0
- package/src/test-utilities/index.ts +4 -0
- package/src/tokens/base/color/dark/dark.dimmed.json5 +1326 -0
- package/src/tokens/base/color/dark/dark.high-contrast.json5 +856 -0
- package/src/tokens/base/color/dark/dark.json5 +866 -0
- package/src/tokens/base/color/dark/display-dark.json5 +1774 -0
- package/src/tokens/base/color/light/display-light.json5 +1774 -0
- package/src/tokens/base/color/light/light.high-contrast.json5 +847 -0
- package/src/tokens/base/color/light/light.json5 +866 -0
- package/src/tokens/base/size/size.json +176 -0
- package/src/tokens/base/typography/typography.json +24 -0
- package/src/tokens/fallback/color-fallbacks.json +260 -0
- package/src/tokens/functional/border/dark.json5 +12 -0
- package/src/tokens/functional/border/light.json5 +12 -0
- package/src/tokens/functional/color/dark/app-dark.json5 +554 -0
- package/src/tokens/functional/color/dark/data-vis-dark.json5 +144 -0
- package/src/tokens/functional/color/dark/display-dark.json5 +1060 -0
- package/src/tokens/functional/color/dark/overrides/dark.dimmed.json5 +57 -0
- package/src/tokens/functional/color/dark/overrides/dark.high-contrast.json5 +390 -0
- package/src/tokens/functional/color/dark/overrides/dark.protanopia-deuteranopia.json5 +314 -0
- package/src/tokens/functional/color/dark/overrides/dark.tritanopia.json5 +229 -0
- package/src/tokens/functional/color/dark/patterns-dark.json5 +3073 -0
- package/src/tokens/functional/color/dark/primitives-dark.json5 +1206 -0
- package/src/tokens/functional/color/dark/syntax-dark.json5 +559 -0
- package/src/tokens/functional/color/light/app-light.json5 +551 -0
- package/src/tokens/functional/color/light/data-vis-light.json5 +144 -0
- package/src/tokens/functional/color/light/display-light.json5 +1060 -0
- package/src/tokens/functional/color/light/overrides/light.high-contrast.json5 +440 -0
- package/src/tokens/functional/color/light/overrides/light.protanopia-deuteranopia.json5 +340 -0
- package/src/tokens/functional/color/light/overrides/light.tritanopia.json5 +249 -0
- package/src/tokens/functional/color/light/patterns-light.json5 +3070 -0
- package/src/tokens/functional/color/light/primitives-light.json5 +1196 -0
- package/src/tokens/functional/color/light/syntax-light.json5 +559 -0
- package/src/tokens/functional/motion/loading.json5 +17 -0
- package/src/tokens/functional/motion/patterns.json5 +28 -0
- package/src/tokens/functional/shadow/dark.json5 +383 -0
- package/src/tokens/functional/shadow/light.json5 +376 -0
- package/src/tokens/functional/size/border.json +98 -0
- package/src/tokens/functional/size/breakpoints.json +64 -0
- package/src/tokens/functional/size/size-coarse.json +28 -0
- package/src/tokens/functional/size/size-fine.json +28 -0
- package/src/tokens/functional/size/size.json +802 -0
- package/src/tokens/functional/size/viewport.json +28 -0
- package/src/tokens/functional/typography/typography.json +279 -0
- package/src/tokens/removed/color.json +421 -0
- package/src/transformers/borderToCss.ts +38 -0
- package/src/transformers/colorToHex.ts +16 -0
- package/src/transformers/colorToHexAlpha.ts +23 -0
- package/src/transformers/colorToHexMix.ts +19 -0
- package/src/transformers/colorToRgbAlpha.ts +19 -0
- package/src/transformers/colorToRgbaFloat.ts +45 -0
- package/src/transformers/dimensionToPixelUnitless.ts +60 -0
- package/src/transformers/dimensionToRem.ts +56 -0
- package/src/transformers/dimensionToRemPxArray.ts +60 -0
- package/src/transformers/durationToCss.ts +29 -0
- package/src/transformers/figmaAttributes.ts +55 -0
- package/src/transformers/fontFamilyToCss.ts +38 -0
- package/src/transformers/fontWeightToNumber.ts +53 -0
- package/src/transformers/index.ts +21 -0
- package/src/transformers/jsonDeprecated.ts +15 -0
- package/src/transformers/namePathToCamelCase.ts +14 -0
- package/src/transformers/namePathToDotNotation.ts +34 -0
- package/src/transformers/namePathToFigma.ts +28 -0
- package/src/transformers/namePathToKebabCase.ts +19 -0
- package/src/transformers/namePathToSlashNotation.ts +19 -0
- package/src/transformers/shadowToCss.ts +37 -0
- package/src/transformers/typographyToCss.ts +31 -0
- package/src/transformers/utilities/alpha.ts +23 -0
- package/src/transformers/utilities/checkRequiredTokenProperties.ts +16 -0
- package/src/transformers/utilities/getTokenValue.ts +18 -0
- package/src/transformers/utilities/hexToRgbaFloat.ts +31 -0
- package/src/transformers/utilities/invalidTokenError.ts +34 -0
- package/src/transformers/utilities/isRgbaFloat.ts +29 -0
- package/src/transformers/utilities/mix.ts +46 -0
- package/src/transformers/utilities/rgbaFloatToHex.ts +15 -0
- package/src/types/Border.d.ts +5 -0
- package/src/types/BorderTokenValue.d.ts +10 -0
- package/src/types/ColorHex.d.ts +4 -0
- package/src/types/PlatformInitializer.d.ts +11 -0
- package/src/types/Shadow.d.ts +5 -0
- package/src/types/ShadowTokenValue.d.ts +14 -0
- package/src/types/SizeEm.d.ts +4 -0
- package/src/types/SizePx.d.ts +4 -0
- package/src/types/SizeRem.d.ts +4 -0
- package/src/types/StyleDictionaryConfigGenerator.d.ts +15 -0
- package/src/types/TokenBuildInput.d.ts +8 -0
- package/src/types/TypographyTokenValue.d.ts +12 -0
- package/src/types/w3cTransformedToken.d.ts +8 -0
- package/src/utilities/copyFromDir.ts +21 -0
- package/src/utilities/getFlag.ts +12 -0
- package/src/utilities/index.ts +3 -0
- package/src/utilities/joinFriendly.ts +2 -0
- package/src/utilities/schemaErrorMessage.ts +2 -0
- package/src/utilities/toCamelCase.ts +29 -0
- package/src/utilities/treeWalker.ts +27 -0
- package/src/utilities/upperCaseFirstCharacter.ts +10 -0
- package/src/utils-v1.ts +36 -0
- package/tokens-next-private/styleLint/base/size/size.json +427 -0
- package/tokens-next-private/styleLint/base/typography/typography.json +54 -0
- package/tokens-next-private/styleLint/functional/motion/motion.json +47 -0
- package/tokens-next-private/styleLint/functional/size/border.json +234 -0
- package/tokens-next-private/styleLint/functional/size/breakpoints.json +152 -0
- package/tokens-next-private/styleLint/functional/size/size-coarse.json +41 -0
- package/tokens-next-private/styleLint/functional/size/size-fine.json +41 -0
- package/tokens-next-private/styleLint/functional/size/size.json +1838 -0
- package/tokens-next-private/styleLint/functional/size/viewport.json +80 -0
- package/tokens-next-private/styleLint/functional/themes/dark-colorblind.json +16155 -0
- package/tokens-next-private/styleLint/functional/themes/dark-dimmed.json +16159 -0
- package/tokens-next-private/styleLint/functional/themes/dark-high-contrast.json +16175 -0
- package/tokens-next-private/styleLint/functional/themes/dark-tritanopia.json +16161 -0
- package/tokens-next-private/styleLint/functional/themes/dark.json +16159 -0
- package/tokens-next-private/styleLint/functional/themes/light-colorblind.json +16123 -0
- package/tokens-next-private/styleLint/functional/themes/light-high-contrast.json +16125 -0
- package/tokens-next-private/styleLint/functional/themes/light-tritanopia.json +16115 -0
- package/tokens-next-private/styleLint/functional/themes/light.json +16113 -0
- package/tokens-next-private/styleLint/functional/typography/typography.json +663 -0
- package/tokens-v2-private/css/tokens/base/size/size.css +1 -1
- package/tokens-v2-private/css/tokens/base/typography/typography.css +1 -1
- package/tokens-v2-private/css/tokens/functional/size/border.css +1 -1
- package/tokens-v2-private/css/tokens/functional/size/breakpoints.css +1 -1
- package/tokens-v2-private/css/tokens/functional/size/size-coarse.css +1 -1
- package/tokens-v2-private/css/tokens/functional/size/size-fine.css +1 -1
- package/tokens-v2-private/css/tokens/functional/size/size.css +1 -1
- package/tokens-v2-private/css/tokens/functional/typography/typography.css +1 -1
- package/tokens-v2-private/js/module/tokens/base/size/size.js +1 -1
- package/tokens-v2-private/js/module/tokens/base/typography/typography.js +1 -1
- package/tokens-v2-private/js/module/tokens/functional/size/border.js +1 -1
- package/tokens-v2-private/js/module/tokens/functional/size/breakpoints.js +1 -1
- package/tokens-v2-private/js/module/tokens/functional/size/size-coarse.js +1 -1
- package/tokens-v2-private/js/module/tokens/functional/size/size-fine.js +1 -1
- package/tokens-v2-private/js/module/tokens/functional/size/size.js +1 -1
- package/tokens-v2-private/js/module/tokens/functional/size/viewport.js +1 -1
- package/tokens-v2-private/js/module/tokens/functional/typography/typography.js +1 -1
- package/tokens-v2-private/js/tokens/base/size/size.js +1 -1
- package/tokens-v2-private/js/tokens/base/typography/typography.js +1 -1
- package/tokens-v2-private/js/tokens/functional/size/border.js +1 -1
- package/tokens-v2-private/js/tokens/functional/size/breakpoints.js +1 -1
- package/tokens-v2-private/js/tokens/functional/size/size-coarse.js +1 -1
- package/tokens-v2-private/js/tokens/functional/size/size-fine.js +1 -1
- package/tokens-v2-private/js/tokens/functional/size/size.js +1 -1
- package/tokens-v2-private/js/tokens/functional/size/viewport.js +1 -1
- package/tokens-v2-private/js/tokens/functional/typography/typography.js +1 -1
- package/tokens-v2-private/scss/tokens/base/size/size.scss +1 -1
- package/tokens-v2-private/scss/tokens/base/typography/typography.scss +1 -1
- package/tokens-v2-private/scss/tokens/functional/size/border.scss +1 -1
- package/tokens-v2-private/scss/tokens/functional/size/breakpoints.scss +1 -1
- package/tokens-v2-private/scss/tokens/functional/size/size-coarse.scss +1 -1
- package/tokens-v2-private/scss/tokens/functional/size/size-fine.scss +1 -1
- package/tokens-v2-private/scss/tokens/functional/size/size.scss +1 -1
- package/tokens-v2-private/scss/tokens/functional/size/viewport.scss +1 -1
- package/tokens-v2-private/scss/tokens/functional/typography/typography.scss +1 -1
- package/tokens-v2-private/ts/tokens/base/size/size.d.ts +1 -1
- package/tokens-v2-private/ts/tokens/base/size/size.js +1 -1
- package/tokens-v2-private/ts/tokens/base/typography/typography.d.ts +1 -1
- package/tokens-v2-private/ts/tokens/base/typography/typography.js +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/border.d.ts +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/border.js +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/breakpoints.d.ts +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/breakpoints.js +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/size-coarse.d.ts +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/size-coarse.js +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/size-fine.d.ts +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/size-fine.js +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/size.d.ts +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/size.js +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/viewport.d.ts +1 -1
- package/tokens-v2-private/ts/tokens/functional/size/viewport.js +1 -1
- package/tokens-v2-private/ts/tokens/functional/typography/typography.d.ts +1 -1
- package/tokens-v2-private/ts/tokens/functional/typography/typography.js +1 -1
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@primer/primitives",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.17.0-rc.1685583f",
|
|
4
4
|
"description": "Typography, spacing, and color primitives for Primer design system",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
7
7
|
"tokens-v2-private",
|
|
8
8
|
"tokens-next-private",
|
|
9
9
|
"build.js",
|
|
10
|
-
"tokens/"
|
|
10
|
+
"tokens/",
|
|
11
|
+
"src/**/*",
|
|
12
|
+
"!src/**/*.test.ts"
|
|
11
13
|
],
|
|
12
14
|
"main": "dist/js/index.js",
|
|
13
15
|
"types": "dist/js/index.d.ts",
|
|
@@ -54,11 +56,11 @@
|
|
|
54
56
|
},
|
|
55
57
|
"prettier": "@github/prettier-config",
|
|
56
58
|
"devDependencies": {
|
|
57
|
-
"@actions/github": "^
|
|
58
|
-
"@changesets/changelog-github": "^0.
|
|
59
|
-
"@changesets/cli": "^2.
|
|
59
|
+
"@actions/github": "^6.0.0",
|
|
60
|
+
"@changesets/changelog-github": "^0.5.0",
|
|
61
|
+
"@changesets/cli": "^2.27.1",
|
|
60
62
|
"@github/prettier-config": "^0.0.6",
|
|
61
|
-
"@playwright/test": "^1.
|
|
63
|
+
"@playwright/test": "^1.43.0",
|
|
62
64
|
"@types/flat": "^5.0.1",
|
|
63
65
|
"@types/jest": "^29.5.2",
|
|
64
66
|
"@types/lodash": "^4.14.195",
|
|
@@ -89,9 +91,9 @@
|
|
|
89
91
|
"mkdirp": "^3.0.1",
|
|
90
92
|
"prettier": "^2.7.1",
|
|
91
93
|
"style-dictionary": "^3.9.2",
|
|
92
|
-
"ts-jest": "^29.1.
|
|
93
|
-
"ts-node": "^10.9.
|
|
94
|
-
"typescript": "^5.4.
|
|
94
|
+
"ts-jest": "^29.1.2",
|
|
95
|
+
"ts-node": "^10.9.2",
|
|
96
|
+
"typescript": "^5.4.5",
|
|
95
97
|
"zod": "^3.22.4",
|
|
96
98
|
"zod-validation-error": "^3.1.0"
|
|
97
99
|
}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import StyleDictionary from 'style-dictionary'
|
|
2
|
+
import {w3cJsonParser} from './parsers'
|
|
3
|
+
import {
|
|
4
|
+
borderToCss,
|
|
5
|
+
colorToHexAlpha,
|
|
6
|
+
colorToRgbAlpha,
|
|
7
|
+
colorToHex,
|
|
8
|
+
colorToHexMix,
|
|
9
|
+
colorToRgbaFloat,
|
|
10
|
+
dimensionToRem,
|
|
11
|
+
dimensionToPixelUnitless,
|
|
12
|
+
durationToCss,
|
|
13
|
+
figmaAttributes,
|
|
14
|
+
fontFamilyToCss,
|
|
15
|
+
fontWeightToNumber,
|
|
16
|
+
jsonDeprecated,
|
|
17
|
+
namePathToDotNotation,
|
|
18
|
+
namePathToCamelCase,
|
|
19
|
+
namePathToKebabCase,
|
|
20
|
+
namePathToSlashNotation,
|
|
21
|
+
namePathToFigma,
|
|
22
|
+
shadowToCss,
|
|
23
|
+
typographyToCss,
|
|
24
|
+
dimensionToRemPxArray,
|
|
25
|
+
} from './transformers'
|
|
26
|
+
import {
|
|
27
|
+
javascriptCommonJs,
|
|
28
|
+
javascriptEsm,
|
|
29
|
+
typescriptExportDefinition,
|
|
30
|
+
jsonNestedPrefixed,
|
|
31
|
+
cssThemed,
|
|
32
|
+
cssCustomMedia,
|
|
33
|
+
jsonOneDimensional,
|
|
34
|
+
jsonPostCssFallback,
|
|
35
|
+
cssWrapMediaQuery,
|
|
36
|
+
cssVariables,
|
|
37
|
+
jsonFigma,
|
|
38
|
+
} from './formats'
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Parsers
|
|
42
|
+
*
|
|
43
|
+
*/
|
|
44
|
+
StyleDictionary.registerParser(w3cJsonParser)
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Formats
|
|
48
|
+
*
|
|
49
|
+
*/
|
|
50
|
+
StyleDictionary.registerFormat({
|
|
51
|
+
name: 'css/themed',
|
|
52
|
+
formatter: cssThemed,
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
StyleDictionary.registerFormat({
|
|
56
|
+
name: 'css/customMedia',
|
|
57
|
+
formatter: cssCustomMedia,
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
StyleDictionary.registerFormat({
|
|
61
|
+
name: 'css/wrapMediaQuery',
|
|
62
|
+
formatter: cssWrapMediaQuery,
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
StyleDictionary.registerFormat({
|
|
66
|
+
name: 'css/variables',
|
|
67
|
+
formatter: cssVariables,
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
StyleDictionary.registerFormat({
|
|
71
|
+
name: 'javascript/esm',
|
|
72
|
+
formatter: javascriptEsm,
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
StyleDictionary.registerFormat({
|
|
76
|
+
name: 'javascript/commonJs',
|
|
77
|
+
formatter: javascriptCommonJs,
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
StyleDictionary.registerFormat({
|
|
81
|
+
name: 'typescript/export-definition',
|
|
82
|
+
formatter: typescriptExportDefinition,
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
StyleDictionary.registerFormat({
|
|
86
|
+
name: 'json/nested-prefixed',
|
|
87
|
+
formatter: jsonNestedPrefixed,
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
StyleDictionary.registerFormat({
|
|
91
|
+
name: 'json/one-dimensional',
|
|
92
|
+
formatter: jsonOneDimensional,
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
StyleDictionary.registerFormat({
|
|
96
|
+
name: 'json/postCss-fallback',
|
|
97
|
+
formatter: jsonPostCssFallback,
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
StyleDictionary.registerFormat({
|
|
101
|
+
name: 'json/figma',
|
|
102
|
+
formatter: jsonFigma,
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Transformers
|
|
107
|
+
*
|
|
108
|
+
*/
|
|
109
|
+
StyleDictionary.registerTransform({
|
|
110
|
+
name: 'color/rgbAlpha',
|
|
111
|
+
...colorToRgbAlpha,
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
StyleDictionary.registerTransform({
|
|
115
|
+
name: 'color/rgbaFloat',
|
|
116
|
+
...colorToRgbaFloat,
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
StyleDictionary.registerTransform({
|
|
120
|
+
name: 'color/hexAlpha',
|
|
121
|
+
...colorToHexAlpha,
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
StyleDictionary.registerTransform({
|
|
125
|
+
name: 'color/hexMix',
|
|
126
|
+
...colorToHexMix,
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
StyleDictionary.registerTransform({
|
|
130
|
+
name: 'color/hex',
|
|
131
|
+
...colorToHex,
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
StyleDictionary.registerTransform({
|
|
135
|
+
name: 'dimension/rem',
|
|
136
|
+
...dimensionToRem,
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
StyleDictionary.registerTransform({
|
|
140
|
+
name: 'dimension/remPxArray',
|
|
141
|
+
...dimensionToRemPxArray,
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
StyleDictionary.registerTransform({
|
|
145
|
+
name: 'dimension/pixelUnitless',
|
|
146
|
+
...dimensionToPixelUnitless,
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
StyleDictionary.registerTransform({
|
|
150
|
+
name: 'duration/css',
|
|
151
|
+
...durationToCss,
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
StyleDictionary.registerTransform({
|
|
155
|
+
name: 'figma/attributes',
|
|
156
|
+
...figmaAttributes,
|
|
157
|
+
})
|
|
158
|
+
|
|
159
|
+
StyleDictionary.registerTransform({
|
|
160
|
+
name: 'json/deprecated',
|
|
161
|
+
...jsonDeprecated,
|
|
162
|
+
})
|
|
163
|
+
|
|
164
|
+
StyleDictionary.registerTransform({
|
|
165
|
+
name: 'name/pathToCamelCase',
|
|
166
|
+
...namePathToCamelCase,
|
|
167
|
+
})
|
|
168
|
+
|
|
169
|
+
StyleDictionary.registerTransform({
|
|
170
|
+
name: 'name/pathToDotNotation',
|
|
171
|
+
...namePathToDotNotation,
|
|
172
|
+
})
|
|
173
|
+
|
|
174
|
+
StyleDictionary.registerTransform({
|
|
175
|
+
name: 'name/pathToFigma',
|
|
176
|
+
...namePathToFigma,
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
StyleDictionary.registerTransform({
|
|
180
|
+
name: 'name/pathToCamelCase',
|
|
181
|
+
...namePathToCamelCase,
|
|
182
|
+
})
|
|
183
|
+
|
|
184
|
+
StyleDictionary.registerTransform({
|
|
185
|
+
name: 'name/pathToKebabCase',
|
|
186
|
+
...namePathToKebabCase,
|
|
187
|
+
})
|
|
188
|
+
|
|
189
|
+
StyleDictionary.registerTransform({
|
|
190
|
+
name: 'name/pathToSlashNotation',
|
|
191
|
+
...namePathToSlashNotation,
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
StyleDictionary.registerTransform({
|
|
195
|
+
name: 'shadow/css',
|
|
196
|
+
...shadowToCss,
|
|
197
|
+
})
|
|
198
|
+
|
|
199
|
+
StyleDictionary.registerTransform({
|
|
200
|
+
name: 'border/css',
|
|
201
|
+
...borderToCss,
|
|
202
|
+
})
|
|
203
|
+
|
|
204
|
+
StyleDictionary.registerTransform({
|
|
205
|
+
name: 'typography/css',
|
|
206
|
+
...typographyToCss,
|
|
207
|
+
})
|
|
208
|
+
|
|
209
|
+
StyleDictionary.registerTransform({
|
|
210
|
+
name: 'fontWeight/number',
|
|
211
|
+
...fontWeightToNumber,
|
|
212
|
+
})
|
|
213
|
+
|
|
214
|
+
StyleDictionary.registerTransform({
|
|
215
|
+
name: 'fontFamily/css',
|
|
216
|
+
...fontFamilyToCss,
|
|
217
|
+
})
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* @name {@link PrimerStyleDictionary}
|
|
221
|
+
* @description Returns style dictionary object with primer preset that includes parsers, formats and transformers
|
|
222
|
+
* @parsers [w3cJsonParser](https://github.com/primer/primitives/blob/main/config//parsers/w3c-json-parser.ts)
|
|
223
|
+
* @formats [javascript/esm](https://github.com/primer/primitives/blob/main/config/formats/javascript-esm.ts), [javascript/commonJs](https://github.com/primer/primitives/blob/main/config/formats/javascript-commonJs.ts), [typescript/export-definition](https://github.com/primer/primitives/blob/main/config/formats/typescript-export-defition.ts)
|
|
224
|
+
* @transformers [color/rgbAlpha](https://github.com/primer/primitives/blob/main/config/tranformers/color-to-rgb-alpha.ts), [color/hexAlpha](https://github.com/primer/primitives/blob/main/config/tranformers/color-to-hex-alpha.ts), [color/hex](https://github.com/primer/primitives/blob/main/config/tranformers/color-to-hex6.ts), [json/deprecated](https://github.com/primer/primitives/blob/main/config/tranformers/json-deprecated.ts), [name/pathToDotNotation](https://github.com/primer/primitives/blob/main/config/tranformers/name-path-to-dot-notation.ts)
|
|
225
|
+
*/
|
|
226
|
+
export const PrimerStyleDictionary: StyleDictionary.Core = StyleDictionary
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export {isBorder} from './isBorder'
|
|
2
|
+
export {isColor} from './isColor'
|
|
3
|
+
export {isColorWithAlpha} from './isColorWithAlpha'
|
|
4
|
+
export {isColorWithMix} from './isColorWithMix'
|
|
5
|
+
export {isDimension} from './isDimension'
|
|
6
|
+
export {isDeprecated} from './isDeprecated'
|
|
7
|
+
export {isFromFile} from './isFromFile'
|
|
8
|
+
export {isFontFamily} from './isFontFamily'
|
|
9
|
+
export {isFontWeight} from './isFontWeight'
|
|
10
|
+
export {isShadow} from './isShadow'
|
|
11
|
+
export {isSource} from './isSource'
|
|
12
|
+
export {isTypography} from './isTypography'
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token is of $type `border`
|
|
5
|
+
* @param arguments [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export const isBorder = (token: StyleDictionary.TransformedToken): boolean => {
|
|
9
|
+
return token.$type === 'border'
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token is of $type `color`
|
|
5
|
+
* @param token [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export const isColor = (token: StyleDictionary.TransformedToken): boolean => {
|
|
9
|
+
return token.$type === 'color'
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
import {isColor} from './isColor'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @description Checks if token is color with an alpha value
|
|
6
|
+
* @param arguments [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
7
|
+
* @returns boolean
|
|
8
|
+
*/
|
|
9
|
+
export const isColorWithAlpha = (token: StyleDictionary.TransformedToken): boolean => {
|
|
10
|
+
return isColor(token) && token.alpha !== undefined && typeof token.alpha === 'number'
|
|
11
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
import {isColor} from './isColor'
|
|
3
|
+
|
|
4
|
+
const throwError = (token: StyleDictionary.TransformedToken) => {
|
|
5
|
+
throw new Error(
|
|
6
|
+
`Invalid mix property on token: ${token.name}. "mix.color": ${token.mix.color}, "mix.weight": ${
|
|
7
|
+
typeof token.mix.weight === 'string' ? `"${token.mix.weight}" (string)` : token.mix.weight
|
|
8
|
+
} must be a number between 0 and 1. In file: "${token.filePath}".`,
|
|
9
|
+
)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @description Checks if token is color and has a mix property
|
|
14
|
+
* @param arguments [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
15
|
+
* @returns boolean
|
|
16
|
+
*/
|
|
17
|
+
export const isColorWithMix = (token: StyleDictionary.TransformedToken): boolean => {
|
|
18
|
+
// no color or no mix property
|
|
19
|
+
if (!isColor(token) || token.mix === undefined || token.mix === null) {
|
|
20
|
+
return false
|
|
21
|
+
}
|
|
22
|
+
// invalid mix property
|
|
23
|
+
if (
|
|
24
|
+
typeof token.mix.color !== 'string' ||
|
|
25
|
+
typeof token.mix.weight !== 'number' ||
|
|
26
|
+
token.mix.weight < 0 ||
|
|
27
|
+
token.mix.weight > 1
|
|
28
|
+
) {
|
|
29
|
+
throwError(token)
|
|
30
|
+
}
|
|
31
|
+
// valid mix property
|
|
32
|
+
return true
|
|
33
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token has a valid `deprecated` property
|
|
5
|
+
* @param arguments [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export const isDeprecated = (token: StyleDictionary.TransformedToken): boolean => {
|
|
9
|
+
return token.deprecated === true || typeof token.deprecated === 'string'
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token is of $type `dimension`
|
|
5
|
+
* @param arguments [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export const isDimension = (token: StyleDictionary.TransformedToken): boolean => {
|
|
9
|
+
return token.$type === 'dimension'
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token is of $type `duration`
|
|
5
|
+
* @param token [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export const isDuration = (token: StyleDictionary.TransformedToken): boolean => {
|
|
9
|
+
return token.$type === 'duration'
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token is of $type `isFontFamily`
|
|
5
|
+
* @param arguments [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export const isFontFamily = (token: StyleDictionary.TransformedToken): boolean => {
|
|
9
|
+
return token.$type === 'fontFamily'
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token is of $type `fontWeight`
|
|
5
|
+
* @param arguments [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export const isFontWeight = (token: StyleDictionary.TransformedToken): boolean => {
|
|
9
|
+
return token.$type === 'fontWeight'
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token comes from a specific file
|
|
5
|
+
* @param token [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @param files - array of file paths
|
|
7
|
+
* @returns boolean
|
|
8
|
+
*/
|
|
9
|
+
export const isFromFile = (token: StyleDictionary.TransformedToken, files: string[]): boolean => {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
11
|
+
return files?.includes(token.filePath) === true
|
|
12
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token is of $type `shadow`
|
|
5
|
+
* @param arguments [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export const isShadow = (token: StyleDictionary.TransformedToken): boolean => {
|
|
9
|
+
return token.$type === 'shadow'
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token is source token
|
|
5
|
+
* @param arguments [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export const isSource = (token: StyleDictionary.TransformedToken): boolean => {
|
|
9
|
+
return token.isSource === true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Checks if token is of $type `typography`
|
|
5
|
+
* @param arguments [StyleDictionary.TransformedToken](https://github.com/amzn/style-dictionary/blob/main/types/TransformedToken.d.ts)
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export const isTypography = (token: StyleDictionary.TransformedToken): boolean => {
|
|
9
|
+
return token.$type === 'typography'
|
|
10
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import StyleDictionary from 'style-dictionary'
|
|
2
|
+
import type {FormatterArguments} from 'style-dictionary/types/Format'
|
|
3
|
+
import {format} from 'prettier'
|
|
4
|
+
const {fileHeader} = StyleDictionary.formatHelpers
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @description Converts `StyleDictionary.dictionary.tokens` to css with @custom-media
|
|
8
|
+
* @param arguments [FormatterArguments](https://github.com/amzn/style-dictionary/blob/main/types/Format.d.ts)
|
|
9
|
+
* @returns formatted `string`
|
|
10
|
+
*/
|
|
11
|
+
export const cssCustomMedia: StyleDictionary.Formatter = ({
|
|
12
|
+
dictionary,
|
|
13
|
+
options: _options,
|
|
14
|
+
file,
|
|
15
|
+
}: FormatterArguments) => {
|
|
16
|
+
// add file header
|
|
17
|
+
const output = [fileHeader({file})]
|
|
18
|
+
// add single theme css
|
|
19
|
+
dictionary.allTokens.map(({name, value}) => {
|
|
20
|
+
output.push(`@custom-media --${name} ${value};`)
|
|
21
|
+
})
|
|
22
|
+
// return prettified
|
|
23
|
+
return format(output.join('\n'), {parser: 'css', printWidth: 500})
|
|
24
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import StyleDictionary from 'style-dictionary'
|
|
2
|
+
import type {FormatterArguments} from 'style-dictionary/types/Format'
|
|
3
|
+
import {format} from 'prettier'
|
|
4
|
+
import type {LineFormatting} from 'style-dictionary/types/FormatHelpers'
|
|
5
|
+
const {fileHeader, formattedVariables} = StyleDictionary.formatHelpers
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @description Converts `StyleDictionary.dictionary.tokens` to css with prefers dark and light section
|
|
9
|
+
* @param arguments [FormatterArguments](https://github.com/amzn/style-dictionary/blob/main/types/Format.d.ts)
|
|
10
|
+
* @param arguments.options outputReferences `boolean`, selector `string`, selectorLight `string`, selectorDark `string`
|
|
11
|
+
* @returns formatted `string`
|
|
12
|
+
*/
|
|
13
|
+
export const cssThemed: StyleDictionary.Formatter = ({dictionary, options = {}, file}: FormatterArguments) => {
|
|
14
|
+
const {selector, selectorLight, selectorDark} = options
|
|
15
|
+
const {outputReferences, descriptions} = options
|
|
16
|
+
const formatting: LineFormatting = {
|
|
17
|
+
commentStyle: descriptions ? 'long' : 'none',
|
|
18
|
+
}
|
|
19
|
+
// add file header
|
|
20
|
+
const output = [fileHeader({file})]
|
|
21
|
+
// add single theme css
|
|
22
|
+
output.push(`${selector || ':root'}${selectorLight ? `, ${selectorLight}` : ''}{
|
|
23
|
+
${formattedVariables({format: 'css', dictionary, outputReferences, formatting})}
|
|
24
|
+
}`)
|
|
25
|
+
// add auto dark theme css
|
|
26
|
+
if (selectorDark) {
|
|
27
|
+
output.push(`@media (prefers-color-scheme: dark) {
|
|
28
|
+
${selectorDark} {
|
|
29
|
+
${formattedVariables({format: 'css', dictionary, outputReferences, formatting})}
|
|
30
|
+
}
|
|
31
|
+
}`)
|
|
32
|
+
}
|
|
33
|
+
// return prettified
|
|
34
|
+
return format(output.join('\n'), {parser: 'css', printWidth: 500})
|
|
35
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import StyleDictionary from 'style-dictionary'
|
|
2
|
+
import type {FormatterArguments} from 'style-dictionary/types/Format'
|
|
3
|
+
import type {LineFormatting} from 'style-dictionary/types/FormatHelpers'
|
|
4
|
+
const {fileHeader, formattedVariables} = StyleDictionary.formatHelpers
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @description Converts `StyleDictionary.dictionary.tokens` to css with prefers dark and light section
|
|
8
|
+
* @param arguments [FormatterArguments](https://github.com/amzn/style-dictionary/blob/main/types/Format.d.ts)
|
|
9
|
+
* @param arguments.options outputReferences `boolean`, selector `string`, selectorLight `string`, selectorDark `string`
|
|
10
|
+
* @returns formatted `string`
|
|
11
|
+
*/
|
|
12
|
+
export const cssVariables: StyleDictionary.Formatter = ({dictionary, options = {}, file}: FormatterArguments) => {
|
|
13
|
+
const selector = options.selector ? options.selector : `:root`
|
|
14
|
+
const {outputReferences, descriptions} = options
|
|
15
|
+
const formatting: LineFormatting = {
|
|
16
|
+
commentStyle: descriptions ? 'long' : 'none',
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return `${fileHeader({file})}${selector} {\n${formattedVariables({
|
|
20
|
+
format: 'css',
|
|
21
|
+
dictionary,
|
|
22
|
+
outputReferences,
|
|
23
|
+
formatting,
|
|
24
|
+
})}\n}\n`
|
|
25
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import StyleDictionary from 'style-dictionary'
|
|
2
|
+
import type {FormatterArguments} from 'style-dictionary/types/Format'
|
|
3
|
+
import {format} from 'prettier'
|
|
4
|
+
import type {LineFormatting} from 'style-dictionary/types/FormatHelpers'
|
|
5
|
+
const {fileHeader, formattedVariables} = StyleDictionary.formatHelpers
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @description Converts `StyleDictionary.dictionary.tokens` to css with @custom-media
|
|
9
|
+
* @param arguments [FormatterArguments](https://github.com/amzn/style-dictionary/blob/main/types/Format.d.ts)
|
|
10
|
+
* @returns formatted `string`
|
|
11
|
+
*/
|
|
12
|
+
export const cssWrapMediaQuery: StyleDictionary.Formatter = ({dictionary, options, file}: FormatterArguments) => {
|
|
13
|
+
const {outputReferences, descriptions} = options
|
|
14
|
+
const formatting: LineFormatting = {
|
|
15
|
+
commentStyle: descriptions ? 'long' : 'none',
|
|
16
|
+
}
|
|
17
|
+
// get specific media query or use screen
|
|
18
|
+
const mediaQuery = options.mediaQuery?.[file.destination] || 'screen'
|
|
19
|
+
// add file header
|
|
20
|
+
const output = [fileHeader({file})]
|
|
21
|
+
// add meadia query
|
|
22
|
+
output.push(`@media ${mediaQuery} {\n:root {`)
|
|
23
|
+
// add tokens
|
|
24
|
+
output.push(formattedVariables({format: 'css', dictionary, outputReferences, formatting}))
|
|
25
|
+
// close media query
|
|
26
|
+
output.push(`}\n}`)
|
|
27
|
+
// return prettified
|
|
28
|
+
return format(output.join('\n'), {parser: 'css', printWidth: 500})
|
|
29
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export {cssThemed} from './cssThemed'
|
|
2
|
+
export {cssCustomMedia} from './cssCustomMedia'
|
|
3
|
+
export {cssWrapMediaQuery} from './cssWrapMediaQuery'
|
|
4
|
+
export {cssVariables} from './cssVariables'
|
|
5
|
+
export {jsonFigma} from './jsonFigma'
|
|
6
|
+
export {javascriptCommonJs} from './javascriptCommonJs'
|
|
7
|
+
export {javascriptEsm} from './javascriptEsm'
|
|
8
|
+
export {jsonNestedPrefixed} from './jsonNestedPrefixed'
|
|
9
|
+
export {jsonOneDimensional} from './jsonOneDimensional'
|
|
10
|
+
export {jsonPostCssFallback} from './jsonPostCssFallback'
|
|
11
|
+
export {typescriptExportDefinition} from './typescriptExportDefinition'
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {format} from 'prettier'
|
|
2
|
+
import {jsonToNestedValue} from './utilities/jsonToNestedValue'
|
|
3
|
+
import {prefixTokens} from './utilities/prefixTokens'
|
|
4
|
+
import StyleDictionary from 'style-dictionary'
|
|
5
|
+
import type {FormatterArguments} from 'style-dictionary/types/Format'
|
|
6
|
+
|
|
7
|
+
const {fileHeader} = StyleDictionary.formatHelpers
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @description Converts `StyleDictionary.dictionary.tokens` to javascript commonJS module
|
|
11
|
+
* @param arguments [FormatterArguments](https://github.com/amzn/style-dictionary/blob/main/types/Format.d.ts)
|
|
12
|
+
* @returns formatted `string`
|
|
13
|
+
*/
|
|
14
|
+
export const javascriptCommonJs: StyleDictionary.Formatter = ({dictionary, file, platform}: FormatterArguments) => {
|
|
15
|
+
// add prefix if defined
|
|
16
|
+
const tokens = prefixTokens(dictionary.tokens, platform)
|
|
17
|
+
// add file header and convert output
|
|
18
|
+
const output = `${fileHeader({file})}exports.default = ${JSON.stringify(jsonToNestedValue(tokens), null, 2)}\n`
|
|
19
|
+
// return prettified
|
|
20
|
+
return format(output, {parser: 'typescript', printWidth: 500})
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import StyleDictionary from 'style-dictionary'
|
|
2
|
+
import {format} from 'prettier'
|
|
3
|
+
import {jsonToNestedValue} from './utilities/jsonToNestedValue'
|
|
4
|
+
import {prefixTokens} from './utilities/prefixTokens'
|
|
5
|
+
import type {FormatterArguments} from 'style-dictionary/types/Format'
|
|
6
|
+
|
|
7
|
+
const {fileHeader} = StyleDictionary.formatHelpers
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @description Converts `StyleDictionary.dictionary.tokens` to javascript esm (javascript export statement)
|
|
11
|
+
* @param arguments [FormatterArguments](https://github.com/amzn/style-dictionary/blob/main/types/Format.d.ts)
|
|
12
|
+
* @returns formatted `string`
|
|
13
|
+
*/
|
|
14
|
+
export const javascriptEsm: StyleDictionary.Formatter = ({dictionary, file, platform}: FormatterArguments) => {
|
|
15
|
+
// add prefix if defined
|
|
16
|
+
const tokens = prefixTokens(dictionary.tokens, platform)
|
|
17
|
+
// add file header and convert output
|
|
18
|
+
const output = `${fileHeader({file})}export default \n${JSON.stringify(jsonToNestedValue(tokens), null, 2)}\n`
|
|
19
|
+
// return prettified
|
|
20
|
+
return format(output, {parser: 'typescript', printWidth: 500})
|
|
21
|
+
}
|