@servicetitan/hammer-token 0.5.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,462 @@
1
+ export const BackgroundColor = {
2
+ value: "#ffffff",
3
+ attributes: {
4
+ appearance: {
5
+ dark: {
6
+ value: "#141414"
7
+ }
8
+ }
9
+ }
10
+ };
11
+ export const BackgroundColorStrong = {
12
+ value: "#f7f7f7",
13
+ attributes: {
14
+ appearance: {
15
+ dark: {
16
+ value: "#2d2e31"
17
+ }
18
+ }
19
+ }
20
+ };
21
+ export const BackgroundColorStronger = {
22
+ value: "#eeeeee",
23
+ attributes: {
24
+ appearance: {
25
+ dark: {
26
+ value: "#444445"
27
+ }
28
+ }
29
+ }
30
+ };
31
+ export const BackgroundColorStrongest = {
32
+ value: "#bcbcbd",
33
+ attributes: {
34
+ appearance: {
35
+ dark: {
36
+ value: "#737475"
37
+ }
38
+ }
39
+ }
40
+ };
41
+ export const BackgroundColorPrimary = {
42
+ value: "#0265dc",
43
+ attributes: {
44
+ appearance: {
45
+ dark: {
46
+ value: "#78bbfa"
47
+ }
48
+ }
49
+ }
50
+ };
51
+ export const BackgroundColorPrimarySubdued = {
52
+ value: "#e0f2ff",
53
+ attributes: {
54
+ appearance: {
55
+ dark: {
56
+ value: "#78bbfa33"
57
+ }
58
+ }
59
+ }
60
+ };
61
+ export const BackgroundColorDanger = {
62
+ value: "#e13212",
63
+ attributes: {
64
+ appearance: {
65
+ dark: {
66
+ value: "#ff745f"
67
+ }
68
+ }
69
+ }
70
+ };
71
+ export const BackgroundColorWarning = {
72
+ value: "#ffbe00",
73
+ attributes: {
74
+ appearance: {
75
+ dark: {
76
+ value: "#ffe278"
77
+ }
78
+ }
79
+ }
80
+ };
81
+ export const BackgroundColorDisabled = {
82
+ value: "#606162",
83
+ attributes: {
84
+ appearance: {
85
+ dark: {
86
+ value: "#606162"
87
+ }
88
+ }
89
+ }
90
+ };
91
+ export const BackgroundColorInverted = {
92
+ value: "#2d2e31",
93
+ attributes: {
94
+ appearance: {
95
+ dark: {
96
+ value: "#fafafa"
97
+ }
98
+ }
99
+ }
100
+ };
101
+ export const BackgroundColorInvertedStrong = {
102
+ value: "#141414",
103
+ attributes: {
104
+ appearance: {
105
+ dark: {
106
+ value: "#ffffff"
107
+ }
108
+ }
109
+ }
110
+ };
111
+ export const BorderRadiusNone = { value: "0rem" };
112
+ export const BorderRadiusRounded = { value: "0.375rem" };
113
+ export const BorderRadiusPill = { value: "500px" };
114
+ export const BorderRadiusCircular = { value: "100%" };
115
+ export const BorderWidthNone = { value: "0rem" };
116
+ export const BorderWidth = { value: "0.0625rem" };
117
+ export const BorderWidthStrong = { value: "0.125rem" };
118
+ export const BorderColor = {
119
+ value: "#949596",
120
+ attributes: {
121
+ appearance: {
122
+ dark: {
123
+ value: "#606162"
124
+ }
125
+ }
126
+ }
127
+ };
128
+ export const BorderColorSubdued = {
129
+ value: "#dfe0e1",
130
+ attributes: {
131
+ appearance: {
132
+ dark: {
133
+ value: "#444445"
134
+ }
135
+ }
136
+ }
137
+ };
138
+ export const BorderColorStrong = {
139
+ value: "#444445",
140
+ attributes: {
141
+ appearance: {
142
+ dark: {
143
+ value: "#dfe0e1"
144
+ }
145
+ }
146
+ }
147
+ };
148
+ export const BorderColorPrimary = {
149
+ value: "#0265dc",
150
+ attributes: {
151
+ appearance: {
152
+ dark: {
153
+ value: "#78bbfa"
154
+ }
155
+ }
156
+ }
157
+ };
158
+ export const BorderColorDanger = {
159
+ value: "#e13212",
160
+ attributes: {
161
+ appearance: {
162
+ dark: {
163
+ value: "#ff745f"
164
+ }
165
+ }
166
+ }
167
+ };
168
+ export const FocusRingColor = {
169
+ value: "#0265dc",
170
+ attributes: {
171
+ appearance: {
172
+ dark: {
173
+ value: "#78bbfa"
174
+ }
175
+ }
176
+ }
177
+ };
178
+ export const FocusRingColorDanger = {
179
+ value: "#e13212",
180
+ attributes: {
181
+ appearance: {
182
+ dark: {
183
+ value: "#ff745f"
184
+ }
185
+ }
186
+ }
187
+ };
188
+ export const FocusRingWidth = { value: "0.25rem" };
189
+ export const ForegroundColor = {
190
+ value: "#141414",
191
+ attributes: {
192
+ appearance: {
193
+ dark: {
194
+ value: "#ffffff"
195
+ }
196
+ }
197
+ }
198
+ };
199
+ export const ForegroundColorSubdued = {
200
+ value: "#737475",
201
+ attributes: {
202
+ appearance: {
203
+ dark: {
204
+ value: "#bcbcbd"
205
+ }
206
+ }
207
+ }
208
+ };
209
+ export const ForegroundColorPrimary = {
210
+ value: "#0265dc",
211
+ attributes: {
212
+ appearance: {
213
+ dark: {
214
+ value: "#78bbfa"
215
+ }
216
+ }
217
+ }
218
+ };
219
+ export const ForegroundColorDanger = {
220
+ value: "#e13212",
221
+ attributes: {
222
+ appearance: {
223
+ dark: {
224
+ value: "#ff745f"
225
+ }
226
+ }
227
+ }
228
+ };
229
+ export const ForegroundColorInverted = {
230
+ value: "#ffffff",
231
+ attributes: {
232
+ appearance: {
233
+ dark: {
234
+ value: "#141414"
235
+ }
236
+ }
237
+ }
238
+ };
239
+ export const ForegroundColorOnPrimary = {
240
+ value: "#ffffff",
241
+ attributes: {
242
+ appearance: {
243
+ dark: {
244
+ value: "#141414"
245
+ }
246
+ }
247
+ }
248
+ };
249
+ export const ForegroundColorOnDanger = {
250
+ value: "#ffffff",
251
+ attributes: {
252
+ appearance: {
253
+ dark: {
254
+ value: "#141414"
255
+ }
256
+ }
257
+ }
258
+ };
259
+ export const ForegroundColorOnWarning = {
260
+ value: "#141414",
261
+ attributes: {
262
+ appearance: {
263
+ dark: {
264
+ value: "#141414"
265
+ }
266
+ }
267
+ }
268
+ };
269
+ export const OverlayColorActive = {
270
+ value: "#14141429",
271
+ attributes: {
272
+ appearance: {
273
+ dark: {
274
+ value: "#ffffff29"
275
+ }
276
+ }
277
+ }
278
+ };
279
+ export const OverlayColorActivePrimary = {
280
+ value: "#0265dc4D",
281
+ attributes: {
282
+ appearance: {
283
+ dark: {
284
+ value: "#78bbfa40"
285
+ }
286
+ }
287
+ }
288
+ };
289
+ export const OverlayColorActiveDanger = {
290
+ value: "#e132124D",
291
+ attributes: {
292
+ appearance: {
293
+ dark: {
294
+ value: "#ff745f40"
295
+ }
296
+ }
297
+ }
298
+ };
299
+ export const OverlayColorActiveOn = {
300
+ value: "#14141429",
301
+ attributes: {
302
+ appearance: {
303
+ dark: {
304
+ value: "#14141429"
305
+ }
306
+ }
307
+ }
308
+ };
309
+ export const OverlayColorActiveOnPrimary = {
310
+ value: "#14141429",
311
+ attributes: {
312
+ appearance: {
313
+ dark: {
314
+ value: "#14141429"
315
+ }
316
+ }
317
+ }
318
+ };
319
+ export const OverlayColorActiveOnDanger = {
320
+ value: "#14141429",
321
+ attributes: {
322
+ appearance: {
323
+ dark: {
324
+ value: "#14141429"
325
+ }
326
+ }
327
+ }
328
+ };
329
+ export const OverlayColorHover = {
330
+ value: "#14141414",
331
+ attributes: {
332
+ appearance: {
333
+ dark: {
334
+ value: "#ffffff14"
335
+ }
336
+ }
337
+ }
338
+ };
339
+ export const OverlayColorHoverPrimary = {
340
+ value: "#0265dc1A",
341
+ attributes: {
342
+ appearance: {
343
+ dark: {
344
+ value: "#78bbfa1A"
345
+ }
346
+ }
347
+ }
348
+ };
349
+ export const OverlayColorHoverDanger = {
350
+ value: "#e132121A",
351
+ attributes: {
352
+ appearance: {
353
+ dark: {
354
+ value: "#ff745f1A"
355
+ }
356
+ }
357
+ }
358
+ };
359
+ export const OverlayColorHoverOn = {
360
+ value: "#14141414",
361
+ attributes: {
362
+ appearance: {
363
+ dark: {
364
+ value: "#ffffff14"
365
+ }
366
+ }
367
+ }
368
+ };
369
+ export const OverlayColorHoverOnPrimary = {
370
+ value: "#ffffff29",
371
+ attributes: {
372
+ appearance: {
373
+ dark: {
374
+ value: "#ffffff29"
375
+ }
376
+ }
377
+ }
378
+ };
379
+ export const OverlayColorHoverOnDanger = {
380
+ value: "#ffffff29",
381
+ attributes: {
382
+ appearance: {
383
+ dark: {
384
+ value: "#ffffff29"
385
+ }
386
+ }
387
+ }
388
+ };
389
+ export const ShadowColor = {
390
+ value: "#14141414",
391
+ attributes: {
392
+ appearance: {
393
+ dark: {
394
+ value: "#ffffff14"
395
+ }
396
+ }
397
+ }
398
+ };
399
+ export const ShadowSizeFlat = { value: "0rem 0rem 0rem" };
400
+ export const ShadowSizeFloat = { value: "0rem 0.125rem 0.5rem" };
401
+ export const ShadowSizeOverlay = { value: "0rem 0.5rem 1.5rem" };
402
+ export const StatusColorInfo = {
403
+ value: "#0265dc",
404
+ attributes: {
405
+ appearance: {
406
+ dark: {
407
+ value: "#78bbfa"
408
+ }
409
+ }
410
+ }
411
+ };
412
+ export const StatusColorDanger = {
413
+ value: "#e13212",
414
+ attributes: {
415
+ appearance: {
416
+ dark: {
417
+ value: "#ff745f"
418
+ }
419
+ }
420
+ }
421
+ };
422
+ export const StatusColorSuccess = {
423
+ value: "#007a4d",
424
+ attributes: {
425
+ appearance: {
426
+ dark: {
427
+ value: "#49cc93"
428
+ }
429
+ }
430
+ }
431
+ };
432
+ export const StatusColorWarning = {
433
+ value: "#ffbe00",
434
+ attributes: {
435
+ appearance: {
436
+ dark: {
437
+ value: "#ffe278"
438
+ }
439
+ }
440
+ }
441
+ };
442
+ export const TypographyParagraphSizeXsmall = { value: "0.75rem" };
443
+ export const TypographyParagraphSizeSmall = { value: "0.875rem" };
444
+ export const TypographyParagraphSize = { value: "1rem" };
445
+ export const TypographyParagraphSizeLarge = { value: "1.25rem" };
446
+ export const TypographyParagraphSizeXlarge = { value: "1.5rem" };
447
+ export const TypographyParagraphFontWeight = { value: "400" };
448
+ export const TypographyParagraphFontFamily = { value: "'Nunito Sans', sans-serif" };
449
+ export const TypographyHeadingSizeXsmall = { value: "0.875rem" };
450
+ export const TypographyHeadingSizeSmall = { value: "1rem" };
451
+ export const TypographyHeadingSize = { value: "1.25rem" };
452
+ export const TypographyHeadingSizeLarge = { value: "1.5rem" };
453
+ export const TypographyHeadingSizeXlarge = { value: "2rem" };
454
+ export const TypographyHeadingFontWeight = { value: "700" };
455
+ export const TypographyHeadingFontFamily = { value: "'Sofia Pro', SofiaPro, sans-serif" };
456
+ export const TypographyLabelSizeXsmall = { value: "0.625rem" };
457
+ export const TypographyLabelSizeSmall = { value: "0.75rem" };
458
+ export const TypographyLabelSize = { value: "0.875rem" };
459
+ export const TypographyLabelSizeLarge = { value: "1rem" };
460
+ export const TypographyLabelSizeXlarge = { value: "1.25rem" };
461
+ export const TypographyLabelFontWeight = { value: "600" };
462
+ export const TypographyLabelFontFamily = { value: "'Nunito Sans', sans-serif" };
@@ -0,0 +1,75 @@
1
+ $background-color: var(--background-color, #ffffff);
2
+ $background-color-strong: var(--background-color-strong, #f7f7f7);
3
+ $background-color-stronger: var(--background-color-stronger, #eeeeee);
4
+ $background-color-strongest: var(--background-color-strongest, #bcbcbd);
5
+ $background-color-primary: var(--background-color-primary, #0265dc);
6
+ $background-color-primary-subdued: var(--background-color-primary-subdued, #e0f2ff);
7
+ $background-color-danger: var(--background-color-danger, #e13212);
8
+ $background-color-warning: var(--background-color-warning, #ffbe00);
9
+ $background-color-disabled: var(--background-color-disabled, #606162);
10
+ $background-color-inverted: var(--background-color-inverted, #2d2e31);
11
+ $background-color-inverted-strong: var(--background-color-inverted-strong, #141414);
12
+ $border-radius-none: 0rem;
13
+ $border-radius-rounded: 0.375rem;
14
+ $border-radius-pill: 500px;
15
+ $border-radius-circular: 100%;
16
+ $border-width-none: 0rem;
17
+ $border-width: 0.0625rem;
18
+ $border-width-strong: 0.125rem;
19
+ $border-color: var(--border-color, #949596);
20
+ $border-color-subdued: var(--border-color-subdued, #dfe0e1);
21
+ $border-color-strong: var(--border-color-strong, #444445);
22
+ $border-color-primary: var(--border-color-primary, #0265dc);
23
+ $border-color-danger: var(--border-color-danger, #e13212);
24
+ $focus-ring-color: var(--focus-ring-color, #0265dc);
25
+ $focus-ring-color-danger: var(--focus-ring-color-danger, #e13212);
26
+ $focus-ring-width: 0.25rem;
27
+ $foreground-color: var(--foreground-color, #141414);
28
+ $foreground-color-subdued: var(--foreground-color-subdued, #737475);
29
+ $foreground-color-primary: var(--foreground-color-primary, #0265dc);
30
+ $foreground-color-danger: var(--foreground-color-danger, #e13212);
31
+ $foreground-color-inverted: var(--foreground-color-inverted, #ffffff);
32
+ $foreground-color-on-primary: var(--foreground-color-on-primary, #ffffff);
33
+ $foreground-color-on-danger: var(--foreground-color-on-danger, #ffffff);
34
+ $foreground-color-on-warning: var(--foreground-color-on-warning, #141414);
35
+ $overlay-color-active: var(--overlay-color-active, #14141429);
36
+ $overlay-color-active-primary: var(--overlay-color-active-primary, #0265dc4D);
37
+ $overlay-color-active-danger: var(--overlay-color-active-danger, #e132124D);
38
+ $overlay-color-active-on: var(--overlay-color-active-on, #14141429);
39
+ $overlay-color-active-on-primary: var(--overlay-color-active-on-primary, #14141429);
40
+ $overlay-color-active-on-danger: var(--overlay-color-active-on-danger, #14141429);
41
+ $overlay-color-hover: var(--overlay-color-hover, #14141414);
42
+ $overlay-color-hover-primary: var(--overlay-color-hover-primary, #0265dc1A);
43
+ $overlay-color-hover-danger: var(--overlay-color-hover-danger, #e132121A);
44
+ $overlay-color-hover-on: var(--overlay-color-hover-on, #14141414);
45
+ $overlay-color-hover-on-primary: var(--overlay-color-hover-on-primary, #ffffff29);
46
+ $overlay-color-hover-on-danger: var(--overlay-color-hover-on-danger, #ffffff29);
47
+ $shadow-color: var(--shadow-color, #14141414);
48
+ $shadow-size-flat: 0rem 0rem 0rem;
49
+ $shadow-size-float: 0rem 0.125rem 0.5rem;
50
+ $shadow-size-overlay: 0rem 0.5rem 1.5rem;
51
+ $status-color-info: var(--status-color-info, #0265dc);
52
+ $status-color-danger: var(--status-color-danger, #e13212);
53
+ $status-color-success: var(--status-color-success, #007a4d);
54
+ $status-color-warning: var(--status-color-warning, #ffbe00);
55
+ $typography-paragraph-size-xsmall: 0.75rem;
56
+ $typography-paragraph-size-small: 0.875rem;
57
+ $typography-paragraph-size: 1rem;
58
+ $typography-paragraph-size-large: 1.25rem;
59
+ $typography-paragraph-size-xlarge: 1.5rem;
60
+ $typography-paragraph-font-weight: 400;
61
+ $typography-paragraph-font-family: 'Nunito Sans', sans-serif;
62
+ $typography-heading-size-xsmall: 0.875rem;
63
+ $typography-heading-size-small: 1rem;
64
+ $typography-heading-size: 1.25rem;
65
+ $typography-heading-size-large: 1.5rem;
66
+ $typography-heading-size-xlarge: 2rem;
67
+ $typography-heading-font-weight: 700;
68
+ $typography-heading-font-family: 'Sofia Pro', SofiaPro, sans-serif;
69
+ $typography-label-size-xsmall: 0.625rem;
70
+ $typography-label-size-small: 0.75rem;
71
+ $typography-label-size: 0.875rem;
72
+ $typography-label-size-large: 1rem;
73
+ $typography-label-size-xlarge: 1.25rem;
74
+ $typography-label-font-weight: 600;
75
+ $typography-label-font-family: 'Nunito Sans', sans-serif;
@@ -0,0 +1,4 @@
1
+ import Token from '../../type/types';
2
+ declare const core: Token;
3
+ export { Token }
4
+ export { core }
@@ -0,0 +1,3 @@
1
+ import * as core from './core';
2
+ export * as Token from '../../type/types';
3
+ export { core };
package/config.js ADDED
@@ -0,0 +1,166 @@
1
+ const StyleDictionary = require("style-dictionary");
2
+ const fs = require("fs-extra");
3
+
4
+ StyleDictionary.registerFormat({
5
+ name: `custom/SCSSVariable`,
6
+ formatter: function ({ dictionary }) {
7
+ return dictionary.allTokens
8
+ .map((token) => {
9
+ let value = token.value;
10
+ let name = `${token.name.replace("-default", "")}`;
11
+ if (token.attributes.appearance) {
12
+ return `$${name}: var(--${name}, ${value});`;
13
+ }
14
+ return `$${name}: ${value};`;
15
+ })
16
+ .join(`\n`);
17
+ },
18
+ });
19
+
20
+ StyleDictionary.registerFormat({
21
+ name: `custom/es6`,
22
+ formatter: function ({ dictionary }) {
23
+ const light = dictionary.allTokens
24
+ .filter((token) => !!token.attributes.appearance)
25
+ .map((token) => {
26
+ let value = JSON.stringify(token.value);
27
+ let name = token.name.replace("Default", "");
28
+ return `\t${name}: ${value}`;
29
+ })
30
+ .join(`,\n`);
31
+ const dark = dictionary.allTokens
32
+ .filter((token) => !!token.attributes.appearance)
33
+ .map((token) => {
34
+ let value = JSON.stringify(token.attributes.appearance.dark.value);
35
+ let name = token.name.replace("Default", "");
36
+ return `\t${name}: ${value}`;
37
+ })
38
+ .join(`,\n`);
39
+ const common = dictionary.allTokens
40
+ .filter((token) => !token.attributes.appearance)
41
+ .map((token) => {
42
+ let value = JSON.stringify(token.value);
43
+ let name = token.name.replace("Default", "");
44
+ return `\t${name}: ${value}`;
45
+ })
46
+ .join(`,\n`);
47
+ return `export const common = {\n${common}\n}\nexport const light = {\n${light}\n}\nexport const dark = {\n${dark}\n}\n`;
48
+ },
49
+ });
50
+
51
+ StyleDictionary.registerFormat({
52
+ name: `custom/es6Variable`,
53
+ formatter: function ({ dictionary }) {
54
+ return dictionary.allTokens
55
+ .map((token) => {
56
+ let value = token.value;
57
+ let name = `${token.name.replace("Default", "")}`;
58
+ if (token.attributes.appearance) {
59
+ return `export const ${name} = {
60
+ value: "${value}",
61
+ attributes: {
62
+ appearance: {
63
+ dark: {
64
+ value: "${token.attributes.appearance.dark.value}"
65
+ }
66
+ }
67
+ }
68
+ };`;
69
+ }
70
+ return `export const ${name} = { value: "${value}" };`;
71
+ })
72
+ .join(`\n`);
73
+ },
74
+ });
75
+
76
+ const getDirectories = (source) =>
77
+ fs
78
+ .readdirSync(source, { withFileTypes: true })
79
+ .filter((dirent) => dirent.isDirectory())
80
+ .map((dirent) => dirent.name);
81
+
82
+ const themes = getDirectories(`src/theme`);
83
+
84
+ themes.forEach((theme) => {
85
+ StyleDictionary.extend({
86
+ source: [`src/theme/${theme}/*.json`],
87
+ include: ["src/global/primitive/*.json"],
88
+ platforms: {
89
+ scss: {
90
+ transformGroup: "scss",
91
+ buildPath: `build/web/${theme}/`,
92
+ files: [
93
+ {
94
+ destination: "primitive.scss",
95
+ format: "custom/SCSSVariable",
96
+ filter: function (token) {
97
+ return token.filePath.startsWith("src/global/primitive");
98
+ },
99
+ },
100
+ {
101
+ destination: "semantic.scss",
102
+ format: "custom/SCSSVariable",
103
+ filter: function (token) {
104
+ return token.filePath.startsWith(`src/theme/${theme}`);
105
+ },
106
+ },
107
+ ],
108
+ },
109
+ tsLight: {
110
+ transformGroup: "js",
111
+ buildPath: `build/web/${theme}/`,
112
+ files: [
113
+ {
114
+ format: "custom/es6Variable",
115
+ destination: "primitive.js",
116
+ filter: function (token) {
117
+ return token.filePath.startsWith("src/global/primitive");
118
+ },
119
+ },
120
+ {
121
+ format: "custom/es6",
122
+ destination: "raw.js",
123
+ filter: function (token) {
124
+ return token.filePath.startsWith(`src/theme/${theme}`);
125
+ },
126
+ },
127
+ {
128
+ format: "custom/es6Variable",
129
+ destination: "semantic.js",
130
+ filter: function (token) {
131
+ return token.filePath.startsWith(`src/theme/${theme}`);
132
+ },
133
+ },
134
+ ],
135
+ },
136
+ },
137
+ }).buildAllPlatforms();
138
+ });
139
+
140
+ console.log("\n==============================================");
141
+ console.log("Building index files...\n");
142
+ const mainJS = fs.createWriteStream(`build/web/index.js`);
143
+
144
+ const mainType = fs.createWriteStream(`build/web/index.d.ts`);
145
+ mainType.write(`import Token from '../../type/types';\n`);
146
+
147
+ themes.forEach((theme) => {
148
+ const indexJS = fs.createWriteStream(`build/web/${theme}/index.js`);
149
+ indexJS.write(`import * as semantic from './semantic';\n`);
150
+ indexJS.write(`import * as primitive from './primitive';\n`);
151
+ indexJS.write(`const name = '${theme}';\n`);
152
+ indexJS.write(`export { primitive, semantic, name };\n`);
153
+ indexJS.end();
154
+ mainType.write(`declare const ${theme}: Token;\n`);
155
+ mainJS.write(`import * as ${theme} from './${theme}';\n`);
156
+ });
157
+
158
+ mainType.write(`export { Token }\n`);
159
+ mainType.write(`export { ${themes.join(", ")} }\n`);
160
+ mainType.end();
161
+
162
+ mainJS.write(`export * as Token from '../../type/types';\n`);
163
+ mainJS.write(`export { ${themes.join(", ")} };\n`);
164
+ mainJS.end();
165
+ console.log(`Index built!`);
166
+ console.log("==============================================\n");