@caltho/site-kit 0.2.10 → 0.3.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 (140) hide show
  1. package/README.md +146 -16
  2. package/dist/behaviors/accordion.d.ts +4 -0
  3. package/dist/behaviors/accordion.js +56 -0
  4. package/dist/behaviors/carousel.d.ts +4 -0
  5. package/dist/behaviors/carousel.js +127 -0
  6. package/dist/behaviors/filter.d.ts +1 -0
  7. package/dist/behaviors/filter.js +25 -0
  8. package/dist/behaviors/index.d.ts +14 -0
  9. package/dist/behaviors/index.js +78 -0
  10. package/dist/behaviors/motion.d.ts +13 -0
  11. package/dist/behaviors/motion.js +88 -0
  12. package/dist/behaviors/tabs.d.ts +3 -0
  13. package/dist/behaviors/tabs.js +55 -0
  14. package/dist/built/css.d.ts +2 -0
  15. package/dist/built/css.js +26 -0
  16. package/dist/built/theme.d.ts +19 -0
  17. package/dist/built/theme.js +86 -0
  18. package/dist/built/tree.d.ts +24 -0
  19. package/dist/built/tree.js +96 -0
  20. package/dist/built.test.d.ts +1 -0
  21. package/dist/built.test.js +257 -0
  22. package/dist/cli/check.js +31 -1
  23. package/dist/consent.d.ts +33 -0
  24. package/dist/consent.js +36 -0
  25. package/dist/consent.test.d.ts +1 -0
  26. package/dist/consent.test.js +61 -0
  27. package/dist/content/index.d.ts +450 -33
  28. package/dist/content/index.js +297 -15
  29. package/dist/content/lists.d.ts +69 -0
  30. package/dist/content/lists.js +77 -0
  31. package/dist/content/lists.test.d.ts +1 -0
  32. package/dist/content/lists.test.js +257 -0
  33. package/dist/content/look.d.ts +260 -9
  34. package/dist/content/look.js +386 -22
  35. package/dist/content-migrate.d.ts +51 -0
  36. package/dist/content-migrate.js +69 -0
  37. package/dist/finish.d.ts +1 -1
  38. package/dist/finish.js +27 -6
  39. package/dist/fonts/families/dm-sans/LICENSE +93 -0
  40. package/dist/fonts/families/dm-sans/dm-sans-latin-ext-wght-italic.woff2 +0 -0
  41. package/dist/fonts/families/dm-sans/dm-sans-latin-ext-wght-normal.woff2 +0 -0
  42. package/dist/fonts/families/dm-sans/dm-sans-latin-wght-italic.woff2 +0 -0
  43. package/dist/fonts/families/dm-sans/dm-sans-latin-wght-normal.woff2 +0 -0
  44. package/dist/fonts/families/fraunces/LICENSE +93 -0
  45. package/dist/fonts/families/fraunces/fraunces-latin-ext-wght-italic.woff2 +0 -0
  46. package/dist/fonts/families/fraunces/fraunces-latin-ext-wght-normal.woff2 +0 -0
  47. package/dist/fonts/families/fraunces/fraunces-latin-wght-italic.woff2 +0 -0
  48. package/dist/fonts/families/fraunces/fraunces-latin-wght-normal.woff2 +0 -0
  49. package/dist/fonts/families/inter/LICENSE +93 -0
  50. package/dist/fonts/families/inter/inter-latin-ext-wght-italic.woff2 +0 -0
  51. package/dist/fonts/families/inter/inter-latin-ext-wght-normal.woff2 +0 -0
  52. package/dist/fonts/families/inter/inter-latin-wght-italic.woff2 +0 -0
  53. package/dist/fonts/families/inter/inter-latin-wght-normal.woff2 +0 -0
  54. package/dist/fonts/families/lora/LICENSE +93 -0
  55. package/dist/fonts/families/lora/lora-latin-ext-wght-italic.woff2 +0 -0
  56. package/dist/fonts/families/lora/lora-latin-ext-wght-normal.woff2 +0 -0
  57. package/dist/fonts/families/lora/lora-latin-wght-italic.woff2 +0 -0
  58. package/dist/fonts/families/lora/lora-latin-wght-normal.woff2 +0 -0
  59. package/dist/fonts/families/manrope/LICENSE +93 -0
  60. package/dist/fonts/families/manrope/manrope-latin-ext-wght-normal.woff2 +0 -0
  61. package/dist/fonts/families/manrope/manrope-latin-wght-normal.woff2 +0 -0
  62. package/dist/fonts/families/newsreader/LICENSE +93 -0
  63. package/dist/fonts/families/newsreader/newsreader-latin-ext-wght-italic.woff2 +0 -0
  64. package/dist/fonts/families/newsreader/newsreader-latin-ext-wght-normal.woff2 +0 -0
  65. package/dist/fonts/families/newsreader/newsreader-latin-wght-italic.woff2 +0 -0
  66. package/dist/fonts/families/newsreader/newsreader-latin-wght-normal.woff2 +0 -0
  67. package/dist/fonts/families/outfit/LICENSE +93 -0
  68. package/dist/fonts/families/outfit/outfit-latin-ext-wght-normal.woff2 +0 -0
  69. package/dist/fonts/families/outfit/outfit-latin-wght-normal.woff2 +0 -0
  70. package/dist/fonts/families/playfair-display/LICENSE +93 -0
  71. package/dist/fonts/families/playfair-display/playfair-display-latin-ext-wght-italic.woff2 +0 -0
  72. package/dist/fonts/families/playfair-display/playfair-display-latin-ext-wght-normal.woff2 +0 -0
  73. package/dist/fonts/families/playfair-display/playfair-display-latin-wght-italic.woff2 +0 -0
  74. package/dist/fonts/families/playfair-display/playfair-display-latin-wght-normal.woff2 +0 -0
  75. package/dist/fonts/families/source-serif-4/LICENSE +93 -0
  76. package/dist/fonts/families/source-serif-4/source-serif-4-latin-ext-wght-italic.woff2 +0 -0
  77. package/dist/fonts/families/source-serif-4/source-serif-4-latin-ext-wght-normal.woff2 +0 -0
  78. package/dist/fonts/families/source-serif-4/source-serif-4-latin-wght-italic.woff2 +0 -0
  79. package/dist/fonts/families/source-serif-4/source-serif-4-latin-wght-normal.woff2 +0 -0
  80. package/dist/fonts/families/work-sans/LICENSE +93 -0
  81. package/dist/fonts/families/work-sans/work-sans-latin-ext-wght-italic.woff2 +0 -0
  82. package/dist/fonts/families/work-sans/work-sans-latin-ext-wght-normal.woff2 +0 -0
  83. package/dist/fonts/families/work-sans/work-sans-latin-wght-italic.woff2 +0 -0
  84. package/dist/fonts/families/work-sans/work-sans-latin-wght-normal.woff2 +0 -0
  85. package/dist/fonts/google.json +1 -0
  86. package/dist/fonts-google.d.ts +35 -0
  87. package/dist/fonts-google.js +70 -0
  88. package/dist/fonts.css +365 -0
  89. package/dist/frame.test.d.ts +1 -0
  90. package/dist/frame.test.js +58 -0
  91. package/dist/migrate.d.ts +45 -0
  92. package/dist/migrate.js +284 -0
  93. package/dist/next/block-mark.d.ts +7 -0
  94. package/dist/next/block-mark.js +16 -0
  95. package/dist/next/blocks.d.ts +11 -0
  96. package/dist/next/blocks.js +35 -0
  97. package/dist/next/built.d.ts +40 -0
  98. package/dist/next/built.js +318 -0
  99. package/dist/next/consent.d.ts +4 -0
  100. package/dist/next/consent.js +13 -0
  101. package/dist/next/data.d.ts +6 -2
  102. package/dist/next/data.js +10 -4
  103. package/dist/next/frame.d.ts +42 -0
  104. package/dist/next/frame.js +73 -0
  105. package/dist/next/index.d.ts +8 -2
  106. package/dist/next/index.js +9 -3
  107. package/dist/next/menu-group.d.ts +11 -0
  108. package/dist/next/menu-group.js +33 -0
  109. package/dist/next/metadata.js +3 -2
  110. package/dist/next/parts/Img.d.ts +6 -1
  111. package/dist/next/parts/Img.js +11 -3
  112. package/dist/next/parts/LookStyle.js +3 -1
  113. package/dist/next/preview.js +511 -27
  114. package/dist/next/sections.d.ts +19 -10
  115. package/dist/next/sections.js +134 -17
  116. package/dist/policies.js +22 -4
  117. package/dist/prepare.d.ts +15 -1
  118. package/dist/prepare.js +125 -3
  119. package/dist/preview-match.d.ts +29 -0
  120. package/dist/preview-match.js +58 -1
  121. package/dist/schema.d.ts +10 -0
  122. package/dist/schema.js +29 -1
  123. package/dist/sections/icons.d.ts +49 -0
  124. package/dist/sections/icons.js +55 -0
  125. package/dist/sections/index.d.ts +188 -12
  126. package/dist/sections/index.js +136 -10
  127. package/dist/sections/presets.d.ts +13 -0
  128. package/dist/sections/presets.js +300 -0
  129. package/dist/sections.css +1584 -41
  130. package/dist/sections.test.js +276 -14
  131. package/dist/seo.js +2 -1
  132. package/dist/tree/behaviors.d.ts +50 -0
  133. package/dist/tree/behaviors.js +67 -0
  134. package/dist/tree/classes.d.ts +24 -0
  135. package/dist/tree/classes.js +94 -0
  136. package/dist/tree/index.d.ts +145 -0
  137. package/dist/tree/index.js +196 -0
  138. package/dist/tree/messages.d.ts +45 -0
  139. package/dist/tree/messages.js +7 -0
  140. package/package.json +22 -3
