@akinon/ui-utils 1.0.0 → 1.0.1

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/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "@akinon/ui-utils",
3
3
  "description": "Utility class library for Akinon UI",
4
- "version": "1.0.0",
4
+ "version": "1.0.1",
5
5
  "main": "index.css",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
+ },
9
+ "scripts": {
10
+ "prebuild": "node prebuild.mjs"
8
11
  }
9
12
  }
package/prebuild.mjs ADDED
@@ -0,0 +1,57 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { fileURLToPath } from 'url';
4
+
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = path.dirname(__filename);
7
+
8
+ const colorsFile = path.resolve(__dirname, '../theme/src/colors.ts');
9
+ const cssFile = path.resolve(__dirname, 'index.css');
10
+
11
+ const colorsContent = fs.readFileSync(colorsFile, 'utf-8');
12
+ const cssContent = fs.readFileSync(cssFile, 'utf-8');
13
+
14
+ // Convert colors to JSON
15
+ const colorRegex = /export const (\w+) = ({[\s\S]*?});/g;
16
+ let match;
17
+ const colors = {};
18
+
19
+ while ((match = colorRegex.exec(colorsContent)) !== null) {
20
+ const name = match[1];
21
+
22
+ let jsonStr = match[2]
23
+ .replace(/\/\/.*$/gm, '') // Remove single line comments
24
+ .replace(/\/\*[\s\S]*?\*\//g, '') // Remove multi line comments
25
+ .replace(/'/g, '"'); // Replace single quotes with double quotes
26
+
27
+ try {
28
+ colors[name] = JSON.parse(jsonStr);
29
+ } catch (error) {
30
+ console.error(`Error parsing JSON for color ${name}:`, error);
31
+ console.log('Invalid JSON:', jsonStr);
32
+ }
33
+ }
34
+
35
+ const colorClasses = Object.entries(colors)
36
+ .flatMap(([colorName, shades]) =>
37
+ Object.entries(shades).flatMap(([shade, colorValue]) => [
38
+ `.bg-${colorName}-${shade} { background-color: var(--color-${colorName}-${shade}); }`,
39
+ `.text-${colorName}-${shade} { color: var(--color-${colorName}-${shade}); }`,
40
+ `.border-${colorName}-${shade} { border-color: var(--color-${colorName}-${shade}); }`,
41
+ `.outline-${colorName}-${shade} { outline-color: var(--color-${colorName}-${shade}); }`,
42
+ `.decoration-${colorName}-${shade} { text-decoration-color: var(--color-${colorName}-${shade}); }`,
43
+ `.accent-${colorName}-${shade} { accent-color: var(--color-${colorName}-${shade}); }`,
44
+ `.caret-${colorName}-${shade} { caret-color: var(--color-${colorName}-${shade}); }`,
45
+ `.fill-${colorName}-${shade} { fill: var(--color-${colorName}-${shade}); }`,
46
+ `.stroke-${colorName}-${shade} { stroke: var(--color-${colorName}-${shade}); }`,
47
+ `.shadow-${colorName}-${shade} {
48
+ --aki-shadow-color: ${colorValue};
49
+ --aki-shadow: var(--aki-shadow-colored);
50
+ }`
51
+ ])
52
+ )
53
+ .join('\n');
54
+
55
+ const updatedClasses = `${cssContent}\n${colorClasses}`;
56
+
57
+ fs.writeFileSync(cssFile, updatedClasses);