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