- From: Artur Sopelnik via GitHub <sysbot+gh@w3.org>
- Date: Wed, 14 May 2025 12:13:17 +0000
- To: public-design-tokens-log@w3.org
Typically, the preferred value in a `clamp` function corresponds to a number, a dimension, or a percentage. By default, it is treated as a number, which is automatically converted to a pixel value. The W3C specification does not address percentages and refers to additional types that will be documented in the future. Below is my current workaround for using `clamp` and general fluid dimensions: ```json5 { "letterspacing": { "static": { "$type": "dimension", "tight": { "$value": { "unit": "px", "value": -0.5 } }, "normal": { "$value": { "unit": "px", "value": 0 } }, "wide": { "$value": { "unit": "px", "value": 0.5 } }, "wider": { "$value": { "unit": "px", "value": 1 } } }, "fluid": { "wide": { "min": { "$type": "dimension", "$value": "{base.spacing.static.wide}" }, "preferred": { "$type": "number", "$value": 0.1, "unit": "vw" }, // Use a number with a unit "max": { "$type": "dimension", "$value": "{base.spacing.static.wider}" } } } } } ``` This setup does not work out of the box with Style Dictionary, as the current specification does not support it. However, you can implement it custom transformer: ```typescript StyleDictionary.registerTransform({ name: "size/compose/numberWithUnit", type: transformTypes.value, transitive: false, filter: (token) => token.$type === "number" && typeof token.unit === "string", transform: (token) => { const { $value, unit, name } = token; const validUnits = new Set(["px", "rem", "em", "vw", "vh", "vmin", "vmax", "pt", "dp", "%", "cm", "mm", "in", "pc"]); if (validUnits.has(unit)) { return `${$value}${unit}`; } console.error(`Invalid Number Unit: '${name}: ${$value}${unit}' has an invalid unit. Please use one of the following: ${Array.from(validUnits).join(', ')}.`); return $value; } }); StyleDictionary.registerTransformGroup({ name: "custom/css-extended", transforms: [ ...StyleDictionary.hooks.transformGroups.css, "size/compose/numberWithUnit", ] }) ``` Do you need additional custom transformers to support the current W3C specification in Style Dictionary? Check this out: https://github.com/amzn/style-dictionary/issues/848#issuecomment-2855874849 -- GitHub Notification of comment by artursopelnik Please view or discuss this issue at https://github.com/design-tokens/community-group/issues/188#issuecomment-2879990672 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Wednesday, 14 May 2025 12:13:18 UTC