@getvitops/generator 0.9.0 → 2.0.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +1031 -0
  2. package/README.md +24 -5
  3. package/assets/bricks/elements/icon.php +102 -0
  4. package/assets/bricks/elements/split.php +8 -5
  5. package/assets/bricks/load.php +137 -1
  6. package/assets/css/animation.css +147 -36
  7. package/assets/css/global.css +19 -3
  8. package/assets/css/index.css +8 -0
  9. package/assets/css/layout-utilities.css +764 -0
  10. package/assets/css/layout.css +50 -584
  11. package/assets/css/patterns/carousel.css +3 -3
  12. package/assets/css/patterns/code.css +2 -2
  13. package/assets/css/patterns/combobox.css +3 -3
  14. package/assets/css/patterns/comment.css +1 -1
  15. package/assets/css/patterns/consent.css +117 -0
  16. package/assets/css/patterns/copy.css +3 -3
  17. package/assets/css/patterns/details.css +1 -1
  18. package/assets/css/patterns/dialog.css +2 -2
  19. package/assets/css/patterns/drawer.css +2 -2
  20. package/assets/css/patterns/forms.css +11 -11
  21. package/assets/css/patterns/grouped.css +1 -1
  22. package/assets/css/patterns/icon.css +2 -2
  23. package/assets/css/patterns/list.css +5 -5
  24. package/assets/css/patterns/media.css +1 -1
  25. package/assets/css/patterns/nav.css +5 -5
  26. package/assets/css/patterns/notification.css +3 -3
  27. package/assets/css/patterns/reveal.css +92 -0
  28. package/assets/css/patterns/scroll-based.css +1 -1
  29. package/assets/css/patterns/scroll-target.css +3 -3
  30. package/assets/css/patterns/sitenav.css +14 -14
  31. package/assets/css/patterns/split-link.css +4 -4
  32. package/assets/css/patterns/subgrid.css +7 -2
  33. package/assets/css/patterns/tag.css +1 -1
  34. package/assets/css/patterns/text-effects.css +1 -1
  35. package/assets/css/patterns/theme-editor.css +43 -6
  36. package/assets/css/patterns/tooltip.css +2 -2
  37. package/assets/css/patterns/tree.css +3 -3
  38. package/assets/css/utilities.css +19 -98
  39. package/assets/js/consent.js +1 -0
  40. package/assets/js/deferred.js +1 -1
  41. package/assets/js/editor.js +2 -2
  42. package/dist/index.d.mts +1218 -376
  43. package/dist/index.d.mts.map +1 -1
  44. package/dist/index.mjs +4384 -1784
  45. package/dist/index.mjs.map +1 -1
  46. package/package.json +5 -3
  47. package/schema.json +54 -12
  48. package/site.schema.json +648 -458
package/dist/index.d.mts CHANGED
@@ -1,25 +1,37 @@
1
1
  import * as z from "zod/mini";
2
+ import { ContentNode } from "@getvitops/utils";
2
3
 
3
4
  //#region src/schema.d.ts
4
5
  declare const DesignSystemSchema: z.ZodMiniObject<{
5
6
  $schema: z.ZodMiniOptional<z.ZodMiniString<string>>;
7
+ meta: z.ZodMiniOptional<z.ZodMiniObject<{
8
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
9
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
10
+ }, z.z.core.$strict>>;
6
11
  colors: z.ZodMiniObject<{
7
12
  palette: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniObject<{
8
13
  seed: z.ZodMiniString<string>;
9
14
  anchors: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
10
- }, z.z.core.$strip>, z.ZodMiniObject<{
15
+ }, z.z.core.$strict>, z.ZodMiniObject<{
11
16
  tones: z.ZodMiniUnion<readonly [z.ZodMiniArray<z.ZodMiniString<string>>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>]>;
12
- }, z.z.core.$strip>]>>;
13
- roles: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>;
17
+ }, z.z.core.$strict>]>>;
18
+ roles: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
19
+ hue: z.ZodMiniString<string>;
20
+ kind: z.ZodMiniOptional<z.ZodMiniEnum<{
21
+ surface: "surface";
22
+ chromatic: "chromatic";
23
+ }>>;
24
+ }, z.z.core.$strict>]>>;
14
25
  utilities: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniEnum<{
15
26
  bg: "bg";
16
27
  text: "text";
28
+ icon: "icon";
17
29
  border: "border";
18
30
  outline: "outline";
19
31
  fill: "fill";
20
32
  stroke: "stroke";
21
33
  }>>>;
22
- }, z.z.core.$strip>;
34
+ }, z.z.core.$strict>;
23
35
  shadows: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
24
36
  fonts: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
25
37
  typeScale: z.ZodMiniOptional<z.ZodMiniObject<{
@@ -33,8 +45,8 @@ declare const DesignSystemSchema: z.ZodMiniObject<{
33
45
  minVw: z.ZodMiniString<string>;
34
46
  maxVw: z.ZodMiniString<string>;
35
47
  minRatio: z.ZodMiniNumber<number>;
36
- }, z.z.core.$strip>>;
37
- }, z.z.core.$strip>>;
48
+ }, z.z.core.$strict>>;
49
+ }, z.z.core.$strict>>;
38
50
  spaceScale: z.ZodMiniOptional<z.ZodMiniObject<{
39
51
  base: z.ZodMiniString<string>;
40
52
  ratio: z.ZodMiniNumber<number>;
@@ -46,8 +58,8 @@ declare const DesignSystemSchema: z.ZodMiniObject<{
46
58
  minVw: z.ZodMiniString<string>;
47
59
  maxVw: z.ZodMiniString<string>;
48
60
  minRatio: z.ZodMiniNumber<number>;
49
- }, z.z.core.$strip>>;
50
- }, z.z.core.$strip>>;
61
+ }, z.z.core.$strict>>;
62
+ }, z.z.core.$strict>>;
51
63
  patterns: z.ZodMiniOptional<z.ZodMiniObject<{
52
64
  defaults: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
53
65
  radii: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
@@ -63,25 +75,25 @@ declare const DesignSystemSchema: z.ZodMiniObject<{
63
75
  base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
64
76
  states: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>>>;
65
77
  roles: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
66
- }, z.z.core.$strip>>>;
67
- }, z.z.core.$strip>>;
78
+ }, z.z.core.$strict>>>;
79
+ }, z.z.core.$strict>>;
68
80
  typography: z.ZodMiniOptional<z.ZodMiniObject<{
69
81
  families: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
70
82
  roles: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
71
83
  headings: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
72
- }, z.z.core.$strip>>;
84
+ }, z.z.core.$strict>>;
73
85
  animations: z.ZodMiniOptional<z.ZodMiniObject<{
74
86
  effects: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
75
87
  kf: z.ZodMiniString<string>;
76
88
  css: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
77
89
  vars: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
78
- }, z.z.core.$strip>>>;
90
+ }, z.z.core.$strict>>>;
79
91
  journeys: z.ZodMiniOptional<z.ZodMiniObject<{
80
92
  base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
81
93
  compose: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniArray<z.ZodMiniString<string>>>>;
82
- }, z.z.core.$strip>>;
83
- }, z.z.core.$strip>>;
84
- }, z.z.core.$strip>;
94
+ }, z.z.core.$strict>>;
95
+ }, z.z.core.$strict>>;
96
+ }, z.z.core.$strict>;
85
97
  type DesignSystem = z.infer<typeof DesignSystemSchema>;
86
98
  /**
87
99
  * Stable URL of the published JSON Schema. Resolves once `@getvitops/generator` is on
@@ -93,23 +105,34 @@ declare const SCHEMA_URL = "https://unpkg.com/@getvitops/generator/schema.json";
93
105
  declare const jsonSchema: {
94
106
  "~standard": z.z.core.ZodStandardSchemaWithJSON<z.ZodMiniObject<{
95
107
  $schema: z.ZodMiniOptional<z.ZodMiniString<string>>;
108
+ meta: z.ZodMiniOptional<z.ZodMiniObject<{
109
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
110
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
111
+ }, z.z.core.$strict>>;
96
112
  colors: z.ZodMiniObject<{
97
113
  palette: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniObject<{
98
114
  seed: z.ZodMiniString<string>;
99
115
  anchors: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
100
- }, z.z.core.$strip>, z.ZodMiniObject<{
116
+ }, z.z.core.$strict>, z.ZodMiniObject<{
101
117
  tones: z.ZodMiniUnion<readonly [z.ZodMiniArray<z.ZodMiniString<string>>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>]>;
102
- }, z.z.core.$strip>]>>;
103
- roles: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>;
118
+ }, z.z.core.$strict>]>>;
119
+ roles: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
120
+ hue: z.ZodMiniString<string>;
121
+ kind: z.ZodMiniOptional<z.ZodMiniEnum<{
122
+ surface: "surface";
123
+ chromatic: "chromatic";
124
+ }>>;
125
+ }, z.z.core.$strict>]>>;
104
126
  utilities: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniEnum<{
105
127
  bg: "bg";
106
128
  text: "text";
129
+ icon: "icon";
107
130
  border: "border";
108
131
  outline: "outline";
109
132
  fill: "fill";
110
133
  stroke: "stroke";
111
134
  }>>>;
112
- }, z.z.core.$strip>;
135
+ }, z.z.core.$strict>;
113
136
  shadows: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
114
137
  fonts: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
115
138
  typeScale: z.ZodMiniOptional<z.ZodMiniObject<{
@@ -123,8 +146,8 @@ declare const jsonSchema: {
123
146
  minVw: z.ZodMiniString<string>;
124
147
  maxVw: z.ZodMiniString<string>;
125
148
  minRatio: z.ZodMiniNumber<number>;
126
- }, z.z.core.$strip>>;
127
- }, z.z.core.$strip>>;
149
+ }, z.z.core.$strict>>;
150
+ }, z.z.core.$strict>>;
128
151
  spaceScale: z.ZodMiniOptional<z.ZodMiniObject<{
129
152
  base: z.ZodMiniString<string>;
130
153
  ratio: z.ZodMiniNumber<number>;
@@ -136,8 +159,8 @@ declare const jsonSchema: {
136
159
  minVw: z.ZodMiniString<string>;
137
160
  maxVw: z.ZodMiniString<string>;
138
161
  minRatio: z.ZodMiniNumber<number>;
139
- }, z.z.core.$strip>>;
140
- }, z.z.core.$strip>>;
162
+ }, z.z.core.$strict>>;
163
+ }, z.z.core.$strict>>;
141
164
  patterns: z.ZodMiniOptional<z.ZodMiniObject<{
142
165
  defaults: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
143
166
  radii: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
@@ -153,25 +176,25 @@ declare const jsonSchema: {
153
176
  base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
154
177
  states: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>>>;
155
178
  roles: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
156
- }, z.z.core.$strip>>>;
157
- }, z.z.core.$strip>>;
179
+ }, z.z.core.$strict>>>;
180
+ }, z.z.core.$strict>>;
158
181
  typography: z.ZodMiniOptional<z.ZodMiniObject<{
159
182
  families: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
160
183
  roles: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
161
184
  headings: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
162
- }, z.z.core.$strip>>;
185
+ }, z.z.core.$strict>>;
163
186
  animations: z.ZodMiniOptional<z.ZodMiniObject<{
164
187
  effects: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
165
188
  kf: z.ZodMiniString<string>;
166
189
  css: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
167
190
  vars: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
168
- }, z.z.core.$strip>>>;
191
+ }, z.z.core.$strict>>>;
169
192
  journeys: z.ZodMiniOptional<z.ZodMiniObject<{
170
193
  base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
171
194
  compose: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniArray<z.ZodMiniString<string>>>>;
172
- }, z.z.core.$strip>>;
173
- }, z.z.core.$strip>>;
174
- }, z.z.core.$strip>>;
195
+ }, z.z.core.$strict>>;
196
+ }, z.z.core.$strict>>;
197
+ }, z.z.core.$strict>>;
175
198
  $schema?: "https://json-schema.org/draft/2020-12/schema" | "http://json-schema.org/draft-07/schema#" | "http://json-schema.org/draft-04/schema#";
176
199
  $id: string;
177
200
  $anchor?: string;
@@ -254,142 +277,91 @@ type ValidationResult = {
254
277
  */