@@ -1,10 +1,14 @@
1
1
  import type { ShareOptions } from "../share.ts";
2
2
  export type { CardNode, ShareCard, ShareFont, ShareOptions } from "../share.ts";
3
3
  import { z } from "zod";
4
+ import { type Node } from "../tree/index.ts";
5
+ import { type Consent } from "../consent.ts";
4
6
  import { type Look, type LookOptions } from "./look.ts";
5
- export { contrast, lookCss, lookProblems, lookVars, type Look, type LookOptions } from "./look.ts";
6
- export { checkStructure, describePath, type StructureIssue } from "../schema.ts";
7
+ export { COLOUR_ROLES, colourOf, contrast, HEADER_LAYOUTS, HEADER_STYLES, headerOf, isDark, KIT_FONTS, KIT_TYPE, lookCss, lookProblems, lookVars, swatchSlug, TYPE_ROLES, uploadedFontCss, buttonStyleClass, BUTTON_SIZES, MAX_BUTTON_STYLES, THEME_BUTTONS, type ButtonStyle, type ColourRole, type HeaderLayout, type HeaderLook, type HeaderStyle, type Look, type LookOptions, type Space, type Swatch, type TypeRole, type TypeScale, type TypeStyle, type UploadedFont, } from "./look.ts";
8
+ export { fontFaceCss, fontFiles, googleFamily, googleFont, googleFonts, isFontName, servedAt, type FontFile, type FontKind, type GoogleFont } from "../fonts-google.ts";
9
+ export { blockLabel, checkStructure, describePath, type StructureIssue } from "../schema.ts";
7
10
  export { z };
