@@ -12,11 +12,18 @@ StyleDictionary.registerTransformGroup({
12
12
transforms : [ ...transforms , "attribute/cti" , "name/cti/kebab" ] ,
13
13
} ) ;
14
14
15
- const tokenFilter = ( cat ) => ( token ) => token . attributes . category === cat ;
15
+ // filters only tokens originating from core.json
16
+ const coreFilter = ( token ) => token . filePath . endsWith ( "core.json" ) ;
16
17
17
- const generateFilesArr = ( tokensCategories , theme ) => {
18
+ // filters tokens by attributes.category (first key in the token hierachy, see attributes/cti transform for more info)
19
+ // must match per component name, in this repository we currently only have "button"
20
+ const componentFilter = ( cat ) => ( token ) => token . attributes . category === cat ;
21
+
22
+ // for each component (currently only button), filter those specific component tokens and output them
23
+ // to the component folder where the component source code will live
24
+ const generateComponentFiles = ( tokensCategories , theme ) => {
18
25
return tokensCategories . map ( ( cat ) => ( {
19
- filter : tokenFilter ( cat ) ,
26
+ filter : componentFilter ( cat ) ,
20
27
destination : `${ cat } /${ cat } -${ theme . toLowerCase ( ) } .css` ,
21
28
format : "css/variables" ,
22
29
options : {
@@ -40,7 +47,16 @@ async function run() {
40
47
platforms : {
41
48
css : {
42
49
transformGroup : "custom/tokens-studio" ,
43
- files : generateFilesArr ( [ "button" ] , theme . name ) ,
50
+ files : [
51
+ // core/semantic tokens, e.g. for application developer
52
+ {
53
+ destination : "style.css" ,
54
+ format : "css/variables" ,
55
+ filter : coreFilter ,
56
+ } ,
57
+ // component tokens, e.g. for design system developer
58
+ ...generateComponentFiles ( [ "button" ] , theme . name ) ,
59
+ ] ,
44
60
} ,
45
61
} ,
46
62
} ) ) ;
0 commit comments