255
278
  declare function validate(input: unknown): ValidationResult;
256
279
  //#endregion
257
- //#region src/tokens.d.ts
258
- declare const NUMERIC_STEPS: readonly ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"];
259
- type NumStep = (typeof NUMERIC_STEPS)[number];
260
- interface ExpandedHue {
261
- /** Numeric steps (sparse for fixed-tone kits). */
262
- numeric: Partial<Record<NumStep, string>>;
263
- /** True when only authored tones + endpoints exist (no interpolation). */
264
- sparse?: boolean;
265
- }
266
- /** Expand every palette hue into its numeric scale. */
267
- declare function expandPalette(raw: Record<string, unknown>): Record<string, ExpandedHue>;
268
- interface FunctionalRole {
269
- role: string;
270
- hue: string;
271
- /** token → CSS value, per appearance. */
272
- light: Record<string, string>;
273
- dark: Record<string, string>;
274
- }
275
- /** Resolve the functional token set for one role over its hue. */
276
- declare function functionalRole(role: string, hueName: string, hue: ExpandedHue): FunctionalRole;
277
- //#endregion
278
- //#region src/generate.d.ts
279
- type Format = 'bricks' | 'css' | 'tailwind';
280
- interface GenerateOptions {
281
- /** Path to a design-system.json, OR an already-parsed config object. */
282
- input: string | DesignSystem;
283
- /** Output target. Default: 'bricks'. */
284
- format?: Format;
285
- /** Directory to write outputs into. Default: 'dist'. */
286
- outDir?: string;
287
- /** Override the framework asset root (advanced/testing). */
288
- assetsDir?: string;
289
- }
290
- interface GenerateResult {
291
- format: Format;
292
- outDir: string;
293
- written: string[];
294
- }
295
- interface ColorUtility {
296
- /** Class name, without the leading dot. */
297
- cls: string;
298
- /** CSS property the class sets. */
299
- prop: string;
300
- /** `var(--…)` reference the class resolves to. */
301
- value: string;
302
- /** Which of the two axes below produced it. */
303
- axis: 'plane' | 'stop';
304
- }
305
- /**
306
- * Every role colour utility, each class name emitted EXACTLY once.
307
- *
308
- * Two axes share the `<family>-<role>-<modifier>` namespace: the functional
309
- * background/text/border **planes** (`--<role>-bg-muted`) and the
310
- * appearance-relative emphasis **stops** (`--color-<role>-muted`). Where both
311
- * would produce the same class the plane wins.
312
- *
313
- * That precedence used to be implicit — the css path emitted the stop matrix,
314
- * then the planes, and relied on the CSS minifier dropping the shadowed
315
- * earlier rule. The tailwind path never ran the stop half at all, so the two
316
- * formats shipped different vocabularies (87 role classes existed in css and
317
- * not in tailwind) with nothing to catch it. Deciding it here, once, is what
318
- * keeps all three formats in step; `format-parity.test.ts` holds them there.
319
- *
320
- * Order is stops-then-planes to match the css bundle's historical rule order.
321
- */
322
- declare function roleColorUtilities(roles: readonly FunctionalRole[], utilities: readonly string[]): ColorUtility[];
323
- declare function generate(options: GenerateOptions): Promise<GenerateResult>;
324
- //#endregion
325
- //#region src/docs.d.ts
326
- /**
327
- * Build the OKF docs bundle for a config. Returns a `{ relPath: content }` map;
328
- * the caller writes it wherever the bundle should live (e.g. `<outDir>/docs`).
329
- */
330
- declare function generateDocs(ds: DesignSystem, assetsDir: string): Record<string, string>;
331
- //#endregion
332
- //#region src/shared.d.ts
333
- /**
334
- * Data shared between the generator (`generate.ts`) and the docs bundle
335
- * (`docs.ts`). Lives in its own module because `generate.ts` imports `docs.ts` —
336
- * importing back the other way would be a cycle.
337
- */
338
- /**
339
- * Selector the dark functional-token flip hangs off.
340
- *
341
- * `data-brx-theme` is Bricks' own attribute — Bricks sets it, so it's what the
342
- * WordPress target needs. Nothing sets it anywhere else, which meant the dark
343
- * flip was unreachable outside Bricks: the shipped `<color-scheme-toggle>` web
344
- * component writes `documentElement.dataset.theme` (i.e. `data-theme`), so
345
- * clicking "Dark" changed an attribute no rule matched. Matching both makes the
346
- * component work on every target without changing what Bricks already does.
347
- *
348
- * Note this covers the explicit choice only — there is deliberately no
349
- * `prefers-color-scheme` block, so the toggle's "System" position currently
350
- * resolves to light. Adding one would flip every existing consumer site dark for
351
- * dark-OS users, which is a product decision, not a bug fix.
352
- *
353
- * Shared so the docs quote the selector the generator actually emits.
354
- */
355
- declare const DARK_SEL = ":root[data-brx-theme=\"dark\"], :root[data-theme=\"dark\"]";
356
- /**
357
- * Roles the shipped CSS partials reference with NO fallback, so a config that
358
- * omits one leaves those rules resolving to nothing — an invalid declaration,
359
- * not a graceful degrade.
360
- *
361
- * `colors.roles` is an open record: any name works and generates a full token
362
- * set, utilities and dark flip. But the framework's own component CSS is
363
- * written against these six, so "roles are arbitrary" is only half true — they
364
- * are *extensible*, over a required core. `validate()` warns when one is
365
- * missing; `required-roles.test.ts` re-derives this list from the partials so
366
- * it cannot drift as components are added.
367
- *
368
- * Kept as a constant rather than scanned at call time because `validate()` is
369
- * a pure function — the CLI, the Vite plugin and `toJSONSchema` all import it,
370
- * and none of them should touch the filesystem to answer "is this config ok?".
371
- */
372
- declare const REQUIRED_ROLES: readonly string[];
373
- /**
374
- * The functional-token and emphasis-stop suffixes a role resolves to. Shared so
375
- * the required-roles drift test greps for exactly what the generator emits.
376
- */
377
- declare const ROLE_TOKEN_SUFFIXES: readonly string[];
378
- /**
379
- * Pattern base geometry props → per-pattern override-hook shorthand. Each hook
380
- * wraps the authored value (`padding: var(--p-btn, 0.4em 0.8em)`) so a
381
- * consumer restyles one pattern by setting one variable. The hook is named after
382
- * the pattern's key, not its class.
383
- */
384
- declare const BASE_HOOK: Record<string, string>;
280
+ //#region src/site.d.ts
281
+ declare const PostalAddressSchema: z.ZodMiniObject<{
282
+ streetAddress: z.ZodMiniString<string>;
283
+ addressLocality: z.ZodMiniString<string>;
284
+ addressRegion: z.ZodMiniOptional<z.ZodMiniString<string>>;
285
+ postalCode: z.ZodMiniOptional<z.ZodMiniString<string>>;
286
+ addressCountry: z.ZodMiniString<string>;
287
+ }, z.z.core.$strip>;
288
+ declare const ContactObjectSchema: z.ZodMiniObject<{
289
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
290
+ email: z.ZodMiniOptional<z.ZodMiniEmail>;
291
+ phone: z.ZodMiniOptional<z.ZodMiniString<string>>;
292
+ address: z.ZodMiniOptional<z.ZodMiniObject<{
293
+ streetAddress: z.ZodMiniString<string>;
294
+ addressLocality: z.ZodMiniString<string>;
295
+ addressRegion: z.ZodMiniOptional<z.ZodMiniString<string>>;
296
+ postalCode: z.ZodMiniOptional<z.ZodMiniString<string>>;
297
+ addressCountry: z.ZodMiniString<string>;
298
+ }, z.z.core.$strip>>;
299
+ }, z.z.core.$strip>;
300
+ type PostalAddress = z.infer<typeof PostalAddressSchema>;
301
+ type ContactObject = z.infer<typeof ContactObjectSchema>;
302
+ declare const SiteFontSchema: z.ZodMiniObject<{
303
+ name: z.ZodMiniString<string>;
304
+ provider: z.ZodMiniEnum<{
305
+ google: "google";
306
+ fontsource: "fontsource";
307
+ adobe: "adobe";
308
+ bunny: "bunny";
309
+ fontshare: "fontshare";
310
+ googleicons: "googleicons";
311
+ npm: "npm";
312
+ local: "local";
313
+ }>;
314
+ cssVariable: z.ZodMiniString<string>;
315
+ weights: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniNumber<number>, z.ZodMiniString<string>]>>>;
316
+ styles: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniEnum<{
317
+ normal: "normal";
318
+ italic: "italic";
319
+ }>>>;
320
+ subsets: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
321
+ fallbacks: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
322
+ optimizedFallbacks: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
323
+ display: z.ZodMiniOptional<z.ZodMiniEnum<{
324
+ optional: "optional";
325
+ auto: "auto";
326
+ block: "block";
327
+ swap: "swap";
328
+ fallback: "fallback";
329
+ }>>;
330
+ formats: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
331
+ unicodeRange: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
332
+ variants: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
333
+ src: z.ZodMiniArray<z.ZodMiniString<string>>;
334
+ weight: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniNumber<number>, z.ZodMiniString<string>]>>;
335
+ style: z.ZodMiniOptional<z.ZodMiniEnum<{
336
+ normal: "normal";
337
+ italic: "italic";
338
+ }>>;
339
+ unicodeRange: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
340
+ display: z.ZodMiniOptional<z.ZodMiniEnum<{
341
+ optional: "optional";
342
+ auto: "auto";
343
+ block: "block";
344
+ swap: "swap";
345
+ fallback: "fallback";
346
+ }>>;
347
+ }, z.z.core.$strip>>>;
348
+ preload: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniArray<z.ZodMiniObject<{
349
+ weight: z.ZodMiniUnion<readonly [z.ZodMiniNumber<number>, z.ZodMiniString<string>]>;
350
+ style: z.ZodMiniOptional<z.ZodMiniEnum<{
351
+ normal: "normal";
352
+ italic: "italic";
353
+ }>>;
354
+ }, z.z.core.$strip>>]>>;
355
+ }, z.z.core.$strip>;
385
356
  /**
386
- * Framework utility classes whose names collide with Tailwind's own defaults.
387
- * The `tailwind` format strips any rule targeting these — Tailwind provides
388
- * them, so consumers use Tailwind's utilities for these names instead.
357
+ * Which template set the generated legal documents are written against. This is
358
+ * a closed enum rather than a free string because an unrecognised value would
359
+ * otherwise silently fall back to the wrong body of law; `validateSite` rejects
360
+ * anything without a registered template. Add a member here and a matching entry
361
+ * in `legal/templates/index.ts` — the two are checked against each other.
389
362
  */
390
- declare const TW_CLASH: ReadonlySet<string>;
391
- //#endregion
392
- //#region src/site.d.ts
363
+ declare const JURISDICTIONS: readonly ["ca"];
364
+ type Jurisdiction = (typeof JURISDICTIONS)[number];
393
365
  declare const SiteConfigSchema: z.ZodMiniObject<{
394
366
  defaultLocale: z.ZodMiniString<string>;
395
367
  locales: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
@@ -557,124 +529,137 @@ declare const SiteConfigSchema: z.ZodMiniObject<{
557
529
  overrides: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>>;
558
530
  }, z.z.core.$strip>>>;
559
531
  }, z.z.core.$strip>>;
