@se-studio/project-build 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.
- package/README.md +53 -0
- package/dist/colourFile.d.ts +4 -0
- package/dist/colourFile.d.ts.map +1 -0
- package/dist/colourFile.js +227 -0
- package/dist/colourFile.js.map +1 -0
- package/dist/grids.d.ts +5 -0
- package/dist/grids.d.ts.map +1 -0
- package/dist/grids.js +120 -0
- package/dist/grids.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/management/index.d.ts +2 -0
- package/dist/management/index.d.ts.map +1 -0
- package/dist/management/index.js +2 -0
- package/dist/management/index.js.map +1 -0
- package/dist/management/setupColours.d.ts +3 -0
- package/dist/management/setupColours.d.ts.map +1 -0
- package/dist/management/setupColours.js +69 -0
- package/dist/management/setupColours.js.map +1 -0
- package/dist/management/shared.d.ts +5 -0
- package/dist/management/shared.d.ts.map +1 -0
- package/dist/management/shared.js +36 -0
- package/dist/management/shared.js.map +1 -0
- package/dist/rtf.d.ts +3 -0
- package/dist/rtf.d.ts.map +1 -0
- package/dist/rtf.js +51 -0
- package/dist/rtf.js.map +1 -0
- package/dist/setailwind.d.ts +3 -0
- package/dist/setailwind.d.ts.map +1 -0
- package/dist/setailwind.js +410 -0
- package/dist/setailwind.js.map +1 -0
- package/dist/tailwind/index.d.ts +6 -0
- package/dist/tailwind/index.d.ts.map +1 -0
- package/dist/tailwind/index.js +6 -0
- package/dist/tailwind/index.js.map +1 -0
- package/dist/tailwind-utils.d.ts +10 -0
- package/dist/tailwind-utils.d.ts.map +1 -0
- package/dist/tailwind-utils.js +55 -0
- package/dist/tailwind-utils.js.map +1 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +63 -0
package/README.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# @se-studio/project-build
|
|
2
|
+
|
|
3
|
+
Build tools and management scripts for SE Studio projects.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### Tailwind Build System
|
|
8
|
+
- Custom Tailwind CSS v4 build system with file watching
|
|
9
|
+
- Automatic grid generation
|
|
10
|
+
- Rich text formatting utilities
|
|
11
|
+
- Color lookup generation
|
|
12
|
+
- Type-safe configuration
|
|
13
|
+
|
|
14
|
+
### Contentful Management Scripts
|
|
15
|
+
- Color field validation setup
|
|
16
|
+
- CMS configuration utilities
|
|
17
|
+
- Environment management
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pnpm add -D @se-studio/project-build
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
### Tailwind Build System
|
|
28
|
+
|
|
29
|
+
Add to your `package.json`:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"scripts": {
|
|
34
|
+
"setailwind": "setailwind"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Run the build system:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
pnpm setailwind
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Management Scripts
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pnpm setup-colours
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## License
|
|
52
|
+
|
|
53
|
+
MIT
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ITailwindConfigurationOptions } from './types.js';
|
|
2
|
+
export declare function buildColorFile(config: Pick<ITailwindConfigurationOptions, 'colorFile' | 'colorOptions' | 'colorOpposites' | 'gradients'>): string[] | undefined;
|
|
3
|
+
export declare function buildTextStylesFile(config: Pick<ITailwindConfigurationOptions, 'fontTable'>): string[] | undefined;
|
|
4
|
+
//# sourceMappingURL=colourFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colourFile.d.ts","sourceRoot":"","sources":["../src/colourFile.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAiBhE,wBAAgB,cAAc,CAC5B,MAAM,EAAE,IAAI,CACV,6BAA6B,EAC7B,WAAW,GAAG,cAAc,GAAG,gBAAgB,GAAG,WAAW,CAC9D,wBAkMF;AA6CD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,6BAA6B,EAAE,WAAW,CAAC,wBAuC3F"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import chroma from 'chroma-js';
|
|
2
|
+
import { cleanColourName } from './tailwind-utils.js';
|
|
3
|
+
function buildColours(config) {
|
|
4
|
+
if (!config.colorOptions)
|
|
5
|
+
return undefined;
|
|
6
|
+
const colors = {
|
|
7
|
+
transparent: 'transparent',
|
|
8
|
+
current: 'currentColor',
|
|
9
|
+
inherit: 'inherit',
|
|
10
|
+
};
|
|
11
|
+
Object.entries(config.colorOptions).forEach(([key]) => {
|
|
12
|
+
const cleanName = cleanColourName(key);
|
|
13
|
+
colors[key] = `rgb(from var(--color-${cleanName}) r g b / <alpha-value>)`;
|
|
14
|
+
});
|
|
15
|
+
return colors;
|
|
16
|
+
}
|
|
17
|
+
export function buildColorFile(config) {
|
|
18
|
+
const { colorFile, colorOptions, gradients, colorOpposites } = config;
|
|
19
|
+
if (colorFile === undefined || colorOptions === undefined)
|
|
20
|
+
return undefined;
|
|
21
|
+
const colors = buildColours(config);
|
|
22
|
+
if (!colors)
|
|
23
|
+
return undefined;
|
|
24
|
+
const darkColours = new Set();
|
|
25
|
+
const lightColours = new Set();
|
|
26
|
+
Object.entries(colorOptions).forEach(([key, value]) => {
|
|
27
|
+
const colorName = key;
|
|
28
|
+
try {
|
|
29
|
+
if (chroma.valid(value)) {
|
|
30
|
+
const c = chroma(value);
|
|
31
|
+
const luminance = c.luminance();
|
|
32
|
+
if (luminance < 0.5) {
|
|
33
|
+
darkColours.add(colorName);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
lightColours.add(colorName);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
console.error('Invalid color', colorName, value);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error('Error building color file', colorName, value, error);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
const code = [
|
|
50
|
+
`// This file is automatically generated - do not edit`,
|
|
51
|
+
`import type { CmsGradientName } from "@/lib/cms";`,
|
|
52
|
+
`export type ProjectColourName = ${Object.keys(colors)
|
|
53
|
+
.map((c) => `"${c}"`)
|
|
54
|
+
.join(' | ')};`,
|
|
55
|
+
'export const colourTable: Record<ProjectColourName, string[]> = {',
|
|
56
|
+
];
|
|
57
|
+
Object.entries(colors).forEach(([key]) => {
|
|
58
|
+
const colorName = cleanColourName(key);
|
|
59
|
+
code.push(` "${key}": ["text-${colorName}", "bg-${colorName}"],`);
|
|
60
|
+
});
|
|
61
|
+
code.push('};');
|
|
62
|
+
code.push(`export type ColourType = "text" | "bg";
|
|
63
|
+
export function lookupColourString(colour: ProjectColourName, type:ColourType): string {
|
|
64
|
+
const entry = colourTable[colour];`);
|
|
65
|
+
code.push('if (!entry) throw new Error(`No colour for ${colour}`);');
|
|
66
|
+
code.push(`
|
|
67
|
+
switch (type) {
|
|
68
|
+
case "text": return entry[0] ?? "";
|
|
69
|
+
case "bg": return entry[1] ?? "";
|
|
70
|
+
}`);
|
|
71
|
+
code.push('throw new Error(`Unsupported colour type ${type}`);');
|
|
72
|
+
code.push(`
|
|
73
|
+
}
|
|
74
|
+
`);
|
|
75
|
+
code.push(`const darkColours = new Set<ProjectColourName|CmsGradientName>([${Array.from(darkColours.values())
|
|
76
|
+
.map((c) => `"${c}"`)
|
|
77
|
+
.join(',')}]);`);
|
|
78
|
+
code.push(`const lightColours = new Set<ProjectColourName|CmsGradientName>([${Array.from(lightColours.values())
|
|
79
|
+
.map((c) => `"${c}"`)
|
|
80
|
+
.join(',')}]);`);
|
|
81
|
+
code.push(`export function isDarkColour(colour: ProjectColourName|CmsGradientName): boolean { return darkColours.has(colour); }`);
|
|
82
|
+
code.push(`export function isLightColour(colour: ProjectColourName|CmsGradientName): boolean { return lightColours.has(colour); }`);
|
|
83
|
+
if (gradients) {
|
|
84
|
+
code.push('export const gradientTable = {');
|
|
85
|
+
Object.entries(gradients).forEach(([key]) => {
|
|
86
|
+
code.push(` "${key}": "gradient-${cleanColourName(key)}",`);
|
|
87
|
+
});
|
|
88
|
+
code.push('};');
|
|
89
|
+
code.push(`
|
|
90
|
+
export function lookupGradientString(gradient: CmsGradientName): string {
|
|
91
|
+
const entry = gradientTable[gradient];`);
|
|
92
|
+
code.push('if (!entry) throw new Error(`No gradient for ${gradient}`);');
|
|
93
|
+
code.push(`
|
|
94
|
+
return entry;
|
|
95
|
+
}
|
|
96
|
+
function isGradientName(
|
|
97
|
+
value: ProjectColourName | CmsGradientName,
|
|
98
|
+
): value is CmsGradientName {
|
|
99
|
+
return gradientTable[value as CmsGradientName] !== undefined;
|
|
100
|
+
}
|
|
101
|
+
function isColourName(value: ProjectColourName | CmsGradientName): value is ProjectColourName {
|
|
102
|
+
return colourTable[value as ProjectColourName] !== undefined;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function lookupGradientOrColourString(
|
|
106
|
+
key: ProjectColourName | CmsGradientName,
|
|
107
|
+
type: ColourType,
|
|
108
|
+
): string {
|
|
109
|
+
if (type === "bg" && isGradientName(key)) return lookupGradientString(key);
|
|
110
|
+
if (isColourName(key)) return lookupColourString(key, type);`);
|
|
111
|
+
code.push("throw new Error(`Failed to find gradient or colour string '${key}' for '${type}';`");
|
|
112
|
+
code.push(`
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
`);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
code.push(`
|
|
119
|
+
export const lookupGradientOrColourString = lookupColourString;
|
|
120
|
+
`);
|
|
121
|
+
}
|
|
122
|
+
if (colorOpposites) {
|
|
123
|
+
code.push('export const colourOpposites: Partial<Record<ProjectColourName, ProjectColourName>> = {');
|
|
124
|
+
const used = new Set();
|
|
125
|
+
Object.entries(colorOpposites).forEach(([color, opposite]) => {
|
|
126
|
+
const colourName = color;
|
|
127
|
+
const oppositeName = opposite;
|
|
128
|
+
if (!used.has(colourName)) {
|
|
129
|
+
code.push(` "${colourName}": "${oppositeName}",`);
|
|
130
|
+
used.add(colourName);
|
|
131
|
+
}
|
|
132
|
+
const reverse = colorOpposites[opposite];
|
|
133
|
+
if (reverse !== undefined) {
|
|
134
|
+
if (!used.has(oppositeName)) {
|
|
135
|
+
code.push(` "${oppositeName}": "${colourName}",`);
|
|
136
|
+
used.add(oppositeName);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
code.push('};');
|
|
141
|
+
code.push(`
|
|
142
|
+
export type OppositeName = keyof typeof colourOpposites;
|
|
143
|
+
export function lookupOpposite(colour: ProjectColourName | CmsGradientName): ProjectColourName {
|
|
144
|
+
const entry = colourOpposites[colour as OppositeName];`);
|
|
145
|
+
code.push('if (!entry) throw new Error(`No opposite for ${colour}`);');
|
|
146
|
+
code.push(`
|
|
147
|
+
return entry as ProjectColourName;
|
|
148
|
+
}
|
|
149
|
+
`);
|
|
150
|
+
code.push(`
|
|
151
|
+
export function lookupColourClassNames(backgroundColour?: ProjectColourName | CmsGradientName | null, textColour?: ProjectColourName | null): string|string[]|undefined {
|
|
152
|
+
if (backgroundColour) {
|
|
153
|
+
const backgroundColourClassName = lookupGradientOrColourString(backgroundColour, "bg");
|
|
154
|
+
if (textColour) {
|
|
155
|
+
const textColourClassName = lookupColourString(textColour, "text");
|
|
156
|
+
return [backgroundColourClassName, textColourClassName];
|
|
157
|
+
}
|
|
158
|
+
const opposite = lookupOpposite(backgroundColour as OppositeName);
|
|
159
|
+
const textColourClassName = lookupColourString(opposite, "text");
|
|
160
|
+
return [backgroundColourClassName, textColourClassName];
|
|
161
|
+
}
|
|
162
|
+
if (textColour) {
|
|
163
|
+
const textColourClassName = lookupColourString(textColour, "text");
|
|
164
|
+
return textColourClassName;
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
`);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
code.push(`
|
|
172
|
+
export function lookupColourClassNames(backgroundColour?: ProjectColourName | CmsGradientName | null, textColour?: CmsColourName | null): string|string[]|undefined {
|
|
173
|
+
if (backgroundColour) {
|
|
174
|
+
const backgroundColourClassName = lookupGradientOrColourString(backgroundColour, "bg");
|
|
175
|
+
if (textColour) {
|
|
176
|
+
const textColourClassName = lookupColourString(textColour, "text");
|
|
177
|
+
return [backgroundColourClassName, textColourClassName];
|
|
178
|
+
}
|
|
179
|
+
return backgroundColourClassName;
|
|
180
|
+
}
|
|
181
|
+
if (textColour) {
|
|
182
|
+
const textColourClassName = lookupColourString(textColour, "text");
|
|
183
|
+
return textColourClassName;
|
|
184
|
+
}
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
`);
|
|
188
|
+
}
|
|
189
|
+
return code;
|
|
190
|
+
}
|
|
191
|
+
export function buildTextStylesFile(config) {
|
|
192
|
+
const { fontTable } = config;
|
|
193
|
+
if (!fontTable?.styles)
|
|
194
|
+
return undefined;
|
|
195
|
+
const code = [
|
|
196
|
+
`// This file is automatically generated - do not edit`,
|
|
197
|
+
`export type TextStyleName = ${Object.keys(fontTable.styles)
|
|
198
|
+
.map((s) => `"${s}"`)
|
|
199
|
+
.join(' | ')};`,
|
|
200
|
+
`export const textStyleNames: TextStyleName[] = [${Object.keys(fontTable.styles)
|
|
201
|
+
.map((s) => `"${s}"`)
|
|
202
|
+
.join(',')}] as const;`,
|
|
203
|
+
`export const textStyleTable: Record<TextStyleName, string> = {`,
|
|
204
|
+
];
|
|
205
|
+
Object.entries(fontTable.styles).forEach(([style]) => {
|
|
206
|
+
code.push(` "${style}": "${style}",`);
|
|
207
|
+
});
|
|
208
|
+
code.push(`};`);
|
|
209
|
+
code.push(`
|
|
210
|
+
export function lookupTextStyleClassName(style: TextStyleName): string {
|
|
211
|
+
const entry = textStyleTable[style];
|
|
212
|
+
if (!entry) throw new Error("No text style for " + style);
|
|
213
|
+
return entry;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export function convertCmsTextStyleName(
|
|
217
|
+
style: string | undefined | null,
|
|
218
|
+
): TextStyleName | undefined {
|
|
219
|
+
if (style && textStyleNames.includes(style as TextStyleName)) {
|
|
220
|
+
return style as TextStyleName;
|
|
221
|
+
}
|
|
222
|
+
return undefined;
|
|
223
|
+
}
|
|
224
|
+
`);
|
|
225
|
+
return code;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=colourFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colourFile.js","sourceRoot":"","sources":["../src/colourFile.ts"],"names":[],"mappings":"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"}
|
package/dist/grids.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ITailwindConfigurationOptions, ProcessedOutput } from './types.js';
|
|
2
|
+
export declare function buildSpecialGrids(outputs: ProcessedOutput): void;
|
|
3
|
+
export declare function buildGridShared(outputs: ProcessedOutput): void;
|
|
4
|
+
export declare function buildGrids(config: ITailwindConfigurationOptions, outputs: ProcessedOutput, theme?: string): void;
|
|
5
|
+
//# sourceMappingURL=grids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grids.d.ts","sourceRoot":"","sources":["../src/grids.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,QAkBzD;AAoCD,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,QAgEvD;AAyED,wBAAgB,UAAU,CACxB,MAAM,EAAE,6BAA6B,EACrC,OAAO,EAAE,eAAe,EACxB,KAAK,CAAC,EAAE,MAAM,QAGf"}
|
package/dist/grids.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { pushSizeVariable, pushVariable, pxToRem } from './tailwind-utils.js';
|
|
2
|
+
export function buildSpecialGrids(outputs) {
|
|
3
|
+
for (let i = 1; i < 7; i++) {
|
|
4
|
+
const isBorder = i === 1 || i === 6;
|
|
5
|
+
const value = isBorder ? '0' : '1fr';
|
|
6
|
+
outputs.theme.push(`--container-row-${i}: ${value};`);
|
|
7
|
+
if (isBorder) {
|
|
8
|
+
outputs.utilities.push(`@utility container-row-${i}-* { --container-row-${i}: calc(var(--spacing) * --value(integer)); }`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
outputs.theme.push('');
|
|
12
|
+
outputs.utilities.push('');
|
|
13
|
+
for (let gridCols = 2; gridCols < 10; gridCols++) {
|
|
14
|
+
buildCenteredGrid(outputs, gridCols);
|
|
15
|
+
buildStaggeredGrid(outputs, gridCols);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function buildCenteredGrid(outputs, gridCols) {
|
|
19
|
+
outputs.utilities.push(`@utility centered-grid-${gridCols} { @apply grid grid-cols-${gridCols * 2}; }`);
|
|
20
|
+
outputs.utilities.push(`@utility centered-grid-${gridCols} { &>* { @apply col-span-2; } }`);
|
|
21
|
+
for (let child = 1; child <= gridCols; child++) {
|
|
22
|
+
outputs.utilities.push(`@utility centered-grid-${gridCols} { &>*:nth-last-child(${child}):nth-child(${gridCols}n-${gridCols - 1}) { grid-column-start: ${gridCols + 1 - child}; } }`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function buildStaggeredGrid(outputs, gridCols) {
|
|
26
|
+
const staggeredLength = gridCols * 2 - 1;
|
|
27
|
+
outputs.utilities.push(`@utility staggered-grid-${gridCols} { @apply grid grid-cols-${gridCols * 2}; }`);
|
|
28
|
+
outputs.utilities.push(`@utility staggered-grid-${gridCols} { &>* { @apply col-span-2; } }`);
|
|
29
|
+
outputs.utilities.push(`@utility staggered-grid-${gridCols} { &>*:nth-child(${staggeredLength}n+${gridCols + 1}) { grid-column-start: 2; } }`);
|
|
30
|
+
for (let child = 1; child < gridCols; child++) {
|
|
31
|
+
outputs.utilities.push(`@utility staggered-grid-${gridCols} { &>*:nth-last-child(${child}):nth-child(${staggeredLength}n+1) { grid-column-start: ${gridCols + 1 - child}; } }`);
|
|
32
|
+
outputs.utilities.push(`@utility staggered-grid-${gridCols} { &>*:nth-last-child(${child}):nth-child(${staggeredLength}n+${gridCols + 1}) { grid-column-start: ${gridCols + 1 - child}; } }`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function buildGridShared(outputs) {
|
|
36
|
+
pushVariable(undefined, '--spacing-wide-outer-margin', '0', outputs);
|
|
37
|
+
pushVariable(undefined, '--se-grid-inner', 'auto', outputs);
|
|
38
|
+
pushVariable(undefined, '--spacing-inner', 'calc(100svw - var(--spacing-margin) * 2)', outputs);
|
|
39
|
+
outputs.theme.push('--spacing-cols-only: calc(var(--spacing-inner) - ((var(--se-cols) - 1) * var(--spacing-gap)));');
|
|
40
|
+
outputs.theme.push('--spacing-single-col: calc(var(--spacing-cols-only) / var(--se-cols));');
|
|
41
|
+
outputs.theme.push('--spacing-single-col-gap: calc(var(--spacing-single-col) + var(--spacing-gap));');
|
|
42
|
+
outputs.theme.push('--spacing-cols-half: calc(var(--spacing-single-col)/2);');
|
|
43
|
+
outputs.theme.push('--spacing-cols-1: var(--spacing-single-col);');
|
|
44
|
+
outputs.theme.push('--spacing-cols-gap-1: var(--spacing-single-col-gap);');
|
|
45
|
+
outputs.theme.push('--spacing-cols-1\\.5: calc(var(--spacing-single-col)*1.5);');
|
|
46
|
+
outputs.theme.push('--spacing-cols-gap-1\\.5: calc(var(--spacing-single-col-gap)*1.5);');
|
|
47
|
+
for (let i = 2; i <= 20; i++) {
|
|
48
|
+
outputs.theme.push(`--spacing-cols-${i}: calc((var(--spacing-cols-1) * ${i}) + (var(--spacing-gap) * (${i} - 1)));`);
|
|
49
|
+
outputs.theme.push(`--spacing-cols-gap-${i}: calc((var(--spacing-cols-1) + var(--spacing-gap)) * ${i});`);
|
|
50
|
+
outputs.theme.push(`--spacing-cols-${i}\\.5: calc((var(--spacing-cols-1)*0.5) + (var(--spacing-cols-1) * ${i}) + (var(--spacing-gap) * (${i} - 1)));`);
|
|
51
|
+
outputs.theme.push(`--spacing-cols-gap-${i}\\.5: calc((var(--spacing-cols-1)*0.5) + (var(--spacing-cols-1) + var(--spacing-gap)) * ${i});`);
|
|
52
|
+
}
|
|
53
|
+
outputs.utilities.push('@utility container-cols { grid-template-columns: var(--spacing-grid-margin) var(--se-grid-inner) var(--spacing-grid-margin); }');
|
|
54
|
+
outputs.utilities.push('@utility wide-container-cols { grid-template-columns: var(--spacing-wide-outer-margin) var(--spacing-margin) var(--se-grid-inner) var(--spacing-margin) var(--spacing-wide-outer-margin); }');
|
|
55
|
+
outputs.utilities.push('@utility content-cols { grid-template-columns: repeat(var(--se-cols), 1fr); }');
|
|
56
|
+
outputs.utilities.push('@utility wide-content-cols { grid-template-columns: calc(var(--spacing-margin) - var(--spacing-gap)) repeat(var(--se-cols), 1fr) calc(var(--spacing-margin) - var(--spacing-gap)); }');
|
|
57
|
+
outputs.utilities.push('@utility full-width-content-cols { grid-template-columns: var(--spacing-wide-outer-margin) calc(var(--spacing-margin) - var(--spacing-gap)) repeat(var(--se-cols), 1fr) calc(var(--spacing-margin) - var(--spacing-gap)) var(--spacing-wide-outer-margin); }');
|
|
58
|
+
outputs.utilities.push('@utility container-cols-grid { @apply grid container-cols; }');
|
|
59
|
+
outputs.utilities.push('@utility wide-container-cols-grid { @apply grid wide-container-cols; }');
|
|
60
|
+
outputs.utilities.push('@utility grid-gap { column-gap: var(--spacing-gap); }');
|
|
61
|
+
outputs.utilities.push('@utility content-cols-grid { @apply grid grid-gap content-cols; }');
|
|
62
|
+
outputs.utilities.push('@utility wide-content-cols-grid { @apply grid grid-gap wide-content-cols; }');
|
|
63
|
+
outputs.utilities.push('@utility full-width-content-cols-grid { @apply grid grid-gap full-width-content-cols; }');
|
|
64
|
+
outputs.utilities.push('@utility container-rows-grid { grid-template-rows: var(--container-row-1) var(--container-row-2) var(--container-row-3) var(--container-row-4) var(--container-row-5) var(--container-row-6); }');
|
|
65
|
+
}
|
|
66
|
+
function buildNormalGrids(config, outputs, theme) {
|
|
67
|
+
if (config.sizes === undefined) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
pushVariable(theme, '--spacing-grid-margin', 'var(--spacing-margin)', outputs);
|
|
71
|
+
const entries = Object.entries(config.sizes);
|
|
72
|
+
const currentSize = {};
|
|
73
|
+
let hadMax = false;
|
|
74
|
+
entries.forEach(([size, value], index) => {
|
|
75
|
+
const isDefault = index === 0;
|
|
76
|
+
const hasMax = value.max !== undefined;
|
|
77
|
+
if (hadMax && hasMax) {
|
|
78
|
+
throw new Error('Cannot have two max sizes');
|
|
79
|
+
}
|
|
80
|
+
if (hasMax) {
|
|
81
|
+
hadMax = true;
|
|
82
|
+
}
|
|
83
|
+
const sizeToUse = isDefault ? undefined : size;
|
|
84
|
+
Object.entries(value).forEach(([sizeVariable, sizeValue]) => {
|
|
85
|
+
if (currentSize[sizeVariable] !== sizeValue) {
|
|
86
|
+
switch (sizeVariable) {
|
|
87
|
+
case 'breakpoint':
|
|
88
|
+
pushVariable(theme, `--container-${size}`, pxToRem(sizeValue), outputs);
|
|
89
|
+
break;
|
|
90
|
+
case 'cols':
|
|
91
|
+
pushSizeVariable(theme, sizeToUse, `--se-cols`, sizeValue, outputs);
|
|
92
|
+
break;
|
|
93
|
+
case 'gap':
|
|
94
|
+
pushSizeVariable(theme, sizeToUse, `--spacing-gap`, pxToRem(sizeValue), outputs);
|
|
95
|
+
break;
|
|
96
|
+
case 'margin':
|
|
97
|
+
pushSizeVariable(theme, sizeToUse, `--spacing-margin`, pxToRem(sizeValue), outputs);
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
currentSize[sizeVariable] = sizeValue;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
if (hasMax) {
|
|
104
|
+
const breakpoint = currentSize.breakpoint;
|
|
105
|
+
const margin = currentSize.margin;
|
|
106
|
+
if (breakpoint === undefined || margin === undefined) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const inner = breakpoint - margin * 2;
|
|
110
|
+
pushSizeVariable(theme, sizeToUse, '--spacing-inner', pxToRem(inner), outputs);
|
|
111
|
+
pushSizeVariable(theme, sizeToUse, '--se-grid-inner', `minmax(auto,${pxToRem(inner)})`, outputs);
|
|
112
|
+
pushSizeVariable(theme, sizeToUse, '--spacing-wide-outer-margin', `minmax(0,auto)`, outputs);
|
|
113
|
+
pushSizeVariable(theme, sizeToUse, `--spacing-grid-margin`, `minmax(var(--spacing-margin),1fr)`, outputs);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
export function buildGrids(config, outputs, theme) {
|
|
118
|
+
buildNormalGrids(config, outputs, theme);
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=grids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grids.js","sourceRoot":"","sources":["../src/grids.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/management/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/management/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupColours.d.ts","sourceRoot":"","sources":["../../src/management/setupColours.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as fs from 'node:fs';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import dotenv from 'dotenv';
|
|
5
|
+
import { getEnvironment, getValidValues } from './shared.js';
|
|
6
|
+
dotenv.config({ path: path.join(process.cwd(), '.env.local') });
|
|
7
|
+
const configPath = path.join(process.cwd(), 'tailwind.config.json');
|
|
8
|
+
const tailwindConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
9
|
+
const { colorOptions, colorOpposites, gradients, foregroundColors } = tailwindConfig;
|
|
10
|
+
function areTheSame(a, b) {
|
|
11
|
+
if (a.length !== b.length)
|
|
12
|
+
return false;
|
|
13
|
+
const aSet = new Set(a);
|
|
14
|
+
const hasAll = b.every((value) => aSet.has(value));
|
|
15
|
+
return hasAll;
|
|
16
|
+
}
|
|
17
|
+
async function setupColors(environment) {
|
|
18
|
+
if (!colorOpposites || !colorOptions)
|
|
19
|
+
throw new Error('Need color options and opposites');
|
|
20
|
+
const backgroundColors = Object.keys(colorOpposites).sort();
|
|
21
|
+
const foregroundOnlyColors = foregroundColors
|
|
22
|
+
? foregroundColors
|
|
23
|
+
: Object.keys(colorOptions)
|
|
24
|
+
.filter((c) => !Object.hasOwn(colorOpposites, c))
|
|
25
|
+
.sort();
|
|
26
|
+
const foregroundAndBackgroundColours = Object.values(colorOpposites);
|
|
27
|
+
const gradientColors = gradients ? Object.keys(gradients) : [];
|
|
28
|
+
const allBackgroundColors = Array.from(new Set([...backgroundColors, ...gradientColors])).sort();
|
|
29
|
+
const allForegroundColors = Array.from(new Set([...foregroundOnlyColors, ...foregroundAndBackgroundColours])).sort();
|
|
30
|
+
console.log('All background colors:', allBackgroundColors);
|
|
31
|
+
console.log('All foreground colors:', allForegroundColors);
|
|
32
|
+
const components = await environment.getContentTypes();
|
|
33
|
+
for (const component of components.items) {
|
|
34
|
+
const backgroundColourField = component.fields.find((f) => f.id === 'backgroundColour');
|
|
35
|
+
const textColourField = component.fields.find((f) => f.id === 'textColour');
|
|
36
|
+
if (!backgroundColourField && !textColourField)
|
|
37
|
+
continue;
|
|
38
|
+
let updated = false;
|
|
39
|
+
if (backgroundColourField) {
|
|
40
|
+
const currentBackgroundColors = await getValidValues(environment, component.sys.id, backgroundColourField.id);
|
|
41
|
+
if (!areTheSame(allBackgroundColors, currentBackgroundColors)) {
|
|
42
|
+
console.log(`Updating background colours for ${component.name}`);
|
|
43
|
+
backgroundColourField.validations = [{ in: allBackgroundColors }];
|
|
44
|
+
updated = true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (textColourField) {
|
|
48
|
+
const currentTextColors = await getValidValues(environment, component.sys.id, textColourField.id);
|
|
49
|
+
if (!areTheSame(allForegroundColors, currentTextColors)) {
|
|
50
|
+
console.log(`Updating text colours for ${component.name}`);
|
|
51
|
+
textColourField.validations = [{ in: allForegroundColors }];
|
|
52
|
+
updated = true;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (updated) {
|
|
56
|
+
console.log('updating', component.name);
|
|
57
|
+
const updated = await component.update();
|
|
58
|
+
await updated.publish();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async function run() {
|
|
63
|
+
const environment = await getEnvironment();
|
|
64
|
+
await setupColors(environment);
|
|
65
|
+
}
|
|
66
|
+
run()
|
|
67
|
+
.then(() => console.log('done'))
|
|
68
|
+
.catch(console.error);
|
|
69
|
+
//# sourceMappingURL=setupColours.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupColours.js","sourceRoot":"","sources":["../../src/management/setupColours.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Environment } from 'contentful-management';
|
|
2
|
+
export declare function getValidValues(environment: Environment, contentTypeId: string, fieldId: string): Promise<string[]>;
|
|
3
|
+
export declare function setValidValues(environment: Environment, contentTypeId: string, fieldId: string, values: string[]): Promise<void>;
|
|
4
|
+
export declare function getEnvironment(): Promise<Environment>;
|
|
5
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/management/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD,wBAAsB,cAAc,CAClC,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,qBAYhB;AAED,wBAAsB,cAAc,CAClC,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EAAE,iBAUjB;AAED,wBAAsB,cAAc,yBAWnC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import contentfulManagement from 'contentful-management';
|
|
2
|
+
const { createClient } = contentfulManagement;
|
|
3
|
+
export async function getValidValues(environment, contentTypeId, fieldId) {
|
|
4
|
+
const contentType = await environment.getContentType(contentTypeId);
|
|
5
|
+
if (!contentType)
|
|
6
|
+
throw new Error(`Failed to find content type: ${contentTypeId}`);
|
|
7
|
+
const field = contentType.fields.find((f) => f.id === fieldId);
|
|
8
|
+
if (!field)
|
|
9
|
+
throw new Error(`Failed to find field: ${fieldId}`);
|
|
10
|
+
const validValues = field.validations?.[0]?.in ?? field.items?.validations?.[0]?.in;
|
|
11
|
+
if (!validValues)
|
|
12
|
+
throw new Error(`Field did not have validations`);
|
|
13
|
+
return validValues;
|
|
14
|
+
}
|
|
15
|
+
export async function setValidValues(environment, contentTypeId, fieldId, values) {
|
|
16
|
+
const contentType = await environment.getContentType(contentTypeId);
|
|
17
|
+
if (!contentType)
|
|
18
|
+
throw new Error(`Failed to find content type: ${contentTypeId}`);
|
|
19
|
+
const field = contentType.fields.find((f) => f.id === fieldId);
|
|
20
|
+
if (!field)
|
|
21
|
+
throw new Error(`Failed to find field: ${fieldId}`);
|
|
22
|
+
field.validations = [{ in: values }];
|
|
23
|
+
await contentType.update();
|
|
24
|
+
}
|
|
25
|
+
export async function getEnvironment() {
|
|
26
|
+
const spaceId = process.env.CONTENTFUL_SPACE_ID;
|
|
27
|
+
const accessToken = process.env.CONTENTFUL_MANAGEMENT_TOKEN;
|
|
28
|
+
const environmentName = process.env.CONTENTFUL_ENVIRONMENT_NAME;
|
|
29
|
+
if (!spaceId || !accessToken || !environmentName)
|
|
30
|
+
throw new Error('Env not setup');
|
|
31
|
+
const client = createClient({ accessToken });
|
|
32
|
+
const space = await client.getSpace(spaceId);
|
|
33
|
+
const environment = await space.getEnvironment(environmentName);
|
|
34
|
+
return environment;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/management/shared.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,MAAM,uBAAuB,CAAC;AAEzD,MAAM,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAwB,EACxB,aAAqB,EACrB,OAAe;IAEf,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,aAAa,EAAE,CAAC,CAAC;IAEnF,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IAEhE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEpF,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpE,OAAO,WAAuB,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAwB,EACxB,aAAqB,EACrB,OAAe,EACf,MAAgB;IAEhB,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,aAAa,EAAE,CAAC,CAAC;IAEnF,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IAEhE,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAEhE,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IAEnF,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAChE,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/dist/rtf.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtf.d.ts","sourceRoot":"","sources":["../src/rtf.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8ClD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,QAShD"}
|