Skip to content

Commit

Permalink
feat: remove reliance on CTI, add token type (#1123)
Browse files Browse the repository at this point in the history
  • Loading branch information
jorenbroekema committed Jun 28, 2024
1 parent 0e8d7ee commit 844892c
Show file tree
Hide file tree
Showing 88 changed files with 1,214 additions and 1,519 deletions.
44 changes: 44 additions & 0 deletions .changeset/wise-phones-eat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
'style-dictionary': major
---

Remove reliance on CTI token structure across transforms, actions and formats.

Breaking changes:

- Token type will now be determined by "type" (or "$type") property on the token, rather than by checking its CTI attributes. This change has been reflected in all of the format templates as well as transform "matcher" functions that were previously checking `attributes.category` as the token type indicator.
- Types are mostly aligned with [DTCG spec types](https://design-tokens.github.io/community-group/format/#types), although a few additional ones have been added for compatibility reasons:
- asset -> string type tokens where the value is a filepath to an asset
- icon -> content type string tokens where the content resembles an icon, e.g. for icon fonts like [Microsoft codicons](https://github.com/microsoft/vscode-codicons)
- html -> HTML entity strings for unicode characters
- content -> regular string content e.g. text content which sometimes needs to be wrapped in quotes
- Built-in name transforms are now reliant only on the token path, and are renamed from `name/cti/casing` to just `name/casing`. `name/ti/camel` and `name/ti/constant` have been removed. For example `name/cti/kebab` transform is now `name/kebab`.
- Transform `content/icon` has been renamed to `html/icon` since it targets HTML entity strings, not just any icon content.
- `font/objC/literal`, `font/swift/literal` and `font/flutter/literal` have been removed in favor of `font/objC/literal`, `font/swift/literal` and `font/flutter/literal`, as they do he exact same transformations.
- `typescript/module-declarations` format to be updated with current DesignToken type interface.


Before:

```json
{
"color": {
"red": {
"value": "#FF0000"
}
}
}
```

After:

```json
{
"color": { // <-- this no longer needs to be "color" in order for the tokens inside this group to be considered of type "color"
"red": {
"value": "#FF0000",
"type": "color"
}
}
}
```
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ StyleDictionary.registerTransform({
name: 'time/seconds',
type: 'value',
matcher: function (token) {
return token.attributes.category === 'time';
return token.type === 'time';
},
transformer: function (token) {
return (parseInt(token.original.value) / 1000).toString() + 's';
Expand Down
Loading

0 comments on commit 844892c

Please sign in to comment.