560
- designSystem: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
561
- $schema: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniString<string>>>;
562
- shadows: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
563
- fonts: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
564
- typeScale: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
565
- base: z.ZodMiniString<string>;
566
- ratio: z.ZodMiniNumber<number>;
567
- steps: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
568
- names: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
569
- baseStep: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
570
- baseline: z.ZodMiniOptional<z.ZodMiniString<string>>;
571
- fluid: z.ZodMiniOptional<z.ZodMiniObject<{
572
- minVw: z.ZodMiniString<string>;
573
- maxVw: z.ZodMiniString<string>;
574
- minRatio: z.ZodMiniNumber<number>;
575
- }, z.z.core.$strip>>;
576
- }, z.z.core.$strip>>>;
577
- spaceScale: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
578
- base: z.ZodMiniString<string>;
579
- ratio: z.ZodMiniNumber<number>;
580
- steps: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
581
- names: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
582
- baseStep: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
583
- baseline: z.ZodMiniOptional<z.ZodMiniString<string>>;
584
- fluid: z.ZodMiniOptional<z.ZodMiniObject<{
585
- minVw: z.ZodMiniString<string>;
586
- maxVw: z.ZodMiniString<string>;
587
- minRatio: z.ZodMiniNumber<number>;
588
- }, z.z.core.$strip>>;
589
- }, z.z.core.$strip>>>;
590
- patterns: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
591
- defaults: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
592
- radii: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
593
- groups: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
594
- z: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniNumber<number>>>;
595
- items: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
596
- group: z.ZodMiniOptional<z.ZodMiniString<string>>;
597
- overrides: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
598
- element: z.ZodMiniOptional<z.ZodMiniString<string>>;
599
- class: z.ZodMiniOptional<z.ZodMiniString<string>>;
600
- fill: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
601
- default_role: z.ZodMiniOptional<z.ZodMiniString<string>>;
602
- base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
603
- states: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>>>;
604
- roles: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
605
- }, z.z.core.$strip>>>;
606
- }, z.z.core.$strip>>>;
607
- typography: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
608
- families: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
609
- roles: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
610
- headings: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
611
- }, z.z.core.$strip>>>;
612
- animations: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
613
- effects: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
614
- kf: z.ZodMiniString<string>;
615
- css: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
616
- vars: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
617
- }, z.z.core.$strip>>>;
618
- journeys: z.ZodMiniOptional<z.ZodMiniObject<{
619
- base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
620
- compose: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniArray<z.ZodMiniString<string>>>>;
621
- }, z.z.core.$strip>>;
622
- }, z.z.core.$strip>>>;
623
- colors: z.ZodMiniOptional<z.ZodMiniObject<{
624
- palette: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniObject<{
625
- seed: z.ZodMiniString<string>;
626
- anchors: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
627
- }, z.z.core.$strip>, z.ZodMiniObject<{
628
- tones: z.ZodMiniUnion<readonly [z.ZodMiniArray<z.ZodMiniString<string>>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>]>;
629
- }, z.z.core.$strip>]>>>;
630
- roles: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
631
- utilities: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniEnum<{
632
- bg: "bg";
633
- text: "text";
634
- border: "border";
635
- outline: "outline";
636
- fill: "fill";
637
- stroke: "stroke";
638
- }>>>;
639
- }, z.z.core.$strip>>;
640
- displayName: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>]>>;
641
- extends: z.ZodMiniOptional<z.ZodMiniString<string>>;
642
- }, z.z.core.$strip>>;
643
- defaultTheme: z.ZodMiniOptional<z.ZodMiniString<string>>;
644
- defaultColorScheme: z.ZodMiniOptional<z.ZodMiniEnum<{
645
- light: "light";
646
- dark: "dark";
647
- }>>;
648
- respectSystemPreference: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
649
- fonts: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
650
- name: z.ZodMiniString<string>;
651
- provider: z.ZodMiniEnum<{
652
- google: "google";
653
- fontsource: "fontsource";
654
- adobe: "adobe";
655
- bunny: "bunny";
656
- fontshare: "fontshare";
657
- googleicons: "googleicons";
658
- npm: "npm";
659
- local: "local";
660
- }>;
661
- cssVariable: z.ZodMiniString<string>;
662
- weights: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniNumber<number>, z.ZodMiniString<string>]>>>;
663
- styles: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniEnum<{
664
- normal: "normal";
665
- italic: "italic";
666
- }>>>;
667
- subsets: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
668
- fallbacks: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
669
- optimizedFallbacks: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
670
- display: z.ZodMiniOptional<z.ZodMiniEnum<{
671
- optional: "optional";
672
- auto: "auto";
673
- block: "block";
674
- swap: "swap";
675
- fallback: "fallback";
676
- }>>;
677
- formats: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
532
+ designSystem: z.ZodMiniObject<{
533
+ themes: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
534
+ $schema: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniString<string>>>;
535
+ meta: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
536
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
537
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
538
+ }, z.z.core.$strict>>>;
539
+ shadows: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
540
+ fonts: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
541
+ typeScale: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
542
+ base: z.ZodMiniString<string>;
543
+ ratio: z.ZodMiniNumber<number>;
544
+ steps: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
545
+ names: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
546
+ baseStep: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
547
+ baseline: z.ZodMiniOptional<z.ZodMiniString<string>>;
548
+ fluid: z.ZodMiniOptional<z.ZodMiniObject<{
549
+ minVw: z.ZodMiniString<string>;
550
+ maxVw: z.ZodMiniString<string>;
551
+ minRatio: z.ZodMiniNumber<number>;
552
+ }, z.z.core.$strict>>;
553
+ }, z.z.core.$strict>>>;
554
+ spaceScale: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
555
+ base: z.ZodMiniString<string>;
556
+ ratio: z.ZodMiniNumber<number>;
557
+ steps: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
558
+ names: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
559
+ baseStep: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
560
+ baseline: z.ZodMiniOptional<z.ZodMiniString<string>>;
561
+ fluid: z.ZodMiniOptional<z.ZodMiniObject<{
562
+ minVw: z.ZodMiniString<string>;
563
+ maxVw: z.ZodMiniString<string>;
564
+ minRatio: z.ZodMiniNumber<number>;
565
+ }, z.z.core.$strict>>;
566
+ }, z.z.core.$strict>>>;
567
+ patterns: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
568
+ defaults: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
569
+ radii: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
570
+ groups: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
571
+ z: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniNumber<number>>>;
572
+ items: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
573
+ group: z.ZodMiniOptional<z.ZodMiniString<string>>;
574
+ overrides: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
575
+ element: z.ZodMiniOptional<z.ZodMiniString<string>>;
576
+ class: z.ZodMiniOptional<z.ZodMiniString<string>>;
577
+ fill: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
578
+ default_role: z.ZodMiniOptional<z.ZodMiniString<string>>;
579
+ base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
580
+ states: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>>>;
581
+ roles: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
582
+ }, z.z.core.$strict>>>;
583
+ }, z.z.core.$strict>>>;
584
+ typography: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
585
+ families: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
586
+ roles: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
587
+ headings: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
588
+ }, z.z.core.$strict>>>;
589
+ animations: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
590
+ effects: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
591
+ kf: z.ZodMiniString<string>;
592
+ css: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
593
+ vars: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
594
+ }, z.z.core.$strict>>>;
595
+ journeys: z.ZodMiniOptional<z.ZodMiniObject<{
596
+ base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
597
+ compose: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniArray<z.ZodMiniString<string>>>>;
598
+ }, z.z.core.$strict>>;
599
+ }, z.z.core.$strict>>>;
600
+ colors: z.ZodMiniOptional<z.ZodMiniObject<{
601
+ palette: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniObject<{
602
+ seed: z.ZodMiniString<string>;
603
+ anchors: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
604
+ }, z.z.core.$strict>, z.ZodMiniObject<{
605
+ tones: z.ZodMiniUnion<readonly [z.ZodMiniArray<z.ZodMiniString<string>>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>]>;
606
+ }, z.z.core.$strict>]>>>;
607
+ roles: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
608
+ hue: z.ZodMiniString<string>;
609
+ kind: z.ZodMiniOptional<z.ZodMiniEnum<{
610
+ surface: "surface";
611
+ chromatic: "chromatic";
612
+ }>>;
613
+ }, z.z.core.$strict>]>>>;
614
+ utilities: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniEnum<{
615
+ bg: "bg";
616
+ text: "text";
617
+ icon: "icon";
618
+ border: "border";
619
+ outline: "outline";
620
+ fill: "fill";
621
+ stroke: "stroke";
622
+ }>>>;
623
+ }, z.z.core.$strict>>;
624
+ displayName: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>]>>;
625
+ extends: z.ZodMiniOptional<z.ZodMiniString<string>>;
626
+ }, z.z.core.$strict>>;
627
+ defaultTheme: z.ZodMiniOptional<z.ZodMiniString<string>>;
628
+ defaultColorScheme: z.ZodMiniOptional<z.ZodMiniEnum<{
629
+ light: "light";
630
+ dark: "dark";
631
+ system: "system";
632
+ }>>;
633
+ }, z.z.core.$strict>;
634
+ fonts: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
635
+ name: z.ZodMiniString<string>;
636
+ provider: z.ZodMiniEnum<{
637
+ google: "google";
638
+ fontsource: "fontsource";
639
+ adobe: "adobe";
640
+ bunny: "bunny";
641
+ fontshare: "fontshare";
642
+ googleicons: "googleicons";
643
+ npm: "npm";
644
+ local: "local";
645
+ }>;
646
+ cssVariable: z.ZodMiniString<string>;
647
+ weights: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniNumber<number>, z.ZodMiniString<string>]>>>;
648
+ styles: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniEnum<{
649
+ normal: "normal";
650
+ italic: "italic";
651
+ }>>>;
652
+ subsets: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
653
+ fallbacks: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
654
+ optimizedFallbacks: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
655
+ display: z.ZodMiniOptional<z.ZodMiniEnum<{
656
+ optional: "optional";
657
+ auto: "auto";
658
+ block: "block";
659
+ swap: "swap";
660
+ fallback: "fallback";
661
+ }>>;
662
+ formats: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
678
663
  unicodeRange: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
679
664
  variants: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
680
665
  src: z.ZodMiniArray<z.ZodMiniString<string>>;
@@ -816,6 +801,12 @@ declare const SiteConfigSchema: z.ZodMiniObject<{
816
801
  googleAnalyticsId: z.ZodMiniOptional<z.ZodMiniString<string>>;
817
802
  plausibleDomain: z.ZodMiniOptional<z.ZodMiniString<string>>;
818
803
  googleTagManagerId: z.ZodMiniOptional<z.ZodMiniString<string>>;
804
+ clarityId: z.ZodMiniOptional<z.ZodMiniString<string>>;
805
+ matomo: z.ZodMiniOptional<z.ZodMiniObject<{
806
+ url: z.ZodMiniString<string>;
807
+ siteId: z.ZodMiniString<string>;
808
+ cookies: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
809
+ }, z.z.core.$strip>>;
819
810
  }, z.z.core.$strip>>;
820
811
  notifications: z.ZodMiniOptional<z.ZodMiniObject<{
821
812
  email: z.ZodMiniOptional<z.ZodMiniEmail>;
@@ -830,15 +821,38 @@ declare const SiteConfigSchema: z.ZodMiniObject<{
830
821
  }, z.z.core.$strip>>;
831
822
  }, z.z.core.$strip>>;
