@wise/dynamic-flow-types 2.5.1 → 2.6.0-beta-b14b7d.3

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,906 @@
1
+ // Generated by ts-to-zod
2
+ import { z } from 'zod';
3
+ import type {
4
+ JsonElement,
5
+ ArraySchemaList,
6
+ Schema,
7
+ PersistAsync,
8
+ IntegerSchema,
9
+ StringSchema,
10
+ BooleanSchema,
11
+ OneOfSchema,
12
+ NumberSchema,
13
+ ObjectSchema,
14
+ ArraySchema,
15
+ ArraySchemaTuple,
16
+ AllOfSchema,
17
+ ColumnsLayout,
18
+ Layout,
19
+ ModalLayout,
20
+ ModalLayoutContent,
21
+ BoxLayout,
22
+ Step,
23
+ } from '../next';
24
+
25
+ export const imageSchema = z.object({
26
+ url: z.string(),
27
+ text: z.string().optional(),
28
+ accessibilityDescription: z.string().optional(),
29
+ });
30
+
31
+ export const stringSchemaFormatSchema = z.union([
32
+ z.literal('date'),
33
+ z.literal('email'),
34
+ z.literal('numeric'),
35
+ z.literal('password'),
36
+ z.literal('phone-number'),
37
+ z.literal('base64url'),
38
+ ]);
39
+
40
+ export const summaryProviderSchema = z.object({
41
+ providesTitle: z.boolean().optional(),
42
+ providesDescription: z.boolean().optional(),
43
+ providesIcon: z.boolean().optional(),
44
+ providesImage: z.boolean().optional(),
45
+ });
46
+
47
+ export const autocompleteTokenSchema = z.union([
48
+ z.literal('on'),
49
+ z.literal('name'),
50
+ z.literal('name-prefix'),
51
+ z.literal('given-name'),
52
+ z.literal('additional-name'),
53
+ z.literal('family-name'),
54
+ z.literal('name-suffix'),
55
+ z.literal('nickname'),
56
+ z.literal('email'),
57
+ z.literal('username'),
58
+ z.literal('new-username'),
59
+ z.literal('new-password'),
60
+ z.literal('password'),
61
+ z.literal('one-time-code'),
62
+ z.literal('job-title'),
63
+ z.literal('organization-name'),
64
+ z.literal('full-street-address'),
65
+ z.literal('street-address-line-1'),
66
+ z.literal('street-address-line-2'),
67
+ z.literal('street-address-line-3'),
68
+ z.literal('address-level-1'),
69
+ z.literal('address-level-2'),
70
+ z.literal('address-level-3'),
71
+ z.literal('address-level-4'),
72
+ z.literal('country-code'),
73
+ z.literal('country-name'),
74
+ z.literal('postal-code'),
75
+ z.literal('credit-card-name'),
76
+ z.literal('credit-card-given-name'),
77
+ z.literal('credit-card-middle-name'),
78
+ z.literal('credit-card-family-name'),
79
+ z.literal('credit-card-number'),
80
+ z.literal('credit-card-expiration'),
81
+ z.literal('credit-card-expiration-month'),
82
+ z.literal('credit-card-expiration-year'),
83
+ z.literal('credit-card-security-code'),
84
+ z.literal('credit-card-type'),
85
+ z.literal('transaction-currency'),
86
+ z.literal('transaction-amount'),
87
+ z.literal('language'),
88
+ z.literal('birthdate'),
89
+ z.literal('birthdate-day'),
90
+ z.literal('birthdate-month'),
91
+ z.literal('birthdate-year'),
92
+ z.literal('gender'),
93
+ z.literal('phone-number'),
94
+ z.literal('phone-country-code'),
95
+ z.literal('phone-national'),
96
+ z.literal('phone-area-code'),
97
+ z.literal('phone-local'),
98
+ z.literal('phone-local-prefix'),
99
+ z.literal('phone-local-suffix'),
100
+ z.literal('phone-extension'),
101
+ z.literal('url'),
102
+ z.literal('photo'),
103
+ z.literal('impp'),
104
+ z.literal('shipping'),
105
+ z.literal('billing'),
106
+ z.literal('home'),
107
+ z.literal('work'),
108
+ z.literal('mobile'),
109
+ z.literal('fax'),
110
+ z.literal('pager'),
111
+ ]);
112
+
113
+ export const helpSchema = z.object({
114
+ markdown: z.string(),
115
+ });
116
+
117
+ export const stringSchemaSourceSchema = z.union([z.literal('camera'), z.literal('file')]);
118
+
119
+ export const jsonElementSchema: z.ZodSchema<JsonElement> = z.lazy(() =>
120
+ z
121
+ .union([
122
+ z.string(),
123
+ z.number(),
124
+ z.boolean(),
125
+ z.record(jsonElementSchema),
126
+ z.array(jsonElementSchema),
127
+ ])
128
+ .nullable(),
129
+ );
130
+
131
+ export const blobSchemaSourceSchema = z.union([z.literal('file'), z.literal('camera')]);
132
+
133
+ export const listLayoutStatusSchema = z.union([
134
+ z.literal('warning'),
135
+ z.literal('neutral'),
136
+ z.literal('positive'),
137
+ ]);
138
+
139
+ export const contextSchema = z.union([
140
+ z.literal('positive'),
141
+ z.literal('neutral'),
142
+ z.literal('warning'),
143
+ z.literal('negative'),
144
+ z.literal('success'),
145
+ z.literal('failure'),
146
+ z.literal('info'),
147
+ z.literal('primary'),
148
+ ]);
149
+
150
+ export const sizeSchema = z.union([
151
+ z.literal('xs'),
152
+ z.literal('sm'),
153
+ z.literal('md'),
154
+ z.literal('lg'),
155
+ z.literal('xl'),
156
+ ]);
157
+
158
+ export const reviewLayoutFieldSchema = z.object({
159
+ label: z.string(),
160
+ value: z.string(),
161
+ help: helpSchema.optional(),
162
+ });
163
+
164
+ export const instructionsLayoutItemSchema = z.object({
165
+ text: z.string(),
166
+ context: contextSchema,
167
+ });
168
+
169
+ export const statusListLayoutStatusSchema = z.union([
170
+ z.literal('not-done'),
171
+ z.literal('pending'),
172
+ z.literal('done'),
173
+ ]);
174
+
175
+ export const imageLayoutSchema = z.object({
176
+ type: z.literal('image'),
177
+ url: z.string(),
178
+ size: sizeSchema.optional(),
179
+ control: z.string().optional(),
180
+ margin: sizeSchema.optional(),
181
+ text: z.string().optional(),
182
+ accessibilityDescription: z.string().optional(),
183
+ });
184
+
185
+ export const columnsLayoutBiasSchema = z.union([
186
+ z.literal('none'),
187
+ z.literal('left'),
188
+ z.literal('right'),
189
+ ]);
190
+
191
+ export const formLayoutSchemaReferenceSchema = z.object({
192
+ $ref: z.string(),
193
+ });
194
+
195
+ export const dividerLayoutSchema = z.object({
196
+ type: z.literal('divider'),
197
+ control: z.string().optional(),
198
+ margin: sizeSchema.optional(),
199
+ });
200
+
201
+ export const modalLayoutTriggerSchema = z.object({
202
+ title: z.string(),
203
+ });
204
+
205
+ export const formLayoutSchema = z.object({
206
+ type: z.literal('form'),
207
+ schemaId: z.string(),
208
+ control: z.string().optional(),
209
+ margin: sizeSchema.optional(),
210
+ schema: formLayoutSchemaReferenceSchema.optional(),
211
+ });
212
+
213
+ export const instructionsLayoutSchema = z.object({
214
+ type: z.literal('instructions'),
215
+ title: z.string().optional(),
216
+ items: z.array(instructionsLayoutItemSchema),
217
+ control: z.string().optional(),
218
+ margin: sizeSchema.optional(),
219
+ });
220
+
221
+ export const loadingIndicatorLayoutSchema = z.object({
222
+ type: z.literal('loading-indicator'),
223
+ size: sizeSchema.optional(),
224
+ control: z.string().optional(),
225
+ margin: sizeSchema.optional(),
226
+ });
227
+
228
+ export const alignSchema = z.union([z.literal('left'), z.literal('center'), z.literal('right')]);
229
+
230
+ export const httpMethodSchema = z.union([
231
+ z.literal('GET'),
232
+ z.literal('POST'),
233
+ z.literal('PUT'),
234
+ z.literal('PATCH'),
235
+ z.literal('DELETE'),
236
+ ]);
237
+
238
+ export const externalSchema = z.object({
239
+ url: z.string(),
240
+ });
241
+
242
+ export const stepErrorSchema = z.object({
243
+ error: z.string().optional(),
244
+ validation: jsonElementSchema.optional(),
245
+ });
246
+
247
+ export const iconNamedSchema = z.object({
248
+ name: z.string(),
249
+ });
250
+
251
+ export const iconTextSchema = z.object({
252
+ text: z.string(),
253
+ });
254
+
255
+ export const actionTypeSchema = z.union([
256
+ z.literal('primary'),
257
+ z.literal('secondary'),
258
+ z.literal('link'),
259
+ z.literal('positive'),
260
+ z.literal('negative'),
261
+ ]);
262
+
263
+ export const errorResponseBodySchema = z.object({
264
+ error: z.string().optional(),
265
+ validation: jsonElementSchema.optional(),
266
+ refreshUrl: z.string().optional(),
267
+ refreshFormUrl: z.string().optional(),
268
+ analytics: z.record(z.string()).optional(),
269
+ });
270
+
271
+ export const searchSearchRequestSchema = z.object({
272
+ url: z.string(),
273
+ method: httpMethodSchema,
274
+ param: z.string(),
275
+ query: z.string(),
276
+ });
277
+
278
+ export const iconSchema = z.union([iconNamedSchema, iconTextSchema]);
279
+
280
+ export const summarySummariserSchema = z.object({
281
+ defaultTitle: z.string().optional(),
282
+ defaultDescription: z.string().optional(),
283
+ defaultIcon: iconSchema.optional(),
284
+ defaultImage: imageLayoutSchema.optional(),
285
+ providesTitle: z.boolean().optional(),
286
+ providesDescription: z.boolean().optional(),
287
+ providesIcon: z.boolean().optional(),
288
+ providesImage: z.boolean().optional(),
289
+ });
290
+
291
+ export const validateAsyncSchema = z.object({
292
+ param: z.string(),
293
+ method: httpMethodSchema,
294
+ url: z.string(),
295
+ });
296
+
297
+ export const alertLayoutSchema = z.object({
298
+ type: z.literal('alert'),
299
+ markdown: z.string(),
300
+ context: contextSchema.optional(),
301
+ control: z.string().optional(),
302
+ margin: sizeSchema.optional(),
303
+ });
304
+
305
+ export const constSchemaSchema = z.object({
306
+ disabled: z.boolean().optional(),
307
+ hidden: z.boolean().optional(),
308
+ alert: alertLayoutSchema.optional(),
309
+ control: z.string().optional(),
310
+ $id: z.string().optional(),
311
+ const: jsonElementSchema,
312
+ title: z.string().optional(),
313
+ description: z.string().optional(),
314
+ icon: iconSchema.optional(),
315
+ image: imageSchema.optional(),
316
+ keywords: z.array(z.string()).optional(),
317
+ summary: summaryProviderSchema.optional(),
318
+ analyticsId: z.string().optional(),
319
+ promoted: z.boolean().optional(),
320
+ });
321
+
322
+ export const blobSchemaSchema = z.object({
323
+ type: z.literal('blob'),
324
+ disabled: z.boolean().optional(),
325
+ $id: z.string().optional(),
326
+ accepts: z.array(z.string()),
327
+ maxSize: z.number().optional(),
328
+ source: blobSchemaSourceSchema.optional(),
329
+ title: z.string().optional(),
330
+ description: z.string().optional(),
331
+ control: z.string().optional(),
332
+ hidden: z.boolean().optional(),
333
+ icon: iconSchema.optional(),
334
+ image: imageSchema.optional(),
335
+ keywords: z.array(z.string()).optional(),
336
+ summary: summaryProviderSchema.optional(),
337
+ analyticsId: z.string().optional(),
338
+ validationAsync: validateAsyncSchema.optional(),
339
+ validationMessages: z.record(z.string()).optional(),
340
+ alert: alertLayoutSchema.optional(),
341
+ promoted: z.boolean().optional(),
342
+ });
343
+
344
+ export const actionSchema = z.object({
345
+ id: z.string().optional(),
346
+ url: z.string().optional(),
347
+ method: httpMethodSchema.optional(),
348
+ exit: z.boolean().optional(),
349
+ result: jsonElementSchema.optional(),
350
+ data: jsonElementSchema.optional(),
351
+ timeout: z.number().optional(),
352
+ title: z.string().optional(),
353
+ type: actionTypeSchema.optional(),
354
+ disabled: z.boolean().optional(),
355
+ $id: z.string().optional(),
356
+ $ref: z.string().optional(),
357
+ skipValidation: z.boolean().optional(),
358
+ });
359
+
360
+ export const buttonLayoutSchema = z.object({
361
+ type: z.literal('button'),
362
+ title: z.string().optional(),
363
+ action: actionSchema,
364
+ context: contextSchema.optional(),
365
+ disabled: z.boolean().optional(),
366
+ pinOrder: z.number().optional(),
367
+ control: z.string().optional(),
368
+ margin: sizeSchema.optional(),
369
+ size: sizeSchema.optional(),
370
+ });
371
+
372
+ export const listLayoutItemSchema = z.object({
373
+ title: z.string(),
374
+ description: z.string().optional(),
375
+ icon: iconSchema,
376
+ status: listLayoutStatusSchema.optional(),
377
+ });
378
+
379
+ export const headingLayoutSchema = z.object({
380
+ type: z.literal('heading'),
381
+ text: z.string(),
382
+ size: sizeSchema.optional(),
383
+ align: alignSchema.optional(),
384
+ control: z.string().optional(),
385
+ margin: sizeSchema.optional(),
386
+ });
387
+
388
+ export const infoLayoutSchema = z.object({
389
+ type: z.literal('info'),
390
+ markdown: z.string(),
391
+ align: alignSchema.optional(),
392
+ control: z.string().optional(),
393
+ margin: sizeSchema.optional(),
394
+ });
395
+
396
+ export const listLayoutSchema = z.object({
397
+ type: z.literal('list'),
398
+ items: z.array(listLayoutItemSchema),
399
+ title: z.string().optional(),
400
+ control: z.string().optional(),
401
+ margin: sizeSchema.optional(),
402
+ });
403
+
404
+ export const markdownLayoutSchema = z.object({
405
+ type: z.literal('markdown'),
406
+ content: z.string(),
407
+ align: alignSchema.optional(),
408
+ control: z.string().optional(),
409
+ margin: sizeSchema.optional(),
410
+ });
411
+
412
+ export const paragraphLayoutSchema = z.object({
413
+ type: z.literal('paragraph'),
414
+ text: z.string(),
415
+ align: alignSchema.optional(),
416
+ control: z.string().optional(),
417
+ margin: sizeSchema.optional(),
418
+ });
419
+
420
+ export const searchLayoutSchema = z.object({
421
+ type: z.literal('search'),
422
+ title: z.string(),
423
+ method: httpMethodSchema,
424
+ url: z.string(),
425
+ param: z.string(),
426
+ emptyMessage: z.string().optional(),
427
+ control: z.string().optional(),
428
+ margin: sizeSchema.optional(),
429
+ });
430
+
431
+ export const statusListLayoutItemSchema = z.object({
432
+ title: z.string(),
433
+ description: z.string().optional(),
434
+ icon: iconSchema,
435
+ status: statusListLayoutStatusSchema.optional(),
436
+ });
437
+
438
+ export const decisionLayoutOptionSchema = z.object({
439
+ action: actionSchema,
440
+ title: z.string(),
441
+ description: z.string().optional(),
442
+ disabled: z.boolean().optional(),
443
+ icon: iconSchema.optional(),
444
+ image: imageLayoutSchema.optional(),
445
+ });
446
+
447
+ export const linkHandlerSchema = z.object({
448
+ regexPattern: z.string(),
449
+ action: actionSchema,
450
+ });
451
+
452
+ export const pollingOnErrorSchema = z.object({
453
+ action: actionSchema,
454
+ });
455
+
456
+ export const summarySchema = z.union([summaryProviderSchema, summarySummariserSchema]);
457
+
458
+ export const navigationBackBehaviourSchema = z.object({
459
+ title: z.string().optional(),
460
+ action: actionSchema,
461
+ });
462
+
463
+ export const actionResponseBodySchema = z.object({
464
+ action: actionSchema,
465
+ });
466
+
467
+ export const searchResultSearchSchema = z.object({
468
+ type: z.literal('search'),
469
+ title: z.string(),
470
+ description: z.string().optional(),
471
+ icon: iconSchema.optional(),
472
+ image: imageLayoutSchema.optional(),
473
+ value: searchSearchRequestSchema,
474
+ });
475
+
476
+ export const searchResultActionSchema = z.object({
477
+ type: z.literal('action'),
478
+ title: z.string(),
479
+ description: z.string().optional(),
480
+ icon: iconSchema.optional(),
481
+ image: imageLayoutSchema.optional(),
482
+ value: actionSchema,
483
+ });
484
+
485
+ export const reviewLayoutCallToActionSchema = z.object({
486
+ title: z.string(),
487
+ action: actionSchema,
488
+ });
489
+
490
+ export const decisionLayoutSchema = z.object({
491
+ type: z.literal('decision'),
492
+ options: z.array(decisionLayoutOptionSchema),
493
+ control: z.string().optional(),
494
+ margin: sizeSchema.optional(),
495
+ });
496
+
497
+ export const reviewLayoutSchema = z.object({
498
+ type: z.literal('review'),
499
+ fields: z.array(reviewLayoutFieldSchema),
500
+ title: z.string().optional(),
501
+ callToAction: reviewLayoutCallToActionSchema.optional(),
502
+ control: z.string().optional(),
503
+ margin: sizeSchema.optional(),
504
+ orientation: z.string().optional(),
505
+ action: actionSchema.optional(),
506
+ });
507
+
508
+ export const statusListLayoutSchema = z.object({
509
+ type: z.literal('status-list'),
510
+ items: z.array(statusListLayoutItemSchema),
511
+ title: z.string().optional(),
512
+ control: z.string().optional(),
513
+ margin: sizeSchema.optional(),
514
+ });
515
+
516
+ export const pollingSchema = z.object({
517
+ url: z.string(),
518
+ interval: z.number(),
519
+ maxAttempts: z.number(),
520
+ onError: pollingOnErrorSchema,
521
+ });
522
+
523
+ export const navigationSchema = z.object({
524
+ back: navigationBackBehaviourSchema.optional(),
525
+ backButton: navigationBackBehaviourSchema.optional(),
526
+ });
527
+
528
+ export const searchResultSchema = z.union([searchResultActionSchema, searchResultSearchSchema]);
529
+
530
+ export const searchResponseBodySchema = z.object({
531
+ results: z.array(searchResultSchema),
532
+ });
533
+
534
+ export const arraySchemaListSchema: z.ZodSchema<ArraySchemaList> = z.lazy(() =>
535
+ z.object({
536
+ type: z.literal('array'),
537
+ $id: z.string().optional(),
538
+ items: schemaSchema,
539
+ addItemTitle: z.string(),
540
+ editItemTitle: z.string(),
541
+ minItems: z.number().optional(),
542
+ maxItems: z.number().optional(),
543
+ title: z.string().optional(),
544
+ description: z.string().optional(),
545
+ control: z.string().optional(),
546
+ hidden: z.boolean().optional(),
547
+ icon: iconSchema.optional(),
548
+ image: imageSchema.optional(),
549
+ keywords: z.array(z.string()).optional(),
550
+ summary: summarySummariserSchema.optional(),
551
+ analyticsId: z.string().optional(),
552
+ persistAsync: persistAsyncSchema.optional(),
553
+ validationAsync: validateAsyncSchema.optional(),
554
+ alert: alertLayoutSchema.optional(),
555
+ validationMessages: z.record(z.string()).optional(),
556
+ disabled: z.boolean().optional(),
557
+ promoted: z.boolean().optional(),
558
+ }),
559
+ );
560
+
561
+ export const schemaSchema: z.ZodSchema<Schema> = z.lazy(() =>
562
+ z.union([
563
+ allOfSchemaSchema,
564
+ arraySchemaSchema,
565
+ blobSchemaSchema,
566
+ booleanSchemaSchema,
567
+ constSchemaSchema,
568
+ integerSchemaSchema,
569
+ numberSchemaSchema,
570
+ objectSchemaSchema,
571
+ oneOfSchemaSchema,
572
+ stringSchemaSchema,
573
+ ]),
574
+ );
575
+
576
+ export const persistAsyncSchema: z.ZodSchema<PersistAsync> = z.lazy(() =>
577
+ z.object({
578
+ param: z.string(),
579
+ idProperty: z.string(),
580
+ schema: schemaSchema,
581
+ url: z.string(),
582
+ method: httpMethodSchema,
583
+ }),
584
+ );
585
+
586
+ export const integerSchemaSchema: z.ZodSchema<IntegerSchema> = z.lazy(() =>
587
+ z.object({
588
+ type: z.literal('integer'),
589
+ placeholder: z.string().optional(),
590
+ minimum: z.number().optional(),
591
+ maximum: z.number().optional(),
592
+ $id: z.string().optional(),
593
+ title: z.string().optional(),
594
+ description: z.string().optional(),
595
+ control: z.string().optional(),
596
+ default: z.number().optional(),
597
+ hidden: z.boolean().optional(),
598
+ disabled: z.boolean().optional(),
599
+ icon: iconSchema.optional(),
600
+ image: imageSchema.optional(),
601
+ keywords: z.array(z.string()).optional(),
602
+ summary: summaryProviderSchema.optional(),
603
+ analyticsId: z.string().optional(),
604
+ persistAsync: persistAsyncSchema.optional(),
605
+ refreshStepOnChange: z.boolean().optional(),
606
+ validationAsync: validateAsyncSchema.optional(),
607
+ validationMessages: z.record(z.string()).optional(),
608
+ alert: alertLayoutSchema.optional(),
609
+ autocompleteHint: z.array(autocompleteTokenSchema).optional(),
610
+ autofillKey: z.string().optional(),
611
+ help: helpSchema.optional(),
612
+ autofillProvider: z.string().optional(),
613
+ promoted: z.boolean().optional(),
614
+ refreshFormOnChange: z.boolean().optional(),
615
+ refreshUrl: z.string().optional(),
616
+ refreshFormUrl: z.string().optional(),
617
+ }),
618
+ );
619
+
620
+ export const stringSchemaSchema: z.ZodSchema<StringSchema> = z.lazy(() =>
621
+ z.object({
622
+ type: z.literal('string'),
623
+ format: stringSchemaFormatSchema.optional(),
624
+ displayFormat: z.string().optional(),
625
+ placeholder: z.string().optional(),
626
+ minLength: z.number().optional(),
627
+ maxLength: z.number().optional(),
628
+ minimum: z.string().optional(),
629
+ maximum: z.string().optional(),
630
+ pattern: z.string().optional(),
631
+ $id: z.string().optional(),
632
+ title: z.string().optional(),
633
+ description: z.string().optional(),
634
+ control: z.string().optional(),
635
+ default: z.string().optional(),
636
+ hidden: z.boolean().optional(),
637
+ disabled: z.boolean().optional(),
638
+ icon: iconSchema.optional(),
639
+ image: imageSchema.optional(),
640
+ keywords: z.array(z.string()).optional(),
641
+ summary: summaryProviderSchema.optional(),
642
+ analyticsId: z.string().optional(),
643
+ persistAsync: persistAsyncSchema.optional(),
644
+ refreshStepOnChange: z.boolean().optional(),
645
+ validationAsync: validateAsyncSchema.optional(),
646
+ validationMessages: z.record(z.string()).optional(),
647
+ alert: alertLayoutSchema.optional(),
648
+ autocompleteHint: z.array(autocompleteTokenSchema).optional(),
649
+ autofillKey: z.string().optional(),
650
+ help: helpSchema.optional(),
651
+ autofillProvider: z.string().optional(),
652
+ promoted: z.boolean().optional(),
653
+ refreshFormOnChange: z.boolean().optional(),
654
+ refreshUrl: z.string().optional(),
655
+ refreshFormUrl: z.string().optional(),
656
+ cameraConfig: z.unknown().optional(),
657
+ accepts: z.array(z.string()).optional(),
658
+ maxSize: z.number().optional(),
659
+ source: stringSchemaSourceSchema.optional(),
660
+ }),
661
+ );
662
+
663
+ export const booleanSchemaSchema: z.ZodSchema<BooleanSchema> = z.lazy(() =>
664
+ z.object({
665
+ type: z.literal('boolean'),
666
+ $id: z.string().optional(),
667
+ title: z.string().optional(),
668
+ description: z.string().optional(),
669
+ control: z.string().optional(),
670
+ default: z.boolean().optional(),
671
+ hidden: z.boolean().optional(),
672
+ disabled: z.boolean().optional(),
673
+ icon: iconSchema.optional(),
674
+ image: imageSchema.optional(),
675
+ keywords: z.array(z.string()).optional(),
676
+ summary: summaryProviderSchema.optional(),
677
+ analyticsId: z.string().optional(),
678
+ persistAsync: persistAsyncSchema.optional(),
679
+ refreshStepOnChange: z.boolean().optional(),
680
+ validationAsync: validateAsyncSchema.optional(),
681
+ alert: alertLayoutSchema.optional(),
682
+ autofillKey: z.string().optional(),
683
+ help: helpSchema.optional(),
684
+ autofillProvider: z.string().optional(),
685
+ promoted: z.boolean().optional(),
686
+ refreshFormOnChange: z.boolean().optional(),
687
+ refreshUrl: z.string().optional(),
688
+ refreshFormUrl: z.string().optional(),
689
+ }),
690
+ );
691
+
692
+ export const oneOfSchemaSchema: z.ZodSchema<OneOfSchema> = z.lazy(() =>
693
+ z.object({
694
+ disabled: z.boolean().optional(),
695
+ oneOf: z.array(schemaSchema),
696
+ placeholder: z.string().optional(),
697
+ $id: z.string().optional(),
698
+ title: z.string().optional(),
699
+ description: z.string().optional(),
700
+ control: z.string().optional(),
701
+ default: jsonElementSchema.optional(),
702
+ hidden: z.boolean().optional(),
703
+ icon: iconSchema.optional(),
704
+ image: imageSchema.optional(),
705
+ keywords: z.array(z.string()).optional(),
706
+ summary: summaryProviderSchema.optional(),
707
+ analyticsId: z.string().optional(),
708
+ refreshStepOnChange: z.boolean().optional(),
709
+ alert: alertLayoutSchema.optional(),
710
+ help: helpSchema.optional(),
711
+ autocompleteHint: z.array(autocompleteTokenSchema).optional(),
712
+ autofillKey: z.string().optional(),
713
+ validationMessages: z.record(z.string()).optional(),
714
+ autofillProvider: z.string().optional(),
715
+ promoted: z.boolean().optional(),
716
+ refreshFormOnChange: z.boolean().optional(),
717
+ refreshUrl: z.string().optional(),
718
+ refreshFormUrl: z.string().optional(),
719
+ promotion: jsonElementSchema.optional(),
720
+ }),
721
+ );
722
+
723
+ export const numberSchemaSchema: z.ZodSchema<NumberSchema> = z.lazy(() =>
724
+ z.object({
725
+ type: z.literal('number'),
726
+ placeholder: z.string().optional(),
727
+ minimum: z.number().optional(),
728
+ maximum: z.number().optional(),
729
+ $id: z.string().optional(),
730
+ title: z.string().optional(),
731
+ description: z.string().optional(),
732
+ control: z.string().optional(),
733
+ default: z.number().optional(),
734
+ hidden: z.boolean().optional(),
735
+ disabled: z.boolean().optional(),
736
+ icon: iconSchema.optional(),
737
+ image: imageSchema.optional(),
738
+ keywords: z.array(z.string()).optional(),
739
+ summary: summaryProviderSchema.optional(),
740
+ analyticsId: z.string().optional(),
741
+ persistAsync: persistAsyncSchema.optional(),
742
+ refreshStepOnChange: z.boolean().optional(),
743
+ validationAsync: validateAsyncSchema.optional(),
744
+ validationMessages: z.record(z.string()).optional(),
745
+ alert: alertLayoutSchema.optional(),
746
+ autocompleteHint: z.array(autocompleteTokenSchema).optional(),
747
+ autofillKey: z.string().optional(),
748
+ help: helpSchema.optional(),
749
+ autofillProvider: z.string().optional(),
750
+ promoted: z.boolean().optional(),
751
+ refreshFormOnChange: z.boolean().optional(),
752
+ refreshUrl: z.string().optional(),
753
+ refreshFormUrl: z.string().optional(),
754
+ }),
755
+ );
756
+
757
+ export const objectSchemaSchema: z.ZodSchema<ObjectSchema> = z.lazy(() =>
758
+ z.object({
759
+ type: z.literal('object'),
760
+ disabled: z.boolean().optional(),
761
+ properties: z.record(schemaSchema),
762
+ displayOrder: z.array(z.string()),
763
+ required: z.array(z.string()).optional(),
764
+ $id: z.string().optional(),
765
+ title: z.string().optional(),
766
+ description: z.string().optional(),
767
+ control: z.string().optional(),
768
+ hidden: z.boolean().optional(),
769
+ icon: iconSchema.optional(),
770
+ image: imageSchema.optional(),
771
+ keywords: z.array(z.string()).optional(),
772
+ summary: summaryProviderSchema.optional(),
773
+ analyticsId: z.string().optional(),
774
+ alert: alertLayoutSchema.optional(),
775
+ promoted: z.boolean().optional(),
776
+ help: helpSchema.optional(),
777
+ }),
778
+ );
779
+
780
+ export const arraySchemaSchema: z.ZodSchema<ArraySchema> = z.lazy(() =>
781
+ z.union([arraySchemaListSchema, arraySchemaTupleSchema]),
782
+ );
783
+
784
+ export const arraySchemaTupleSchema: z.ZodSchema<ArraySchemaTuple> = z.lazy(() =>
785
+ z.object({
786
+ type: z.literal('array'),
787
+ $id: z.string().optional(),
788
+ items: z.array(schemaSchema),
789
+ title: z.string().optional(),
790
+ description: z.string().optional(),
791
+ control: z.string().optional(),
792
+ hidden: z.boolean().optional(),
793
+ icon: iconSchema.optional(),
794
+ image: imageSchema.optional(),
795
+ keywords: z.array(z.string()).optional(),
796
+ summary: summaryProviderSchema.optional(),
797
+ analyticsId: z.string().optional(),
798
+ persistAsync: persistAsyncSchema.optional(),
799
+ validationAsync: validateAsyncSchema.optional(),
800
+ alert: alertLayoutSchema.optional(),
801
+ disabled: z.boolean().optional(),
802
+ promoted: z.boolean().optional(),
803
+ }),
804
+ );
805
+
806
+ export const allOfSchemaSchema: z.ZodSchema<AllOfSchema> = z.lazy(() =>
807
+ z.object({
808
+ disabled: z.boolean().optional(),
809
+ allOf: z.array(schemaSchema),
810
+ $id: z.string().optional(),
811
+ title: z.string().optional(),
812
+ description: z.string().optional(),
813
+ control: z.string().optional(),
814
+ hidden: z.boolean().optional(),
815
+ icon: iconSchema.optional(),
816
+ image: imageSchema.optional(),
817
+ keywords: z.array(z.string()).optional(),
818
+ summary: summaryProviderSchema.optional(),
819
+ analyticsId: z.string().optional(),
820
+ alert: alertLayoutSchema.optional(),
821
+ promoted: z.boolean().optional(),
822
+ }),
823
+ );
824
+
825
+ export const columnsLayoutSchema: z.ZodSchema<ColumnsLayout> = z.lazy(() =>
826
+ z.object({
827
+ type: z.literal('columns'),
828
+ left: z.array(layoutSchema),
829
+ right: z.array(layoutSchema),
830
+ bias: columnsLayoutBiasSchema.optional(),
831
+ control: z.string().optional(),
832
+ margin: sizeSchema.optional(),
833
+ }),
834
+ );
835
+
836
+ export const layoutSchema: z.ZodSchema<Layout> = z.lazy(() =>
837
+ z.union([
838
+ alertLayoutSchema,
839
+ boxLayoutSchema,
840
+ buttonLayoutSchema,
841
+ columnsLayoutSchema,
842
+ decisionLayoutSchema,
843
+ dividerLayoutSchema,
844
+ formLayoutSchema,
845
+ headingLayoutSchema,
846
+ imageLayoutSchema,
847
+ infoLayoutSchema,
848
+ instructionsLayoutSchema,
849
+ listLayoutSchema,
850
+ loadingIndicatorLayoutSchema,
851
+ markdownLayoutSchema,
852
+ modalLayoutSchema,
853
+ paragraphLayoutSchema,
854
+ reviewLayoutSchema,
855
+ searchLayoutSchema,
856
+ statusListLayoutSchema,
857
+ ]),
858
+ );
859
+
860
+ export const modalLayoutSchema: z.ZodSchema<ModalLayout> = z.lazy(() =>
861
+ z.object({
862
+ type: z.literal('modal'),
863
+ control: z.string().optional(),
864
+ margin: sizeSchema.optional(),
865
+ trigger: modalLayoutTriggerSchema,
866
+ content: modalLayoutContentSchema,
867
+ }),
868
+ );
869
+
870
+ export const modalLayoutContentSchema: z.ZodSchema<ModalLayoutContent> = z.lazy(() =>
871
+ z.object({
872
+ components: z.array(layoutSchema),
873
+ }),
874
+ );
875
+
876
+ export const boxLayoutSchema: z.ZodSchema<BoxLayout> = z.lazy(() =>
877
+ z.object({
878
+ type: z.literal('box'),
879
+ components: z.array(layoutSchema),
880
+ width: sizeSchema.optional(),
881
+ border: z.boolean().optional(),
882
+ control: z.string().optional(),
883
+ margin: sizeSchema.optional(),
884
+ }),
885
+ );
886
+
887
+ export const stepSchema: z.ZodSchema<Step> = z.lazy(() =>
888
+ z.object({
889
+ id: z.string(),
890
+ title: z.string(),
891
+ schemas: z.array(schemaSchema),
892
+ layout: z.array(layoutSchema),
893
+ model: jsonElementSchema.optional(),
894
+ external: externalSchema.optional(),
895
+ polling: pollingSchema.optional(),
896
+ linkHandlers: z.array(linkHandlerSchema).optional(),
897
+ analytics: z.record(z.string()).optional(),
898
+ errors: stepErrorSchema.optional(),
899
+ navigation: navigationSchema.optional(),
900
+ refreshUrl: z.string().optional(),
901
+ key: z.string().optional(),
902
+ type: z.string().optional(),
903
+ actions: z.array(actionSchema).optional(),
904
+ refreshFormUrl: z.string().optional(),
905
+ }),
906
+ );