- From: Drew Powers via GitHub <sysbot+gh@w3.org>
- Date: Mon, 25 Mar 2024 04:30:38 +0000
- To: public-design-tokens-log@w3.org
Another usecase this could cover for is giving the spec an equivalent of OpenAPI/JSONSchema’s [allOf property](https://json-schema.org/understanding-json-schema/reference/combining) for tokens: ```json { "typography": { "$type": "typography", "base": { "$value": { "fontFamily": ["Inter"], "fontWeight": "400", "fontStyle": "normal", "fontSize": "16px", "letterSpacing": "0.0625em", "lineHeight": "1.4", } }, "body": { "$extends": "{typography.base}", "$value": { "fontSize": "14px", } }, "heading1": { "$extends": "{typography.base}", "$value": { "fontSize": "18px", } } } } ``` This could prevent a ton of errors if you wanted to automatically inherit properties from a “base token” and only provide minimal overrides where needed. Even if the larger questions are unanswered about how groups do/don’t get merged (I’m personally struggling to see how `$extend` would work on groups with tokens of different `$types` without throwing validation errors), I think having `$extends` on the token level could yield many benefits without adding complexity to the spec. ### Alternate proposal: Many people in this thread have identified the overlap between `$extends` as-proposed and `$alias`, and how the two could possibly be combined. We could simply just steal JSONSchema’s solution outright, and combine both `$extends` and `$alias` into an array structure: ```json { "typography": { "styleC": { "$allOf": ["{typography.styleA}", "{typography.styleB}"], "$value": { "fontSize": "18px" } } } } ``` Here, the idea would be that multiple composite tokens could be combined and merged in order, and optionally overridden. `$value` would be optional if `$allOf` were provided. Also not stuck on the name `$allOf` at all; just trying to outline slightly-different approach without getting hung up on naming. As an aside, JSONSchema also has `oneOf` and `anyOf` but I don’t think those would be good fits for the DTCG spec, personally -- GitHub Notification of comment by drwpow Please view or discuss this issue at https://github.com/design-tokens/community-group/issues/116#issuecomment-2017189833 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Monday, 25 March 2024 04:30:39 UTC