832
823
  legal: z.ZodMiniOptional<z.ZodMiniObject<{
824
+ jurisdiction: z.ZodMiniOptional<z.ZodMiniEnum<{
825
+ ca: "ca";
826
+ }>>;
833
827
  privacyPolicy: z.ZodMiniOptional<z.ZodMiniObject<{
834
828
  enabled: z.ZodMiniBoolean<boolean>;
835
829
  url: z.ZodMiniOptional<z.ZodMiniURL>;
836
830
  lastUpdated: z.ZodMiniOptional<z.ZodMiniString<string>>;
831
+ privacyOfficer: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
832
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
833
+ email: z.ZodMiniOptional<z.ZodMiniEmail>;
834
+ phone: z.ZodMiniOptional<z.ZodMiniString<string>>;
835
+ address: z.ZodMiniOptional<z.ZodMiniObject<{
836
+ streetAddress: z.ZodMiniString<string>;
837
+ addressLocality: z.ZodMiniString<string>;
838
+ addressRegion: z.ZodMiniOptional<z.ZodMiniString<string>>;
839
+ postalCode: z.ZodMiniOptional<z.ZodMiniString<string>>;
840
+ addressCountry: z.ZodMiniString<string>;
841
+ }, z.z.core.$strip>>;
842
+ }, z.z.core.$strip>]>>;
843
+ retention: z.ZodMiniOptional<z.ZodMiniString<string>>;
844
+ processors: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
845
+ name: z.ZodMiniString<string>;
846
+ purpose: z.ZodMiniString<string>;
847
+ country: z.ZodMiniOptional<z.ZodMiniString<string>>;
848
+ privacyUrl: z.ZodMiniOptional<z.ZodMiniURL>;
849
+ }, z.z.core.$strip>>>;
837
850
  }, z.z.core.$strip>>;
838
851
  termsOfService: z.ZodMiniOptional<z.ZodMiniObject<{
839
852
  enabled: z.ZodMiniBoolean<boolean>;
840
853
  url: z.ZodMiniOptional<z.ZodMiniURL>;
841
854
  lastUpdated: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniString<string>>>;
855
+ governingLaw: z.ZodMiniOptional<z.ZodMiniString<string>>;
842
856
  }, z.z.core.$strip>>;
843
857
  cookieConsent: z.ZodMiniOptional<z.ZodMiniObject<{
844
858
  enabled: z.ZodMiniBoolean<boolean>;
@@ -857,6 +871,8 @@ declare const SiteConfigSchema: z.ZodMiniObject<{
857
871
  icons: z.ZodMiniOptional<z.ZodMiniObject<{
858
872
  ui: z.ZodMiniOptional<z.ZodMiniString<string>>;
859
873
  brand: z.ZodMiniOptional<z.ZodMiniString<string>>;
874
+ weight: z.ZodMiniOptional<z.ZodMiniString<string>>;
875
+ sprite: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
860
876
  semantic: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
861
877
  'fa7-solid': z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
862
878
  'fa7-regular': z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
@@ -866,7 +882,8 @@ declare const SiteConfigSchema: z.ZodMiniObject<{
866
882
  'simple-icons': z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
867
883
  'material-symbols': z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
868
884
  lucide: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
869
- }, z.z.core.$strip>>;
885
+ ph: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
886
+ }, z.z.core.$loose>>;
870
887
  favicon: z.ZodMiniOptional<z.ZodMiniObject<{
871
888
  source: z.ZodMiniString<string>;
872
889
  lowResSource: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -883,6 +900,8 @@ declare const SiteConfigSchema: z.ZodMiniObject<{
883
900
  }, z.z.core.$strip>>;
884
901
  }, z.z.core.$strip>;
885
902
  type SiteConfig = z.infer<typeof SiteConfigSchema>;
903
+ /** One `fonts[]` entry — a serialisable projection of an Astro Fonts API family. */
904
+ type SiteFont = z.infer<typeof SiteFontSchema>;
886
905
  declare const SITE_SCHEMA_URL = "https://unpkg.com/@getvitops/generator/site.schema.json";
887
906
  /** The published JSON Schema (draft-2020-12), derived from the zod schema. */
888
907
  declare const siteJsonSchema: {
@@ -1053,95 +1072,108 @@ declare const siteJsonSchema: {
1053
1072
  overrides: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>>;
1054
1073
  }, z.z.core.$strip>>>;
1055
1074
  }, z.z.core.$strip>>;
1056
- designSystem: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
1057
- $schema: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniString<string>>>;
1058
- shadows: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
1059
- fonts: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
1060
- typeScale: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1061
- base: z.ZodMiniString<string>;
1062
- ratio: z.ZodMiniNumber<number>;
1063
- steps: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
1064
- names: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1065
- baseStep: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
1066
- baseline: z.ZodMiniOptional<z.ZodMiniString<string>>;
1067
- fluid: z.ZodMiniOptional<z.ZodMiniObject<{
1068
- minVw: z.ZodMiniString<string>;
1069
- maxVw: z.ZodMiniString<string>;
1070
- minRatio: z.ZodMiniNumber<number>;
1071
- }, z.z.core.$strip>>;
1072
- }, z.z.core.$strip>>>;
1073
- spaceScale: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1074
- base: z.ZodMiniString<string>;
1075
- ratio: z.ZodMiniNumber<number>;
1076
- steps: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
1077
- names: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1078
- baseStep: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
1079
- baseline: z.ZodMiniOptional<z.ZodMiniString<string>>;
1080
- fluid: z.ZodMiniOptional<z.ZodMiniObject<{
1081
- minVw: z.ZodMiniString<string>;
1082
- maxVw: z.ZodMiniString<string>;
1083
- minRatio: z.ZodMiniNumber<number>;
1084
- }, z.z.core.$strip>>;
1085
- }, z.z.core.$strip>>>;
1086
- patterns: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1087
- defaults: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1088
- radii: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1089
- groups: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
1090
- z: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniNumber<number>>>;
1091
- items: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
1092
- group: z.ZodMiniOptional<z.ZodMiniString<string>>;
1093
- overrides: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1094
- element: z.ZodMiniOptional<z.ZodMiniString<string>>;
1095
- class: z.ZodMiniOptional<z.ZodMiniString<string>>;
1096
- fill: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
1097
- default_role: z.ZodMiniOptional<z.ZodMiniString<string>>;
1098
- base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1099
- states: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>>>;
1100
- roles: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1101
- }, z.z.core.$strip>>>;
1102
- }, z.z.core.$strip>>>;
1103
- typography: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1104
- families: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1105
- roles: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
1106
- headings: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1107
- }, z.z.core.$strip>>>;
1108
- animations: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1109
- effects: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
1110
- kf: z.ZodMiniString<string>;
1111
- css: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
1112
- vars: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
1113
- }, z.z.core.$strip>>>;
1114
- journeys: z.ZodMiniOptional<z.ZodMiniObject<{
1115
- base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
1116
- compose: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniArray<z.ZodMiniString<string>>>>;
1117
- }, z.z.core.$strip>>;
1118
- }, z.z.core.$strip>>>;
1119
- colors: z.ZodMiniOptional<z.ZodMiniObject<{
1120
- palette: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniObject<{
1121
- seed: z.ZodMiniString<string>;
1122
- anchors: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1123
- }, z.z.core.$strip>, z.ZodMiniObject<{
1124
- tones: z.ZodMiniUnion<readonly [z.ZodMiniArray<z.ZodMiniString<string>>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>]>;
1125
- }, z.z.core.$strip>]>>>;
1126
- roles: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1127
- utilities: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniEnum<{
1128
- bg: "bg";
1129
- text: "text";
1130
- border: "border";
1131
- outline: "outline";
1132
- fill: "fill";
1133
- stroke: "stroke";
1134
- }>>>;
1135
- }, z.z.core.$strip>>;
1136
- displayName: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>]>>;
1137
- extends: z.ZodMiniOptional<z.ZodMiniString<string>>;
1138
- }, z.z.core.$strip>>;
1139
- defaultTheme: z.ZodMiniOptional<z.ZodMiniString<string>>;
1140
- defaultColorScheme: z.ZodMiniOptional<z.ZodMiniEnum<{
1141
- light: "light";
1142
- dark: "dark";
1143
- }>>;
1144
- respectSystemPreference: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
1075
+ designSystem: z.ZodMiniObject<{
1076
+ themes: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
1077
+ $schema: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniString<string>>>;
1078
+ meta: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1079
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
1080
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
1081
+ }, z.z.core.$strict>>>;
1082
+ shadows: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
1083
+ fonts: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
1084
+ typeScale: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1085
+ base: z.ZodMiniString<string>;
1086
+ ratio: z.ZodMiniNumber<number>;
1087
+ steps: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
1088
+ names: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1089
+ baseStep: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
1090
+ baseline: z.ZodMiniOptional<z.ZodMiniString<string>>;
1091
+ fluid: z.ZodMiniOptional<z.ZodMiniObject<{
1092
+ minVw: z.ZodMiniString<string>;
1093
+ maxVw: z.ZodMiniString<string>;
1094
+ minRatio: z.ZodMiniNumber<number>;
1095
+ }, z.z.core.$strict>>;
1096
+ }, z.z.core.$strict>>>;
1097
+ spaceScale: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1098
+ base: z.ZodMiniString<string>;
1099
+ ratio: z.ZodMiniNumber<number>;
1100
+ steps: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
1101
+ names: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1102
+ baseStep: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
1103
+ baseline: z.ZodMiniOptional<z.ZodMiniString<string>>;
1104
+ fluid: z.ZodMiniOptional<z.ZodMiniObject<{
1105
+ minVw: z.ZodMiniString<string>;
1106
+ maxVw: z.ZodMiniString<string>;
1107
+ minRatio: z.ZodMiniNumber<number>;
1108
+ }, z.z.core.$strict>>;
1109
+ }, z.z.core.$strict>>>;
1110
+ patterns: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1111
+ defaults: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1112
+ radii: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1113
+ groups: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>>;
1114
+ z: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniNumber<number>>>;
1115
+ items: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
1116
+ group: z.ZodMiniOptional<z.ZodMiniString<string>>;
1117
+ overrides: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1118
+ element: z.ZodMiniOptional<z.ZodMiniString<string>>;
1119
+ class: z.ZodMiniOptional<z.ZodMiniString<string>>;
1120
+ fill: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
1121
+ default_role: z.ZodMiniOptional<z.ZodMiniString<string>>;
1122
+ base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1123
+ states: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>>>;
1124
+ roles: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1125
+ }, z.z.core.$strict>>>;
1126
+ }, z.z.core.$strict>>>;
1127
+ typography: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1128
+ families: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1129
+ roles: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
1130
+ headings: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1131
+ }, z.z.core.$strict>>>;
1132
+ animations: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniObject<{
1133
+ effects: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
1134
+ kf: z.ZodMiniString<string>;
1135
+ css: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
1136
+ vars: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
1137
+ }, z.z.core.$strict>>>;
1138
+ journeys: z.ZodMiniOptional<z.ZodMiniObject<{
1139
+ base: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>>;
1140
+ compose: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniArray<z.ZodMiniString<string>>>>;
1141
+ }, z.z.core.$strict>>;
1142
+ }, z.z.core.$strict>>>;
1143
+ colors: z.ZodMiniOptional<z.ZodMiniObject<{
1144
+ palette: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniObject<{
1145
+ seed: z.ZodMiniString<string>;
1146
+ anchors: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>>;
1147
+ }, z.z.core.$strict>, z.ZodMiniObject<{
1148
+ tones: z.ZodMiniUnion<readonly [z.ZodMiniArray<z.ZodMiniString<string>>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>]>;
1149
+ }, z.z.core.$strict>]>>>;
1150
+ roles: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
1151
+ hue: z.ZodMiniString<string>;
1152
+ kind: z.ZodMiniOptional<z.ZodMiniEnum<{
1153
+ surface: "surface";
1154
+ chromatic: "chromatic";
1155
+ }>>;
1156
+ }, z.z.core.$strict>]>>>;
1157
+ utilities: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniEnum<{
1158
+ bg: "bg";
1159
+ text: "text";
1160
+ icon: "icon";
1161
+ border: "border";
1162
+ outline: "outline";
1163
+ fill: "fill";
1164
+ stroke: "stroke";
1165
+ }>>>;
1166
+ }, z.z.core.$strict>>;
1167
+ displayName: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>]>>;
1168
+ extends: z.ZodMiniOptional<z.ZodMiniString<string>>;
1169
+ }, z.z.core.$strict>>;
1170
+ defaultTheme: z.ZodMiniOptional<z.ZodMiniString<string>>;
1171
+ defaultColorScheme: z.ZodMiniOptional<z.ZodMiniEnum<{
1172
+ light: "light";
1173
+ dark: "dark";
1174
+ system: "system";
1175
+ }>>;
1176
+ }, z.z.core.$strict>;
1145
1177
  fonts: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
