-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy paththemekit.config.js
103 lines (96 loc) · 2.01 KB
/
themekit.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
const { Api } = require('@yandex/themekit')
const componentsList = [
"attach",
"badge",
"button",
"buttonGroup",
"checkbox",
"divider",
// "dropdown", // У дропдауна нет никаких токенов
"header",
"icon",
"image",
"layerManager",
"link",
"listTile",
"menu",
"messageBox",
"modal",
"popup",
"progress",
"radioButton",
"radiobox",
"select",
"showcase",
"slider",
"spacer",
"spin",
"tabsMenu",
"tabsPanes",
"text",
"textarea",
"textinput",
"theme",
"tooltip",
"tumbler",
"userPic",
]
// List of components that should not be shown
const excludeComponentsList = [
"calendar",
]
Api.registerFormat({
name: 'json/extended',
formatter(dict) {
const globals = {}
const components = {};
for (const prop of dict.allProperties) {
if (excludeComponentsList.includes(prop.path[0])) {
continue
}
if (componentsList.includes(prop.path[0])) {
if (components[prop.path[0]] === undefined) {
components[prop.path[0]] = {}
}
components[prop.path[0]] = {
...components[prop.path[0]],
[prop.name]: {
value: prop.value,
path: prop.path,
description: prop.comment,
}
}
} else {
globals[prop.name] = {
value: prop.value,
path: prop.path,
description: prop.comment,
}
}
}
return JSON.stringify({
globals,
components,
}, null, 2)
},
})
module.exports = {
"entry": {
"example": "./src/themes/example.theme.json",
"example-inverse": "./src/themes/example-inverse.theme.json",
"example-brand": "./src/themes/example-brand.theme.json",
},
"output": {
"css": {
"transforms": ["name/cti/kebab", "name/mapper"],
"buildPath": "./src/themes/presets",
"actions": ["process-color"],
"files": [
{
"destination": "[entry]/root.json",
"format": "json/extended"
}
]
}
}
}