@@ -12,11 +12,18 @@ StyleDictionary.registerTransformGroup({
1212 transforms : [ ...transforms , "attribute/cti" , "name/cti/kebab" ] ,
1313} ) ;
1414
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" ) ;
1617
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 ) => {
1825 return tokensCategories . map ( ( cat ) => ( {
19- filter : tokenFilter ( cat ) ,
26+ filter : componentFilter ( cat ) ,
2027 destination : `${ cat } /${ cat } -${ theme . toLowerCase ( ) } .css` ,
2128 format : "css/variables" ,
2229 options : {
@@ -40,7 +47,16 @@ async function run() {
4047 platforms : {
4148 css : {
4249 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+ ] ,
4460 } ,
4561 } ,
4662 } ) ) ;
0 commit comments