@primer/primitives 7.16.0 → 7.17.0-rc.132f02a7
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/css/functional/themes/dark-colorblind.css +14 -14
- package/dist/css/functional/themes/dark-tritanopia.css +14 -14
- package/dist/css/functional/themes/dark.css +14 -14
- package/dist/docs/functional/themes/dark-colorblind.json +7 -7
- package/dist/docs/functional/themes/dark-tritanopia.json +7 -7
- package/dist/docs/functional/themes/dark.json +7 -7
- package/dist/figma/scales/dark.json +5 -5
- package/dist/figma/themes/dark-colorblind.json +20 -20
- package/dist/figma/themes/dark-tritanopia.json +20 -20
- package/dist/figma/themes/dark.json +20 -20
- package/dist/internalCss/dark-colorblind.css +18 -18
- package/dist/internalCss/dark-tritanopia.css +18 -18
- package/dist/internalCss/dark.css +18 -18
- package/{tokens-next-private/docs → dist/styleLint}/base/size/size.json +17 -17
- package/{tokens-next-private/docs → dist/styleLint}/functional/size/border.json +6 -6
- package/{tokens-next-private/docs → dist/styleLint}/functional/size/breakpoints.json +6 -6
- package/{tokens-next-private/docs → dist/styleLint}/functional/size/size-coarse.json +3 -3
- package/{tokens-next-private/docs → dist/styleLint}/functional/size/size-fine.json +3 -3
- package/{tokens-next-private/docs → dist/styleLint}/functional/size/size.json +72 -72
- package/{tokens-next-private/docs → dist/styleLint}/functional/size/viewport.json +4 -4
- package/{tokens-next-private/docs → dist/styleLint}/functional/themes/dark-colorblind.json +7 -7
- package/{tokens-next-private/docs → dist/styleLint}/functional/themes/dark-tritanopia.json +7 -7
- package/{tokens-next-private/docs → dist/styleLint}/functional/themes/dark.json +7 -7
- package/{tokens-next-private/docs → dist/styleLint}/functional/typography/typography.json +23 -23
- package/package.json +12 -11
- 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 +133 -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 +49 -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 +21 -0
- package/src/schemas/fontWeightToken.ts +22 -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/{tokens-next-private/fallbacks → src/tokens/fallback}/color-fallbacks.json +1 -1
- 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/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-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/dist/deprecated/colors.json +0 -7
- package/dist/js/colors/dark.d.ts +0 -516
- package/dist/js/colors/dark.js +0 -616
- package/dist/js/colors/dark_colorblind.d.ts +0 -516
- package/dist/js/colors/dark_colorblind.js +0 -616
- package/dist/js/colors/dark_dimmed.d.ts +0 -516
- package/dist/js/colors/dark_dimmed.js +0 -616
- package/dist/js/colors/dark_high_contrast.d.ts +0 -516
- package/dist/js/colors/dark_high_contrast.js +0 -616
- package/dist/js/colors/dark_tritanopia.d.ts +0 -516
- package/dist/js/colors/dark_tritanopia.js +0 -616
- package/dist/js/colors/index.d.ts +0 -4638
- package/dist/js/colors/index.js +0 -15
- package/dist/js/colors/light.d.ts +0 -516
- package/dist/js/colors/light.js +0 -616
- package/dist/js/colors/light_colorblind.d.ts +0 -516
- package/dist/js/colors/light_colorblind.js +0 -616
- package/dist/js/colors/light_high_contrast.d.ts +0 -516
- package/dist/js/colors/light_high_contrast.js +0 -616
- package/dist/js/colors/light_tritanopia.d.ts +0 -516
- package/dist/js/colors/light_tritanopia.js +0 -616
- package/dist/js/index.d.ts +0 -4655
- package/dist/js/index.js +0 -9
- package/dist/js/spacing/index.d.ts +0 -6
- package/dist/js/spacing/index.js +0 -7
- package/dist/js/spacing/normal.d.ts +0 -4
- package/dist/js/spacing/normal.js +0 -13
- package/dist/js/typography/index.d.ts +0 -11
- package/dist/js/typography/index.js +0 -7
- package/dist/js/typography/normal.d.ts +0 -9
- package/dist/js/typography/normal.js +0 -19
- package/dist/json/colors/dark.json +0 -614
- package/dist/json/colors/dark_colorblind.json +0 -614
- package/dist/json/colors/dark_dimmed.json +0 -614
- package/dist/json/colors/dark_high_contrast.json +0 -614
- package/dist/json/colors/dark_tritanopia.json +0 -614
- package/dist/json/colors/light.json +0 -614
- package/dist/json/colors/light_colorblind.json +0 -614
- package/dist/json/colors/light_high_contrast.json +0 -614
- package/dist/json/colors/light_tritanopia.json +0 -614
- package/dist/json/spacing/normal.json +0 -11
- package/dist/json/typography/normal.json +0 -17
- package/dist/removed/colors.json +0 -432
- package/dist/scss/colors/_dark.scss +0 -452
- package/dist/scss/colors/_dark_colorblind.scss +0 -452
- package/dist/scss/colors/_dark_dimmed.scss +0 -452
- package/dist/scss/colors/_dark_high_contrast.scss +0 -452
- package/dist/scss/colors/_dark_tritanopia.scss +0 -452
- package/dist/scss/colors/_light.scss +0 -452
- package/dist/scss/colors/_light_colorblind.scss +0 -452
- package/dist/scss/colors/_light_high_contrast.scss +0 -452
- package/dist/scss/colors/_light_tritanopia.scss +0 -452
- package/dist/scss/spacing/_normal.scss +0 -11
- package/dist/scss/typography/_normal.scss +0 -15
- package/dist/ts/colors/dark.ts +0 -614
- package/dist/ts/colors/dark_colorblind.ts +0 -614
- package/dist/ts/colors/dark_dimmed.ts +0 -614
- package/dist/ts/colors/dark_high_contrast.ts +0 -614
- package/dist/ts/colors/dark_tritanopia.ts +0 -614
- package/dist/ts/colors/index.ts +0 -10
- package/dist/ts/colors/light.ts +0 -614
- package/dist/ts/colors/light_colorblind.ts +0 -614
- package/dist/ts/colors/light_high_contrast.ts +0 -614
- package/dist/ts/colors/light_tritanopia.ts +0 -614
- package/dist/ts/index.ts +0 -4
- package/dist/ts/spacing/index.ts +0 -2
- package/dist/ts/spacing/normal.ts +0 -11
- package/dist/ts/typography/index.ts +0 -2
- package/dist/ts/typography/normal.ts +0 -17
- package/tokens-next-private/css/base/size/size.css +0 -19
- package/tokens-next-private/css/base/typography/typography.css +0 -6
- package/tokens-next-private/css/functional/motion/motion.css +0 -5
- package/tokens-next-private/css/functional/size/border.css +0 -14
- package/tokens-next-private/css/functional/size/breakpoints.css +0 -8
- package/tokens-next-private/css/functional/size/size-coarse.css +0 -7
- package/tokens-next-private/css/functional/size/size-fine.css +0 -7
- package/tokens-next-private/css/functional/size/size.css +0 -74
- package/tokens-next-private/css/functional/size/viewport.css +0 -6
- package/tokens-next-private/css/functional/themes/dark-colorblind.css +0 -1078
- package/tokens-next-private/css/functional/themes/dark-dimmed.css +0 -1078
- package/tokens-next-private/css/functional/themes/dark-high-contrast.css +0 -1078
- package/tokens-next-private/css/functional/themes/dark-tritanopia.css +0 -1078
- package/tokens-next-private/css/functional/themes/dark.css +0 -1078
- package/tokens-next-private/css/functional/themes/light-colorblind.css +0 -1078
- package/tokens-next-private/css/functional/themes/light-high-contrast.css +0 -1078
- package/tokens-next-private/css/functional/themes/light-tritanopia.css +0 -1078
- package/tokens-next-private/css/functional/themes/light.css +0 -1078
- package/tokens-next-private/css/functional/typography/typography.css +0 -47
- package/tokens-next-private/fallbacks/base/size/size.json +0 -19
- package/tokens-next-private/fallbacks/base/typography/typography.json +0 -6
- package/tokens-next-private/fallbacks/functional/motion/motion.json +0 -5
- package/tokens-next-private/fallbacks/functional/size/border.json +0 -14
- package/tokens-next-private/fallbacks/functional/size/breakpoints.json +0 -8
- package/tokens-next-private/fallbacks/functional/size/size-coarse.json +0 -5
- package/tokens-next-private/fallbacks/functional/size/size-fine.json +0 -5
- package/tokens-next-private/fallbacks/functional/size/size.json +0 -74
- package/tokens-next-private/fallbacks/functional/size/viewport.json +0 -8
- package/tokens-next-private/fallbacks/functional/typography/typography.json +0 -47
- package/tokens-next-private/internalCss/dark-colorblind.css +0 -1648
- package/tokens-next-private/internalCss/dark-dimmed.css +0 -1648
- package/tokens-next-private/internalCss/dark-high-contrast.css +0 -1648
- package/tokens-next-private/internalCss/dark-tritanopia.css +0 -1648
- package/tokens-next-private/internalCss/dark.css +0 -1648
- package/tokens-next-private/internalCss/light-colorblind.css +0 -1648
- package/tokens-next-private/internalCss/light-high-contrast.css +0 -1648
- package/tokens-next-private/internalCss/light-tritanopia.css +0 -1648
- package/tokens-next-private/internalCss/light.css +0 -1648
- /package/{tokens-next-private/docs → dist/styleLint}/base/typography/typography.json +0 -0
- /package/{tokens-next-private/docs → dist/styleLint}/functional/motion/motion.json +0 -0
- /package/{tokens-next-private/docs → dist/styleLint}/functional/themes/dark-dimmed.json +0 -0
- /package/{tokens-next-private/docs → dist/styleLint}/functional/themes/dark-high-contrast.json +0 -0
- /package/{tokens-next-private/docs → dist/styleLint}/functional/themes/light-colorblind.json +0 -0
- /package/{tokens-next-private/docs → dist/styleLint}/functional/themes/light-high-contrast.json +0 -0
- /package/{tokens-next-private/docs → dist/styleLint}/functional/themes/light-tritanopia.json +0 -0
- /package/{tokens-next-private/docs → dist/styleLint}/functional/themes/light.json +0 -0
- /package/{tokens-next-private → src/tokens}/removed/color.json +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"viewportRange": {
|
|
3
|
+
"narrow": {
|
|
4
|
+
"$value": "(max-width: calc({breakpoint.medium} - 0.02px))",
|
|
5
|
+
"$type": "custom-viewportRange"
|
|
6
|
+
},
|
|
7
|
+
"narrowLandscape": {
|
|
8
|
+
"$value": "(max-width: calc({breakpoint.large} - 0.02px) and (max-height: calc({breakpoint.small} - 0.02px)) and (orientation: landscape))",
|
|
9
|
+
"$type": "custom-viewportRange"
|
|
10
|
+
},
|
|
11
|
+
"regular": {
|
|
12
|
+
"$value": "(min-width: {breakpoint.medium})",
|
|
13
|
+
"$type": "custom-viewportRange"
|
|
14
|
+
},
|
|
15
|
+
"wide": {
|
|
16
|
+
"$value": "(min-width: {breakpoint.xxlarge})",
|
|
17
|
+
"$type": "custom-viewportRange"
|
|
18
|
+
},
|
|
19
|
+
"portrait": {
|
|
20
|
+
"$value": "(orientation: portrait)",
|
|
21
|
+
"$type": "custom-viewportRange"
|
|
22
|
+
},
|
|
23
|
+
"landscape": {
|
|
24
|
+
"$value": "(orientation: landscape)",
|
|
25
|
+
"$type": "custom-viewportRange"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fontStack": {
|
|
3
|
+
"system": {
|
|
4
|
+
"$value": "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'",
|
|
5
|
+
"$type": "fontFamily"
|
|
6
|
+
},
|
|
7
|
+
"sansSerif": {
|
|
8
|
+
"$value": "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'",
|
|
9
|
+
"$type": "fontFamily"
|
|
10
|
+
},
|
|
11
|
+
"monospace": {
|
|
12
|
+
"$value": "ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace",
|
|
13
|
+
"$type": "fontFamily"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"text": {
|
|
17
|
+
"display": {
|
|
18
|
+
"lineBoxHeight": {
|
|
19
|
+
"$value": "56px",
|
|
20
|
+
"$type": "dimension"
|
|
21
|
+
},
|
|
22
|
+
"size": {
|
|
23
|
+
"$value": "40px",
|
|
24
|
+
"$type": "dimension"
|
|
25
|
+
},
|
|
26
|
+
"lineHeight": {
|
|
27
|
+
"$value": 1.4,
|
|
28
|
+
"$type": "number"
|
|
29
|
+
},
|
|
30
|
+
"weight": {
|
|
31
|
+
"$value": "{base.text.weight.medium}",
|
|
32
|
+
"$type": "fontWeight"
|
|
33
|
+
},
|
|
34
|
+
"shorthand": {
|
|
35
|
+
"$value": {
|
|
36
|
+
"fontWeight": "{text.display.weight}",
|
|
37
|
+
"fontSize": "{text.display.size}",
|
|
38
|
+
"lineHeight": "{text.display.lineHeight}",
|
|
39
|
+
"fontFamily": "{fontStack.sansSerif}"
|
|
40
|
+
},
|
|
41
|
+
"$type": "typography",
|
|
42
|
+
"$description": "Hero-style text for brand to product transition pages. Utilize Title (large) styles on narrow viewports."
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"title": {
|
|
46
|
+
"size": {
|
|
47
|
+
"large": {
|
|
48
|
+
"$value": "32px",
|
|
49
|
+
"$type": "dimension"
|
|
50
|
+
},
|
|
51
|
+
"medium": {
|
|
52
|
+
"$value": "20px",
|
|
53
|
+
"$type": "dimension"
|
|
54
|
+
},
|
|
55
|
+
"small": {
|
|
56
|
+
"$value": "16px",
|
|
57
|
+
"$type": "dimension"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"lineHeight": {
|
|
61
|
+
"large": {
|
|
62
|
+
"$value": 1.5,
|
|
63
|
+
"$type": "number"
|
|
64
|
+
},
|
|
65
|
+
"medium": {
|
|
66
|
+
"$value": 1.6,
|
|
67
|
+
"$type": "number"
|
|
68
|
+
},
|
|
69
|
+
"small": {
|
|
70
|
+
"$value": 1.5,
|
|
71
|
+
"$type": "number"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"weight": {
|
|
75
|
+
"large": {
|
|
76
|
+
"$value": "{base.text.weight.semibold}",
|
|
77
|
+
"$type": "fontWeight"
|
|
78
|
+
},
|
|
79
|
+
"medium": {
|
|
80
|
+
"$value": "{base.text.weight.semibold}",
|
|
81
|
+
"$type": "fontWeight"
|
|
82
|
+
},
|
|
83
|
+
"small": {
|
|
84
|
+
"$value": "{base.text.weight.semibold}",
|
|
85
|
+
"$type": "fontWeight"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"shorthand": {
|
|
89
|
+
"large": {
|
|
90
|
+
"$value": {
|
|
91
|
+
"fontWeight": "{text.title.weight.large}",
|
|
92
|
+
"fontSize": "{text.title.size.large}",
|
|
93
|
+
"lineHeight": "{text.title.lineHeight.large}",
|
|
94
|
+
"fontFamily": "{fontStack.sansSerif}"
|
|
95
|
+
},
|
|
96
|
+
"$type": "typography",
|
|
97
|
+
"$description": "Page headings for user-created objects, such as issues or pull requests. Utilize title (medium) styles on narrow viewports."
|
|
98
|
+
},
|
|
99
|
+
"medium": {
|
|
100
|
+
"$value": {
|
|
101
|
+
"fontWeight": "{text.title.weight.medium}",
|
|
102
|
+
"fontSize": "{text.title.size.medium}",
|
|
103
|
+
"lineHeight": "{text.title.lineHeight.medium}",
|
|
104
|
+
"fontFamily": "{fontStack.sansSerif}"
|
|
105
|
+
},
|
|
106
|
+
"$type": "typography",
|
|
107
|
+
"$description": "Default page title. The 32px-equivalent line-height matches with button and other medium control heights. Great for page header composition."
|
|
108
|
+
},
|
|
109
|
+
"small": {
|
|
110
|
+
"$value": {
|
|
111
|
+
"fontWeight": "{text.title.weight.small}",
|
|
112
|
+
"fontSize": "{text.title.size.small}",
|
|
113
|
+
"lineHeight": "{text.title.lineHeight.small}",
|
|
114
|
+
"fontFamily": "{fontStack.sansSerif}"
|
|
115
|
+
},
|
|
116
|
+
"$type": "typography",
|
|
117
|
+
"$description": "Uses the same size as body (large) with a heavier weight of semibold (600)."
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"subtitle": {
|
|
122
|
+
"size": {
|
|
123
|
+
"$value": "20px",
|
|
124
|
+
"$type": "dimension"
|
|
125
|
+
},
|
|
126
|
+
"lineHeight": {
|
|
127
|
+
"$value": 1.6,
|
|
128
|
+
"$type": "number"
|
|
129
|
+
},
|
|
130
|
+
"weight": {
|
|
131
|
+
"$value": "{base.text.weight.normal}",
|
|
132
|
+
"$type": "fontWeight"
|
|
133
|
+
},
|
|
134
|
+
"shorthand": {
|
|
135
|
+
"$value": {
|
|
136
|
+
"fontWeight": "{text.subtitle.weight}",
|
|
137
|
+
"fontSize": "{text.subtitle.size}",
|
|
138
|
+
"lineHeight": "{text.subtitle.lineHeight}",
|
|
139
|
+
"fontFamily": "{fontStack.sansSerif}"
|
|
140
|
+
},
|
|
141
|
+
"$type": "typography",
|
|
142
|
+
"$description": "Page sections/sub headings, or less important object names in page titles (automated action titles, for example). Same line-height as title (medium)."
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"body": {
|
|
146
|
+
"size": {
|
|
147
|
+
"large": {
|
|
148
|
+
"$value": "16px",
|
|
149
|
+
"$type": "dimension"
|
|
150
|
+
},
|
|
151
|
+
"medium": {
|
|
152
|
+
"$value": "14px",
|
|
153
|
+
"$type": "dimension"
|
|
154
|
+
},
|
|
155
|
+
"small": {
|
|
156
|
+
"$value": "12px",
|
|
157
|
+
"$type": "dimension"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"lineHeight": {
|
|
161
|
+
"large": {
|
|
162
|
+
"$value": 1.5,
|
|
163
|
+
"$type": "number"
|
|
164
|
+
},
|
|
165
|
+
"medium": {
|
|
166
|
+
"$value": 1.4285,
|
|
167
|
+
"$type": "number"
|
|
168
|
+
},
|
|
169
|
+
"small": {
|
|
170
|
+
"$value": 1.6666,
|
|
171
|
+
"$type": "number"
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"weight": {
|
|
175
|
+
"$value": "{base.text.weight.normal}",
|
|
176
|
+
"$type": "fontWeight"
|
|
177
|
+
},
|
|
178
|
+
"shorthand": {
|
|
179
|
+
"large": {
|
|
180
|
+
"$value": {
|
|
181
|
+
"fontWeight": "{text.body.weight}",
|
|
182
|
+
"fontSize": "{text.body.size.large}",
|
|
183
|
+
"lineHeight": "{text.body.lineHeight.large}",
|
|
184
|
+
"fontFamily": "{fontStack.sansSerif}"
|
|
185
|
+
},
|
|
186
|
+
"$type": "typography",
|
|
187
|
+
"$description": "User-generated content, markdown rendering."
|
|
188
|
+
},
|
|
189
|
+
"medium": {
|
|
190
|
+
"$value": {
|
|
191
|
+
"fontWeight": "{text.body.weight}",
|
|
192
|
+
"fontSize": "{text.body.size.medium}",
|
|
193
|
+
"lineHeight": "{text.body.lineHeight.medium}",
|
|
194
|
+
"fontFamily": "{fontStack.sansSerif}"
|
|
195
|
+
},
|
|
196
|
+
"$type": "typography",
|
|
197
|
+
"$description": "Default UI font. Most commonly used for body text."
|
|
198
|
+
},
|
|
199
|
+
"small": {
|
|
200
|
+
"$value": {
|
|
201
|
+
"fontWeight": "{text.body.weight}",
|
|
202
|
+
"fontSize": "{text.body.size.small}",
|
|
203
|
+
"lineHeight": "{text.body.lineHeight.small}",
|
|
204
|
+
"fontFamily": "{fontStack.sansSerif}"
|
|
205
|
+
},
|
|
206
|
+
"$type": "typography",
|
|
207
|
+
"$description": "Small body text for discrete UI applications, such as helper, footnote text. Should be used sparingly across pages. Line-height matches Body (medium) at 20px."
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
"caption": {
|
|
212
|
+
"size": {
|
|
213
|
+
"$value": "12px",
|
|
214
|
+
"$type": "dimension"
|
|
215
|
+
},
|
|
216
|
+
"lineHeight": {
|
|
217
|
+
"$value": 1.3333,
|
|
218
|
+
"$type": "number"
|
|
219
|
+
},
|
|
220
|
+
"weight": {
|
|
221
|
+
"$value": "{base.text.weight.normal}",
|
|
222
|
+
"$type": "fontWeight"
|
|
223
|
+
},
|
|
224
|
+
"shorthand": {
|
|
225
|
+
"$value": {
|
|
226
|
+
"fontWeight": "{text.caption.weight}",
|
|
227
|
+
"fontSize": "{text.caption.size}",
|
|
228
|
+
"lineHeight": "{text.caption.lineHeight}",
|
|
229
|
+
"fontFamily": "{fontStack.sansSerif}"
|
|
230
|
+
},
|
|
231
|
+
"$type": "typography",
|
|
232
|
+
"$description": "Compact small font with a smaller line height of 16px. Use it for single-line scenarios, as the small sizing doesn’t pass accessibility requirements."
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"codeBlock": {
|
|
236
|
+
"size": {
|
|
237
|
+
"$value": "13px",
|
|
238
|
+
"$type": "dimension"
|
|
239
|
+
},
|
|
240
|
+
"lineHeight": {
|
|
241
|
+
"$value": 1.5385,
|
|
242
|
+
"$type": "number"
|
|
243
|
+
},
|
|
244
|
+
"weight": {
|
|
245
|
+
"$value": "{base.text.weight.normal}",
|
|
246
|
+
"$type": "fontWeight"
|
|
247
|
+
},
|
|
248
|
+
"shorthand": {
|
|
249
|
+
"$value": {
|
|
250
|
+
"fontWeight": "{text.codeBlock.weight}",
|
|
251
|
+
"fontSize": "{text.codeBlock.size}",
|
|
252
|
+
"lineHeight": "{text.codeBlock.lineHeight}",
|
|
253
|
+
"fontFamily": "{fontStack.monospace}"
|
|
254
|
+
},
|
|
255
|
+
"$type": "typography",
|
|
256
|
+
"$description": "Default style for rendering code blocks."
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
"codeInline": {
|
|
260
|
+
"size": {
|
|
261
|
+
"$value": "0.9285em",
|
|
262
|
+
"$type": "dimension"
|
|
263
|
+
},
|
|
264
|
+
"weight": {
|
|
265
|
+
"$value": "{base.text.weight.normal}",
|
|
266
|
+
"$type": "fontWeight"
|
|
267
|
+
},
|
|
268
|
+
"shorthand": {
|
|
269
|
+
"$value": {
|
|
270
|
+
"fontWeight": "{text.codeInline.weight}",
|
|
271
|
+
"fontSize": "{text.codeInline.size}",
|
|
272
|
+
"fontFamily": "{fontStack.monospace}"
|
|
273
|
+
},
|
|
274
|
+
"$type": "typography",
|
|
275
|
+
"$description": "Inline code blocks using em units to inherit size from its parent."
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import {isBorder} from '../filters/isBorder'
|
|
2
|
+
import type StyleDictionary from 'style-dictionary'
|
|
3
|
+
import type {BorderTokenValue} from '../types/BorderTokenValue'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* checks if all required properties exist on shadow token
|
|
7
|
+
* @param object - BorderTokenValue
|
|
8
|
+
* @returns void or throws error
|
|
9
|
+
*/
|
|
10
|
+
const checkForBorderTokenProperties = (border: BorderTokenValue) => {
|
|
11
|
+
const requiredProperties = ['color', 'width', 'style']
|
|
12
|
+
for (const prop of requiredProperties) {
|
|
13
|
+
if (prop in border === false) {
|
|
14
|
+
throw new Error(`Missing propery: ${prop} on border token ${JSON.stringify(border)}`)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @description converts w3c border tokens in css border string
|
|
20
|
+
* @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
|
|
21
|
+
* @matcher matches all tokens of $type `border`
|
|
22
|
+
* @transformer returns css border `string`
|
|
23
|
+
*/
|
|
24
|
+
export const borderToCss: StyleDictionary.Transform = {
|
|
25
|
+
type: `value`,
|
|
26
|
+
transitive: true,
|
|
27
|
+
matcher: isBorder,
|
|
28
|
+
transformer: ({value}: {value: BorderTokenValue}) => {
|
|
29
|
+
//
|
|
30
|
+
checkForBorderTokenProperties(value)
|
|
31
|
+
// if value === string it was probably already transformed
|
|
32
|
+
if (typeof value === 'string') {
|
|
33
|
+
return value
|
|
34
|
+
}
|
|
35
|
+
/* color | style | width */
|
|
36
|
+
return `${value.color} ${value.style} ${value.width}`
|
|
37
|
+
},
|
|
38
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {toHex} from 'color2k'
|
|
2
|
+
import {isColor} from '../filters'
|
|
3
|
+
import type StyleDictionary from 'style-dictionary'
|
|
4
|
+
import {getTokenValue} from './utilities/getTokenValue'
|
|
5
|
+
/**
|
|
6
|
+
* @description converts color tokens value to `hex6` or `hex8`
|
|
7
|
+
* @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
|
|
8
|
+
* @matcher matches all tokens of $type `color`
|
|
9
|
+
* @transformer returns a `hex` string
|
|
10
|
+
*/
|
|
11
|
+
export const colorToHex: StyleDictionary.Transform = {
|
|
12
|
+
type: `value`,
|
|
13
|
+
transitive: true,
|
|
14
|
+
matcher: isColor,
|
|
15
|
+
transformer: (token: StyleDictionary.TransformedToken) => toHex(getTokenValue(token)),
|
|
16
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {toHex} from 'color2k'
|
|
2
|
+
import {alpha} from './utilities/alpha'
|
|
3
|
+
import {isColorWithAlpha} from '../filters'
|
|
4
|
+
import type StyleDictionary from 'style-dictionary'
|
|
5
|
+
import {getTokenValue} from './utilities/getTokenValue'
|
|
6
|
+
/**
|
|
7
|
+
* @description replaces tokens value with `hex8` color using the tokens `alpha` property to specify the value used for alpha
|
|
8
|
+
* @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
|
|
9
|
+
* @matcher matches all tokens of $type `color` with an `alpha` property
|
|
10
|
+
* @transformer returns `hex8` string
|
|
11
|
+
*/
|
|
12
|
+
export const colorToHexAlpha: StyleDictionary.Transform = {
|
|
13
|
+
type: `value`,
|
|
14
|
+
transitive: true,
|
|
15
|
+
matcher: isColorWithAlpha,
|
|
16
|
+
transformer: (token: StyleDictionary.TransformedToken) => {
|
|
17
|
+
// don't change if alpha is null
|
|
18
|
+
if (token.alpha === null) {
|
|
19
|
+
return toHex(getTokenValue(token))
|
|
20
|
+
}
|
|
21
|
+
return toHex(alpha(getTokenValue(token), token.alpha, token))
|
|
22
|
+
},
|
|
23
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {toHex} from 'color2k'
|
|
2
|
+
import {isColorWithMix} from '../filters'
|
|
3
|
+
import type StyleDictionary from 'style-dictionary'
|
|
4
|
+
import {getTokenValue} from './utilities/getTokenValue'
|
|
5
|
+
import mix from './utilities/mix'
|
|
6
|
+
/**
|
|
7
|
+
* @description replaces tokens value with `hex8` color using the tokens `alpha` property to specify the value used for alpha
|
|
8
|
+
* @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
|
|
9
|
+
* @matcher matches all tokens of $type `color` with an `alpha` property
|
|
10
|
+
* @transformer returns `hex8` string
|
|
11
|
+
*/
|
|
12
|
+
export const colorToHexMix: StyleDictionary.Transform = {
|
|
13
|
+
type: `value`,
|
|
14
|
+
transitive: true,
|
|
15
|
+
matcher: isColorWithMix,
|
|
16
|
+
transformer: (token: StyleDictionary.TransformedToken) => {
|
|
17
|
+
return toHex(mix(getTokenValue(token), token.mix?.color || getTokenValue(token), token.mix?.weight || 0))
|
|
18
|
+
},
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {isColorWithAlpha} from '../filters'
|
|
2
|
+
import {alpha} from './utilities/alpha'
|
|
3
|
+
import type StyleDictionary from 'style-dictionary'
|
|
4
|
+
import {getTokenValue} from './utilities/getTokenValue'
|
|
5
|
+
/**
|
|
6
|
+
* @description replaces tokens value with `rgba` color using the tokens `alpha` property to specify the value used for alpha
|
|
7
|
+
* @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
|
|
8
|
+
* @matcher matches all tokens of $type `color` with an `alpha` property
|
|
9
|
+
* @transformer returns `rgba` string
|
|
10
|
+
*/
|
|
11
|
+
export const colorToRgbAlpha: StyleDictionary.Transform = {
|
|
12
|
+
type: `value`,
|
|
13
|
+
transitive: true,
|
|
14
|
+
matcher: isColorWithAlpha,
|
|
15
|
+
transformer: (token: StyleDictionary.TransformedToken) => {
|
|
16
|
+
if (token.alpha === null) return getTokenValue(token)
|
|
17
|
+
return alpha(getTokenValue(token), token.alpha, token)
|
|
18
|
+
},
|
|
19
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {toHex} from 'color2k'
|
|
2
|
+
import {isColor} from '../filters'
|
|
3
|
+
import type StyleDictionary from 'style-dictionary'
|
|
4
|
+
import {getTokenValue} from './utilities/getTokenValue'
|
|
5
|
+
import {rgbaFloatToHex} from './utilities/rgbaFloatToHex'
|
|
6
|
+
import mix from './utilities/mix'
|
|
7
|
+
import {hexToRgbaFloat} from './utilities/hexToRgbaFloat'
|
|
8
|
+
import {isRgbaFloat} from './utilities/isRgbaFloat'
|
|
9
|
+
|
|
10
|
+
const toRgbaFloat = (token: StyleDictionary.TransformedToken, alpha?: number) => {
|
|
11
|
+
let tokenValue = getTokenValue(token)
|
|
12
|
+
let tokenMixColor = token.mix?.color
|
|
13
|
+
// get hex value from color string
|
|
14
|
+
if (isRgbaFloat(tokenValue)) {
|
|
15
|
+
tokenValue = rgbaFloatToHex(tokenValue, false)
|
|
16
|
+
}
|
|
17
|
+
if (tokenMixColor && isRgbaFloat(tokenMixColor)) {
|
|
18
|
+
tokenMixColor = rgbaFloatToHex(tokenMixColor, false)
|
|
19
|
+
}
|
|
20
|
+
let hex = toHex(tokenValue)
|
|
21
|
+
// mix color with mix color and weight
|
|
22
|
+
if (token.mix && token.mix.color && token.mix.weight) {
|
|
23
|
+
hex = toHex(mix(tokenValue, tokenMixColor, token.mix.weight))
|
|
24
|
+
}
|
|
25
|
+
// return color as RgbaFloat
|
|
26
|
+
return hexToRgbaFloat(hex, alpha)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @description converts color tokens rgba float with values from 0 - 1
|
|
31
|
+
* @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
|
|
32
|
+
* @matcher matches all tokens of $type `color`
|
|
33
|
+
* @transformer returns a `rgb` float object
|
|
34
|
+
*/
|
|
35
|
+
export const colorToRgbaFloat: StyleDictionary.Transform = {
|
|
36
|
+
type: `value`,
|
|
37
|
+
transitive: true,
|
|
38
|
+
matcher: isColor,
|
|
39
|
+
transformer: (token: StyleDictionary.TransformedToken) => {
|
|
40
|
+
// skip if value is already rgb float
|
|
41
|
+
if (isRgbaFloat(token.value) && !('mix' in token) && !('alpha' in token)) return token.value
|
|
42
|
+
// convert hex or rgb values to rgba float
|
|
43
|
+
return toRgbaFloat(token, token.alpha)
|
|
44
|
+
},
|
|
45
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import {isDimension} from '../filters'
|
|
2
|
+
import type StyleDictionary from 'style-dictionary'
|
|
3
|
+
import type {Platform} from 'style-dictionary'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @description base font size from options or 16
|
|
7
|
+
* @param options
|
|
8
|
+
* @returns number
|
|
9
|
+
*/
|
|
10
|
+
const getBasePxFontSize = (options?: Platform): number => (options && options.basePxFontSize) || 16
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @description checks if token value has a specific unit
|
|
14
|
+
* @param value token value
|
|
15
|
+
* @param unit unit string like px or value
|
|
16
|
+
* @returns boolean
|
|
17
|
+
*/
|
|
18
|
+
const hasUnit = (value: string | number, unit: string): boolean => {
|
|
19
|
+
if (typeof value === 'number') {
|
|
20
|
+
return false
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return value.indexOf(unit) > -1
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @description converts dimension tokens value to pixel value without unit, ignores `em` as they are relative to the font size of the parent element
|
|
28
|
+
* @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
|
|
29
|
+
* @matcher matches all tokens of $type `dimension`
|
|
30
|
+
* @transformer returns a float number
|
|
31
|
+
*/
|
|
32
|
+
export const dimensionToPixelUnitless: StyleDictionary.Transform = {
|
|
33
|
+
type: `value`,
|
|
34
|
+
transitive: true,
|
|
35
|
+
matcher: isDimension,
|
|
36
|
+
transformer: (token: StyleDictionary.TransformedToken, options?: Platform) => {
|
|
37
|
+
const baseFont = getBasePxFontSize(options)
|
|
38
|
+
const floatVal = parseFloat(token.value)
|
|
39
|
+
|
|
40
|
+
if (isNaN(floatVal)) {
|
|
41
|
+
throw new Error(
|
|
42
|
+
`Invalid dimension token: '${token.name}: ${token.value}' is not valid and cannot be transform to 'float' \n`,
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (floatVal === 0) {
|
|
47
|
+
return 0
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (hasUnit(token.value, 'rem')) {
|
|
51
|
+
return floatVal * baseFont
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (hasUnit(token.value, 'px')) {
|
|
55
|
+
return floatVal
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return token.value
|
|
59
|
+
},
|
|
60
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import {isDimension} from '../filters'
|
|
2
|
+
import type StyleDictionary from 'style-dictionary'
|
|
3
|
+
import type {Platform} from 'style-dictionary'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @description base font size from options or 16
|
|
7
|
+
* @param options
|
|
8
|
+
* @returns number
|
|
9
|
+
*/
|
|
10
|
+
const getBasePxFontSize = (options?: Platform): number => (options && options.basePxFontSize) || 16
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @description checks if token value has a specific unit
|
|
14
|
+
* @param value token value
|
|
15
|
+
* @param unit unit string like px or value
|
|
16
|
+
* @returns boolean
|
|
17
|
+
*/
|
|
18
|
+
const hasUnit = (value: string | number, unit: string): boolean => {
|
|
19
|
+
if (typeof value === 'number') {
|
|
20
|
+
return false
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return value.indexOf(unit) > -1
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @description converts dimension tokens value to `rem`, ignores `em` as they are relative to the font size of the parent element
|
|
28
|
+
* @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
|
|
29
|
+
* @matcher matches all tokens of $type `dimension`
|
|
30
|
+
* @transformer returns a `rem` string
|
|
31
|
+
*/
|
|
32
|
+
export const dimensionToRem: StyleDictionary.Transform = {
|
|
33
|
+
type: `value`,
|
|
34
|
+
transitive: true,
|
|
35
|
+
matcher: isDimension,
|
|
36
|
+
transformer: (token: StyleDictionary.TransformedToken, options?: Platform) => {
|
|
37
|
+
const baseFont = getBasePxFontSize(options)
|
|
38
|
+
const floatVal = parseFloat(token.value)
|
|
39
|
+
|
|
40
|
+
if (isNaN(floatVal)) {
|
|
41
|
+
throw new Error(
|
|
42
|
+
`Invalid dimension token: '${token.name}: ${token.value}' is not valid and cannot be transform to 'rem' \n`,
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (floatVal === 0) {
|
|
47
|
+
return '0'
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (hasUnit(token.value, 'rem') || hasUnit(token.value, 'em')) {
|
|
51
|
+
return token.value
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return `${floatVal / baseFont}rem`
|
|
55
|
+
},
|
|
56
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import {isDimension} from '../filters'
|
|
2
|
+
import type StyleDictionary from 'style-dictionary'
|
|
3
|
+
import type {Platform} from 'style-dictionary'
|
|
4
|
+
|
|
5
|
+
type SizePx = '0' | `${number}px`
|
|
6
|
+
type SizeRem = '0' | `${number}rem`
|
|
7
|
+
type SizeEm = '0' | `${number}em`
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @description base font size from options or 16
|
|
11
|
+
* @param options
|
|
12
|
+
* @returns number
|
|
13
|
+
*/
|
|
14
|
+
const getBasePxFontSize = (options?: Platform): number => (options && options.basePxFontSize) || 16
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @description checks if token value has a specific unit
|
|
18
|
+
* @param value token value
|
|
19
|
+
* @param unit unit string like px or value
|
|
20
|
+
* @returns boolean
|
|
21
|
+
*/
|
|
22
|
+
const hasUnit = (value: string | number, unit: string): boolean => {
|
|
23
|
+
if (typeof value === 'number') {
|
|
24
|
+
return false
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return value.indexOf(unit) > -1
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @description converts dimension tokens value to `rem`, ignores `em` as they are relative to the font size of the parent element
|
|
32
|
+
* @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
|
|
33
|
+
* @matcher matches all tokens of $type `dimension`
|
|
34
|
+
* @transformer returns an array with the `rem` and `pixel` string
|
|
35
|
+
*/
|
|
36
|
+
export const dimensionToRemPxArray: StyleDictionary.Transform = {
|
|
37
|
+
type: `value`,
|
|
38
|
+
transitive: true,
|
|
39
|
+
matcher: isDimension,
|
|
40
|
+
transformer: (token: StyleDictionary.TransformedToken, options?: Platform): [SizeRem | SizeEm, SizePx] => {
|
|
41
|
+
const baseFont = getBasePxFontSize(options)
|
|
42
|
+
const floatVal = parseFloat(token.value)
|
|
43
|
+
|
|
44
|
+
if (isNaN(floatVal)) {
|
|
45
|
+
throw new Error(
|
|
46
|
+
`Invalid dimension token: '${token.name}: ${token.value}' is not valid and cannot be transform to 'rem' \n`,
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (floatVal === 0) {
|
|
51
|
+
return ['0', '0']
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (hasUnit(token.value, 'rem') || hasUnit(token.value, 'em')) {
|
|
55
|
+
return [token.value, `${floatVal * baseFont}px`]
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return [`${floatVal / baseFont}rem`, `${floatVal}px`]
|
|
59
|
+
},
|
|
60
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type StyleDictionary from 'style-dictionary'
|
|
2
|
+
import {isDuration} from '../filters/isDuration'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @description converts duration tokens string value to number with `ms` unit
|
|
6
|
+
* @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
|
|
7
|
+
* @matcher matches all tokens of $type `duration`
|
|
8
|
+
* @transformer returns a css duration
|
|
9
|
+
*/
|
|
10
|
+
export const durationToCss: StyleDictionary.Transform = {
|
|
11
|
+
type: `value`,
|
|
12
|
+
transitive: true,
|
|
13
|
+
matcher: isDuration,
|
|
14
|
+
transformer: (token: StyleDictionary.TransformedToken, _options?: StyleDictionary.Platform) => {
|
|
15
|
+
// throw an error if token value is not a string or does not end with `ms`
|
|
16
|
+
if (typeof token.value !== `string` || !token.value.endsWith(`ms`)) {
|
|
17
|
+
throw new Error(`duration token value must be a string with an "ms" unit`)
|
|
18
|
+
}
|
|
19
|
+
// get value
|
|
20
|
+
let value = parseInt(token.value.replace('ms', ''))
|
|
21
|
+
let unit = `ms`
|
|
22
|
+
if (value >= 1000) {
|
|
23
|
+
value = value / 1000
|
|
24
|
+
unit = `s`
|
|
25
|
+
}
|
|
26
|
+
// return value
|
|
27
|
+
return `${value}${unit}`
|
|
28
|
+
},
|
|
29
|
+
}
|