@wise/dynamic-flow-types 3.3.5 → 3.5.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.
@@ -2,56 +2,114 @@
2
2
  import { z } from 'zod';
3
3
  import type {
4
4
  JsonElement,
5
- ArraySchemaList,
5
+ Step,
6
6
  Schema,
7
- PersistAsync,
8
- AlertLayout,
9
- IntegerSchema,
10
- AllOfSchema,
7
+ Layout,
8
+ Polling,
9
+ LinkHandler,
10
+ AdditionalInfo,
11
+ Behavior,
11
12
  ConstSchema,
13
+ AlertLayout,
14
+ BooleanSchema,
15
+ PersistAsync,
12
16
  ArraySchema,
17
+ ArraySchemaList,
13
18
  ArraySchemaTuple,
14
- ObjectSchema,
15
19
  StringSchema,
16
- OneOfSchema,
17
20
  BlobSchema,
21
+ AllOfSchema,
22
+ IntegerSchema,
18
23
  NumberSchema,
19
- BooleanSchema,
20
- ModalResponseBody,
21
- Layout,
24
+ ObjectSchema,
25
+ OneOfSchema,
26
+ PollingOnError,
27
+ ModalBehavior,
28
+ ModalLayoutContent,
22
29
  ListLayoutItem,
23
- AdditionalInfo,
24
30
  StatusListLayoutItem,
25
31
  ItemCallToAction,
26
- AlertLayoutCallToAction,
27
- Behavior,
28
- BoxLayout,
29
32
  DecisionLayout,
30
33
  DecisionLayoutOption,
31
- ColumnsLayout,
32
- ListLayout,
33
- ListLayoutCallToAction,
34
34
  ReviewLayoutCallToAction,
35
- StatusListLayout,
36
35
  ModalLayout,
37
- ModalLayoutContent,
38
- ReviewLayout,
36
+ StatusListLayout,
39
37
  ReviewLayoutField,
38
+ SectionLayoutCallToAction,
39
+ AlertLayoutCallToAction,
40
+ ListLayoutCallToAction,
41
+ SectionLayout,
40
42
  ButtonLayout,
41
- Step,
42
- Polling,
43
- LinkHandler,
44
- ModalBehavior,
45
- PollingOnError,
43
+ ReviewLayout,
44
+ ColumnsLayout,
45
+ BoxLayout,
46
+ ListLayout,
47
+ ModalResponseBody,
46
48
  } from '../next';
47
49
 
