@wise/dynamic-flow-types 2.10.0 → 2.11.0-experimental-ed080a1

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