1146
1178
  name: z.ZodMiniString<string>;
1147
1179
  provider: z.ZodMiniEnum<{
@@ -1312,6 +1344,12 @@ declare const siteJsonSchema: {
1312
1344
  googleAnalyticsId: z.ZodMiniOptional<z.ZodMiniString<string>>;
1313
1345
  plausibleDomain: z.ZodMiniOptional<z.ZodMiniString<string>>;
1314
1346
  googleTagManagerId: z.ZodMiniOptional<z.ZodMiniString<string>>;
1347
+ clarityId: z.ZodMiniOptional<z.ZodMiniString<string>>;
1348
+ matomo: z.ZodMiniOptional<z.ZodMiniObject<{
1349
+ url: z.ZodMiniString<string>;
1350
+ siteId: z.ZodMiniString<string>;
1351
+ cookies: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
1352
+ }, z.z.core.$strip>>;
1315
1353
  }, z.z.core.$strip>>;
1316
1354
  notifications: z.ZodMiniOptional<z.ZodMiniObject<{
1317
1355
  email: z.ZodMiniOptional<z.ZodMiniEmail>;
@@ -1326,15 +1364,38 @@ declare const siteJsonSchema: {
1326
1364
  }, z.z.core.$strip>>;
1327
1365
  }, z.z.core.$strip>>;
1328
1366
  legal: z.ZodMiniOptional<z.ZodMiniObject<{
1367
+ jurisdiction: z.ZodMiniOptional<z.ZodMiniEnum<{
1368
+ ca: "ca";
1369
+ }>>;
1329
1370
  privacyPolicy: z.ZodMiniOptional<z.ZodMiniObject<{
1330
1371
  enabled: z.ZodMiniBoolean<boolean>;
1331
1372
  url: z.ZodMiniOptional<z.ZodMiniURL>;
1332
1373
  lastUpdated: z.ZodMiniOptional<z.ZodMiniString<string>>;
1374
+ privacyOfficer: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
1375
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
1376
+ email: z.ZodMiniOptional<z.ZodMiniEmail>;
1377
+ phone: z.ZodMiniOptional<z.ZodMiniString<string>>;
1378
+ address: z.ZodMiniOptional<z.ZodMiniObject<{
1379
+ streetAddress: z.ZodMiniString<string>;
1380
+ addressLocality: z.ZodMiniString<string>;
1381
+ addressRegion: z.ZodMiniOptional<z.ZodMiniString<string>>;
1382
+ postalCode: z.ZodMiniOptional<z.ZodMiniString<string>>;
1383
+ addressCountry: z.ZodMiniString<string>;
1384
+ }, z.z.core.$strip>>;
1385
+ }, z.z.core.$strip>]>>;
1386
+ retention: z.ZodMiniOptional<z.ZodMiniString<string>>;
1387
+ processors: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
1388
+ name: z.ZodMiniString<string>;
1389
+ purpose: z.ZodMiniString<string>;
1390
+ country: z.ZodMiniOptional<z.ZodMiniString<string>>;
1391
+ privacyUrl: z.ZodMiniOptional<z.ZodMiniURL>;
1392
+ }, z.z.core.$strip>>>;
1333
1393
  }, z.z.core.$strip>>;
1334
1394
  termsOfService: z.ZodMiniOptional<z.ZodMiniObject<{
1335
1395
  enabled: z.ZodMiniBoolean<boolean>;
1336
1396
  url: z.ZodMiniOptional<z.ZodMiniURL>;
1337
1397
  lastUpdated: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniString<string>>>;
1398
+ governingLaw: z.ZodMiniOptional<z.ZodMiniString<string>>;
1338
1399
  }, z.z.core.$strip>>;
