@digdir/designsystemet 1.0.0-next.45 → 1.0.0-next.46
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/dist/bin/config.d.ts +156 -0
- package/dist/bin/config.d.ts.map +1 -0
- package/dist/bin/designsystemet.js +124 -20
- package/dist/bin/options.d.ts +16 -0
- package/dist/bin/options.d.ts.map +1 -0
- package/dist/config.schema.json +78 -0
- package/dist/src/build-scripts/createJsonSchema.d.ts +2 -0
- package/dist/src/build-scripts/createJsonSchema.d.ts.map +1 -0
- package/dist/src/build-scripts/createJsonSchema.js +15 -0
- package/dist/src/tokens/build/configs.d.ts.map +1 -1
- package/dist/src/tokens/build/configs.js +23 -12
- package/dist/src/tokens/build/formats/css.d.ts +4 -2
- package/dist/src/tokens/build/formats/css.d.ts.map +1 -1
- package/dist/src/tokens/build/formats/css.js +20 -12
- package/dist/src/tokens/build/formats/js-tokens.d.ts.map +1 -1
- package/dist/src/tokens/build/formats/js-tokens.js +7 -4
- package/dist/src/tokens/build/transformers.d.ts +0 -1
- package/dist/src/tokens/build/transformers.d.ts.map +1 -1
- package/dist/src/tokens/build/transformers.js +1 -13
- package/dist/src/tokens/create.d.ts +15 -11
- package/dist/src/tokens/create.d.ts.map +1 -1
- package/dist/src/tokens/create.js +14 -5
- package/dist/src/tokens/design-tokens/default/Figma/components.json +3 -3
- package/dist/src/tokens/design-tokens/default/primitives/globals.json +1 -1
- package/dist/src/tokens/design-tokens/default/primitives/modes/size/global.json +21 -21
- package/dist/src/tokens/design-tokens/default/semantic/style.json +109 -27
- package/dist/src/tokens/design-tokens/template/$themes.json +63 -63
- package/dist/src/tokens/design-tokens/template/semantic/color-base-file.json +1 -1
- package/dist/src/tokens/design-tokens/template/themes/theme-base-file.json +8 -8
- package/dist/src/tokens/index.d.ts +2 -1
- package/dist/src/tokens/index.d.ts.map +1 -1
- package/dist/src/tokens/index.js +2 -2
- package/dist/src/tokens/types.d.ts +2 -8
- package/dist/src/tokens/types.d.ts.map +1 -1
- package/dist/src/tokens/utils.d.ts +1 -0
- package/dist/src/tokens/utils.d.ts.map +1 -1
- package/dist/src/tokens/utils.js +2 -0
- package/package.json +17 -7
- package/dist/src/init/createTokensPackage.d.ts +0 -5
- package/dist/src/init/createTokensPackage.d.ts.map +0 -1
- package/dist/src/init/createTokensPackage.js +0 -273
- package/dist/src/init/generateMetadataJson.d.ts +0 -6
- package/dist/src/init/generateMetadataJson.d.ts.map +0 -1
- package/dist/src/init/generateMetadataJson.js +0 -24
- package/dist/src/init/generateThemesJson.d.ts +0 -3
- package/dist/src/init/generateThemesJson.d.ts.map +0 -1
- package/dist/src/init/generateThemesJson.js +0 -103
- package/dist/src/init/index.d.ts +0 -3
- package/dist/src/init/index.d.ts.map +0 -1
- package/dist/src/init/index.js +0 -10
- package/dist/src/init/nextStepsMarkdown.d.ts +0 -3
- package/dist/src/init/nextStepsMarkdown.d.ts.map +0 -1
- package/dist/src/init/nextStepsMarkdown.js +0 -92
- package/dist/src/init/template/default-files/README.md +0 -10
- package/dist/src/init/template/default-files/design-tokens/Figma/components.json +0 -22
- package/dist/src/init/template/default-files/design-tokens/README.md +0 -3
- package/dist/src/init/template/default-files/design-tokens/primitives/globals.json +0 -161
- package/dist/src/init/template/default-files/design-tokens/primitives/size/default.json +0 -175
- package/dist/src/init/template/default-files/design-tokens/semantic/color.json +0 -572
- package/dist/src/init/template/default-files/design-tokens/semantic/style.json +0 -564
- package/dist/src/init/template/default-files/design-tokens/themes/theme.json +0 -334
- package/dist/src/init/template/template-files/design-tokens/primitives/modes/colors/contrast/global.json +0 -376
- package/dist/src/init/template/template-files/design-tokens/primitives/modes/colors/contrast/theme-template.json +0 -314
- package/dist/src/init/template/template-files/design-tokens/primitives/modes/colors/dark/global.json +0 -376
- package/dist/src/init/template/template-files/design-tokens/primitives/modes/colors/dark/theme-template.json +0 -314
- package/dist/src/init/template/template-files/design-tokens/primitives/modes/colors/light/global.json +0 -376
- package/dist/src/init/template/template-files/design-tokens/primitives/modes/colors/light/theme-template.json +0 -314
- package/dist/src/init/template/template-files/design-tokens/primitives/modes/typography/primary/theme-template.json +0 -30
- package/dist/src/init/template/template-files/design-tokens/primitives/modes/typography/secondary/theme-template.json +0 -30
- package/dist/src/init/template/template-files/design-tokens/themes/theme-template.json +0 -334
- package/dist/src/init/template/template-files/package.json +0 -24
- package/dist/src/init/utils.d.ts +0 -4
- package/dist/src/init/utils.d.ts.map +0 -1
- package/dist/src/init/utils.js +0 -15
- package/dist/src/tokens/build/utils/noCase.d.ts +0 -11
- package/dist/src/tokens/build/utils/noCase.d.ts.map +0 -1
- package/dist/src/tokens/build/utils/noCase.js +0 -24
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare function mapPathToOptionName(path: (string | number)[]): string | undefined;
|
|
3
|
+
export declare const colorRegex: RegExp;
|
|
4
|
+
/**
|
|
5
|
+
* This defines the structure of the JSON config file
|
|
6
|
+
*/
|
|
7
|
+
export declare const configFileSchema: z.ZodObject<{
|
|
8
|
+
outDir: z.ZodOptional<z.ZodString>;
|
|
9
|
+
themes: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
10
|
+
colors: z.ZodObject<{
|
|
11
|
+
main: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodString, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`, string>>;
|
|
12
|
+
support: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodString, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`, string>>;
|
|
13
|
+
neutral: z.ZodEffects<z.ZodString, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`, string>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
main: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
16
|
+
neutral: `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`;
|
|
17
|
+
support: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
18
|
+
}, {
|
|
19
|
+
main: Record<string, string>;
|
|
20
|
+
neutral: string;
|
|
21
|
+
support: Record<string, string>;
|
|
22
|
+
}>;
|
|
23
|
+
typography: z.ZodObject<{
|
|
24
|
+
fontFamily: z.ZodString;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
fontFamily: string;
|
|
27
|
+
}, {
|
|
28
|
+
fontFamily: string;
|
|
29
|
+
}>;
|
|
30
|
+
borderRadius: z.ZodNumber;
|
|
31
|
+
}, "strip", z.ZodTypeAny, {
|
|
32
|
+
colors: {
|
|
33
|
+
main: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
34
|
+
neutral: `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`;
|
|
35
|
+
support: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
36
|
+
};
|
|
37
|
+
typography: {
|
|
38
|
+
fontFamily: string;
|
|
39
|
+
};
|
|
40
|
+
borderRadius: number;
|
|
41
|
+
}, {
|
|
42
|
+
colors: {
|
|
43
|
+
main: Record<string, string>;
|
|
44
|
+
neutral: string;
|
|
45
|
+
support: Record<string, string>;
|
|
46
|
+
};
|
|
47
|
+
typography: {
|
|
48
|
+
fontFamily: string;
|
|
49
|
+
};
|
|
50
|
+
borderRadius: number;
|
|
51
|
+
}>>;
|
|
52
|
+
}, "strip", z.ZodTypeAny, {
|
|
53
|
+
themes: Record<string, {
|
|
54
|
+
colors: {
|
|
55
|
+
main: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
56
|
+
neutral: `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`;
|
|
57
|
+
support: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
58
|
+
};
|
|
59
|
+
typography: {
|
|
60
|
+
fontFamily: string;
|
|
61
|
+
};
|
|
62
|
+
borderRadius: number;
|
|
63
|
+
}>;
|
|
64
|
+
outDir?: string | undefined;
|
|
65
|
+
}, {
|
|
66
|
+
themes: Record<string, {
|
|
67
|
+
colors: {
|
|
68
|
+
main: Record<string, string>;
|
|
69
|
+
neutral: string;
|
|
70
|
+
support: Record<string, string>;
|
|
71
|
+
};
|
|
72
|
+
typography: {
|
|
73
|
+
fontFamily: string;
|
|
74
|
+
};
|
|
75
|
+
borderRadius: number;
|
|
76
|
+
}>;
|
|
77
|
+
outDir?: string | undefined;
|
|
78
|
+
}>;
|
|
79
|
+
/**
|
|
80
|
+
* This defines the structure of the final configuration after combining the config file,
|
|
81
|
+
* command-line options and default values.
|
|
82
|
+
*/
|
|
83
|
+
export declare const combinedConfigSchema: z.ZodObject<{
|
|
84
|
+
outDir: z.ZodString;
|
|
85
|
+
themes: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
86
|
+
colors: z.ZodObject<{
|
|
87
|
+
main: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodString, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`, string>>;
|
|
88
|
+
support: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodString, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`, string>>;
|
|
89
|
+
neutral: z.ZodEffects<z.ZodString, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`, string>;
|
|
90
|
+
}, "strip", z.ZodTypeAny, {
|
|
91
|
+
main: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
92
|
+
neutral: `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`;
|
|
93
|
+
support: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
94
|
+
}, {
|
|
95
|
+
main: Record<string, string>;
|
|
96
|
+
neutral: string;
|
|
97
|
+
support: Record<string, string>;
|
|
98
|
+
}>;
|
|
99
|
+
typography: z.ZodObject<{
|
|
100
|
+
fontFamily: z.ZodString;
|
|
101
|
+
}, "strip", z.ZodTypeAny, {
|
|
102
|
+
fontFamily: string;
|
|
103
|
+
}, {
|
|
104
|
+
fontFamily: string;
|
|
105
|
+
}>;
|
|
106
|
+
borderRadius: z.ZodNumber;
|
|
107
|
+
}, "strip", z.ZodTypeAny, {
|
|
108
|
+
colors: {
|
|
109
|
+
main: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
110
|
+
neutral: `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`;
|
|
111
|
+
support: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
112
|
+
};
|
|
113
|
+
typography: {
|
|
114
|
+
fontFamily: string;
|
|
115
|
+
};
|
|
116
|
+
borderRadius: number;
|
|
117
|
+
}, {
|
|
118
|
+
colors: {
|
|
119
|
+
main: Record<string, string>;
|
|
120
|
+
neutral: string;
|
|
121
|
+
support: Record<string, string>;
|
|
122
|
+
};
|
|
123
|
+
typography: {
|
|
124
|
+
fontFamily: string;
|
|
125
|
+
};
|
|
126
|
+
borderRadius: number;
|
|
127
|
+
}>>;
|
|
128
|
+
}, "strip", z.ZodTypeAny, {
|
|
129
|
+
themes: Record<string, {
|
|
130
|
+
colors: {
|
|
131
|
+
main: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
132
|
+
neutral: `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`;
|
|
133
|
+
support: Record<string, `#${string}` | `rgb(${number} ${number} ${number})` | `hsl(${number}deg ${number}% ${number}%)` | `hsv(${number}deg ${number}% ${number}%)` | `hsluv(${number} ${number} ${number})` | `lab(${number}% ${number} ${number})` | `lch(${number}% ${number} ${number}deg)` | `oklab(${number}% ${number} ${number})` | `oklch(${number}% ${number} ${number}deg)` | `jab(${number}% ${number} ${number})` | `jch(${number}% ${number} ${number}deg)`>;
|
|
134
|
+
};
|
|
135
|
+
typography: {
|
|
136
|
+
fontFamily: string;
|
|
137
|
+
};
|
|
138
|
+
borderRadius: number;
|
|
139
|
+
}>;
|
|
140
|
+
outDir: string;
|
|
141
|
+
}, {
|
|
142
|
+
themes: Record<string, {
|
|
143
|
+
colors: {
|
|
144
|
+
main: Record<string, string>;
|
|
145
|
+
neutral: string;
|
|
146
|
+
support: Record<string, string>;
|
|
147
|
+
};
|
|
148
|
+
typography: {
|
|
149
|
+
fontFamily: string;
|
|
150
|
+
};
|
|
151
|
+
borderRadius: number;
|
|
152
|
+
}>;
|
|
153
|
+
outDir: string;
|
|
154
|
+
}>;
|
|
155
|
+
export type CombinedConfigSchema = z.infer<typeof combinedConfigSchema>;
|
|
156
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../bin/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,sBAQ5D;AAUD,eAAO,MAAM,UAAU,QAA2C,CAAC;AA6BnE;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA8B,CAAC;AAChE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
2
4
|
import { Argument, createCommand, program } from "@commander-js/extra-typings";
|
|
3
5
|
import chalk from "chalk";
|
|
6
|
+
import * as R from "ramda";
|
|
7
|
+
import { fromError } from "zod-validation-error";
|
|
4
8
|
import { convertToHex } from "../src/colors/index.js";
|
|
5
9
|
import migrations from "../src/migrations/index.js";
|
|
6
10
|
import { buildTokens } from "../src/tokens/build.js";
|
|
7
|
-
import {
|
|
11
|
+
import { cliOptions, createTokens } from "../src/tokens/create.js";
|
|
8
12
|
import { writeTokens } from "../src/tokens/write.js";
|
|
13
|
+
import { combinedConfigSchema, configFileSchema, mapPathToOptionName } from "./config.js";
|
|
14
|
+
import { getDefaultOrExplicitOption, getExplicitOptionOnly } from "./options.js";
|
|
9
15
|
program.name("designsystemet").description("CLI for working with Designsystemet").showHelpAfterError();
|
|
10
16
|
function makeTokenCommands() {
|
|
11
17
|
const tokenCmd = createCommand("tokens");
|
|
12
18
|
const DEFAULT_TOKENS_DIR = "./design-tokens";
|
|
13
19
|
const DEFAULT_BUILD_DIR = "./design-tokens-build";
|
|
20
|
+
const DEFAULT_FONT = "Inter";
|
|
21
|
+
const DEFAULT_THEME_NAME = "theme";
|
|
22
|
+
const DEFAULT_CONFIG_FILE = "designsystemet.config.json";
|
|
14
23
|
tokenCmd.command("build").description("Build Designsystemet tokens").option("-t, --tokens <string>", `Path to ${chalk.blue("design-tokens")}`, DEFAULT_TOKENS_DIR).option("-o, --out-dir <string>", `Output directory for built ${chalk.blue("design-tokens")}`, DEFAULT_BUILD_DIR).option("--dry [boolean]", `Dry run for built ${chalk.blue("design-tokens")}`, false).option("-p, --preview", "Generate preview token.ts files", false).option("--verbose", "Enable verbose output", false).action((opts) => {
|
|
15
24
|
const { preview, verbose } = opts;
|
|
16
25
|
const tokens = typeof opts.tokens === "string" ? opts.tokens : DEFAULT_TOKENS_DIR;
|
|
@@ -22,29 +31,86 @@ function makeTokenCommands() {
|
|
|
22
31
|
}
|
|
23
32
|
return buildTokens({ tokens, outDir, preview, verbose, dry });
|
|
24
33
|
});
|
|
25
|
-
tokenCmd.command("create").description("Create Designsystemet tokens").
|
|
26
|
-
|
|
34
|
+
tokenCmd.command("create").description("Create Designsystemet tokens").option(`-m, --${cliOptions.theme.colors.main} <name:hex...>`, `Main colors`, parseColorValues).option(`-s, --${cliOptions.theme.colors.support} <name:hex...>`, `Support colors`, parseColorValues).option(`-n, --${cliOptions.theme.colors.neutral} <hex>`, `Neutral hex color`, convertToHex).option(
|
|
35
|
+
`-o, --${cliOptions.outDir} <string>`,
|
|
36
|
+
`Output directory for created ${chalk.blue("design-tokens")}`,
|
|
37
|
+
DEFAULT_TOKENS_DIR
|
|
38
|
+
).option("--dry [boolean]", `Dry run for created ${chalk.blue("design-tokens")}`, false).option(`-f, --${cliOptions.theme.typography.fontFamily} <string>`, `Font family`, DEFAULT_FONT).option(
|
|
39
|
+
`-b, --${cliOptions.theme.borderRadius} <number>`,
|
|
40
|
+
`Unitless base border-radius in px`,
|
|
41
|
+
(radiusAsString) => Number(radiusAsString),
|
|
42
|
+
4
|
|
43
|
+
).option("--theme <string>", "Theme name (ignored when using JSON config file)", DEFAULT_THEME_NAME).option(
|
|
44
|
+
"--json <string>",
|
|
45
|
+
`Path to JSON config file (default: "${DEFAULT_CONFIG_FILE}")`,
|
|
46
|
+
(value) => parseJsonConfig(value, { allowFileNotFound: false })
|
|
47
|
+
).action(async (opts, cmd) => {
|
|
27
48
|
const dry = Boolean(opts.dry);
|
|
28
|
-
const borderRadius = Number(opts.borderRadius);
|
|
29
|
-
console.log(`Creating tokens with options ${chalk.green(JSON.stringify(opts, null, 2))}`);
|
|
30
|
-
const themeOptions = {
|
|
31
|
-
name: theme,
|
|
32
|
-
colors: {
|
|
33
|
-
main: opts.mainColors,
|
|
34
|
-
support: opts.supportColors,
|
|
35
|
-
neutral: opts.neutralColor
|
|
36
|
-
},
|
|
37
|
-
typography: {
|
|
38
|
-
fontFamily
|
|
39
|
-
},
|
|
40
|
-
borderRadius
|
|
41
|
-
};
|
|
42
49
|
if (dry) {
|
|
43
50
|
console.log(`Performing dry run, no files will be written`);
|
|
44
51
|
}
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
52
|
+
const configFile = await (opts.json ? opts.json : parseJsonConfig(DEFAULT_CONFIG_FILE, { allowFileNotFound: true }));
|
|
53
|
+
const propsFromJson = configFile?.config;
|
|
54
|
+
if (propsFromJson) {
|
|
55
|
+
const themeColors = Object.values(propsFromJson?.themes ?? {}).map(
|
|
56
|
+
(x) => /* @__PURE__ */ new Set([...R.keys(x.colors.main), ...R.keys(x.colors.support)])
|
|
57
|
+
);
|
|
58
|
+
if (!R.all(R.equals(R.__, themeColors[0]), themeColors)) {
|
|
59
|
+
console.error(
|
|
60
|
+
chalk.redBright(
|
|
61
|
+
`In JSON config ${configFile.path}, all themes must have the same custom color names, but we found:`
|
|
62
|
+
)
|
|
63
|
+
);
|
|
64
|
+
const themeNames = R.keys(propsFromJson.themes ?? {});
|
|
65
|
+
themeColors.forEach((colors, index) => {
|
|
66
|
+
const colorNames = Array.from(colors);
|
|
67
|
+
console.log(` - ${themeNames[index]}: ${colorNames.join(", ")}`);
|
|
68
|
+
});
|
|
69
|
+
console.log();
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const noUndefined = R.reject(R.isNil);
|
|
74
|
+
const getThemeOptions = (optionGetter) => noUndefined({
|
|
75
|
+
colors: noUndefined({
|
|
76
|
+
main: optionGetter(cmd, "mainColors"),
|
|
77
|
+
support: optionGetter(cmd, "supportColors"),
|
|
78
|
+
neutral: optionGetter(cmd, "neutralColor")
|
|
79
|
+
}),
|
|
80
|
+
typography: noUndefined({
|
|
81
|
+
fontFamily: optionGetter(cmd, "fontFamily")
|
|
82
|
+
}),
|
|
83
|
+
borderRadius: optionGetter(cmd, "borderRadius")
|
|
84
|
+
});
|
|
85
|
+
const unvalidatedConfig = noUndefined({
|
|
86
|
+
outDir: propsFromJson?.outDir ?? getDefaultOrExplicitOption(cmd, "outDir"),
|
|
87
|
+
themes: propsFromJson?.themes ? (
|
|
88
|
+
// For each theme specified in the JSON config, we override the config values
|
|
89
|
+
// with the explicitly set options from the CLI.
|
|
90
|
+
R.map((theme) => R.mergeDeepRight(theme, getThemeOptions(getExplicitOptionOnly)), propsFromJson.themes)
|
|
91
|
+
) : (
|
|
92
|
+
// If there are no themes specified in the JSON config, we use both explicit
|
|
93
|
+
// and default theme options from the CLI.
|
|
94
|
+
{
|
|
95
|
+
[opts.theme]: getThemeOptions(getDefaultOrExplicitOption)
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
});
|
|
99
|
+
let config;
|
|
100
|
+
try {
|
|
101
|
+
config = combinedConfigSchema.parse(unvalidatedConfig);
|
|
102
|
+
} catch (err) {
|
|
103
|
+
console.error(chalk.redBright("Invalid config after combining JSON file and CLI options"));
|
|
104
|
+
const validationError = makeFriendlyError(err);
|
|
105
|
+
console.error(validationError.toString());
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
console.log(`Creating tokens with configuration ${chalk.green(JSON.stringify(config, null, 2))}`);
|
|
109
|
+
for (const [name, themeWithoutName] of Object.entries(config.themes)) {
|
|
110
|
+
const theme = { name, ...themeWithoutName };
|
|
111
|
+
const tokens = createTokens(theme);
|
|
112
|
+
await writeTokens({ outDir: config.outDir, tokens, theme, dry });
|
|
113
|
+
}
|
|
48
114
|
});
|
|
49
115
|
return tokenCmd;
|
|
50
116
|
}
|
|
@@ -68,6 +134,44 @@ program.command("migrate").description("run a Designsystemet migration").addArgu
|
|
|
68
134
|
}
|
|
69
135
|
});
|
|
70
136
|
await program.parseAsync(process.argv);
|
|
137
|
+
async function parseJsonConfig(jsonPath, options) {
|
|
138
|
+
const resolvedPath = path.resolve(process.cwd(), jsonPath);
|
|
139
|
+
let jsonFile;
|
|
140
|
+
try {
|
|
141
|
+
jsonFile = await fs.readFile(resolvedPath, { encoding: "utf-8" });
|
|
142
|
+
} catch (err) {
|
|
143
|
+
if (err instanceof Error) {
|
|
144
|
+
const nodeErr = err;
|
|
145
|
+
if (nodeErr.code === "ENOENT" && options.allowFileNotFound) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
throw err;
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
return {
|
|
153
|
+
path: jsonPath,
|
|
154
|
+
config: await configFileSchema.parseAsync(JSON.parse(jsonFile))
|
|
155
|
+
};
|
|
156
|
+
} catch (err) {
|
|
157
|
+
console.error(chalk.redBright(`Invalid JSON config in ${jsonPath}`));
|
|
158
|
+
const validationError = makeFriendlyError(err);
|
|
159
|
+
console.error(validationError.toString());
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function makeFriendlyError(err) {
|
|
164
|
+
return fromError(err, {
|
|
165
|
+
messageBuilder: (issues) => issues.map((issue) => {
|
|
166
|
+
const issuePath = issue.path.join(".");
|
|
167
|
+
const optionName = mapPathToOptionName(issue.path);
|
|
168
|
+
const errorCode = `(error code: ${issue.code})`;
|
|
169
|
+
const optionMessage = optionName ? ` or CLI option --${optionName}` : "";
|
|
170
|
+
return ` - Error in JSON value ${chalk.red(issuePath)}${optionMessage}:
|
|
171
|
+
${issue.message} ${chalk.dim(errorCode)}`;
|
|
172
|
+
}).join("\n")
|
|
173
|
+
});
|
|
174
|
+
}
|
|
71
175
|
function parseColorValues(value, previous = {}) {
|
|
72
176
|
const [name, hex] = value.split(":");
|
|
73
177
|
previous[name] = convertToHex(hex);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Command, OptionValueSource, OptionValues } from '@commander-js/extra-typings';
|
|
2
|
+
declare const getOptionIfMatchingSource: (...sources: OptionValueSource[]) => <Args extends unknown[], Opts extends OptionValues, K extends keyof Opts>(command: Command<Args, Opts>, option: K) => Opts[K] | undefined;
|
|
3
|
+
export type OptionGetter = ReturnType<typeof getOptionIfMatchingSource>;
|
|
4
|
+
/**
|
|
5
|
+
* Get an option value if it is explicitly supplied to the CLI command.
|
|
6
|
+
* The difference between this and using the option directly is that we return undefined
|
|
7
|
+
* instead of the default value if the option was not explicitly set.
|
|
8
|
+
*/
|
|
9
|
+
export declare const getExplicitOptionOnly: <Args extends unknown[], Opts extends OptionValues, K extends keyof Opts>(command: Command<Args, Opts>, option: K) => Opts[K] | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* This function is basically the default behaviour, unlike {@link getExplicitOptionOnly}.
|
|
12
|
+
* It is provided so that the program can choose its behaviour as needed.
|
|
13
|
+
*/
|
|
14
|
+
export declare const getDefaultOrExplicitOption: <Args extends unknown[], Opts extends OptionValues, K extends keyof Opts>(command: Command<Args, Opts>, option: K) => Opts[K] | undefined;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../bin/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE5F,QAAA,MAAM,yBAAyB,eAChB,iBAAiB,EAAE,MAC/B,IAAI,SAAS,OAAO,EAAE,EAAE,IAAI,SAAS,YAAY,EAAE,CAAC,SAAS,MAAM,IAAI,WAC7D,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UACpB,CAAC,wBAMV,CAAC;AAEJ,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAjB/B,IAAI,SAAS,OAAO,EAAE,EAAE,IAAI,SAAS,YAAY,EAAE,CAAC,SAAS,MAAM,IAAI,WAC7D,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UACpB,CAAC,wBAewD,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAvBpC,IAAI,SAAS,OAAO,EAAE,EAAE,IAAI,SAAS,YAAY,EAAE,CAAC,SAAS,MAAM,IAAI,WAC7D,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UACpB,CAAC,wBAqBwE,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"$schema": {
|
|
5
|
+
"type": "string"
|
|
6
|
+
},
|
|
7
|
+
"outDir": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Path to the output directory for the created design tokens"
|
|
10
|
+
},
|
|
11
|
+
"themes": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"additionalProperties": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"properties": {
|
|
16
|
+
"colors": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"properties": {
|
|
19
|
+
"main": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"additionalProperties": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"pattern": "^#[0-9a-fA-F]{3}|#[0-9a-fA-F]{4}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}$",
|
|
24
|
+
"description": "A hex color, which is used for creating a color scale"
|
|
25
|
+
},
|
|
26
|
+
"description": "One or more color definitions"
|
|
27
|
+
},
|
|
28
|
+
"support": {
|
|
29
|
+
"$ref": "#/properties/themes/additionalProperties/properties/colors/properties/main"
|
|
30
|
+
},
|
|
31
|
+
"neutral": {
|
|
32
|
+
"$ref": "#/properties/themes/additionalProperties/properties/colors/properties/main/additionalProperties"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"required": [
|
|
36
|
+
"main",
|
|
37
|
+
"support",
|
|
38
|
+
"neutral"
|
|
39
|
+
],
|
|
40
|
+
"additionalProperties": false,
|
|
41
|
+
"description": "Defines the colors for this theme"
|
|
42
|
+
},
|
|
43
|
+
"typography": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"properties": {
|
|
46
|
+
"fontFamily": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"description": "Sets the font-family for this theme"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"required": [
|
|
52
|
+
"fontFamily"
|
|
53
|
+
],
|
|
54
|
+
"additionalProperties": false,
|
|
55
|
+
"description": "Defines the typography for a given theme"
|
|
56
|
+
},
|
|
57
|
+
"borderRadius": {
|
|
58
|
+
"type": "number",
|
|
59
|
+
"description": "Defines the border-radius for this theme"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"required": [
|
|
63
|
+
"colors",
|
|
64
|
+
"typography",
|
|
65
|
+
"borderRadius"
|
|
66
|
+
],
|
|
67
|
+
"additionalProperties": false,
|
|
68
|
+
"description": "An object defining a theme. The property name holding the object becomes the theme name."
|
|
69
|
+
},
|
|
70
|
+
"description": "An object with one or more themes. Each property defines a theme, and the property name is used as the theme name."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"required": [
|
|
74
|
+
"themes"
|
|
75
|
+
],
|
|
76
|
+
"additionalProperties": false,
|
|
77
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
78
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createJsonSchema.d.ts","sourceRoot":"","sources":["../../../src/build-scripts/createJsonSchema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { writeFile } from "node:fs/promises";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
5
|
+
import { configFileSchema } from "../../bin/config.js";
|
|
6
|
+
const schema = z.object({
|
|
7
|
+
$schema: z.string().optional()
|
|
8
|
+
}).extend(configFileSchema.shape);
|
|
9
|
+
writeFile(
|
|
10
|
+
resolve(import.meta.dirname, "../../dist/config.schema.json"),
|
|
11
|
+
JSON.stringify(zodToJsonSchema(schema), void 0, 2),
|
|
12
|
+
{
|
|
13
|
+
encoding: "utf-8"
|
|
14
|
+
}
|
|
15
|
+
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../../../src/tokens/build/configs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,IAAI,qBAAqB,EAAoB,MAAM,wBAAwB,CAAC;AAQhG,OAAO,KAAK,EAEV,kBAAkB,EAClB,2BAA2B,EAC3B,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,oBAAoB,EAA6B,MAAM,sCAAsC,CAAC;AAO5G,eAAO,MAAM,MAAM,OAAO,CAAC;AAC3B,eAAO,MAAM,cAAc,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../../../src/tokens/build/configs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,IAAI,qBAAqB,EAAoB,MAAM,wBAAwB,CAAC;AAQhG,OAAO,KAAK,EAEV,kBAAkB,EAClB,2BAA2B,EAC3B,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,oBAAoB,EAA6B,MAAM,sCAAsC,CAAC;AAO5G,eAAO,MAAM,MAAM,OAAO,CAAC;AAC3B,eAAO,MAAM,cAAc,KAAK,CAAC;AA8BjC,MAAM,MAAM,wBAAwB,GAAG,CACrC,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,KACE,qBAAqB,GAAG;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAAE,EAAE,CAAC;AA+PnH,eAAO,MAAM,OAAO;;;;;;;CAOnB,CAAC;AAEF,eAAO,MAAM,4BAA4B,cAC5B,wBAAwB,UAC3B,oBAAoB,EAAE,cAClB,cAAc,EAAE,WACnB,kBAAkB,KAC1B,2BAA2B,EA8B7B,CAAC"}
|
|
@@ -3,10 +3,10 @@ import * as R from "ramda";
|
|
|
3
3
|
import StyleDictionary from "style-dictionary";
|
|
4
4
|
import { outputReferencesFilter } from "style-dictionary/utils";
|
|
5
5
|
import { DEFAULT_COLOR, buildOptions } from "../build.js";
|
|
6
|
-
import { isColorCategoryToken, pathStartsWithOneOf, typeEquals } from "../utils.js";
|
|
6
|
+
import { isColorCategoryToken, isDigit, pathStartsWithOneOf, typeEquals } from "../utils.js";
|
|
7
7
|
import { formats } from "./formats/css.js";
|
|
8
8
|
import { jsTokens } from "./formats/js-tokens.js";
|
|
9
|
-
import {
|
|
9
|
+
import { resolveMath, sizeRem, typographyName, unitless } from "./transformers.js";
|
|
10
10
|
import { getMultidimensionalThemes } from "./utils/getMultidimensionalThemes.js";
|
|
11
11
|
void register(StyleDictionary, { withSDBuiltins: false });
|
|
12
12
|
const usesDtcg = true;
|
|
@@ -14,7 +14,6 @@ const prefix = "ds";
|
|
|
14
14
|
const basePxFontSize = 16;
|
|
15
15
|
const fileHeader = () => [`These files are generated from design tokens defind using Token Studio`];
|
|
16
16
|
StyleDictionary.registerTransform(sizeRem);
|
|
17
|
-
StyleDictionary.registerTransform(nameKebab);
|
|
18
17
|
StyleDictionary.registerTransform(typographyName);
|
|
19
18
|
StyleDictionary.registerTransform(resolveMath);
|
|
20
19
|
StyleDictionary.registerTransform(unitless);
|
|
@@ -23,7 +22,7 @@ for (const format of Object.values(formats)) {
|
|
|
23
22
|
StyleDictionary.registerFormat(format);
|
|
24
23
|
}
|
|
25
24
|
const dsTransformers = [
|
|
26
|
-
|
|
25
|
+
"name/kebab",
|
|
27
26
|
resolveMath.name,
|
|
28
27
|
"ts/size/px",
|
|
29
28
|
sizeRem.name,
|
|
@@ -160,8 +159,9 @@ const semanticVariables = ({ theme }, { outPath }) => {
|
|
|
160
159
|
options: {
|
|
161
160
|
fileHeader,
|
|
162
161
|
outputReferences: (token, options) => {
|
|
163
|
-
const include = pathStartsWithOneOf(["border-radius"
|
|
164
|
-
|
|
162
|
+
const include = pathStartsWithOneOf(["border-radius"], token);
|
|
163
|
+
const isWantedSize = pathStartsWithOneOf(["size", "_size"], token) && isDigit(token.path[1]);
|
|
164
|
+
return (include || isWantedSize) && outputReferencesFilter(token, options);
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
}
|
|
@@ -187,16 +187,16 @@ const typescriptTokens = ({ "color-scheme": colorScheme, theme }, { outPath }) =
|
|
|
187
187
|
return false;
|
|
188
188
|
const isSemanticColor = R.includes("semantic", token.filePath) && typeEquals(["color"], token);
|
|
189
189
|
const wantedTypes = typeEquals(["shadow", "dimension", "typography", "opacity"], token);
|
|
190
|
-
|
|
191
|
-
return (isSemanticColor || wantedTypes) && isNotPrivate;
|
|
190
|
+
return isSemanticColor || wantedTypes;
|
|
192
191
|
}
|
|
193
192
|
}
|
|
194
193
|
],
|
|
195
194
|
options: {
|
|
196
195
|
fileHeader,
|
|
197
196
|
outputReferences: (token, options) => {
|
|
198
|
-
const include = pathStartsWithOneOf(["border-radius"
|
|
199
|
-
|
|
197
|
+
const include = pathStartsWithOneOf(["border-radius"], token);
|
|
198
|
+
const isWantedSize = pathStartsWithOneOf(["size", "_size"], token) && isDigit(token.path[1]);
|
|
199
|
+
return (include || isWantedSize) && outputReferencesFilter(token, options);
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
}
|
|
@@ -222,7 +222,7 @@ const typographyVariables = ({ theme, typography }, { outPath }) => {
|
|
|
222
222
|
buildPath: `${outPath}/${theme}/`,
|
|
223
223
|
basePxFontSize,
|
|
224
224
|
transforms: [
|
|
225
|
-
|
|
225
|
+
"name/kebab",
|
|
226
226
|
"ts/size/px",
|
|
227
227
|
sizeRem.name,
|
|
228
228
|
"ts/size/lineheight",
|
|
@@ -239,7 +239,18 @@ const typographyVariables = ({ theme, typography }, { outPath }) => {
|
|
|
239
239
|
token
|
|
240
240
|
);
|
|
241
241
|
return included && !pathStartsWithOneOf(
|
|
242
|
-
[
|
|
242
|
+
[
|
|
243
|
+
"spacing",
|
|
244
|
+
"sizing",
|
|
245
|
+
"size",
|
|
246
|
+
"_size",
|
|
247
|
+
"border-width",
|
|
248
|
+
"border-radius",
|
|
249
|
+
"theme",
|
|
250
|
+
"theme2",
|
|
251
|
+
"theme3",
|
|
252
|
+
"theme4"
|
|
253
|
+
],
|
|
243
254
|
token
|
|
244
255
|
);
|
|
245
256
|
}
|
|
@@ -19,17 +19,19 @@ import type { Format } from 'style-dictionary/types';
|
|
|
19
19
|
* ]
|
|
20
20
|
* ```
|
|
21
21
|
*
|
|
22
|
-
* @param
|
|
22
|
+
* @param shouldSquash - predicate to determine if token should be inlined
|
|
23
23
|
* @param tokens - array of tokens to transform
|
|
24
24
|
* @returns copy of `tokens` without those that matched the predicate,
|
|
25
25
|
* where references to the matching tokens have been inlined
|
|
26
26
|
*/
|
|
27
|
-
export declare function
|
|
27
|
+
export declare function squashTokens(shouldSquash: (t: TransformedToken) => boolean, tokens: TransformedToken[]): import("style-dictionary/types").TransformedToken[];
|
|
28
28
|
declare module 'style-dictionary/types' {
|
|
29
29
|
interface LocalOptions {
|
|
30
30
|
replaceCategoryWith?: string;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
export declare const isNumericSizeToken: (t: TransformedToken) => boolean;
|
|
34
|
+
export declare const isSquashTokens: (t: TransformedToken) => boolean;
|
|
33
35
|
/**
|
|
34
36
|
* Overrides the default sizing formula with a custom one that supports [round()](https://developer.mozilla.org/en-US/docs/Web/CSS/round) if supported.
|
|
35
37
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../../../../src/tokens/build/formats/css.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../../../../src/tokens/build/formats/css.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAarD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,uDAetG;AAsDD,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAiB,YAAY;QAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B;CACF;AAmCD,eAAO,MAAM,kBAAkB,MAAO,gBAAgB,YAA4D,CAAC;AAEnH,eAAO,MAAM,cAAc,MAHY,gBAAgB,YAGkC,CAAC;AAE1F;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,WAAY,CAAC,CAAC,EAAE,gBAAgB,KAAK,MAAM,SAAS,gBAAgB;;;;CAYrG,CAAC;AA4FF,eAAO,MAAM,OAAO;;;;;CAKc,CAAC"}
|