@omniharmonic/openspace-ops 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4058 @@
1
+ import { SiteDocument, NavItem, GridLayout, GridItem, Breakpoint, GridRect, Section, Block, BlockRegistry, ColorTheme } from '@omniharmonic/openspace-schema';
2
+ export { SiteDocument } from '@omniharmonic/openspace-schema';
3
+ import { z } from 'zod';
4
+
5
+ /**
6
+ * The operation vocabulary (arch §5.3). Every edit — Studio, Hub DraftRoom, MCP agents, CLI —
7
+ * is one of these plain JSON values. Ops target stable ids, are validated against
8
+ * `@omniharmonic/openspace-schema` before they are accepted, are invertible (undo) and mergeable (rebase).
9
+ */
10
+ /** Op metadata: a unique op id, who made it, and when (ms since epoch; used for LWW). */
11
+ declare const OpMetaShape: {
12
+ id: z.ZodString;
13
+ actor: z.ZodString;
14
+ ts: z.ZodNumber;
15
+ };
16
+ interface OpMeta {
17
+ id: string;
18
+ actor: string;
19
+ ts: number;
20
+ }
21
+ /**
22
+ * The block/section container an op addresses: a page id, or `"footer"` for the site footer
23
+ * (a single grid/stack section in `site.footer`). Sections cannot be inserted, moved or
24
+ * deleted in the footer.
25
+ */
26
+ declare const FOOTER: "footer";
27
+ declare const ContainerIdSchema: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
28
+ type ContainerId = z.infer<typeof ContainerIdSchema>;
29
+ /**
30
+ * Where to put a block/section in its parent list: a final index (0-based, in the list
31
+ * without the moved item), `"start"`, `"end"`, or before/after a sibling id.
32
+ */
33
+ declare const PositionSchema: z.ZodUnion<readonly [z.ZodInt, z.ZodLiteral<"start">, z.ZodLiteral<"end">, z.ZodObject<{
34
+ before: z.ZodString;
35
+ }, z.core.$strict>, z.ZodObject<{
36
+ after: z.ZodString;
37
+ }, z.core.$strict>]>;
38
+ type Position = z.infer<typeof PositionSchema>;
39
+ /**
40
+ * A path patch: dot-separated paths into an object (`"seo.description"`, `"choices.palette.brand"`).
41
+ * Arrays are leaf values (replaced whole). `unset` removes keys. Paths within one patch must not
42
+ * overlap (no path may be a prefix of another).
43
+ */
44
+ declare const PathSchema: z.ZodString;
45
+ declare const PatchShape: {
46
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
47
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
48
+ };
49
+ interface Patch {
50
+ set?: Record<string, unknown>;
51
+ unset?: string[];
52
+ }
53
+ declare const RowsSchema: z.ZodObject<{
54
+ d: z.ZodInt;
55
+ t: z.ZodOptional<z.ZodInt>;
56
+ m: z.ZodOptional<z.ZodInt>;
57
+ }, z.core.$strict>;
58
+ type Rows = z.infer<typeof RowsSchema>;
59
+ declare const BreakpointSchema: z.ZodEnum<{
60
+ d: "d";
61
+ t: "t";
62
+ m: "m";
63
+ }>;
64
+ declare const BlockUpdateOpSchema: z.ZodObject<{
65
+ id: z.ZodString;
66
+ actor: z.ZodString;
67
+ ts: z.ZodNumber;
68
+ op: z.ZodLiteral<"block.update">;
69
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
70
+ block: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
71
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
72
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
73
+ variant: z.ZodOptional<z.ZodNullable<z.ZodString>>;
74
+ style: z.ZodOptional<z.ZodNullable<z.ZodObject<{
75
+ colorTheme: z.ZodOptional<z.ZodEnum<{
76
+ light: "light";
77
+ "light-accent": "light-accent";
78
+ dark: "dark";
79
+ "dark-accent": "dark-accent";
80
+ brand: "brand";
81
+ }>>;
82
+ padding: z.ZodOptional<z.ZodObject<{
83
+ d: z.ZodEnum<{
84
+ none: "none";
85
+ "3xs": "3xs";
86
+ "2xs": "2xs";
87
+ xs: "xs";
88
+ sm: "sm";
89
+ md: "md";
90
+ lg: "lg";
91
+ xl: "xl";
92
+ "2xl": "2xl";
93
+ "3xl": "3xl";
94
+ }>;
95
+ t: z.ZodOptional<z.ZodEnum<{
96
+ none: "none";
97
+ "3xs": "3xs";
98
+ "2xs": "2xs";
99
+ xs: "xs";
100
+ sm: "sm";
101
+ md: "md";
102
+ lg: "lg";
103
+ xl: "xl";
104
+ "2xl": "2xl";
105
+ "3xl": "3xl";
106
+ }>>;
107
+ m: z.ZodOptional<z.ZodEnum<{
108
+ none: "none";
109
+ "3xs": "3xs";
110
+ "2xs": "2xs";
111
+ xs: "xs";
112
+ sm: "sm";
113
+ md: "md";
114
+ lg: "lg";
115
+ xl: "xl";
116
+ "2xl": "2xl";
117
+ "3xl": "3xl";
118
+ }>>;
119
+ }, z.core.$strict>>;
120
+ radius: z.ZodOptional<z.ZodEnum<{
121
+ none: "none";
122
+ sm: "sm";
123
+ md: "md";
124
+ lg: "lg";
125
+ xl: "xl";
126
+ full: "full";
127
+ }>>;
128
+ border: z.ZodOptional<z.ZodEnum<{
129
+ none: "none";
130
+ subtle: "subtle";
131
+ strong: "strong";
132
+ }>>;
133
+ shadow: z.ZodOptional<z.ZodEnum<{
134
+ none: "none";
135
+ sm: "sm";
136
+ md: "md";
137
+ lg: "lg";
138
+ }>>;
139
+ align: z.ZodOptional<z.ZodObject<{
140
+ d: z.ZodEnum<{
141
+ start: "start";
142
+ center: "center";
143
+ end: "end";
144
+ }>;
145
+ t: z.ZodOptional<z.ZodEnum<{
146
+ start: "start";
147
+ center: "center";
148
+ end: "end";
149
+ }>>;
150
+ m: z.ZodOptional<z.ZodEnum<{
151
+ start: "start";
152
+ center: "center";
153
+ end: "end";
154
+ }>>;
155
+ }, z.core.$strict>>;
156
+ imageTreatment: z.ZodOptional<z.ZodEnum<{
157
+ none: "none";
158
+ rounded: "rounded";
159
+ arch: "arch";
160
+ circle: "circle";
161
+ blob: "blob";
162
+ duotone: "duotone";
163
+ grain: "grain";
164
+ frame: "frame";
165
+ }>>;
166
+ animation: z.ZodOptional<z.ZodObject<{
167
+ entrance: z.ZodEnum<{
168
+ none: "none";
169
+ fade: "fade";
170
+ rise: "rise";
171
+ slide: "slide";
172
+ zoom: "zoom";
173
+ clip: "clip";
174
+ }>;
175
+ stagger: z.ZodOptional<z.ZodBoolean>;
176
+ }, z.core.$strict>>;
177
+ typography: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
178
+ small: "small";
179
+ display: "display";
180
+ h1: "h1";
181
+ h2: "h2";
182
+ h3: "h3";
183
+ h4: "h4";
184
+ lead: "lead";
185
+ body: "body";
186
+ eyebrow: "eyebrow";
187
+ }>>>;
188
+ }, z.core.$strict>>>;
189
+ column: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
190
+ label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
191
+ hidden: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
192
+ }, z.core.$strict>;
193
+ declare const BlockInsertOpSchema: z.ZodObject<{
194
+ id: z.ZodString;
195
+ actor: z.ZodString;
196
+ ts: z.ZodNumber;
197
+ op: z.ZodLiteral<"block.insert">;
198
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
199
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
200
+ at: z.ZodUnion<readonly [z.ZodInt, z.ZodLiteral<"start">, z.ZodLiteral<"end">, z.ZodObject<{
201
+ before: z.ZodString;
202
+ }, z.core.$strict>, z.ZodObject<{
203
+ after: z.ZodString;
204
+ }, z.core.$strict>]>;
205
+ block: z.ZodObject<{
206
+ id: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
207
+ type: z.ZodString;
208
+ v: z.ZodInt;
209
+ column: z.ZodOptional<z.ZodInt>;
210
+ label: z.ZodOptional<z.ZodString>;
211
+ hidden: z.ZodOptional<z.ZodBoolean>;
212
+ fields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
213
+ variant: z.ZodOptional<z.ZodString>;
214
+ style: z.ZodOptional<z.ZodObject<{
215
+ colorTheme: z.ZodOptional<z.ZodEnum<{
216
+ light: "light";
217
+ "light-accent": "light-accent";
218
+ dark: "dark";
219
+ "dark-accent": "dark-accent";
220
+ brand: "brand";
221
+ }>>;
222
+ padding: z.ZodOptional<z.ZodObject<{
223
+ d: z.ZodEnum<{
224
+ none: "none";
225
+ "3xs": "3xs";
226
+ "2xs": "2xs";
227
+ xs: "xs";
228
+ sm: "sm";
229
+ md: "md";
230
+ lg: "lg";
231
+ xl: "xl";
232
+ "2xl": "2xl";
233
+ "3xl": "3xl";
234
+ }>;
235
+ t: z.ZodOptional<z.ZodEnum<{
236
+ none: "none";
237
+ "3xs": "3xs";
238
+ "2xs": "2xs";
239
+ xs: "xs";
240
+ sm: "sm";
241
+ md: "md";
242
+ lg: "lg";
243
+ xl: "xl";
244
+ "2xl": "2xl";
245
+ "3xl": "3xl";
246
+ }>>;
247
+ m: z.ZodOptional<z.ZodEnum<{
248
+ none: "none";
249
+ "3xs": "3xs";
250
+ "2xs": "2xs";
251
+ xs: "xs";
252
+ sm: "sm";
253
+ md: "md";
254
+ lg: "lg";
255
+ xl: "xl";
256
+ "2xl": "2xl";
257
+ "3xl": "3xl";
258
+ }>>;
259
+ }, z.core.$strict>>;
260
+ radius: z.ZodOptional<z.ZodEnum<{
261
+ none: "none";
262
+ sm: "sm";
263
+ md: "md";
264
+ lg: "lg";
265
+ xl: "xl";
266
+ full: "full";
267
+ }>>;
268
+ border: z.ZodOptional<z.ZodEnum<{
269
+ none: "none";
270
+ subtle: "subtle";
271
+ strong: "strong";
272
+ }>>;
273
+ shadow: z.ZodOptional<z.ZodEnum<{
274
+ none: "none";
275
+ sm: "sm";
276
+ md: "md";
277
+ lg: "lg";
278
+ }>>;
279
+ align: z.ZodOptional<z.ZodObject<{
280
+ d: z.ZodEnum<{
281
+ start: "start";
282
+ center: "center";
283
+ end: "end";
284
+ }>;
285
+ t: z.ZodOptional<z.ZodEnum<{
286
+ start: "start";
287
+ center: "center";
288
+ end: "end";
289
+ }>>;
290
+ m: z.ZodOptional<z.ZodEnum<{
291
+ start: "start";
292
+ center: "center";
293
+ end: "end";
294
+ }>>;
295
+ }, z.core.$strict>>;
296
+ imageTreatment: z.ZodOptional<z.ZodEnum<{
297
+ none: "none";
298
+ rounded: "rounded";
299
+ arch: "arch";
300
+ circle: "circle";
301
+ blob: "blob";
302
+ duotone: "duotone";
303
+ grain: "grain";
304
+ frame: "frame";
305
+ }>>;
306
+ animation: z.ZodOptional<z.ZodObject<{
307
+ entrance: z.ZodEnum<{
308
+ none: "none";
309
+ fade: "fade";
310
+ rise: "rise";
311
+ slide: "slide";
312
+ zoom: "zoom";
313
+ clip: "clip";
314
+ }>;
315
+ stagger: z.ZodOptional<z.ZodBoolean>;
316
+ }, z.core.$strict>>;
317
+ typography: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
318
+ small: "small";
319
+ display: "display";
320
+ h1: "h1";
321
+ h2: "h2";
322
+ h3: "h3";
323
+ h4: "h4";
324
+ lead: "lead";
325
+ body: "body";
326
+ eyebrow: "eyebrow";
327
+ }>>>;
328
+ }, z.core.$strict>>;
329
+ }, z.core.$strict>;
330
+ place: z.ZodOptional<z.ZodObject<{
331
+ d: z.ZodObject<{
332
+ x: z.ZodInt;
333
+ y: z.ZodInt;
334
+ w: z.ZodInt;
335
+ h: z.ZodInt;
336
+ z: z.ZodOptional<z.ZodInt>;
337
+ bleed: z.ZodOptional<z.ZodEnum<{
338
+ left: "left";
339
+ right: "right";
340
+ both: "both";
341
+ }>>;
342
+ pin: z.ZodOptional<z.ZodEnum<{
343
+ top: "top";
344
+ bottom: "bottom";
345
+ }>>;
346
+ }, z.core.$strict>;
347
+ t: z.ZodOptional<z.ZodObject<{
348
+ x: z.ZodInt;
349
+ y: z.ZodInt;
350
+ w: z.ZodInt;
351
+ h: z.ZodInt;
352
+ z: z.ZodOptional<z.ZodInt>;
353
+ bleed: z.ZodOptional<z.ZodEnum<{
354
+ left: "left";
355
+ right: "right";
356
+ both: "both";
357
+ }>>;
358
+ pin: z.ZodOptional<z.ZodEnum<{
359
+ top: "top";
360
+ bottom: "bottom";
361
+ }>>;
362
+ }, z.core.$strict>>;
363
+ m: z.ZodOptional<z.ZodObject<{
364
+ x: z.ZodInt;
365
+ y: z.ZodInt;
366
+ w: z.ZodInt;
367
+ h: z.ZodInt;
368
+ z: z.ZodOptional<z.ZodInt>;
369
+ bleed: z.ZodOptional<z.ZodEnum<{
370
+ left: "left";
371
+ right: "right";
372
+ both: "both";
373
+ }>>;
374
+ pin: z.ZodOptional<z.ZodEnum<{
375
+ top: "top";
376
+ bottom: "bottom";
377
+ }>>;
378
+ }, z.core.$strict>>;
379
+ }, z.core.$strict>>;
380
+ rows: z.ZodOptional<z.ZodObject<{
381
+ d: z.ZodInt;
382
+ t: z.ZodOptional<z.ZodInt>;
383
+ m: z.ZodOptional<z.ZodInt>;
384
+ }, z.core.$strict>>;
385
+ }, z.core.$strict>;
386
+ declare const BlockMoveOpSchema: z.ZodObject<{
387
+ id: z.ZodString;
388
+ actor: z.ZodString;
389
+ ts: z.ZodNumber;
390
+ op: z.ZodLiteral<"block.move">;
391
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
392
+ block: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
393
+ to: z.ZodObject<{
394
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
395
+ at: z.ZodUnion<readonly [z.ZodInt, z.ZodLiteral<"start">, z.ZodLiteral<"end">, z.ZodObject<{
396
+ before: z.ZodString;
397
+ }, z.core.$strict>, z.ZodObject<{
398
+ after: z.ZodString;
399
+ }, z.core.$strict>]>;
400
+ place: z.ZodOptional<z.ZodObject<{
401
+ d: z.ZodObject<{
402
+ x: z.ZodInt;
403
+ y: z.ZodInt;
404
+ w: z.ZodInt;
405
+ h: z.ZodInt;
406
+ z: z.ZodOptional<z.ZodInt>;
407
+ bleed: z.ZodOptional<z.ZodEnum<{
408
+ left: "left";
409
+ right: "right";
410
+ both: "both";
411
+ }>>;
412
+ pin: z.ZodOptional<z.ZodEnum<{
413
+ top: "top";
414
+ bottom: "bottom";
415
+ }>>;
416
+ }, z.core.$strict>;
417
+ t: z.ZodOptional<z.ZodObject<{
418
+ x: z.ZodInt;
419
+ y: z.ZodInt;
420
+ w: z.ZodInt;
421
+ h: z.ZodInt;
422
+ z: z.ZodOptional<z.ZodInt>;
423
+ bleed: z.ZodOptional<z.ZodEnum<{
424
+ left: "left";
425
+ right: "right";
426
+ both: "both";
427
+ }>>;
428
+ pin: z.ZodOptional<z.ZodEnum<{
429
+ top: "top";
430
+ bottom: "bottom";
431
+ }>>;
432
+ }, z.core.$strict>>;
433
+ m: z.ZodOptional<z.ZodObject<{
434
+ x: z.ZodInt;
435
+ y: z.ZodInt;
436
+ w: z.ZodInt;
437
+ h: z.ZodInt;
438
+ z: z.ZodOptional<z.ZodInt>;
439
+ bleed: z.ZodOptional<z.ZodEnum<{
440
+ left: "left";
441
+ right: "right";
442
+ both: "both";
443
+ }>>;
444
+ pin: z.ZodOptional<z.ZodEnum<{
445
+ top: "top";
446
+ bottom: "bottom";
447
+ }>>;
448
+ }, z.core.$strict>>;
449
+ }, z.core.$strict>>;
450
+ column: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
451
+ rows: z.ZodOptional<z.ZodObject<{
452
+ d: z.ZodInt;
453
+ t: z.ZodOptional<z.ZodInt>;
454
+ m: z.ZodOptional<z.ZodInt>;
455
+ }, z.core.$strict>>;
456
+ }, z.core.$strict>;
457
+ fromRows: z.ZodOptional<z.ZodObject<{
458
+ d: z.ZodInt;
459
+ t: z.ZodOptional<z.ZodInt>;
460
+ m: z.ZodOptional<z.ZodInt>;
461
+ }, z.core.$strict>>;
462
+ }, z.core.$strict>;
463
+ declare const BlockDeleteOpSchema: z.ZodObject<{
464
+ id: z.ZodString;
465
+ actor: z.ZodString;
466
+ ts: z.ZodNumber;
467
+ op: z.ZodLiteral<"block.delete">;
468
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
469
+ block: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
470
+ rows: z.ZodOptional<z.ZodObject<{
471
+ d: z.ZodInt;
472
+ t: z.ZodOptional<z.ZodInt>;
473
+ m: z.ZodOptional<z.ZodInt>;
474
+ }, z.core.$strict>>;
475
+ }, z.core.$strict>;
476
+ declare const GridPlaceOpSchema: z.ZodObject<{
477
+ id: z.ZodString;
478
+ actor: z.ZodString;
479
+ ts: z.ZodNumber;
480
+ op: z.ZodLiteral<"grid.place">;
481
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
482
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
483
+ block: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
484
+ bp: z.ZodEnum<{
485
+ d: "d";
486
+ t: "t";
487
+ m: "m";
488
+ }>;
489
+ rect: z.ZodNullable<z.ZodObject<{
490
+ x: z.ZodInt;
491
+ y: z.ZodInt;
492
+ w: z.ZodInt;
493
+ h: z.ZodInt;
494
+ z: z.ZodOptional<z.ZodInt>;
495
+ bleed: z.ZodOptional<z.ZodEnum<{
496
+ left: "left";
497
+ right: "right";
498
+ both: "both";
499
+ }>>;
500
+ pin: z.ZodOptional<z.ZodEnum<{
501
+ top: "top";
502
+ bottom: "bottom";
503
+ }>>;
504
+ }, z.core.$strict>>;
505
+ rows: z.ZodOptional<z.ZodObject<{
506
+ d: z.ZodInt;
507
+ t: z.ZodOptional<z.ZodInt>;
508
+ m: z.ZodOptional<z.ZodInt>;
509
+ }, z.core.$strict>>;
510
+ }, z.core.$strict>;
511
+ declare const SectionInsertOpSchema: z.ZodObject<{
512
+ id: z.ZodString;
513
+ actor: z.ZodString;
514
+ ts: z.ZodNumber;
515
+ op: z.ZodLiteral<"section.insert">;
516
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
517
+ at: z.ZodUnion<readonly [z.ZodInt, z.ZodLiteral<"start">, z.ZodLiteral<"end">, z.ZodObject<{
518
+ before: z.ZodString;
519
+ }, z.core.$strict>, z.ZodObject<{
520
+ after: z.ZodString;
521
+ }, z.core.$strict>]>;
522
+ section: z.ZodObject<{
523
+ id: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
524
+ preset: z.ZodOptional<z.ZodString>;
525
+ label: z.ZodOptional<z.ZodString>;
526
+ anchor: z.ZodOptional<z.ZodString>;
527
+ layout: z.ZodDiscriminatedUnion<[z.ZodObject<{
528
+ mode: z.ZodLiteral<"stack">;
529
+ columns: z.ZodObject<{
530
+ d: z.ZodArray<z.ZodInt>;
531
+ t: z.ZodOptional<z.ZodArray<z.ZodInt>>;
532
+ m: z.ZodOptional<z.ZodArray<z.ZodInt>>;
533
+ }, z.core.$strict>;
534
+ order: z.ZodOptional<z.ZodObject<{
535
+ t: z.ZodOptional<z.ZodArray<z.ZodInt>>;
536
+ m: z.ZodOptional<z.ZodArray<z.ZodInt>>;
537
+ }, z.core.$strict>>;
538
+ align: z.ZodOptional<z.ZodEnum<{
539
+ start: "start";
540
+ center: "center";
541
+ end: "end";
542
+ stretch: "stretch";
543
+ }>>;
544
+ gap: z.ZodOptional<z.ZodEnum<{
545
+ none: "none";
546
+ "3xs": "3xs";
547
+ "2xs": "2xs";
548
+ xs: "xs";
549
+ sm: "sm";
550
+ md: "md";
551
+ lg: "lg";
552
+ xl: "xl";
553
+ "2xl": "2xl";
554
+ "3xl": "3xl";
555
+ }>>;
556
+ width: z.ZodOptional<z.ZodEnum<{
557
+ full: "full";
558
+ narrow: "narrow";
559
+ content: "content";
560
+ wide: "wide";
561
+ }>>;
562
+ }, z.core.$strict>, z.ZodObject<{
563
+ mode: z.ZodLiteral<"grid">;
564
+ rows: z.ZodObject<{
565
+ d: z.ZodInt;
566
+ t: z.ZodOptional<z.ZodInt>;
567
+ m: z.ZodOptional<z.ZodInt>;
568
+ }, z.core.$strict>;
569
+ items: z.ZodRecord<z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>, z.ZodObject<{
570
+ d: z.ZodObject<{
571
+ x: z.ZodInt;
572
+ y: z.ZodInt;
573
+ w: z.ZodInt;
574
+ h: z.ZodInt;
575
+ z: z.ZodOptional<z.ZodInt>;
576
+ bleed: z.ZodOptional<z.ZodEnum<{
577
+ left: "left";
578
+ right: "right";
579
+ both: "both";
580
+ }>>;
581
+ pin: z.ZodOptional<z.ZodEnum<{
582
+ top: "top";
583
+ bottom: "bottom";
584
+ }>>;
585
+ }, z.core.$strict>;
586
+ t: z.ZodOptional<z.ZodObject<{
587
+ x: z.ZodInt;
588
+ y: z.ZodInt;
589
+ w: z.ZodInt;
590
+ h: z.ZodInt;
591
+ z: z.ZodOptional<z.ZodInt>;
592
+ bleed: z.ZodOptional<z.ZodEnum<{
593
+ left: "left";
594
+ right: "right";
595
+ both: "both";
596
+ }>>;
597
+ pin: z.ZodOptional<z.ZodEnum<{
598
+ top: "top";
599
+ bottom: "bottom";
600
+ }>>;
601
+ }, z.core.$strict>>;
602
+ m: z.ZodOptional<z.ZodObject<{
603
+ x: z.ZodInt;
604
+ y: z.ZodInt;
605
+ w: z.ZodInt;
606
+ h: z.ZodInt;
607
+ z: z.ZodOptional<z.ZodInt>;
608
+ bleed: z.ZodOptional<z.ZodEnum<{
609
+ left: "left";
610
+ right: "right";
611
+ both: "both";
612
+ }>>;
613
+ pin: z.ZodOptional<z.ZodEnum<{
614
+ top: "top";
615
+ bottom: "bottom";
616
+ }>>;
617
+ }, z.core.$strict>>;
618
+ }, z.core.$strict>>;
619
+ width: z.ZodOptional<z.ZodEnum<{
620
+ full: "full";
621
+ narrow: "narrow";
622
+ content: "content";
623
+ wide: "wide";
624
+ }>>;
625
+ }, z.core.$strict>], "mode">;
626
+ style: z.ZodObject<{
627
+ colorTheme: z.ZodOptional<z.ZodEnum<{
628
+ light: "light";
629
+ "light-accent": "light-accent";
630
+ dark: "dark";
631
+ "dark-accent": "dark-accent";
632
+ brand: "brand";
633
+ }>>;
634
+ padding: z.ZodOptional<z.ZodObject<{
635
+ d: z.ZodEnum<{
636
+ none: "none";
637
+ "3xs": "3xs";
638
+ "2xs": "2xs";
639
+ xs: "xs";
640
+ sm: "sm";
641
+ md: "md";
642
+ lg: "lg";
643
+ xl: "xl";
644
+ "2xl": "2xl";
645
+ "3xl": "3xl";
646
+ }>;
647
+ t: z.ZodOptional<z.ZodEnum<{
648
+ none: "none";
649
+ "3xs": "3xs";
650
+ "2xs": "2xs";
651
+ xs: "xs";
652
+ sm: "sm";
653
+ md: "md";
654
+ lg: "lg";
655
+ xl: "xl";
656
+ "2xl": "2xl";
657
+ "3xl": "3xl";
658
+ }>>;
659
+ m: z.ZodOptional<z.ZodEnum<{
660
+ none: "none";
661
+ "3xs": "3xs";
662
+ "2xs": "2xs";
663
+ xs: "xs";
664
+ sm: "sm";
665
+ md: "md";
666
+ lg: "lg";
667
+ xl: "xl";
668
+ "2xl": "2xl";
669
+ "3xl": "3xl";
670
+ }>>;
671
+ }, z.core.$strict>>;
672
+ minHeight: z.ZodOptional<z.ZodObject<{
673
+ d: z.ZodString;
674
+ t: z.ZodOptional<z.ZodString>;
675
+ m: z.ZodOptional<z.ZodString>;
676
+ }, z.core.$strict>>;
677
+ background: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
678
+ type: z.ZodLiteral<"none">;
679
+ }, z.core.$strict>, z.ZodObject<{
680
+ type: z.ZodLiteral<"color">;
681
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
682
+ }, z.core.$strict>, z.ZodObject<{
683
+ type: z.ZodLiteral<"image">;
684
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
685
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
686
+ overlay: z.ZodOptional<z.ZodObject<{
687
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
688
+ opacity: z.ZodNumber;
689
+ }, z.core.$strict>>;
690
+ parallax: z.ZodOptional<z.ZodBoolean>;
691
+ }, z.core.$strict>, z.ZodObject<{
692
+ type: z.ZodLiteral<"gradient">;
693
+ from: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
694
+ to: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
695
+ via: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
696
+ angle: z.ZodOptional<z.ZodNumber>;
697
+ }, z.core.$strict>, z.ZodObject<{
698
+ type: z.ZodLiteral<"video">;
699
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
700
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
701
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
702
+ overlay: z.ZodOptional<z.ZodObject<{
703
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
704
+ opacity: z.ZodNumber;
705
+ }, z.core.$strict>>;
706
+ }, z.core.$strict>], "type">>;
707
+ animation: z.ZodOptional<z.ZodObject<{
708
+ entrance: z.ZodEnum<{
709
+ none: "none";
710
+ fade: "fade";
711
+ rise: "rise";
712
+ slide: "slide";
713
+ zoom: "zoom";
714
+ clip: "clip";
715
+ }>;
716
+ stagger: z.ZodOptional<z.ZodBoolean>;
717
+ }, z.core.$strict>>;
718
+ }, z.core.$strict>;
719
+ locked: z.ZodOptional<z.ZodBoolean>;
720
+ hidden: z.ZodOptional<z.ZodBoolean>;
721
+ blocks: z.ZodArray<z.ZodObject<{
722
+ id: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
723
+ type: z.ZodString;
724
+ v: z.ZodInt;
725
+ column: z.ZodOptional<z.ZodInt>;
726
+ label: z.ZodOptional<z.ZodString>;
727
+ hidden: z.ZodOptional<z.ZodBoolean>;
728
+ fields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
729
+ variant: z.ZodOptional<z.ZodString>;
730
+ style: z.ZodOptional<z.ZodObject<{
731
+ colorTheme: z.ZodOptional<z.ZodEnum<{
732
+ light: "light";
733
+ "light-accent": "light-accent";
734
+ dark: "dark";
735
+ "dark-accent": "dark-accent";
736
+ brand: "brand";
737
+ }>>;
738
+ padding: z.ZodOptional<z.ZodObject<{
739
+ d: z.ZodEnum<{
740
+ none: "none";
741
+ "3xs": "3xs";
742
+ "2xs": "2xs";
743
+ xs: "xs";
744
+ sm: "sm";
745
+ md: "md";
746
+ lg: "lg";
747
+ xl: "xl";
748
+ "2xl": "2xl";
749
+ "3xl": "3xl";
750
+ }>;
751
+ t: z.ZodOptional<z.ZodEnum<{
752
+ none: "none";
753
+ "3xs": "3xs";
754
+ "2xs": "2xs";
755
+ xs: "xs";
756
+ sm: "sm";
757
+ md: "md";
758
+ lg: "lg";
759
+ xl: "xl";
760
+ "2xl": "2xl";
761
+ "3xl": "3xl";
762
+ }>>;
763
+ m: z.ZodOptional<z.ZodEnum<{
764
+ none: "none";
765
+ "3xs": "3xs";
766
+ "2xs": "2xs";
767
+ xs: "xs";
768
+ sm: "sm";
769
+ md: "md";
770
+ lg: "lg";
771
+ xl: "xl";
772
+ "2xl": "2xl";
773
+ "3xl": "3xl";
774
+ }>>;
775
+ }, z.core.$strict>>;
776
+ radius: z.ZodOptional<z.ZodEnum<{
777
+ none: "none";
778
+ sm: "sm";
779
+ md: "md";
780
+ lg: "lg";
781
+ xl: "xl";
782
+ full: "full";
783
+ }>>;
784
+ border: z.ZodOptional<z.ZodEnum<{
785
+ none: "none";
786
+ subtle: "subtle";
787
+ strong: "strong";
788
+ }>>;
789
+ shadow: z.ZodOptional<z.ZodEnum<{
790
+ none: "none";
791
+ sm: "sm";
792
+ md: "md";
793
+ lg: "lg";
794
+ }>>;
795
+ align: z.ZodOptional<z.ZodObject<{
796
+ d: z.ZodEnum<{
797
+ start: "start";
798
+ center: "center";
799
+ end: "end";
800
+ }>;
801
+ t: z.ZodOptional<z.ZodEnum<{
802
+ start: "start";
803
+ center: "center";
804
+ end: "end";
805
+ }>>;
806
+ m: z.ZodOptional<z.ZodEnum<{
807
+ start: "start";
808
+ center: "center";
809
+ end: "end";
810
+ }>>;
811
+ }, z.core.$strict>>;
812
+ imageTreatment: z.ZodOptional<z.ZodEnum<{
813
+ none: "none";
814
+ rounded: "rounded";
815
+ arch: "arch";
816
+ circle: "circle";
817
+ blob: "blob";
818
+ duotone: "duotone";
819
+ grain: "grain";
820
+ frame: "frame";
821
+ }>>;
822
+ animation: z.ZodOptional<z.ZodObject<{
823
+ entrance: z.ZodEnum<{
824
+ none: "none";
825
+ fade: "fade";
826
+ rise: "rise";
827
+ slide: "slide";
828
+ zoom: "zoom";
829
+ clip: "clip";
830
+ }>;
831
+ stagger: z.ZodOptional<z.ZodBoolean>;
832
+ }, z.core.$strict>>;
833
+ typography: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
834
+ small: "small";
835
+ display: "display";
836
+ h1: "h1";
837
+ h2: "h2";
838
+ h3: "h3";
839
+ h4: "h4";
840
+ lead: "lead";
841
+ body: "body";
842
+ eyebrow: "eyebrow";
843
+ }>>>;
844
+ }, z.core.$strict>>;
845
+ }, z.core.$strict>>;
846
+ }, z.core.$strict>;
847
+ }, z.core.$strict>;
848
+ declare const SectionMoveOpSchema: z.ZodObject<{
849
+ id: z.ZodString;
850
+ actor: z.ZodString;
851
+ ts: z.ZodNumber;
852
+ op: z.ZodLiteral<"section.move">;
853
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
854
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
855
+ at: z.ZodUnion<readonly [z.ZodInt, z.ZodLiteral<"start">, z.ZodLiteral<"end">, z.ZodObject<{
856
+ before: z.ZodString;
857
+ }, z.core.$strict>, z.ZodObject<{
858
+ after: z.ZodString;
859
+ }, z.core.$strict>]>;
860
+ }, z.core.$strict>;
861
+ declare const SectionDeleteOpSchema: z.ZodObject<{
862
+ id: z.ZodString;
863
+ actor: z.ZodString;
864
+ ts: z.ZodNumber;
865
+ op: z.ZodLiteral<"section.delete">;
866
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
867
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
868
+ }, z.core.$strict>;
869
+ /** Paths into the section (`"style.colorTheme"`, `"layout"`, `"label"`); not `id`/`blocks`. */
870
+ declare const SectionUpdateOpSchema: z.ZodObject<{
871
+ id: z.ZodString;
872
+ actor: z.ZodString;
873
+ ts: z.ZodNumber;
874
+ op: z.ZodLiteral<"section.update">;
875
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
876
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
877
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
878
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
879
+ }, z.core.$strict>;
880
+ declare const StylesPatchOpSchema: z.ZodObject<{
881
+ id: z.ZodString;
882
+ actor: z.ZodString;
883
+ ts: z.ZodNumber;
884
+ op: z.ZodLiteral<"styles.patch">;
885
+ patch: z.ZodObject<{
886
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
887
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
888
+ }, z.core.$strict>;
889
+ }, z.core.$strict>;
890
+ declare const PageCreateOpSchema: z.ZodObject<{
891
+ id: z.ZodString;
892
+ actor: z.ZodString;
893
+ ts: z.ZodNumber;
894
+ op: z.ZodLiteral<"page.create">;
895
+ page: z.ZodObject<{
896
+ $schema: z.ZodOptional<z.ZodString>;
897
+ id: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
898
+ title: z.ZodString;
899
+ slug: z.ZodString;
900
+ seo: z.ZodOptional<z.ZodObject<{
901
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
902
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
903
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
904
+ noindex: z.ZodOptional<z.ZodBoolean>;
905
+ canonical: z.ZodOptional<z.ZodURL>;
906
+ }, z.core.$strict>>;
907
+ header: z.ZodOptional<z.ZodObject<{
908
+ variant: z.ZodOptional<z.ZodEnum<{
909
+ "classic-left": "classic-left";
910
+ "classic-center": "classic-center";
911
+ "split-nav": "split-nav";
912
+ "logo-center-nav-below": "logo-center-nav-below";
913
+ "minimal-burger": "minimal-burger";
914
+ stacked: "stacked";
915
+ "sidebar-drawer": "sidebar-drawer";
916
+ "transparent-overlay": "transparent-overlay";
917
+ }>>;
918
+ transparentOnHero: z.ZodOptional<z.ZodBoolean>;
919
+ hidden: z.ZodOptional<z.ZodBoolean>;
920
+ }, z.core.$strict>>;
921
+ hidden: z.ZodOptional<z.ZodBoolean>;
922
+ access: z.ZodOptional<z.ZodObject<{
923
+ password: z.ZodOptional<z.ZodBoolean>;
924
+ members: z.ZodOptional<z.ZodBoolean>;
925
+ tiers: z.ZodOptional<z.ZodArray<z.ZodString>>;
926
+ }, z.core.$strict>>;
927
+ contentRef: z.ZodOptional<z.ZodString>;
928
+ sections: z.ZodArray<z.ZodObject<{
929
+ id: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
930
+ preset: z.ZodOptional<z.ZodString>;
931
+ label: z.ZodOptional<z.ZodString>;
932
+ anchor: z.ZodOptional<z.ZodString>;
933
+ layout: z.ZodDiscriminatedUnion<[z.ZodObject<{
934
+ mode: z.ZodLiteral<"stack">;
935
+ columns: z.ZodObject<{
936
+ d: z.ZodArray<z.ZodInt>;
937
+ t: z.ZodOptional<z.ZodArray<z.ZodInt>>;
938
+ m: z.ZodOptional<z.ZodArray<z.ZodInt>>;
939
+ }, z.core.$strict>;
940
+ order: z.ZodOptional<z.ZodObject<{
941
+ t: z.ZodOptional<z.ZodArray<z.ZodInt>>;
942
+ m: z.ZodOptional<z.ZodArray<z.ZodInt>>;
943
+ }, z.core.$strict>>;
944
+ align: z.ZodOptional<z.ZodEnum<{
945
+ start: "start";
946
+ center: "center";
947
+ end: "end";
948
+ stretch: "stretch";
949
+ }>>;
950
+ gap: z.ZodOptional<z.ZodEnum<{
951
+ none: "none";
952
+ "3xs": "3xs";
953
+ "2xs": "2xs";
954
+ xs: "xs";
955
+ sm: "sm";
956
+ md: "md";
957
+ lg: "lg";
958
+ xl: "xl";
959
+ "2xl": "2xl";
960
+ "3xl": "3xl";
961
+ }>>;
962
+ width: z.ZodOptional<z.ZodEnum<{
963
+ full: "full";
964
+ narrow: "narrow";
965
+ content: "content";
966
+ wide: "wide";
967
+ }>>;
968
+ }, z.core.$strict>, z.ZodObject<{
969
+ mode: z.ZodLiteral<"grid">;
970
+ rows: z.ZodObject<{
971
+ d: z.ZodInt;
972
+ t: z.ZodOptional<z.ZodInt>;
973
+ m: z.ZodOptional<z.ZodInt>;
974
+ }, z.core.$strict>;
975
+ items: z.ZodRecord<z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>, z.ZodObject<{
976
+ d: z.ZodObject<{
977
+ x: z.ZodInt;
978
+ y: z.ZodInt;
979
+ w: z.ZodInt;
980
+ h: z.ZodInt;
981
+ z: z.ZodOptional<z.ZodInt>;
982
+ bleed: z.ZodOptional<z.ZodEnum<{
983
+ left: "left";
984
+ right: "right";
985
+ both: "both";
986
+ }>>;
987
+ pin: z.ZodOptional<z.ZodEnum<{
988
+ top: "top";
989
+ bottom: "bottom";
990
+ }>>;
991
+ }, z.core.$strict>;
992
+ t: z.ZodOptional<z.ZodObject<{
993
+ x: z.ZodInt;
994
+ y: z.ZodInt;
995
+ w: z.ZodInt;
996
+ h: z.ZodInt;
997
+ z: z.ZodOptional<z.ZodInt>;
998
+ bleed: z.ZodOptional<z.ZodEnum<{
999
+ left: "left";
1000
+ right: "right";
1001
+ both: "both";
1002
+ }>>;
1003
+ pin: z.ZodOptional<z.ZodEnum<{
1004
+ top: "top";
1005
+ bottom: "bottom";
1006
+ }>>;
1007
+ }, z.core.$strict>>;
1008
+ m: z.ZodOptional<z.ZodObject<{
1009
+ x: z.ZodInt;
1010
+ y: z.ZodInt;
1011
+ w: z.ZodInt;
1012
+ h: z.ZodInt;
1013
+ z: z.ZodOptional<z.ZodInt>;
1014
+ bleed: z.ZodOptional<z.ZodEnum<{
1015
+ left: "left";
1016
+ right: "right";
1017
+ both: "both";
1018
+ }>>;
1019
+ pin: z.ZodOptional<z.ZodEnum<{
1020
+ top: "top";
1021
+ bottom: "bottom";
1022
+ }>>;
1023
+ }, z.core.$strict>>;
1024
+ }, z.core.$strict>>;
1025
+ width: z.ZodOptional<z.ZodEnum<{
1026
+ full: "full";
1027
+ narrow: "narrow";
1028
+ content: "content";
1029
+ wide: "wide";
1030
+ }>>;
1031
+ }, z.core.$strict>], "mode">;
1032
+ style: z.ZodObject<{
1033
+ colorTheme: z.ZodOptional<z.ZodEnum<{
1034
+ light: "light";
1035
+ "light-accent": "light-accent";
1036
+ dark: "dark";
1037
+ "dark-accent": "dark-accent";
1038
+ brand: "brand";
1039
+ }>>;
1040
+ padding: z.ZodOptional<z.ZodObject<{
1041
+ d: z.ZodEnum<{
1042
+ none: "none";
1043
+ "3xs": "3xs";
1044
+ "2xs": "2xs";
1045
+ xs: "xs";
1046
+ sm: "sm";
1047
+ md: "md";
1048
+ lg: "lg";
1049
+ xl: "xl";
1050
+ "2xl": "2xl";
1051
+ "3xl": "3xl";
1052
+ }>;
1053
+ t: z.ZodOptional<z.ZodEnum<{
1054
+ none: "none";
1055
+ "3xs": "3xs";
1056
+ "2xs": "2xs";
1057
+ xs: "xs";
1058
+ sm: "sm";
1059
+ md: "md";
1060
+ lg: "lg";
1061
+ xl: "xl";
1062
+ "2xl": "2xl";
1063
+ "3xl": "3xl";
1064
+ }>>;
1065
+ m: z.ZodOptional<z.ZodEnum<{
1066
+ none: "none";
1067
+ "3xs": "3xs";
1068
+ "2xs": "2xs";
1069
+ xs: "xs";
1070
+ sm: "sm";
1071
+ md: "md";
1072
+ lg: "lg";
1073
+ xl: "xl";
1074
+ "2xl": "2xl";
1075
+ "3xl": "3xl";
1076
+ }>>;
1077
+ }, z.core.$strict>>;
1078
+ minHeight: z.ZodOptional<z.ZodObject<{
1079
+ d: z.ZodString;
1080
+ t: z.ZodOptional<z.ZodString>;
1081
+ m: z.ZodOptional<z.ZodString>;
1082
+ }, z.core.$strict>>;
1083
+ background: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1084
+ type: z.ZodLiteral<"none">;
1085
+ }, z.core.$strict>, z.ZodObject<{
1086
+ type: z.ZodLiteral<"color">;
1087
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
1088
+ }, z.core.$strict>, z.ZodObject<{
1089
+ type: z.ZodLiteral<"image">;
1090
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
1091
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
1092
+ overlay: z.ZodOptional<z.ZodObject<{
1093
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
1094
+ opacity: z.ZodNumber;
1095
+ }, z.core.$strict>>;
1096
+ parallax: z.ZodOptional<z.ZodBoolean>;
1097
+ }, z.core.$strict>, z.ZodObject<{
1098
+ type: z.ZodLiteral<"gradient">;
1099
+ from: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
1100
+ to: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
1101
+ via: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
1102
+ angle: z.ZodOptional<z.ZodNumber>;
1103
+ }, z.core.$strict>, z.ZodObject<{
1104
+ type: z.ZodLiteral<"video">;
1105
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
1106
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
1107
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
1108
+ overlay: z.ZodOptional<z.ZodObject<{
1109
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
1110
+ opacity: z.ZodNumber;
1111
+ }, z.core.$strict>>;
1112
+ }, z.core.$strict>], "type">>;
1113
+ animation: z.ZodOptional<z.ZodObject<{
1114
+ entrance: z.ZodEnum<{
1115
+ none: "none";
1116
+ fade: "fade";
1117
+ rise: "rise";
1118
+ slide: "slide";
1119
+ zoom: "zoom";
1120
+ clip: "clip";
1121
+ }>;
1122
+ stagger: z.ZodOptional<z.ZodBoolean>;
1123
+ }, z.core.$strict>>;
1124
+ }, z.core.$strict>;
1125
+ locked: z.ZodOptional<z.ZodBoolean>;
1126
+ hidden: z.ZodOptional<z.ZodBoolean>;
1127
+ blocks: z.ZodArray<z.ZodObject<{
1128
+ id: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
1129
+ type: z.ZodString;
1130
+ v: z.ZodInt;
1131
+ column: z.ZodOptional<z.ZodInt>;
1132
+ label: z.ZodOptional<z.ZodString>;
1133
+ hidden: z.ZodOptional<z.ZodBoolean>;
1134
+ fields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1135
+ variant: z.ZodOptional<z.ZodString>;
1136
+ style: z.ZodOptional<z.ZodObject<{
1137
+ colorTheme: z.ZodOptional<z.ZodEnum<{
1138
+ light: "light";
1139
+ "light-accent": "light-accent";
1140
+ dark: "dark";
1141
+ "dark-accent": "dark-accent";
1142
+ brand: "brand";
1143
+ }>>;
1144
+ padding: z.ZodOptional<z.ZodObject<{
1145
+ d: z.ZodEnum<{
1146
+ none: "none";
1147
+ "3xs": "3xs";
1148
+ "2xs": "2xs";
1149
+ xs: "xs";
1150
+ sm: "sm";
1151
+ md: "md";
1152
+ lg: "lg";
1153
+ xl: "xl";
1154
+ "2xl": "2xl";
1155
+ "3xl": "3xl";
1156
+ }>;
1157
+ t: z.ZodOptional<z.ZodEnum<{
1158
+ none: "none";
1159
+ "3xs": "3xs";
1160
+ "2xs": "2xs";
1161
+ xs: "xs";
1162
+ sm: "sm";
1163
+ md: "md";
1164
+ lg: "lg";
1165
+ xl: "xl";
1166
+ "2xl": "2xl";
1167
+ "3xl": "3xl";
1168
+ }>>;
1169
+ m: z.ZodOptional<z.ZodEnum<{
1170
+ none: "none";
1171
+ "3xs": "3xs";
1172
+ "2xs": "2xs";
1173
+ xs: "xs";
1174
+ sm: "sm";
1175
+ md: "md";
1176
+ lg: "lg";
1177
+ xl: "xl";
1178
+ "2xl": "2xl";
1179
+ "3xl": "3xl";
1180
+ }>>;
1181
+ }, z.core.$strict>>;
1182
+ radius: z.ZodOptional<z.ZodEnum<{
1183
+ none: "none";
1184
+ sm: "sm";
1185
+ md: "md";
1186
+ lg: "lg";
1187
+ xl: "xl";
1188
+ full: "full";
1189
+ }>>;
1190
+ border: z.ZodOptional<z.ZodEnum<{
1191
+ none: "none";
1192
+ subtle: "subtle";
1193
+ strong: "strong";
1194
+ }>>;
1195
+ shadow: z.ZodOptional<z.ZodEnum<{
1196
+ none: "none";
1197
+ sm: "sm";
1198
+ md: "md";
1199
+ lg: "lg";
1200
+ }>>;
1201
+ align: z.ZodOptional<z.ZodObject<{
1202
+ d: z.ZodEnum<{
1203
+ start: "start";
1204
+ center: "center";
1205
+ end: "end";
1206
+ }>;
1207
+ t: z.ZodOptional<z.ZodEnum<{
1208
+ start: "start";
1209
+ center: "center";
1210
+ end: "end";
1211
+ }>>;
1212
+ m: z.ZodOptional<z.ZodEnum<{
1213
+ start: "start";
1214
+ center: "center";
1215
+ end: "end";
1216
+ }>>;
1217
+ }, z.core.$strict>>;
1218
+ imageTreatment: z.ZodOptional<z.ZodEnum<{
1219
+ none: "none";
1220
+ rounded: "rounded";
1221
+ arch: "arch";
1222
+ circle: "circle";
1223
+ blob: "blob";
1224
+ duotone: "duotone";
1225
+ grain: "grain";
1226
+ frame: "frame";
1227
+ }>>;
1228
+ animation: z.ZodOptional<z.ZodObject<{
1229
+ entrance: z.ZodEnum<{
1230
+ none: "none";
1231
+ fade: "fade";
1232
+ rise: "rise";
1233
+ slide: "slide";
1234
+ zoom: "zoom";
1235
+ clip: "clip";
1236
+ }>;
1237
+ stagger: z.ZodOptional<z.ZodBoolean>;
1238
+ }, z.core.$strict>>;
1239
+ typography: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
1240
+ small: "small";
1241
+ display: "display";
1242
+ h1: "h1";
1243
+ h2: "h2";
1244
+ h3: "h3";
1245
+ h4: "h4";
1246
+ lead: "lead";
1247
+ body: "body";
1248
+ eyebrow: "eyebrow";
1249
+ }>>>;
1250
+ }, z.core.$strict>>;
1251
+ }, z.core.$strict>>;
1252
+ }, z.core.$strict>>;
1253
+ headInjection: z.ZodOptional<z.ZodString>;
1254
+ footerInjection: z.ZodOptional<z.ZodString>;
1255
+ }, z.core.$strict>;
1256
+ nav: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1257
+ type: z.ZodLiteral<"page">;
1258
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1259
+ label: z.ZodOptional<z.ZodString>;
1260
+ hidden: z.ZodOptional<z.ZodBoolean>;
1261
+ }, z.core.$strict>, z.ZodObject<{
1262
+ type: z.ZodLiteral<"collection">;
1263
+ collection: z.ZodString;
1264
+ label: z.ZodString;
1265
+ hidden: z.ZodOptional<z.ZodBoolean>;
1266
+ }, z.core.$strict>, z.ZodObject<{
1267
+ type: z.ZodLiteral<"link">;
1268
+ label: z.ZodString;
1269
+ href: z.ZodURL;
1270
+ newTab: z.ZodOptional<z.ZodBoolean>;
1271
+ hidden: z.ZodOptional<z.ZodBoolean>;
1272
+ }, z.core.$strict>, z.ZodObject<{
1273
+ type: z.ZodLiteral<"button">;
1274
+ label: z.ZodString;
1275
+ link: z.ZodDiscriminatedUnion<[z.ZodObject<{
1276
+ type: z.ZodLiteral<"page">;
1277
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1278
+ anchor: z.ZodOptional<z.ZodString>;
1279
+ }, z.core.$strict>, z.ZodObject<{
1280
+ type: z.ZodLiteral<"item">;
1281
+ collection: z.ZodString;
1282
+ slug: z.ZodString;
1283
+ }, z.core.$strict>, z.ZodObject<{
1284
+ type: z.ZodLiteral<"url">;
1285
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1286
+ newTab: z.ZodOptional<z.ZodBoolean>;
1287
+ }, z.core.$strict>, z.ZodObject<{
1288
+ type: z.ZodLiteral<"email">;
1289
+ email: z.ZodEmail;
1290
+ subject: z.ZodOptional<z.ZodString>;
1291
+ }, z.core.$strict>, z.ZodObject<{
1292
+ type: z.ZodLiteral<"phone">;
1293
+ phone: z.ZodString;
1294
+ }, z.core.$strict>, z.ZodObject<{
1295
+ type: z.ZodLiteral<"file">;
1296
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
1297
+ newTab: z.ZodOptional<z.ZodBoolean>;
1298
+ }, z.core.$strict>, z.ZodObject<{
1299
+ type: z.ZodLiteral<"anchor">;
1300
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
1301
+ }, z.core.$strict>], "type">;
1302
+ style: z.ZodEnum<{
1303
+ primary: "primary";
1304
+ secondary: "secondary";
1305
+ tertiary: "tertiary";
1306
+ }>;
1307
+ hidden: z.ZodOptional<z.ZodBoolean>;
1308
+ }, z.core.$strict>, z.ZodObject<{
1309
+ type: z.ZodLiteral<"folder">;
1310
+ label: z.ZodString;
1311
+ page: z.ZodOptional<z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>>;
1312
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1313
+ type: z.ZodLiteral<"page">;
1314
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1315
+ label: z.ZodOptional<z.ZodString>;
1316
+ hidden: z.ZodOptional<z.ZodBoolean>;
1317
+ }, z.core.$strict>, z.ZodObject<{
1318
+ type: z.ZodLiteral<"collection">;
1319
+ collection: z.ZodString;
1320
+ label: z.ZodString;
1321
+ hidden: z.ZodOptional<z.ZodBoolean>;
1322
+ }, z.core.$strict>, z.ZodObject<{
1323
+ type: z.ZodLiteral<"link">;
1324
+ label: z.ZodString;
1325
+ href: z.ZodURL;
1326
+ newTab: z.ZodOptional<z.ZodBoolean>;
1327
+ hidden: z.ZodOptional<z.ZodBoolean>;
1328
+ }, z.core.$strict>], "type">>;
1329
+ hidden: z.ZodOptional<z.ZodBoolean>;
1330
+ }, z.core.$strict>], "type">>>;
1331
+ }, z.core.$strict>;
1332
+ /** Paths into the page (`"title"`, `"slug"`, `"seo.description"`); not `id`/`sections`. */
1333
+ declare const PageUpdateOpSchema: z.ZodObject<{
1334
+ id: z.ZodString;
1335
+ actor: z.ZodString;
1336
+ ts: z.ZodNumber;
1337
+ op: z.ZodLiteral<"page.update">;
1338
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1339
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
1340
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1341
+ }, z.core.$strict>;
1342
+ declare const PageDeleteOpSchema: z.ZodObject<{
1343
+ id: z.ZodString;
1344
+ actor: z.ZodString;
1345
+ ts: z.ZodNumber;
1346
+ op: z.ZodLiteral<"page.delete">;
1347
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1348
+ nav: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1349
+ type: z.ZodLiteral<"page">;
1350
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1351
+ label: z.ZodOptional<z.ZodString>;
1352
+ hidden: z.ZodOptional<z.ZodBoolean>;
1353
+ }, z.core.$strict>, z.ZodObject<{
1354
+ type: z.ZodLiteral<"collection">;
1355
+ collection: z.ZodString;
1356
+ label: z.ZodString;
1357
+ hidden: z.ZodOptional<z.ZodBoolean>;
1358
+ }, z.core.$strict>, z.ZodObject<{
1359
+ type: z.ZodLiteral<"link">;
1360
+ label: z.ZodString;
1361
+ href: z.ZodURL;
1362
+ newTab: z.ZodOptional<z.ZodBoolean>;
1363
+ hidden: z.ZodOptional<z.ZodBoolean>;
1364
+ }, z.core.$strict>, z.ZodObject<{
1365
+ type: z.ZodLiteral<"button">;
1366
+ label: z.ZodString;
1367
+ link: z.ZodDiscriminatedUnion<[z.ZodObject<{
1368
+ type: z.ZodLiteral<"page">;
1369
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1370
+ anchor: z.ZodOptional<z.ZodString>;
1371
+ }, z.core.$strict>, z.ZodObject<{
1372
+ type: z.ZodLiteral<"item">;
1373
+ collection: z.ZodString;
1374
+ slug: z.ZodString;
1375
+ }, z.core.$strict>, z.ZodObject<{
1376
+ type: z.ZodLiteral<"url">;
1377
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1378
+ newTab: z.ZodOptional<z.ZodBoolean>;
1379
+ }, z.core.$strict>, z.ZodObject<{
1380
+ type: z.ZodLiteral<"email">;
1381
+ email: z.ZodEmail;
1382
+ subject: z.ZodOptional<z.ZodString>;
1383
+ }, z.core.$strict>, z.ZodObject<{
1384
+ type: z.ZodLiteral<"phone">;
1385
+ phone: z.ZodString;
1386
+ }, z.core.$strict>, z.ZodObject<{
1387
+ type: z.ZodLiteral<"file">;
1388
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
1389
+ newTab: z.ZodOptional<z.ZodBoolean>;
1390
+ }, z.core.$strict>, z.ZodObject<{
1391
+ type: z.ZodLiteral<"anchor">;
1392
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
1393
+ }, z.core.$strict>], "type">;
1394
+ style: z.ZodEnum<{
1395
+ primary: "primary";
1396
+ secondary: "secondary";
1397
+ tertiary: "tertiary";
1398
+ }>;
1399
+ hidden: z.ZodOptional<z.ZodBoolean>;
1400
+ }, z.core.$strict>, z.ZodObject<{
1401
+ type: z.ZodLiteral<"folder">;
1402
+ label: z.ZodString;
1403
+ page: z.ZodOptional<z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>>;
1404
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1405
+ type: z.ZodLiteral<"page">;
1406
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1407
+ label: z.ZodOptional<z.ZodString>;
1408
+ hidden: z.ZodOptional<z.ZodBoolean>;
1409
+ }, z.core.$strict>, z.ZodObject<{
1410
+ type: z.ZodLiteral<"collection">;
1411
+ collection: z.ZodString;
1412
+ label: z.ZodString;
1413
+ hidden: z.ZodOptional<z.ZodBoolean>;
1414
+ }, z.core.$strict>, z.ZodObject<{
1415
+ type: z.ZodLiteral<"link">;
1416
+ label: z.ZodString;
1417
+ href: z.ZodURL;
1418
+ newTab: z.ZodOptional<z.ZodBoolean>;
1419
+ hidden: z.ZodOptional<z.ZodBoolean>;
1420
+ }, z.core.$strict>], "type">>;
1421
+ hidden: z.ZodOptional<z.ZodBoolean>;
1422
+ }, z.core.$strict>], "type">>>;
1423
+ }, z.core.$strict>;
1424
+ declare const NavUpdateOpSchema: z.ZodObject<{
1425
+ id: z.ZodString;
1426
+ actor: z.ZodString;
1427
+ ts: z.ZodNumber;
1428
+ op: z.ZodLiteral<"nav.update">;
1429
+ tree: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1430
+ type: z.ZodLiteral<"page">;
1431
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1432
+ label: z.ZodOptional<z.ZodString>;
1433
+ hidden: z.ZodOptional<z.ZodBoolean>;
1434
+ }, z.core.$strict>, z.ZodObject<{
1435
+ type: z.ZodLiteral<"collection">;
1436
+ collection: z.ZodString;
1437
+ label: z.ZodString;
1438
+ hidden: z.ZodOptional<z.ZodBoolean>;
1439
+ }, z.core.$strict>, z.ZodObject<{
1440
+ type: z.ZodLiteral<"link">;
1441
+ label: z.ZodString;
1442
+ href: z.ZodURL;
1443
+ newTab: z.ZodOptional<z.ZodBoolean>;
1444
+ hidden: z.ZodOptional<z.ZodBoolean>;
1445
+ }, z.core.$strict>, z.ZodObject<{
1446
+ type: z.ZodLiteral<"button">;
1447
+ label: z.ZodString;
1448
+ link: z.ZodDiscriminatedUnion<[z.ZodObject<{
1449
+ type: z.ZodLiteral<"page">;
1450
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1451
+ anchor: z.ZodOptional<z.ZodString>;
1452
+ }, z.core.$strict>, z.ZodObject<{
1453
+ type: z.ZodLiteral<"item">;
1454
+ collection: z.ZodString;
1455
+ slug: z.ZodString;
1456
+ }, z.core.$strict>, z.ZodObject<{
1457
+ type: z.ZodLiteral<"url">;
1458
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1459
+ newTab: z.ZodOptional<z.ZodBoolean>;
1460
+ }, z.core.$strict>, z.ZodObject<{
1461
+ type: z.ZodLiteral<"email">;
1462
+ email: z.ZodEmail;
1463
+ subject: z.ZodOptional<z.ZodString>;
1464
+ }, z.core.$strict>, z.ZodObject<{
1465
+ type: z.ZodLiteral<"phone">;
1466
+ phone: z.ZodString;
1467
+ }, z.core.$strict>, z.ZodObject<{
1468
+ type: z.ZodLiteral<"file">;
1469
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
1470
+ newTab: z.ZodOptional<z.ZodBoolean>;
1471
+ }, z.core.$strict>, z.ZodObject<{
1472
+ type: z.ZodLiteral<"anchor">;
1473
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
1474
+ }, z.core.$strict>], "type">;
1475
+ style: z.ZodEnum<{
1476
+ primary: "primary";
1477
+ secondary: "secondary";
1478
+ tertiary: "tertiary";
1479
+ }>;
1480
+ hidden: z.ZodOptional<z.ZodBoolean>;
1481
+ }, z.core.$strict>, z.ZodObject<{
1482
+ type: z.ZodLiteral<"folder">;
1483
+ label: z.ZodString;
1484
+ page: z.ZodOptional<z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>>;
1485
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1486
+ type: z.ZodLiteral<"page">;
1487
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
1488
+ label: z.ZodOptional<z.ZodString>;
1489
+ hidden: z.ZodOptional<z.ZodBoolean>;
1490
+ }, z.core.$strict>, z.ZodObject<{
1491
+ type: z.ZodLiteral<"collection">;
1492
+ collection: z.ZodString;
1493
+ label: z.ZodString;
1494
+ hidden: z.ZodOptional<z.ZodBoolean>;
1495
+ }, z.core.$strict>, z.ZodObject<{
1496
+ type: z.ZodLiteral<"link">;
1497
+ label: z.ZodString;
1498
+ href: z.ZodURL;
1499
+ newTab: z.ZodOptional<z.ZodBoolean>;
1500
+ hidden: z.ZodOptional<z.ZodBoolean>;
1501
+ }, z.core.$strict>], "type">>;
1502
+ hidden: z.ZodOptional<z.ZodBoolean>;
1503
+ }, z.core.$strict>], "type">>;
1504
+ }, z.core.$strict>;
1505
+ /** Paths into `site.json` (`"title"`, `"header.sticky"`); navigation goes through `nav.update`. */
1506
+ declare const SiteUpdateOpSchema: z.ZodObject<{
1507
+ id: z.ZodString;
1508
+ actor: z.ZodString;
1509
+ ts: z.ZodNumber;
1510
+ op: z.ZodLiteral<"site.update">;
1511
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1512
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
1513
+ }, z.core.$strict>;
1514
+ /** Adds (or replaces) the metadata for a media file. */
1515
+ declare const MediaAddOpSchema: z.ZodObject<{
1516
+ id: z.ZodString;
1517
+ actor: z.ZodString;
1518
+ ts: z.ZodNumber;
1519
+ op: z.ZodLiteral<"media.add">;
1520
+ path: z.ZodString;
1521
+ meta: z.ZodObject<{
1522
+ id: z.ZodType<`med_${string}`, `med_${string}`, z.core.$ZodTypeInternals<`med_${string}`, `med_${string}`>>;
1523
+ path: z.ZodString;
1524
+ kind: z.ZodEnum<{
1525
+ file: "file";
1526
+ video: "video";
1527
+ audio: "audio";
1528
+ image: "image";
1529
+ }>;
1530
+ mime: z.ZodString;
1531
+ bytes: z.ZodInt;
1532
+ width: z.ZodOptional<z.ZodInt>;
1533
+ height: z.ZodOptional<z.ZodInt>;
1534
+ duration: z.ZodOptional<z.ZodNumber>;
1535
+ alt: z.ZodOptional<z.ZodString>;
1536
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
1537
+ placeholder: z.ZodOptional<z.ZodString>;
1538
+ credit: z.ZodOptional<z.ZodObject<{
1539
+ author: z.ZodOptional<z.ZodString>;
1540
+ url: z.ZodOptional<z.ZodURL>;
1541
+ source: z.ZodOptional<z.ZodString>;
1542
+ }, z.core.$strict>>;
1543
+ license: z.ZodOptional<z.ZodString>;
1544
+ originalName: z.ZodOptional<z.ZodString>;
1545
+ createdAt: z.ZodISODateTime;
1546
+ }, z.core.$strict>;
1547
+ }, z.core.$strict>;
1548
+ declare const MediaRemoveOpSchema: z.ZodObject<{
1549
+ id: z.ZodString;
1550
+ actor: z.ZodString;
1551
+ ts: z.ZodNumber;
1552
+ op: z.ZodLiteral<"media.remove">;
1553
+ path: z.ZodString;
1554
+ }, z.core.$strict>;
1555
+ /** Creates or replaces a collection item (the collection is created if needed). */
1556
+ declare const CollectionUpsertOpSchema: z.ZodObject<{
1557
+ id: z.ZodString;
1558
+ actor: z.ZodString;
1559
+ ts: z.ZodNumber;
1560
+ op: z.ZodLiteral<"collection.upsert">;
1561
+ collection: z.ZodString;
1562
+ item: z.ZodDiscriminatedUnion<[z.ZodObject<{
1563
+ kind: z.ZodLiteral<"blog">;
1564
+ slug: z.ZodString;
1565
+ frontmatter: z.ZodObject<{
1566
+ date: z.ZodISODate;
1567
+ author: z.ZodOptional<z.ZodString>;
1568
+ title: z.ZodString;
1569
+ status: z.ZodEnum<{
1570
+ draft: "draft";
1571
+ scheduled: "scheduled";
1572
+ published: "published";
1573
+ }>;
1574
+ publishAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1575
+ excerpt: z.ZodOptional<z.ZodString>;
1576
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
1577
+ imageAlt: z.ZodOptional<z.ZodString>;
1578
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
1579
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1580
+ featured: z.ZodOptional<z.ZodBoolean>;
1581
+ seo: z.ZodOptional<z.ZodObject<{
1582
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1583
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1584
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
1585
+ noindex: z.ZodOptional<z.ZodBoolean>;
1586
+ canonical: z.ZodOptional<z.ZodURL>;
1587
+ }, z.core.$strict>>;
1588
+ }, z.core.$strict>;
1589
+ body: z.ZodString;
1590
+ }, z.core.$strict>, z.ZodObject<{
1591
+ kind: z.ZodLiteral<"events">;
1592
+ slug: z.ZodString;
1593
+ frontmatter: z.ZodObject<{
1594
+ start: z.ZodUnion<readonly [z.ZodISODateTime, z.ZodISODate]>;
1595
+ end: z.ZodOptional<z.ZodUnion<readonly [z.ZodISODateTime, z.ZodISODate]>>;
1596
+ allDay: z.ZodOptional<z.ZodBoolean>;
1597
+ timezone: z.ZodOptional<z.ZodString>;
1598
+ location: z.ZodOptional<z.ZodObject<{
1599
+ name: z.ZodOptional<z.ZodString>;
1600
+ address: z.ZodOptional<z.ZodString>;
1601
+ mapUrl: z.ZodOptional<z.ZodURL>;
1602
+ online: z.ZodOptional<z.ZodBoolean>;
1603
+ url: z.ZodOptional<z.ZodURL>;
1604
+ }, z.core.$strict>>;
1605
+ registrationUrl: z.ZodOptional<z.ZodURL>;
1606
+ price: z.ZodOptional<z.ZodString>;
1607
+ recurrence: z.ZodOptional<z.ZodString>;
1608
+ title: z.ZodString;
1609
+ status: z.ZodEnum<{
1610
+ draft: "draft";
1611
+ scheduled: "scheduled";
1612
+ published: "published";
1613
+ }>;
1614
+ publishAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1615
+ excerpt: z.ZodOptional<z.ZodString>;
1616
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
1617
+ imageAlt: z.ZodOptional<z.ZodString>;
1618
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
1619
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1620
+ featured: z.ZodOptional<z.ZodBoolean>;
1621
+ seo: z.ZodOptional<z.ZodObject<{
1622
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1623
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1624
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
1625
+ noindex: z.ZodOptional<z.ZodBoolean>;
1626
+ canonical: z.ZodOptional<z.ZodURL>;
1627
+ }, z.core.$strict>>;
1628
+ }, z.core.$strict>;
1629
+ body: z.ZodString;
1630
+ }, z.core.$strict>, z.ZodObject<{
1631
+ kind: z.ZodLiteral<"portfolio">;
1632
+ slug: z.ZodString;
1633
+ frontmatter: z.ZodObject<{
1634
+ date: z.ZodOptional<z.ZodISODate>;
1635
+ client: z.ZodOptional<z.ZodString>;
1636
+ role: z.ZodOptional<z.ZodString>;
1637
+ year: z.ZodOptional<z.ZodInt>;
1638
+ gallery: z.ZodOptional<z.ZodArray<z.ZodObject<{
1639
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
1640
+ alt: z.ZodString;
1641
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
1642
+ width: z.ZodOptional<z.ZodInt>;
1643
+ height: z.ZodOptional<z.ZodInt>;
1644
+ mediaId: z.ZodOptional<z.ZodType<`med_${string}`, `med_${string}`, z.core.$ZodTypeInternals<`med_${string}`, `med_${string}`>>>;
1645
+ }, z.core.$strict>>>;
1646
+ projectUrl: z.ZodOptional<z.ZodURL>;
1647
+ title: z.ZodString;
1648
+ status: z.ZodEnum<{
1649
+ draft: "draft";
1650
+ scheduled: "scheduled";
1651
+ published: "published";
1652
+ }>;
1653
+ publishAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1654
+ excerpt: z.ZodOptional<z.ZodString>;
1655
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
1656
+ imageAlt: z.ZodOptional<z.ZodString>;
1657
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
1658
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1659
+ featured: z.ZodOptional<z.ZodBoolean>;
1660
+ seo: z.ZodOptional<z.ZodObject<{
1661
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1662
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1663
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
1664
+ noindex: z.ZodOptional<z.ZodBoolean>;
1665
+ canonical: z.ZodOptional<z.ZodURL>;
1666
+ }, z.core.$strict>>;
1667
+ }, z.core.$strict>;
1668
+ body: z.ZodString;
1669
+ }, z.core.$strict>, z.ZodObject<{
1670
+ kind: z.ZodLiteral<"podcast">;
1671
+ slug: z.ZodString;
1672
+ frontmatter: z.ZodObject<{
1673
+ date: z.ZodISODate;
1674
+ audio: z.ZodObject<{
1675
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
1676
+ duration: z.ZodInt;
1677
+ bytes: z.ZodOptional<z.ZodInt>;
1678
+ mime: z.ZodEnum<{
1679
+ "audio/mpeg": "audio/mpeg";
1680
+ "audio/mp4": "audio/mp4";
1681
+ "audio/aac": "audio/aac";
1682
+ "audio/ogg": "audio/ogg";
1683
+ "audio/wav": "audio/wav";
1684
+ }>;
1685
+ }, z.core.$strict>;
1686
+ episode: z.ZodOptional<z.ZodInt>;
1687
+ season: z.ZodOptional<z.ZodInt>;
1688
+ episodeType: z.ZodOptional<z.ZodEnum<{
1689
+ full: "full";
1690
+ trailer: "trailer";
1691
+ bonus: "bonus";
1692
+ }>>;
1693
+ explicit: z.ZodOptional<z.ZodBoolean>;
1694
+ transcript: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
1695
+ title: z.ZodString;
1696
+ status: z.ZodEnum<{
1697
+ draft: "draft";
1698
+ scheduled: "scheduled";
1699
+ published: "published";
1700
+ }>;
1701
+ publishAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1702
+ excerpt: z.ZodOptional<z.ZodString>;
1703
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
1704
+ imageAlt: z.ZodOptional<z.ZodString>;
1705
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
1706
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1707
+ featured: z.ZodOptional<z.ZodBoolean>;
1708
+ seo: z.ZodOptional<z.ZodObject<{
1709
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1710
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1711
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
1712
+ noindex: z.ZodOptional<z.ZodBoolean>;
1713
+ canonical: z.ZodOptional<z.ZodURL>;
1714
+ }, z.core.$strict>>;
1715
+ }, z.core.$strict>;
1716
+ body: z.ZodString;
1717
+ }, z.core.$strict>, z.ZodObject<{
1718
+ kind: z.ZodLiteral<"products">;
1719
+ slug: z.ZodString;
1720
+ frontmatter: z.ZodObject<{
1721
+ price: z.ZodObject<{
1722
+ amount: z.ZodInt;
1723
+ currency: z.ZodString;
1724
+ }, z.core.$strict>;
1725
+ compareAtPrice: z.ZodOptional<z.ZodObject<{
1726
+ amount: z.ZodInt;
1727
+ currency: z.ZodString;
1728
+ }, z.core.$strict>>;
1729
+ sku: z.ZodOptional<z.ZodString>;
1730
+ images: z.ZodOptional<z.ZodArray<z.ZodObject<{
1731
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
1732
+ alt: z.ZodString;
1733
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
1734
+ width: z.ZodOptional<z.ZodInt>;
1735
+ height: z.ZodOptional<z.ZodInt>;
1736
+ mediaId: z.ZodOptional<z.ZodType<`med_${string}`, `med_${string}`, z.core.$ZodTypeInternals<`med_${string}`, `med_${string}`>>>;
1737
+ }, z.core.$strict>>>;
1738
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
1739
+ name: z.ZodString;
1740
+ values: z.ZodArray<z.ZodString>;
1741
+ }, z.core.$strict>>>;
1742
+ variants: z.ZodOptional<z.ZodArray<z.ZodObject<{
1743
+ sku: z.ZodOptional<z.ZodString>;
1744
+ options: z.ZodRecord<z.ZodString, z.ZodString>;
1745
+ price: z.ZodOptional<z.ZodObject<{
1746
+ amount: z.ZodInt;
1747
+ currency: z.ZodString;
1748
+ }, z.core.$strict>>;
1749
+ available: z.ZodOptional<z.ZodBoolean>;
1750
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
1751
+ weight: z.ZodOptional<z.ZodInt>;
1752
+ }, z.core.$strict>>>;
1753
+ digital: z.ZodOptional<z.ZodBoolean>;
1754
+ available: z.ZodOptional<z.ZodBoolean>;
1755
+ weight: z.ZodOptional<z.ZodInt>;
1756
+ subscription: z.ZodOptional<z.ZodObject<{
1757
+ interval: z.ZodEnum<{
1758
+ year: "year";
1759
+ month: "month";
1760
+ }>;
1761
+ }, z.core.$strict>>;
1762
+ title: z.ZodString;
1763
+ status: z.ZodEnum<{
1764
+ draft: "draft";
1765
+ scheduled: "scheduled";
1766
+ published: "published";
1767
+ }>;
1768
+ publishAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1769
+ excerpt: z.ZodOptional<z.ZodString>;
1770
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
1771
+ imageAlt: z.ZodOptional<z.ZodString>;
1772
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
1773
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1774
+ featured: z.ZodOptional<z.ZodBoolean>;
1775
+ seo: z.ZodOptional<z.ZodObject<{
1776
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1777
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1778
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
1779
+ noindex: z.ZodOptional<z.ZodBoolean>;
1780
+ canonical: z.ZodOptional<z.ZodURL>;
1781
+ }, z.core.$strict>>;
1782
+ }, z.core.$strict>;
1783
+ body: z.ZodString;
1784
+ }, z.core.$strict>], "kind">;
1785
+ }, z.core.$strict>;
1786
+ declare const CollectionDeleteOpSchema: z.ZodObject<{
1787
+ id: z.ZodString;
1788
+ actor: z.ZodString;
1789
+ ts: z.ZodNumber;
1790
+ op: z.ZodLiteral<"collection.delete">;
1791
+ collection: z.ZodString;
1792
+ slug: z.ZodString;
1793
+ keepEmpty: z.ZodOptional<z.ZodBoolean>;
1794
+ }, z.core.$strict>;
1795
+ /** Creates, replaces or (with `config: null`) removes a collection's `_collection.json`. */
1796
+ declare const CollectionConfigUpsertOpSchema: z.ZodObject<{
1797
+ id: z.ZodString;
1798
+ actor: z.ZodString;
1799
+ ts: z.ZodNumber;
1800
+ op: z.ZodLiteral<"collectionConfig.upsert">;
1801
+ collection: z.ZodString;
1802
+ config: z.ZodNullable<z.ZodObject<{
1803
+ $schema: z.ZodOptional<z.ZodString>;
1804
+ kind: z.ZodEnum<{
1805
+ custom: "custom";
1806
+ blog: "blog";
1807
+ events: "events";
1808
+ portfolio: "portfolio";
1809
+ podcast: "podcast";
1810
+ products: "products";
1811
+ }>;
1812
+ label: z.ZodString;
1813
+ itemLabel: z.ZodOptional<z.ZodString>;
1814
+ slugPattern: z.ZodOptional<z.ZodString>;
1815
+ list: z.ZodObject<{
1816
+ layout: z.ZodEnum<{
1817
+ grid: "grid";
1818
+ list: "list";
1819
+ cards: "cards";
1820
+ masonry: "masonry";
1821
+ calendar: "calendar";
1822
+ compact: "compact";
1823
+ }>;
1824
+ pageSize: z.ZodInt;
1825
+ sort: z.ZodEnum<{
1826
+ title: "title";
1827
+ "date-desc": "date-desc";
1828
+ "date-asc": "date-asc";
1829
+ manual: "manual";
1830
+ }>;
1831
+ }, z.core.$strict>;
1832
+ itemPage: z.ZodOptional<z.ZodObject<{
1833
+ layout: z.ZodEnum<{
1834
+ split: "split";
1835
+ wide: "wide";
1836
+ gallery: "gallery";
1837
+ article: "article";
1838
+ minimal: "minimal";
1839
+ }>;
1840
+ showDate: z.ZodOptional<z.ZodBoolean>;
1841
+ showAuthor: z.ZodOptional<z.ZodBoolean>;
1842
+ showRelated: z.ZodOptional<z.ZodBoolean>;
1843
+ }, z.core.$strict>>;
1844
+ taxonomies: z.ZodOptional<z.ZodObject<{
1845
+ categories: z.ZodOptional<z.ZodArray<z.ZodObject<{
1846
+ slug: z.ZodString;
1847
+ label: z.ZodString;
1848
+ }, z.core.$strict>>>;
1849
+ tags: z.ZodOptional<z.ZodBoolean>;
1850
+ }, z.core.$strict>>;
1851
+ feed: z.ZodOptional<z.ZodObject<{
1852
+ enabled: z.ZodBoolean;
1853
+ format: z.ZodOptional<z.ZodEnum<{
1854
+ podcast: "podcast";
1855
+ rss: "rss";
1856
+ atom: "atom";
1857
+ ical: "ical";
1858
+ }>>;
1859
+ title: z.ZodOptional<z.ZodString>;
1860
+ description: z.ZodOptional<z.ZodString>;
1861
+ }, z.core.$strict>>;
1862
+ }, z.core.$strict>>;
1863
+ keepEmpty: z.ZodOptional<z.ZodBoolean>;
1864
+ }, z.core.$strict>;
1865
+ declare const OpSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1866
+ id: z.ZodString;
1867
+ actor: z.ZodString;
1868
+ ts: z.ZodNumber;
1869
+ op: z.ZodLiteral<"block.update">;
1870
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
1871
+ block: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
1872
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1873
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
1874
+ variant: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1875
+ style: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1876
+ colorTheme: z.ZodOptional<z.ZodEnum<{
1877
+ light: "light";
1878
+ "light-accent": "light-accent";
1879
+ dark: "dark";
1880
+ "dark-accent": "dark-accent";
1881
+ brand: "brand";
1882
+ }>>;
1883
+ padding: z.ZodOptional<z.ZodObject<{
1884
+ d: z.ZodEnum<{
1885
+ none: "none";
1886
+ "3xs": "3xs";
1887
+ "2xs": "2xs";
1888
+ xs: "xs";
1889
+ sm: "sm";
1890
+ md: "md";
1891
+ lg: "lg";
1892
+ xl: "xl";
1893
+ "2xl": "2xl";
1894
+ "3xl": "3xl";
1895
+ }>;
1896
+ t: z.ZodOptional<z.ZodEnum<{
1897
+ none: "none";
1898
+ "3xs": "3xs";
1899
+ "2xs": "2xs";
1900
+ xs: "xs";
1901
+ sm: "sm";
1902
+ md: "md";
1903
+ lg: "lg";
1904
+ xl: "xl";
1905
+ "2xl": "2xl";
1906
+ "3xl": "3xl";
1907
+ }>>;
1908
+ m: z.ZodOptional<z.ZodEnum<{
1909
+ none: "none";
1910
+ "3xs": "3xs";
1911
+ "2xs": "2xs";
1912
+ xs: "xs";
1913
+ sm: "sm";
1914
+ md: "md";
1915
+ lg: "lg";
1916
+ xl: "xl";
1917
+ "2xl": "2xl";
1918
+ "3xl": "3xl";
1919
+ }>>;
1920
+ }, z.core.$strict>>;
1921
+ radius: z.ZodOptional<z.ZodEnum<{
1922
+ none: "none";
1923
+ sm: "sm";
1924
+ md: "md";
1925
+ lg: "lg";
1926
+ xl: "xl";
1927
+ full: "full";
1928
+ }>>;
1929
+ border: z.ZodOptional<z.ZodEnum<{
1930
+ none: "none";
1931
+ subtle: "subtle";
1932
+ strong: "strong";
1933
+ }>>;
1934
+ shadow: z.ZodOptional<z.ZodEnum<{
1935
+ none: "none";
1936
+ sm: "sm";
1937
+ md: "md";
1938
+ lg: "lg";
1939
+ }>>;
1940
+ align: z.ZodOptional<z.ZodObject<{
1941
+ d: z.ZodEnum<{
1942
+ start: "start";
1943
+ center: "center";
1944
+ end: "end";
1945
+ }>;
1946
+ t: z.ZodOptional<z.ZodEnum<{
1947
+ start: "start";
1948
+ center: "center";
1949
+ end: "end";
1950
+ }>>;
1951
+ m: z.ZodOptional<z.ZodEnum<{
1952
+ start: "start";
1953
+ center: "center";
1954
+ end: "end";
1955
+ }>>;
1956
+ }, z.core.$strict>>;
1957
+ imageTreatment: z.ZodOptional<z.ZodEnum<{
1958
+ none: "none";
1959
+ rounded: "rounded";
1960
+ arch: "arch";
1961
+ circle: "circle";
1962
+ blob: "blob";
1963
+ duotone: "duotone";
1964
+ grain: "grain";
1965
+ frame: "frame";
1966
+ }>>;
1967
+ animation: z.ZodOptional<z.ZodObject<{
1968
+ entrance: z.ZodEnum<{
1969
+ none: "none";
1970
+ fade: "fade";
1971
+ rise: "rise";
1972
+ slide: "slide";
1973
+ zoom: "zoom";
1974
+ clip: "clip";
1975
+ }>;
1976
+ stagger: z.ZodOptional<z.ZodBoolean>;
1977
+ }, z.core.$strict>>;
1978
+ typography: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
1979
+ small: "small";
1980
+ display: "display";
1981
+ h1: "h1";
1982
+ h2: "h2";
1983
+ h3: "h3";
1984
+ h4: "h4";
1985
+ lead: "lead";
1986
+ body: "body";
1987
+ eyebrow: "eyebrow";
1988
+ }>>>;
1989
+ }, z.core.$strict>>>;
1990
+ column: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
1991
+ label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1992
+ hidden: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
1993
+ }, z.core.$strict>, z.ZodObject<{
1994
+ id: z.ZodString;
1995
+ actor: z.ZodString;
1996
+ ts: z.ZodNumber;
1997
+ op: z.ZodLiteral<"block.insert">;
1998
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
1999
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
2000
+ at: z.ZodUnion<readonly [z.ZodInt, z.ZodLiteral<"start">, z.ZodLiteral<"end">, z.ZodObject<{
2001
+ before: z.ZodString;
2002
+ }, z.core.$strict>, z.ZodObject<{
2003
+ after: z.ZodString;
2004
+ }, z.core.$strict>]>;
2005
+ block: z.ZodObject<{
2006
+ id: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
2007
+ type: z.ZodString;
2008
+ v: z.ZodInt;
2009
+ column: z.ZodOptional<z.ZodInt>;
2010
+ label: z.ZodOptional<z.ZodString>;
2011
+ hidden: z.ZodOptional<z.ZodBoolean>;
2012
+ fields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2013
+ variant: z.ZodOptional<z.ZodString>;
2014
+ style: z.ZodOptional<z.ZodObject<{
2015
+ colorTheme: z.ZodOptional<z.ZodEnum<{
2016
+ light: "light";
2017
+ "light-accent": "light-accent";
2018
+ dark: "dark";
2019
+ "dark-accent": "dark-accent";
2020
+ brand: "brand";
2021
+ }>>;
2022
+ padding: z.ZodOptional<z.ZodObject<{
2023
+ d: z.ZodEnum<{
2024
+ none: "none";
2025
+ "3xs": "3xs";
2026
+ "2xs": "2xs";
2027
+ xs: "xs";
2028
+ sm: "sm";
2029
+ md: "md";
2030
+ lg: "lg";
2031
+ xl: "xl";
2032
+ "2xl": "2xl";
2033
+ "3xl": "3xl";
2034
+ }>;
2035
+ t: z.ZodOptional<z.ZodEnum<{
2036
+ none: "none";
2037
+ "3xs": "3xs";
2038
+ "2xs": "2xs";
2039
+ xs: "xs";
2040
+ sm: "sm";
2041
+ md: "md";
2042
+ lg: "lg";
2043
+ xl: "xl";
2044
+ "2xl": "2xl";
2045
+ "3xl": "3xl";
2046
+ }>>;
2047
+ m: z.ZodOptional<z.ZodEnum<{
2048
+ none: "none";
2049
+ "3xs": "3xs";
2050
+ "2xs": "2xs";
2051
+ xs: "xs";
2052
+ sm: "sm";
2053
+ md: "md";
2054
+ lg: "lg";
2055
+ xl: "xl";
2056
+ "2xl": "2xl";
2057
+ "3xl": "3xl";
2058
+ }>>;
2059
+ }, z.core.$strict>>;
2060
+ radius: z.ZodOptional<z.ZodEnum<{
2061
+ none: "none";
2062
+ sm: "sm";
2063
+ md: "md";
2064
+ lg: "lg";
2065
+ xl: "xl";
2066
+ full: "full";
2067
+ }>>;
2068
+ border: z.ZodOptional<z.ZodEnum<{
2069
+ none: "none";
2070
+ subtle: "subtle";
2071
+ strong: "strong";
2072
+ }>>;
2073
+ shadow: z.ZodOptional<z.ZodEnum<{
2074
+ none: "none";
2075
+ sm: "sm";
2076
+ md: "md";
2077
+ lg: "lg";
2078
+ }>>;
2079
+ align: z.ZodOptional<z.ZodObject<{
2080
+ d: z.ZodEnum<{
2081
+ start: "start";
2082
+ center: "center";
2083
+ end: "end";
2084
+ }>;
2085
+ t: z.ZodOptional<z.ZodEnum<{
2086
+ start: "start";
2087
+ center: "center";
2088
+ end: "end";
2089
+ }>>;
2090
+ m: z.ZodOptional<z.ZodEnum<{
2091
+ start: "start";
2092
+ center: "center";
2093
+ end: "end";
2094
+ }>>;
2095
+ }, z.core.$strict>>;
2096
+ imageTreatment: z.ZodOptional<z.ZodEnum<{
2097
+ none: "none";
2098
+ rounded: "rounded";
2099
+ arch: "arch";
2100
+ circle: "circle";
2101
+ blob: "blob";
2102
+ duotone: "duotone";
2103
+ grain: "grain";
2104
+ frame: "frame";
2105
+ }>>;
2106
+ animation: z.ZodOptional<z.ZodObject<{
2107
+ entrance: z.ZodEnum<{
2108
+ none: "none";
2109
+ fade: "fade";
2110
+ rise: "rise";
2111
+ slide: "slide";
2112
+ zoom: "zoom";
2113
+ clip: "clip";
2114
+ }>;
2115
+ stagger: z.ZodOptional<z.ZodBoolean>;
2116
+ }, z.core.$strict>>;
2117
+ typography: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
2118
+ small: "small";
2119
+ display: "display";
2120
+ h1: "h1";
2121
+ h2: "h2";
2122
+ h3: "h3";
2123
+ h4: "h4";
2124
+ lead: "lead";
2125
+ body: "body";
2126
+ eyebrow: "eyebrow";
2127
+ }>>>;
2128
+ }, z.core.$strict>>;
2129
+ }, z.core.$strict>;
2130
+ place: z.ZodOptional<z.ZodObject<{
2131
+ d: z.ZodObject<{
2132
+ x: z.ZodInt;
2133
+ y: z.ZodInt;
2134
+ w: z.ZodInt;
2135
+ h: z.ZodInt;
2136
+ z: z.ZodOptional<z.ZodInt>;
2137
+ bleed: z.ZodOptional<z.ZodEnum<{
2138
+ left: "left";
2139
+ right: "right";
2140
+ both: "both";
2141
+ }>>;
2142
+ pin: z.ZodOptional<z.ZodEnum<{
2143
+ top: "top";
2144
+ bottom: "bottom";
2145
+ }>>;
2146
+ }, z.core.$strict>;
2147
+ t: z.ZodOptional<z.ZodObject<{
2148
+ x: z.ZodInt;
2149
+ y: z.ZodInt;
2150
+ w: z.ZodInt;
2151
+ h: z.ZodInt;
2152
+ z: z.ZodOptional<z.ZodInt>;
2153
+ bleed: z.ZodOptional<z.ZodEnum<{
2154
+ left: "left";
2155
+ right: "right";
2156
+ both: "both";
2157
+ }>>;
2158
+ pin: z.ZodOptional<z.ZodEnum<{
2159
+ top: "top";
2160
+ bottom: "bottom";
2161
+ }>>;
2162
+ }, z.core.$strict>>;
2163
+ m: z.ZodOptional<z.ZodObject<{
2164
+ x: z.ZodInt;
2165
+ y: z.ZodInt;
2166
+ w: z.ZodInt;
2167
+ h: z.ZodInt;
2168
+ z: z.ZodOptional<z.ZodInt>;
2169
+ bleed: z.ZodOptional<z.ZodEnum<{
2170
+ left: "left";
2171
+ right: "right";
2172
+ both: "both";
2173
+ }>>;
2174
+ pin: z.ZodOptional<z.ZodEnum<{
2175
+ top: "top";
2176
+ bottom: "bottom";
2177
+ }>>;
2178
+ }, z.core.$strict>>;
2179
+ }, z.core.$strict>>;
2180
+ rows: z.ZodOptional<z.ZodObject<{
2181
+ d: z.ZodInt;
2182
+ t: z.ZodOptional<z.ZodInt>;
2183
+ m: z.ZodOptional<z.ZodInt>;
2184
+ }, z.core.$strict>>;
2185
+ }, z.core.$strict>, z.ZodObject<{
2186
+ id: z.ZodString;
2187
+ actor: z.ZodString;
2188
+ ts: z.ZodNumber;
2189
+ op: z.ZodLiteral<"block.move">;
2190
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
2191
+ block: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
2192
+ to: z.ZodObject<{
2193
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
2194
+ at: z.ZodUnion<readonly [z.ZodInt, z.ZodLiteral<"start">, z.ZodLiteral<"end">, z.ZodObject<{
2195
+ before: z.ZodString;
2196
+ }, z.core.$strict>, z.ZodObject<{
2197
+ after: z.ZodString;
2198
+ }, z.core.$strict>]>;
2199
+ place: z.ZodOptional<z.ZodObject<{
2200
+ d: z.ZodObject<{
2201
+ x: z.ZodInt;
2202
+ y: z.ZodInt;
2203
+ w: z.ZodInt;
2204
+ h: z.ZodInt;
2205
+ z: z.ZodOptional<z.ZodInt>;
2206
+ bleed: z.ZodOptional<z.ZodEnum<{
2207
+ left: "left";
2208
+ right: "right";
2209
+ both: "both";
2210
+ }>>;
2211
+ pin: z.ZodOptional<z.ZodEnum<{
2212
+ top: "top";
2213
+ bottom: "bottom";
2214
+ }>>;
2215
+ }, z.core.$strict>;
2216
+ t: z.ZodOptional<z.ZodObject<{
2217
+ x: z.ZodInt;
2218
+ y: z.ZodInt;
2219
+ w: z.ZodInt;
2220
+ h: z.ZodInt;
2221
+ z: z.ZodOptional<z.ZodInt>;
2222
+ bleed: z.ZodOptional<z.ZodEnum<{
2223
+ left: "left";
2224
+ right: "right";
2225
+ both: "both";
2226
+ }>>;
2227
+ pin: z.ZodOptional<z.ZodEnum<{
2228
+ top: "top";
2229
+ bottom: "bottom";
2230
+ }>>;
2231
+ }, z.core.$strict>>;
2232
+ m: z.ZodOptional<z.ZodObject<{
2233
+ x: z.ZodInt;
2234
+ y: z.ZodInt;
2235
+ w: z.ZodInt;
2236
+ h: z.ZodInt;
2237
+ z: z.ZodOptional<z.ZodInt>;
2238
+ bleed: z.ZodOptional<z.ZodEnum<{
2239
+ left: "left";
2240
+ right: "right";
2241
+ both: "both";
2242
+ }>>;
2243
+ pin: z.ZodOptional<z.ZodEnum<{
2244
+ top: "top";
2245
+ bottom: "bottom";
2246
+ }>>;
2247
+ }, z.core.$strict>>;
2248
+ }, z.core.$strict>>;
2249
+ column: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
2250
+ rows: z.ZodOptional<z.ZodObject<{
2251
+ d: z.ZodInt;
2252
+ t: z.ZodOptional<z.ZodInt>;
2253
+ m: z.ZodOptional<z.ZodInt>;
2254
+ }, z.core.$strict>>;
2255
+ }, z.core.$strict>;
2256
+ fromRows: z.ZodOptional<z.ZodObject<{
2257
+ d: z.ZodInt;
2258
+ t: z.ZodOptional<z.ZodInt>;
2259
+ m: z.ZodOptional<z.ZodInt>;
2260
+ }, z.core.$strict>>;
2261
+ }, z.core.$strict>, z.ZodObject<{
2262
+ id: z.ZodString;
2263
+ actor: z.ZodString;
2264
+ ts: z.ZodNumber;
2265
+ op: z.ZodLiteral<"block.delete">;
2266
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
2267
+ block: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
2268
+ rows: z.ZodOptional<z.ZodObject<{
2269
+ d: z.ZodInt;
2270
+ t: z.ZodOptional<z.ZodInt>;
2271
+ m: z.ZodOptional<z.ZodInt>;
2272
+ }, z.core.$strict>>;
2273
+ }, z.core.$strict>, z.ZodObject<{
2274
+ id: z.ZodString;
2275
+ actor: z.ZodString;
2276
+ ts: z.ZodNumber;
2277
+ op: z.ZodLiteral<"grid.place">;
2278
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
2279
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
2280
+ block: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
2281
+ bp: z.ZodEnum<{
2282
+ d: "d";
2283
+ t: "t";
2284
+ m: "m";
2285
+ }>;
2286
+ rect: z.ZodNullable<z.ZodObject<{
2287
+ x: z.ZodInt;
2288
+ y: z.ZodInt;
2289
+ w: z.ZodInt;
2290
+ h: z.ZodInt;
2291
+ z: z.ZodOptional<z.ZodInt>;
2292
+ bleed: z.ZodOptional<z.ZodEnum<{
2293
+ left: "left";
2294
+ right: "right";
2295
+ both: "both";
2296
+ }>>;
2297
+ pin: z.ZodOptional<z.ZodEnum<{
2298
+ top: "top";
2299
+ bottom: "bottom";
2300
+ }>>;
2301
+ }, z.core.$strict>>;
2302
+ rows: z.ZodOptional<z.ZodObject<{
2303
+ d: z.ZodInt;
2304
+ t: z.ZodOptional<z.ZodInt>;
2305
+ m: z.ZodOptional<z.ZodInt>;
2306
+ }, z.core.$strict>>;
2307
+ }, z.core.$strict>, z.ZodObject<{
2308
+ id: z.ZodString;
2309
+ actor: z.ZodString;
2310
+ ts: z.ZodNumber;
2311
+ op: z.ZodLiteral<"section.insert">;
2312
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
2313
+ at: z.ZodUnion<readonly [z.ZodInt, z.ZodLiteral<"start">, z.ZodLiteral<"end">, z.ZodObject<{
2314
+ before: z.ZodString;
2315
+ }, z.core.$strict>, z.ZodObject<{
2316
+ after: z.ZodString;
2317
+ }, z.core.$strict>]>;
2318
+ section: z.ZodObject<{
2319
+ id: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
2320
+ preset: z.ZodOptional<z.ZodString>;
2321
+ label: z.ZodOptional<z.ZodString>;
2322
+ anchor: z.ZodOptional<z.ZodString>;
2323
+ layout: z.ZodDiscriminatedUnion<[z.ZodObject<{
2324
+ mode: z.ZodLiteral<"stack">;
2325
+ columns: z.ZodObject<{
2326
+ d: z.ZodArray<z.ZodInt>;
2327
+ t: z.ZodOptional<z.ZodArray<z.ZodInt>>;
2328
+ m: z.ZodOptional<z.ZodArray<z.ZodInt>>;
2329
+ }, z.core.$strict>;
2330
+ order: z.ZodOptional<z.ZodObject<{
2331
+ t: z.ZodOptional<z.ZodArray<z.ZodInt>>;
2332
+ m: z.ZodOptional<z.ZodArray<z.ZodInt>>;
2333
+ }, z.core.$strict>>;
2334
+ align: z.ZodOptional<z.ZodEnum<{
2335
+ start: "start";
2336
+ center: "center";
2337
+ end: "end";
2338
+ stretch: "stretch";
2339
+ }>>;
2340
+ gap: z.ZodOptional<z.ZodEnum<{
2341
+ none: "none";
2342
+ "3xs": "3xs";
2343
+ "2xs": "2xs";
2344
+ xs: "xs";
2345
+ sm: "sm";
2346
+ md: "md";
2347
+ lg: "lg";
2348
+ xl: "xl";
2349
+ "2xl": "2xl";
2350
+ "3xl": "3xl";
2351
+ }>>;
2352
+ width: z.ZodOptional<z.ZodEnum<{
2353
+ full: "full";
2354
+ narrow: "narrow";
2355
+ content: "content";
2356
+ wide: "wide";
2357
+ }>>;
2358
+ }, z.core.$strict>, z.ZodObject<{
2359
+ mode: z.ZodLiteral<"grid">;
2360
+ rows: z.ZodObject<{
2361
+ d: z.ZodInt;
2362
+ t: z.ZodOptional<z.ZodInt>;
2363
+ m: z.ZodOptional<z.ZodInt>;
2364
+ }, z.core.$strict>;
2365
+ items: z.ZodRecord<z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>, z.ZodObject<{
2366
+ d: z.ZodObject<{
2367
+ x: z.ZodInt;
2368
+ y: z.ZodInt;
2369
+ w: z.ZodInt;
2370
+ h: z.ZodInt;
2371
+ z: z.ZodOptional<z.ZodInt>;
2372
+ bleed: z.ZodOptional<z.ZodEnum<{
2373
+ left: "left";
2374
+ right: "right";
2375
+ both: "both";
2376
+ }>>;
2377
+ pin: z.ZodOptional<z.ZodEnum<{
2378
+ top: "top";
2379
+ bottom: "bottom";
2380
+ }>>;
2381
+ }, z.core.$strict>;
2382
+ t: z.ZodOptional<z.ZodObject<{
2383
+ x: z.ZodInt;
2384
+ y: z.ZodInt;
2385
+ w: z.ZodInt;
2386
+ h: z.ZodInt;
2387
+ z: z.ZodOptional<z.ZodInt>;
2388
+ bleed: z.ZodOptional<z.ZodEnum<{
2389
+ left: "left";
2390
+ right: "right";
2391
+ both: "both";
2392
+ }>>;
2393
+ pin: z.ZodOptional<z.ZodEnum<{
2394
+ top: "top";
2395
+ bottom: "bottom";
2396
+ }>>;
2397
+ }, z.core.$strict>>;
2398
+ m: z.ZodOptional<z.ZodObject<{
2399
+ x: z.ZodInt;
2400
+ y: z.ZodInt;
2401
+ w: z.ZodInt;
2402
+ h: z.ZodInt;
2403
+ z: z.ZodOptional<z.ZodInt>;
2404
+ bleed: z.ZodOptional<z.ZodEnum<{
2405
+ left: "left";
2406
+ right: "right";
2407
+ both: "both";
2408
+ }>>;
2409
+ pin: z.ZodOptional<z.ZodEnum<{
2410
+ top: "top";
2411
+ bottom: "bottom";
2412
+ }>>;
2413
+ }, z.core.$strict>>;
2414
+ }, z.core.$strict>>;
2415
+ width: z.ZodOptional<z.ZodEnum<{
2416
+ full: "full";
2417
+ narrow: "narrow";
2418
+ content: "content";
2419
+ wide: "wide";
2420
+ }>>;
2421
+ }, z.core.$strict>], "mode">;
2422
+ style: z.ZodObject<{
2423
+ colorTheme: z.ZodOptional<z.ZodEnum<{
2424
+ light: "light";
2425
+ "light-accent": "light-accent";
2426
+ dark: "dark";
2427
+ "dark-accent": "dark-accent";
2428
+ brand: "brand";
2429
+ }>>;
2430
+ padding: z.ZodOptional<z.ZodObject<{
2431
+ d: z.ZodEnum<{
2432
+ none: "none";
2433
+ "3xs": "3xs";
2434
+ "2xs": "2xs";
2435
+ xs: "xs";
2436
+ sm: "sm";
2437
+ md: "md";
2438
+ lg: "lg";
2439
+ xl: "xl";
2440
+ "2xl": "2xl";
2441
+ "3xl": "3xl";
2442
+ }>;
2443
+ t: z.ZodOptional<z.ZodEnum<{
2444
+ none: "none";
2445
+ "3xs": "3xs";
2446
+ "2xs": "2xs";
2447
+ xs: "xs";
2448
+ sm: "sm";
2449
+ md: "md";
2450
+ lg: "lg";
2451
+ xl: "xl";
2452
+ "2xl": "2xl";
2453
+ "3xl": "3xl";
2454
+ }>>;
2455
+ m: z.ZodOptional<z.ZodEnum<{
2456
+ none: "none";
2457
+ "3xs": "3xs";
2458
+ "2xs": "2xs";
2459
+ xs: "xs";
2460
+ sm: "sm";
2461
+ md: "md";
2462
+ lg: "lg";
2463
+ xl: "xl";
2464
+ "2xl": "2xl";
2465
+ "3xl": "3xl";
2466
+ }>>;
2467
+ }, z.core.$strict>>;
2468
+ minHeight: z.ZodOptional<z.ZodObject<{
2469
+ d: z.ZodString;
2470
+ t: z.ZodOptional<z.ZodString>;
2471
+ m: z.ZodOptional<z.ZodString>;
2472
+ }, z.core.$strict>>;
2473
+ background: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2474
+ type: z.ZodLiteral<"none">;
2475
+ }, z.core.$strict>, z.ZodObject<{
2476
+ type: z.ZodLiteral<"color">;
2477
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2478
+ }, z.core.$strict>, z.ZodObject<{
2479
+ type: z.ZodLiteral<"image">;
2480
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
2481
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
2482
+ overlay: z.ZodOptional<z.ZodObject<{
2483
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2484
+ opacity: z.ZodNumber;
2485
+ }, z.core.$strict>>;
2486
+ parallax: z.ZodOptional<z.ZodBoolean>;
2487
+ }, z.core.$strict>, z.ZodObject<{
2488
+ type: z.ZodLiteral<"gradient">;
2489
+ from: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2490
+ to: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2491
+ via: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
2492
+ angle: z.ZodOptional<z.ZodNumber>;
2493
+ }, z.core.$strict>, z.ZodObject<{
2494
+ type: z.ZodLiteral<"video">;
2495
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
2496
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
2497
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
2498
+ overlay: z.ZodOptional<z.ZodObject<{
2499
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2500
+ opacity: z.ZodNumber;
2501
+ }, z.core.$strict>>;
2502
+ }, z.core.$strict>], "type">>;
2503
+ animation: z.ZodOptional<z.ZodObject<{
2504
+ entrance: z.ZodEnum<{
2505
+ none: "none";
2506
+ fade: "fade";
2507
+ rise: "rise";
2508
+ slide: "slide";
2509
+ zoom: "zoom";
2510
+ clip: "clip";
2511
+ }>;
2512
+ stagger: z.ZodOptional<z.ZodBoolean>;
2513
+ }, z.core.$strict>>;
2514
+ }, z.core.$strict>;
2515
+ locked: z.ZodOptional<z.ZodBoolean>;
2516
+ hidden: z.ZodOptional<z.ZodBoolean>;
2517
+ blocks: z.ZodArray<z.ZodObject<{
2518
+ id: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
2519
+ type: z.ZodString;
2520
+ v: z.ZodInt;
2521
+ column: z.ZodOptional<z.ZodInt>;
2522
+ label: z.ZodOptional<z.ZodString>;
2523
+ hidden: z.ZodOptional<z.ZodBoolean>;
2524
+ fields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2525
+ variant: z.ZodOptional<z.ZodString>;
2526
+ style: z.ZodOptional<z.ZodObject<{
2527
+ colorTheme: z.ZodOptional<z.ZodEnum<{
2528
+ light: "light";
2529
+ "light-accent": "light-accent";
2530
+ dark: "dark";
2531
+ "dark-accent": "dark-accent";
2532
+ brand: "brand";
2533
+ }>>;
2534
+ padding: z.ZodOptional<z.ZodObject<{
2535
+ d: z.ZodEnum<{
2536
+ none: "none";
2537
+ "3xs": "3xs";
2538
+ "2xs": "2xs";
2539
+ xs: "xs";
2540
+ sm: "sm";
2541
+ md: "md";
2542
+ lg: "lg";
2543
+ xl: "xl";
2544
+ "2xl": "2xl";
2545
+ "3xl": "3xl";
2546
+ }>;
2547
+ t: z.ZodOptional<z.ZodEnum<{
2548
+ none: "none";
2549
+ "3xs": "3xs";
2550
+ "2xs": "2xs";
2551
+ xs: "xs";
2552
+ sm: "sm";
2553
+ md: "md";
2554
+ lg: "lg";
2555
+ xl: "xl";
2556
+ "2xl": "2xl";
2557
+ "3xl": "3xl";
2558
+ }>>;
2559
+ m: z.ZodOptional<z.ZodEnum<{
2560
+ none: "none";
2561
+ "3xs": "3xs";
2562
+ "2xs": "2xs";
2563
+ xs: "xs";
2564
+ sm: "sm";
2565
+ md: "md";
2566
+ lg: "lg";
2567
+ xl: "xl";
2568
+ "2xl": "2xl";
2569
+ "3xl": "3xl";
2570
+ }>>;
2571
+ }, z.core.$strict>>;
2572
+ radius: z.ZodOptional<z.ZodEnum<{
2573
+ none: "none";
2574
+ sm: "sm";
2575
+ md: "md";
2576
+ lg: "lg";
2577
+ xl: "xl";
2578
+ full: "full";
2579
+ }>>;
2580
+ border: z.ZodOptional<z.ZodEnum<{
2581
+ none: "none";
2582
+ subtle: "subtle";
2583
+ strong: "strong";
2584
+ }>>;
2585
+ shadow: z.ZodOptional<z.ZodEnum<{
2586
+ none: "none";
2587
+ sm: "sm";
2588
+ md: "md";
2589
+ lg: "lg";
2590
+ }>>;
2591
+ align: z.ZodOptional<z.ZodObject<{
2592
+ d: z.ZodEnum<{
2593
+ start: "start";
2594
+ center: "center";
2595
+ end: "end";
2596
+ }>;
2597
+ t: z.ZodOptional<z.ZodEnum<{
2598
+ start: "start";
2599
+ center: "center";
2600
+ end: "end";
2601
+ }>>;
2602
+ m: z.ZodOptional<z.ZodEnum<{
2603
+ start: "start";
2604
+ center: "center";
2605
+ end: "end";
2606
+ }>>;
2607
+ }, z.core.$strict>>;
2608
+ imageTreatment: z.ZodOptional<z.ZodEnum<{
2609
+ none: "none";
2610
+ rounded: "rounded";
2611
+ arch: "arch";
2612
+ circle: "circle";
2613
+ blob: "blob";
2614
+ duotone: "duotone";
2615
+ grain: "grain";
2616
+ frame: "frame";
2617
+ }>>;
2618
+ animation: z.ZodOptional<z.ZodObject<{
2619
+ entrance: z.ZodEnum<{
2620
+ none: "none";
2621
+ fade: "fade";
2622
+ rise: "rise";
2623
+ slide: "slide";
2624
+ zoom: "zoom";
2625
+ clip: "clip";
2626
+ }>;
2627
+ stagger: z.ZodOptional<z.ZodBoolean>;
2628
+ }, z.core.$strict>>;
2629
+ typography: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
2630
+ small: "small";
2631
+ display: "display";
2632
+ h1: "h1";
2633
+ h2: "h2";
2634
+ h3: "h3";
2635
+ h4: "h4";
2636
+ lead: "lead";
2637
+ body: "body";
2638
+ eyebrow: "eyebrow";
2639
+ }>>>;
2640
+ }, z.core.$strict>>;
2641
+ }, z.core.$strict>>;
2642
+ }, z.core.$strict>;
2643
+ }, z.core.$strict>, z.ZodObject<{
2644
+ id: z.ZodString;
2645
+ actor: z.ZodString;
2646
+ ts: z.ZodNumber;
2647
+ op: z.ZodLiteral<"section.move">;
2648
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
2649
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
2650
+ at: z.ZodUnion<readonly [z.ZodInt, z.ZodLiteral<"start">, z.ZodLiteral<"end">, z.ZodObject<{
2651
+ before: z.ZodString;
2652
+ }, z.core.$strict>, z.ZodObject<{
2653
+ after: z.ZodString;
2654
+ }, z.core.$strict>]>;
2655
+ }, z.core.$strict>, z.ZodObject<{
2656
+ id: z.ZodString;
2657
+ actor: z.ZodString;
2658
+ ts: z.ZodNumber;
2659
+ op: z.ZodLiteral<"section.delete">;
2660
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
2661
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
2662
+ }, z.core.$strict>, z.ZodObject<{
2663
+ id: z.ZodString;
2664
+ actor: z.ZodString;
2665
+ ts: z.ZodNumber;
2666
+ op: z.ZodLiteral<"section.update">;
2667
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2668
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
2669
+ page: z.ZodUnion<readonly [z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>, z.ZodLiteral<"footer">]>;
2670
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
2671
+ }, z.core.$strict>, z.ZodObject<{
2672
+ id: z.ZodString;
2673
+ actor: z.ZodString;
2674
+ ts: z.ZodNumber;
2675
+ op: z.ZodLiteral<"styles.patch">;
2676
+ patch: z.ZodObject<{
2677
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2678
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
2679
+ }, z.core.$strict>;
2680
+ }, z.core.$strict>, z.ZodObject<{
2681
+ id: z.ZodString;
2682
+ actor: z.ZodString;
2683
+ ts: z.ZodNumber;
2684
+ op: z.ZodLiteral<"page.create">;
2685
+ page: z.ZodObject<{
2686
+ $schema: z.ZodOptional<z.ZodString>;
2687
+ id: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
2688
+ title: z.ZodString;
2689
+ slug: z.ZodString;
2690
+ seo: z.ZodOptional<z.ZodObject<{
2691
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2692
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2693
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
2694
+ noindex: z.ZodOptional<z.ZodBoolean>;
2695
+ canonical: z.ZodOptional<z.ZodURL>;
2696
+ }, z.core.$strict>>;
2697
+ header: z.ZodOptional<z.ZodObject<{
2698
+ variant: z.ZodOptional<z.ZodEnum<{
2699
+ "classic-left": "classic-left";
2700
+ "classic-center": "classic-center";
2701
+ "split-nav": "split-nav";
2702
+ "logo-center-nav-below": "logo-center-nav-below";
2703
+ "minimal-burger": "minimal-burger";
2704
+ stacked: "stacked";
2705
+ "sidebar-drawer": "sidebar-drawer";
2706
+ "transparent-overlay": "transparent-overlay";
2707
+ }>>;
2708
+ transparentOnHero: z.ZodOptional<z.ZodBoolean>;
2709
+ hidden: z.ZodOptional<z.ZodBoolean>;
2710
+ }, z.core.$strict>>;
2711
+ hidden: z.ZodOptional<z.ZodBoolean>;
2712
+ access: z.ZodOptional<z.ZodObject<{
2713
+ password: z.ZodOptional<z.ZodBoolean>;
2714
+ members: z.ZodOptional<z.ZodBoolean>;
2715
+ tiers: z.ZodOptional<z.ZodArray<z.ZodString>>;
2716
+ }, z.core.$strict>>;
2717
+ contentRef: z.ZodOptional<z.ZodString>;
2718
+ sections: z.ZodArray<z.ZodObject<{
2719
+ id: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
2720
+ preset: z.ZodOptional<z.ZodString>;
2721
+ label: z.ZodOptional<z.ZodString>;
2722
+ anchor: z.ZodOptional<z.ZodString>;
2723
+ layout: z.ZodDiscriminatedUnion<[z.ZodObject<{
2724
+ mode: z.ZodLiteral<"stack">;
2725
+ columns: z.ZodObject<{
2726
+ d: z.ZodArray<z.ZodInt>;
2727
+ t: z.ZodOptional<z.ZodArray<z.ZodInt>>;
2728
+ m: z.ZodOptional<z.ZodArray<z.ZodInt>>;
2729
+ }, z.core.$strict>;
2730
+ order: z.ZodOptional<z.ZodObject<{
2731
+ t: z.ZodOptional<z.ZodArray<z.ZodInt>>;
2732
+ m: z.ZodOptional<z.ZodArray<z.ZodInt>>;
2733
+ }, z.core.$strict>>;
2734
+ align: z.ZodOptional<z.ZodEnum<{
2735
+ start: "start";
2736
+ center: "center";
2737
+ end: "end";
2738
+ stretch: "stretch";
2739
+ }>>;
2740
+ gap: z.ZodOptional<z.ZodEnum<{
2741
+ none: "none";
2742
+ "3xs": "3xs";
2743
+ "2xs": "2xs";
2744
+ xs: "xs";
2745
+ sm: "sm";
2746
+ md: "md";
2747
+ lg: "lg";
2748
+ xl: "xl";
2749
+ "2xl": "2xl";
2750
+ "3xl": "3xl";
2751
+ }>>;
2752
+ width: z.ZodOptional<z.ZodEnum<{
2753
+ full: "full";
2754
+ narrow: "narrow";
2755
+ content: "content";
2756
+ wide: "wide";
2757
+ }>>;
2758
+ }, z.core.$strict>, z.ZodObject<{
2759
+ mode: z.ZodLiteral<"grid">;
2760
+ rows: z.ZodObject<{
2761
+ d: z.ZodInt;
2762
+ t: z.ZodOptional<z.ZodInt>;
2763
+ m: z.ZodOptional<z.ZodInt>;
2764
+ }, z.core.$strict>;
2765
+ items: z.ZodRecord<z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>, z.ZodObject<{
2766
+ d: z.ZodObject<{
2767
+ x: z.ZodInt;
2768
+ y: z.ZodInt;
2769
+ w: z.ZodInt;
2770
+ h: z.ZodInt;
2771
+ z: z.ZodOptional<z.ZodInt>;
2772
+ bleed: z.ZodOptional<z.ZodEnum<{
2773
+ left: "left";
2774
+ right: "right";
2775
+ both: "both";
2776
+ }>>;
2777
+ pin: z.ZodOptional<z.ZodEnum<{
2778
+ top: "top";
2779
+ bottom: "bottom";
2780
+ }>>;
2781
+ }, z.core.$strict>;
2782
+ t: z.ZodOptional<z.ZodObject<{
2783
+ x: z.ZodInt;
2784
+ y: z.ZodInt;
2785
+ w: z.ZodInt;
2786
+ h: z.ZodInt;
2787
+ z: z.ZodOptional<z.ZodInt>;
2788
+ bleed: z.ZodOptional<z.ZodEnum<{
2789
+ left: "left";
2790
+ right: "right";
2791
+ both: "both";
2792
+ }>>;
2793
+ pin: z.ZodOptional<z.ZodEnum<{
2794
+ top: "top";
2795
+ bottom: "bottom";
2796
+ }>>;
2797
+ }, z.core.$strict>>;
2798
+ m: z.ZodOptional<z.ZodObject<{
2799
+ x: z.ZodInt;
2800
+ y: z.ZodInt;
2801
+ w: z.ZodInt;
2802
+ h: z.ZodInt;
2803
+ z: z.ZodOptional<z.ZodInt>;
2804
+ bleed: z.ZodOptional<z.ZodEnum<{
2805
+ left: "left";
2806
+ right: "right";
2807
+ both: "both";
2808
+ }>>;
2809
+ pin: z.ZodOptional<z.ZodEnum<{
2810
+ top: "top";
2811
+ bottom: "bottom";
2812
+ }>>;
2813
+ }, z.core.$strict>>;
2814
+ }, z.core.$strict>>;
2815
+ width: z.ZodOptional<z.ZodEnum<{
2816
+ full: "full";
2817
+ narrow: "narrow";
2818
+ content: "content";
2819
+ wide: "wide";
2820
+ }>>;
2821
+ }, z.core.$strict>], "mode">;
2822
+ style: z.ZodObject<{
2823
+ colorTheme: z.ZodOptional<z.ZodEnum<{
2824
+ light: "light";
2825
+ "light-accent": "light-accent";
2826
+ dark: "dark";
2827
+ "dark-accent": "dark-accent";
2828
+ brand: "brand";
2829
+ }>>;
2830
+ padding: z.ZodOptional<z.ZodObject<{
2831
+ d: z.ZodEnum<{
2832
+ none: "none";
2833
+ "3xs": "3xs";
2834
+ "2xs": "2xs";
2835
+ xs: "xs";
2836
+ sm: "sm";
2837
+ md: "md";
2838
+ lg: "lg";
2839
+ xl: "xl";
2840
+ "2xl": "2xl";
2841
+ "3xl": "3xl";
2842
+ }>;
2843
+ t: z.ZodOptional<z.ZodEnum<{
2844
+ none: "none";
2845
+ "3xs": "3xs";
2846
+ "2xs": "2xs";
2847
+ xs: "xs";
2848
+ sm: "sm";
2849
+ md: "md";
2850
+ lg: "lg";
2851
+ xl: "xl";
2852
+ "2xl": "2xl";
2853
+ "3xl": "3xl";
2854
+ }>>;
2855
+ m: z.ZodOptional<z.ZodEnum<{
2856
+ none: "none";
2857
+ "3xs": "3xs";
2858
+ "2xs": "2xs";
2859
+ xs: "xs";
2860
+ sm: "sm";
2861
+ md: "md";
2862
+ lg: "lg";
2863
+ xl: "xl";
2864
+ "2xl": "2xl";
2865
+ "3xl": "3xl";
2866
+ }>>;
2867
+ }, z.core.$strict>>;
2868
+ minHeight: z.ZodOptional<z.ZodObject<{
2869
+ d: z.ZodString;
2870
+ t: z.ZodOptional<z.ZodString>;
2871
+ m: z.ZodOptional<z.ZodString>;
2872
+ }, z.core.$strict>>;
2873
+ background: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2874
+ type: z.ZodLiteral<"none">;
2875
+ }, z.core.$strict>, z.ZodObject<{
2876
+ type: z.ZodLiteral<"color">;
2877
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2878
+ }, z.core.$strict>, z.ZodObject<{
2879
+ type: z.ZodLiteral<"image">;
2880
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
2881
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
2882
+ overlay: z.ZodOptional<z.ZodObject<{
2883
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2884
+ opacity: z.ZodNumber;
2885
+ }, z.core.$strict>>;
2886
+ parallax: z.ZodOptional<z.ZodBoolean>;
2887
+ }, z.core.$strict>, z.ZodObject<{
2888
+ type: z.ZodLiteral<"gradient">;
2889
+ from: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2890
+ to: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2891
+ via: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
2892
+ angle: z.ZodOptional<z.ZodNumber>;
2893
+ }, z.core.$strict>, z.ZodObject<{
2894
+ type: z.ZodLiteral<"video">;
2895
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
2896
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
2897
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
2898
+ overlay: z.ZodOptional<z.ZodObject<{
2899
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2900
+ opacity: z.ZodNumber;
2901
+ }, z.core.$strict>>;
2902
+ }, z.core.$strict>], "type">>;
2903
+ animation: z.ZodOptional<z.ZodObject<{
2904
+ entrance: z.ZodEnum<{
2905
+ none: "none";
2906
+ fade: "fade";
2907
+ rise: "rise";
2908
+ slide: "slide";
2909
+ zoom: "zoom";
2910
+ clip: "clip";
2911
+ }>;
2912
+ stagger: z.ZodOptional<z.ZodBoolean>;
2913
+ }, z.core.$strict>>;
2914
+ }, z.core.$strict>;
2915
+ locked: z.ZodOptional<z.ZodBoolean>;
2916
+ hidden: z.ZodOptional<z.ZodBoolean>;
2917
+ blocks: z.ZodArray<z.ZodObject<{
2918
+ id: z.ZodType<`blk_${string}`, `blk_${string}`, z.core.$ZodTypeInternals<`blk_${string}`, `blk_${string}`>>;
2919
+ type: z.ZodString;
2920
+ v: z.ZodInt;
2921
+ column: z.ZodOptional<z.ZodInt>;
2922
+ label: z.ZodOptional<z.ZodString>;
2923
+ hidden: z.ZodOptional<z.ZodBoolean>;
2924
+ fields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2925
+ variant: z.ZodOptional<z.ZodString>;
2926
+ style: z.ZodOptional<z.ZodObject<{
2927
+ colorTheme: z.ZodOptional<z.ZodEnum<{
2928
+ light: "light";
2929
+ "light-accent": "light-accent";
2930
+ dark: "dark";
2931
+ "dark-accent": "dark-accent";
2932
+ brand: "brand";
2933
+ }>>;
2934
+ padding: z.ZodOptional<z.ZodObject<{
2935
+ d: z.ZodEnum<{
2936
+ none: "none";
2937
+ "3xs": "3xs";
2938
+ "2xs": "2xs";
2939
+ xs: "xs";
2940
+ sm: "sm";
2941
+ md: "md";
2942
+ lg: "lg";
2943
+ xl: "xl";
2944
+ "2xl": "2xl";
2945
+ "3xl": "3xl";
2946
+ }>;
2947
+ t: z.ZodOptional<z.ZodEnum<{
2948
+ none: "none";
2949
+ "3xs": "3xs";
2950
+ "2xs": "2xs";
2951
+ xs: "xs";
2952
+ sm: "sm";
2953
+ md: "md";
2954
+ lg: "lg";
2955
+ xl: "xl";
2956
+ "2xl": "2xl";
2957
+ "3xl": "3xl";
2958
+ }>>;
2959
+ m: z.ZodOptional<z.ZodEnum<{
2960
+ none: "none";
2961
+ "3xs": "3xs";
2962
+ "2xs": "2xs";
2963
+ xs: "xs";
2964
+ sm: "sm";
2965
+ md: "md";
2966
+ lg: "lg";
2967
+ xl: "xl";
2968
+ "2xl": "2xl";
2969
+ "3xl": "3xl";
2970
+ }>>;
2971
+ }, z.core.$strict>>;
2972
+ radius: z.ZodOptional<z.ZodEnum<{
2973
+ none: "none";
2974
+ sm: "sm";
2975
+ md: "md";
2976
+ lg: "lg";
2977
+ xl: "xl";
2978
+ full: "full";
2979
+ }>>;
2980
+ border: z.ZodOptional<z.ZodEnum<{
2981
+ none: "none";
2982
+ subtle: "subtle";
2983
+ strong: "strong";
2984
+ }>>;
2985
+ shadow: z.ZodOptional<z.ZodEnum<{
2986
+ none: "none";
2987
+ sm: "sm";
2988
+ md: "md";
2989
+ lg: "lg";
2990
+ }>>;
2991
+ align: z.ZodOptional<z.ZodObject<{
2992
+ d: z.ZodEnum<{
2993
+ start: "start";
2994
+ center: "center";
2995
+ end: "end";
2996
+ }>;
2997
+ t: z.ZodOptional<z.ZodEnum<{
2998
+ start: "start";
2999
+ center: "center";
3000
+ end: "end";
3001
+ }>>;
3002
+ m: z.ZodOptional<z.ZodEnum<{
3003
+ start: "start";
3004
+ center: "center";
3005
+ end: "end";
3006
+ }>>;
3007
+ }, z.core.$strict>>;
3008
+ imageTreatment: z.ZodOptional<z.ZodEnum<{
3009
+ none: "none";
3010
+ rounded: "rounded";
3011
+ arch: "arch";
3012
+ circle: "circle";
3013
+ blob: "blob";
3014
+ duotone: "duotone";
3015
+ grain: "grain";
3016
+ frame: "frame";
3017
+ }>>;
3018
+ animation: z.ZodOptional<z.ZodObject<{
3019
+ entrance: z.ZodEnum<{
3020
+ none: "none";
3021
+ fade: "fade";
3022
+ rise: "rise";
3023
+ slide: "slide";
3024
+ zoom: "zoom";
3025
+ clip: "clip";
3026
+ }>;
3027
+ stagger: z.ZodOptional<z.ZodBoolean>;
3028
+ }, z.core.$strict>>;
3029
+ typography: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
3030
+ small: "small";
3031
+ display: "display";
3032
+ h1: "h1";
3033
+ h2: "h2";
3034
+ h3: "h3";
3035
+ h4: "h4";
3036
+ lead: "lead";
3037
+ body: "body";
3038
+ eyebrow: "eyebrow";
3039
+ }>>>;
3040
+ }, z.core.$strict>>;
3041
+ }, z.core.$strict>>;
3042
+ }, z.core.$strict>>;
3043
+ headInjection: z.ZodOptional<z.ZodString>;
3044
+ footerInjection: z.ZodOptional<z.ZodString>;
3045
+ }, z.core.$strict>;
3046
+ nav: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
3047
+ type: z.ZodLiteral<"page">;
3048
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3049
+ label: z.ZodOptional<z.ZodString>;
3050
+ hidden: z.ZodOptional<z.ZodBoolean>;
3051
+ }, z.core.$strict>, z.ZodObject<{
3052
+ type: z.ZodLiteral<"collection">;
3053
+ collection: z.ZodString;
3054
+ label: z.ZodString;
3055
+ hidden: z.ZodOptional<z.ZodBoolean>;
3056
+ }, z.core.$strict>, z.ZodObject<{
3057
+ type: z.ZodLiteral<"link">;
3058
+ label: z.ZodString;
3059
+ href: z.ZodURL;
3060
+ newTab: z.ZodOptional<z.ZodBoolean>;
3061
+ hidden: z.ZodOptional<z.ZodBoolean>;
3062
+ }, z.core.$strict>, z.ZodObject<{
3063
+ type: z.ZodLiteral<"button">;
3064
+ label: z.ZodString;
3065
+ link: z.ZodDiscriminatedUnion<[z.ZodObject<{
3066
+ type: z.ZodLiteral<"page">;
3067
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3068
+ anchor: z.ZodOptional<z.ZodString>;
3069
+ }, z.core.$strict>, z.ZodObject<{
3070
+ type: z.ZodLiteral<"item">;
3071
+ collection: z.ZodString;
3072
+ slug: z.ZodString;
3073
+ }, z.core.$strict>, z.ZodObject<{
3074
+ type: z.ZodLiteral<"url">;
3075
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
3076
+ newTab: z.ZodOptional<z.ZodBoolean>;
3077
+ }, z.core.$strict>, z.ZodObject<{
3078
+ type: z.ZodLiteral<"email">;
3079
+ email: z.ZodEmail;
3080
+ subject: z.ZodOptional<z.ZodString>;
3081
+ }, z.core.$strict>, z.ZodObject<{
3082
+ type: z.ZodLiteral<"phone">;
3083
+ phone: z.ZodString;
3084
+ }, z.core.$strict>, z.ZodObject<{
3085
+ type: z.ZodLiteral<"file">;
3086
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
3087
+ newTab: z.ZodOptional<z.ZodBoolean>;
3088
+ }, z.core.$strict>, z.ZodObject<{
3089
+ type: z.ZodLiteral<"anchor">;
3090
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
3091
+ }, z.core.$strict>], "type">;
3092
+ style: z.ZodEnum<{
3093
+ primary: "primary";
3094
+ secondary: "secondary";
3095
+ tertiary: "tertiary";
3096
+ }>;
3097
+ hidden: z.ZodOptional<z.ZodBoolean>;
3098
+ }, z.core.$strict>, z.ZodObject<{
3099
+ type: z.ZodLiteral<"folder">;
3100
+ label: z.ZodString;
3101
+ page: z.ZodOptional<z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>>;
3102
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
3103
+ type: z.ZodLiteral<"page">;
3104
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3105
+ label: z.ZodOptional<z.ZodString>;
3106
+ hidden: z.ZodOptional<z.ZodBoolean>;
3107
+ }, z.core.$strict>, z.ZodObject<{
3108
+ type: z.ZodLiteral<"collection">;
3109
+ collection: z.ZodString;
3110
+ label: z.ZodString;
3111
+ hidden: z.ZodOptional<z.ZodBoolean>;
3112
+ }, z.core.$strict>, z.ZodObject<{
3113
+ type: z.ZodLiteral<"link">;
3114
+ label: z.ZodString;
3115
+ href: z.ZodURL;
3116
+ newTab: z.ZodOptional<z.ZodBoolean>;
3117
+ hidden: z.ZodOptional<z.ZodBoolean>;
3118
+ }, z.core.$strict>], "type">>;
3119
+ hidden: z.ZodOptional<z.ZodBoolean>;
3120
+ }, z.core.$strict>], "type">>>;
3121
+ }, z.core.$strict>, z.ZodObject<{
3122
+ id: z.ZodString;
3123
+ actor: z.ZodString;
3124
+ ts: z.ZodNumber;
3125
+ op: z.ZodLiteral<"page.update">;
3126
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3127
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
3128
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3129
+ }, z.core.$strict>, z.ZodObject<{
3130
+ id: z.ZodString;
3131
+ actor: z.ZodString;
3132
+ ts: z.ZodNumber;
3133
+ op: z.ZodLiteral<"page.delete">;
3134
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3135
+ nav: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
3136
+ type: z.ZodLiteral<"page">;
3137
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3138
+ label: z.ZodOptional<z.ZodString>;
3139
+ hidden: z.ZodOptional<z.ZodBoolean>;
3140
+ }, z.core.$strict>, z.ZodObject<{
3141
+ type: z.ZodLiteral<"collection">;
3142
+ collection: z.ZodString;
3143
+ label: z.ZodString;
3144
+ hidden: z.ZodOptional<z.ZodBoolean>;
3145
+ }, z.core.$strict>, z.ZodObject<{
3146
+ type: z.ZodLiteral<"link">;
3147
+ label: z.ZodString;
3148
+ href: z.ZodURL;
3149
+ newTab: z.ZodOptional<z.ZodBoolean>;
3150
+ hidden: z.ZodOptional<z.ZodBoolean>;
3151
+ }, z.core.$strict>, z.ZodObject<{
3152
+ type: z.ZodLiteral<"button">;
3153
+ label: z.ZodString;
3154
+ link: z.ZodDiscriminatedUnion<[z.ZodObject<{
3155
+ type: z.ZodLiteral<"page">;
3156
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3157
+ anchor: z.ZodOptional<z.ZodString>;
3158
+ }, z.core.$strict>, z.ZodObject<{
3159
+ type: z.ZodLiteral<"item">;
3160
+ collection: z.ZodString;
3161
+ slug: z.ZodString;
3162
+ }, z.core.$strict>, z.ZodObject<{
3163
+ type: z.ZodLiteral<"url">;
3164
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
3165
+ newTab: z.ZodOptional<z.ZodBoolean>;
3166
+ }, z.core.$strict>, z.ZodObject<{
3167
+ type: z.ZodLiteral<"email">;
3168
+ email: z.ZodEmail;
3169
+ subject: z.ZodOptional<z.ZodString>;
3170
+ }, z.core.$strict>, z.ZodObject<{
3171
+ type: z.ZodLiteral<"phone">;
3172
+ phone: z.ZodString;
3173
+ }, z.core.$strict>, z.ZodObject<{
3174
+ type: z.ZodLiteral<"file">;
3175
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
3176
+ newTab: z.ZodOptional<z.ZodBoolean>;
3177
+ }, z.core.$strict>, z.ZodObject<{
3178
+ type: z.ZodLiteral<"anchor">;
3179
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
3180
+ }, z.core.$strict>], "type">;
3181
+ style: z.ZodEnum<{
3182
+ primary: "primary";
3183
+ secondary: "secondary";
3184
+ tertiary: "tertiary";
3185
+ }>;
3186
+ hidden: z.ZodOptional<z.ZodBoolean>;
3187
+ }, z.core.$strict>, z.ZodObject<{
3188
+ type: z.ZodLiteral<"folder">;
3189
+ label: z.ZodString;
3190
+ page: z.ZodOptional<z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>>;
3191
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
3192
+ type: z.ZodLiteral<"page">;
3193
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3194
+ label: z.ZodOptional<z.ZodString>;
3195
+ hidden: z.ZodOptional<z.ZodBoolean>;
3196
+ }, z.core.$strict>, z.ZodObject<{
3197
+ type: z.ZodLiteral<"collection">;
3198
+ collection: z.ZodString;
3199
+ label: z.ZodString;
3200
+ hidden: z.ZodOptional<z.ZodBoolean>;
3201
+ }, z.core.$strict>, z.ZodObject<{
3202
+ type: z.ZodLiteral<"link">;
3203
+ label: z.ZodString;
3204
+ href: z.ZodURL;
3205
+ newTab: z.ZodOptional<z.ZodBoolean>;
3206
+ hidden: z.ZodOptional<z.ZodBoolean>;
3207
+ }, z.core.$strict>], "type">>;
3208
+ hidden: z.ZodOptional<z.ZodBoolean>;
3209
+ }, z.core.$strict>], "type">>>;
3210
+ }, z.core.$strict>, z.ZodObject<{
3211
+ id: z.ZodString;
3212
+ actor: z.ZodString;
3213
+ ts: z.ZodNumber;
3214
+ op: z.ZodLiteral<"nav.update">;
3215
+ tree: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
3216
+ type: z.ZodLiteral<"page">;
3217
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3218
+ label: z.ZodOptional<z.ZodString>;
3219
+ hidden: z.ZodOptional<z.ZodBoolean>;
3220
+ }, z.core.$strict>, z.ZodObject<{
3221
+ type: z.ZodLiteral<"collection">;
3222
+ collection: z.ZodString;
3223
+ label: z.ZodString;
3224
+ hidden: z.ZodOptional<z.ZodBoolean>;
3225
+ }, z.core.$strict>, z.ZodObject<{
3226
+ type: z.ZodLiteral<"link">;
3227
+ label: z.ZodString;
3228
+ href: z.ZodURL;
3229
+ newTab: z.ZodOptional<z.ZodBoolean>;
3230
+ hidden: z.ZodOptional<z.ZodBoolean>;
3231
+ }, z.core.$strict>, z.ZodObject<{
3232
+ type: z.ZodLiteral<"button">;
3233
+ label: z.ZodString;
3234
+ link: z.ZodDiscriminatedUnion<[z.ZodObject<{
3235
+ type: z.ZodLiteral<"page">;
3236
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3237
+ anchor: z.ZodOptional<z.ZodString>;
3238
+ }, z.core.$strict>, z.ZodObject<{
3239
+ type: z.ZodLiteral<"item">;
3240
+ collection: z.ZodString;
3241
+ slug: z.ZodString;
3242
+ }, z.core.$strict>, z.ZodObject<{
3243
+ type: z.ZodLiteral<"url">;
3244
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
3245
+ newTab: z.ZodOptional<z.ZodBoolean>;
3246
+ }, z.core.$strict>, z.ZodObject<{
3247
+ type: z.ZodLiteral<"email">;
3248
+ email: z.ZodEmail;
3249
+ subject: z.ZodOptional<z.ZodString>;
3250
+ }, z.core.$strict>, z.ZodObject<{
3251
+ type: z.ZodLiteral<"phone">;
3252
+ phone: z.ZodString;
3253
+ }, z.core.$strict>, z.ZodObject<{
3254
+ type: z.ZodLiteral<"file">;
3255
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
3256
+ newTab: z.ZodOptional<z.ZodBoolean>;
3257
+ }, z.core.$strict>, z.ZodObject<{
3258
+ type: z.ZodLiteral<"anchor">;
3259
+ section: z.ZodType<`sec_${string}`, `sec_${string}`, z.core.$ZodTypeInternals<`sec_${string}`, `sec_${string}`>>;
3260
+ }, z.core.$strict>], "type">;
3261
+ style: z.ZodEnum<{
3262
+ primary: "primary";
3263
+ secondary: "secondary";
3264
+ tertiary: "tertiary";
3265
+ }>;
3266
+ hidden: z.ZodOptional<z.ZodBoolean>;
3267
+ }, z.core.$strict>, z.ZodObject<{
3268
+ type: z.ZodLiteral<"folder">;
3269
+ label: z.ZodString;
3270
+ page: z.ZodOptional<z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>>;
3271
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
3272
+ type: z.ZodLiteral<"page">;
3273
+ page: z.ZodType<`pg_${string}`, `pg_${string}`, z.core.$ZodTypeInternals<`pg_${string}`, `pg_${string}`>>;
3274
+ label: z.ZodOptional<z.ZodString>;
3275
+ hidden: z.ZodOptional<z.ZodBoolean>;
3276
+ }, z.core.$strict>, z.ZodObject<{
3277
+ type: z.ZodLiteral<"collection">;
3278
+ collection: z.ZodString;
3279
+ label: z.ZodString;
3280
+ hidden: z.ZodOptional<z.ZodBoolean>;
3281
+ }, z.core.$strict>, z.ZodObject<{
3282
+ type: z.ZodLiteral<"link">;
3283
+ label: z.ZodString;
3284
+ href: z.ZodURL;
3285
+ newTab: z.ZodOptional<z.ZodBoolean>;
3286
+ hidden: z.ZodOptional<z.ZodBoolean>;
3287
+ }, z.core.$strict>], "type">>;
3288
+ hidden: z.ZodOptional<z.ZodBoolean>;
3289
+ }, z.core.$strict>], "type">>;
3290
+ }, z.core.$strict>, z.ZodObject<{
3291
+ id: z.ZodString;
3292
+ actor: z.ZodString;
3293
+ ts: z.ZodNumber;
3294
+ op: z.ZodLiteral<"site.update">;
3295
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3296
+ unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
3297
+ }, z.core.$strict>, z.ZodObject<{
3298
+ id: z.ZodString;
3299
+ actor: z.ZodString;
3300
+ ts: z.ZodNumber;
3301
+ op: z.ZodLiteral<"media.add">;
3302
+ path: z.ZodString;
3303
+ meta: z.ZodObject<{
3304
+ id: z.ZodType<`med_${string}`, `med_${string}`, z.core.$ZodTypeInternals<`med_${string}`, `med_${string}`>>;
3305
+ path: z.ZodString;
3306
+ kind: z.ZodEnum<{
3307
+ file: "file";
3308
+ video: "video";
3309
+ audio: "audio";
3310
+ image: "image";
3311
+ }>;
3312
+ mime: z.ZodString;
3313
+ bytes: z.ZodInt;
3314
+ width: z.ZodOptional<z.ZodInt>;
3315
+ height: z.ZodOptional<z.ZodInt>;
3316
+ duration: z.ZodOptional<z.ZodNumber>;
3317
+ alt: z.ZodOptional<z.ZodString>;
3318
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
3319
+ placeholder: z.ZodOptional<z.ZodString>;
3320
+ credit: z.ZodOptional<z.ZodObject<{
3321
+ author: z.ZodOptional<z.ZodString>;
3322
+ url: z.ZodOptional<z.ZodURL>;
3323
+ source: z.ZodOptional<z.ZodString>;
3324
+ }, z.core.$strict>>;
3325
+ license: z.ZodOptional<z.ZodString>;
3326
+ originalName: z.ZodOptional<z.ZodString>;
3327
+ createdAt: z.ZodISODateTime;
3328
+ }, z.core.$strict>;
3329
+ }, z.core.$strict>, z.ZodObject<{
3330
+ id: z.ZodString;
3331
+ actor: z.ZodString;
3332
+ ts: z.ZodNumber;
3333
+ op: z.ZodLiteral<"media.remove">;
3334
+ path: z.ZodString;
3335
+ }, z.core.$strict>, z.ZodObject<{
3336
+ id: z.ZodString;
3337
+ actor: z.ZodString;
3338
+ ts: z.ZodNumber;
3339
+ op: z.ZodLiteral<"collection.upsert">;
3340
+ collection: z.ZodString;
3341
+ item: z.ZodDiscriminatedUnion<[z.ZodObject<{
3342
+ kind: z.ZodLiteral<"blog">;
3343
+ slug: z.ZodString;
3344
+ frontmatter: z.ZodObject<{
3345
+ date: z.ZodISODate;
3346
+ author: z.ZodOptional<z.ZodString>;
3347
+ title: z.ZodString;
3348
+ status: z.ZodEnum<{
3349
+ draft: "draft";
3350
+ scheduled: "scheduled";
3351
+ published: "published";
3352
+ }>;
3353
+ publishAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
3354
+ excerpt: z.ZodOptional<z.ZodString>;
3355
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
3356
+ imageAlt: z.ZodOptional<z.ZodString>;
3357
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
3358
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
3359
+ featured: z.ZodOptional<z.ZodBoolean>;
3360
+ seo: z.ZodOptional<z.ZodObject<{
3361
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3362
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3363
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
3364
+ noindex: z.ZodOptional<z.ZodBoolean>;
3365
+ canonical: z.ZodOptional<z.ZodURL>;
3366
+ }, z.core.$strict>>;
3367
+ }, z.core.$strict>;
3368
+ body: z.ZodString;
3369
+ }, z.core.$strict>, z.ZodObject<{
3370
+ kind: z.ZodLiteral<"events">;
3371
+ slug: z.ZodString;
3372
+ frontmatter: z.ZodObject<{
3373
+ start: z.ZodUnion<readonly [z.ZodISODateTime, z.ZodISODate]>;
3374
+ end: z.ZodOptional<z.ZodUnion<readonly [z.ZodISODateTime, z.ZodISODate]>>;
3375
+ allDay: z.ZodOptional<z.ZodBoolean>;
3376
+ timezone: z.ZodOptional<z.ZodString>;
3377
+ location: z.ZodOptional<z.ZodObject<{
3378
+ name: z.ZodOptional<z.ZodString>;
3379
+ address: z.ZodOptional<z.ZodString>;
3380
+ mapUrl: z.ZodOptional<z.ZodURL>;
3381
+ online: z.ZodOptional<z.ZodBoolean>;
3382
+ url: z.ZodOptional<z.ZodURL>;
3383
+ }, z.core.$strict>>;
3384
+ registrationUrl: z.ZodOptional<z.ZodURL>;
3385
+ price: z.ZodOptional<z.ZodString>;
3386
+ recurrence: z.ZodOptional<z.ZodString>;
3387
+ title: z.ZodString;
3388
+ status: z.ZodEnum<{
3389
+ draft: "draft";
3390
+ scheduled: "scheduled";
3391
+ published: "published";
3392
+ }>;
3393
+ publishAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
3394
+ excerpt: z.ZodOptional<z.ZodString>;
3395
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
3396
+ imageAlt: z.ZodOptional<z.ZodString>;
3397
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
3398
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
3399
+ featured: z.ZodOptional<z.ZodBoolean>;
3400
+ seo: z.ZodOptional<z.ZodObject<{
3401
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3402
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3403
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
3404
+ noindex: z.ZodOptional<z.ZodBoolean>;
3405
+ canonical: z.ZodOptional<z.ZodURL>;
3406
+ }, z.core.$strict>>;
3407
+ }, z.core.$strict>;
3408
+ body: z.ZodString;
3409
+ }, z.core.$strict>, z.ZodObject<{
3410
+ kind: z.ZodLiteral<"portfolio">;
3411
+ slug: z.ZodString;
3412
+ frontmatter: z.ZodObject<{
3413
+ date: z.ZodOptional<z.ZodISODate>;
3414
+ client: z.ZodOptional<z.ZodString>;
3415
+ role: z.ZodOptional<z.ZodString>;
3416
+ year: z.ZodOptional<z.ZodInt>;
3417
+ gallery: z.ZodOptional<z.ZodArray<z.ZodObject<{
3418
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
3419
+ alt: z.ZodString;
3420
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
3421
+ width: z.ZodOptional<z.ZodInt>;
3422
+ height: z.ZodOptional<z.ZodInt>;
3423
+ mediaId: z.ZodOptional<z.ZodType<`med_${string}`, `med_${string}`, z.core.$ZodTypeInternals<`med_${string}`, `med_${string}`>>>;
3424
+ }, z.core.$strict>>>;
3425
+ projectUrl: z.ZodOptional<z.ZodURL>;
3426
+ title: z.ZodString;
3427
+ status: z.ZodEnum<{
3428
+ draft: "draft";
3429
+ scheduled: "scheduled";
3430
+ published: "published";
3431
+ }>;
3432
+ publishAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
3433
+ excerpt: z.ZodOptional<z.ZodString>;
3434
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
3435
+ imageAlt: z.ZodOptional<z.ZodString>;
3436
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
3437
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
3438
+ featured: z.ZodOptional<z.ZodBoolean>;
3439
+ seo: z.ZodOptional<z.ZodObject<{
3440
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3441
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3442
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
3443
+ noindex: z.ZodOptional<z.ZodBoolean>;
3444
+ canonical: z.ZodOptional<z.ZodURL>;
3445
+ }, z.core.$strict>>;
3446
+ }, z.core.$strict>;
3447
+ body: z.ZodString;
3448
+ }, z.core.$strict>, z.ZodObject<{
3449
+ kind: z.ZodLiteral<"podcast">;
3450
+ slug: z.ZodString;
3451
+ frontmatter: z.ZodObject<{
3452
+ date: z.ZodISODate;
3453
+ audio: z.ZodObject<{
3454
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
3455
+ duration: z.ZodInt;
3456
+ bytes: z.ZodOptional<z.ZodInt>;
3457
+ mime: z.ZodEnum<{
3458
+ "audio/mpeg": "audio/mpeg";
3459
+ "audio/mp4": "audio/mp4";
3460
+ "audio/aac": "audio/aac";
3461
+ "audio/ogg": "audio/ogg";
3462
+ "audio/wav": "audio/wav";
3463
+ }>;
3464
+ }, z.core.$strict>;
3465
+ episode: z.ZodOptional<z.ZodInt>;
3466
+ season: z.ZodOptional<z.ZodInt>;
3467
+ episodeType: z.ZodOptional<z.ZodEnum<{
3468
+ full: "full";
3469
+ trailer: "trailer";
3470
+ bonus: "bonus";
3471
+ }>>;
3472
+ explicit: z.ZodOptional<z.ZodBoolean>;
3473
+ transcript: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
3474
+ title: z.ZodString;
3475
+ status: z.ZodEnum<{
3476
+ draft: "draft";
3477
+ scheduled: "scheduled";
3478
+ published: "published";
3479
+ }>;
3480
+ publishAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
3481
+ excerpt: z.ZodOptional<z.ZodString>;
3482
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
3483
+ imageAlt: z.ZodOptional<z.ZodString>;
3484
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
3485
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
3486
+ featured: z.ZodOptional<z.ZodBoolean>;
3487
+ seo: z.ZodOptional<z.ZodObject<{
3488
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3489
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3490
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
3491
+ noindex: z.ZodOptional<z.ZodBoolean>;
3492
+ canonical: z.ZodOptional<z.ZodURL>;
3493
+ }, z.core.$strict>>;
3494
+ }, z.core.$strict>;
3495
+ body: z.ZodString;
3496
+ }, z.core.$strict>, z.ZodObject<{
3497
+ kind: z.ZodLiteral<"products">;
3498
+ slug: z.ZodString;
3499
+ frontmatter: z.ZodObject<{
3500
+ price: z.ZodObject<{
3501
+ amount: z.ZodInt;
3502
+ currency: z.ZodString;
3503
+ }, z.core.$strict>;
3504
+ compareAtPrice: z.ZodOptional<z.ZodObject<{
3505
+ amount: z.ZodInt;
3506
+ currency: z.ZodString;
3507
+ }, z.core.$strict>>;
3508
+ sku: z.ZodOptional<z.ZodString>;
3509
+ images: z.ZodOptional<z.ZodArray<z.ZodObject<{
3510
+ src: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
3511
+ alt: z.ZodString;
3512
+ focal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
3513
+ width: z.ZodOptional<z.ZodInt>;
3514
+ height: z.ZodOptional<z.ZodInt>;
3515
+ mediaId: z.ZodOptional<z.ZodType<`med_${string}`, `med_${string}`, z.core.$ZodTypeInternals<`med_${string}`, `med_${string}`>>>;
3516
+ }, z.core.$strict>>>;
3517
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
3518
+ name: z.ZodString;
3519
+ values: z.ZodArray<z.ZodString>;
3520
+ }, z.core.$strict>>>;
3521
+ variants: z.ZodOptional<z.ZodArray<z.ZodObject<{
3522
+ sku: z.ZodOptional<z.ZodString>;
3523
+ options: z.ZodRecord<z.ZodString, z.ZodString>;
3524
+ price: z.ZodOptional<z.ZodObject<{
3525
+ amount: z.ZodInt;
3526
+ currency: z.ZodString;
3527
+ }, z.core.$strict>>;
3528
+ available: z.ZodOptional<z.ZodBoolean>;
3529
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
3530
+ weight: z.ZodOptional<z.ZodInt>;
3531
+ }, z.core.$strict>>>;
3532
+ digital: z.ZodOptional<z.ZodBoolean>;
3533
+ available: z.ZodOptional<z.ZodBoolean>;
3534
+ weight: z.ZodOptional<z.ZodInt>;
3535
+ subscription: z.ZodOptional<z.ZodObject<{
3536
+ interval: z.ZodEnum<{
3537
+ year: "year";
3538
+ month: "month";
3539
+ }>;
3540
+ }, z.core.$strict>>;
3541
+ title: z.ZodString;
3542
+ status: z.ZodEnum<{
3543
+ draft: "draft";
3544
+ scheduled: "scheduled";
3545
+ published: "published";
3546
+ }>;
3547
+ publishAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
3548
+ excerpt: z.ZodOptional<z.ZodString>;
3549
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>;
3550
+ imageAlt: z.ZodOptional<z.ZodString>;
3551
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
3552
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
3553
+ featured: z.ZodOptional<z.ZodBoolean>;
3554
+ seo: z.ZodOptional<z.ZodObject<{
3555
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3556
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3557
+ image: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodURL]>>>;
3558
+ noindex: z.ZodOptional<z.ZodBoolean>;
3559
+ canonical: z.ZodOptional<z.ZodURL>;
3560
+ }, z.core.$strict>>;
3561
+ }, z.core.$strict>;
3562
+ body: z.ZodString;
3563
+ }, z.core.$strict>], "kind">;
3564
+ }, z.core.$strict>, z.ZodObject<{
3565
+ id: z.ZodString;
3566
+ actor: z.ZodString;
3567
+ ts: z.ZodNumber;
3568
+ op: z.ZodLiteral<"collection.delete">;
3569
+ collection: z.ZodString;
3570
+ slug: z.ZodString;
3571
+ keepEmpty: z.ZodOptional<z.ZodBoolean>;
3572
+ }, z.core.$strict>, z.ZodObject<{
3573
+ id: z.ZodString;
3574
+ actor: z.ZodString;
3575
+ ts: z.ZodNumber;
3576
+ op: z.ZodLiteral<"collectionConfig.upsert">;
3577
+ collection: z.ZodString;
3578
+ config: z.ZodNullable<z.ZodObject<{
3579
+ $schema: z.ZodOptional<z.ZodString>;
3580
+ kind: z.ZodEnum<{
3581
+ custom: "custom";
3582
+ blog: "blog";
3583
+ events: "events";
3584
+ portfolio: "portfolio";
3585
+ podcast: "podcast";
3586
+ products: "products";
3587
+ }>;
3588
+ label: z.ZodString;
3589
+ itemLabel: z.ZodOptional<z.ZodString>;
3590
+ slugPattern: z.ZodOptional<z.ZodString>;
3591
+ list: z.ZodObject<{
3592
+ layout: z.ZodEnum<{
3593
+ grid: "grid";
3594
+ list: "list";
3595
+ cards: "cards";
3596
+ masonry: "masonry";
3597
+ calendar: "calendar";
3598
+ compact: "compact";
3599
+ }>;
3600
+ pageSize: z.ZodInt;
3601
+ sort: z.ZodEnum<{
3602
+ title: "title";
3603
+ "date-desc": "date-desc";
3604
+ "date-asc": "date-asc";
3605
+ manual: "manual";
3606
+ }>;
3607
+ }, z.core.$strict>;
3608
+ itemPage: z.ZodOptional<z.ZodObject<{
3609
+ layout: z.ZodEnum<{
3610
+ split: "split";
3611
+ wide: "wide";
3612
+ gallery: "gallery";
3613
+ article: "article";
3614
+ minimal: "minimal";
3615
+ }>;
3616
+ showDate: z.ZodOptional<z.ZodBoolean>;
3617
+ showAuthor: z.ZodOptional<z.ZodBoolean>;
3618
+ showRelated: z.ZodOptional<z.ZodBoolean>;
3619
+ }, z.core.$strict>>;
3620
+ taxonomies: z.ZodOptional<z.ZodObject<{
3621
+ categories: z.ZodOptional<z.ZodArray<z.ZodObject<{
3622
+ slug: z.ZodString;
3623
+ label: z.ZodString;
3624
+ }, z.core.$strict>>>;
3625
+ tags: z.ZodOptional<z.ZodBoolean>;
3626
+ }, z.core.$strict>>;
3627
+ feed: z.ZodOptional<z.ZodObject<{
3628
+ enabled: z.ZodBoolean;
3629
+ format: z.ZodOptional<z.ZodEnum<{
3630
+ podcast: "podcast";
3631
+ rss: "rss";
3632
+ atom: "atom";
3633
+ ical: "ical";
3634
+ }>>;
3635
+ title: z.ZodOptional<z.ZodString>;
3636
+ description: z.ZodOptional<z.ZodString>;
3637
+ }, z.core.$strict>>;
3638
+ }, z.core.$strict>>;
3639
+ keepEmpty: z.ZodOptional<z.ZodBoolean>;
3640
+ }, z.core.$strict>], "op">;
3641
+ type Op = z.infer<typeof OpSchema>;
3642
+ type OpType = Op["op"];
3643
+ type OpOf<T extends OpType> = Extract<Op, {
3644
+ op: T;
3645
+ }>;
3646
+ type BlockUpdateOp = OpOf<"block.update">;
3647
+ type BlockInsertOp = OpOf<"block.insert">;
3648
+ type BlockMoveOp = OpOf<"block.move">;
3649
+ type BlockDeleteOp = OpOf<"block.delete">;
3650
+ type GridPlaceOp = OpOf<"grid.place">;
3651
+ type SectionInsertOp = OpOf<"section.insert">;
3652
+ type SectionMoveOp = OpOf<"section.move">;
3653
+ type SectionDeleteOp = OpOf<"section.delete">;
3654
+ type SectionUpdateOp = OpOf<"section.update">;
3655
+ type StylesPatchOp = OpOf<"styles.patch">;
3656
+ type PageCreateOp = OpOf<"page.create">;
3657
+ type PageUpdateOp = OpOf<"page.update">;
3658
+ type PageDeleteOp = OpOf<"page.delete">;
3659
+ type NavUpdateOp = OpOf<"nav.update">;
3660
+ type SiteUpdateOp = OpOf<"site.update">;
3661
+ type MediaAddOp = OpOf<"media.add">;
3662
+ type MediaRemoveOp = OpOf<"media.remove">;
3663
+ type CollectionUpsertOp = OpOf<"collection.upsert">;
3664
+ type CollectionDeleteOp = OpOf<"collection.delete">;
3665
+ type CollectionConfigUpsertOp = OpOf<"collectionConfig.upsert">;
3666
+ /** Every op type, in vocabulary order. */
3667
+ declare const OP_TYPES: OpType[];
3668
+ /** An op without its metadata, as produced by builders before stamping. */
3669
+ type OpBody<T extends Op = Op> = T extends Op ? Omit<T, keyof OpMeta> : never;
3670
+ /** Attach metadata to an op body. */
3671
+ declare function stamp<T extends Op>(body: OpBody<T>, meta: OpMeta): T;
3672
+ /** Parse untrusted JSON (WebSocket, MCP, CLI) into an `Op`. */
3673
+ declare function parseOp(value: unknown): {
3674
+ ok: true;
3675
+ op: Op;
3676
+ } | {
3677
+ ok: false;
3678
+ errors: {
3679
+ path: (string | number)[];
3680
+ message: string;
3681
+ }[];
3682
+ };
3683
+
3684
+ /** Top-level keys that path patches may not touch, per target. */
3685
+ declare const PROTECTED_PATHS: {
3686
+ readonly page: readonly ["id", "sections"];
3687
+ readonly section: readonly ["id", "blocks"];
3688
+ readonly site: readonly ["nav"];
3689
+ readonly styles: string[];
3690
+ };
3691
+ /**
3692
+ * Mutate `doc` (an Immer draft) by `op`. Throws `OpError` when a precondition fails.
3693
+ * Exposed for batching inside one `produce` call; most callers want `apply`.
3694
+ */
3695
+ declare function mutate(doc: SiteDocument, op: Op): void;
3696
+ /**
3697
+ * Apply an op immutably (Immer structural sharing; untouched pages keep their identity).
3698
+ * Throws `OpError` when a precondition fails. Does not schema-validate — use `validate` for
3699
+ * untrusted ops.
3700
+ */
3701
+ declare function apply(doc: SiteDocument, op: Op): SiteDocument;
3702
+ /** Apply ops in order (one Immer pass). Throws `OpError` (with `index`) on the first failure. */
3703
+ declare function applyAll(doc: SiteDocument, ops: readonly Op[]): SiteDocument;
3704
+
3705
+ interface DiffOptions {
3706
+ actor?: string;
3707
+ ts?: number;
3708
+ /** Op ids are `<idPrefix><n>`. */
3709
+ idPrefix?: string;
3710
+ }
3711
+ /** Navigation with every reference to `pageId` removed (folders keep their other items). */
3712
+ declare function pruneNav(nav: readonly NavItem[], pageId: string): NavItem[];
3713
+ /**
3714
+ * Ops that turn `before` into `after` (`applyAll(before, diff(before, after))` equals `after`,
3715
+ * except `config`, which ops do not edit). Used by the CLI/local MCP to turn file edits into ops
3716
+ * and by the update bot. Ids are matched, so moved blocks/sections become moves, not
3717
+ * delete + insert (cross-page moves are delete + insert).
3718
+ *
3719
+ * Each op is applied to a working copy as it is emitted, so later ops see earlier ones. For
3720
+ * ordinary edits every op is individually valid; contrived reshuffles (e.g. swapping two pages'
3721
+ * slugs) may pass through an intermediate state that `validate` would reject.
3722
+ */
3723
+ declare function diff(before: SiteDocument, after: SiteDocument, options?: DiffOptions): Op[];
3724
+
3725
+ /** A precondition failure while applying an op (missing target, bad position…). */
3726
+ declare class OpError extends Error {
3727
+ readonly path: (string | number)[];
3728
+ constructor(message: string, path?: (string | number)[]);
3729
+ }
3730
+ /** Document path of a container's sections (for error paths). */
3731
+ declare function containerPath(container: ContainerId): (string | number)[];
3732
+ /** The sections of a page, or `[footer]`. Undefined if the page does not exist. */
3733
+ declare function sectionsOf(doc: SiteDocument, container: ContainerId): Section[] | undefined;
3734
+ interface SectionLoc {
3735
+ section: Section;
3736
+ index: number;
3737
+ }
3738
+ declare function findSection(doc: SiteDocument, container: ContainerId, sectionId: string): SectionLoc | undefined;
3739
+ interface BlockLoc {
3740
+ section: Section;
3741
+ sectionIndex: number;
3742
+ block: Block;
3743
+ index: number;
3744
+ }
3745
+ declare function findBlock(doc: SiteDocument, container: ContainerId, blockId: string): BlockLoc | undefined;
3746
+ /** Where a section lives anywhere in the document. */
3747
+ declare function locateSection(doc: SiteDocument, sectionId: string): {
3748
+ container: ContainerId;
3749
+ index: number;
3750
+ section: Section;
3751
+ } | undefined;
3752
+ /** Where a block lives anywhere in the document. */
3753
+ declare function locateBlock(doc: SiteDocument, blockId: string): ({
3754
+ container: ContainerId;
3755
+ } & BlockLoc) | undefined;
3756
+ /** Every section and block id in the document (pages + footer), mapped to its container. */
3757
+ declare function indexIds(doc: SiteDocument): {
3758
+ sections: Map<string, ContainerId>;
3759
+ blocks: Map<string, ContainerId>;
3760
+ };
3761
+ /** Resolve a position against a list of sibling ids. Throws `OpError` if out of range. */
3762
+ declare function resolvePosition(ids: readonly string[], at: Position, path: (string | number)[]): number;
3763
+ /** The placement that applies at a breakpoint (tablet inherits desktop; mobile is independent). */
3764
+ declare function effectiveRect(item: GridItem, bp: Breakpoint): GridRect | undefined;
3765
+ /** The last row used by any placement at a breakpoint (0 when empty). */
3766
+ declare function usedRows(layout: GridLayout, bp: Breakpoint): number;
3767
+ /** Raise `rows` (mutably) wherever a placement extends past the last row. Never shrinks. */
3768
+ declare function raiseRows(layout: GridLayout): void;
3769
+ /** A placement below everything else: desktop always, mobile when other items have one. */
3770
+ declare function autoPlace(layout: GridLayout): GridItem;
3771
+
3772
+ /**
3773
+ * The op that undoes `op`. Computed from the document *before* `op` is applied, so
3774
+ * `apply(apply(doc, op), invert(doc, op))` equals `doc`. The inverse carries `meta` (default:
3775
+ * the original's actor/ts and id `"<id>:undo"`). Throws `OpError` if `op` does not apply to `doc`.
3776
+ */
3777
+ declare function invert(doc: SiteDocument, op: Op, meta?: OpMeta): Op;
3778
+ /** Inverses for a sequence (each computed against the document state it applies to), reversed. */
3779
+ declare function invertAll(doc: SiteDocument, ops: readonly Op[]): Op[];
3780
+
3781
+ /** Structural equality for JSON values (key order ignored, `undefined` keys ignored). */
3782
+ declare function deepEqual(a: unknown, b: unknown): boolean;
3783
+ /**
3784
+ * True if `value` survives a JSON round trip unchanged: null, booleans, finite numbers, strings,
3785
+ * arrays and plain objects of those (no `undefined`, functions, class instances, NaN).
3786
+ */
3787
+ declare function isJson(value: unknown, depth?: number): boolean;
3788
+
3789
+ /**
3790
+ * Merging concurrent edits (arch §5.3 "Conflict handling").
3791
+ *
3792
+ * Every op is described by the document locations it touches. Ops whose locations are disjoint
3793
+ * commute and pass through untouched. When a local (pending) op and a remote (already ordered)
3794
+ * op touch the same location:
3795
+ *
3796
+ * - **Deletes win.** A remote delete of a page/section/block/item drops local edits to it; a
3797
+ * local delete survives remote edits (the remote author gets a conflict entry).
3798
+ * - **Same-field edits are last-writer-wins** by `(ts, actor)`. If the local op wins it is kept
3799
+ * (applied after the remote op, it overwrites); if the remote op wins the overlapping fields
3800
+ * are stripped from the local op (dropped entirely when nothing is left).
3801
+ *
3802
+ * The DraftRoom must run the same function for an incoming op against the ops its sender had not
3803
+ * seen, so both sides converge.
3804
+ */
3805
+ /**
3806
+ * `edit`/`create`/`delete` drive conflict detection. `order` marks state an op affects that
3807
+ * merges deterministically (a list's order, a grid's rows) — never a conflict, but it means the
3808
+ * op does not strictly commute with another op touching the same place (see `independent`).
3809
+ */
3810
+ type TouchKind = "edit" | "create" | "delete" | "order";
3811
+ interface Touch {
3812
+ path: string[];
3813
+ kind: TouchKind;
3814
+ }
3815
+ interface OpFootprint {
3816
+ touches: Touch[];
3817
+ /** Locations that must still exist for the op to apply (its page, its target section). */
3818
+ requires: string[][];
3819
+ }
3820
+ /**
3821
+ * Locations an op touches and depends on. With `doc` (the document the op applies to), ops that
3822
+ * only name a block also record the section the block currently sits in.
3823
+ */
3824
+ declare function footprint(op: Op, doc?: SiteDocument): OpFootprint;
3825
+ /**
3826
+ * True if `a` was written after `b` under last-writer-wins: later `ts`, then greater actor.
3827
+ *
3828
+ * `ts` comes from the client, so the server (DraftRoom) must stamp or clamp it on receipt —
3829
+ * e.g. `ts = min(clientTs, serverNow)` and never earlier than the op it was based on — otherwise
3830
+ * a skewed or malicious clock wins every conflict.
3831
+ */
3832
+ declare function wins(a: {
3833
+ ts: number;
3834
+ actor: string;
3835
+ }, b: {
3836
+ ts: number;
3837
+ actor: string;
3838
+ }): boolean;
3839
+ /**
3840
+ * True if two ops touch disjoint locations, so applying them in either order gives the same
3841
+ * document. Pass the document they both apply to for precise block-level footprints.
3842
+ */
3843
+ declare function independent(a: Op, b: Op, doc?: SiteDocument): boolean;
3844
+ type ConflictReason = "concurrent-edit" | "deleted" | "duplicate" | "invalid";
3845
+ interface Conflict {
3846
+ /** The local op as submitted. */
3847
+ local: Op;
3848
+ /** The remote op it collided with (absent for `invalid`). */
3849
+ remote?: Op;
3850
+ /** Which side's value is kept. */
3851
+ winner: "local" | "remote";
3852
+ reason: ConflictReason;
3853
+ /** Touched locations in conflict, e.g. `block/blk_…/fields/title`. */
3854
+ paths: string[];
3855
+ /** Toast copy, e.g. "Ana changed this too". */
3856
+ message: string;
3857
+ }
3858
+ interface RebaseResult {
3859
+ /** Local ops transformed to apply after the remote ops (dropped ones removed). */
3860
+ ops: Op[];
3861
+ conflicts: Conflict[];
3862
+ /** Local ops removed entirely. */
3863
+ dropped: Op[];
3864
+ }
3865
+ interface RebaseOptions {
3866
+ /**
3867
+ * The common base document both the local and the remote ops were made against (the document
3868
+ * before the remote ops). When given, footprints resolve which section each block-level op
3869
+ * sits in, so e.g. a remote `section.delete` vs a local edit of a block inside it is reported
3870
+ * as a "deleted" conflict.
3871
+ */
3872
+ base?: SiteDocument;
3873
+ /**
3874
+ * The document after the remote ops. When given, rebased ops are re-validated in order against
3875
+ * it (numeric positions are clamped, missing anchors fall back to the end) and ops that no
3876
+ * longer apply are dropped with an `invalid` conflict.
3877
+ */
3878
+ doc?: SiteDocument;
3879
+ }
3880
+ /**
3881
+ * Transform `localPending` (ops not yet acknowledged) so they apply after `remoteOps` (ops the
3882
+ * authority ordered first). Returns the surviving ops plus conflicts for "X changed this too"
3883
+ * toasts.
3884
+ *
3885
+ * Server-side, the DraftRoom runs this for each incoming op against the ops its sender had not
3886
+ * seen. The server must stamp/clamp each op's `ts` on receipt (see `wins`) before ordering it.
3887
+ */
3888
+ declare function rebase(localPending: readonly Op[], remoteOps: readonly Op[], options?: RebaseOptions): RebaseResult;
3889
+
3890
+ /**
3891
+ * Collaborator roles (arch §6.4, PRD). The Hub enforces them on every op it accepts.
3892
+ *
3893
+ * - **owner**, **designer**: every op.
3894
+ * - **editor**: content, pages, navigation, media and collections — but no `styles.patch`, no
3895
+ * `grid.place`, no section layout/style/lock changes, no code injection; and on locked
3896
+ * sections only text/image field updates; no header settings; new sections only as a preset
3897
+ * build or a copy of an existing section's layout and style.
3898
+ * - **contributor**: only `collection.upsert` of a draft item (never over a non-draft item, and
3899
+ * never over a draft someone else started).
3900
+ */
3901
+ declare const ROLES: readonly ["owner", "designer", "editor", "contributor"];
3902
+ type Role = (typeof ROLES)[number];
3903
+ type RoleDecision = {
3904
+ allowed: true;
3905
+ op: Op;
3906
+ } | {
3907
+ allowed: false;
3908
+ reason: string;
3909
+ };
3910
+ interface RoleContext {
3911
+ /**
3912
+ * The document the op will apply to. Needed to find which section a block-level op touches
3913
+ * (and an item's current status for contributors). Without it, Editors are treated as if
3914
+ * any block they touch were in a locked section.
3915
+ */
3916
+ doc?: SiteDocument;
3917
+ /**
3918
+ * Block definitions: field kinds for locked-section checks. The Hub must pass it; without it
3919
+ * only same-shape changes to existing text/image fields are allowed (fail safe).
3920
+ */
3921
+ registry?: BlockRegistry;
3922
+ /** The person submitting the op (user id). Needed for contributor edits to existing items. */
3923
+ userId?: string;
3924
+ /**
3925
+ * Who started a collection item (user id), as recorded by the Hub when the item was created.
3926
+ * Contributors may only change existing drafts they started; without this (or `userId`)
3927
+ * edits to existing items are denied (fail safe).
3928
+ */
3929
+ itemAuthor?: (collection: string, slug: string) => string | undefined;
3930
+ /**
3931
+ * Builds the section a preset (`section.preset`, e.g. `hero/split-image@2`) produces in a color
3932
+ * theme, or undefined for an unknown preset or a theme the preset isn't designed for. Editors may
3933
+ * only insert sections whose layout and style match a preset build or an existing section
3934
+ * (duplicate / paste); without this, only the latter.
3935
+ */
3936
+ presetSection?: (preset: string, colorTheme: ColorTheme | undefined) => Section | undefined;
3937
+ }
3938
+ /** True if `section` looks exactly like a preset build or a section already in the document. */
3939
+ declare function isKnownSectionLook(section: Section, context: RoleContext): boolean;
3940
+ /** Ids of locked sections in a document (pages + footer). */
3941
+ declare function lockedSectionsOf(doc: SiteDocument): Set<string>;
3942
+ /** True if both values are text/image content of the same shape. */
3943
+ declare function sameContentShape(before: unknown, after: unknown): boolean;
3944
+ /** Shape-based guess: a string, a rich-text doc, an image, or a list of images. */
3945
+ declare function isTextOrImageValue(v: unknown): boolean;
3946
+ /**
3947
+ * True if `op` is exactly the undo of `priorOp`: it equals `invert(docBefore, priorOp)` apart from
3948
+ * op metadata. `docBefore` is the document `priorOp` was applied to (the server keeps it, or
3949
+ * recomputes it from the op log).
3950
+ *
3951
+ * How the Hub authorizes undo: an inverse can carry fields a role may not send directly (grid
3952
+ * placements and rows restoring a deleted block, for instance). When an op arrives, if it
3953
+ * `isInverseOf` one of the same actor's own earlier accepted ops — and nothing has touched those
3954
+ * locations since (`rebase` it over the intervening ops first) — accept it as an undo; otherwise
3955
+ * run `transformForRole` as usual.
3956
+ */
3957
+ declare function isInverseOf(op: Op, priorOp: Op, docBefore: SiteDocument): boolean;
3958
+ /**
3959
+ * Decide whether `role` may submit `op`.
3960
+ *
3961
+ * The Hub must pass `context.doc` (and should pass `context.registry`): without them checks fail
3962
+ * safe and deny anything that depends on the document (block edits in locked sections, page
3963
+ * deletes, contributor saves). Undo ops are authorized separately — see `isInverseOf`. Allowed ops are returned unchanged (ops are never
3964
+ * silently rewritten, so what the user sees is what is stored).
3965
+ */
3966
+ declare function transformForRole(op: Op, role: Role, lockedSections: Iterable<string>, context?: RoleContext): RoleDecision;
3967
+
3968
+ /** Counts behind a change summary (publish dialog, commit message, "what changed" lists). */
3969
+ interface ChangeStats {
3970
+ ops: number;
3971
+ /** Ids of existing pages whose content or settings changed (not created/deleted ones). */
3972
+ pagesEdited: string[];
3973
+ pagesCreated: string[];
3974
+ pagesDeleted: string[];
3975
+ footerEdited: boolean;
3976
+ sectionsAdded: number;
3977
+ sectionsRemoved: number;
3978
+ sectionsMoved: number;
3979
+ blocksAdded: number;
3980
+ blocksRemoved: number;
3981
+ blocksMoved: number;
3982
+ /** Distinct blocks whose fields, style or placement changed. */
3983
+ blocksEdited: number;
3984
+ imagesAdded: number;
3985
+ imagesRemoved: number;
3986
+ /** Non-image media (video, audio, files). */
3987
+ filesAdded: number;
3988
+ filesRemoved: number;
3989
+ /** Human labels of changed style settings, e.g. "accent color", "fonts". */
3990
+ stylesChanged: string[];
3991
+ navChanged: boolean;
3992
+ siteSettingsChanged: boolean;
3993
+ itemsSaved: number;
3994
+ itemsDeleted: number;
3995
+ collectionSettingsChanged: number;
3996
+ }
3997
+ /** A friendly label for a styles path, e.g. `overrides.color.accent` → "accent color". */
3998
+ declare function styleLabel(path: string): string;
3999
+ declare function stats(ops: readonly Op[], doc: SiteDocument): ChangeStats;
4000
+ /**
4001
+ * A one-line human summary of a set of ops against the document they apply to, e.g.
4002
+ * "Edited Home and About; added 2 images; changed accent color".
4003
+ */
4004
+ declare function summarize(ops: readonly Op[], doc: SiteDocument): string;
4005
+
4006
+ interface OpIssue {
4007
+ path: (string | number)[];
4008
+ message: string;
4009
+ }
4010
+ type ValidationResult = {
4011
+ ok: true;
4012
+ doc: SiteDocument;
4013
+ warnings: OpIssue[];
4014
+ } | {
4015
+ ok: false;
4016
+ errors: OpIssue[];
4017
+ };
4018
+ interface ValidateOptions {
4019
+ /** Also validate inserted/updated blocks' fields against their definitions. */
4020
+ registry?: BlockRegistry;
4021
+ /**
4022
+ * Skip parsing the op's shape with `OpSchema` (only for ops constructed in-process by
4023
+ * trusted code; anything from the network must be parsed).
4024
+ */
4025
+ trusted?: boolean;
4026
+ }
4027
+ /** Navigation/announcement links that point at pages which do not exist. */
4028
+ declare function siteRefIssues(doc: SiteDocument): OpIssue[];
4029
+ /**
4030
+ * Validate an op against a document: shape (OpSchema), preconditions (targets exist, positions in
4031
+ * range, new ids unique), then the resulting fragment (page, footer, site, styles, item…) against
4032
+ * the schema plus referential integrity. On success returns the resulting document and any
4033
+ * non-blocking warnings (e.g. content links to a deleted page).
4034
+ */
4035
+ declare function validate(doc: SiteDocument, input: Op | unknown, options?: ValidateOptions): ValidationResult;
4036
+ /** Validate a sequence of ops; stops at the first invalid one. */
4037
+ declare function validateAll(doc: SiteDocument, ops: readonly unknown[], options?: ValidateOptions): {
4038
+ ok: true;
4039
+ doc: SiteDocument;
4040
+ warnings: OpIssue[];
4041
+ } | {
4042
+ ok: false;
4043
+ index: number;
4044
+ errors: OpIssue[];
4045
+ };
4046
+ /**
4047
+ * Full validation of a document: the whole `SiteDocumentSchema` (ids unique, keys match, …),
4048
+ * navigation/announcement page references and, with a registry, every block's fields.
4049
+ */
4050
+ declare function validateDocument(doc: unknown, options?: Pick<ValidateOptions, "registry">): ValidationResult;
4051
+
4052
+ /**
4053
+ * @omniharmonic/openspace-ops — typed, validated, invertible, mergeable operations over a `SiteDocument`
4054
+ * (arch §5.3). Every edit from Studio, the Hub DraftRoom, MCP agents and the CLI is an `Op`.
4055
+ */
4056
+ declare const name = "@omniharmonic/openspace-ops";
4057
+
4058
+ export { type BlockDeleteOp, BlockDeleteOpSchema, type BlockInsertOp, BlockInsertOpSchema, type BlockMoveOp, BlockMoveOpSchema, type BlockUpdateOp, BlockUpdateOpSchema, BreakpointSchema, type ChangeStats, type CollectionConfigUpsertOp, CollectionConfigUpsertOpSchema, type CollectionDeleteOp, CollectionDeleteOpSchema, type CollectionUpsertOp, CollectionUpsertOpSchema, type Conflict, type ConflictReason, type ContainerId, ContainerIdSchema, type DiffOptions, FOOTER, type GridPlaceOp, GridPlaceOpSchema, type MediaAddOp, MediaAddOpSchema, type MediaRemoveOp, MediaRemoveOpSchema, type NavUpdateOp, NavUpdateOpSchema, OP_TYPES, type Op, type OpBody, OpError, type OpFootprint, type OpIssue, type OpMeta, OpMetaShape, type OpOf, OpSchema, type OpType, PROTECTED_PATHS, type PageCreateOp, PageCreateOpSchema, type PageDeleteOp, PageDeleteOpSchema, type PageUpdateOp, PageUpdateOpSchema, type Patch, PatchShape, PathSchema, type Position, PositionSchema, ROLES, type RebaseOptions, type RebaseResult, type Role, type RoleContext, type RoleDecision, type Rows, RowsSchema, type SectionDeleteOp, SectionDeleteOpSchema, type SectionInsertOp, SectionInsertOpSchema, type SectionMoveOp, SectionMoveOpSchema, type SectionUpdateOp, SectionUpdateOpSchema, type SiteUpdateOp, SiteUpdateOpSchema, type StylesPatchOp, StylesPatchOpSchema, type Touch, type TouchKind, type ValidateOptions, type ValidationResult, apply, applyAll, autoPlace, containerPath, deepEqual, diff, effectiveRect, findBlock, findSection, footprint, independent, indexIds, invert, invertAll, isInverseOf, isJson, isKnownSectionLook, isTextOrImageValue, locateBlock, locateSection, lockedSectionsOf, mutate, name, parseOp, pruneNav, raiseRows, rebase, resolvePosition, sameContentShape, sectionsOf, siteRefIssues, stamp, stats, styleLabel, summarize, transformForRole, usedRows, validate, validateAll, validateDocument, wins };