11
+ export { allPages, FIELD_KINDS, fromList, itemOf, itemPages, itemPath, PAGE_LINK, THIS_ITEM, withListItems, type FieldKind, type FromList, type List, type ListField, type ListItem, type ListPage } from "./lists.ts";
8
12
  export declare const text: z.ZodString;
9
13
  /** Longer plain text: drawn as a text area. */
10
14
  export declare const longText: z.ZodString;
@@ -22,6 +26,7 @@ export declare const link: z.ZodObject<{
22
26
  label: z.ZodString;
23
27
  href: z.ZodString;
24
28
  style: z.ZodOptional<z.ZodEnum<{
29
+ accent: "accent";
25
30
  primary: "primary";
26
31
  secondary: "secondary";
27
32
  }>>;
@@ -29,10 +34,15 @@ export declare const link: z.ZodObject<{
29
34
  export declare const time: z.ZodString;
30
35
  export declare const DAYS: readonly ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"];
31
36
  /**
32
- * How a section sits on the page, for a site that offers it (defineSite's `placement`): its alignment,
33
- * width, spacing and the screens it shows on. The site's design says what each means at every width,
34
- * so a choice here stays sensible on a phone. CalOS shows it as the section's Layout. (A block's own
35
- * `layout`, a site's choice of how it's drawn, is a different thing and keeps its name.)
37
+ * How a section sits on the page, offered on every section (defineSite's `placement`, on unless a site
38
+ * turns it off): its alignment, width, spacing, the screens it shows on, and what's behind it. The
39
+ * site's design says what each means at every width, so a choice here stays sensible on a phone.
40
+ * CalOS shows it as the section's Layout. (A block's own `layout`, a site's choice of how it's drawn,
41
+ * is a different thing and keeps its name.)
42
+ *
43
+ * Its background is drawn by KitBlocks (../next/blocks.tsx) as a frame around the section: a colour
44
+ * (one of the page's, by its role, or one of the site's own, by its slug) and a photo, shaded so the
45
+ * words over it read.
36
46
  */
37
47
  export declare const placement: z.ZodObject<{
38
48
  align: z.ZodDefault<z.ZodEnum<{
@@ -41,8 +51,8 @@ export declare const placement: z.ZodObject<{
41
51
  }>>;
42
52
  width: z.ZodDefault<z.ZodEnum<{
43
53
  normal: "normal";
44
- narrow: "narrow";
45
54
  wide: "wide";
55
+ narrow: "narrow";
46
56
  }>>;
47
57
  spacing: z.ZodDefault<z.ZodEnum<{
48
58
  normal: "normal";
@@ -50,16 +60,64 @@ export declare const placement: z.ZodObject<{
50
60
  roomy: "roomy";
51
61
  }>>;
52
62
  show: z.ZodDefault<z.ZodEnum<{
53
- phone: "phone";
54
63
  all: "all";
64
+ phone: "phone";
55
65
  desktop: "desktop";
56
66
  }>>;
67
+ lines: z.ZodOptional<z.ZodEnum<{
68
+ top: "top";
69
+ none: "none";
70
+ both: "both";
71
+ bottom: "bottom";
72
+ }>>;
73
+ lineColour: z.ZodOptional<z.ZodEnum<{
74
+ strong: "strong";
75
+ quiet: "quiet";
76
+ }>>;
77
+ background: z.ZodOptional<z.ZodObject<{
78
+ color: z.ZodOptional<z.ZodString>;
79
+ photo: z.ZodOptional<z.ZodObject<{
80
+ src: z.ZodString;
81
+ alt: z.ZodString;
82
+ }, z.core.$strip>>;
83
+ overlay: z.ZodDefault<z.ZodEnum<{
84
+ dark: "dark";
85
+ none: "none";
86
+ light: "light";
87
+ }>>;
88
+ }, z.core.$strip>>;
57
89
  }, z.core.$strip>;
58
90
  export type Placement = z.output<typeof placement>;
59
- /** A section's placement as class names, only what differs from the usual: "place-align-center place-width-narrow", or "". */
91
+ export type Background = NonNullable<Placement["background"]>;
92
+ /** A section's placement as class names, only what differs from the usual: "place-align-center place-width-narrow", or "". Its background is the frame's (frameClass). */
60
93
  export declare function placementClass(block: {
61
94
  placement?: Partial<Placement>;
62
95
  }): string;
96
+ /** The classes of the lines across a section's full width (KitBlocks wraps it in them), or "" for none. */
97
+ export declare function linesClass(block: {
98
+ placement?: Partial<Placement>;
99
+ }): string;
100
+ /** Whether a section has something behind it (a colour or a photo), and so a frame. */
101
+ export declare function hasBackground(block: {
102
+ placement?: Partial<Placement>;
103
+ }): boolean;
104
+ /**
105
+ * Whether a section's background is dark, so its words go light: under a photo, by its shade (dark
106
+ * or none: light words; light: dark words); else by its colour's value in the Look (`vars`, from
107
+ * lookVars, at build and in the preview alike). A colour it can't find counts as light.
108
+ */
109
+ export declare function backgroundIsDark(block: {
110
+ placement?: Partial<Placement>;
111
+ }, vars?: Record<string, string>): boolean;
112
+ /**
113
+ * The classes of the frame KitBlocks draws around a section with a background, or "" for one
114
+ * without: `kit-frame`, its colour (`kit-bg-soft`, or `kit-bg-swatch-2` for the site's second own
115
+ * colour, found in `vars`), `kit-frame-photo kit-overlay-dark` under a photo, and `kit-frame-dark`
116
+ * when its words go light (backgroundIsDark). sections.css draws them from the Look's variables.
117
+ */
118
+ export declare function frameClass(block: {
119
+ placement?: Partial<Placement>;
120
+ }, vars?: Record<string, string>): string;
63
121
  /** The business's facts: the header, footer, hours, contact details and search data all come from here. */
64
122
  export declare const business: z.ZodObject<{
65
123
  name: z.ZodString;
@@ -137,16 +195,22 @@ export type Redirect = {
137
195
  status: 301 | 302;
138
196
  };
139
197
  /** What every site has, whatever its blocks. */
198
+ /** A link in the menu; `children` (up to 8, one level) open under it: a dropdown on a wide screen, indented in a phone's menu. */
140
199
  export type MenuLink = {
141
200
  label: string;
142
201
  href: string;
143
202
  emphasis?: boolean;
203
+ children?: {
204
+ label: string;
205
+ href: string;
206
+ }[];
144
207
  };
145
208
  export type Menu = {
146
209
  links: MenuLink[];
147
210
  button?: {
148
211
  label: string;
149
212
  href: string;
213
+ style?: string;
150
214
  };
151
215
  };
152
216
  export type FooterLink = {
@@ -162,6 +226,8 @@ export type Footer = {
162
226
  note?: string;
163
227
  };
164
228
  export type SiteBase = {
229
+ format?: number; /** Whether it asks before counting visits, and its banner (../consent.ts). */
230
+ consent?: Consent;
165
231
  url: string;
166
232
  lang: string;
167
233
  business: Business;
@@ -171,11 +237,12 @@ export type SiteBase = {
171
237
  look?: Look;
172
238
  redirects: Redirect[]; /** Whether page paths end in a slash (the default). */
173
239
  trailingSlash?: boolean; /** Set by prepare, never in content: CalOS counts this site's visits (its pages carry the script), which its privacy policy says. */
174
- countsVisits?: boolean;
240
+ countsVisits?: boolean; /** Set by prepare (and CalOS's preview), never in content: the business's forms' addresses by key, for a built form's sendTo. */
241
+ forms?: Record<string, string>;
175
242
  };
176
243
  /**
177
244
  * The site's menu, as its header draws it: the one edited in CalOS (its links in order, one picked out,
178
- * and the header's button), else the pages that have a menu label, in page order (and no button: the
245
+ * each with the links under it if it has any, and the header's button), else the pages that have a menu label, in page order (and no button: the
179
246
  * site's own default).
180
247
  */
181
248
  export declare function menuOf(site: Pick<Site, "pages" | "menu">): Menu;
@@ -217,17 +284,22 @@ export type DefineOptions = {
217
284
  refine?: (site: Site, ctx: z.RefinementCtx) => void;
218
285
  /** How each page's share card looks (colours, fonts, a logo, or a card of the site's own); `false` for none (../share.ts). */
219
286
  share?: ShareOptions;
220
- /** Every section gets a Layout (placement: alignment, width, spacing, screens), drawn by the site through placementClass. */
287
+ /** Every section gets a Layout (placement: alignment, width, spacing, screens, background), drawn by the site through placementClass and KitBlocks. On unless `false`. */
221
288
  placement?: boolean;
222
289
  /** The site's Look, chosen in CalOS (fonts from the ones it carries, colours, corners, buttons), drawn through CSS variables (./look.ts). */
223
290
  look?: LookOptions;
224
291
  };
225
- /**
226
- * A site's content shape from its blocks: each a name and the fields it has. The site's own block
227
- * type is `z.output<typeof content.schema>["pages"][number]["blocks"][number]`.
228
- */
229
292
  export declare function defineSite<const B extends Record<string, z.ZodObject>>(blocks: B, o?: DefineOptions): {
230
293
  schema: z.ZodObject<{
294
+ saved: z.ZodDefault<z.ZodArray<z.ZodObject<{
295
+ name: z.ZodString;
296
+ block: z.ZodDiscriminatedUnion<[z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>, ...z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>[]], "type">;
297
+ }, z.core.$strip>>>;
298
+ components?: z.ZodDefault<z.ZodArray<z.ZodObject<{
299
+ key: z.ZodString;
300
+ name: z.ZodString;
301
+ root: z.ZodType<Node, unknown, z.core.$ZodTypeInternals<Node, unknown>>;
302
+ }, z.core.$strip>>> | undefined;
231
303
  pages: z.ZodArray<z.ZodObject<{
232
304
  blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>, ...z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>[]], "type">>;
233
305
  path: z.ZodString;
@@ -242,13 +314,129 @@ export declare function defineSite<const B extends Record<string, z.ZodObject>>(
242
314
  shareText: z.ZodOptional<z.ZodString>;
243
315
  noindex: z.ZodDefault<z.ZodBoolean>;
244
316
  }, z.core.$strip>>;
245
- saved: z.ZodDefault<z.ZodArray<z.ZodObject<{
317
+ lists: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
246
318
  name: z.ZodString;
247
- block: z.ZodDiscriminatedUnion<[z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>, ...z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>[]], "type">;
319
+ fields: z.ZodArray<z.ZodObject<{
320
+ key: z.ZodString;
321
+ label: z.ZodString;
322
+ kind: z.ZodEnum<{
323
+ number: "number";
324
+ date: "date";
325
+ text: "text";
326
+ image: "image";
327
+ link: "link";
328
+ longText: "longText";
329
+ }>;
330
+ }, z.core.$strip>>;
331
+ items: z.ZodDefault<z.ZodArray<z.ZodObject<{
332
+ id: z.ZodString;
333
+ slug: z.ZodString;
334
+ }, z.core.$catchall<z.ZodUnknown>>>>;
335
+ page: z.ZodOptional<z.ZodObject<{
336
+ path: z.ZodString;
337
+ title: z.ZodString;
338
+ description: z.ZodOptional<z.ZodString>;
339
+ blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>, ...z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>[]], "type">>;
340
+ }, z.core.$strip>>;
341
+ source: z.ZodOptional<z.ZodObject<{
342
+ table: z.ZodString;
343
+ fields: z.ZodRecord<z.ZodString, z.ZodString>;
344
+ publish: z.ZodDefault<z.ZodEnum<{
345
+ draft: "draft";
346
+ auto: "auto";
347
+ }>>;
348
+ }, z.core.$strip>>;
248
349
  }, z.core.$strip>>>;
249
350
  look?: z.ZodOptional<z.ZodObject<{
351
+ uploadedFonts?: z.ZodOptional<z.ZodArray<z.ZodObject<{
352
+ family: z.ZodString;
353
+ files: z.ZodArray<z.ZodObject<{
354
+ src: z.ZodString;
355
+ weight: z.ZodString;
356
+ style: z.ZodEnum<{
357
+ normal: "normal";
358
+ italic: "italic";
359
+ }>;
360
+ }, z.core.$strip>>;
361
+ }, z.core.$strip>>> | undefined;
362
+ footer?: z.ZodDefault<z.ZodObject<{
363
+ background: z.ZodDefault<z.ZodString>;
364
+ }, z.core.$strip>> | undefined;
365
+ header?: z.ZodDefault<z.ZodObject<{
366
+ sticky: z.ZodDefault<z.ZodBoolean>;
367
+ style: z.ZodDefault<z.ZodEnum<{
368
+ line: "line";
369
+ plain: "plain";
370
+ brand: "brand";
371
+ floating: "floating";
372
+ }>>;
373
+ layout: z.ZodDefault<z.ZodEnum<{
374
+ left: "left";
375
+ spread: "spread";
376
+ centered: "centered";
377
+ }>>;
378
+ menuShows: z.ZodDefault<z.ZodEnum<{
379
+ icon: "icon";
380
+ both: "both";
381
+ word: "word";
382
+ }>>;
383
+ menuStyle: z.ZodOptional<z.ZodString>;
384
+ }, z.core.$strip>> | undefined;
250
385
  brand: z.ZodDefault<z.ZodString>;
251
386
  accent: z.ZodDefault<z.ZodString>;
387
+ page: z.ZodDefault<z.ZodString>;
388
+ ink: z.ZodDefault<z.ZodString>;
389
+ muted: z.ZodDefault<z.ZodString>;
390
+ line: z.ZodDefault<z.ZodString>;
391
+ soft: z.ZodDefault<z.ZodString>;
392
+ palette: z.ZodDefault<z.ZodArray<z.ZodObject<{
393
+ name: z.ZodString;
394
+ color: z.ZodString;
395
+ }, z.core.$strip>>>;
396
+ type: z.ZodDefault<z.ZodObject<{
397
+ h1: z.ZodOptional<z.ZodObject<{
398
+ size: z.ZodOptional<z.ZodNumber>;
399
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
400
+ tracking: z.ZodOptional<z.ZodNumber>;
401
+ leading: z.ZodOptional<z.ZodNumber>;
402
+ }, z.core.$strip>>;
403
+ h2: z.ZodOptional<z.ZodObject<{
404
+ size: z.ZodOptional<z.ZodNumber>;
405
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
406
+ tracking: z.ZodOptional<z.ZodNumber>;
407
+ leading: z.ZodOptional<z.ZodNumber>;
408
+ }, z.core.$strip>>;
409
+ h3: z.ZodOptional<z.ZodObject<{
410
+ size: z.ZodOptional<z.ZodNumber>;
411
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
412
+ tracking: z.ZodOptional<z.ZodNumber>;
413
+ leading: z.ZodOptional<z.ZodNumber>;
414
+ }, z.core.$strip>>;
415
+ small: z.ZodOptional<z.ZodObject<{
416
+ size: z.ZodOptional<z.ZodNumber>;
417
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
418
+ tracking: z.ZodOptional<z.ZodNumber>;
419
+ leading: z.ZodOptional<z.ZodNumber>;
420
+ }, z.core.$strip>>;
421
+ body: z.ZodOptional<z.ZodObject<{
422
+ size: z.ZodOptional<z.ZodNumber>;
423
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
424
+ tracking: z.ZodOptional<z.ZodNumber>;
425
+ leading: z.ZodOptional<z.ZodNumber>;
426
+ }, z.core.$strip>>;
427
+ display: z.ZodOptional<z.ZodObject<{
428
+ size: z.ZodOptional<z.ZodNumber>;
429
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
430
+ tracking: z.ZodOptional<z.ZodNumber>;
431
+ leading: z.ZodOptional<z.ZodNumber>;
432
+ }, z.core.$strip>>;
433
+ }, z.core.$strip>>;
434
+ width: z.ZodDefault<z.ZodNumber>;
435
+ space: z.ZodDefault<z.ZodEnum<{
436
+ normal: "normal";
437
+ compact: "compact";
438
+ roomy: "roomy";
439
+ }>>;
252
440
  corners: z.ZodDefault<z.ZodEnum<{
253
441
  square: "square";
254
442
  soft: "soft";
@@ -258,13 +446,33 @@ export declare function defineSite<const B extends Record<string, z.ZodObject>>(
258
446
  solid: "solid";
259
447
  outline: "outline";
260
448
  }>>;
261
- headingFont?: z.ZodDefault<z.ZodEnum<{
262
- [x: string]: string;
263
- }>> | undefined;
264
- bodyFont?: z.ZodDefault<z.ZodEnum<{
265
- [x: string]: string;
266
- }>> | undefined;
449
+ radius: z.ZodOptional<z.ZodNumber>;
450
+ buttonRadius: z.ZodOptional<z.ZodNumber>;
451
+ buttonStyles: z.ZodOptional<z.ZodArray<z.ZodObject<{
452
+ name: z.ZodString;
453
+ fill: z.ZodOptional<z.ZodString>;
454
+ text: z.ZodOptional<z.ZodString>;
455
+ border: z.ZodOptional<z.ZodObject<{
456
+ width: z.ZodOptional<z.ZodNumber>;
457
+ color: z.ZodOptional<z.ZodString>;
458
+ }, z.core.$strip>>;
459
+ radius: z.ZodOptional<z.ZodNumber>;
460
+ size: z.ZodOptional<z.ZodEnum<{
461
+ small: "small";
462
+ medium: "medium";
463
+ large: "large";
464
+ }>>;
465
+ weight: z.ZodOptional<z.ZodNumber>;
466
+ caps: z.ZodOptional<z.ZodBoolean>;
467
+ }, z.core.$strip>>>;
468
+ buttonBorder: z.ZodOptional<z.ZodObject<{
469
+ width: z.ZodNumber;
470
+ color: z.ZodOptional<z.ZodString>;
471
+ }, z.core.$strip>>;
472
+ headingFont?: z.ZodDefault<z.ZodString> | undefined;
473
+ bodyFont?: z.ZodDefault<z.ZodString> | undefined;
267
474
  }, z.core.$strip>> | undefined;
475
+ format: z.ZodOptional<z.ZodNumber>;
268
476
  url: z.ZodURL;
269
477
  lang: z.ZodDefault<z.ZodString>;
270
478
  business: z.ZodObject<{
@@ -320,10 +528,15 @@ export declare function defineSite<const B extends Record<string, z.ZodObject>>(
320
528
  label: z.ZodString;
321
529
  href: z.ZodString;
322
530
  emphasis: z.ZodDefault<z.ZodBoolean>;
531
+ children: z.ZodOptional<z.ZodArray<z.ZodObject<{
532
+ label: z.ZodString;
533
+ href: z.ZodString;
534
+ }, z.core.$strip>>>;
323
535
  }, z.core.$strip>>;
324
536
  button: z.ZodOptional<z.ZodObject<{
325
537
  label: z.ZodString;
326
538
  href: z.ZodString;
539
+ style: z.ZodOptional<z.ZodString>;
327
540
  }, z.core.$strip>>;
328
541
  }, z.core.$strip>>;
329
542
  footer: z.ZodOptional<z.ZodObject<{
@@ -340,6 +553,31 @@ export declare function defineSite<const B extends Record<string, z.ZodObject>>(
340
553
  }, z.core.$strip>>>;
341
554
  note: z.ZodOptional<z.ZodString>;
342
555
  }, z.core.$strip>>;
556
+ ownHeader: z.ZodOptional<z.ZodObject<{
557
+ name: z.ZodOptional<z.ZodString>;
558
+ root: z.ZodType<Node, unknown, z.core.$ZodTypeInternals<Node, unknown>>;
559
+ }, z.core.$strip>>;
560
+ ownFooter: z.ZodOptional<z.ZodObject<{
561
+ name: z.ZodOptional<z.ZodString>;
562
+ root: z.ZodType<Node, unknown, z.core.$ZodTypeInternals<Node, unknown>>;
563
+ }, z.core.$strip>>;
564
+ consent: z.ZodOptional<z.ZodObject<{
565
+ on: z.ZodDefault<z.ZodBoolean>;
566
+ text: z.ZodDefault<z.ZodString>;
567
+ accept: z.ZodDefault<z.ZodString>;
568
+ decline: z.ZodDefault<z.ZodString>;
569
+ policy: z.ZodOptional<z.ZodObject<{
570
+ label: z.ZodString;
571
+ href: z.ZodString;
572
+ }, z.core.$strip>>;
573
+ place: z.ZodDefault<z.ZodEnum<{
574
+ top: "top";
575
+ bottom: "bottom";
576
+ "bottom-left": "bottom-left";
577
+ "bottom-right": "bottom-right";
578
+ }>>;
579
+ design: z.ZodOptional<z.ZodString>;
580
+ }, z.core.$strip>>;
343
581
  redirects: z.ZodDefault<z.ZodArray<z.ZodObject<{
344
582
  from: z.ZodString;
345
583
  to: z.ZodString;
@@ -349,6 +587,15 @@ export declare function defineSite<const B extends Record<string, z.ZodObject>>(
349
587
  /** The content checked, or every problem in it as "where: what" lines. */
350
588
  parse(raw: unknown): {
351
589
  site: z.output<z.ZodObject<{
590
+ saved: z.ZodDefault<z.ZodArray<z.ZodObject<{
591
+ name: z.ZodString;
592
+ block: z.ZodDiscriminatedUnion<[z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>, ...z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>[]], "type">;
593
+ }, z.core.$strip>>>;
594
+ components?: z.ZodDefault<z.ZodArray<z.ZodObject<{
595
+ key: z.ZodString;
596
+ name: z.ZodString;
597
+ root: z.ZodType<Node, unknown, z.core.$ZodTypeInternals<Node, unknown>>;
598
+ }, z.core.$strip>>> | undefined;
352
599
  pages: z.ZodArray<z.ZodObject<{
353
600
  blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>, ...z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>[]], "type">>;
354
601
  path: z.ZodString;
@@ -363,13 +610,129 @@ export declare function defineSite<const B extends Record<string, z.ZodObject>>(
363
610
  shareText: z.ZodOptional<z.ZodString>;
364
611
  noindex: z.ZodDefault<z.ZodBoolean>;
365
612
  }, z.core.$strip>>;
366
- saved: z.ZodDefault<z.ZodArray<z.ZodObject<{
613
+ lists: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
367
614
  name: z.ZodString;
368
- block: z.ZodDiscriminatedUnion<[z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>, ...z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>[]], "type">;
615
+ fields: z.ZodArray<z.ZodObject<{
616
+ key: z.ZodString;
617
+ label: z.ZodString;
618
+ kind: z.ZodEnum<{
619
+ number: "number";
620
+ date: "date";
621
+ text: "text";
622
+ image: "image";
623
+ link: "link";
624
+ longText: "longText";
625
+ }>;
626
+ }, z.core.$strip>>;
627
+ items: z.ZodDefault<z.ZodArray<z.ZodObject<{
628
+ id: z.ZodString;
629
+ slug: z.ZodString;
630
+ }, z.core.$catchall<z.ZodUnknown>>>>;
631
+ page: z.ZodOptional<z.ZodObject<{
632
+ path: z.ZodString;
633
+ title: z.ZodString;
634
+ description: z.ZodOptional<z.ZodString>;
635
+ blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>, ...z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>[]], "type">>;
636
+ }, z.core.$strip>>;
637
+ source: z.ZodOptional<z.ZodObject<{
638
+ table: z.ZodString;
639
+ fields: z.ZodRecord<z.ZodString, z.ZodString>;
640
+ publish: z.ZodDefault<z.ZodEnum<{
641
+ draft: "draft";
642
+ auto: "auto";
643
+ }>>;
644
+ }, z.core.$strip>>;
369
645
  }, z.core.$strip>>>;
370
646
  look?: z.ZodOptional<z.ZodObject<{
647
+ uploadedFonts?: z.ZodOptional<z.ZodArray<z.ZodObject<{
648
+ family: z.ZodString;
649
+ files: z.ZodArray<z.ZodObject<{
650
+ src: z.ZodString;
651
+ weight: z.ZodString;
652
+ style: z.ZodEnum<{
653
+ normal: "normal";
654
+ italic: "italic";
655
+ }>;
656
+ }, z.core.$strip>>;
657
+ }, z.core.$strip>>> | undefined;
658
+ footer?: z.ZodDefault<z.ZodObject<{
659
+ background: z.ZodDefault<z.ZodString>;
660
+ }, z.core.$strip>> | undefined;
661
+ header?: z.ZodDefault<z.ZodObject<{
662
+ sticky: z.ZodDefault<z.ZodBoolean>;
663
+ style: z.ZodDefault<z.ZodEnum<{
664
+ line: "line";
665
+ plain: "plain";
666
+ brand: "brand";
667
+ floating: "floating";
668
+ }>>;
669
+ layout: z.ZodDefault<z.ZodEnum<{
670
+ left: "left";
671
+ spread: "spread";
672
+ centered: "centered";
673
+ }>>;
674
+ menuShows: z.ZodDefault<z.ZodEnum<{
675
+ icon: "icon";
676
+ both: "both";
677
+ word: "word";
678
+ }>>;
679
+ menuStyle: z.ZodOptional<z.ZodString>;
680
+ }, z.core.$strip>> | undefined;
371
681
  brand: z.ZodDefault<z.ZodString>;
372
682
  accent: z.ZodDefault<z.ZodString>;
683
+ page: z.ZodDefault<z.ZodString>;
684
+ ink: z.ZodDefault<z.ZodString>;
685
+ muted: z.ZodDefault<z.ZodString>;
686
+ line: z.ZodDefault<z.ZodString>;
687
+ soft: z.ZodDefault<z.ZodString>;
688
+ palette: z.ZodDefault<z.ZodArray<z.ZodObject<{
689
+ name: z.ZodString;
690
+ color: z.ZodString;
691
+ }, z.core.$strip>>>;
692
+ type: z.ZodDefault<z.ZodObject<{
693
+ h1: z.ZodOptional<z.ZodObject<{
694
+ size: z.ZodOptional<z.ZodNumber>;
695
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
696
+ tracking: z.ZodOptional<z.ZodNumber>;
697
+ leading: z.ZodOptional<z.ZodNumber>;
698
+ }, z.core.$strip>>;
699
+ h2: z.ZodOptional<z.ZodObject<{
700
+ size: z.ZodOptional<z.ZodNumber>;
701
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
702
+ tracking: z.ZodOptional<z.ZodNumber>;
703
+ leading: z.ZodOptional<z.ZodNumber>;
704
+ }, z.core.$strip>>;
705
+ h3: z.ZodOptional<z.ZodObject<{
706
+ size: z.ZodOptional<z.ZodNumber>;
707
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
708
+ tracking: z.ZodOptional<z.ZodNumber>;
709
+ leading: z.ZodOptional<z.ZodNumber>;
710
+ }, z.core.$strip>>;
711
+ small: z.ZodOptional<z.ZodObject<{
712
+ size: z.ZodOptional<z.ZodNumber>;
713
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
714
+ tracking: z.ZodOptional<z.ZodNumber>;
715
+ leading: z.ZodOptional<z.ZodNumber>;
716
+ }, z.core.$strip>>;
717
+ body: z.ZodOptional<z.ZodObject<{
718
+ size: z.ZodOptional<z.ZodNumber>;
719
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
720
+ tracking: z.ZodOptional<z.ZodNumber>;
721
+ leading: z.ZodOptional<z.ZodNumber>;
722
+ }, z.core.$strip>>;
723
+ display: z.ZodOptional<z.ZodObject<{
724
+ size: z.ZodOptional<z.ZodNumber>;
725
+ weight: z.ZodOptional<z.ZodLiteral<400 | 600 | 500 | 300 | 700>>;
726
+ tracking: z.ZodOptional<z.ZodNumber>;
727
+ leading: z.ZodOptional<z.ZodNumber>;
728
+ }, z.core.$strip>>;
729
+ }, z.core.$strip>>;
730
+ width: z.ZodDefault<z.ZodNumber>;
731
+ space: z.ZodDefault<z.ZodEnum<{
732
+ normal: "normal";
733
+ compact: "compact";
734
+ roomy: "roomy";
735
+ }>>;
373
736
  corners: z.ZodDefault<z.ZodEnum<{
374
737
  square: "square";
375
738
  soft: "soft";
@@ -379,13 +742,33 @@ export declare function defineSite<const B extends Record<string, z.ZodObject>>(
379
742
  solid: "solid";
380
743
  outline: "outline";
381
744
  }>>;
382
- headingFont?: z.ZodDefault<z.ZodEnum<{
383
- [x: string]: string;
384
- }>> | undefined;
385
- bodyFont?: z.ZodDefault<z.ZodEnum<{
386
- [x: string]: string;
387
- }>> | undefined;
745
+ radius: z.ZodOptional<z.ZodNumber>;
746
+ buttonRadius: z.ZodOptional<z.ZodNumber>;
747
+ buttonStyles: z.ZodOptional<z.ZodArray<z.ZodObject<{
748
+ name: z.ZodString;
749
+ fill: z.ZodOptional<z.ZodString>;
750
+ text: z.ZodOptional<z.ZodString>;
751
+ border: z.ZodOptional<z.ZodObject<{
752
+ width: z.ZodOptional<z.ZodNumber>;
753
+ color: z.ZodOptional<z.ZodString>;
754
+ }, z.core.$strip>>;
755
+ radius: z.ZodOptional<z.ZodNumber>;
756
+ size: z.ZodOptional<z.ZodEnum<{
757
+ small: "small";
758
+ medium: "medium";
759
+ large: "large";
760
+ }>>;
761
+ weight: z.ZodOptional<z.ZodNumber>;
762
+ caps: z.ZodOptional<z.ZodBoolean>;
763
+ }, z.core.$strip>>>;
764
+ buttonBorder: z.ZodOptional<z.ZodObject<{
765
+ width: z.ZodNumber;
766
+ color: z.ZodOptional<z.ZodString>;
767
+ }, z.core.$strip>>;
768
+ headingFont?: z.ZodDefault<z.ZodString> | undefined;
769
+ bodyFont?: z.ZodDefault<z.ZodString> | undefined;
388
770
  }, z.core.$strip>> | undefined;
771
+ format: z.ZodOptional<z.ZodNumber>;
389
772
  url: z.ZodURL;
390
773
  lang: z.ZodDefault<z.ZodString>;
391
774
  business: z.ZodObject<{
@@ -441,10 +824,15 @@ export declare function defineSite<const B extends Record<string, z.ZodObject>>(
441
824
  label: z.ZodString;
442
825
  href: z.ZodString;
443
826
  emphasis: z.ZodDefault<z.ZodBoolean>;
827
+ children: z.ZodOptional<z.ZodArray<z.ZodObject<{
828
+ label: z.ZodString;
829
+ href: z.ZodString;
830
+ }, z.core.$strip>>>;
444
831
  }, z.core.$strip>>;
445
832
  button: z.ZodOptional<z.ZodObject<{
446
833
  label: z.ZodString;
447
834
  href: z.ZodString;
835
+ style: z.ZodOptional<z.ZodString>;
448
836
  }, z.core.$strip>>;
449
837
  }, z.core.$strip>>;
450
838
  footer: z.ZodOptional<z.ZodObject<{
@@ -461,6 +849,31 @@ export declare function defineSite<const B extends Record<string, z.ZodObject>>(
461
849
  }, z.core.$strip>>>;
462
850
  note: z.ZodOptional<z.ZodString>;
463
851
  }, z.core.$strip>>;
852
+ ownHeader: z.ZodOptional<z.ZodObject<{
853
+ name: z.ZodOptional<z.ZodString>;
854
+ root: z.ZodType<Node, unknown, z.core.$ZodTypeInternals<Node, unknown>>;
855
+ }, z.core.$strip>>;
856
+ ownFooter: z.ZodOptional<z.ZodObject<{
857
+ name: z.ZodOptional<z.ZodString>;
858
+ root: z.ZodType<Node, unknown, z.core.$ZodTypeInternals<Node, unknown>>;
859
+ }, z.core.$strip>>;
860
+ consent: z.ZodOptional<z.ZodObject<{
861
+ on: z.ZodDefault<z.ZodBoolean>;
862
+ text: z.ZodDefault<z.ZodString>;
863
+ accept: z.ZodDefault<z.ZodString>;
864
+ decline: z.ZodDefault<z.ZodString>;
865
+ policy: z.ZodOptional<z.ZodObject<{
866
+ label: z.ZodString;
867
+ href: z.ZodString;
868
+ }, z.core.$strip>>;
869
+ place: z.ZodDefault<z.ZodEnum<{
870
+ top: "top";
871
+ bottom: "bottom";
872
+ "bottom-left": "bottom-left";
873
+ "bottom-right": "bottom-right";
874
+ }>>;
875
+ design: z.ZodOptional<z.ZodString>;
876
+ }, z.core.$strip>>;
464
877
  redirects: z.ZodDefault<z.ZodArray<z.ZodObject<{
465
878
  from: z.ZodString;
466
879
  to: z.ZodString;
@@ -480,7 +893,11 @@ export declare function defineSite<const B extends Record<string, z.ZodObject>>(
480
893
  csp: Record<string, string[]>;
481
894
  share: ShareOptions | undefined;
482
895
  look: LookOptions | undefined;
483
- /** The declaration CalOS draws its editing forms from. */
896
+ /**
897
+ * The declaration CalOS draws its editing forms from. A site with sections of the business's own
898
+ * (`own`) carries the ready-made ones it can start from, each one this site's schema takes, as
899
+ * `x-presets`: [{ key, name, description, block }].
900
+ */
484
901
  jsonSchema: () => Record<string, unknown>;
485
902
  };
486
903
  export type SiteDefinition = ReturnType<typeof defineSite>;