@shoplix-ai/sdui-schema 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/LICENSE +21 -0
  2. package/dist/action.d.ts +26 -0
  3. package/dist/action.d.ts.map +1 -0
  4. package/dist/action.js +27 -0
  5. package/dist/action.js.map +1 -0
  6. package/dist/assets.d.ts +80 -0
  7. package/dist/assets.d.ts.map +1 -0
  8. package/dist/assets.js +101 -0
  9. package/dist/assets.js.map +1 -0
  10. package/dist/binding.d.ts +144 -0
  11. package/dist/binding.d.ts.map +1 -0
  12. package/dist/binding.js +80 -0
  13. package/dist/binding.js.map +1 -0
  14. package/dist/block-definition.d.ts +1639 -0
  15. package/dist/block-definition.d.ts.map +1 -0
  16. package/dist/block-definition.js +527 -0
  17. package/dist/block-definition.js.map +1 -0
  18. package/dist/block-type-id.d.ts +15 -0
  19. package/dist/block-type-id.d.ts.map +1 -0
  20. package/dist/block-type-id.js +43 -0
  21. package/dist/block-type-id.js.map +1 -0
  22. package/dist/block-type.d.ts +21 -0
  23. package/dist/block-type.d.ts.map +1 -0
  24. package/dist/block-type.js +24 -0
  25. package/dist/block-type.js.map +1 -0
  26. package/dist/blocks.d.ts +922 -0
  27. package/dist/blocks.d.ts.map +1 -0
  28. package/dist/blocks.js +353 -0
  29. package/dist/blocks.js.map +1 -0
  30. package/dist/definition-validator.d.ts +47 -0
  31. package/dist/definition-validator.d.ts.map +1 -0
  32. package/dist/definition-validator.js +340 -0
  33. package/dist/definition-validator.js.map +1 -0
  34. package/dist/display.d.ts +139 -0
  35. package/dist/display.d.ts.map +1 -0
  36. package/dist/display.js +118 -0
  37. package/dist/display.js.map +1 -0
  38. package/dist/envelope.d.ts +2721 -0
  39. package/dist/envelope.d.ts.map +1 -0
  40. package/dist/envelope.js +116 -0
  41. package/dist/envelope.js.map +1 -0
  42. package/dist/icons.d.ts +10 -0
  43. package/dist/icons.d.ts.map +1 -0
  44. package/dist/icons.js +49 -0
  45. package/dist/icons.js.map +1 -0
  46. package/dist/index.d.ts +38 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +20 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/locale.d.ts +11 -0
  51. package/dist/locale.d.ts.map +1 -0
  52. package/dist/locale.js +15 -0
  53. package/dist/locale.js.map +1 -0
  54. package/dist/manifest.d.ts +28 -0
  55. package/dist/manifest.d.ts.map +1 -0
  56. package/dist/manifest.js +242 -0
  57. package/dist/manifest.js.map +1 -0
  58. package/dist/parse.d.ts +33 -0
  59. package/dist/parse.d.ts.map +1 -0
  60. package/dist/parse.js +61 -0
  61. package/dist/parse.js.map +1 -0
  62. package/dist/path.d.ts +3 -0
  63. package/dist/path.d.ts.map +1 -0
  64. package/dist/path.js +14 -0
  65. package/dist/path.js.map +1 -0
  66. package/dist/primitives.d.ts +1206 -0
  67. package/dist/primitives.d.ts.map +1 -0
  68. package/dist/primitives.js +631 -0
  69. package/dist/primitives.js.map +1 -0
  70. package/dist/props.d.ts +9 -0
  71. package/dist/props.d.ts.map +1 -0
  72. package/dist/props.js +12 -0
  73. package/dist/props.js.map +1 -0
  74. package/dist/screen.d.ts +57 -0
  75. package/dist/screen.d.ts.map +1 -0
  76. package/dist/screen.js +76 -0
  77. package/dist/screen.js.map +1 -0
  78. package/dist/starters/electronics.d.ts +3 -0
  79. package/dist/starters/electronics.d.ts.map +1 -0
  80. package/dist/starters/electronics.js +235 -0
  81. package/dist/starters/electronics.js.map +1 -0
  82. package/dist/starters/fashion.d.ts +3 -0
  83. package/dist/starters/fashion.d.ts.map +1 -0
  84. package/dist/starters/fashion.js +232 -0
  85. package/dist/starters/fashion.js.map +1 -0
  86. package/dist/starters/index.d.ts +5 -0
  87. package/dist/starters/index.d.ts.map +1 -0
  88. package/dist/starters/index.js +10 -0
  89. package/dist/starters/index.js.map +1 -0
  90. package/dist/starters/minimal.d.ts +3 -0
  91. package/dist/starters/minimal.d.ts.map +1 -0
  92. package/dist/starters/minimal.js +232 -0
  93. package/dist/starters/minimal.js.map +1 -0
  94. package/dist/starters/starter-seed.d.ts +17 -0
  95. package/dist/starters/starter-seed.d.ts.map +1 -0
  96. package/dist/starters/starter-seed.js +2 -0
  97. package/dist/starters/starter-seed.js.map +1 -0
  98. package/dist/theme.d.ts +54 -0
  99. package/dist/theme.d.ts.map +1 -0
  100. package/dist/theme.js +68 -0
  101. package/dist/theme.js.map +1 -0
  102. package/dist/tokens.d.ts +115 -0
  103. package/dist/tokens.d.ts.map +1 -0
  104. package/dist/tokens.js +349 -0
  105. package/dist/tokens.js.map +1 -0
  106. package/dist/version.d.ts +11 -0
  107. package/dist/version.d.ts.map +1 -0
  108. package/dist/version.js +10 -0
  109. package/dist/version.js.map +1 -0
  110. package/package.json +50 -0
