atomsystem 0.1.0

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.
@@ -0,0 +1,87 @@
1
+ import StyleDictionary from "style-dictionary";
2
+ import { register } from "@tokens-studio/sd-transforms";
3
+
4
+ import { readFileSync, writeFileSync } from "fs";
5
+
6
+ import path from "path";
7
+
8
+ register(StyleDictionary);
9
+
10
+ // 원본 token.json 파일 읽기
11
+ const tokenFile = readFileSync("token.json", "utf8");
12
+ const tokenData = JSON.parse(tokenFile);
13
+ // console.log(tokenData);
14
+
15
+ // css 파일 빌드 후 통합하여 global.css에 제공하는 함수
16
+ const processCss = async (tokenSetOrder) => {
17
+ let globalCSS = "";
18
+
19
+ let globalItems = readFileSync(
20
+ path.join(process.cwd(), "build", `global.variables.css`),
21
+ "utf8"
22
+ )
23
+ .replace(":root {", "")
24
+ .replace(/}\s*$/, "") // 마지막 } 제거;
25
+ .split(";") // 세미콜론 기준으로 나눔
26
+ .map((item) => item.trim()) // 양 끝 공백 제거
27
+ .filter(Boolean); //빈 값 제거
28
+
29
+ tokenSetOrder.forEach((tokenValue) => {
30
+ const filePath = path.join(
31
+ process.cwd(),
32
+ "build",
33
+ `${tokenValue}.variables.css`
34
+ );
35
+
36
+ try {
37
+ let items = readFileSync(filePath, "utf8")
38
+ .replace(":root {", "")
39
+ .replace(/}\s*$/, "") // 마지막 } 제거;
40
+ .split(";") // 세미콜론 기준으로 나눔
41
+ .map((item) => item.trim()) // 양 끝 공백 제거
42
+ .filter(Boolean); //빈 값 제거
43
+
44
+ const uniqueItems = items.filter((item) => !globalItems.includes(item));
45
+
46
+ // 각 토큰별 css를 구조에 맞게 추가
47
+ globalCSS += `
48
+
49
+ .${tokenValue} {
50
+ ${uniqueItems.join(";")}
51
+ }
52
+ `;
53
+ } catch (error) {
54
+ console.log(`파일 읽기 실패:${filePath}`, error);
55
+ }
56
+ });
57
+
58
+ // tailwind 지시어와 통합
59
+
60
+ const combinedCSS = `
61
+ @tailwind base;
62
+ @tailwind components;
63
+ @tailwind utilities;
64
+
65
+ @layer base{
66
+ :root{
67
+ ${globalItems.join(";")}
68
+ }
69
+ }
70
+
71
+ ${globalCSS}
72
+ `;
73
+
74
+ // 결과를 app/globals.css에 저장
75
+ writeFileSync(
76
+ path.join(process.cwd(), "app", "globals.css"),
77
+ combinedCSS,
78
+ "utf8"
79
+ );
80
+ console.log("global.css 파일이 성공적으로 생성되었습니다.");
81
+ };
82
+
83
+ try {
84
+ processCss(tokenData.$metadata.tokenSetOrder);
85
+ } catch (error) {
86
+ console.error("css파일 통합 처리중 오류가 발생했습니다:", error);
87
+ }
@@ -0,0 +1,81 @@
1
+ import StyleDictionary from "style-dictionary";
2
+ import { register } from "@tokens-studio/sd-transforms";
3
+ import { expandTypesMap } from "@tokens-studio/sd-transforms";
4
+
5
+ import { readFileSync, writeFileSync, rmSync, mkdirSync } from "fs";
6
+ import { existsSync } from "fs";
7
+
8
+ register(StyleDictionary);
9
+
10
+ // 원본 token.json 파일 읽기
11
+ const tokenFile = readFileSync("token.json", "utf8");
12
+ const tokenData = JSON.parse(tokenFile);
13
+ // console.log(tokenData);
14
+
15
+ // build 디렉토리가 없으면 생성
16
+ const buildDir = "build/";
17
+ if (existsSync(buildDir)) {
18
+ rmSync(buildDir, { recursive: true, force: true });
19
+ }
20
+ mkdirSync(buildDir);
21
+
22
+ const buildTokens = async () => {
23
+ // tokenSetOrder 배열에서 각 항목에 대해 파일 생성
24
+ tokenData.$metadata.tokenSetOrder.forEach((tokenSet) => {
25
+ const fileName = `tokens/token/${tokenSet}.json`;
26
+
27
+ // 각 토큰셋의 데이터를 가져옴
28
+ const originalTokens = tokenData[tokenSet] || {};
29
+ const globalTokens = tokenData["global"] || {};
30
+ const cleanedTokens = { ...globalTokens }; // 초기값으로 globalTokens 추가
31
+
32
+ // console.log(originalTokens);
33
+ // console.log(globalTokens);
34
+
35
+ // 최상위 그룹을 제외한 나머지 데이터 처리
36
+ Object.entries(originalTokens).forEach(([groupKey, groupValue]) => {
37
+ if (groupKey === tokenSet) {
38
+ return; // 최상위 그룹 스킵
39
+ }
40
+
41
+ if (groupValue && typeof groupValue === "object") {
42
+ cleanedTokens[groupKey] = groupValue;
43
+ }
44
+ });
45
+
46
+ // 각 토큰 파일 생성
47
+ writeFileSync(fileName, JSON.stringify(cleanedTokens, null, 2), "utf8");
48
+ console.log(`${fileName} 파일이 생성되었습니다.`);
49
+
50
+ // StyleDictionary 인스턴스 생성 및 빌드
51
+ const sdTransfer = new StyleDictionary({
52
+ source: [fileName],
53
+ preprocessors: ["tokens-studio"],
54
+ expand: {
55
+ typesMap: expandTypesMap,
56
+ },
57
+ platforms: {
58
+ css: {
59
+ transformGroup: "tokens-studio",
60
+ transforms: ["ts/size/px", "ts/opacity", "name/kebab"],
61
+ buildPath: buildDir,
62
+ files: [
63
+ {
64
+ destination: `${tokenSet}.variables.css`,
65
+ format: "css/variables",
66
+ },
67
+ ],
68
+ },
69
+ },
70
+ });
71
+
72
+ sdTransfer.cleanAllPlatforms(); // 기존 빌드 삭제
73
+ sdTransfer.buildAllPlatforms(); // 빌드 실행
74
+ });
75
+ };
76
+
77
+ try {
78
+ buildTokens();
79
+ } catch (error) {
80
+ console.error("토크파일 처리중 오류가 발생했습니다:", error);
81
+ }
@@ -0,0 +1,390 @@
1
+ {
2
+ "black": {
3
+ "50": {
4
+ "value": "#5A5A5A",
5
+ "type": "color"
6
+ },
7
+ "100": {
8
+ "value": "#555555",
9
+ "type": "color"
10
+ },
11
+ "200": {
12
+ "value": "#4A4A4A",
13
+ "type": "color"
14
+ },
15
+ "300": {
16
+ "value": "#444444",
17
+ "type": "color"
18
+ },
19
+ "400": {
20
+ "value": "#3A3A3A",
21
+ "type": "color"
22
+ },
23
+ "500": {
24
+ "value": "#333333",
25
+ "type": "color"
26
+ },
27
+ "600": {
28
+ "value": "#2A2A2A",
29
+ "type": "color"
30
+ },
31
+ "700": {
32
+ "value": "#222222",
33
+ "type": "color"
34
+ },
35
+ "800": {
36
+ "value": "#1A1A1A",
37
+ "type": "color"
38
+ },
39
+ "900": {
40
+ "value": "#111111",
41
+ "type": "color"
42
+ }
43
+ },
44
+ "gray": {
45
+ "50": {
46
+ "value": "#BBBBBB",
47
+ "type": "color"
48
+ },
49
+ "100": {
50
+ "value": "#B3B3B3",
51
+ "type": "color"
52
+ },
53
+ "200": {
54
+ "value": "#9E9E9E",
55
+ "type": "color"
56
+ },
57
+ "300": {
58
+ "value": "#999999",
59
+ "type": "color"
60
+ },
61
+ "400": {
62
+ "value": "#8E8E8E",
63
+ "type": "color"
64
+ },
65
+ "500": {
66
+ "value": "#888888",
67
+ "type": "color"
68
+ },
69
+ "600": {
70
+ "value": "#7E7E7E",
71
+ "type": "color"
72
+ },
73
+ "700": {
74
+ "value": "#777777",
75
+ "type": "color"
76
+ },
77
+ "800": {
78
+ "value": "#6E6E6E",
79
+ "type": "color"
80
+ },
81
+ "900": {
82
+ "value": "#666666",
83
+ "type": "color"
84
+ }
85
+ },
86
+ "white": {
87
+ "50": {
88
+ "value": "#FAFAFA",
89
+ "type": "color"
90
+ },
91
+ "100": {
92
+ "value": "#F5F5F5",
93
+ "type": "color"
94
+ },
95
+ "200": {
96
+ "value": "#F0F0F0",
97
+ "type": "color"
98
+ },
99
+ "300": {
100
+ "value": "#EBEBEB",
101
+ "type": "color"
102
+ },
103
+ "400": {
104
+ "value": "#E6E6E6",
105
+ "type": "color"
106
+ },
107
+ "500": {
108
+ "value": "#E0E0E0",
109
+ "type": "color"
110
+ },
111
+ "600": {
112
+ "value": "#DBDBDB",
113
+ "type": "color"
114
+ },
115
+ "700": {
116
+ "value": "#D6D6D6",
117
+ "type": "color"
118
+ },
119
+ "800": {
120
+ "value": "#D1D1D1",
121
+ "type": "color"
122
+ },
123
+ "900": {
124
+ "value": "#CCCCCC",
125
+ "type": "color"
126
+ }
127
+ },
128
+ "blue": {
129
+ "50": {
130
+ "value": "#F6F8FD",
131
+ "type": "color"
132
+ },
133
+ "100": {
134
+ "value": "#CCD7F5",
135
+ "type": "color"
136
+ },
137
+ "200": {
138
+ "value": "#A1B6ED",
139
+ "type": "color"
140
+ },
141
+ "300": {
142
+ "value": "#7795E4",
143
+ "type": "color"
144
+ },
145
+ "400": {
146
+ "value": "#4C73DC",
147
+ "type": "color"
148
+ },
149
+ "500": {
150
+ "value": "#2855CC",
151
+ "type": "color"
152
+ },
153
+ "600": {
154
+ "value": "#2044A2",
155
+ "type": "color"
156
+ },
157
+ "700": {
158
+ "value": "#183277",
159
+ "type": "color"
160
+ },
161
+ "800": {
162
+ "value": "#0F204D",
163
+ "type": "color"
164
+ },
165
+ "900": {
166
+ "value": "#070E22",
167
+ "type": "color"
168
+ }
169
+ },
170
+ "green": {
171
+ "50": {
172
+ "value": "#F7FDF7",
173
+ "type": "color"
174
+ },
175
+ "100": {
176
+ "value": "#CEF3CE",
177
+ "type": "color"
178
+ },
179
+ "200": {
180
+ "value": "#A5E8A5",
181
+ "type": "color"
182
+ },
183
+ "300": {
184
+ "value": "#7DDE7D",
185
+ "type": "color"
186
+ },
187
+ "400": {
188
+ "value": "#54D454",
189
+ "type": "color"
190
+ },
191
+ "500": {
192
+ "value": "#31C331",
193
+ "type": "color"
194
+ },
195
+ "600": {
196
+ "value": "#279B27",
197
+ "type": "color"
198
+ },
199
+ "700": {
200
+ "value": "#1D721D",
201
+ "type": "color"
202
+ },
203
+ "800": {
204
+ "value": "#124912",
205
+ "type": "color"
206
+ },
207
+ "900": {
208
+ "value": "#08210A",
209
+ "type": "color"
210
+ }
211
+ },
212
+ "red": {
213
+ "50": {
214
+ "value": "#FDF7F7",
215
+ "type": "color"
216
+ },
217
+ "100": {
218
+ "value": "#F6DADA",
219
+ "type": "color"
220
+ },
221
+ "200": {
222
+ "value": "#EDB0B0",
223
+ "type": "color"
224
+ },
225
+ "300": {
226
+ "value": "#E48787",
227
+ "type": "color"
228
+ },
229
+ "400": {
230
+ "value": "#DA5D5D",
231
+ "type": "color"
232
+ },
233
+ "500": {
234
+ "value": "#D13434",
235
+ "type": "color"
236
+ },
237
+ "600": {
238
+ "value": "#AF2828",
239
+ "type": "color"
240
+ },
241
+ "700": {
242
+ "value": "#891F1F",
243
+ "type": "color"
244
+ },
245
+ "800": {
246
+ "value": "#641717",
247
+ "type": "color"
248
+ },
249
+ "900": {
250
+ "value": "#3E0E0E",
251
+ "type": "color"
252
+ }
253
+ },
254
+ "brand": {
255
+ "primary": {
256
+ "value": "{blue.500}",
257
+ "type": "color"
258
+ },
259
+ "secondary": {
260
+ "value": "{blue.800}",
261
+ "type": "color"
262
+ }
263
+ },
264
+ "system": {
265
+ "success": {
266
+ "value": "{green.500}",
267
+ "type": "color"
268
+ },
269
+ "danger": {
270
+ "value": "{red.500}",
271
+ "type": "color"
272
+ },
273
+ "info": {
274
+ "value": "{black.500}",
275
+ "type": "color"
276
+ }
277
+ },
278
+ "fill": {
279
+ "wrapper": {
280
+ "value": "{black.900}",
281
+ "type": "color"
282
+ },
283
+ "card": {
284
+ "value": "{black.700}",
285
+ "type": "color"
286
+ },
287
+ "info": {
288
+ "value": "{black.500}",
289
+ "type": "color"
290
+ },
291
+ "border": {
292
+ "value": "{black.300}",
293
+ "type": "color"
294
+ }
295
+ },
296
+ "text": {
297
+ "standard": {
298
+ "value": "{gray.300}",
299
+ "type": "color"
300
+ },
301
+ "sub": {
302
+ "value": "{gray.900}",
303
+ "type": "color"
304
+ }
305
+ },
306
+ "input": {
307
+ "text": {
308
+ "lable": {
309
+ "value": "{text.standard}",
310
+ "type": "color"
311
+ },
312
+ "value": {
313
+ "value": "{gray.100}",
314
+ "type": "color"
315
+ },
316
+ "placeholder": {
317
+ "value": "{gray.400}",
318
+ "type": "color"
319
+ }
320
+ },
321
+ "background": {
322
+ "standard": {
323
+ "value": "{black.100}",
324
+ "type": "color"
325
+ }
326
+ },
327
+ "border": {
328
+ "standard": {
329
+ "value": "{fill.border}",
330
+ "type": "color"
331
+ }
332
+ }
333
+ },
334
+ "button": {
335
+ "text": {
336
+ "value": "{white.50}",
337
+ "type": "color"
338
+ },
339
+ "primary": {
340
+ "standard": {
341
+ "background": {
342
+ "value": "{brand.primary}",
343
+ "type": "color"
344
+ }
345
+ }
346
+ },
347
+ "secondary": {
348
+ "standard": {
349
+ "background": {
350
+ "value": "{brand.secondary}",
351
+ "type": "color"
352
+ }
353
+ }
354
+ },
355
+ "success": {
356
+ "standard": {
357
+ "background": {
358
+ "value": "{system.success}",
359
+ "type": "color"
360
+ }
361
+ }
362
+ },
363
+ "danger": {
364
+ "standard": {
365
+ "background": {
366
+ "value": "{system.danger}",
367
+ "type": "color"
368
+ }
369
+ }
370
+ },
371
+ "info": {
372
+ "standard": {
373
+ "background": {
374
+ "value": "{system.info}",
375
+ "type": "color"
376
+ }
377
+ }
378
+ }
379
+ },
380
+ "card": {
381
+ "background": {
382
+ "value": "{fill.card}",
383
+ "type": "color"
384
+ },
385
+ "border": {
386
+ "value": "{fill.border}",
387
+ "type": "color"
388
+ }
389
+ }
390
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "MainTitle": {
3
+ "value": "Elice DigitalBaeum OTF",
4
+ "type": "fontFamilies"
5
+ }
6
+ }