diff --git a/plugins/postcss-design-tokens/src/data-formats/base/token.ts b/plugins/postcss-design-tokens/src/data-formats/base/token.ts index 5838f8695..de80fd353 100644 --- a/plugins/postcss-design-tokens/src/data-formats/base/token.ts +++ b/plugins/postcss-design-tokens/src/data-formats/base/token.ts @@ -3,6 +3,7 @@ export interface TokenTransformOptions { rootFontSize: number; }; toUnit?: string; + asUnit?: string; } export interface Token { diff --git a/plugins/postcss-design-tokens/src/data-formats/style-dictionary/v3/value.ts b/plugins/postcss-design-tokens/src/data-formats/style-dictionary/v3/value.ts index 6a854e099..40ba30934 100644 --- a/plugins/postcss-design-tokens/src/data-formats/style-dictionary/v3/value.ts +++ b/plugins/postcss-design-tokens/src/data-formats/style-dictionary/v3/value.ts @@ -83,6 +83,11 @@ export function applyTransformsToValue(value: string|undefined|null, transformOp } } + // add unit to unit-less value + if (transformOptions.asUnit) { + return `${value}${transformOptions.asUnit}`; + } + return value; } diff --git a/plugins/postcss-design-tokens/src/values.ts b/plugins/postcss-design-tokens/src/values.ts index 66ee1facf..3199d0534 100644 --- a/plugins/postcss-design-tokens/src/values.ts +++ b/plugins/postcss-design-tokens/src/values.ts @@ -50,6 +50,16 @@ export function onCSSValue(tokens: Map, result: Result, decl: Dec transformOptions.toUnit = remainingNodes[i + 1].value; i++; } + + if ( + remainingNodes[i].type === 'word' && + remainingNodes[i].value.toLowerCase() === 'as' && + remainingNodes[i + 1] && + remainingNodes[i + 1].type === 'word' + ) { + transformOptions.asUnit = remainingNodes[i + 1].value; + i++; + } } node.value = replacement.cssValue(transformOptions);