- From: Dan Levy via GitHub <sysbot+gh@w3.org>
 - Date: Thu, 17 Aug 2023 20:07:00 +0000
 - To: public-design-tokens-log@w3.org
 
danlevy1 has just created a new issue for https://github.com/design-tokens/community-group:
== [Discussion]: How to transform composite tokens ==
## Description
The latest editor's draft (as of August 2023) [states](https://second-editors-draft.tr.designtokens.org/format/#composite-design-token) that composite design token is "a design token whose value is made up of multiple, named child values."
Given the following [example](https://design-tokens.github.io/community-group/format/#example-composite-token-example) in the editor's draft, is there currently a recommendation on how to transform the token?
```json
{
  "shadow-token": {
    "$type": "shadow",
    "$value": {
      "color": "#00000088",
      "offsetX": "0.5rem",
      "offsetY": "0.5rem",
      "blur": "1.5rem",
      "spread": "0rem"
    }
  }
}
```
It seems like there are two options here:
1. Each `value` property name is appended to the top-level token name to create a new token, and all of those tokens must be applied
2. The top-level token name is still a singular value, and the `value` refers to all sub-values that must be applied
If we take a look at those two possibilities in action, here's what they might look like if we transformed them into JavaScript variables:
```javascript
// Option 1
const SHADOW_TOKEN_COLOR = "#00000088";
const SHADOW_TOKEN_OFFSET_X = "0.5rem";
const SHADOW_TOKEN_OFFSET_Y = "0.5rem";
const SHADOW_TOKEN_BLUR = "1.5rem";
const SHADOW_TOKEN_SPREAD = "0rem";
```
```javascript
// Option 2
const SHADOW_TOKEN = {
  color: "#00000088",
  offsetX: "0.5rem",
  offsetY: "0.5rem",
  blur: "1.5rem",
  spread: "0rem"
}
```
## Tradeoffs
**Option 1**
Pros:
1. Tokens can be accessed individually (e.g. apply `SHADOW_TOKEN_COLOR`, but don't apply `SHADOW_TOKEN_OFFSET_X`).
2. Don't need to worry about multiple formats of tokens (i.e. all values will be strings, and there are no object values).
Cons:
1. It isn't immediately clear which transformed tokens need to be applied together other than the first part of the token name (e.g. `SHADOW_TOKEN`). This would require token users to be extra careful in order to ensure that all generated tokens coming from the one composite token are applied.
**Option 2**
Pros:
1. Only one transformed token is generated.
2. It's very clear which values need to be applied together.
Cons:
1. Token users would need to be aware that tokens may come in multiple formats (e.g. strings or objects).
Please view or discuss this issue at https://github.com/design-tokens/community-group/issues/226 using your GitHub account
-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Thursday, 17 August 2023 20:07:03 UTC