@@ -0,0 +1,922 @@
1
+ import { z } from 'zod';
2
+ /** JSON-safe, for an editor that has to shape an id before the parse sees it. */
3
+ export declare const BLOCK_ID_PATTERN = "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$";
4
+ export declare const textBlockSchema: z.ZodObject<{
5
+ id: z.ZodString;
6
+ type: z.ZodLiteral<"text">;
7
+ props: z.ZodObject<{
8
+ text: z.ZodRecord<z.ZodString, z.ZodString>;
9
+ size: z.ZodOptional<z.ZodEnum<{
10
+ sm: "sm";
11
+ md: "md";
12
+ lg: "lg";
13
+ xl: "xl";
14
+ }>>;
15
+ weight: z.ZodOptional<z.ZodEnum<{
16
+ regular: "regular";
17
+ medium: "medium";
18
+ bold: "bold";
19
+ }>>;
20
+ align: z.ZodOptional<z.ZodEnum<{
21
+ start: "start";
22
+ center: "center";
23
+ end: "end";
24
+ }>>;
25
+ }, z.core.$strip>;
26
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
27
+ }, z.core.$strip>;
28
+ export declare const imageBlockSchema: z.ZodObject<{
29
+ id: z.ZodString;
30
+ type: z.ZodLiteral<"image">;
31
+ props: z.ZodObject<{
32
+ image: z.ZodOptional<z.ZodObject<{
33
+ assetId: z.ZodUUID;
34
+ alt: z.ZodRecord<z.ZodString, z.ZodString>;
35
+ }, z.core.$strip>>;
36
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
37
+ type: z.ZodLiteral<"open_screen">;
38
+ screenId: z.ZodUUID;
39
+ }, z.core.$strip>, z.ZodObject<{
40
+ type: z.ZodLiteral<"open_cart">;
41
+ }, z.core.$strip>, z.ZodObject<{
42
+ type: z.ZodLiteral<"open_url">;
43
+ url: z.ZodURL;
44
+ }, z.core.$strip>, z.ZodObject<{
45
+ type: z.ZodLiteral<"none">;
46
+ }, z.core.$strip>], "type">;
47
+ }, z.core.$strip>;
48
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
49
+ }, z.core.$strip>;
50
+ export declare const buttonBlockSchema: z.ZodObject<{
51
+ id: z.ZodString;
52
+ type: z.ZodLiteral<"button">;
53
+ props: z.ZodObject<{
54
+ label: z.ZodRecord<z.ZodString, z.ZodString>;
55
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
56
+ type: z.ZodLiteral<"open_screen">;
57
+ screenId: z.ZodUUID;
58
+ }, z.core.$strip>, z.ZodObject<{
59
+ type: z.ZodLiteral<"open_cart">;
60
+ }, z.core.$strip>, z.ZodObject<{
61
+ type: z.ZodLiteral<"open_url">;
62
+ url: z.ZodURL;
63
+ }, z.core.$strip>, z.ZodObject<{
64
+ type: z.ZodLiteral<"none">;
65
+ }, z.core.$strip>], "type">;
66
+ }, z.core.$strip>;
67
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
68
+ }, z.core.$strip>;
69
+ export declare const spacerBlockSchema: z.ZodObject<{
70
+ id: z.ZodString;
71
+ type: z.ZodLiteral<"spacer">;
72
+ props: z.ZodObject<{
73
+ size: z.ZodEnum<{
74
+ sm: "sm";
75
+ md: "md";
76
+ lg: "lg";
77
+ xl: "xl";
78
+ xs: "xs";
79
+ }>;
80
+ }, z.core.$strip>;
81
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
82
+ }, z.core.$strip>;
83
+ export declare const dividerBlockSchema: z.ZodObject<{
84
+ id: z.ZodString;
85
+ type: z.ZodLiteral<"divider">;
86
+ props: z.ZodObject<{
87
+ label: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
88
+ }, z.core.$strip>;
89
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
90
+ }, z.core.$strip>;
91
+ export declare const sectionHeaderBlockSchema: z.ZodObject<{
92
+ id: z.ZodString;
93
+ type: z.ZodLiteral<"section_header">;
94
+ props: z.ZodObject<{
95
+ title: z.ZodRecord<z.ZodString, z.ZodString>;
96
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
97
+ type: z.ZodLiteral<"open_screen">;
98
+ screenId: z.ZodUUID;
99
+ }, z.core.$strip>, z.ZodObject<{
100
+ type: z.ZodLiteral<"open_cart">;
101
+ }, z.core.$strip>, z.ZodObject<{
102
+ type: z.ZodLiteral<"open_url">;
103
+ url: z.ZodURL;
104
+ }, z.core.$strip>, z.ZodObject<{
105
+ type: z.ZodLiteral<"none">;
106
+ }, z.core.$strip>], "type">;
107
+ }, z.core.$strip>;
108
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
109
+ }, z.core.$strip>;
110
+ export declare const searchBarBlockSchema: z.ZodObject<{
111
+ id: z.ZodString;
112
+ type: z.ZodLiteral<"search_bar">;
113
+ props: z.ZodObject<{
114
+ placeholder: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
115
+ }, z.core.$strip>;
116
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
117
+ }, z.core.$strip>;
118
+ export declare const videoBlockSchema: z.ZodObject<{
119
+ id: z.ZodString;
120
+ type: z.ZodLiteral<"video">;
121
+ props: z.ZodObject<{
122
+ assetId: z.ZodOptional<z.ZodUUID>;
123
+ poster: z.ZodOptional<z.ZodObject<{
124
+ assetId: z.ZodUUID;
125
+ alt: z.ZodRecord<z.ZodString, z.ZodString>;
126
+ }, z.core.$strip>>;
127
+ }, z.core.$strip>;
128
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
129
+ }, z.core.$strip>;
130
+ export declare const heroBannerBlockSchema: z.ZodObject<{
131
+ id: z.ZodString;
132
+ type: z.ZodLiteral<"hero_banner">;
133
+ props: z.ZodObject<{
134
+ title: z.ZodRecord<z.ZodString, z.ZodString>;
135
+ subtitle: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
136
+ image: z.ZodOptional<z.ZodObject<{
137
+ assetId: z.ZodUUID;
138
+ alt: z.ZodRecord<z.ZodString, z.ZodString>;
139
+ }, z.core.$strip>>;
140
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
141
+ type: z.ZodLiteral<"open_screen">;
142
+ screenId: z.ZodUUID;
143
+ }, z.core.$strip>, z.ZodObject<{
144
+ type: z.ZodLiteral<"open_cart">;
145
+ }, z.core.$strip>, z.ZodObject<{
146
+ type: z.ZodLiteral<"open_url">;
147
+ url: z.ZodURL;
148
+ }, z.core.$strip>, z.ZodObject<{
149
+ type: z.ZodLiteral<"none">;
150
+ }, z.core.$strip>], "type">;
151
+ }, z.core.$strip>;
152
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
153
+ }, z.core.$strip>;
154
+ export declare const promoBannerBlockSchema: z.ZodObject<{
155
+ id: z.ZodString;
156
+ type: z.ZodLiteral<"promo_banner">;
157
+ props: z.ZodObject<{
158
+ image: z.ZodOptional<z.ZodObject<{
159
+ assetId: z.ZodUUID;
160
+ alt: z.ZodRecord<z.ZodString, z.ZodString>;
161
+ }, z.core.$strip>>;
162
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
163
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
164
+ type: z.ZodLiteral<"open_screen">;
165
+ screenId: z.ZodUUID;
166
+ }, z.core.$strip>, z.ZodObject<{
167
+ type: z.ZodLiteral<"open_cart">;
168
+ }, z.core.$strip>, z.ZodObject<{
169
+ type: z.ZodLiteral<"open_url">;
170
+ url: z.ZodURL;
171
+ }, z.core.$strip>, z.ZodObject<{
172
+ type: z.ZodLiteral<"none">;
173
+ }, z.core.$strip>], "type">;
174
+ }, z.core.$strip>;
175
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
176
+ }, z.core.$strip>;
177
+ export declare const announcementBarBlockSchema: z.ZodObject<{
178
+ id: z.ZodString;
179
+ type: z.ZodLiteral<"announcement_bar">;
180
+ props: z.ZodObject<{
181
+ text: z.ZodRecord<z.ZodString, z.ZodString>;
182
+ }, z.core.$strip>;
183
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
184
+ }, z.core.$strip>;
185
+ export declare const countdownBlockSchema: z.ZodObject<{
186
+ id: z.ZodString;
187
+ type: z.ZodLiteral<"countdown">;
188
+ props: z.ZodObject<{
189
+ endsAt: z.ZodISODateTime;
190
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
191
+ }, z.core.$strip>;
192
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
193
+ }, z.core.$strip>;
194
+ export declare const featureStripBlockSchema: z.ZodObject<{
195
+ id: z.ZodString;
196
+ type: z.ZodLiteral<"feature_strip">;
197
+ props: z.ZodObject<{
198
+ items: z.ZodArray<z.ZodObject<{
199
+ icon: z.ZodString;
200
+ label: z.ZodRecord<z.ZodString, z.ZodString>;
201
+ }, z.core.$strip>>;
202
+ }, z.core.$strip>;
203
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
204
+ }, z.core.$strip>;
205
+ export declare const productCardBlockSchema: z.ZodObject<{
206
+ id: z.ZodString;
207
+ type: z.ZodLiteral<"product_card">;
208
+ binding: z.ZodObject<{
209
+ kind: z.ZodLiteral<"product">;
210
+ target: z.ZodObject<{
211
+ form: z.ZodLiteral<"literal">;
212
+ id: z.ZodString;
213
+ }, z.core.$strip>;
214
+ }, z.core.$strip>;
215
+ props: z.ZodObject<{
216
+ layout: z.ZodOptional<z.ZodEnum<{
217
+ standard: "standard";
218
+ compact: "compact";
219
+ }>>;
220
+ }, z.core.$strip>;
221
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
222
+ }, z.core.$strip>;
223
+ export declare const productCarouselBlockSchema: z.ZodObject<{
224
+ id: z.ZodString;
225
+ type: z.ZodLiteral<"product_carousel">;
226
+ binding: z.ZodObject<{
227
+ kind: z.ZodLiteral<"products">;
228
+ selection: z.ZodDiscriminatedUnion<[z.ZodObject<{
229
+ mode: z.ZodLiteral<"handpicked">;
230
+ ids: z.ZodArray<z.ZodString>;
231
+ }, z.core.$strip>, z.ZodObject<{
232
+ mode: z.ZodLiteral<"collection">;
233
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
234
+ form: z.ZodLiteral<"literal">;
235
+ id: z.ZodString;
236
+ }, z.core.$strip>, z.ZodObject<{
237
+ form: z.ZodLiteral<"subject">;
238
+ }, z.core.$strip>], "form">;
239
+ limit: z.ZodNumber;
240
+ sort: z.ZodEnum<{
241
+ collection_default: "collection_default";
242
+ best_selling: "best_selling";
243
+ newest: "newest";
244
+ price_asc: "price_asc";
245
+ price_desc: "price_desc";
246
+ title: "title";
247
+ }>;
248
+ }, z.core.$strip>], "mode">;
249
+ }, z.core.$strip>;
250
+ props: z.ZodObject<{
251
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
252
+ }, z.core.$strip>;
253
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
254
+ }, z.core.$strip>;
255
+ export declare const productGridBlockSchema: z.ZodObject<{
256
+ id: z.ZodString;
257
+ type: z.ZodLiteral<"product_grid">;
258
+ binding: z.ZodObject<{
259
+ kind: z.ZodLiteral<"products">;
260
+ selection: z.ZodDiscriminatedUnion<[z.ZodObject<{
261
+ mode: z.ZodLiteral<"handpicked">;
262
+ ids: z.ZodArray<z.ZodString>;
263
+ }, z.core.$strip>, z.ZodObject<{
264
+ mode: z.ZodLiteral<"collection">;
265
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
266
+ form: z.ZodLiteral<"literal">;
267
+ id: z.ZodString;
268
+ }, z.core.$strip>, z.ZodObject<{
269
+ form: z.ZodLiteral<"subject">;
270
+ }, z.core.$strip>], "form">;
271
+ limit: z.ZodNumber;
272
+ sort: z.ZodEnum<{
273
+ collection_default: "collection_default";
274
+ best_selling: "best_selling";
275
+ newest: "newest";
276
+ price_asc: "price_asc";
277
+ price_desc: "price_desc";
278
+ title: "title";
279
+ }>;
280
+ }, z.core.$strip>], "mode">;
281
+ }, z.core.$strip>;
282
+ props: z.ZodObject<{
283
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
284
+ columns: z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>]>;
285
+ }, z.core.$strip>;
286
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
287
+ }, z.core.$strip>;
288
+ export declare const productListBlockSchema: z.ZodObject<{
289
+ id: z.ZodString;
290
+ type: z.ZodLiteral<"product_list">;
291
+ binding: z.ZodObject<{
292
+ kind: z.ZodLiteral<"products">;
293
+ selection: z.ZodDiscriminatedUnion<[z.ZodObject<{
294
+ mode: z.ZodLiteral<"handpicked">;
295
+ ids: z.ZodArray<z.ZodString>;
296
+ }, z.core.$strip>, z.ZodObject<{
297
+ mode: z.ZodLiteral<"collection">;
298
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
299
+ form: z.ZodLiteral<"literal">;
300
+ id: z.ZodString;
301
+ }, z.core.$strip>, z.ZodObject<{
302
+ form: z.ZodLiteral<"subject">;
303
+ }, z.core.$strip>], "form">;
304
+ limit: z.ZodNumber;
305
+ sort: z.ZodEnum<{
306
+ collection_default: "collection_default";
307
+ best_selling: "best_selling";
308
+ newest: "newest";
309
+ price_asc: "price_asc";
310
+ price_desc: "price_desc";
311
+ title: "title";
312
+ }>;
313
+ }, z.core.$strip>], "mode">;
314
+ }, z.core.$strip>;
315
+ props: z.ZodObject<{
316
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
317
+ }, z.core.$strip>;
318
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
319
+ }, z.core.$strip>;
320
+ export declare const collectionCirclesBlockSchema: z.ZodObject<{
321
+ id: z.ZodString;
322
+ type: z.ZodLiteral<"collection_circles">;
323
+ binding: z.ZodObject<{
324
+ kind: z.ZodLiteral<"collections">;
325
+ ids: z.ZodArray<z.ZodString>;
326
+ }, z.core.$strip>;
327
+ props: z.ZodObject<{
328
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
329
+ }, z.core.$strip>;
330
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
331
+ }, z.core.$strip>;
332
+ export declare const collectionGridBlockSchema: z.ZodObject<{
333
+ id: z.ZodString;
334
+ type: z.ZodLiteral<"collection_grid">;
335
+ binding: z.ZodObject<{
336
+ kind: z.ZodLiteral<"collections">;
337
+ ids: z.ZodArray<z.ZodString>;
338
+ }, z.core.$strip>;
339
+ props: z.ZodObject<{
340
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
341
+ columns: z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>]>;
342
+ }, z.core.$strip>;
343
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
344
+ }, z.core.$strip>;
345
+ export declare const collectionRowBlockSchema: z.ZodObject<{
346
+ id: z.ZodString;
347
+ type: z.ZodLiteral<"collection_row">;
348
+ binding: z.ZodObject<{
349
+ kind: z.ZodLiteral<"collections">;
350
+ ids: z.ZodArray<z.ZodString>;
351
+ }, z.core.$strip>;
352
+ props: z.ZodObject<{
353
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
354
+ }, z.core.$strip>;
355
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
356
+ }, z.core.$strip>;
357
+ export declare const productGalleryBlockSchema: z.ZodObject<{
358
+ id: z.ZodString;
359
+ type: z.ZodLiteral<"product_gallery">;
360
+ binding: z.ZodObject<{
361
+ kind: z.ZodLiteral<"product">;
362
+ target: z.ZodObject<{
363
+ form: z.ZodLiteral<"subject">;
364
+ }, z.core.$strip>;
365
+ }, z.core.$strip>;
366
+ props: z.ZodObject<{}, z.core.$strip>;
367
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
368
+ }, z.core.$strip>;
369
+ export declare const productSummaryBlockSchema: z.ZodObject<{
370
+ id: z.ZodString;
371
+ type: z.ZodLiteral<"product_summary">;
372
+ binding: z.ZodObject<{
373
+ kind: z.ZodLiteral<"product">;
374
+ target: z.ZodObject<{
375
+ form: z.ZodLiteral<"subject">;
376
+ }, z.core.$strip>;
377
+ }, z.core.$strip>;
378
+ props: z.ZodObject<{}, z.core.$strip>;
379
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
380
+ }, z.core.$strip>;
381
+ /**
382
+ * The two buying blocks (variant_picker, add_to_cart) carry strict props —
383
+ * unlike the other welded slots, a wiring attempt fails loudly instead of
384
+ * being stripped. Capabilities are code, never document content.
385
+ */
386
+ export declare const variantPickerBlockSchema: z.ZodObject<{
387
+ id: z.ZodString;
388
+ type: z.ZodLiteral<"variant_picker">;
389
+ binding: z.ZodObject<{
390
+ kind: z.ZodLiteral<"product">;
391
+ target: z.ZodObject<{
392
+ form: z.ZodLiteral<"subject">;
393
+ }, z.core.$strip>;
394
+ }, z.core.$strip>;
395
+ props: z.ZodObject<{
396
+ presentation: z.ZodOptional<z.ZodEnum<{
397
+ chips: "chips";
398
+ dropdown: "dropdown";
399
+ }>>;
400
+ }, z.core.$strict>;
401
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
402
+ }, z.core.$strip>;
403
+ export declare const addToCartBlockSchema: z.ZodObject<{
404
+ id: z.ZodString;
405
+ type: z.ZodLiteral<"add_to_cart">;
406
+ binding: z.ZodObject<{
407
+ kind: z.ZodLiteral<"product">;
408
+ target: z.ZodObject<{
409
+ form: z.ZodLiteral<"subject">;
410
+ }, z.core.$strip>;
411
+ }, z.core.$strip>;
412
+ props: z.ZodObject<{
413
+ label: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
414
+ }, z.core.$strict>;
415
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
416
+ }, z.core.$strip>;
417
+ export declare const productSpecsBlockSchema: z.ZodObject<{
418
+ id: z.ZodString;
419
+ type: z.ZodLiteral<"product_specs">;
420
+ binding: z.ZodObject<{
421
+ kind: z.ZodLiteral<"product">;
422
+ target: z.ZodObject<{
423
+ form: z.ZodLiteral<"subject">;
424
+ }, z.core.$strip>;
425
+ }, z.core.$strip>;
426
+ props: z.ZodObject<{}, z.core.$strip>;
427
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
428
+ }, z.core.$strip>;
429
+ export declare const reviewsSlotBlockSchema: z.ZodObject<{
430
+ id: z.ZodString;
431
+ type: z.ZodLiteral<"reviews_slot">;
432
+ binding: z.ZodObject<{
433
+ kind: z.ZodLiteral<"product">;
434
+ target: z.ZodObject<{
435
+ form: z.ZodLiteral<"subject">;
436
+ }, z.core.$strip>;
437
+ }, z.core.$strip>;
438
+ props: z.ZodObject<{}, z.core.$strip>;
439
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
440
+ }, z.core.$strip>;
441
+ export declare const BLOCK_TYPES: readonly ["text", "image", "button", "spacer", "divider", "section_header", "search_bar", "video", "hero_banner", "promo_banner", "announcement_bar", "countdown", "feature_strip", "product_card", "product_carousel", "product_grid", "product_list", "collection_circles", "collection_grid", "collection_row", "product_gallery", "product_summary", "variant_picker", "add_to_cart", "product_specs", "reviews_slot"];
442
+ export type BlockType = (typeof BLOCK_TYPES)[number];
443
+ export declare const KNOWN_BLOCK_SCHEMAS: {
444
+ readonly text: z.ZodObject<{
445
+ id: z.ZodString;
446
+ type: z.ZodLiteral<"text">;
447
+ props: z.ZodObject<{
448
+ text: z.ZodRecord<z.ZodString, z.ZodString>;
449
+ size: z.ZodOptional<z.ZodEnum<{
450
+ sm: "sm";
451
+ md: "md";
452
+ lg: "lg";
453
+ xl: "xl";
454
+ }>>;
455
+ weight: z.ZodOptional<z.ZodEnum<{
456
+ regular: "regular";
457
+ medium: "medium";
458
+ bold: "bold";
459
+ }>>;
460
+ align: z.ZodOptional<z.ZodEnum<{
461
+ start: "start";
462
+ center: "center";
463
+ end: "end";
464
+ }>>;
465
+ }, z.core.$strip>;
466
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
467
+ }, z.core.$strip>;
468
+ readonly image: z.ZodObject<{
469
+ id: z.ZodString;
470
+ type: z.ZodLiteral<"image">;
471
+ props: z.ZodObject<{
472
+ image: z.ZodOptional<z.ZodObject<{
473
+ assetId: z.ZodUUID;
474
+ alt: z.ZodRecord<z.ZodString, z.ZodString>;
475
+ }, z.core.$strip>>;
476
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
477
+ type: z.ZodLiteral<"open_screen">;
478
+ screenId: z.ZodUUID;
479
+ }, z.core.$strip>, z.ZodObject<{
480
+ type: z.ZodLiteral<"open_cart">;
481
+ }, z.core.$strip>, z.ZodObject<{
482
+ type: z.ZodLiteral<"open_url">;
483
+ url: z.ZodURL;
484
+ }, z.core.$strip>, z.ZodObject<{
485
+ type: z.ZodLiteral<"none">;
486
+ }, z.core.$strip>], "type">;
487
+ }, z.core.$strip>;
488
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
489
+ }, z.core.$strip>;
490
+ readonly button: z.ZodObject<{
491
+ id: z.ZodString;
492
+ type: z.ZodLiteral<"button">;
493
+ props: z.ZodObject<{
494
+ label: z.ZodRecord<z.ZodString, z.ZodString>;
495
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
496
+ type: z.ZodLiteral<"open_screen">;
497
+ screenId: z.ZodUUID;
498
+ }, z.core.$strip>, z.ZodObject<{
499
+ type: z.ZodLiteral<"open_cart">;
500
+ }, z.core.$strip>, z.ZodObject<{
501
+ type: z.ZodLiteral<"open_url">;
502
+ url: z.ZodURL;
503
+ }, z.core.$strip>, z.ZodObject<{
504
+ type: z.ZodLiteral<"none">;
505
+ }, z.core.$strip>], "type">;
506
+ }, z.core.$strip>;
507
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
508
+ }, z.core.$strip>;
509
+ readonly spacer: z.ZodObject<{
510
+ id: z.ZodString;
511
+ type: z.ZodLiteral<"spacer">;
512
+ props: z.ZodObject<{
513
+ size: z.ZodEnum<{
514
+ sm: "sm";
515
+ md: "md";
516
+ lg: "lg";
517
+ xl: "xl";
518
+ xs: "xs";
519
+ }>;
520
+ }, z.core.$strip>;
521
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
522
+ }, z.core.$strip>;
523
+ readonly divider: z.ZodObject<{
524
+ id: z.ZodString;
525
+ type: z.ZodLiteral<"divider">;
526
+ props: z.ZodObject<{
527
+ label: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
528
+ }, z.core.$strip>;
529
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
530
+ }, z.core.$strip>;
531
+ readonly section_header: z.ZodObject<{
532
+ id: z.ZodString;
533
+ type: z.ZodLiteral<"section_header">;
534
+ props: z.ZodObject<{
535
+ title: z.ZodRecord<z.ZodString, z.ZodString>;
536
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
537
+ type: z.ZodLiteral<"open_screen">;
538
+ screenId: z.ZodUUID;
539
+ }, z.core.$strip>, z.ZodObject<{
540
+ type: z.ZodLiteral<"open_cart">;
541
+ }, z.core.$strip>, z.ZodObject<{
542
+ type: z.ZodLiteral<"open_url">;
543
+ url: z.ZodURL;
544
+ }, z.core.$strip>, z.ZodObject<{
545
+ type: z.ZodLiteral<"none">;
546
+ }, z.core.$strip>], "type">;
547
+ }, z.core.$strip>;
548
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
549
+ }, z.core.$strip>;
550
+ readonly search_bar: z.ZodObject<{
551
+ id: z.ZodString;
552
+ type: z.ZodLiteral<"search_bar">;
553
+ props: z.ZodObject<{
554
+ placeholder: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
555
+ }, z.core.$strip>;
556
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
557
+ }, z.core.$strip>;
558
+ readonly video: z.ZodObject<{
559
+ id: z.ZodString;
560
+ type: z.ZodLiteral<"video">;
561
+ props: z.ZodObject<{
562
+ assetId: z.ZodOptional<z.ZodUUID>;
563
+ poster: z.ZodOptional<z.ZodObject<{
564
+ assetId: z.ZodUUID;
565
+ alt: z.ZodRecord<z.ZodString, z.ZodString>;
566
+ }, z.core.$strip>>;
567
+ }, z.core.$strip>;
568
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
569
+ }, z.core.$strip>;
570
+ readonly hero_banner: z.ZodObject<{
571
+ id: z.ZodString;
572
+ type: z.ZodLiteral<"hero_banner">;
573
+ props: z.ZodObject<{
574
+ title: z.ZodRecord<z.ZodString, z.ZodString>;
575
+ subtitle: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
576
+ image: z.ZodOptional<z.ZodObject<{
577
+ assetId: z.ZodUUID;
578
+ alt: z.ZodRecord<z.ZodString, z.ZodString>;
579
+ }, z.core.$strip>>;
580
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
581
+ type: z.ZodLiteral<"open_screen">;
582
+ screenId: z.ZodUUID;
583
+ }, z.core.$strip>, z.ZodObject<{
584
+ type: z.ZodLiteral<"open_cart">;
585
+ }, z.core.$strip>, z.ZodObject<{
586
+ type: z.ZodLiteral<"open_url">;
587
+ url: z.ZodURL;
588
+ }, z.core.$strip>, z.ZodObject<{
589
+ type: z.ZodLiteral<"none">;
590
+ }, z.core.$strip>], "type">;
591
+ }, z.core.$strip>;
592
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
593
+ }, z.core.$strip>;
594
+ readonly promo_banner: z.ZodObject<{
595
+ id: z.ZodString;
596
+ type: z.ZodLiteral<"promo_banner">;
597
+ props: z.ZodObject<{
598
+ image: z.ZodOptional<z.ZodObject<{
599
+ assetId: z.ZodUUID;
600
+ alt: z.ZodRecord<z.ZodString, z.ZodString>;
601
+ }, z.core.$strip>>;
602
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
603
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
604
+ type: z.ZodLiteral<"open_screen">;
605
+ screenId: z.ZodUUID;
606
+ }, z.core.$strip>, z.ZodObject<{
607
+ type: z.ZodLiteral<"open_cart">;
608
+ }, z.core.$strip>, z.ZodObject<{
609
+ type: z.ZodLiteral<"open_url">;
610
+ url: z.ZodURL;
611
+ }, z.core.$strip>, z.ZodObject<{
612
+ type: z.ZodLiteral<"none">;
613
+ }, z.core.$strip>], "type">;
614
+ }, z.core.$strip>;
615
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
616
+ }, z.core.$strip>;
617
+ readonly announcement_bar: z.ZodObject<{
618
+ id: z.ZodString;
619
+ type: z.ZodLiteral<"announcement_bar">;
620
+ props: z.ZodObject<{
621
+ text: z.ZodRecord<z.ZodString, z.ZodString>;
622
+ }, z.core.$strip>;
623
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
624
+ }, z.core.$strip>;
625
+ readonly countdown: z.ZodObject<{
626
+ id: z.ZodString;
627
+ type: z.ZodLiteral<"countdown">;
628
+ props: z.ZodObject<{
629
+ endsAt: z.ZodISODateTime;
630
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
631
+ }, z.core.$strip>;
632
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
633
+ }, z.core.$strip>;
634
+ readonly feature_strip: z.ZodObject<{
635
+ id: z.ZodString;
636
+ type: z.ZodLiteral<"feature_strip">;
637
+ props: z.ZodObject<{
638
+ items: z.ZodArray<z.ZodObject<{
639
+ icon: z.ZodString;
640
+ label: z.ZodRecord<z.ZodString, z.ZodString>;
641
+ }, z.core.$strip>>;
642
+ }, z.core.$strip>;
643
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
644
+ }, z.core.$strip>;
645
+ readonly product_card: z.ZodObject<{
646
+ id: z.ZodString;
647
+ type: z.ZodLiteral<"product_card">;
648
+ binding: z.ZodObject<{
649
+ kind: z.ZodLiteral<"product">;
650
+ target: z.ZodObject<{
651
+ form: z.ZodLiteral<"literal">;
652
+ id: z.ZodString;
653
+ }, z.core.$strip>;
654
+ }, z.core.$strip>;
655
+ props: z.ZodObject<{
656
+ layout: z.ZodOptional<z.ZodEnum<{
657
+ standard: "standard";
658
+ compact: "compact";
659
+ }>>;
660
+ }, z.core.$strip>;
661
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
662
+ }, z.core.$strip>;
663
+ readonly product_carousel: z.ZodObject<{
664
+ id: z.ZodString;
665
+ type: z.ZodLiteral<"product_carousel">;
666
+ binding: z.ZodObject<{
667
+ kind: z.ZodLiteral<"products">;
668
+ selection: z.ZodDiscriminatedUnion<[z.ZodObject<{
669
+ mode: z.ZodLiteral<"handpicked">;
670
+ ids: z.ZodArray<z.ZodString>;
671
+ }, z.core.$strip>, z.ZodObject<{
672
+ mode: z.ZodLiteral<"collection">;
673
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
674
+ form: z.ZodLiteral<"literal">;
675
+ id: z.ZodString;
676
+ }, z.core.$strip>, z.ZodObject<{
677
+ form: z.ZodLiteral<"subject">;
678
+ }, z.core.$strip>], "form">;
679
+ limit: z.ZodNumber;
680
+ sort: z.ZodEnum<{
681
+ collection_default: "collection_default";
682
+ best_selling: "best_selling";
683
+ newest: "newest";
684
+ price_asc: "price_asc";
685
+ price_desc: "price_desc";
686
+ title: "title";
687
+ }>;
688
+ }, z.core.$strip>], "mode">;
689
+ }, z.core.$strip>;
690
+ props: z.ZodObject<{
691
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
692
+ }, z.core.$strip>;
693
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
694
+ }, z.core.$strip>;
695
+ readonly product_grid: z.ZodObject<{
696
+ id: z.ZodString;
697
+ type: z.ZodLiteral<"product_grid">;
698
+ binding: z.ZodObject<{
699
+ kind: z.ZodLiteral<"products">;
700
+ selection: z.ZodDiscriminatedUnion<[z.ZodObject<{
701
+ mode: z.ZodLiteral<"handpicked">;
702
+ ids: z.ZodArray<z.ZodString>;
703
+ }, z.core.$strip>, z.ZodObject<{
704
+ mode: z.ZodLiteral<"collection">;
705
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
706
+ form: z.ZodLiteral<"literal">;
707
+ id: z.ZodString;
708
+ }, z.core.$strip>, z.ZodObject<{
709
+ form: z.ZodLiteral<"subject">;
710
+ }, z.core.$strip>], "form">;
711
+ limit: z.ZodNumber;
712
+ sort: z.ZodEnum<{
713
+ collection_default: "collection_default";
714
+ best_selling: "best_selling";
715
+ newest: "newest";
716
+ price_asc: "price_asc";
717
+ price_desc: "price_desc";
718
+ title: "title";
719
+ }>;
720
+ }, z.core.$strip>], "mode">;
721
+ }, z.core.$strip>;
722
+ props: z.ZodObject<{
723
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
724
+ columns: z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>]>;
725
+ }, z.core.$strip>;
726
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
727
+ }, z.core.$strip>;
728
+ readonly product_list: z.ZodObject<{
729
+ id: z.ZodString;
730
+ type: z.ZodLiteral<"product_list">;
731
+ binding: z.ZodObject<{
732
+ kind: z.ZodLiteral<"products">;
733
+ selection: z.ZodDiscriminatedUnion<[z.ZodObject<{
734
+ mode: z.ZodLiteral<"handpicked">;
735
+ ids: z.ZodArray<z.ZodString>;
736
+ }, z.core.$strip>, z.ZodObject<{
737
+ mode: z.ZodLiteral<"collection">;
738
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
739
+ form: z.ZodLiteral<"literal">;
740
+ id: z.ZodString;
741
+ }, z.core.$strip>, z.ZodObject<{
742
+ form: z.ZodLiteral<"subject">;
743
+ }, z.core.$strip>], "form">;
744
+ limit: z.ZodNumber;
745
+ sort: z.ZodEnum<{
746
+ collection_default: "collection_default";
747
+ best_selling: "best_selling";
748
+ newest: "newest";
749
+ price_asc: "price_asc";
750
+ price_desc: "price_desc";
751
+ title: "title";
752
+ }>;
753
+ }, z.core.$strip>], "mode">;
754
+ }, z.core.$strip>;
755
+ props: z.ZodObject<{
756
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
757
+ }, z.core.$strip>;
758
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
759
+ }, z.core.$strip>;
760
+ readonly collection_circles: z.ZodObject<{
761
+ id: z.ZodString;
762
+ type: z.ZodLiteral<"collection_circles">;
763
+ binding: z.ZodObject<{
764
+ kind: z.ZodLiteral<"collections">;
765
+ ids: z.ZodArray<z.ZodString>;
766
+ }, z.core.$strip>;
767
+ props: z.ZodObject<{
768
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
769
+ }, z.core.$strip>;
770
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
771
+ }, z.core.$strip>;
772
+ readonly collection_grid: z.ZodObject<{
773
+ id: z.ZodString;
774
+ type: z.ZodLiteral<"collection_grid">;
775
+ binding: z.ZodObject<{
776
+ kind: z.ZodLiteral<"collections">;
777
+ ids: z.ZodArray<z.ZodString>;
778
+ }, z.core.$strip>;
779
+ props: z.ZodObject<{
780
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
781
+ columns: z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>]>;
782
+ }, z.core.$strip>;
783
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
784
+ }, z.core.$strip>;
785
+ readonly collection_row: z.ZodObject<{
786
+ id: z.ZodString;
787
+ type: z.ZodLiteral<"collection_row">;
788
+ binding: z.ZodObject<{
789
+ kind: z.ZodLiteral<"collections">;
790
+ ids: z.ZodArray<z.ZodString>;
791
+ }, z.core.$strip>;
792
+ props: z.ZodObject<{
793
+ title: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
794
+ }, z.core.$strip>;
795
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
796
+ }, z.core.$strip>;
797
+ readonly product_gallery: z.ZodObject<{
798
+ id: z.ZodString;
799
+ type: z.ZodLiteral<"product_gallery">;
800
+ binding: z.ZodObject<{
801
+ kind: z.ZodLiteral<"product">;
802
+ target: z.ZodObject<{
803
+ form: z.ZodLiteral<"subject">;
804
+ }, z.core.$strip>;
805
+ }, z.core.$strip>;
806
+ props: z.ZodObject<{}, z.core.$strip>;
807
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
808
+ }, z.core.$strip>;
809
+ readonly product_summary: z.ZodObject<{
810
+ id: z.ZodString;
811
+ type: z.ZodLiteral<"product_summary">;
812
+ binding: z.ZodObject<{
813
+ kind: z.ZodLiteral<"product">;
814
+ target: z.ZodObject<{
815
+ form: z.ZodLiteral<"subject">;
816
+ }, z.core.$strip>;
817
+ }, z.core.$strip>;
818
+ props: z.ZodObject<{}, z.core.$strip>;
819
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
820
+ }, z.core.$strip>;
821
+ readonly variant_picker: z.ZodObject<{
822
+ id: z.ZodString;
823
+ type: z.ZodLiteral<"variant_picker">;
824
+ binding: z.ZodObject<{
825
+ kind: z.ZodLiteral<"product">;
826
+ target: z.ZodObject<{
827
+ form: z.ZodLiteral<"subject">;
828
+ }, z.core.$strip>;
829
+ }, z.core.$strip>;
830
+ props: z.ZodObject<{
831
+ presentation: z.ZodOptional<z.ZodEnum<{
832
+ chips: "chips";
833
+ dropdown: "dropdown";
834
+ }>>;
835
+ }, z.core.$strict>;
836
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
837
+ }, z.core.$strip>;
838
+ readonly add_to_cart: z.ZodObject<{
839
+ id: z.ZodString;
840
+ type: z.ZodLiteral<"add_to_cart">;
841
+ binding: z.ZodObject<{
842
+ kind: z.ZodLiteral<"product">;
843
+ target: z.ZodObject<{
844
+ form: z.ZodLiteral<"subject">;
845
+ }, z.core.$strip>;
846
+ }, z.core.$strip>;
847
+ props: z.ZodObject<{
848
+ label: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
849
+ }, z.core.$strict>;
850
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
851
+ }, z.core.$strip>;
852
+ readonly product_specs: z.ZodObject<{
853
+ id: z.ZodString;
854
+ type: z.ZodLiteral<"product_specs">;
855
+ binding: z.ZodObject<{
856
+ kind: z.ZodLiteral<"product">;
857
+ target: z.ZodObject<{
858
+ form: z.ZodLiteral<"subject">;
859
+ }, z.core.$strip>;
860
+ }, z.core.$strip>;
861
+ props: z.ZodObject<{}, z.core.$strip>;
862
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
863
+ }, z.core.$strip>;
864
+ readonly reviews_slot: z.ZodObject<{
865
+ id: z.ZodString;
866
+ type: z.ZodLiteral<"reviews_slot">;
867
+ binding: z.ZodObject<{
868
+ kind: z.ZodLiteral<"product">;
869
+ target: z.ZodObject<{
870
+ form: z.ZodLiteral<"subject">;
871
+ }, z.core.$strip>;
872
+ }, z.core.$strip>;
873
+ props: z.ZodObject<{}, z.core.$strip>;
874
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
875
+ }, z.core.$strip>;
876
+ };
877
+ export type TextBlock = z.infer<typeof textBlockSchema>;
878
+ export type ImageBlock = z.infer<typeof imageBlockSchema>;
879
+ export type ButtonBlock = z.infer<typeof buttonBlockSchema>;
880
+ export type SpacerBlock = z.infer<typeof spacerBlockSchema>;
881
+ export type DividerBlock = z.infer<typeof dividerBlockSchema>;
882
+ export type SectionHeaderBlock = z.infer<typeof sectionHeaderBlockSchema>;
883
+ export type SearchBarBlock = z.infer<typeof searchBarBlockSchema>;
884
+ export type VideoBlock = z.infer<typeof videoBlockSchema>;
885
+ export type HeroBannerBlock = z.infer<typeof heroBannerBlockSchema>;
886
+ export type PromoBannerBlock = z.infer<typeof promoBannerBlockSchema>;
887
+ export type AnnouncementBarBlock = z.infer<typeof announcementBarBlockSchema>;
888
+ export type CountdownBlock = z.infer<typeof countdownBlockSchema>;
889
+ export type FeatureStripBlock = z.infer<typeof featureStripBlockSchema>;
890
+ export type ProductCardBlock = z.infer<typeof productCardBlockSchema>;
891
+ export type ProductCarouselBlock = z.infer<typeof productCarouselBlockSchema>;
892
+ export type ProductGridBlock = z.infer<typeof productGridBlockSchema>;
893
+ export type ProductListBlock = z.infer<typeof productListBlockSchema>;
894
+ export type CollectionCirclesBlock = z.infer<typeof collectionCirclesBlockSchema>;
895
+ export type CollectionGridBlock = z.infer<typeof collectionGridBlockSchema>;
896
+ export type CollectionRowBlock = z.infer<typeof collectionRowBlockSchema>;
897
+ export type ProductGalleryBlock = z.infer<typeof productGalleryBlockSchema>;
898
+ export type ProductSummaryBlock = z.infer<typeof productSummaryBlockSchema>;
899
+ export type VariantPickerBlock = z.infer<typeof variantPickerBlockSchema>;
900
+ export type AddToCartBlock = z.infer<typeof addToCartBlockSchema>;
901
+ export type ProductSpecsBlock = z.infer<typeof productSpecsBlockSchema>;
902
+ export type ReviewsSlotBlock = z.infer<typeof reviewsSlotBlockSchema>;
903
+ export type KnownBlock = TextBlock | ImageBlock | ButtonBlock | SpacerBlock | DividerBlock | SectionHeaderBlock | SearchBarBlock | VideoBlock | HeroBannerBlock | PromoBannerBlock | AnnouncementBarBlock | CountdownBlock | FeatureStripBlock | ProductCardBlock | ProductCarouselBlock | ProductGridBlock | ProductListBlock | CollectionCirclesBlock | CollectionGridBlock | CollectionRowBlock | ProductGalleryBlock | ProductSummaryBlock | VariantPickerBlock | AddToCartBlock | ProductSpecsBlock | ReviewsSlotBlock;
904
+ /**
905
+ * A block whose type this schema version does not know: a newer platform
906
+ * type, or a Shop's own. It parses and keeps its content so renderers can
907
+ * skip it and re-serialization loses nothing — the permanent no-crash
908
+ * guarantee for additive versioning. Only the id's grammar is held here.
909
+ */
910
+ declare const unknownBlockSchema: z.ZodObject<{
911
+ id: z.ZodString;
912
+ type: z.ZodString;
913
+ }, z.core.$loose>;
914
+ export type UnknownBlock = z.infer<typeof unknownBlockSchema>;
915
+ export type Block = KnownBlock | UnknownBlock;
916
+ /**
917
+ * Known types parse strictly; unknown types fall back to the tolerant shape.
918
+ * A malformed known block never slips through as "unknown".
919
+ */
920
+ export declare const blockSchema: z.ZodType<Block, unknown>;
921
+ export {};
922
+ //# sourceMappingURL=blocks.d.ts.map