@semcore/core 17.0.0-prerelease.31 → 17.0.0-prerelease.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -1
- package/lib/core-types/Component.d.ts +8 -1
- package/lib/core-types/Component.js.map +1 -1
- package/lib/core-types/Component.mjs.map +1 -1
- package/lib/theme/themes/auto.css +198 -198
- package/lib/theme/themes/dark.css +99 -99
- package/lib/theme/themes/dark.d.ts +59 -59
- package/lib/theme/themes/dark.js +59 -59
- package/lib/theme/themes/dark.js.map +1 -1
- package/lib/theme/themes/dark.mjs +59 -59
- package/lib/theme/themes/dark.mjs.map +1 -1
- package/lib/theme/themes/default.css +100 -100
- package/lib/theme/themes/default.d.ts +59 -59
- package/lib/theme/themes/default.js +59 -59
- package/lib/theme/themes/default.js.map +1 -1
- package/lib/theme/themes/default.mjs +59 -59
- package/lib/theme/themes/default.mjs.map +1 -1
- package/lib/theme/themes/light.css +100 -100
- package/lib/theme/themes/light.d.ts +59 -59
- package/lib/theme/themes/light.js +59 -59
- package/lib/theme/themes/light.js.map +1 -1
- package/lib/theme/themes/light.mjs +59 -59
- package/lib/theme/themes/light.mjs.map +1 -1
- package/package.json +1 -1
- package/lib/theme/dark.json +0 -2695
- package/lib/theme/light.json +0 -2730
- package/lib/theme/processor.d.ts +0 -1
- package/lib/theme/processor.js +0 -227
- package/lib/theme/processor.js.map +0 -1
- package/lib/theme/processor.mjs +0 -219
- package/lib/theme/processor.mjs.map +0 -1
- package/lib/theme/utils.d.ts +0 -58
- package/lib/theme/utils.js +0 -251
- package/lib/theme/utils.js.map +0 -1
- package/lib/theme/utils.mjs +0 -240
- package/lib/theme/utils.mjs.map +0 -1
package/lib/theme/processor.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const writeIfChanged: (path: string, content: string) => Promise<void>;
|
package/lib/theme/processor.js
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.writeIfChanged = void 0;
|
|
8
|
-
var _nodeChild_process = require("node:child_process");
|
|
9
|
-
var _promises = _interopRequireDefault(require("node:fs/promises"));
|
|
10
|
-
var _nodePath = require("node:path");
|
|
11
|
-
var _nodeUrl = require("node:url");
|
|
12
|
-
var _fastGlob = _interopRequireDefault(require("fast-glob"));
|
|
13
|
-
var _postcss = _interopRequireDefault(require("postcss"));
|
|
14
|
-
var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
|
|
15
|
-
var _utils = require("./utils");
|
|
16
|
-
const writeIfChanged = async (path, content) => {
|
|
17
|
-
try {
|
|
18
|
-
const originalContent = await _promises.default.readFile(path, 'utf-8');
|
|
19
|
-
if (originalContent.replace(/[\s\n]/g, '') === content.replace(/[\s\n]/g, '')) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
} catch {}
|
|
23
|
-
await _promises.default.writeFile(path, content);
|
|
24
|
-
};
|
|
25
|
-
exports.writeIfChanged = writeIfChanged;
|
|
26
|
-
const defaultTheme = 'light';
|
|
27
|
-
const themes = ['light', 'dark'];
|
|
28
|
-
const warning = !process.argv.includes('--no-warning');
|
|
29
|
-
const dirname = (0, _nodePath.resolve)((0, _nodeUrl.fileURLToPath)(import.meta.url), '..');
|
|
30
|
-
const autoTheme = {};
|
|
31
|
-
for (const theme of themes) {
|
|
32
|
-
const prefix = 'intergalactic';
|
|
33
|
-
const {
|
|
34
|
-
base,
|
|
35
|
-
tokens,
|
|
36
|
-
featureHighlight
|
|
37
|
-
} = JSON.parse(await _promises.default.readFile((0, _nodePath.resolve)(dirname, `./${theme}.json`), 'utf-8'));
|
|
38
|
-
const processed = (0, _utils.processTokens)(base, tokens, featureHighlight, prefix);
|
|
39
|
-
const {
|
|
40
|
-
values,
|
|
41
|
-
types,
|
|
42
|
-
rawValues,
|
|
43
|
-
descriptions,
|
|
44
|
-
basicTokens,
|
|
45
|
-
highlightsTokens
|
|
46
|
-
} = processed;
|
|
47
|
-
const {
|
|
48
|
-
processedTokens
|
|
49
|
-
} = processed;
|
|
50
|
-
await writeIfChanged(`./semcore/core/src/theme/themes/${theme}.css`, (0, _utils.tokensToCss)(processedTokens));
|
|
51
|
-
await writeIfChanged(`./semcore/core/src/theme/themes/${theme}.ts`, (0, _utils.tokensToJs)(processedTokens));
|
|
52
|
-
if (highlightsTokens.length > 0) {
|
|
53
|
-
await writeIfChanged(`./semcore/core/src/theme/themes/highlights-${theme}.css`, (0, _utils.tokensToCss)(highlightsTokens));
|
|
54
|
-
await writeIfChanged(`./semcore/core/src/theme/themes/highlights-${theme}.ts`, (0, _utils.tokensToJs)(highlightsTokens));
|
|
55
|
-
}
|
|
56
|
-
autoTheme[theme] = processedTokens;
|
|
57
|
-
const usages = {};
|
|
58
|
-
if (theme === defaultTheme) {
|
|
59
|
-
await writeIfChanged('./semcore/core/src/theme/themes/default.css', (0, _utils.tokensToCss)(processedTokens));
|
|
60
|
-
await writeIfChanged('./semcore/core/src/theme/themes/default.ts', (0, _utils.tokensToJs)(processedTokens));
|
|
61
|
-
const projectCssPaths = (await (0, _fastGlob.default)('./semcore/*/src/**/*.shadow.css', {
|
|
62
|
-
ignore: ['node_modules', 'lib']
|
|
63
|
-
})).filter(path => {
|
|
64
|
-
if (path.split('/').some(pathPart => ['chart', 'email', 'table'].includes(pathPart))) {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
return true;
|
|
68
|
-
});
|
|
69
|
-
const projectCssContents = await Promise.all(projectCssPaths.map(path => _promises.default.readFile(path, 'utf-8')));
|
|
70
|
-
const usedVariables = {};
|
|
71
|
-
const colorLiterals = [];
|
|
72
|
-
const processedCss = await Promise.all(projectCssContents.map((cssContent, fileIndex) => (0, _postcss.default)([{
|
|
73
|
-
postcssPlugin: 'variables-explored',
|
|
74
|
-
prepare: result => {
|
|
75
|
-
const traverseAst = nodes => {
|
|
76
|
-
for (const node of nodes) {
|
|
77
|
-
if (node.nodes) {
|
|
78
|
-
traverseAst(node.nodes);
|
|
79
|
-
}
|
|
80
|
-
if (node.value) {
|
|
81
|
-
const valueAst = (0, _postcssValueParser.default)(node.value);
|
|
82
|
-
const traverseValueAst = (nodes, parent) => {
|
|
83
|
-
for (const valueNode of nodes) {
|
|
84
|
-
if (valueNode.nodes) traverseValueAst(valueNode.nodes, valueNode);
|
|
85
|
-
if (valueNode.type === 'function' && valueNode.value === 'color-mod') {
|
|
86
|
-
throw new Error(`Found restricted function color-mod in ${projectCssPaths[fileIndex]}`);
|
|
87
|
-
}
|
|
88
|
-
const parentIsVariable = parent?.type === 'function' && parent?.value === 'var';
|
|
89
|
-
if (!parentIsVariable) {
|
|
90
|
-
const prevNode = node.parent.nodes[node.parent.nodes.indexOf(node) - 1];
|
|
91
|
-
const skipNode = prevNode?.type === 'comment' && prevNode.text.trim() === 'disable-tokens-validator';
|
|
92
|
-
if (skipNode) continue;
|
|
93
|
-
if (valueNode.type === 'word' && (valueNode.value.startsWith('#') || valueNode.value.startsWith('rgb'))) {
|
|
94
|
-
const location = `${node.source.start.line}:${node.source.start.offset}`;
|
|
95
|
-
colorLiterals.push({
|
|
96
|
-
path: `${projectCssPaths[fileIndex]}:${location}`,
|
|
97
|
-
name: valueNode.value
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
if (valueNode.type === 'word' && valueNode.value.endsWith('px') && (node.prop.includes('padding') || node.prop.includes('margin') || node.prop.includes('radius') || node.prop.includes('font-size'))) {
|
|
101
|
-
const location = `${node.source.start.line}:${node.source.start.offset}`;
|
|
102
|
-
colorLiterals.push({
|
|
103
|
-
path: `${projectCssPaths[fileIndex]}:${location}`,
|
|
104
|
-
name: valueNode.value
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
if (valueNode.type !== 'function' || valueNode.value !== 'var') continue;
|
|
109
|
-
const variableName = valueNode.nodes[0].value;
|
|
110
|
-
if (!variableName.startsWith(`--${prefix}`)) {
|
|
111
|
-
// if (legacyCssVariables[variableName] !== undefined) {
|
|
112
|
-
// legacyCssVariables[variableName]++;
|
|
113
|
-
// }
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
const hasDefault = valueNode.nodes.length === 3;
|
|
117
|
-
if (!hasDefault) {
|
|
118
|
-
valueNode.nodes.push({
|
|
119
|
-
type: 'div',
|
|
120
|
-
sourceIndex: -1,
|
|
121
|
-
value: ',',
|
|
122
|
-
before: '',
|
|
123
|
-
after: ' '
|
|
124
|
-
}, {
|
|
125
|
-
type: 'word',
|
|
126
|
-
sourceIndex: -1,
|
|
127
|
-
value: ''
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
const withoutPrefix = variableName.substring(`--${prefix}-`.length);
|
|
131
|
-
usedVariables[withoutPrefix] = true;
|
|
132
|
-
if (!values[withoutPrefix]) {
|
|
133
|
-
throw new Error(`Variable ${variableName} is used in project but not presented in design tokens list`);
|
|
134
|
-
}
|
|
135
|
-
valueNode.nodes[2].type = 'word';
|
|
136
|
-
valueNode.nodes[2].value = values[withoutPrefix];
|
|
137
|
-
valueNode.nodes[2].nodes = [];
|
|
138
|
-
valueNode.nodes.length = 3;
|
|
139
|
-
usages[withoutPrefix] = usages[withoutPrefix] ?? [];
|
|
140
|
-
usages[withoutPrefix].push(projectCssPaths[fileIndex]);
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
traverseValueAst(valueAst.nodes, null);
|
|
144
|
-
node.value = valueAst.toString();
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
traverseAst(result.root.nodes);
|
|
149
|
-
return {};
|
|
150
|
-
}
|
|
151
|
-
}]).process(cssContent, {
|
|
152
|
-
from: undefined
|
|
153
|
-
})));
|
|
154
|
-
await Promise.all(projectCssPaths.map((path, index) => writeIfChanged(path, processedCss[index].css)));
|
|
155
|
-
const unusedVariables = [];
|
|
156
|
-
for (const variable in values) {
|
|
157
|
-
if (!usedVariables[variable]) {
|
|
158
|
-
unusedVariables.push(variable);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
if (warning) {
|
|
162
|
-
if (unusedVariables.length > 0) {
|
|
163
|
-
// eslint-disable-next-line no-console
|
|
164
|
-
console.log('Unused design tokens:');
|
|
165
|
-
// eslint-disable-next-line no-console
|
|
166
|
-
console.log(unusedVariables.join('\n'));
|
|
167
|
-
}
|
|
168
|
-
if (colorLiterals.length > 0) {
|
|
169
|
-
// eslint-disable-next-line no-console
|
|
170
|
-
console.log('Unexpected color literals:');
|
|
171
|
-
for (const literal of colorLiterals) {
|
|
172
|
-
// eslint-disable-next-line no-console
|
|
173
|
-
console.log(`${literal.name} in ${literal.path}`);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
const designTokensDocumentation = [];
|
|
178
|
-
for (const token in values) {
|
|
179
|
-
if (!basicTokens.has(token)) {
|
|
180
|
-
const components = [...new Set((usages[token] ?? []).map(cssPath => cssPath.split('/')[2]))];
|
|
181
|
-
components.sort((a, b) => a.localeCompare(b));
|
|
182
|
-
designTokensDocumentation.push({
|
|
183
|
-
name: `--${prefix}-${token}`,
|
|
184
|
-
type: types[token],
|
|
185
|
-
rawValue: rawValues[token],
|
|
186
|
-
computedValue: values[token],
|
|
187
|
-
description: descriptions[token],
|
|
188
|
-
components
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
const baseTokensDocumentation = [];
|
|
193
|
-
const processGroup = (group, data) => {
|
|
194
|
-
for (const key in data) {
|
|
195
|
-
if (data[key].value) {
|
|
196
|
-
const token = {
|
|
197
|
-
name: `--${group}-${key}`,
|
|
198
|
-
value: data[key].value
|
|
199
|
-
};
|
|
200
|
-
if (data[key].description?.trim()) {
|
|
201
|
-
token.description = data[key].description;
|
|
202
|
-
}
|
|
203
|
-
baseTokensDocumentation.push(token);
|
|
204
|
-
} else {
|
|
205
|
-
processGroup(`${group}-${key}`, data[key]);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
|
-
for (const group in base) {
|
|
210
|
-
processGroup(group, base[group]);
|
|
211
|
-
}
|
|
212
|
-
await writeIfChanged((0, _nodePath.resolve)(dirname, '../../../../website/docs/style/design-tokens/design-tokens.json'), JSON.stringify(designTokensDocumentation, null, 2) + '\n');
|
|
213
|
-
await writeIfChanged((0, _nodePath.resolve)(dirname, '../../../../website/docs/style/design-tokens/base-tokens.json'), JSON.stringify(baseTokensDocumentation, null, 2) + '\n');
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
const autoThemeLines = [];
|
|
217
|
-
for (const theme in autoTheme) {
|
|
218
|
-
const selector = theme === defaultTheme ? ':root' : `.${theme}`;
|
|
219
|
-
autoThemeLines.push((0, _utils.tokensToCss)(autoTheme[theme], selector));
|
|
220
|
-
}
|
|
221
|
-
await writeIfChanged('./semcore/core/src/theme/themes/auto.css', autoThemeLines.join('\n'));
|
|
222
|
-
(0, _nodeChild_process.execSync)('pnpm lint:css --fix', {
|
|
223
|
-
encoding: 'utf-8',
|
|
224
|
-
cwd: (0, _nodePath.resolve)(dirname, '../../../../'),
|
|
225
|
-
stdio: ['inherit', 'inherit', 'inherit']
|
|
226
|
-
});
|
|
227
|
-
//# sourceMappingURL=processor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"processor.js","names":["_nodeChild_process","require","_promises","_interopRequireDefault","_nodePath","_nodeUrl","_fastGlob","_postcss","_postcssValueParser","_utils","writeIfChanged","path","content","originalContent","fs","readFile","replace","writeFile","exports","defaultTheme","themes","warning","process","argv","includes","dirname","resolvePath","fileURLToPath","import","meta","url","autoTheme","theme","prefix","base","tokens","featureHighlight","JSON","parse","processed","processTokens","values","types","rawValues","descriptions","basicTokens","highlightsTokens","processedTokens","tokensToCss","tokensToJs","length","usages","projectCssPaths","glob","ignore","filter","split","some","pathPart","projectCssContents","Promise","all","map","usedVariables","colorLiterals","processedCss","cssContent","fileIndex","postcss","postcssPlugin","prepare","result","traverseAst","nodes","node","value","valueAst","valuesParser","traverseValueAst","parent","valueNode","type","Error","parentIsVariable","prevNode","indexOf","skipNode","text","trim","startsWith","location","source","start","line","offset","push","name","endsWith","prop","variableName","hasDefault","sourceIndex","before","after","withoutPrefix","substring","toString","root","from","undefined","index","css","unusedVariables","variable","console","log","join","literal","designTokensDocumentation","token","has","components","Set","cssPath","sort","a","b","localeCompare","rawValue","computedValue","description","baseTokensDocumentation","processGroup","group","data","key","stringify","autoThemeLines","selector","execSync","encoding","cwd","stdio"],"sources":["../../src/theme/processor.ts"],"sourcesContent":["import { execSync } from 'node:child_process';\nimport fs from 'node:fs/promises';\nimport { resolve as resolvePath } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport glob from 'fast-glob';\nimport postcss from 'postcss';\nimport valuesParser from 'postcss-value-parser';\n\nimport { processTokens, tokensToCss, tokensToJs, tokensToJson } from './utils';\n\ntype Token = {\n name: string;\n value: string;\n description?: string;\n};\n\nexport const writeIfChanged = async (path: string, content: string) => {\n try {\n const originalContent = await fs.readFile(path, 'utf-8');\n if (originalContent.replace(/[\\s\\n]/g, '') === content.replace(/[\\s\\n]/g, '')) {\n return;\n }\n } catch {}\n await fs.writeFile(path, content);\n};\n\nconst defaultTheme = 'light';\nconst themes = ['light', 'dark'];\n\nconst warning = !process.argv.includes('--no-warning');\n\nconst dirname = resolvePath(fileURLToPath(import.meta.url), '..');\n\nconst autoTheme: Record<string, { name: string; value: string; description: string }[]> = {};\n\nfor (const theme of themes) {\n const prefix = 'intergalactic';\n const { base, tokens, featureHighlight } = JSON.parse(\n await fs.readFile(resolvePath(dirname, `./${theme}.json`), 'utf-8'),\n );\n const processed = processTokens(\n base,\n tokens,\n featureHighlight,\n prefix,\n );\n const { values, types, rawValues, descriptions, basicTokens, highlightsTokens } = processed;\n const { processedTokens } = processed;\n\n await writeIfChanged(\n `./semcore/core/src/theme/themes/${theme}.css`,\n tokensToCss(processedTokens),\n );\n await writeIfChanged(`./semcore/core/src/theme/themes/${theme}.ts`, tokensToJs(processedTokens));\n\n if (highlightsTokens.length > 0) {\n await writeIfChanged(\n `./semcore/core/src/theme/themes/highlights-${theme}.css`,\n tokensToCss(highlightsTokens),\n );\n await writeIfChanged(`./semcore/core/src/theme/themes/highlights-${theme}.ts`, tokensToJs(highlightsTokens));\n }\n\n autoTheme[theme] = processedTokens;\n\n const usages: { [tokenName: string]: string[] } = {};\n if (theme === defaultTheme) {\n await writeIfChanged(\n './semcore/core/src/theme/themes/default.css',\n tokensToCss(processedTokens),\n );\n await writeIfChanged('./semcore/core/src/theme/themes/default.ts', tokensToJs(processedTokens));\n\n const projectCssPaths = (\n await glob('./semcore/*/src/**/*.shadow.css', {\n ignore: ['node_modules', 'lib'],\n })\n ).filter((path) => {\n if (path.split('/').some((pathPart) => ['chart', 'email', 'table'].includes(pathPart))) {\n return false;\n }\n return true;\n });\n\n const projectCssContents = await Promise.all(\n projectCssPaths.map((path) => fs.readFile(path, 'utf-8')),\n );\n\n const usedVariables: any = {};\n\n const colorLiterals: { path: string; name: string }[] = [];\n\n const processedCss = await Promise.all(\n projectCssContents.map((cssContent, fileIndex) =>\n postcss([\n {\n postcssPlugin: 'variables-explored',\n prepare: (result) => {\n const traverseAst = (nodes: any[]) => {\n for (const node of nodes) {\n if (node.nodes) {\n traverseAst(node.nodes);\n }\n if (node.value) {\n const valueAst = valuesParser(node.value);\n const traverseValueAst = (nodes: any[], parent: any) => {\n for (const valueNode of nodes) {\n if (valueNode.nodes) traverseValueAst(valueNode.nodes, valueNode);\n if (valueNode.type === 'function' && valueNode.value === 'color-mod') {\n throw new Error(\n `Found restricted function color-mod in ${projectCssPaths[fileIndex]}`,\n );\n }\n\n const parentIsVariable =\n parent?.type === 'function' && parent?.value === 'var';\n if (!parentIsVariable) {\n const prevNode = node.parent.nodes[node.parent.nodes.indexOf(node) - 1];\n const skipNode =\n prevNode?.type === 'comment' &&\n prevNode.text.trim() === 'disable-tokens-validator';\n if (skipNode) continue;\n\n if (\n valueNode.type === 'word' &&\n (valueNode.value.startsWith('#') || valueNode.value.startsWith('rgb'))\n ) {\n const location = `${node.source.start.line}:${node.source.start.offset}`;\n colorLiterals.push({\n path: `${projectCssPaths[fileIndex]}:${location}`,\n name: valueNode.value,\n });\n }\n if (\n valueNode.type === 'word' &&\n valueNode.value.endsWith('px') &&\n (node.prop.includes('padding') ||\n node.prop.includes('margin') ||\n node.prop.includes('radius') ||\n node.prop.includes('font-size'))\n ) {\n const location = `${node.source.start.line}:${node.source.start.offset}`;\n colorLiterals.push({\n path: `${projectCssPaths[fileIndex]}:${location}`,\n name: valueNode.value,\n });\n }\n }\n if (valueNode.type !== 'function' || valueNode.value !== 'var') continue;\n const variableName = valueNode.nodes[0].value;\n if (!variableName.startsWith(`--${prefix}`)) {\n // if (legacyCssVariables[variableName] !== undefined) {\n // legacyCssVariables[variableName]++;\n // }\n continue;\n }\n const hasDefault = valueNode.nodes.length === 3;\n if (!hasDefault) {\n valueNode.nodes.push(\n {\n type: 'div',\n sourceIndex: -1,\n value: ',',\n before: '',\n after: ' ',\n },\n {\n type: 'word',\n sourceIndex: -1,\n value: '',\n },\n );\n }\n const withoutPrefix = variableName.substring(`--${prefix}-`.length);\n usedVariables[withoutPrefix] = true;\n if (!values[withoutPrefix]) {\n throw new Error(\n `Variable ${variableName} is used in project but not presented in design tokens list`,\n );\n }\n valueNode.nodes[2].type = 'word';\n valueNode.nodes[2].value = values[withoutPrefix];\n valueNode.nodes[2].nodes = [];\n valueNode.nodes.length = 3;\n usages[withoutPrefix] = usages[withoutPrefix] ?? [];\n usages[withoutPrefix].push(projectCssPaths[fileIndex]);\n }\n };\n traverseValueAst(valueAst.nodes, null);\n node.value = valueAst.toString();\n }\n }\n };\n traverseAst(result.root.nodes);\n return {};\n },\n },\n ]).process(cssContent, {\n from: undefined,\n }),\n ),\n );\n await Promise.all(\n projectCssPaths.map((path, index) => writeIfChanged(path, processedCss[index].css)),\n );\n\n const unusedVariables: string[] = [];\n for (const variable in values) {\n if (!usedVariables[variable]) {\n unusedVariables.push(variable);\n }\n }\n\n if (warning) {\n if (unusedVariables.length > 0) {\n // eslint-disable-next-line no-console\n console.log('Unused design tokens:');\n // eslint-disable-next-line no-console\n console.log(unusedVariables.join('\\n'));\n }\n if (colorLiterals.length > 0) {\n // eslint-disable-next-line no-console\n console.log('Unexpected color literals:');\n for (const literal of colorLiterals) {\n // eslint-disable-next-line no-console\n console.log(`${literal.name} in ${literal.path}`);\n }\n }\n }\n\n const designTokensDocumentation: {\n name: string;\n type: string;\n rawValue: string;\n computedValue: string;\n description: string;\n components: string[];\n }[] = [];\n\n for (const token in values) {\n if (!basicTokens.has(token)) {\n const components = [\n ...new Set((usages[token] ?? []).map((cssPath) => cssPath.split('/')[2])),\n ];\n components.sort((a, b) => a.localeCompare(b));\n\n designTokensDocumentation.push({\n name: `--${prefix}-${token}`,\n type: types[token],\n rawValue: rawValues[token],\n computedValue: values[token],\n description: descriptions[token],\n components,\n });\n }\n }\n\n const baseTokensDocumentation: Token[] = [];\n\n const processGroup = (group: string, data: any) => {\n for (const key in data) {\n if (data[key].value) {\n const token: Token = {\n name: `--${group}-${key}`,\n value: data[key].value,\n };\n\n if (data[key].description?.trim()) {\n token.description = data[key].description;\n }\n\n baseTokensDocumentation.push(token);\n } else {\n processGroup(`${group}-${key}`, data[key]);\n }\n }\n };\n\n for (const group in base) {\n processGroup(group, base[group]);\n }\n\n await writeIfChanged(\n resolvePath(dirname, '../../../../website/docs/style/design-tokens/design-tokens.json'),\n JSON.stringify(designTokensDocumentation, null, 2) + '\\n',\n );\n await writeIfChanged(\n resolvePath(dirname, '../../../../website/docs/style/design-tokens/base-tokens.json'),\n JSON.stringify(baseTokensDocumentation, null, 2) + '\\n',\n );\n }\n}\n\nconst autoThemeLines: string[] = [];\nfor (const theme in autoTheme) {\n const selector = theme === defaultTheme ? ':root' : `.${theme}`;\n autoThemeLines.push(tokensToCss(autoTheme[theme], selector));\n}\n\nawait writeIfChanged('./semcore/core/src/theme/themes/auto.css', autoThemeLines.join('\\n'));\n\nexecSync('pnpm lint:css --fix', {\n encoding: 'utf-8',\n cwd: resolvePath(dirname, '../../../../'),\n stdio: ['inherit', 'inherit', 'inherit'],\n});\n"],"mappings":"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","ignoreList":[]}
|
package/lib/theme/processor.mjs
DELETED
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
|
-
import fs from 'node:fs/promises';
|
|
3
|
-
import { resolve as resolvePath } from 'node:path';
|
|
4
|
-
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import glob from 'fast-glob';
|
|
6
|
-
import postcss from 'postcss';
|
|
7
|
-
import valuesParser from 'postcss-value-parser';
|
|
8
|
-
import { processTokens, tokensToCss, tokensToJs } from "./utils.mjs";
|
|
9
|
-
export const writeIfChanged = async (path, content) => {
|
|
10
|
-
try {
|
|
11
|
-
const originalContent = await fs.readFile(path, 'utf-8');
|
|
12
|
-
if (originalContent.replace(/[\s\n]/g, '') === content.replace(/[\s\n]/g, '')) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
} catch {}
|
|
16
|
-
await fs.writeFile(path, content);
|
|
17
|
-
};
|
|
18
|
-
const defaultTheme = 'light';
|
|
19
|
-
const themes = ['light', 'dark'];
|
|
20
|
-
const warning = !process.argv.includes('--no-warning');
|
|
21
|
-
const dirname = resolvePath(fileURLToPath(import.meta.url), '..');
|
|
22
|
-
const autoTheme = {};
|
|
23
|
-
for (const theme of themes) {
|
|
24
|
-
const prefix = 'intergalactic';
|
|
25
|
-
const {
|
|
26
|
-
base,
|
|
27
|
-
tokens,
|
|
28
|
-
featureHighlight
|
|
29
|
-
} = JSON.parse(await fs.readFile(resolvePath(dirname, `./${theme}.json`), 'utf-8'));
|
|
30
|
-
const processed = processTokens(base, tokens, featureHighlight, prefix);
|
|
31
|
-
const {
|
|
32
|
-
values,
|
|
33
|
-
types,
|
|
34
|
-
rawValues,
|
|
35
|
-
descriptions,
|
|
36
|
-
basicTokens,
|
|
37
|
-
highlightsTokens
|
|
38
|
-
} = processed;
|
|
39
|
-
const {
|
|
40
|
-
processedTokens
|
|
41
|
-
} = processed;
|
|
42
|
-
await writeIfChanged(`./semcore/core/src/theme/themes/${theme}.css`, tokensToCss(processedTokens));
|
|
43
|
-
await writeIfChanged(`./semcore/core/src/theme/themes/${theme}.ts`, tokensToJs(processedTokens));
|
|
44
|
-
if (highlightsTokens.length > 0) {
|
|
45
|
-
await writeIfChanged(`./semcore/core/src/theme/themes/highlights-${theme}.css`, tokensToCss(highlightsTokens));
|
|
46
|
-
await writeIfChanged(`./semcore/core/src/theme/themes/highlights-${theme}.ts`, tokensToJs(highlightsTokens));
|
|
47
|
-
}
|
|
48
|
-
autoTheme[theme] = processedTokens;
|
|
49
|
-
const usages = {};
|
|
50
|
-
if (theme === defaultTheme) {
|
|
51
|
-
await writeIfChanged('./semcore/core/src/theme/themes/default.css', tokensToCss(processedTokens));
|
|
52
|
-
await writeIfChanged('./semcore/core/src/theme/themes/default.ts', tokensToJs(processedTokens));
|
|
53
|
-
const projectCssPaths = (await glob('./semcore/*/src/**/*.shadow.css', {
|
|
54
|
-
ignore: ['node_modules', 'lib']
|
|
55
|
-
})).filter(path => {
|
|
56
|
-
if (path.split('/').some(pathPart => ['chart', 'email', 'table'].includes(pathPart))) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
return true;
|
|
60
|
-
});
|
|
61
|
-
const projectCssContents = await Promise.all(projectCssPaths.map(path => fs.readFile(path, 'utf-8')));
|
|
62
|
-
const usedVariables = {};
|
|
63
|
-
const colorLiterals = [];
|
|
64
|
-
const processedCss = await Promise.all(projectCssContents.map((cssContent, fileIndex) => postcss([{
|
|
65
|
-
postcssPlugin: 'variables-explored',
|
|
66
|
-
prepare: result => {
|
|
67
|
-
const traverseAst = nodes => {
|
|
68
|
-
for (const node of nodes) {
|
|
69
|
-
if (node.nodes) {
|
|
70
|
-
traverseAst(node.nodes);
|
|
71
|
-
}
|
|
72
|
-
if (node.value) {
|
|
73
|
-
const valueAst = valuesParser(node.value);
|
|
74
|
-
const traverseValueAst = (nodes, parent) => {
|
|
75
|
-
for (const valueNode of nodes) {
|
|
76
|
-
if (valueNode.nodes) traverseValueAst(valueNode.nodes, valueNode);
|
|
77
|
-
if (valueNode.type === 'function' && valueNode.value === 'color-mod') {
|
|
78
|
-
throw new Error(`Found restricted function color-mod in ${projectCssPaths[fileIndex]}`);
|
|
79
|
-
}
|
|
80
|
-
const parentIsVariable = parent?.type === 'function' && parent?.value === 'var';
|
|
81
|
-
if (!parentIsVariable) {
|
|
82
|
-
const prevNode = node.parent.nodes[node.parent.nodes.indexOf(node) - 1];
|
|
83
|
-
const skipNode = prevNode?.type === 'comment' && prevNode.text.trim() === 'disable-tokens-validator';
|
|
84
|
-
if (skipNode) continue;
|
|
85
|
-
if (valueNode.type === 'word' && (valueNode.value.startsWith('#') || valueNode.value.startsWith('rgb'))) {
|
|
86
|
-
const location = `${node.source.start.line}:${node.source.start.offset}`;
|
|
87
|
-
colorLiterals.push({
|
|
88
|
-
path: `${projectCssPaths[fileIndex]}:${location}`,
|
|
89
|
-
name: valueNode.value
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
if (valueNode.type === 'word' && valueNode.value.endsWith('px') && (node.prop.includes('padding') || node.prop.includes('margin') || node.prop.includes('radius') || node.prop.includes('font-size'))) {
|
|
93
|
-
const location = `${node.source.start.line}:${node.source.start.offset}`;
|
|
94
|
-
colorLiterals.push({
|
|
95
|
-
path: `${projectCssPaths[fileIndex]}:${location}`,
|
|
96
|
-
name: valueNode.value
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
if (valueNode.type !== 'function' || valueNode.value !== 'var') continue;
|
|
101
|
-
const variableName = valueNode.nodes[0].value;
|
|
102
|
-
if (!variableName.startsWith(`--${prefix}`)) {
|
|
103
|
-
// if (legacyCssVariables[variableName] !== undefined) {
|
|
104
|
-
// legacyCssVariables[variableName]++;
|
|
105
|
-
// }
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
const hasDefault = valueNode.nodes.length === 3;
|
|
109
|
-
if (!hasDefault) {
|
|
110
|
-
valueNode.nodes.push({
|
|
111
|
-
type: 'div',
|
|
112
|
-
sourceIndex: -1,
|
|
113
|
-
value: ',',
|
|
114
|
-
before: '',
|
|
115
|
-
after: ' '
|
|
116
|
-
}, {
|
|
117
|
-
type: 'word',
|
|
118
|
-
sourceIndex: -1,
|
|
119
|
-
value: ''
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
const withoutPrefix = variableName.substring(`--${prefix}-`.length);
|
|
123
|
-
usedVariables[withoutPrefix] = true;
|
|
124
|
-
if (!values[withoutPrefix]) {
|
|
125
|
-
throw new Error(`Variable ${variableName} is used in project but not presented in design tokens list`);
|
|
126
|
-
}
|
|
127
|
-
valueNode.nodes[2].type = 'word';
|
|
128
|
-
valueNode.nodes[2].value = values[withoutPrefix];
|
|
129
|
-
valueNode.nodes[2].nodes = [];
|
|
130
|
-
valueNode.nodes.length = 3;
|
|
131
|
-
usages[withoutPrefix] = usages[withoutPrefix] ?? [];
|
|
132
|
-
usages[withoutPrefix].push(projectCssPaths[fileIndex]);
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
traverseValueAst(valueAst.nodes, null);
|
|
136
|
-
node.value = valueAst.toString();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
traverseAst(result.root.nodes);
|
|
141
|
-
return {};
|
|
142
|
-
}
|
|
143
|
-
}]).process(cssContent, {
|
|
144
|
-
from: undefined
|
|
145
|
-
})));
|
|
146
|
-
await Promise.all(projectCssPaths.map((path, index) => writeIfChanged(path, processedCss[index].css)));
|
|
147
|
-
const unusedVariables = [];
|
|
148
|
-
for (const variable in values) {
|
|
149
|
-
if (!usedVariables[variable]) {
|
|
150
|
-
unusedVariables.push(variable);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
if (warning) {
|
|
154
|
-
if (unusedVariables.length > 0) {
|
|
155
|
-
// eslint-disable-next-line no-console
|
|
156
|
-
console.log('Unused design tokens:');
|
|
157
|
-
// eslint-disable-next-line no-console
|
|
158
|
-
console.log(unusedVariables.join('\n'));
|
|
159
|
-
}
|
|
160
|
-
if (colorLiterals.length > 0) {
|
|
161
|
-
// eslint-disable-next-line no-console
|
|
162
|
-
console.log('Unexpected color literals:');
|
|
163
|
-
for (const literal of colorLiterals) {
|
|
164
|
-
// eslint-disable-next-line no-console
|
|
165
|
-
console.log(`${literal.name} in ${literal.path}`);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
const designTokensDocumentation = [];
|
|
170
|
-
for (const token in values) {
|
|
171
|
-
if (!basicTokens.has(token)) {
|
|
172
|
-
const components = [...new Set((usages[token] ?? []).map(cssPath => cssPath.split('/')[2]))];
|
|
173
|
-
components.sort((a, b) => a.localeCompare(b));
|
|
174
|
-
designTokensDocumentation.push({
|
|
175
|
-
name: `--${prefix}-${token}`,
|
|
176
|
-
type: types[token],
|
|
177
|
-
rawValue: rawValues[token],
|
|
178
|
-
computedValue: values[token],
|
|
179
|
-
description: descriptions[token],
|
|
180
|
-
components
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
const baseTokensDocumentation = [];
|
|
185
|
-
const processGroup = (group, data) => {
|
|
186
|
-
for (const key in data) {
|
|
187
|
-
if (data[key].value) {
|
|
188
|
-
const token = {
|
|
189
|
-
name: `--${group}-${key}`,
|
|
190
|
-
value: data[key].value
|
|
191
|
-
};
|
|
192
|
-
if (data[key].description?.trim()) {
|
|
193
|
-
token.description = data[key].description;
|
|
194
|
-
}
|
|
195
|
-
baseTokensDocumentation.push(token);
|
|
196
|
-
} else {
|
|
197
|
-
processGroup(`${group}-${key}`, data[key]);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
};
|
|
201
|
-
for (const group in base) {
|
|
202
|
-
processGroup(group, base[group]);
|
|
203
|
-
}
|
|
204
|
-
await writeIfChanged(resolvePath(dirname, '../../../../website/docs/style/design-tokens/design-tokens.json'), JSON.stringify(designTokensDocumentation, null, 2) + '\n');
|
|
205
|
-
await writeIfChanged(resolvePath(dirname, '../../../../website/docs/style/design-tokens/base-tokens.json'), JSON.stringify(baseTokensDocumentation, null, 2) + '\n');
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
const autoThemeLines = [];
|
|
209
|
-
for (const theme in autoTheme) {
|
|
210
|
-
const selector = theme === defaultTheme ? ':root' : `.${theme}`;
|
|
211
|
-
autoThemeLines.push(tokensToCss(autoTheme[theme], selector));
|
|
212
|
-
}
|
|
213
|
-
await writeIfChanged('./semcore/core/src/theme/themes/auto.css', autoThemeLines.join('\n'));
|
|
214
|
-
execSync('pnpm lint:css --fix', {
|
|
215
|
-
encoding: 'utf-8',
|
|
216
|
-
cwd: resolvePath(dirname, '../../../../'),
|
|
217
|
-
stdio: ['inherit', 'inherit', 'inherit']
|
|
218
|
-
});
|
|
219
|
-
//# sourceMappingURL=processor.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"processor.mjs","names":["execSync","fs","resolve","resolvePath","fileURLToPath","glob","postcss","valuesParser","processTokens","tokensToCss","tokensToJs","writeIfChanged","path","content","originalContent","readFile","replace","writeFile","defaultTheme","themes","warning","process","argv","includes","dirname","import","meta","url","autoTheme","theme","prefix","base","tokens","featureHighlight","JSON","parse","processed","values","types","rawValues","descriptions","basicTokens","highlightsTokens","processedTokens","length","usages","projectCssPaths","ignore","filter","split","some","pathPart","projectCssContents","Promise","all","map","usedVariables","colorLiterals","processedCss","cssContent","fileIndex","postcssPlugin","prepare","result","traverseAst","nodes","node","value","valueAst","traverseValueAst","parent","valueNode","type","Error","parentIsVariable","prevNode","indexOf","skipNode","text","trim","startsWith","location","source","start","line","offset","push","name","endsWith","prop","variableName","hasDefault","sourceIndex","before","after","withoutPrefix","substring","toString","root","from","undefined","index","css","unusedVariables","variable","console","log","join","literal","designTokensDocumentation","token","has","components","Set","cssPath","sort","a","b","localeCompare","rawValue","computedValue","description","baseTokensDocumentation","processGroup","group","data","key","stringify","autoThemeLines","selector","encoding","cwd","stdio"],"sources":["../../src/theme/processor.ts"],"sourcesContent":["import { execSync } from 'node:child_process';\nimport fs from 'node:fs/promises';\nimport { resolve as resolvePath } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport glob from 'fast-glob';\nimport postcss from 'postcss';\nimport valuesParser from 'postcss-value-parser';\n\nimport { processTokens, tokensToCss, tokensToJs, tokensToJson } from './utils';\n\ntype Token = {\n name: string;\n value: string;\n description?: string;\n};\n\nexport const writeIfChanged = async (path: string, content: string) => {\n try {\n const originalContent = await fs.readFile(path, 'utf-8');\n if (originalContent.replace(/[\\s\\n]/g, '') === content.replace(/[\\s\\n]/g, '')) {\n return;\n }\n } catch {}\n await fs.writeFile(path, content);\n};\n\nconst defaultTheme = 'light';\nconst themes = ['light', 'dark'];\n\nconst warning = !process.argv.includes('--no-warning');\n\nconst dirname = resolvePath(fileURLToPath(import.meta.url), '..');\n\nconst autoTheme: Record<string, { name: string; value: string; description: string }[]> = {};\n\nfor (const theme of themes) {\n const prefix = 'intergalactic';\n const { base, tokens, featureHighlight } = JSON.parse(\n await fs.readFile(resolvePath(dirname, `./${theme}.json`), 'utf-8'),\n );\n const processed = processTokens(\n base,\n tokens,\n featureHighlight,\n prefix,\n );\n const { values, types, rawValues, descriptions, basicTokens, highlightsTokens } = processed;\n const { processedTokens } = processed;\n\n await writeIfChanged(\n `./semcore/core/src/theme/themes/${theme}.css`,\n tokensToCss(processedTokens),\n );\n await writeIfChanged(`./semcore/core/src/theme/themes/${theme}.ts`, tokensToJs(processedTokens));\n\n if (highlightsTokens.length > 0) {\n await writeIfChanged(\n `./semcore/core/src/theme/themes/highlights-${theme}.css`,\n tokensToCss(highlightsTokens),\n );\n await writeIfChanged(`./semcore/core/src/theme/themes/highlights-${theme}.ts`, tokensToJs(highlightsTokens));\n }\n\n autoTheme[theme] = processedTokens;\n\n const usages: { [tokenName: string]: string[] } = {};\n if (theme === defaultTheme) {\n await writeIfChanged(\n './semcore/core/src/theme/themes/default.css',\n tokensToCss(processedTokens),\n );\n await writeIfChanged('./semcore/core/src/theme/themes/default.ts', tokensToJs(processedTokens));\n\n const projectCssPaths = (\n await glob('./semcore/*/src/**/*.shadow.css', {\n ignore: ['node_modules', 'lib'],\n })\n ).filter((path) => {\n if (path.split('/').some((pathPart) => ['chart', 'email', 'table'].includes(pathPart))) {\n return false;\n }\n return true;\n });\n\n const projectCssContents = await Promise.all(\n projectCssPaths.map((path) => fs.readFile(path, 'utf-8')),\n );\n\n const usedVariables: any = {};\n\n const colorLiterals: { path: string; name: string }[] = [];\n\n const processedCss = await Promise.all(\n projectCssContents.map((cssContent, fileIndex) =>\n postcss([\n {\n postcssPlugin: 'variables-explored',\n prepare: (result) => {\n const traverseAst = (nodes: any[]) => {\n for (const node of nodes) {\n if (node.nodes) {\n traverseAst(node.nodes);\n }\n if (node.value) {\n const valueAst = valuesParser(node.value);\n const traverseValueAst = (nodes: any[], parent: any) => {\n for (const valueNode of nodes) {\n if (valueNode.nodes) traverseValueAst(valueNode.nodes, valueNode);\n if (valueNode.type === 'function' && valueNode.value === 'color-mod') {\n throw new Error(\n `Found restricted function color-mod in ${projectCssPaths[fileIndex]}`,\n );\n }\n\n const parentIsVariable =\n parent?.type === 'function' && parent?.value === 'var';\n if (!parentIsVariable) {\n const prevNode = node.parent.nodes[node.parent.nodes.indexOf(node) - 1];\n const skipNode =\n prevNode?.type === 'comment' &&\n prevNode.text.trim() === 'disable-tokens-validator';\n if (skipNode) continue;\n\n if (\n valueNode.type === 'word' &&\n (valueNode.value.startsWith('#') || valueNode.value.startsWith('rgb'))\n ) {\n const location = `${node.source.start.line}:${node.source.start.offset}`;\n colorLiterals.push({\n path: `${projectCssPaths[fileIndex]}:${location}`,\n name: valueNode.value,\n });\n }\n if (\n valueNode.type === 'word' &&\n valueNode.value.endsWith('px') &&\n (node.prop.includes('padding') ||\n node.prop.includes('margin') ||\n node.prop.includes('radius') ||\n node.prop.includes('font-size'))\n ) {\n const location = `${node.source.start.line}:${node.source.start.offset}`;\n colorLiterals.push({\n path: `${projectCssPaths[fileIndex]}:${location}`,\n name: valueNode.value,\n });\n }\n }\n if (valueNode.type !== 'function' || valueNode.value !== 'var') continue;\n const variableName = valueNode.nodes[0].value;\n if (!variableName.startsWith(`--${prefix}`)) {\n // if (legacyCssVariables[variableName] !== undefined) {\n // legacyCssVariables[variableName]++;\n // }\n continue;\n }\n const hasDefault = valueNode.nodes.length === 3;\n if (!hasDefault) {\n valueNode.nodes.push(\n {\n type: 'div',\n sourceIndex: -1,\n value: ',',\n before: '',\n after: ' ',\n },\n {\n type: 'word',\n sourceIndex: -1,\n value: '',\n },\n );\n }\n const withoutPrefix = variableName.substring(`--${prefix}-`.length);\n usedVariables[withoutPrefix] = true;\n if (!values[withoutPrefix]) {\n throw new Error(\n `Variable ${variableName} is used in project but not presented in design tokens list`,\n );\n }\n valueNode.nodes[2].type = 'word';\n valueNode.nodes[2].value = values[withoutPrefix];\n valueNode.nodes[2].nodes = [];\n valueNode.nodes.length = 3;\n usages[withoutPrefix] = usages[withoutPrefix] ?? [];\n usages[withoutPrefix].push(projectCssPaths[fileIndex]);\n }\n };\n traverseValueAst(valueAst.nodes, null);\n node.value = valueAst.toString();\n }\n }\n };\n traverseAst(result.root.nodes);\n return {};\n },\n },\n ]).process(cssContent, {\n from: undefined,\n }),\n ),\n );\n await Promise.all(\n projectCssPaths.map((path, index) => writeIfChanged(path, processedCss[index].css)),\n );\n\n const unusedVariables: string[] = [];\n for (const variable in values) {\n if (!usedVariables[variable]) {\n unusedVariables.push(variable);\n }\n }\n\n if (warning) {\n if (unusedVariables.length > 0) {\n // eslint-disable-next-line no-console\n console.log('Unused design tokens:');\n // eslint-disable-next-line no-console\n console.log(unusedVariables.join('\\n'));\n }\n if (colorLiterals.length > 0) {\n // eslint-disable-next-line no-console\n console.log('Unexpected color literals:');\n for (const literal of colorLiterals) {\n // eslint-disable-next-line no-console\n console.log(`${literal.name} in ${literal.path}`);\n }\n }\n }\n\n const designTokensDocumentation: {\n name: string;\n type: string;\n rawValue: string;\n computedValue: string;\n description: string;\n components: string[];\n }[] = [];\n\n for (const token in values) {\n if (!basicTokens.has(token)) {\n const components = [\n ...new Set((usages[token] ?? []).map((cssPath) => cssPath.split('/')[2])),\n ];\n components.sort((a, b) => a.localeCompare(b));\n\n designTokensDocumentation.push({\n name: `--${prefix}-${token}`,\n type: types[token],\n rawValue: rawValues[token],\n computedValue: values[token],\n description: descriptions[token],\n components,\n });\n }\n }\n\n const baseTokensDocumentation: Token[] = [];\n\n const processGroup = (group: string, data: any) => {\n for (const key in data) {\n if (data[key].value) {\n const token: Token = {\n name: `--${group}-${key}`,\n value: data[key].value,\n };\n\n if (data[key].description?.trim()) {\n token.description = data[key].description;\n }\n\n baseTokensDocumentation.push(token);\n } else {\n processGroup(`${group}-${key}`, data[key]);\n }\n }\n };\n\n for (const group in base) {\n processGroup(group, base[group]);\n }\n\n await writeIfChanged(\n resolvePath(dirname, '../../../../website/docs/style/design-tokens/design-tokens.json'),\n JSON.stringify(designTokensDocumentation, null, 2) + '\\n',\n );\n await writeIfChanged(\n resolvePath(dirname, '../../../../website/docs/style/design-tokens/base-tokens.json'),\n JSON.stringify(baseTokensDocumentation, null, 2) + '\\n',\n );\n }\n}\n\nconst autoThemeLines: string[] = [];\nfor (const theme in autoTheme) {\n const selector = theme === defaultTheme ? ':root' : `.${theme}`;\n autoThemeLines.push(tokensToCss(autoTheme[theme], selector));\n}\n\nawait writeIfChanged('./semcore/core/src/theme/themes/auto.css', autoThemeLines.join('\\n'));\n\nexecSync('pnpm lint:css --fix', {\n encoding: 'utf-8',\n cwd: resolvePath(dirname, '../../../../'),\n stdio: ['inherit', 'inherit', 'inherit'],\n});\n"],"mappings":"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","ignoreList":[]}
|
package/lib/theme/utils.d.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
type ExtensionsInput = {
|
|
2
|
-
'studio.tokens': {
|
|
3
|
-
modify: {
|
|
4
|
-
type: string;
|
|
5
|
-
value: number;
|
|
6
|
-
space: string;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
type TokensInput = {
|
|
11
|
-
[nestedKey: string]: TokensInput | {
|
|
12
|
-
value: string;
|
|
13
|
-
type: string;
|
|
14
|
-
description: string;
|
|
15
|
-
$extensions?: ExtensionsInput;
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
export declare const processTokens: (base: TokensInput, tokens: TokensInput, featureHighlight: TokensInput, prefix: string) => {
|
|
19
|
-
processedTokens: {
|
|
20
|
-
name: string;
|
|
21
|
-
value: string;
|
|
22
|
-
description: string;
|
|
23
|
-
}[];
|
|
24
|
-
highlightsTokens: {
|
|
25
|
-
name: string;
|
|
26
|
-
value: string;
|
|
27
|
-
description: string;
|
|
28
|
-
}[];
|
|
29
|
-
values: {
|
|
30
|
-
[tokenName: string]: string;
|
|
31
|
-
};
|
|
32
|
-
types: {
|
|
33
|
-
[tokenName: string]: string;
|
|
34
|
-
};
|
|
35
|
-
rawValues: {
|
|
36
|
-
[tokenName: string]: string;
|
|
37
|
-
};
|
|
38
|
-
descriptions: {
|
|
39
|
-
[tokenName: string]: string;
|
|
40
|
-
};
|
|
41
|
-
basicTokens: Set<string>;
|
|
42
|
-
};
|
|
43
|
-
export declare const tokensToCss: (tokens: {
|
|
44
|
-
name: string;
|
|
45
|
-
value: string;
|
|
46
|
-
description: string;
|
|
47
|
-
}[], selector?: string) => string;
|
|
48
|
-
export declare const tokensToJson: (tokens: {
|
|
49
|
-
name: string;
|
|
50
|
-
value: string;
|
|
51
|
-
description: string;
|
|
52
|
-
}[]) => string;
|
|
53
|
-
export declare const tokensToJs: (tokens: {
|
|
54
|
-
name: string;
|
|
55
|
-
value: string;
|
|
56
|
-
description: string;
|
|
57
|
-
}[]) => string;
|
|
58
|
-
export {};
|