- From: Drew Powers via GitHub <sysbot+gh@w3.org>
- Date: Thu, 13 Jun 2024 20:56:25 +0000
- To: public-design-tokens-log@w3.org
Also, a few notes amended to [@kaelig’s updated proposal](https://github.com/design-tokens/community-group/issues/137#issuecomment-2116168184): ## Channel definition It’s been raised “what are the channel values and how are they defined?” For example, is `"colorSpace": "srgb", "channels": [64, 0, 128]` valid? For clarity, we’ll use the same definitions as [CSS Color Module 4](https://www.w3.org/TR/css-color-4/)’s `color()` function, which [defines colorspaces and values in §10](https://www.w3.org/TR/css-color-4/#predefined), such as `srgb` channels being `red`, `blue`, `green` in that order, and accepting only `[0, 1]` values. The only clarification we’d make is that **percentages wouldn’t be supported**, since there is no percentage type (yet). Just normalize to `1` (`0%` = `0`, `100%` = `1`). ## Aliasing Also a question of “what is aliasable” is inevitable, and we’d like to propose **Any sub-value is aliasable if it resolves to a valid $type.**. For example: #### ✅ Valid: Entire `$value` This is supported today, of course ```json { "action": { "$value": "{color.blue.500}" } } ``` #### ✅ Valid: Aliasing part of a value is valid only if it aliases a valid existing $type This is consistent with current docs for $type: > If the token’s value is a reference, then its type is the resolved type of the token being referenced. In other words, this seems allowed by current usage of spec. Further, referencing _within_ `"channels"` should be allowed because even though there is no array of number types, individual values are all $type: number as well. Just as though [gradient tokens’ stops](https://design-tokens.github.io/community-group/format/#gradient) aren’t a $type in and of themselves, they are allowed to alias color and number tokens. ```json { "action": { "$type": "color", "$value": { "colorSpace": "oklch", "channels": ["{lightness.70}", 0.153, 246.18], "alpha": "{alpha.100}", "hex": "#3ca5f7" } } } ``` #### ❌ Invalid: Aliasing part of a value that is not a valid $type Since there is no valid types that `"colorSpace"` or `"channels"` could resolve to, they’re invalid. Further, since string types are not supported, and colors are now objects, technically `"hex"` could not resolve to a valid $type, either. ```json { "action": { "$type": "color", "$value": { "colorSpace": "{colorSpace.oklch}", "channels": "{channels.color.blue.500}", "alpha": 1, "hex": "{color.blue.500}" } } } ``` #### ❌ Invalid: Partially aliasing just a part of another $type: color’s value This is another proposal entirely: https://github.com/design-tokens/community-group/issues/148 ```json { "action": { "$type": "color", "$value": { "colorSpace": "oklch", "channels": [0.7, 0.153, 246.18], "alpha": 1, "hex": "{color.blue.500.$value.hex}" } } } ``` -- GitHub Notification of comment by drwpow Please view or discuss this issue at https://github.com/design-tokens/community-group/issues/137#issuecomment-2166780888 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Thursday, 13 June 2024 20:56:26 UTC