1339
1400
  cookieConsent: z.ZodMiniOptional<z.ZodMiniObject<{
1340
1401
  enabled: z.ZodMiniBoolean<boolean>;
@@ -1353,6 +1414,8 @@ declare const siteJsonSchema: {
1353
1414
  icons: z.ZodMiniOptional<z.ZodMiniObject<{
1354
1415
  ui: z.ZodMiniOptional<z.ZodMiniString<string>>;
1355
1416
  brand: z.ZodMiniOptional<z.ZodMiniString<string>>;
1417
+ weight: z.ZodMiniOptional<z.ZodMiniString<string>>;
1418
+ sprite: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
1356
1419
  semantic: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1357
1420
  'fa7-solid': z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1358
1421
  'fa7-regular': z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
@@ -1362,7 +1425,8 @@ declare const siteJsonSchema: {
1362
1425
  'simple-icons': z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1363
1426
  'material-symbols': z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1364
1427
  lucide: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1365
- }, z.z.core.$strip>>;
1428
+ ph: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1429
+ }, z.z.core.$loose>>;
1366
1430
  favicon: z.ZodMiniOptional<z.ZodMiniObject<{
1367
1431
  source: z.ZodMiniString<string>;
1368
1432
  lowResSource: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -1455,6 +1519,15 @@ type SiteValidationResult = {
1455
1519
  * These live only here — the published JSON Schema enforces shape, not integrity.
1456
1520
  */
1457
1521
  declare function validateSite(input: unknown): SiteValidationResult;
1522
+ /**
1523
+ * Resolve who privacy requests go to: the explicit privacy officer, else the
1524
+ * site contact, else the primary location, else the organization itself.
1525
+ *
1526
+ * Exported because `validateSite` and the legal-document derivation must agree
1527
+ * on it exactly — a config that validates must be one the policy can render, and
1528
+ * two copies of this precedence would drift into a policy with a blank address.
1529
+ */
1530
+ declare function resolvePrivacyContact(cfg: SiteConfig): ContactObject | undefined;
1458
1531
  type DesignSystemEntryT = Partial<DesignSystem> & {
1459
1532
  displayName?: unknown;
1460
1533
  extends?: string;
@@ -1469,17 +1542,786 @@ declare function resolveTheme(designSystem: Record<string, DesignSystemEntryT>,
1469
1542
  /**
1470
1543
  * Resolve a raw (already-parsed) config into a validated `SiteConfig`:
1471
1544
  * 1. strip YAML nulls,
1472
- * 2. apply the active A/B variant's `overrides` (by `siteEnv`),
1473
- * 3. normalise a bare-`DesignSystem` `designSystem` shorthand to `{ default: … }`,
1545
+ * 2. normalise the `designSystem` shorthands to `{ themes: … }`,
1546
+ * 3. apply the active A/B variant's `overrides` (by `siteEnv`),
1474
1547
  * 4. validate (shape + cross-field).
1475
1548
  * Pure — no YAML/env access. A loader supplies `siteEnv`.
1549
+ *
1550
+ * Steps 2 and 3 are in this order deliberately. Normalising first means an
1551
+ * `abTesting` override always addresses the canonical shape
1552
+ * (`designSystem.themes.<name>`), whatever shorthand the base config used. With
1553
+ * the merge first, an override's key path depended on how the base happened to be
1554
+ * written — so the same patch hit a different place in two configs that were
1555
+ * otherwise equivalent.
1476
1556
  */
1477
1557
  declare function resolveSiteConfig(input: unknown, siteEnv?: string): SiteConfig;
1558
+ /**
1559
+ * Is this raw config a `SiteConfig` rather than a bare `design-system.json`?
1560
+ *
1561
+ * The discriminator is **total**, not a heuristic, and both halves are load-
1562
+ * bearing: `SiteConfigSchema` cannot validate without a `designSystem` (a config
1563
+ * lacking one fails `validateSite` with `themes must include a "default" entry`),
1564
+ * and `DesignSystemSchema` is strict, so a `designSystem` key in a design system
1565
+ * is an `unrecognized_keys` error. No document can be read as both, and no
1566
+ * document that is neither reaches here without failing validation anyway.
1567
+ *
1568
+ * Deliberately shape-based rather than filename-based: consumers name this file
1569
+ * whatever suits them (`company.json`, `site.json`, `vitops.config.json`), and a
1570
+ * rule keyed to a name would silently stop working the moment someone renamed it.
1571
+ */
1572
+ declare function isSiteConfig(raw: unknown): boolean;
1573
+ /** What a config file turned out to hold. */
1574
+ interface ResolvedInput {
1575
+ /** The design system to build from — a resolved theme, if the input was a `SiteConfig`. */
1576
+ designSystem: DesignSystem;
1577
+ /** The site config, when that is what the input was. */
1578
+ site?: SiteConfig;
1579
+ /** Which `themes` key was selected. Absent for a bare `design-system.json`. */
1580
+ theme?: string;
1581
+ }
1582
+ /**
1583
+ * Resolve a raw config of either kind into the design system to build from.
1584
+ *
1585
+ * Every entry point that used to take a `design-system.json` goes through this,
1586
+ * so a consumer who keeps their tokens inside the larger site config points the
1587
+ * same option at that file instead of maintaining a second one. The site config
1588
+ * is handed back too, because the parts of generation that depend on site-level
1589
+ * facts (`designSystem.defaultColorScheme`, the legal documents, the icon
1590
+ * sprite) would otherwise need the same path declared a second time.
1591
+ *
1592
+ * The returned `designSystem` is **not** validated here — the caller does that,
1593
+ * so it can say which file and which theme the errors belong to. Validation of
1594
+ * the site config itself has already happened (`resolveSiteConfig` throws).
1595
+ */
1596
+ declare function resolveInput(raw: unknown, opts?: {
1597
+ theme?: string;
1598
+ siteEnv?: string;
1599
+ }): ResolvedInput;
1478
1600
  /** Strip nulls (YAML `~`/`null`) → undefined so optional fields validate. */
1479
1601
  declare function stripNulls(obj: unknown): unknown;
1480
1602
  /** Deep-merge `source` into `target` (in place). Arrays replace wholesale. */
1481
1603
  declare function deepMerge(target: Record<string, unknown>, source: Record<string, unknown>): void;
1482
1604
  //#endregion
1605
+ //#region src/tokens.d.ts
1606
+ declare const NUMERIC_STEPS: readonly ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"];
1607
+ type NumStep = (typeof NUMERIC_STEPS)[number];
1608
+ interface ExpandedHue {
1609
+ /** Numeric steps (sparse for fixed-tone kits). */
1610
+ numeric: Partial<Record<NumStep, string>>;
1611
+ /** True when only authored tones + endpoints exist (no interpolation). */
1612
+ sparse?: boolean;
1613
+ /**
1614
+ * Steps the author pinned, and how far each sits from the ladder's lightness.
1615
+ * A pinned colour is reproduced exactly, so a large value here is legal — but
1616
+ * it means this hue reads heavier or lighter than its siblings at that step,
1617
+ * which the generator surfaces as a warning.
1618
+ */
1619
+ deviations?: Partial<Record<NumStep, number>>;
1620
+ }
1621
+ /** Expand every palette hue into its numeric scale. */
1622
+ declare function expandPalette(raw: Record<string, unknown>): Record<string, ExpandedHue>;
1623
+ /** Which shape of token set a role gets. */
1624
+ type RoleKind = 'surface' | 'chromatic';
1625
+ /**
1626
+ * Map a token key to its CSS custom property for a given role.
1627
+ *
1628
+ * `on` is the one irregular case: the foreground for a filled surface reads
1629
+ * `--color-text-on-<role>`, with the role *after* `on`, because it names what it
1630
+ * sits on rather than what it is.
1631
+ *
1632
+ * The utility class name is this minus the `--color-` prefix, which is why the
1633
+ * emitter and the linter can both derive their vocabulary from one function.
1634
+ */
1635
+ declare function tokenVar(role: string, key: string): string;
1636
+ /** The class name a token key produces for a role (`bg-danger-solid`, …). */
1637
+ declare const tokenClass: (role: string, key: string) => string;
1638
+ interface FunctionalRole {
1639
+ role: string;
1640
+ hue: string;
1641
+ kind: RoleKind;
1642
+ /** token key → CSS value, per appearance. */
1643
+ light: Record<string, string>;
1644
+ dark: Record<string, string>;
1645
+ }
1646
+ /** Resolve the token set for one role over its hue. */
1647
+ declare function functionalRole(role: string, hueName: string, hue: ExpandedHue, kind?: RoleKind): FunctionalRole;
1648
+ /**
1649
+ * APCA targets. `TEXT` is the body-text bar; `SECONDARY` covers text on a
1650
+ * non-primary surface and de-emphasised text. `NON_TEXT` is the icon/boundary
1651
+ * tier — the APCA analogue of WCAG's 3:1, where a glyph may run more vivid than
1652
+ * text because shape carries meaning alongside contrast.
1653
+ */
1654
+ declare const CONTRAST: {
1655
+ readonly TEXT: 75;
1656
+ readonly SECONDARY: 60;
1657
+ readonly NON_TEXT: 45;
1658
+ };
1659
+ //#endregion
1660
+ //#region src/generate.d.ts
1661
+ type Format = 'bricks' | 'css' | 'tailwind' | 'design';
1662
+ /**
1663
+ * Formats that emit a stylesheet. `design` is the odd one out — it emits a
1664
+ * single `DESIGN.md` brief and no CSS at all — so anything that expects to
1665
+ * import the generator's output (the Vite plugin's injected stylesheet, the
1666
+ * Astro integration) types against this narrower set.
1667
+ */
1668
+ type StylesheetFormat = Exclude<Format, 'design'>;
1669
+ interface GenerateOptions {
1670
+ /**
1671
+ * The config to build from — a path, or an already-parsed object.
1672
+ *
1673
+ * **Either kind is accepted.** A bare `design-system.json`, or the larger
1674
+ * `SiteConfig` that embeds one (commonly `company.json` / `site.json`), in
1675
+ * which case the design system is `designSystem.themes[theme]` with its
1676
+ * `extends` chain resolved. The two are told apart by shape, not by filename —
1677
+ * see `isSiteConfig`.
1678
+ *
1679
+ * Passing a site config here also supplies `site`, so the site-level facts
1680
+ * generation depends on (`designSystem.defaultColorScheme`, the legal
1681
+ * documents, the icon sprite) don't need the same path declared twice. Each of
1682
+ * those is still gated on a field in that config, so nothing new appears
1683
+ * unless the config asks for it.
1684
+ */
1685
+ input: string | DesignSystem | SiteConfig;
1686
+ /** Output target. Default: 'bricks'. */
1687
+ format?: Format;
1688
+ /** Directory to write outputs into. Default: 'dist'. */
1689
+ outDir?: string;
1690
+ /** Override the framework asset root (advanced/testing). */
1691
+ assetsDir?: string;
1692
+ /**
1693
+ * Which `designSystem.themes` entry to build. Default: the config's
1694
+ * `defaultTheme`, else `default`. An error on a bare `design-system.json`,
1695
+ * which holds one design system and no themes map.
1696
+ */
1697
+ theme?: string;
1698
+ /**
1699
+ * Environment whose A/B variant applies to the site config, wherever it came
1700
+ * from (`input` or `site`). Default: `'production'`.
1701
+ */
1702
+ siteEnv?: string;
1703
+ /**
1704
+ * The site config, when it is a *different* file from `input` — enabling
1705
+ * legal-document output into `<outDir>/legal/*.html` and supplying
1706
+ * `designSystem.defaultColorScheme`.
1707
+ *
1708
+ * Redundant when `input` is already a site config; set both and this one wins.
1709
+ */
1710
+ site?: string | SiteConfig;
1711
+ /**
1712
+ * Emit the `prefers-color-scheme: dark` block (see `BuildOptions`).
1713
+ *
1714
+ * Normally this comes from the site config's `designSystem.defaultColorScheme: "system"`, which
1715
+ * is where the fact belongs. This is the escape hatch for consumers with a
1716
+ * `design-system.json` and no site config at all: requiring a whole
1717
+ * `SiteConfig` — which must carry a full `designSystem` — to set one boolean
1718
+ * would be out of proportion. Set explicitly, it wins over the site config.
1719
+ */
1720
+ systemColorScheme?: boolean;
1721
+ }
1722
+ interface GenerateResult {
1723
+ format: Format;
1724
+ outDir: string;
1725
+ written: string[];
1726
+ }
1727
+ interface ColorUtility {
1728
+ /** Class name, without the leading dot. */
1729
+ cls: string;
1730
+ /** CSS property the class sets. */
1731
+ prop: string;
1732
+ /** `var(--…)` reference the class resolves to. */
1733
+ value: string;
1734
+ }
1735
+ /**
1736
+ * Every role colour utility, each class name emitted EXACTLY once.
1737
+ *
1738
+ * There is now a single axis. The target lives *inside* the token name, so
1739
+ * `bg-danger-muted` and `text-danger-muted` are different tokens and the
1740
+ * collision the old plane/stop precedence rule existed to arbitrate cannot
1741
+ * arise. Both the css/bricks and tailwind paths render from this one list, which
1742
+ * is what keeps the three formats in step; `format-parity.test.ts` holds them
1743
+ * there.
1744
+ *
1745
+ * The class name IS the token name minus `--color-`, so there is no separate
1746
+ * naming rule to drift — see `tokenClass` in tokens.ts.
1747
+ */
1748
+ declare function roleColorUtilities(roles: readonly FunctionalRole[], utilities: readonly string[]): ColorUtility[];
1749
+ declare function generate(options: GenerateOptions): Promise<GenerateResult>;
1750
+ //#endregion
1751
+ //#region src/docs.d.ts
1752
+ /**
1753
+ * Build the OKF docs bundle for a config. Returns a `{ relPath: content }` map;
1754
+ * the caller writes it wherever the bundle should live (e.g. `<outDir>/docs`).
1755
+ */
1756
+ declare function generateDocs(ds: DesignSystem, assetsDir: string): Record<string, string>;
1757
+ //#endregion
1758
+ //#region ../../node_modules/.pnpm/@iconify+types@2.0.0/node_modules/@iconify/types/types.d.ts
1759
+ /**
1760
+ * Icon dimensions.
1761
+ *
1762
+ * Used in:
1763
+ * icon (as is)
1764
+ * alias (overwrite icon's properties)
1765
+ * root of JSON file (default values)
1766
+ */
1767
+ interface IconifyDimenisons {
1768
+ // Left position of viewBox.
1769
+ // Defaults to 0.
1770
+ left?: number; // Top position of viewBox.
1771
+ // Defaults to 0.
1772
+ top?: number; // Width of viewBox.
1773
+ // Defaults to 16.
1774
+ width?: number; // Height of viewBox.
1775
+ // Defaults to 16.
1776
+ height?: number;
1777
+ }
1778
+ /**
1779
+ * Icon transformations.
1780
+ *
1781
+ * Used in:
1782
+ * icon (as is)
1783
+ * alias (merged with icon's properties)
1784
+ */
1785
+ interface IconifyTransformations {
1786
+ // Number of 90 degrees rotations.
1787
+ // 0 = 0, 1 = 90deg and so on.
1788
+ // Defaults to 0.
1789
+ // When merged (such as alias + icon), result is icon.rotation + alias.rotation.
1790
+ rotate?: number; // Horizontal flip.
1791
+ // Defaults to false.
1792
+ // When merged, result is icon.hFlip !== alias.hFlip
1793
+ hFlip?: boolean; // Vertical flip. (see hFlip comments)
1794
+ vFlip?: boolean;
1795
+ }
1796
+ /**
1797
+ * Combination of dimensions and transformations.
1798
+ */
1799
+ interface IconifyOptional extends IconifyDimenisons, IconifyTransformations { //
1800
+ }
1801
+ /**
1802
+ * Alias.
1803
+ */
1804
+ interface IconifyAlias extends IconifyOptional {
1805
+ // Parent icon index without prefix, required.
1806
+ parent: string; // IconifyOptional properties.
1807
+ // Alias should have only properties that it overrides.
1808
+ // Transformations are merged, not overridden. See IconifyTransformations comments.
1809
+ }
1810
+ /**
1811
+ * Icon.
1812
+ */
1813
+ interface IconifyIcon extends IconifyOptional {
1814
+ // Icon body: <path d="..." />, required.
1815
+ body: string; // IconifyOptional properties.
1816
+ // If property is missing in JSON file, look in root object for default value.
1817
+ }
1818
+ /**
1819
+ * Icon with optional parameters that are provided by API and affect only search
1820
+ */
1821
+ interface APIIconAttributes {
1822
+ // True if icon is hidden.
1823
+ // Used in icon sets to keep icons that no longer exist, but should still be accessible
1824
+ // from API, preventing websites from breaking when icon is removed by developer.
1825
+ hidden?: boolean;
1826
+ }
1827
+ interface ExtendedIconifyIcon extends IconifyIcon, APIIconAttributes {}
1828
+ interface ExtendedIconifyAlias extends IconifyAlias, APIIconAttributes {}
1829
+ /**
1830
+ * "icons" field of JSON file.
1831
+ */
1832
+ interface IconifyIcons {
1833
+ // Index is name of icon, without prefix. Value is ExtendedIconifyIcon object.
1834
+ [index: string]: ExtendedIconifyIcon;
1835
+ }
1836
+ /**
1837
+ * "aliases" field of JSON file.
1838
+ */
1839
+ interface IconifyAliases {
1840
+ // Index is name of icon, without prefix. Value is ExtendedIconifyAlias object.
1841
+ [index: string]: ExtendedIconifyAlias;
1842
+ }
1843
+ /**
1844
+ * Icon set information block.
1845
+ */
1846
+ interface IconifyInfo {
1847
+ // Icon set name.
1848
+ name: string; // Total number of icons.
1849
+ total?: number; // Version string.
1850
+ version?: string; // Author information.
1851
+ author: {
1852
+ // Author name.
1853
+ name: string; // Link to author's website or icon set website.
1854
+ url?: string;
1855
+ }; // License
1856
+ license: {
1857
+ // Human readable license.
1858
+ title: string; // SPDX license identifier.
1859
+ spdx?: string; // License URL.
1860
+ url?: string;
1861
+ }; // Array of icons that should be used for samples in icon sets list.
1862
+ samples?: string[]; // Icon grid: number or array of numbers.
1863
+ height?: number | number[]; // Display height for samples: 16 - 24
1864
+ displayHeight?: number; // Category on Iconify collections list.
1865
+ category?: string; // List of tags to group similar icon sets.
1866
+ tags?: string[]; // Palette status. True if icons have predefined color scheme, false if icons use currentColor.
1867
+ // Ideally, icon set should not mix icons with and without palette to simplify search.
1868
+ palette?: boolean; // If true, icon set should not appear in icon sets list.
1869
+ hidden?: boolean;
1870
+ }
1871
+ /**
1872
+ * Optional themes, old format.
1873
+ *
1874
+ * Deprecated because format is unnecessary complicated. Key is meaningless, suffixes and prefixes are mixed together.
1875
+ */
1876
+ interface LegacyIconifyThemes {
1877
+ // Key is unique string.
1878
+ [index: string]: {
1879
+ // Theme title.
1880
+ title: string; // Icon prefix or suffix, including dash. All icons that start with prefix and end with suffix belong to theme.
1881
+ prefix?: string; // Example: 'baseline-'
1882
+ suffix?: string; // Example: '-filled'
1883
+ };
1884
+ }
1885
+ /**
1886
+ * Characters used in font.
1887
+ */
1888
+ interface IconifyChars {
1889
+ // Index is character, such as "f000".
1890
+ // Value is icon name.
1891
+ [index: string]: string;
1892
+ }
1893
+ /**
1894
+ * Icon categories
1895
+ */
1896
+ interface IconifyCategories {
1897
+ // Index is category title, such as "Weather".
1898
+ // Value is array of icons that belong to that category.
1899
+ // Each icon can belong to multiple categories or no categories.
1900
+ [index: string]: string[];
1901
+ }
1902
+ /**
1903
+ * Meta data stored in JSON file, used for browsing icon set.
1904
+ */
1905
+ interface IconifyMetaData {
1906
+ // Icon set information block. Used for public icon sets, can be skipped for private icon sets.
1907
+ info?: IconifyInfo; // Characters used in font. Used for searching by character for icon sets imported from font, exporting icon set to font.
1908
+ chars?: IconifyChars; // Categories. Used for filtering icons.
1909
+ categories?: IconifyCategories; // Optional themes (old format).
1910
+ themes?: LegacyIconifyThemes; // Optional themes (new format). Key is prefix or suffix, value is title.
1911
+ prefixes?: Record<string, string>;
1912
+ suffixes?: Record<string, string>;
1913
+ }
1914
+ /**
1915
+ * JSON structure, contains only icon data
1916
+ */
1917
+ interface IconifyJSONIconsData extends IconifyDimenisons {
1918
+ // Prefix for icons in JSON file, required.
1919
+ prefix: string; // API provider, optional.
1920
+ provider?: string; // List of icons, required.
1921
+ icons: IconifyIcons; // Optional aliases.
1922
+ aliases?: IconifyAliases; // IconifyDimenisons properties that are used as default viewbox for icons when icon is missing value.
1923
+ // If viewbox exists in both icon and root, use value from icon.
1924
+ // This is used to reduce duplication.
1925
+ }
1926
+ /**
1927
+ * JSON structure.
1928
+ *
1929
+ * All optional values can exist in root of JSON file, used as defaults.
1930
+ */
1931
+ interface IconifyJSON extends IconifyJSONIconsData, IconifyMetaData {
1932
+ // Last modification time of icons. Unix time stamp in seconds.
1933
+ // Time is calculated only for icon data, ignoring metadata.
1934
+ // Used to invalidate icons cache in components.
1935
+ lastModified?: number; // Optional list of missing icons. Returned by Iconify API when querying for icons that do not exist.
1936
+ not_found?: string[];
1937
+ }
1938
+ //#endregion
1939
+ //#region src/icons-sprite.d.ts
1940
+ interface IconSpriteOptions {
1941
+ /** Exactly `generateIconInclude()`'s shape: collection → icon names. */
1942
+ include: Record<string, string[]>;
1943
+ /**
1944
+ * Extra ids pointing at an already-included icon, e.g. `{ 'icon-menu': 'ph:list' }`,
1945
+ * so a consumer can reference a semantic name without knowing the set.
1946
+ */
1947
+ aliases?: Record<string, string>;
1948
+ /**
1949
+ * Directory to resolve `@iconify-json/*` from. Defaults to `process.cwd()`.
1950
+ *
1951
+ * Load-bearing: the collections are the CONSUMER's dependency, not this
1952
+ * package's, so a bare `import('@iconify-json/ph/…')` from inside the
1953
+ * generator resolves against the generator's own node_modules and misses them
1954
+ * entirely — which reads as "not installed" on a project that has them.
1955
+ */
1956
+ resolveFrom?: string;
1957
+ /** Injected in tests so the emitter can run without any @iconify-json/* installed. */
1958
+ loadSet?: (prefix: string) => Promise<IconifyJSON | null>;
1959
+ }
1960
+ interface IconSpriteResult {
1961
+ svg: string;
1962
+ /** Every `<symbol>` id emitted, in order. */
1963
+ ids: string[];
1964
+ /** `prefix:name` entries that were asked for but not found. */
1965
+ missing: string[];
1966
+ }
1967
+ /**
1968
+ * `ph:caret-down` → `ph--caret-down`.
1969
+ *
1970
+ * The one place this grammar lives. `Icon.astro` mirrors it and `icon.test.ts`
1971
+ * guards the pair, because a drift here resolves `<use>` to nothing and renders
1972
+ * as an empty box rather than an error.
1973
+ */
1974
+ declare function spriteId(qualified: string): string;
1975
+ declare function buildIconSprite(o: IconSpriteOptions): Promise<IconSpriteResult>;
1976
+ /**
1977
+ * One icon's renderable parts, for inlining into markup.
1978
+ *
1979
+ * Exists because `<Icon />` cannot go through astro-icon: its `./components`
1980
+ * entry is a TypeScript file that Vite must transform, so it can only be
1981
+ * reached by a statically-analysable import — and a static import is exactly
1982
+ * what made the optional peer mandatory for anyone rendering Popover, Details
1983
+ * or Drawer. Reading the collection directly sidesteps the peer entirely and
1984
+ * shares this file's loader with the sprite, so both paths draw the same glyph.
1985
+ */
1986
+ declare function loadIconSvg(qualified: string, opts?: {
1987
+ resolveFrom?: string;
1988
+ loadSet?: (prefix: string) => Promise<IconifyJSON | null>;
1989
+ }): Promise<{
1990
+ viewBox: string;
1991
+ body: string;
1992
+ } | null>;
1993
+ //#endregion
1994
+ //#region src/shared.d.ts
1995
+ /**
1996
+ * Data shared between the generator (`generate.ts`) and the docs bundle
1997
+ * (`docs.ts`). Lives in its own module because `generate.ts` imports `docs.ts` —
1998
+ * importing back the other way would be a cycle.
1999
+ */
2000
+ /**
2001
+ * Selector the dark functional-token flip hangs off.
2002
+ *
2003
+ * `data-brx-theme` is Bricks' own attribute — Bricks sets it, so it's what the
2004
+ * WordPress target needs. Nothing sets it anywhere else, which meant the dark
2005
+ * flip was unreachable outside Bricks: the shipped `<color-scheme-toggle>` web
2006
+ * component writes `documentElement.dataset.theme` (i.e. `data-theme`), so
2007
+ * clicking "Dark" changed an attribute no rule matched. Matching both makes the
2008
+ * component work on every target without changing what Bricks already does.
2009
+ *
2010
+ * This covers the EXPLICIT choice. The OS preference is a second, opt-in block —
2011
+ * see `SYSTEM_DARK_SEL` — because turning it on flips a site dark for dark-OS
2012
+ * users, which is the site's decision rather than the design system's.
2013
+ *
2014
+ * Shared so the docs quote the selector the generator actually emits.
2015
+ */
2016
+ declare const DARK_SEL = ":root[data-brx-theme=\"dark\"], :root[data-theme=\"dark\"]";
2017
+ /**
2018
+ * Roles the shipped CSS partials reference with NO fallback, so a config that
2019
+ * omits one leaves those rules resolving to nothing — an invalid declaration,
2020
+ * not a graceful degrade.
2021
+ *
2022
+ * `colors.roles` is an open record: any name works and generates a full token
2023
+ * set, utilities and dark flip. But the framework's own component CSS is
2024
+ * written against these six, so "roles are arbitrary" is only half true — they
2025
+ * are *extensible*, over a required core. `validate()` warns when one is
2026
+ * missing; `required-roles.test.ts` re-derives this list from the partials so
2027
+ * it cannot drift as components are added.
2028
+ *
2029
+ * Kept as a constant rather than scanned at call time because `validate()` is
2030
+ * a pure function — the CLI, the Vite plugin and `toJSONSchema` all import it,
2031
+ * and none of them should touch the filesystem to answer "is this config ok?".
2032
+ */
2033
+ declare const REQUIRED_ROLES: readonly string[];
2034
+ /**
2035
+ * Every token key a role can resolve to, across both role kinds. Shared so the
2036
+ * required-roles drift test greps for exactly what the generator emits.
2037
+ *
2038
+ * These are *keys*, not var names: the role sits in the middle of the property
2039
+ * (`--color-bg-danger-muted`), so compose them with `tokenVar()` from `tokens.ts`
2040
+ * rather than concatenating by hand.
2041
+ */
2042
+ declare const ROLE_TOKEN_KEYS: readonly string[];
2043
+ /** How a role is authored in `colors.roles`: a bare hue, or a hue plus its kind. */
2044
+ type RoleSpec = string | {
2045
+ hue: string;
2046
+ kind?: 'surface' | 'chromatic' | undefined;
2047
+ };
2048
+ /** The palette hue a role points at, through either authoring form. */
2049
+ declare const roleHue: (spec: RoleSpec) => string;
2050
+ /**
2051
+ * A role's kind. The bare-string shorthand means `chromatic`, because signal
2052
+ * colours are the common case and surfaces are the two or three you name once.
2053
+ */
2054
+ declare const roleKind: (spec: RoleSpec) => "surface" | "chromatic";
2055
+ /**
2056
+ * Pattern base geometry props → per-pattern override-hook shorthand. Each hook
2057
+ * wraps the authored value (`padding: var(--p-btn, 0.4em 0.8em)`) so a
2058
+ * consumer restyles one pattern by setting one variable. The hook is named after
2059
+ * the pattern's key, not its class.
2060
+ */
2061
+ declare const BASE_HOOK: Record<string, string>;
2062
+ /**
2063
+ * Framework utility classes whose names collide with Tailwind's own defaults.
2064
+ * The `tailwind` format strips any rule targeting these — Tailwind provides
2065
+ * them, so consumers use Tailwind's utilities for these names instead.
2066
+ */
2067
+ declare const TW_CLASH: ReadonlySet<string>;
2068
+ //#endregion
2069
+ //#region src/legal/providers.d.ts
2070
+ interface Processor {
2071
+ /** The provider as a reader would recognise it. */
2072
+ name: string;
2073
+ /** Reads after "for": "…to Stripe for payment processing". */
2074
+ purpose: string;
2075
+ /** Reads inside a sentence: "…including the United States". */
2076
+ country?: string | undefined;
2077
+ privacyUrl?: string | undefined;
2078
+ /**
2079
+ * Cookies this provider sets. An empty array is meaningful and not the same as
2080
+ * `undefined`: it asserts the provider is cookieless (Plausible), which the
2081
+ * cookie notice states positively rather than omitting.
2082
+ */
2083
+ cookies?: string[] | undefined;
2084
+ /** A user-facing opt-out, when the provider offers one. */
2085
+ optOut?: string | undefined;
2086
+ }
2087
+ /**
2088
+ * The providers the config can imply. Keyed for testability — a test can assert
2089
+ * a given config resolves to a given key without matching on prose.
2090
+ */
2091
+ declare const KNOWN_PROCESSORS: {
2092
+ googleAnalytics: {
2093
+ name: string;
2094
+ purpose: string;
2095
+ country: string;
2096
+ privacyUrl: string;
2097
+ cookies: string[];
2098
+ optOut: string;
2099
+ };
2100
+ googleTagManager: {
2101
+ name: string;
2102
+ purpose: string;
2103
+ country: string;
2104
+ privacyUrl: string;
2105
+ cookies: never[];
2106
+ };
2107
+ plausible: {
2108
+ name: string;
2109
+ purpose: string;
2110
+ country: string;
2111
+ privacyUrl: string;
2112
+ cookies: never[];
2113
+ };
2114
+ clarity: {
2115
+ name: string;
2116
+ purpose: string;
2117
+ country: string;
2118
+ privacyUrl: string;
2119
+ cookies: string[];
2120
+ optOut: string;
2121
+ };
2122
+ matomo: {
2123
+ name: string;
2124
+ purpose: string;
2125
+ privacyUrl: string;
2126
+ cookies: string[];
2127
+ };
2128
+ matomoCookieless: {
2129
+ name: string;
2130
+ purpose: string;
2131
+ privacyUrl: string;
2132
+ cookies: never[];
2133
+ };
2134
+ turnstile: {
2135
+ name: string;
2136
+ purpose: string;
2137
+ country: string;
2138
+ privacyUrl: string;
2139
+ cookies: string[];
2140
+ };
2141
+ cloudflare: {
2142
+ name: string;
2143
+ purpose: string;
2144
+ country: string;
2145
+ privacyUrl: string;
2146
+ cookies: never[];
2147
+ };
2148
+ vercel: {
2149
+ name: string;
2150
+ purpose: string;
2151
+ country: string;
2152
+ privacyUrl: string;
2153
+ cookies: never[];
2154
+ };
2155
+ netlify: {
2156
+ name: string;
2157
+ purpose: string;
2158
+ country: string;
2159
+ privacyUrl: string;
2160
+ cookies: never[];
2161
+ };
2162
+ };
2163
+ type KnownProcessorKey = keyof typeof KNOWN_PROCESSORS;
2164
+ /**
2165
+ * Which known providers this config implies, in a stable order (analytics →
2166
+ * security → hosting) so the rendered sentence doesn't churn between builds.
2167
+ *
2168
+ * Returns keys rather than processors so a caller can test the detection
2169
+ * independently of the prose attached to it.
2170
+ */
2171
+ declare function detectProcessorKeys(site: SiteConfig): KnownProcessorKey[];
2172
+ /**
2173
+ * Every processor this policy must disclose: the ones implied by the config,
2174
+ * then the ones the consumer declared.
2175
+ *
2176
+ * Consumer entries come last and are never deduplicated against the built-ins —
2177
+ * an explicit declaration is a statement of fact we have no grounds to drop.
2178
+ */
2179
+ declare function resolveProcessors(site: SiteConfig): Processor[];
2180
+ //#endregion
2181
+ //#region src/legal/derive.d.ts
2182
+ /**
2183
+ * The facts every legal template renders from.
2184
+ *
2185
+ * List-shaped fields are `string[]`, not pre-joined strings, because they land
2186
+ * in bullet positions: a template that splices an empty string into a list emits
2187
+ * a stray `-` bullet, and that is exactly the kind of silent breakage a
2188
+ * published policy must not have.
2189
+ */
2190
+ interface PolicyVars {
2191
+ businessName: string;
2192
+ url: string;
2193
+ /** Reads after "at": "…contact our Privacy Officer at <this>." */
2194
+ mailingAddress: string;
2195
+ lastUpdated: string | undefined;
2196
+ /** Extra retention sentence, when the consumer stated one. */
2197
+ retention: string | undefined;
2198
+ /** A consumer-supplied governing-law phrase, which wins over the two below. */
2199
+ governingLaw: string | undefined;
2200
+ /** Province/territory, spelled out — "Ontario", never "ON". */
2201
+ governingProvince: string | undefined;
2202
+ governingCountry: string;
2203
+ /** Circumstances in which personal information is collected. */
2204
+ collectionReasons: string[];
2205
+ /** Categories of personal information collected. */
2206
+ piiCollected: string[];
2207
+ /** What the browser sends automatically. */
2208
+ techInfo: string[];
2209
+ /** Why that technical information is used. */
2210
+ techInfoPurposes: string[];
2211
+ /** What cookies track. */
2212
+ cookieTracked: string[];
2213
+ /** Why cookies are used. */
2214
+ cookiePurposes: string[];
2215
+ /** A sentence about the consent tool, or `undefined` when there is none. */
2216
+ cookieTool: string | undefined;
2217
+ /** How collected information is used. */
2218
+ usePurposes: string[];
2219
+ /** Choices a visitor has. */
2220
+ optOutOptions: string[];
2221
+ /** The subset of `optOutOptions` about cookies — an e-mail unsubscribe link is
2222
+ * not a cookie choice, and listing it in a cookie notice reads as padding. */
2223
+ cookieOptOutOptions: string[];
2224
+ processors: Processor[];
2225
+ /** Reads after "including": "…the United States and the European Union". */
2226
+ countries: string | undefined;
2227
+ consentModel: 'opt-in' | 'opt-out' | 'none';
2228
+ cookieCategories: string[];
2229
+ }
2230
+ declare function derivePolicyVars(site: SiteConfig): PolicyVars;
2231
+ //#endregion
2232
+ //#region src/legal/templates/cookies.ca.d.ts
2233
+ declare function cookiesCa(v: PolicyVars): string;
2234
+ //#endregion
2235
+ //#region src/legal/templates/privacy.ca.d.ts
2236
+ declare function privacyCa(v: PolicyVars): string;
2237
+ //#endregion
2238
+ //#region src/legal/templates/terms.ca.d.ts
2239
+ declare function termsCa(v: PolicyVars): string;
2240
+ //#endregion
2241
+ //#region src/legal/templates/index.d.ts
2242
+ type LegalDoc = 'privacy' | 'terms' | 'cookies';
2243
+ type DocSet = Record<LegalDoc, (v: PolicyVars) => string>;
2244
+ declare const TEMPLATES: {
2245
+ ca: {
2246
+ privacy: typeof privacyCa;
2247
+ terms: typeof termsCa;
2248
+ cookies: typeof cookiesCa;
2249
+ };
2250
+ };
2251
+ /** Stable output order, independent of which docs a given config enables. */
2252
+ declare const DOC_ORDER: LegalDoc[];
2253
+ /** Output filename stem per document — also the Bricks shortcode's allowlist. */
2254
+ declare const DOC_SLUGS: Record<LegalDoc, string>;
2255
+ //#endregion
2256
+ //#region src/legal/render.d.ts
2257
+ interface Span {
2258
+ text: string;
2259
+ strong?: boolean;
2260
+ code?: boolean;
2261
+ }
2262
+ type Block = {
2263
+ kind: 'heading';
2264
+ level: 1 | 2 | 3;
2265
+ spans: Span[];
2266
+ } | {
2267
+ kind: 'paragraph';
2268
+ spans: Span[];
2269
+ } | {
2270
+ kind: 'list';
2271
+ items: Span[][];
2272
+ } | {
2273
+ kind: 'quote';
2274
+ spans: Span[];
2275
+ };
2276
+ /** Markdown (our subset) → blocks. Throws on anything it does not model. */
2277
+ declare function parseMarkdown(md: string): Block[];
2278
+ /**
2279
+ * Blocks → `ContentNode[]`, the framework-agnostic tree the site config already
2280
+ * uses for `templates` of type `nodes` and `NodeRenderer.astro` already renders.
2281
+ */
2282
+ declare function toContentNodes(blocks: Block[]): ContentNode[];
2283
+ declare function toHtmlFragment(blocks: Block[]): string;
2284
+ /**
2285
+ * Blocks → EmDash Portable Text, matching the shape already seeded in
2286
+ * `packages/create/templates/emdash/seed/seed.json`.
2287
+ *
2288
+ * Two deliberate mappings:
2289
+ * - the `# ` heading is **dropped** — in EmDash the page title is a field
2290
+ * (`data.title`), and repeating it as the first content block renders twice;
2291
+ * - the review blockquote becomes a `vitops.banner` with `tone: "warning"`,
2292
+ * which is exactly the block the hand-written placeholder pages used.
2293
+ *
2294
+ * `_key`s are derived from position rather than randomness, so regenerating an
2295
+ * unchanged config produces an identical seed and a clean diff.
2296
+ */
2297
+ declare function toPortableText(blocks: Block[], prefix: string): unknown[];
2298
+ //#endregion
2299
+ //#region src/legal/index.d.ts
2300
+ type LegalOutput = 'md' | 'html' | 'portable-text';
2301
+ interface GenerateLegalOptions {
2302
+ /** Which documents to render. Defaults to those enabled in the config. */
2303
+ docs?: LegalDoc[];
2304
+ /** Output format. Default `md`. */
2305
+ output?: LegalOutput;
2306
+ }
2307
+ /** Which documents the config asks for, in a stable order. */
2308
+ declare function enabledDocs(site: SiteConfig): LegalDoc[];
2309
+ /** Render one document to markdown. The other outputs derive from this. */
2310
+ declare function renderMarkdown(site: SiteConfig, doc: LegalDoc, vars?: PolicyVars): string;
2311
+ /**
2312
+ * Render one document as a `ContentNode` tree — the framework-agnostic shape the
2313
+ * site config already uses for `templates` of type `nodes`, so an Astro consumer
2314
+ * can hand it to `NodeRenderer` instead of injecting a string of HTML.
2315
+ */
2316
+ declare function renderNodes(site: SiteConfig, doc: LegalDoc): ContentNode[];
2317
+ /**
2318
+ * Every enabled legal document, keyed by output path.
2319
+ *
2320
+ * Documents are keyed by filename (`privacy-policy.md`) rather than by document
2321
+ * id so a caller can write the map verbatim.
2322
+ */
2323
+ declare function generateLegal(site: SiteConfig, opts?: GenerateLegalOptions): Record<string, string>;
2324
+ //#endregion
1483
2325
  //#region src/index.d.ts
1484
2326
  /**
1485
2327
  * A minimal but complete starter design system, used by `vitops init`. It
@@ -1488,5 +2330,5 @@ declare function deepMerge(target: Record<string, unknown>, source: Record<strin
1488
2330
  */
1489
2331
  declare function defaultConfig(): DesignSystem;
1490
2332
  //#endregion
1491
- export { BASE_HOOK, type ColorUtility, DARK_SEL, type DesignSystem, DesignSystemSchema, type ExpandedHue, type Format, type FunctionalRole, type GenerateOptions, type GenerateResult, REQUIRED_ROLES, ROLE_TOKEN_SUFFIXES, SCHEMA_URL, SITE_SCHEMA_URL, type SiteConfig, SiteConfigSchema, type SiteValidationResult, TW_CLASH, type ValidationResult, deepMerge, defaultConfig, expandPalette, functionalRole, generate, generateDocs, jsonSchema, resolveSiteConfig, resolveTheme, roleColorUtilities, siteJsonSchema, stripNulls, validate, validateSite };
2333
+ export { BASE_HOOK, type Block, CONTRAST, type ColorUtility, type ContactObject, DARK_SEL, DOC_ORDER, DOC_SLUGS, type DesignSystem, DesignSystemSchema, type DocSet, type ExpandedHue, type Format, type FunctionalRole, type GenerateLegalOptions, type GenerateOptions, type GenerateResult, type IconSpriteOptions, type IconSpriteResult, JURISDICTIONS, type Jurisdiction, KNOWN_PROCESSORS, type KnownProcessorKey, type LegalDoc, type LegalOutput, NUMERIC_STEPS, type PolicyVars, type PostalAddress, type Processor, REQUIRED_ROLES, ROLE_TOKEN_KEYS, type ResolvedInput, type RoleKind, type RoleSpec, SCHEMA_URL, SITE_SCHEMA_URL, type SiteConfig, SiteConfigSchema, type SiteFont, SiteFontSchema, type SiteValidationResult, type Span, type StylesheetFormat, TEMPLATES, TW_CLASH, type ValidationResult, buildIconSprite, deepMerge, defaultConfig, derivePolicyVars, detectProcessorKeys, enabledDocs, expandPalette, functionalRole, generate, generateDocs, generateLegal, isSiteConfig, jsonSchema, loadIconSvg, parseMarkdown, renderMarkdown, renderNodes, resolveInput, resolvePrivacyContact, resolveProcessors, resolveSiteConfig, resolveTheme, roleColorUtilities, roleHue, roleKind, siteJsonSchema, spriteId, stripNulls, toContentNodes, toHtmlFragment, toPortableText, tokenClass, tokenVar, validate, validateSite };
1492
2334
  //# sourceMappingURL=index.d.mts.map