48
- export const stringSchemaFormatSchema = z.union([
49
- z.literal('date'),
50
- z.literal('email'),
51
- z.literal('numeric'),
52
- z.literal('password'),
53
- z.literal('phone-number'),
54
- z.literal('base64url'),
50
+ export const jsonElementSchema: z.ZodSchema<JsonElement> = z.lazy(() =>
51
+ z
52
+ .union([
53
+ z.string(),
54
+ z.number(),
55
+ z.boolean(),
56
+ z.record(jsonElementSchema),
57
+ z.array(jsonElementSchema),
58
+ ])
59
+ .nullable(),
60
+ );
61
+
62
+ export const externalSchema = z.object({
63
+ url: z.string(),
64
+ });
65
+
66
+ export const stepErrorSchema = z.object({
67
+ error: z.string().optional(),
68
+ validation: jsonElementSchema.optional(),
69
+ });
70
+
71
+ export const iconNamedSchema = z.object({
72
+ name: z.string(),
73
+ });
74
+
75
+ export const iconTextSchema = z.object({
76
+ text: z.string(),
77
+ });
78
+
79
+ export const contextSchema = z.union([
80
+ z.literal('positive'),
81
+ z.literal('neutral'),
82
+ z.literal('warning'),
83
+ z.literal('negative'),
84
+ z.literal('success'),
85
+ z.literal('failure'),
86
+ z.literal('info'),
87
+ z.literal('primary'),
88
+ ]);
89
+
90
+ export const alignSchema = z.union([z.literal('left'), z.literal('center'), z.literal('right')]);
91
+
92
+ export const httpMethodSchema = z.union([
93
+ z.literal('GET'),
94
+ z.literal('POST'),
95
+ z.literal('PUT'),
96
+ z.literal('PATCH'),
97
+ z.literal('DELETE'),
98
+ ]);
99
+
100
+ export const sizeSchema = z.union([
101
+ z.literal('xs'),
102
+ z.literal('sm'),
103
+ z.literal('md'),
104
+ z.literal('lg'),
105
+ z.literal('xl'),
106
+ ]);
107
+
108
+ export const autocapitalizationTypeSchema = z.union([
109
+ z.literal('none'),
110
+ z.literal('characters'),
111
+ z.literal('sentences'),
112
+ z.literal('words'),
55
113
  ]);
56
114
 
57
115
  export const imageSchema = z.object({
@@ -61,13 +119,6 @@ export const imageSchema = z.object({
61
119
  accessibilityDescription: z.string().optional(),
62
120
  });
63
121
 
64
- export const summaryProviderSchema = z.object({
65
- providesTitle: z.boolean().optional(),
66
- providesDescription: z.boolean().optional(),
67
- providesIcon: z.boolean().optional(),
68
- providesImage: z.boolean().optional(),
69
- });
70
-
71
122
  export const autocompleteTokenSchema = z.union([
72
123
  z.literal('on'),
73
124
  z.literal('name'),
@@ -134,68 +185,91 @@ export const autocompleteTokenSchema = z.union([
134
185
  z.literal('pager'),
135
186
  ]);
136
187
 
188
+ export const supportingValuesSchema = z.object({
189
+ value: z.string().optional(),
190
+ subvalue: z.string().optional(),
191
+ });
192
+
193
+ export const inlineAlertSchema = z.object({
194
+ content: z.string(),
195
+ context: contextSchema.optional(),
196
+ });
197
+
198
+ export const summaryProviderSchema = z.object({
199
+ providesTitle: z.boolean().optional(),
200
+ providesDescription: z.boolean().optional(),
201
+ providesIcon: z.boolean().optional(),
202
+ providesImage: z.boolean().optional(),
203
+ });
204
+
205
+ export const validateAsyncSchema = z.object({
206
+ param: z.string(),
207
+ method: httpMethodSchema,
208
+ url: z.string(),
209
+ });
210
+
137
211
  export const helpSchema = z.object({
138
212
  markdown: z.string(),
139
213
  });
140
214
 
141
- export const jsonElementSchema: z.ZodSchema<JsonElement> = z.lazy(() =>
142
- z
143
- .union([
144
- z.string(),
145
- z.number(),
146
- z.boolean(),
147
- z.record(jsonElementSchema),
148
- z.array(jsonElementSchema),
149
- ])
150
- .nullable(),
151
- );
152
-
153
- export const autocapitalizationTypeSchema = z.union([
154
- z.literal('none'),
155
- z.literal('characters'),
156
- z.literal('sentences'),
157
- z.literal('words'),
215
+ export const stringSchemaFormatSchema = z.union([
216
+ z.literal('date'),
217
+ z.literal('email'),
218
+ z.literal('numeric'),
219
+ z.literal('password'),
220
+ z.literal('phone-number'),
221
+ z.literal('base64url'),
158
222
  ]);
159
223
 
160
224
  export const uploadSourceSchema = z.union([z.literal('camera'), z.literal('file')]);
161
225
 
162
- export const errorResponseBodySchema = z.object({
163
- refreshFormUrl: z.string().optional(),
164
- analytics: z.record(z.string()).optional(),
165
- error: z.string().optional(),
166
- validation: jsonElementSchema.optional(),
167
- refreshUrl: z.string().optional(),
226
+ export const linkBehaviorSchema = z.object({
227
+ type: z.literal('link'),
228
+ url: z.string(),
168
229
  });
169
230
 
170
- export const httpMethodSchema = z.union([
171
- z.literal('GET'),
172
- z.literal('POST'),
173
- z.literal('PUT'),
174
- z.literal('PATCH'),
175
- z.literal('DELETE'),
231
+ export const actionTypeSchema = z.union([
232
+ z.literal('primary'),
233
+ z.literal('secondary'),
234
+ z.literal('link'),
235
+ z.literal('positive'),
236
+ z.literal('negative'),
176
237
  ]);
177
238
 
178
- export const formLayoutSchemaReferenceSchema = z.object({
179
- $ref: z.string(),
239
+ export const linkSchema = z.object({
240
+ url: z.string(),
180
241
  });
181
242
 
182
- export const sizeSchema = z.union([
183
- z.literal('xs'),
184
- z.literal('sm'),
185
- z.literal('md'),
186
- z.literal('lg'),
187
- z.literal('xl'),
243
+ export const navigationStackBehaviorSchema = z.union([
244
+ z.literal('default'),
245
+ z.literal('remove-previous'),
246
+ z.literal('remove-all'),
247
+ z.literal('replace-current'),
188
248
  ]);
189
249
 
250
+ export const dismissBehaviorSchema = z.object({
251
+ type: z.literal('dismiss'),
252
+ });
253
+
254
+ export const refreshBehaviorSchema = z.object({
255
+ type: z.literal('refresh'),
256
+ });
257
+
190
258
  export const listLayoutStatusSchema = z.union([
191
259
  z.literal('warning'),
192
260
  z.literal('neutral'),
193
261
  z.literal('positive'),
194
262
  ]);
195
263
 
196
- export const supportingValuesSchema = z.object({
197
- value: z.string().optional(),
198
- subvalue: z.string().optional(),
264
+ export const modalLayoutTriggerSchema = z.object({
265
+ title: z.string(),
266
+ });
267
+
268
+ export const loadingIndicatorLayoutSchema = z.object({
269
+ type: z.literal('loading-indicator'),
270
+ size: sizeSchema.optional(),
271
+ control: z.string().optional(),
272
+ margin: sizeSchema.optional(),
199
273
  });
200
274
 
201
275
  export const statusListLayoutStatusSchema = z.union([
@@ -204,40 +278,25 @@ export const statusListLayoutStatusSchema = z.union([
204
278
  z.literal('done'),
205
279
  ]);
206
280
 
207
- export const columnsLayoutBiasSchema = z.union([
208
- z.literal('none'),
209
- z.literal('left'),
210
- z.literal('right'),
211
- ]);
212
-
213
- export const alignSchema = z.union([z.literal('left'), z.literal('center'), z.literal('right')]);
214
-
215
- export const contextSchema = z.union([
216
- z.literal('positive'),
217
- z.literal('neutral'),
218
- z.literal('warning'),
219
- z.literal('negative'),
220
- z.literal('success'),
221
- z.literal('failure'),
222
- z.literal('info'),
223
- z.literal('primary'),
224
- ]);
225
-
226
- export const markdownLayoutSchema = z.object({
227
- type: z.literal('markdown'),
228
- content: z.string(),
229
- align: alignSchema.optional(),
281
+ export const dividerLayoutSchema = z.object({
282
+ type: z.literal('divider'),
230
283
  control: z.string().optional(),
231
284
  margin: sizeSchema.optional(),
232
285
  });
233
286
 
234
- export const loadingIndicatorLayoutSchema = z.object({
235
- type: z.literal('loading-indicator'),
236
- size: sizeSchema.optional(),
287
+ export const headingLayoutSchema = z.object({
288
+ type: z.literal('heading'),
289
+ text: z.string(),
290
+ size: sizeSchema.optional(),
291
+ align: alignSchema.optional(),
237
292
  control: z.string().optional(),
238
293
  margin: sizeSchema.optional(),
239
294
  });
240
295
 
296
+ export const formLayoutSchemaReferenceSchema = z.object({
297
+ $ref: z.string(),
298
+ });
299
+
241
300
  export const imageLayoutSchema = z.object({
242
301
  type: z.literal('image'),
243
302
  text: z.string().optional(),
@@ -250,36 +309,34 @@ export const imageLayoutSchema = z.object({
250
309
  align: alignSchema.optional(),
251
310
  });
252
311
 
253
- export const headingLayoutSchema = z.object({
254
- type: z.literal('heading'),
312
+ export const columnsLayoutBiasSchema = z.union([
313
+ z.literal('none'),
314
+ z.literal('left'),
315
+ z.literal('right'),
316
+ ]);
317
+
318
+ export const instructionsLayoutItemSchema = z.object({
255
319
  text: z.string(),
256
- size: sizeSchema.optional(),
257
- align: alignSchema.optional(),
258
- control: z.string().optional(),
259
- margin: sizeSchema.optional(),
320
+ context: contextSchema,
321
+ tag: z.string().optional(),
260
322
  });
261
323
 
262
- export const searchLayoutSchema = z.object({
263
- type: z.literal('search'),
264
- title: z.string(),
265
- method: httpMethodSchema,
266
- url: z.string(),
267
- param: z.string(),
268
- emptyMessage: z.string().optional(),
324
+ export const markdownLayoutSchema = z.object({
325
+ type: z.literal('markdown'),
326
+ content: z.string(),
327
+ align: alignSchema.optional(),
269
328
  control: z.string().optional(),
270
329
  margin: sizeSchema.optional(),
271
330
  });
272
331
 
273
- export const dividerLayoutSchema = z.object({
274
- type: z.literal('divider'),
332
+ export const infoLayoutSchema = z.object({
333
+ type: z.literal('info'),
334
+ markdown: z.string(),
335
+ align: alignSchema.optional(),
275
336
  control: z.string().optional(),
276
337
  margin: sizeSchema.optional(),
277
338
  });
278
339
 
279
- export const modalLayoutTriggerSchema = z.object({
280
- title: z.string(),
281
- });
282
-
283
340
  export const paragraphLayoutSchema = z.object({
284
341
  type: z.literal('paragraph'),
285
342
  text: z.string(),
@@ -288,68 +345,38 @@ export const paragraphLayoutSchema = z.object({
288
345
  margin: sizeSchema.optional(),
289
346
  });
290
347
 
291
- export const iconNamedSchema = z.object({
292
- name: z.string(),
348
+ export const searchLayoutSchema = z.object({
349
+ type: z.literal('search'),
350
+ title: z.string(),
351
+ method: httpMethodSchema,
352
+ url: z.string(),
353
+ param: z.string(),
354
+ emptyMessage: z.string().optional(),
355
+ control: z.string().optional(),
356
+ margin: sizeSchema.optional(),
293
357
  });
294
358
 
295
- export const iconTextSchema = z.object({
296
- text: z.string(),
359
+ export const formLayoutSchema = z.object({
360
+ type: z.literal('form'),
361
+ schema: formLayoutSchemaReferenceSchema.optional(),
362
+ schemaId: z.string(),
363
+ control: z.string().optional(),
364
+ margin: sizeSchema.optional(),
297
365
  });
298
366
 
299
- export const externalSchema = z.object({
367
+ export const searchSearchRequestSchema = z.object({
300
368
  url: z.string(),
369
+ method: httpMethodSchema,
370
+ param: z.string(),
371
+ query: z.string(),
301
372
  });
302
373
 
303
- export const stepErrorSchema = z.object({
374
+ export const errorResponseBodySchema = z.object({
375
+ refreshFormUrl: z.string().optional(),
376
+ analytics: z.record(z.string()).optional(),
304
377
  error: z.string().optional(),
305
378
  validation: jsonElementSchema.optional(),
306
- });
307
-
308
- export const dismissBehaviorSchema = z.object({
309
- type: z.literal('dismiss'),
310
- });
311
-
312
- export const linkBehaviorSchema = z.object({
313
- type: z.literal('link'),
314
- url: z.string(),
315
- });
316
-
317
- export const navigationStackBehaviorSchema = z.union([
318
- z.literal('default'),
319
- z.literal('remove-previous'),
320
- z.literal('remove-all'),
321
- z.literal('replace-current'),
322
- ]);
323
-
324
- export const linkSchema = z.object({
325
- url: z.string(),
326
- });
327
-
328
- export const actionTypeSchema = z.union([
329
- z.literal('primary'),
330
- z.literal('secondary'),
331
- z.literal('link'),
332
- z.literal('positive'),
333
- z.literal('negative'),
334
- ]);
335
-
336
- export const iconSchema = z.union([iconNamedSchema, iconTextSchema]);
337
-
338
- export const summarySummariserSchema = z.object({
339
- defaultTitle: z.string().optional(),
340
- defaultDescription: z.string().optional(),
341
- defaultIcon: iconSchema.optional(),
342
- defaultImage: imageSchema.optional(),
343
- providesTitle: z.boolean().optional(),
344
- providesDescription: z.boolean().optional(),
345
- providesIcon: z.boolean().optional(),
346
- providesImage: z.boolean().optional(),
347
- });
348
-
349
- export const validateAsyncSchema = z.object({
350
- param: z.string(),
351
- method: httpMethodSchema,
352
- url: z.string(),
379
+ refreshUrl: z.string().optional(),
353
380
  });
354
381
 
355
382
  export const actionSchema = z.object({
@@ -368,66 +395,17 @@ export const actionSchema = z.object({
368
395
  skipValidation: z.boolean().optional(),
369
396
  });
370
397
 
371
- export const searchSearchRequestSchema = z.object({
372
- url: z.string(),
373
- method: httpMethodSchema,
374
- param: z.string(),
375
- query: z.string(),
376
- });
377
-
378
- export const searchResultActionSchema = z.object({
379
- type: z.literal('action'),
380
- title: z.string(),
381
- description: z.string().optional(),
382
- icon: iconSchema.optional(),
383
- image: imageSchema.optional(),
384
- value: actionSchema,
385
- });
386
-
387
- export const searchResultSearchSchema = z.object({
388
- type: z.literal('search'),
389
- title: z.string(),
390
- description: z.string().optional(),
391
- icon: iconSchema.optional(),
392
- image: imageSchema.optional(),
393
- value: searchSearchRequestSchema,
394
- });
395
-
396
- export const searchResultSchema = z.union([searchResultActionSchema, searchResultSearchSchema]);
397
-
398
- export const formLayoutSchema = z.object({
399
- type: z.literal('form'),
400
- schema: formLayoutSchemaReferenceSchema.optional(),
401
- schemaId: z.string(),
402
- control: z.string().optional(),
403
- margin: sizeSchema.optional(),
404
- });
405
-
406
- export const inlineAlertSchema = z.object({
407
- content: z.string(),
408
- context: contextSchema.optional(),
409
- });
410
-
411
- export const infoLayoutSchema = z.object({
412
- type: z.literal('info'),
413
- markdown: z.string(),
414
- align: alignSchema.optional(),
415
- control: z.string().optional(),
416
- margin: sizeSchema.optional(),
417
- });
418
-
419
- export const instructionsLayoutItemSchema = z.object({
420
- text: z.string(),
421
- context: contextSchema,
422
- tag: z.string().optional(),
423
- });
398
+ export const iconSchema = z.union([iconNamedSchema, iconTextSchema]);
424
399
 
425
- export const instructionsLayoutSchema = z.object({
426
- type: z.literal('instructions'),
427
- title: z.string().optional(),
428
- items: z.array(instructionsLayoutItemSchema),
429
- control: z.string().optional(),
430
- margin: sizeSchema.optional(),
400
+ export const summarySummariserSchema = z.object({
401
+ defaultTitle: z.string().optional(),
402
+ defaultDescription: z.string().optional(),
403
+ defaultIcon: iconSchema.optional(),
404
+ defaultImage: imageSchema.optional(),
405
+ providesTitle: z.boolean().optional(),
406
+ providesDescription: z.boolean().optional(),
407
+ providesIcon: z.boolean().optional(),
408
+ providesImage: z.boolean().optional(),
431
409
  });
432
410
 
433
411
  export const suggestionsValueSchema = z.object({
@@ -443,6 +421,8 @@ export const actionBehaviorSchema = z.object({
443
421
  action: actionSchema,
444
422
  });
445
423
 
424
+ export const summarySchema = z.union([summaryProviderSchema, summarySummariserSchema]);
425
+
446
426
  export const containerBehaviorSchema = z.object({
447
427
  action: actionSchema.optional(),
448
428
  link: linkSchema.optional(),
@@ -453,51 +433,73 @@ export const navigationBackBehaviorSchema = z.object({
453
433
  action: actionSchema,
454
434
  });
455
435
 
456
- export const summarySchema = z.union([summaryProviderSchema, summarySummariserSchema]);
457
-
458
- export const suggestionsSchema = z.object({
459
- values: z.array(suggestionsValueSchema),
436
+ export const instructionsLayoutSchema = z.object({
437
+ type: z.literal('instructions'),
438
+ title: z.string().optional(),
439
+ items: z.array(instructionsLayoutItemSchema),
440
+ control: z.string().optional(),
441
+ margin: sizeSchema.optional(),
460
442
  });
461
443
 
462
444
  export const actionResponseBodySchema = z.object({
463
445
  action: actionSchema,
464
446
  });
465
447
 
466
- export const searchResponseBodySchema = z.object({
467
- results: z.array(searchResultSchema),
448
+ export const searchResultSearchSchema = z.object({
449
+ type: z.literal('search'),
450
+ title: z.string(),
451
+ description: z.string().optional(),
452
+ icon: iconSchema.optional(),
453
+ image: imageSchema.optional(),
454
+ value: searchSearchRequestSchema,
468
455
  });
469
456
 
457
+ export const searchResultActionSchema = z.object({
458
+ type: z.literal('action'),
459
+ title: z.string(),
460
+ description: z.string().optional(),
461
+ icon: iconSchema.optional(),
462
+ image: imageSchema.optional(),
463
+ value: actionSchema,
464
+ });
465
+
466
+ export const searchResultSchema = z.union([searchResultActionSchema, searchResultSearchSchema]);
467
+
470
468
  export const navigationSchema = z.object({
471
469
  backButton: navigationBackBehaviorSchema.optional(),
472
470
  back: navigationBackBehaviorSchema.optional(),
473
471
  stackBehavior: navigationStackBehaviorSchema.optional(),
474
472
  });
475
473
 
476
- export const arraySchemaListSchema: z.ZodSchema<ArraySchemaList> = z.lazy(() =>
474
+ export const suggestionsSchema = z.object({
475
+ values: z.array(suggestionsValueSchema),
476
+ });
477
+
478
+ export const searchResponseBodySchema = z.object({
479
+ results: z.array(searchResultSchema),
480
+ });
481
+
482
+ export const stepSchema: z.ZodSchema<Step> = z.lazy(() =>
477
483
  z.object({
478
- type: z.literal('array'),
479
- promoted: z.boolean().optional(),
480
- $id: z.string().optional(),
481
- items: schemaSchema,
482
- addItemTitle: z.string(),
483
- editItemTitle: z.string(),
484
- minItems: z.number().optional(),
485
- maxItems: z.number().optional(),
486
- placeholder: z.string().optional(),
487
- title: z.string().optional(),
484
+ key: z.string().optional(),
485
+ type: z.string().optional(),
486
+ actions: z.array(actionSchema).optional(),
487
+ refreshFormUrl: z.string().optional(),
488
+ id: z.string(),
489
+ title: z.string(),
490
+ schemas: z.array(schemaSchema),
491
+ layout: z.array(layoutSchema),
488
492
  description: z.string().optional(),
489
- control: z.string().optional(),
490
- hidden: z.boolean().optional(),
491
- icon: iconSchema.optional(),
492
- image: imageSchema.optional(),
493
- keywords: z.array(z.string()).optional(),
494
- summary: summarySummariserSchema.optional(),
495
- analyticsId: z.string().optional(),
496
- persistAsync: persistAsyncSchema.optional(),
497
- validationAsync: validateAsyncSchema.optional(),
498
- alert: alertLayoutSchema.optional(),
499
- validationMessages: z.record(z.string()).optional(),
500
- disabled: z.boolean().optional(),
493
+ model: jsonElementSchema.optional(),
494
+ external: externalSchema.optional(),
495
+ polling: pollingSchema.optional(),
496
+ linkHandlers: z.array(linkHandlerSchema).optional(),
497
+ analytics: z.record(z.string()).optional(),
498
+ errors: stepErrorSchema.optional(),
499
+ navigation: navigationSchema.optional(),
500
+ refreshUrl: z.string().optional(),
501
+ control: z.string().optional(),
502
+ refreshAfter: z.string().optional(),
501
503
  }),
502
504
  );
503
505
 
@@ -516,13 +518,84 @@ export const schemaSchema: z.ZodSchema<Schema> = z.lazy(() =>
516
518
  ]),
517
519
  );
518
520
 
519
- export const persistAsyncSchema: z.ZodSchema<PersistAsync> = z.lazy(() =>
521
+ export const layoutSchema: z.ZodSchema<Layout> = z.lazy(() =>
522
+ z.union([
523
+ alertLayoutSchema,
524
+ boxLayoutSchema,
525
+ buttonLayoutSchema,
526
+ columnsLayoutSchema,
527
+ decisionLayoutSchema,
528
+ dividerLayoutSchema,
529
+ formLayoutSchema,
530
+ headingLayoutSchema,
531
+ imageLayoutSchema,
532
+ infoLayoutSchema,
533
+ instructionsLayoutSchema,
534
+ listLayoutSchema,
535
+ loadingIndicatorLayoutSchema,
536
+ markdownLayoutSchema,
537
+ modalLayoutSchema,
538
+ paragraphLayoutSchema,
539
+ reviewLayoutSchema,
540
+ searchLayoutSchema,
541
+ sectionLayoutSchema,
542
+ statusListLayoutSchema,
543
+ ]),
544
+ );
545
+
546
+ export const pollingSchema: z.ZodSchema<Polling> = z.lazy(() =>
520
547
  z.object({
521
- param: z.string(),
522
- idProperty: z.string(),
523
- schema: schemaSchema,
548
+ interval: z.number().optional(),
524
549
  url: z.string(),
525
- method: httpMethodSchema,
550
+ delay: z.number().optional(),
551
+ timeout: z.number().optional(),
552
+ maxAttempts: z.number(),
553
+ onError: pollingOnErrorSchema,
554
+ }),
555
+ );
556
+
557
+ export const linkHandlerSchema: z.ZodSchema<LinkHandler> = z.lazy(() =>
558
+ z.object({
559
+ regexPattern: z.string(),
560
+ behavior: behaviorSchema.optional(),
561
+ }),
562
+ );
563
+
564
+ export const additionalInfoSchema: z.ZodSchema<AdditionalInfo> = z.lazy(() =>
565
+ z.object({
566
+ text: z.string(),
567
+ behavior: behaviorSchema.optional(),
568
+ accessibilityDescription: z.string().optional(),
569
+ }),
570
+ );
571
+
572
+ export const behaviorSchema: z.ZodSchema<Behavior> = z.lazy(() =>
573
+ z.union([
574
+ actionBehaviorSchema,
575
+ containerBehaviorSchema,
576
+ dismissBehaviorSchema,
577
+ linkBehaviorSchema,
578
+ modalBehaviorSchema,
579
+ refreshBehaviorSchema,
580
+ ]),
581
+ );
582
+
583
+ export const constSchemaSchema: z.ZodSchema<ConstSchema> = z.lazy(() =>
584
+ z.object({
585
+ hidden: z.boolean().optional(),
586
+ alert: alertLayoutSchema.optional(),
587
+ control: z.string().optional(),
588
+ promoted: z.boolean().optional(),
589
+ $id: z.string().optional(),
590
+ const: jsonElementSchema,
591
+ title: z.string().optional(),
592
+ description: z.string().optional(),
593
+ icon: iconSchema.optional(),
594
+ image: imageSchema.optional(),
595
+ keywords: z.array(z.string()).optional(),
596
+ summary: summaryProviderSchema.optional(),
597
+ analyticsId: z.string().optional(),
598
+ disabled: z.boolean().optional(),
526
599
  }),
527
600
  );
528
601
 
@@ -537,22 +610,19 @@ export const alertLayoutSchema: z.ZodSchema<AlertLayout> = z.lazy(() =>
537
610
  }),
538
611
  );
539
612
 
540
- export const integerSchemaSchema: z.ZodSchema<IntegerSchema> = z.lazy(() =>
613
+ export const booleanSchemaSchema: z.ZodSchema<BooleanSchema> = z.lazy(() =>
541
614
  z.object({
542
- type: z.literal('integer'),
615
+ type: z.literal('boolean'),
543
616
  autofillProvider: z.string().optional(),
544
617
  promoted: z.boolean().optional(),
545
618
  refreshFormOnChange: z.boolean().optional(),
546
619
  refreshUrl: z.string().optional(),
547
620
  refreshFormUrl: z.string().optional(),
548
- placeholder: z.string().optional(),
549
- minimum: z.number().optional(),
550
- maximum: z.number().optional(),
551
621
  $id: z.string().optional(),
552
622
  title: z.string().optional(),
553
623
  description: z.string().optional(),
554
624
  control: z.string().optional(),
555
- default: z.number().optional(),
625
+ default: z.boolean().optional(),
556
626
  hidden: z.boolean().optional(),
557
627
  disabled: z.boolean().optional(),
558
628
  icon: iconSchema.optional(),
@@ -563,49 +633,20 @@ export const integerSchemaSchema: z.ZodSchema<IntegerSchema> = z.lazy(() =>
563
633
  persistAsync: persistAsyncSchema.optional(),
564
634
  refreshStepOnChange: z.boolean().optional(),
565
635
  validationAsync: validateAsyncSchema.optional(),
566
- validationMessages: z.record(z.string()).optional(),
567
636
  alert: alertLayoutSchema.optional(),
568
- autocompleteHint: z.array(autocompleteTokenSchema).optional(),
569
637
  autofillKey: z.string().optional(),
570
638
  help: helpSchema.optional(),
639
+ onChange: behaviorSchema.optional(),
571
640
  }),
572
641
  );
573
642
 
574
- export const allOfSchemaSchema: z.ZodSchema<AllOfSchema> = z.lazy(() =>
575
- z.object({
576
- disabled: z.boolean().optional(),
577
- promoted: z.boolean().optional(),
578
- allOf: z.array(schemaSchema),
579
- $id: z.string().optional(),
580
- title: z.string().optional(),
581
- description: z.string().optional(),
582
- control: z.string().optional(),
583
- hidden: z.boolean().optional(),
584
- icon: iconSchema.optional(),
585
- image: imageSchema.optional(),
586
- keywords: z.array(z.string()).optional(),
587
- summary: summaryProviderSchema.optional(),
588
- analyticsId: z.string().optional(),
589
- alert: alertLayoutSchema.optional(),
590
- }),
591
- );
592
-
593
- export const constSchemaSchema: z.ZodSchema<ConstSchema> = z.lazy(() =>
643
+ export const persistAsyncSchema: z.ZodSchema<PersistAsync> = z.lazy(() =>
594
644
  z.object({
595
- hidden: z.boolean().optional(),
596
- alert: alertLayoutSchema.optional(),
597
- control: z.string().optional(),
598
- promoted: z.boolean().optional(),
599
- $id: z.string().optional(),
600
- const: jsonElementSchema,
601
- title: z.string().optional(),
602
- description: z.string().optional(),
603
- icon: iconSchema.optional(),
604
- image: imageSchema.optional(),
605
- keywords: z.array(z.string()).optional(),
606
- summary: summaryProviderSchema.optional(),
607
- analyticsId: z.string().optional(),
608
- disabled: z.boolean().optional(),
645
+ param: z.string(),
646
+ idProperty: z.string(),
647
+ schema: schemaSchema,
648
+ url: z.string(),
649
+ method: httpMethodSchema,
609
650
  }),
610
651
  );
611
652
 
@@ -613,12 +654,17 @@ export const arraySchemaSchema: z.ZodSchema<ArraySchema> = z.lazy(() =>
613
654
  z.union([arraySchemaListSchema, arraySchemaTupleSchema]),
614
655
  );
615
656
 
616
- export const arraySchemaTupleSchema: z.ZodSchema<ArraySchemaTuple> = z.lazy(() =>
657
+ export const arraySchemaListSchema: z.ZodSchema<ArraySchemaList> = z.lazy(() =>
617
658
  z.object({
618
659
  type: z.literal('array'),
619
660
  promoted: z.boolean().optional(),
620
661
  $id: z.string().optional(),
621
- items: z.array(schemaSchema),
662
+ items: schemaSchema,
663
+ addItemTitle: z.string(),
664
+ editItemTitle: z.string(),
665
+ minItems: z.number().optional(),
666
+ maxItems: z.number().optional(),
667
+ placeholder: z.string().optional(),
622
668
  title: z.string().optional(),
623
669
  description: z.string().optional(),
624
670
  control: z.string().optional(),
@@ -626,24 +672,22 @@ export const arraySchemaTupleSchema: z.ZodSchema<ArraySchemaTuple> = z.lazy(() =
626
672
  icon: iconSchema.optional(),
627
673
  image: imageSchema.optional(),
628
674
  keywords: z.array(z.string()).optional(),
629
- summary: summaryProviderSchema.optional(),
675
+ summary: summarySummariserSchema.optional(),
630
676
  analyticsId: z.string().optional(),
631
677
  persistAsync: persistAsyncSchema.optional(),
632
678
  validationAsync: validateAsyncSchema.optional(),
633
679
  alert: alertLayoutSchema.optional(),
680
+ validationMessages: z.record(z.string()).optional(),
681
+ disabled: z.boolean().optional(),
634
682
  }),
635
683
  );
636
684
 
637
- export const objectSchemaSchema: z.ZodSchema<ObjectSchema> = z.lazy(() =>
685
+ export const arraySchemaTupleSchema: z.ZodSchema<ArraySchemaTuple> = z.lazy(() =>
638
686
  z.object({
639
- type: z.literal('object'),
640
- disabled: z.boolean().optional(),
687
+ type: z.literal('array'),
641
688
  promoted: z.boolean().optional(),
642
- help: helpSchema.optional(),
643
- properties: z.record(schemaSchema),
644
- displayOrder: z.array(z.string()),
645
- required: z.array(z.string()).optional(),
646
689
  $id: z.string().optional(),
690
+ items: z.array(schemaSchema),
647
691
  title: z.string().optional(),
648
692
  description: z.string().optional(),
649
693
  control: z.string().optional(),
@@ -653,6 +697,8 @@ export const objectSchemaSchema: z.ZodSchema<ObjectSchema> = z.lazy(() =>
653
697
  keywords: z.array(z.string()).optional(),
654
698
  summary: summaryProviderSchema.optional(),
655
699
  analyticsId: z.string().optional(),
700
+ persistAsync: persistAsyncSchema.optional(),
701
+ validationAsync: validateAsyncSchema.optional(),
656
702
  alert: alertLayoutSchema.optional(),
657
703
  }),
658
704
  );
@@ -700,62 +746,86 @@ export const stringSchemaSchema: z.ZodSchema<StringSchema> = z.lazy(() =>
700
746
  autofillKey: z.string().optional(),
701
747
  help: helpSchema.optional(),
702
748
  suggestions: suggestionsSchema.optional(),
749
+ onChange: behaviorSchema.optional(),
703
750
  }),
704
751
  );
705
752
 
706
- export const oneOfSchemaSchema: z.ZodSchema<OneOfSchema> = z.lazy(() =>
753
+ export const blobSchemaSchema: z.ZodSchema<BlobSchema> = z.lazy(() =>
707
754
  z.object({
708
- autofillProvider: z.string().optional(),
755
+ type: z.literal('blob'),
709
756
  promoted: z.boolean().optional(),
710
- refreshFormOnChange: z.boolean().optional(),
711
- refreshUrl: z.string().optional(),
712
- refreshFormUrl: z.string().optional(),
713
- promotion: jsonElementSchema.optional(),
714
- oneOf: z.array(schemaSchema),
715
- placeholder: z.string().optional(),
716
757
  $id: z.string().optional(),
717
758
  title: z.string().optional(),
718
759
  description: z.string().optional(),
719
760
  control: z.string().optional(),
720
- default: jsonElementSchema.optional(),
721
761
  hidden: z.boolean().optional(),
722
762
  icon: iconSchema.optional(),
723
763
  image: imageSchema.optional(),
724
764
  keywords: z.array(z.string()).optional(),
725
765
  summary: summaryProviderSchema.optional(),
726
766
  analyticsId: z.string().optional(),
727
- refreshStepOnChange: z.boolean().optional(),
728
- alert: alertLayoutSchema.optional(),
729
- help: helpSchema.optional(),
730
- autocompleteHint: z.array(autocompleteTokenSchema).optional(),
731
- autofillKey: z.string().optional(),
767
+ validationAsync: validateAsyncSchema.optional(),
732
768
  validationMessages: z.record(z.string()).optional(),
769
+ alert: alertLayoutSchema.optional(),
770
+ cameraConfig: jsonElementSchema.optional(),
771
+ accepts: z.array(z.string()).optional(),
772
+ maxSize: z.number().optional(),
773
+ source: uploadSourceSchema.optional(),
733
774
  disabled: z.boolean().optional(),
734
775
  }),
735
776
  );
736
777
 
737
- export const blobSchemaSchema: z.ZodSchema<BlobSchema> = z.lazy(() =>
778
+ export const allOfSchemaSchema: z.ZodSchema<AllOfSchema> = z.lazy(() =>
738
779
  z.object({
739
- type: z.literal('blob'),
780
+ disabled: z.boolean().optional(),
781
+ promoted: z.boolean().optional(),
782
+ allOf: z.array(schemaSchema),
783
+ $id: z.string().optional(),
784
+ title: z.string().optional(),
785
+ description: z.string().optional(),
786
+ control: z.string().optional(),
787
+ hidden: z.boolean().optional(),
788
+ icon: iconSchema.optional(),
789
+ image: imageSchema.optional(),
790
+ keywords: z.array(z.string()).optional(),
791
+ summary: summaryProviderSchema.optional(),
792
+ analyticsId: z.string().optional(),
793
+ alert: alertLayoutSchema.optional(),
794
+ }),
795
+ );
796
+
797
+ export const integerSchemaSchema: z.ZodSchema<IntegerSchema> = z.lazy(() =>
798
+ z.object({
799
+ type: z.literal('integer'),
800
+ autofillProvider: z.string().optional(),
740
801
  promoted: z.boolean().optional(),
802
+ refreshFormOnChange: z.boolean().optional(),
803
+ refreshUrl: z.string().optional(),
804
+ refreshFormUrl: z.string().optional(),
805
+ placeholder: z.string().optional(),
806
+ minimum: z.number().optional(),
807
+ maximum: z.number().optional(),
741
808
  $id: z.string().optional(),
742
809
  title: z.string().optional(),
743
810
  description: z.string().optional(),
744
811
  control: z.string().optional(),
812
+ default: z.number().optional(),
745
813
  hidden: z.boolean().optional(),
814
+ disabled: z.boolean().optional(),
746
815
  icon: iconSchema.optional(),
747
816
  image: imageSchema.optional(),
748
817
  keywords: z.array(z.string()).optional(),
749
818
  summary: summaryProviderSchema.optional(),
750
819
  analyticsId: z.string().optional(),
820
+ persistAsync: persistAsyncSchema.optional(),
821
+ refreshStepOnChange: z.boolean().optional(),
751
822
  validationAsync: validateAsyncSchema.optional(),
752
823
  validationMessages: z.record(z.string()).optional(),
753
824
  alert: alertLayoutSchema.optional(),
754
- cameraConfig: jsonElementSchema.optional(),
755
- accepts: z.array(z.string()).optional(),
756
- maxSize: z.number().optional(),
757
- source: uploadSourceSchema.optional(),
758
- disabled: z.boolean().optional(),
825
+ autocompleteHint: z.array(autocompleteTokenSchema).optional(),
826
+ autofillKey: z.string().optional(),
827
+ help: helpSchema.optional(),
828
+ onChange: behaviorSchema.optional(),
759
829
  }),
760
830
  );
761
831
 
@@ -774,83 +844,101 @@ export const numberSchemaSchema: z.ZodSchema<NumberSchema> = z.lazy(() =>
774
844
  title: z.string().optional(),
775
845
  description: z.string().optional(),
776
846
  control: z.string().optional(),
777
- default: z.number().optional(),
847
+ default: z.number().optional(),
848
+ hidden: z.boolean().optional(),
849
+ disabled: z.boolean().optional(),
850
+ icon: iconSchema.optional(),
851
+ image: imageSchema.optional(),
852
+ keywords: z.array(z.string()).optional(),
853
+ summary: summaryProviderSchema.optional(),
854
+ analyticsId: z.string().optional(),
855
+ persistAsync: persistAsyncSchema.optional(),
856
+ refreshStepOnChange: z.boolean().optional(),
857
+ validationAsync: validateAsyncSchema.optional(),
858
+ validationMessages: z.record(z.string()).optional(),
859
+ alert: alertLayoutSchema.optional(),
860
+ autocompleteHint: z.array(autocompleteTokenSchema).optional(),
861
+ autofillKey: z.string().optional(),
862
+ help: helpSchema.optional(),
863
+ onChange: behaviorSchema.optional(),
864
+ }),
865
+ );
866
+
867
+ export const objectSchemaSchema: z.ZodSchema<ObjectSchema> = z.lazy(() =>
868
+ z.object({
869
+ type: z.literal('object'),
870
+ disabled: z.boolean().optional(),
871
+ promoted: z.boolean().optional(),
872
+ help: helpSchema.optional(),
873
+ properties: z.record(schemaSchema),
874
+ displayOrder: z.array(z.string()),
875
+ required: z.array(z.string()).optional(),
876
+ $id: z.string().optional(),
877
+ title: z.string().optional(),
878
+ description: z.string().optional(),
879
+ control: z.string().optional(),
778
880
  hidden: z.boolean().optional(),
779
- disabled: z.boolean().optional(),
780
881
  icon: iconSchema.optional(),
781
882
  image: imageSchema.optional(),
782
883
  keywords: z.array(z.string()).optional(),
783
884
  summary: summaryProviderSchema.optional(),
784
885
  analyticsId: z.string().optional(),
785
- persistAsync: persistAsyncSchema.optional(),
786
- refreshStepOnChange: z.boolean().optional(),
787
- validationAsync: validateAsyncSchema.optional(),
788
- validationMessages: z.record(z.string()).optional(),
789
886
  alert: alertLayoutSchema.optional(),
790
- autocompleteHint: z.array(autocompleteTokenSchema).optional(),
791
- autofillKey: z.string().optional(),
792
- help: helpSchema.optional(),
793
887
  }),
794
888
  );
795
889
 
796
- export const booleanSchemaSchema: z.ZodSchema<BooleanSchema> = z.lazy(() =>
890
+ export const oneOfSchemaSchema: z.ZodSchema<OneOfSchema> = z.lazy(() =>
797
891
  z.object({
798
- type: z.literal('boolean'),
799
892
  autofillProvider: z.string().optional(),
800
893
  promoted: z.boolean().optional(),
801
894
  refreshFormOnChange: z.boolean().optional(),
802
895
  refreshUrl: z.string().optional(),
803
896
  refreshFormUrl: z.string().optional(),
897
+ promotion: jsonElementSchema.optional(),
898
+ oneOf: z.array(schemaSchema),
899
+ placeholder: z.string().optional(),
804
900
  $id: z.string().optional(),
805
901
  title: z.string().optional(),
806
902
  description: z.string().optional(),
807
903
  control: z.string().optional(),
808
- default: z.boolean().optional(),
904
+ default: jsonElementSchema.optional(),
809
905
  hidden: z.boolean().optional(),
810
- disabled: z.boolean().optional(),
811
906
  icon: iconSchema.optional(),
812
907
  image: imageSchema.optional(),
813
908
  keywords: z.array(z.string()).optional(),
814
909
  summary: summaryProviderSchema.optional(),
815
910
  analyticsId: z.string().optional(),
816
- persistAsync: persistAsyncSchema.optional(),
817
911
  refreshStepOnChange: z.boolean().optional(),
818
- validationAsync: validateAsyncSchema.optional(),
819
912
  alert: alertLayoutSchema.optional(),
820
- autofillKey: z.string().optional(),
821
913
  help: helpSchema.optional(),
914
+ autocompleteHint: z.array(autocompleteTokenSchema).optional(),
915
+ autofillKey: z.string().optional(),
916
+ validationMessages: z.record(z.string()).optional(),
917
+ disabled: z.boolean().optional(),
918
+ onChange: behaviorSchema.optional(),
822
919
  }),
823
920
  );
824
921
 
825
- export const modalResponseBodySchema: z.ZodSchema<ModalResponseBody> = z.lazy(() =>
922
+ export const pollingOnErrorSchema: z.ZodSchema<PollingOnError> = z.lazy(() =>
923
+ z.object({
924
+ action: actionSchema.optional(),
925
+ behavior: behaviorSchema.optional(),
926
+ }),
927
+ );
928
+
929
+ export const modalBehaviorSchema: z.ZodSchema<ModalBehavior> = z.lazy(() =>
826
930
  z.object({
931
+ type: z.literal('modal'),
827
932
  title: z.string().optional(),
828
933
  content: z.array(layoutSchema),
829
934
  }),
830
935
  );
831
936
 
832
- export const layoutSchema: z.ZodSchema<Layout> = z.lazy(() =>
833
- z.union([
834
- alertLayoutSchema,
835
- boxLayoutSchema,
836
- buttonLayoutSchema,
837
- columnsLayoutSchema,
838
- decisionLayoutSchema,
839
- dividerLayoutSchema,
840
- formLayoutSchema,
841
- headingLayoutSchema,
842
- imageLayoutSchema,
843
- infoLayoutSchema,
844
- instructionsLayoutSchema,
845
- listLayoutSchema,
846
- loadingIndicatorLayoutSchema,
847
- markdownLayoutSchema,
848
- modalLayoutSchema,
849
- paragraphLayoutSchema,
850
- reviewLayoutSchema,
851
- searchLayoutSchema,
852
- statusListLayoutSchema,
853
- ]),
937
+ export const modalLayoutContentSchema: z.ZodSchema<ModalLayoutContent> = z.lazy(() =>
938
+ z.object({
939
+ title: z.string().optional(),
940
+ components: z.array(layoutSchema),
941
+ }),
854
942
  );
855
943
 
856
944
  export const listLayoutItemSchema: z.ZodSchema<ListLayoutItem> = z.lazy(() =>
@@ -870,14 +958,6 @@ export const listLayoutItemSchema: z.ZodSchema<ListLayoutItem> = z.lazy(() =>
870
958
  }),
871
959
  );
872
960
 
873
- export const additionalInfoSchema: z.ZodSchema<AdditionalInfo> = z.lazy(() =>
874
- z.object({
875
- text: z.string(),
876
- behavior: behaviorSchema.optional(),
877
- accessibilityDescription: z.string().optional(),
878
- }),
879
- );
880
-
881
961
  export const statusListLayoutItemSchema: z.ZodSchema<StatusListLayoutItem> = z.lazy(() =>
882
962
  z.object({
883
963
  title: z.string(),
@@ -897,35 +977,6 @@ export const itemCallToActionSchema: z.ZodSchema<ItemCallToAction> = z.lazy(() =
897
977
  }),
898
978
  );
899
979
 
900
- export const alertLayoutCallToActionSchema: z.ZodSchema<AlertLayoutCallToAction> = z.lazy(() =>
901
- z.object({
902
- title: z.string(),
903
- accessibilityDescription: z.string().optional(),
904
- behavior: behaviorSchema,
905
- }),
906
- );
907
-
908
- export const behaviorSchema: z.ZodSchema<Behavior> = z.lazy(() =>
909
- z.union([
910
- actionBehaviorSchema,
911
- containerBehaviorSchema,
912
- dismissBehaviorSchema,
913
- linkBehaviorSchema,
914
- modalBehaviorSchema,
915
- ]),
916
- );
917
-
918
- export const boxLayoutSchema: z.ZodSchema<BoxLayout> = z.lazy(() =>
919
- z.object({
920
- type: z.literal('box'),
921
- components: z.array(layoutSchema),
922
- width: sizeSchema.optional(),
923
- border: z.boolean().optional(),
924
- control: z.string().optional(),
925
- margin: sizeSchema.optional(),
926
- }),
927
- );
928
-
929
980
  export const decisionLayoutSchema: z.ZodSchema<DecisionLayout> = z.lazy(() =>
930
981
  z.object({
931
982
  type: z.literal('decision'),
@@ -952,36 +1003,6 @@ export const decisionLayoutOptionSchema: z.ZodSchema<DecisionLayoutOption> = z.l
952
1003
  }),
953
1004
  );
954
1005
 
955
- export const columnsLayoutSchema: z.ZodSchema<ColumnsLayout> = z.lazy(() =>
956
- z.object({
957
- type: z.literal('columns'),
958
- left: z.array(layoutSchema),
959
- right: z.array(layoutSchema),
960
- bias: columnsLayoutBiasSchema.optional(),
961
- control: z.string().optional(),
962
- margin: sizeSchema.optional(),
963
- }),
964
- );
965
-
966
- export const listLayoutSchema: z.ZodSchema<ListLayout> = z.lazy(() =>
967
- z.object({
968
- type: z.literal('list'),
969
- title: z.string().optional(),
970
- callToAction: listLayoutCallToActionSchema.optional(),
971
- items: z.array(listLayoutItemSchema),
972
- control: z.string().optional(),
973
- margin: sizeSchema.optional(),
974
- }),
975
- );
976
-
977
- export const listLayoutCallToActionSchema: z.ZodSchema<ListLayoutCallToAction> = z.lazy(() =>
978
- z.object({
979
- title: z.string(),
980
- accessibilityDescription: z.string().optional(),
981
- behavior: behaviorSchema,
982
- }),
983
- );
984
-
985
1006
  export const reviewLayoutCallToActionSchema: z.ZodSchema<ReviewLayoutCallToAction> = z.lazy(() =>
986
1007
  z.object({
987
1008
  action: actionSchema.optional(),
@@ -991,16 +1012,6 @@ export const reviewLayoutCallToActionSchema: z.ZodSchema<ReviewLayoutCallToActio
991
1012
  }),
992
1013
  );
993
1014
 
994
- export const statusListLayoutSchema: z.ZodSchema<StatusListLayout> = z.lazy(() =>
995
- z.object({
996
- type: z.literal('status-list'),
997
- items: z.array(statusListLayoutItemSchema),
998
- title: z.string().optional(),
999
- control: z.string().optional(),
1000
- margin: sizeSchema.optional(),
1001
- }),
1002
- );
1003
-
1004
1015
  export const modalLayoutSchema: z.ZodSchema<ModalLayout> = z.lazy(() =>
1005
1016
  z.object({
1006
1017
  type: z.literal('modal'),
@@ -1011,21 +1022,11 @@ export const modalLayoutSchema: z.ZodSchema<ModalLayout> = z.lazy(() =>
1011
1022
  }),
1012
1023
  );
1013
1024
 
1014
- export const modalLayoutContentSchema: z.ZodSchema<ModalLayoutContent> = z.lazy(() =>
1015
- z.object({
1016
- title: z.string().optional(),
1017
- components: z.array(layoutSchema),
1018
- }),
1019
- );
1020
-
1021
- export const reviewLayoutSchema: z.ZodSchema<ReviewLayout> = z.lazy(() =>
1025
+ export const statusListLayoutSchema: z.ZodSchema<StatusListLayout> = z.lazy(() =>
1022
1026
  z.object({
1023
- type: z.literal('review'),
1024
- orientation: z.string().optional(),
1025
- action: actionSchema.optional(),
1026
- fields: z.array(reviewLayoutFieldSchema),
1027
+ type: z.literal('status-list'),
1028
+ items: z.array(statusListLayoutItemSchema),
1027
1029
  title: z.string().optional(),
1028
- callToAction: reviewLayoutCallToActionSchema.optional(),
1029
1030
  control: z.string().optional(),
1030
1031
  margin: sizeSchema.optional(),
1031
1032
  }),
@@ -1046,6 +1047,41 @@ export const reviewLayoutFieldSchema: z.ZodSchema<ReviewLayoutField> = z.lazy(()
1046
1047
  }),
1047
1048
  );
1048
1049
 
1050
+ export const sectionLayoutCallToActionSchema: z.ZodSchema<SectionLayoutCallToAction> = z.lazy(() =>
1051
+ z.object({
1052
+ title: z.string(),
1053
+ accessibilityDescription: z.string().optional(),
1054
+ behavior: behaviorSchema,
1055
+ }),
1056
+ );
1057
+
1058
+ export const alertLayoutCallToActionSchema: z.ZodSchema<AlertLayoutCallToAction> = z.lazy(() =>
1059
+ z.object({
1060
+ title: z.string(),
1061
+ accessibilityDescription: z.string().optional(),
1062
+ behavior: behaviorSchema,
1063
+ }),
1064
+ );
1065
+
1066
+ export const listLayoutCallToActionSchema: z.ZodSchema<ListLayoutCallToAction> = z.lazy(() =>
1067
+ z.object({
1068
+ title: z.string(),
1069
+ accessibilityDescription: z.string().optional(),
1070
+ behavior: behaviorSchema,
1071
+ }),
1072
+ );
1073
+
1074
+ export const sectionLayoutSchema: z.ZodSchema<SectionLayout> = z.lazy(() =>
1075
+ z.object({
1076
+ type: z.literal('section'),
1077
+ components: z.array(layoutSchema),
1078
+ title: z.string(),
1079
+ callToAction: sectionLayoutCallToActionSchema.optional(),
1080
+ control: z.string().optional(),
1081
+ margin: sizeSchema.optional(),
1082
+ }),
1083
+ );
1084
+
1049
1085
  export const buttonLayoutSchema: z.ZodSchema<ButtonLayout> = z.lazy(() =>
1050
1086
  z.object({
1051
1087
  type: z.literal('button'),
@@ -1061,59 +1097,55 @@ export const buttonLayoutSchema: z.ZodSchema<ButtonLayout> = z.lazy(() =>
1061
1097
  }),
1062
1098
  );
1063
1099
 
1064
- export const stepSchema: z.ZodSchema<Step> = z.lazy(() =>
1100
+ export const reviewLayoutSchema: z.ZodSchema<ReviewLayout> = z.lazy(() =>
1065
1101
  z.object({
1066
- key: z.string().optional(),
1067
- type: z.string().optional(),
1068
- actions: z.array(actionSchema).optional(),
1069
- refreshFormUrl: z.string().optional(),
1070
- id: z.string(),
1071
- title: z.string(),
1072
- schemas: z.array(schemaSchema),
1073
- layout: z.array(layoutSchema),
1074
- description: z.string().optional(),
1075
- model: jsonElementSchema.optional(),
1076
- external: externalSchema.optional(),
1077
- polling: pollingSchema.optional(),
1078
- linkHandlers: z.array(linkHandlerSchema).optional(),
1079
- analytics: z.record(z.string()).optional(),
1080
- errors: stepErrorSchema.optional(),
1081
- navigation: navigationSchema.optional(),
1082
- refreshUrl: z.string().optional(),
1102
+ type: z.literal('review'),
1103
+ orientation: z.string().optional(),
1104
+ action: actionSchema.optional(),
1105
+ fields: z.array(reviewLayoutFieldSchema),
1106
+ title: z.string().optional(),
1107
+ callToAction: reviewLayoutCallToActionSchema.optional(),
1083
1108
  control: z.string().optional(),
1084
- refreshAfter: z.string().optional(),
1109
+ margin: sizeSchema.optional(),
1085
1110
  }),
1086
1111
  );
1087
1112
 
1088
- export const pollingSchema: z.ZodSchema<Polling> = z.lazy(() =>
1113
+ export const columnsLayoutSchema: z.ZodSchema<ColumnsLayout> = z.lazy(() =>
1089
1114
  z.object({
1090
- interval: z.number().optional(),
1091
- url: z.string(),
1092
- delay: z.number().optional(),
1093
- timeout: z.number().optional(),
1094
- maxAttempts: z.number(),
1095
- onError: pollingOnErrorSchema,
1115
+ type: z.literal('columns'),
1116
+ left: z.array(layoutSchema),
1117
+ right: z.array(layoutSchema),
1118
+ bias: columnsLayoutBiasSchema.optional(),
1119
+ control: z.string().optional(),
1120
+ margin: sizeSchema.optional(),
1096
1121
  }),
1097
1122
  );
1098
1123
 
1099
- export const linkHandlerSchema: z.ZodSchema<LinkHandler> = z.lazy(() =>
1124
+ export const boxLayoutSchema: z.ZodSchema<BoxLayout> = z.lazy(() =>
1100
1125
  z.object({
1101
- regexPattern: z.string(),
1102
- behavior: behaviorSchema.optional(),
1126
+ type: z.literal('box'),
1127
+ components: z.array(layoutSchema),
1128
+ width: sizeSchema.optional(),
1129
+ border: z.boolean().optional(),
1130
+ control: z.string().optional(),
1131
+ margin: sizeSchema.optional(),
1103
1132
  }),
1104
1133
  );
1105
1134
 
1106
- export const modalBehaviorSchema: z.ZodSchema<ModalBehavior> = z.lazy(() =>
1135
+ export const listLayoutSchema: z.ZodSchema<ListLayout> = z.lazy(() =>
1107
1136
  z.object({
1108
- type: z.literal('modal'),
1137
+ type: z.literal('list'),
1109
1138
  title: z.string().optional(),
1110
- content: z.array(layoutSchema),
1139
+ callToAction: listLayoutCallToActionSchema.optional(),
1140
+ items: z.array(listLayoutItemSchema),
1141
+ control: z.string().optional(),
1142
+ margin: sizeSchema.optional(),
1111
1143
  }),
1112
1144
  );
1113
1145
 
1114
- export const pollingOnErrorSchema: z.ZodSchema<PollingOnError> = z.lazy(() =>
1146
+ export const modalResponseBodySchema: z.ZodSchema<ModalResponseBody> = z.lazy(() =>
1115
1147
  z.object({
1116
- action: actionSchema.optional(),
1117
- behavior: behaviorSchema.optional(),
1148
+ title: z.string().optional(),
1149
+ content: z.array(layoutSchema),
1118
1150
  }),
1119
1151
  );