@synopackageland/ui 0.5.8 → 0.6.1

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,2723 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Synology Package Land JSON UI spec",
4
+ "type": "object",
5
+ "required": [
6
+ "root",
7
+ "elements"
8
+ ],
9
+ "properties": {
10
+ "root": {
11
+ "type": "string",
12
+ "minLength": 1
13
+ },
14
+ "elements": {
15
+ "type": "object",
16
+ "additionalProperties": {
17
+ "$ref": "#/$defs/element"
18
+ }
19
+ },
20
+ "state": {
21
+ "type": "object"
22
+ }
23
+ },
24
+ "additionalProperties": false,
25
+ "$defs": {
26
+ "expression": {
27
+ "description": "A json-render expression resolved at render time.",
28
+ "anyOf": [
29
+ {
30
+ "type": "object",
31
+ "required": [
32
+ "$state"
33
+ ],
34
+ "properties": {
35
+ "$state": {
36
+ "type": "string",
37
+ "pattern": "^/"
38
+ }
39
+ }
40
+ },
41
+ {
42
+ "type": "object",
43
+ "required": [
44
+ "$bindState"
45
+ ],
46
+ "properties": {
47
+ "$bindState": {
48
+ "type": "string",
49
+ "pattern": "^/"
50
+ }
51
+ }
52
+ },
53
+ {
54
+ "type": "object",
55
+ "required": [
56
+ "$item"
57
+ ],
58
+ "properties": {
59
+ "$item": {
60
+ "type": "string"
61
+ }
62
+ }
63
+ },
64
+ {
65
+ "type": "object",
66
+ "required": [
67
+ "$bindItem"
68
+ ],
69
+ "properties": {
70
+ "$bindItem": {
71
+ "type": "string"
72
+ }
73
+ }
74
+ },
75
+ {
76
+ "type": "object",
77
+ "required": [
78
+ "$index"
79
+ ],
80
+ "properties": {
81
+ "$index": {
82
+ "const": true
83
+ }
84
+ }
85
+ },
86
+ {
87
+ "type": "object",
88
+ "required": [
89
+ "$template"
90
+ ],
91
+ "properties": {
92
+ "$template": {
93
+ "type": "string"
94
+ }
95
+ }
96
+ },
97
+ {
98
+ "type": "object",
99
+ "required": [
100
+ "$computed"
101
+ ],
102
+ "properties": {
103
+ "$computed": {
104
+ "type": "string"
105
+ },
106
+ "args": {
107
+ "type": "object"
108
+ }
109
+ }
110
+ },
111
+ {
112
+ "type": "object",
113
+ "required": [
114
+ "$cond",
115
+ "$then",
116
+ "$else"
117
+ ],
118
+ "properties": {
119
+ "$cond": {},
120
+ "$then": {},
121
+ "$else": {}
122
+ }
123
+ }
124
+ ]
125
+ },
126
+ "actionBinding": {
127
+ "type": "object",
128
+ "required": [
129
+ "action"
130
+ ],
131
+ "properties": {
132
+ "action": {
133
+ "type": "string"
134
+ },
135
+ "params": {
136
+ "type": "object"
137
+ },
138
+ "confirm": {
139
+ "type": "object"
140
+ },
141
+ "onSuccess": {
142
+ "type": "object"
143
+ },
144
+ "onError": {
145
+ "type": "object"
146
+ },
147
+ "preventDefault": {
148
+ "type": "boolean"
149
+ }
150
+ },
151
+ "additionalProperties": false
152
+ },
153
+ "SidebarNav____schema0": {
154
+ "type": "object",
155
+ "properties": {
156
+ "key": {
157
+ "type": "string"
158
+ },
159
+ "label": {
160
+ "type": "string"
161
+ },
162
+ "icon": {
163
+ "type": "string"
164
+ },
165
+ "badge": {
166
+ "type": [
167
+ "string",
168
+ "number"
169
+ ]
170
+ },
171
+ "disabled": {
172
+ "type": "boolean"
173
+ },
174
+ "selectable": {
175
+ "type": "boolean"
176
+ },
177
+ "children": {
178
+ "type": "array",
179
+ "items": {
180
+ "$ref": "#/$defs/SidebarNav____schema0"
181
+ }
182
+ }
183
+ },
184
+ "required": [
185
+ "key",
186
+ "label"
187
+ ],
188
+ "additionalProperties": false
189
+ },
190
+ "element": {
191
+ "type": "object",
192
+ "required": [
193
+ "type",
194
+ "props"
195
+ ],
196
+ "properties": {
197
+ "type": {
198
+ "enum": [
199
+ "AppRoot",
200
+ "AppShell",
201
+ "ResponsiveView",
202
+ "Page",
203
+ "PageHeader",
204
+ "Toolbar",
205
+ "SidebarNav",
206
+ "Tabs",
207
+ "Stack",
208
+ "Text",
209
+ "Button",
210
+ "Input",
211
+ "Select",
212
+ "Checkbox",
213
+ "Switch",
214
+ "RadioGroup",
215
+ "Form",
216
+ "Field",
217
+ "SettingsSection",
218
+ "SettingsField",
219
+ "Surface",
220
+ "Card",
221
+ "Callout",
222
+ "EmptyState",
223
+ "Progress",
224
+ "Badge",
225
+ "Dialog",
226
+ "DataTable",
227
+ "ResourceList",
228
+ "Loading"
229
+ ]
230
+ },
231
+ "props": {
232
+ "type": "object"
233
+ },
234
+ "children": {
235
+ "type": "array",
236
+ "items": {
237
+ "type": "string"
238
+ }
239
+ },
240
+ "slots": {
241
+ "type": "object",
242
+ "additionalProperties": {
243
+ "type": "array",
244
+ "items": {
245
+ "type": "string"
246
+ }
247
+ }
248
+ },
249
+ "visible": {},
250
+ "on": {
251
+ "type": "object",
252
+ "additionalProperties": {
253
+ "anyOf": [
254
+ {
255
+ "$ref": "#/$defs/actionBinding"
256
+ },
257
+ {
258
+ "type": "array",
259
+ "items": {
260
+ "$ref": "#/$defs/actionBinding"
261
+ }
262
+ }
263
+ ]
264
+ }
265
+ },
266
+ "watch": {
267
+ "type": "object",
268
+ "propertyNames": {
269
+ "type": "string",
270
+ "pattern": "^/"
271
+ },
272
+ "additionalProperties": {
273
+ "anyOf": [
274
+ {
275
+ "$ref": "#/$defs/actionBinding"
276
+ },
277
+ {
278
+ "type": "array",
279
+ "items": {
280
+ "$ref": "#/$defs/actionBinding"
281
+ }
282
+ }
283
+ ]
284
+ }
285
+ },
286
+ "repeat": {
287
+ "type": "object",
288
+ "required": [
289
+ "statePath"
290
+ ],
291
+ "properties": {
292
+ "statePath": {
293
+ "type": "string",
294
+ "pattern": "^/"
295
+ },
296
+ "key": {
297
+ "type": "string"
298
+ }
299
+ },
300
+ "additionalProperties": false
301
+ }
302
+ },
303
+ "additionalProperties": false,
304
+ "allOf": [
305
+ {
306
+ "if": {
307
+ "properties": {
308
+ "type": {
309
+ "const": "AppRoot"
310
+ }
311
+ }
312
+ },
313
+ "then": {
314
+ "description": "Root of a DSM application. Use once around the application shell. Dialogs stay inside the app by default (modalScope \"app\"); \"document\" is only for full-page web/Portal apps.",
315
+ "properties": {
316
+ "props": {
317
+ "type": "object",
318
+ "properties": {
319
+ "modalScope": {
320
+ "anyOf": [
321
+ {
322
+ "type": "string",
323
+ "enum": [
324
+ "document",
325
+ "app"
326
+ ]
327
+ },
328
+ {
329
+ "$ref": "#/$defs/expression"
330
+ }
331
+ ]
332
+ }
333
+ },
334
+ "additionalProperties": false
335
+ },
336
+ "slots": {
337
+ "propertyNames": {
338
+ "enum": []
339
+ }
340
+ },
341
+ "on": {
342
+ "propertyNames": {
343
+ "enum": []
344
+ }
345
+ }
346
+ }
347
+ }
348
+ },
349
+ {
350
+ "if": {
351
+ "properties": {
352
+ "type": {
353
+ "const": "AppShell"
354
+ }
355
+ }
356
+ },
357
+ "then": {
358
+ "description": "DSM application interior with optional sidebar, toolbar, main content and footer regions. Set wideLayout \"web\" only for a standalone Portal page; DSM windows keep the default \"window\" at every width.",
359
+ "properties": {
360
+ "props": {
361
+ "type": "object",
362
+ "properties": {
363
+ "sidebarWidth": {
364
+ "anyOf": [
365
+ {
366
+ "type": "string"
367
+ },
368
+ {
369
+ "$ref": "#/$defs/expression"
370
+ }
371
+ ]
372
+ },
373
+ "minHeight": {
374
+ "anyOf": [
375
+ {
376
+ "type": "string"
377
+ },
378
+ {
379
+ "$ref": "#/$defs/expression"
380
+ }
381
+ ]
382
+ },
383
+ "responsive": {
384
+ "anyOf": [
385
+ {
386
+ "type": "boolean"
387
+ },
388
+ {
389
+ "$ref": "#/$defs/expression"
390
+ }
391
+ ]
392
+ },
393
+ "wideLayout": {
394
+ "anyOf": [
395
+ {
396
+ "type": "string",
397
+ "enum": [
398
+ "window",
399
+ "web"
400
+ ]
401
+ },
402
+ {
403
+ "$ref": "#/$defs/expression"
404
+ }
405
+ ]
406
+ }
407
+ },
408
+ "additionalProperties": false
409
+ },
410
+ "slots": {
411
+ "propertyNames": {
412
+ "enum": [
413
+ "sidebar",
414
+ "toolbar",
415
+ "footer"
416
+ ]
417
+ }
418
+ },
419
+ "on": {
420
+ "propertyNames": {
421
+ "enum": []
422
+ }
423
+ }
424
+ }
425
+ }
426
+ },
427
+ {
428
+ "if": {
429
+ "properties": {
430
+ "type": {
431
+ "const": "ResponsiveView"
432
+ }
433
+ }
434
+ },
435
+ "then": {
436
+ "description": "Optionally replace a specialized element with a phone-friendly alternative. mobile/window/web slots follow AppShell container width (web only with AppShell wideLayout \"web\"); default is always the fallback.",
437
+ "properties": {
438
+ "props": {
439
+ "type": "object",
440
+ "properties": {
441
+ "mode": {
442
+ "anyOf": [
443
+ {
444
+ "type": "string",
445
+ "enum": [
446
+ "auto",
447
+ "mobile",
448
+ "window",
449
+ "web"
450
+ ]
451
+ },
452
+ {
453
+ "$ref": "#/$defs/expression"
454
+ }
455
+ ]
456
+ }
457
+ },
458
+ "additionalProperties": false
459
+ },
460
+ "slots": {
461
+ "propertyNames": {
462
+ "enum": [
463
+ "mobile",
464
+ "window",
465
+ "web"
466
+ ]
467
+ }
468
+ },
469
+ "on": {
470
+ "propertyNames": {
471
+ "enum": []
472
+ }
473
+ }
474
+ }
475
+ }
476
+ },
477
+ {
478
+ "if": {
479
+ "properties": {
480
+ "type": {
481
+ "const": "Page"
482
+ }
483
+ }
484
+ },
485
+ "then": {
486
+ "description": "Page content area. Use width \"fill\" for data-heavy screens and \"readable\" for forms/settings.",
487
+ "properties": {
488
+ "props": {
489
+ "type": "object",
490
+ "properties": {
491
+ "width": {
492
+ "anyOf": [
493
+ {
494
+ "type": "string"
495
+ },
496
+ {
497
+ "$ref": "#/$defs/expression"
498
+ }
499
+ ]
500
+ },
501
+ "surface": {
502
+ "anyOf": [
503
+ {
504
+ "type": "string",
505
+ "enum": [
506
+ "auto",
507
+ "flat",
508
+ "card"
509
+ ]
510
+ },
511
+ {
512
+ "$ref": "#/$defs/expression"
513
+ }
514
+ ]
515
+ }
516
+ },
517
+ "additionalProperties": false
518
+ },
519
+ "slots": {
520
+ "propertyNames": {
521
+ "enum": []
522
+ }
523
+ },
524
+ "on": {
525
+ "propertyNames": {
526
+ "enum": []
527
+ }
528
+ }
529
+ }
530
+ }
531
+ },
532
+ {
533
+ "if": {
534
+ "properties": {
535
+ "type": {
536
+ "const": "PageHeader"
537
+ }
538
+ }
539
+ },
540
+ "then": {
541
+ "description": "Page heading with optional description and page-level actions.",
542
+ "properties": {
543
+ "props": {
544
+ "type": "object",
545
+ "properties": {
546
+ "title": {
547
+ "anyOf": [
548
+ {
549
+ "type": "string"
550
+ },
551
+ {
552
+ "$ref": "#/$defs/expression"
553
+ }
554
+ ]
555
+ },
556
+ "description": {
557
+ "anyOf": [
558
+ {
559
+ "type": "string"
560
+ },
561
+ {
562
+ "$ref": "#/$defs/expression"
563
+ }
564
+ ]
565
+ }
566
+ },
567
+ "required": [
568
+ "title"
569
+ ],
570
+ "additionalProperties": false
571
+ },
572
+ "children": {
573
+ "maxItems": 0
574
+ },
575
+ "slots": {
576
+ "propertyNames": {
577
+ "enum": [
578
+ "actions"
579
+ ]
580
+ }
581
+ },
582
+ "on": {
583
+ "propertyNames": {
584
+ "enum": []
585
+ }
586
+ }
587
+ }
588
+ }
589
+ },
590
+ {
591
+ "if": {
592
+ "properties": {
593
+ "type": {
594
+ "const": "Toolbar"
595
+ }
596
+ }
597
+ },
598
+ "then": {
599
+ "description": "Application toolbar. Put primary page-independent actions in the actions slot.",
600
+ "properties": {
601
+ "props": {
602
+ "type": "object",
603
+ "properties": {
604
+ "height": {
605
+ "anyOf": [
606
+ {
607
+ "type": "string"
608
+ },
609
+ {
610
+ "$ref": "#/$defs/expression"
611
+ }
612
+ ]
613
+ }
614
+ },
615
+ "additionalProperties": false
616
+ },
617
+ "slots": {
618
+ "propertyNames": {
619
+ "enum": [
620
+ "leading",
621
+ "actions"
622
+ ]
623
+ }
624
+ },
625
+ "on": {
626
+ "propertyNames": {
627
+ "enum": []
628
+ }
629
+ }
630
+ }
631
+ }
632
+ },
633
+ {
634
+ "if": {
635
+ "properties": {
636
+ "type": {
637
+ "const": "SidebarNav"
638
+ }
639
+ }
640
+ },
641
+ "then": {
642
+ "description": "DSM sidebar navigation. Icon values are names registered by the host application.",
643
+ "properties": {
644
+ "props": {
645
+ "type": "object",
646
+ "properties": {
647
+ "value": {
648
+ "anyOf": [
649
+ {
650
+ "type": "string"
651
+ },
652
+ {
653
+ "$ref": "#/$defs/expression"
654
+ }
655
+ ]
656
+ },
657
+ "groups": {
658
+ "anyOf": [
659
+ {
660
+ "type": "array",
661
+ "items": {
662
+ "type": "object",
663
+ "properties": {
664
+ "label": {
665
+ "type": "string"
666
+ },
667
+ "items": {
668
+ "type": "array",
669
+ "items": {
670
+ "$ref": "#/$defs/SidebarNav____schema0"
671
+ }
672
+ }
673
+ },
674
+ "required": [
675
+ "items"
676
+ ],
677
+ "additionalProperties": false
678
+ }
679
+ },
680
+ {
681
+ "$ref": "#/$defs/expression"
682
+ }
683
+ ]
684
+ },
685
+ "searchable": {
686
+ "anyOf": [
687
+ {
688
+ "type": "boolean"
689
+ },
690
+ {
691
+ "$ref": "#/$defs/expression"
692
+ }
693
+ ]
694
+ },
695
+ "collapsible": {
696
+ "anyOf": [
697
+ {
698
+ "type": "boolean"
699
+ },
700
+ {
701
+ "$ref": "#/$defs/expression"
702
+ }
703
+ ]
704
+ },
705
+ "searchPlaceholder": {
706
+ "anyOf": [
707
+ {
708
+ "type": "string"
709
+ },
710
+ {
711
+ "$ref": "#/$defs/expression"
712
+ }
713
+ ]
714
+ }
715
+ },
716
+ "required": [
717
+ "groups"
718
+ ],
719
+ "additionalProperties": false
720
+ },
721
+ "children": {
722
+ "maxItems": 0
723
+ },
724
+ "slots": {
725
+ "propertyNames": {
726
+ "enum": []
727
+ }
728
+ },
729
+ "on": {
730
+ "propertyNames": {
731
+ "enum": [
732
+ "change"
733
+ ]
734
+ }
735
+ }
736
+ }
737
+ }
738
+ },
739
+ {
740
+ "if": {
741
+ "properties": {
742
+ "type": {
743
+ "const": "Tabs"
744
+ }
745
+ }
746
+ },
747
+ "then": {
748
+ "description": "Section tabs for switching a local mode or filter. Bind value to state for two-way updates.",
749
+ "properties": {
750
+ "props": {
751
+ "type": "object",
752
+ "properties": {
753
+ "value": {
754
+ "anyOf": [
755
+ {
756
+ "type": "string"
757
+ },
758
+ {
759
+ "$ref": "#/$defs/expression"
760
+ }
761
+ ]
762
+ },
763
+ "items": {
764
+ "anyOf": [
765
+ {
766
+ "type": "array",
767
+ "items": {
768
+ "type": "object",
769
+ "properties": {
770
+ "label": {
771
+ "type": "string"
772
+ },
773
+ "value": {
774
+ "type": "string"
775
+ },
776
+ "disabled": {
777
+ "type": "boolean"
778
+ }
779
+ },
780
+ "required": [
781
+ "label",
782
+ "value"
783
+ ],
784
+ "additionalProperties": false
785
+ }
786
+ },
787
+ {
788
+ "$ref": "#/$defs/expression"
789
+ }
790
+ ]
791
+ },
792
+ "ariaLabel": {
793
+ "anyOf": [
794
+ {
795
+ "type": "string"
796
+ },
797
+ {
798
+ "$ref": "#/$defs/expression"
799
+ }
800
+ ]
801
+ }
802
+ },
803
+ "required": [
804
+ "value",
805
+ "items"
806
+ ],
807
+ "additionalProperties": false
808
+ },
809
+ "children": {
810
+ "maxItems": 0
811
+ },
812
+ "slots": {
813
+ "propertyNames": {
814
+ "enum": []
815
+ }
816
+ },
817
+ "on": {
818
+ "propertyNames": {
819
+ "enum": [
820
+ "change"
821
+ ]
822
+ }
823
+ }
824
+ }
825
+ }
826
+ },
827
+ {
828
+ "if": {
829
+ "properties": {
830
+ "type": {
831
+ "const": "Stack"
832
+ }
833
+ }
834
+ },
835
+ "then": {
836
+ "description": "Simple layout composition. Prefer semantic components first and use Stack only for local arrangement.",
837
+ "properties": {
838
+ "props": {
839
+ "type": "object",
840
+ "properties": {
841
+ "direction": {
842
+ "anyOf": [
843
+ {
844
+ "type": "string",
845
+ "enum": [
846
+ "row",
847
+ "column"
848
+ ]
849
+ },
850
+ {
851
+ "$ref": "#/$defs/expression"
852
+ }
853
+ ]
854
+ },
855
+ "gap": {
856
+ "anyOf": [
857
+ {
858
+ "type": "string",
859
+ "enum": [
860
+ "none",
861
+ "xs",
862
+ "sm",
863
+ "md",
864
+ "lg"
865
+ ]
866
+ },
867
+ {
868
+ "$ref": "#/$defs/expression"
869
+ }
870
+ ]
871
+ },
872
+ "align": {
873
+ "anyOf": [
874
+ {
875
+ "type": "string",
876
+ "enum": [
877
+ "start",
878
+ "center",
879
+ "end",
880
+ "stretch"
881
+ ]
882
+ },
883
+ {
884
+ "$ref": "#/$defs/expression"
885
+ }
886
+ ]
887
+ },
888
+ "justify": {
889
+ "anyOf": [
890
+ {
891
+ "type": "string",
892
+ "enum": [
893
+ "start",
894
+ "center",
895
+ "end",
896
+ "between"
897
+ ]
898
+ },
899
+ {
900
+ "$ref": "#/$defs/expression"
901
+ }
902
+ ]
903
+ },
904
+ "wrap": {
905
+ "anyOf": [
906
+ {
907
+ "type": "boolean"
908
+ },
909
+ {
910
+ "$ref": "#/$defs/expression"
911
+ }
912
+ ]
913
+ }
914
+ },
915
+ "additionalProperties": false
916
+ },
917
+ "slots": {
918
+ "propertyNames": {
919
+ "enum": []
920
+ }
921
+ },
922
+ "on": {
923
+ "propertyNames": {
924
+ "enum": []
925
+ }
926
+ }
927
+ }
928
+ }
929
+ },
930
+ {
931
+ "if": {
932
+ "properties": {
933
+ "type": {
934
+ "const": "Text"
935
+ }
936
+ }
937
+ },
938
+ "then": {
939
+ "description": "Short application text. Do not use it when a semantic component already owns the label/description.",
940
+ "properties": {
941
+ "props": {
942
+ "type": "object",
943
+ "properties": {
944
+ "text": {
945
+ "anyOf": [
946
+ {
947
+ "type": "string"
948
+ },
949
+ {
950
+ "$ref": "#/$defs/expression"
951
+ }
952
+ ]
953
+ },
954
+ "variant": {
955
+ "anyOf": [
956
+ {
957
+ "type": "string",
958
+ "enum": [
959
+ "body",
960
+ "muted",
961
+ "caption",
962
+ "heading",
963
+ "mono"
964
+ ]
965
+ },
966
+ {
967
+ "$ref": "#/$defs/expression"
968
+ }
969
+ ]
970
+ }
971
+ },
972
+ "required": [
973
+ "text"
974
+ ],
975
+ "additionalProperties": false
976
+ },
977
+ "children": {
978
+ "maxItems": 0
979
+ },
980
+ "slots": {
981
+ "propertyNames": {
982
+ "enum": []
983
+ }
984
+ },
985
+ "on": {
986
+ "propertyNames": {
987
+ "enum": []
988
+ }
989
+ }
990
+ }
991
+ }
992
+ },
993
+ {
994
+ "if": {
995
+ "properties": {
996
+ "type": {
997
+ "const": "Button"
998
+ }
999
+ }
1000
+ },
1001
+ "then": {
1002
+ "description": "User action. Use one primary action per local task when possible. Icon is an optional host-registered icon name.",
1003
+ "properties": {
1004
+ "props": {
1005
+ "type": "object",
1006
+ "properties": {
1007
+ "label": {
1008
+ "anyOf": [
1009
+ {
1010
+ "type": "string"
1011
+ },
1012
+ {
1013
+ "$ref": "#/$defs/expression"
1014
+ }
1015
+ ]
1016
+ },
1017
+ "variant": {
1018
+ "anyOf": [
1019
+ {
1020
+ "type": "string",
1021
+ "enum": [
1022
+ "primary",
1023
+ "secondary",
1024
+ "ghost",
1025
+ "danger"
1026
+ ]
1027
+ },
1028
+ {
1029
+ "$ref": "#/$defs/expression"
1030
+ }
1031
+ ]
1032
+ },
1033
+ "size": {
1034
+ "anyOf": [
1035
+ {
1036
+ "type": "string",
1037
+ "enum": [
1038
+ "sm",
1039
+ "md",
1040
+ "lg"
1041
+ ]
1042
+ },
1043
+ {
1044
+ "$ref": "#/$defs/expression"
1045
+ }
1046
+ ]
1047
+ },
1048
+ "disabled": {
1049
+ "anyOf": [
1050
+ {
1051
+ "type": "boolean"
1052
+ },
1053
+ {
1054
+ "$ref": "#/$defs/expression"
1055
+ }
1056
+ ]
1057
+ },
1058
+ "loading": {
1059
+ "anyOf": [
1060
+ {
1061
+ "type": "boolean"
1062
+ },
1063
+ {
1064
+ "$ref": "#/$defs/expression"
1065
+ }
1066
+ ]
1067
+ },
1068
+ "icon": {
1069
+ "anyOf": [
1070
+ {
1071
+ "type": "string"
1072
+ },
1073
+ {
1074
+ "$ref": "#/$defs/expression"
1075
+ }
1076
+ ]
1077
+ }
1078
+ },
1079
+ "required": [
1080
+ "label"
1081
+ ],
1082
+ "additionalProperties": false
1083
+ },
1084
+ "children": {
1085
+ "maxItems": 0
1086
+ },
1087
+ "slots": {
1088
+ "propertyNames": {
1089
+ "enum": []
1090
+ }
1091
+ },
1092
+ "on": {
1093
+ "propertyNames": {
1094
+ "enum": [
1095
+ "press"
1096
+ ]
1097
+ }
1098
+ }
1099
+ }
1100
+ }
1101
+ },
1102
+ {
1103
+ "if": {
1104
+ "properties": {
1105
+ "type": {
1106
+ "const": "Input"
1107
+ }
1108
+ }
1109
+ },
1110
+ "then": {
1111
+ "description": "Single-line input. Use $bindState/$bindItem on value for editable state.",
1112
+ "properties": {
1113
+ "props": {
1114
+ "type": "object",
1115
+ "properties": {
1116
+ "value": {
1117
+ "anyOf": [
1118
+ {
1119
+ "type": [
1120
+ "string",
1121
+ "number"
1122
+ ]
1123
+ },
1124
+ {
1125
+ "$ref": "#/$defs/expression"
1126
+ }
1127
+ ]
1128
+ },
1129
+ "type": {
1130
+ "anyOf": [
1131
+ {
1132
+ "type": "string"
1133
+ },
1134
+ {
1135
+ "$ref": "#/$defs/expression"
1136
+ }
1137
+ ]
1138
+ },
1139
+ "placeholder": {
1140
+ "anyOf": [
1141
+ {
1142
+ "type": "string"
1143
+ },
1144
+ {
1145
+ "$ref": "#/$defs/expression"
1146
+ }
1147
+ ]
1148
+ },
1149
+ "disabled": {
1150
+ "anyOf": [
1151
+ {
1152
+ "type": "boolean"
1153
+ },
1154
+ {
1155
+ "$ref": "#/$defs/expression"
1156
+ }
1157
+ ]
1158
+ },
1159
+ "readonly": {
1160
+ "anyOf": [
1161
+ {
1162
+ "type": "boolean"
1163
+ },
1164
+ {
1165
+ "$ref": "#/$defs/expression"
1166
+ }
1167
+ ]
1168
+ },
1169
+ "invalid": {
1170
+ "anyOf": [
1171
+ {
1172
+ "type": "boolean"
1173
+ },
1174
+ {
1175
+ "$ref": "#/$defs/expression"
1176
+ }
1177
+ ]
1178
+ },
1179
+ "size": {
1180
+ "anyOf": [
1181
+ {
1182
+ "type": "string",
1183
+ "enum": [
1184
+ "sm",
1185
+ "md",
1186
+ "lg"
1187
+ ]
1188
+ },
1189
+ {
1190
+ "$ref": "#/$defs/expression"
1191
+ }
1192
+ ]
1193
+ },
1194
+ "ariaLabel": {
1195
+ "anyOf": [
1196
+ {
1197
+ "type": "string"
1198
+ },
1199
+ {
1200
+ "$ref": "#/$defs/expression"
1201
+ }
1202
+ ]
1203
+ }
1204
+ },
1205
+ "additionalProperties": false
1206
+ },
1207
+ "children": {
1208
+ "maxItems": 0
1209
+ },
1210
+ "slots": {
1211
+ "propertyNames": {
1212
+ "enum": []
1213
+ }
1214
+ },
1215
+ "on": {
1216
+ "propertyNames": {
1217
+ "enum": [
1218
+ "change"
1219
+ ]
1220
+ }
1221
+ }
1222
+ }
1223
+ }
1224
+ },
1225
+ {
1226
+ "if": {
1227
+ "properties": {
1228
+ "type": {
1229
+ "const": "Select"
1230
+ }
1231
+ }
1232
+ },
1233
+ "then": {
1234
+ "description": "Single-choice select. Use $bindState/$bindItem on value.",
1235
+ "properties": {
1236
+ "props": {
1237
+ "type": "object",
1238
+ "properties": {
1239
+ "value": {
1240
+ "anyOf": [
1241
+ {
1242
+ "type": "string"
1243
+ },
1244
+ {
1245
+ "$ref": "#/$defs/expression"
1246
+ }
1247
+ ]
1248
+ },
1249
+ "options": {
1250
+ "anyOf": [
1251
+ {
1252
+ "type": "array",
1253
+ "items": {
1254
+ "type": "object",
1255
+ "properties": {
1256
+ "label": {
1257
+ "type": "string"
1258
+ },
1259
+ "value": {
1260
+ "type": "string"
1261
+ },
1262
+ "disabled": {
1263
+ "type": "boolean"
1264
+ }
1265
+ },
1266
+ "required": [
1267
+ "label",
1268
+ "value"
1269
+ ],
1270
+ "additionalProperties": false
1271
+ }
1272
+ },
1273
+ {
1274
+ "$ref": "#/$defs/expression"
1275
+ }
1276
+ ]
1277
+ },
1278
+ "placeholder": {
1279
+ "anyOf": [
1280
+ {
1281
+ "type": "string"
1282
+ },
1283
+ {
1284
+ "$ref": "#/$defs/expression"
1285
+ }
1286
+ ]
1287
+ },
1288
+ "disabled": {
1289
+ "anyOf": [
1290
+ {
1291
+ "type": "boolean"
1292
+ },
1293
+ {
1294
+ "$ref": "#/$defs/expression"
1295
+ }
1296
+ ]
1297
+ },
1298
+ "search": {
1299
+ "anyOf": [
1300
+ {
1301
+ "type": "boolean"
1302
+ },
1303
+ {
1304
+ "$ref": "#/$defs/expression"
1305
+ }
1306
+ ]
1307
+ }
1308
+ },
1309
+ "required": [
1310
+ "options"
1311
+ ],
1312
+ "additionalProperties": false
1313
+ },
1314
+ "children": {
1315
+ "maxItems": 0
1316
+ },
1317
+ "slots": {
1318
+ "propertyNames": {
1319
+ "enum": []
1320
+ }
1321
+ },
1322
+ "on": {
1323
+ "propertyNames": {
1324
+ "enum": [
1325
+ "change"
1326
+ ]
1327
+ }
1328
+ }
1329
+ }
1330
+ }
1331
+ },
1332
+ {
1333
+ "if": {
1334
+ "properties": {
1335
+ "type": {
1336
+ "const": "Checkbox"
1337
+ }
1338
+ }
1339
+ },
1340
+ "then": {
1341
+ "description": "Boolean choice. Use $bindState/$bindItem on checked.",
1342
+ "properties": {
1343
+ "props": {
1344
+ "type": "object",
1345
+ "properties": {
1346
+ "checked": {
1347
+ "anyOf": [
1348
+ {
1349
+ "type": "boolean"
1350
+ },
1351
+ {
1352
+ "$ref": "#/$defs/expression"
1353
+ }
1354
+ ]
1355
+ },
1356
+ "label": {
1357
+ "anyOf": [
1358
+ {
1359
+ "type": "string"
1360
+ },
1361
+ {
1362
+ "$ref": "#/$defs/expression"
1363
+ }
1364
+ ]
1365
+ },
1366
+ "description": {
1367
+ "anyOf": [
1368
+ {
1369
+ "type": "string"
1370
+ },
1371
+ {
1372
+ "$ref": "#/$defs/expression"
1373
+ }
1374
+ ]
1375
+ },
1376
+ "disabled": {
1377
+ "anyOf": [
1378
+ {
1379
+ "type": "boolean"
1380
+ },
1381
+ {
1382
+ "$ref": "#/$defs/expression"
1383
+ }
1384
+ ]
1385
+ }
1386
+ },
1387
+ "additionalProperties": false
1388
+ },
1389
+ "children": {
1390
+ "maxItems": 0
1391
+ },
1392
+ "slots": {
1393
+ "propertyNames": {
1394
+ "enum": []
1395
+ }
1396
+ },
1397
+ "on": {
1398
+ "propertyNames": {
1399
+ "enum": [
1400
+ "change"
1401
+ ]
1402
+ }
1403
+ }
1404
+ }
1405
+ }
1406
+ },
1407
+ {
1408
+ "if": {
1409
+ "properties": {
1410
+ "type": {
1411
+ "const": "Switch"
1412
+ }
1413
+ }
1414
+ },
1415
+ "then": {
1416
+ "description": "Immediate on/off setting. Use $bindState/$bindItem on checked.",
1417
+ "properties": {
1418
+ "props": {
1419
+ "type": "object",
1420
+ "properties": {
1421
+ "checked": {
1422
+ "anyOf": [
1423
+ {
1424
+ "type": "boolean"
1425
+ },
1426
+ {
1427
+ "$ref": "#/$defs/expression"
1428
+ }
1429
+ ]
1430
+ },
1431
+ "label": {
1432
+ "anyOf": [
1433
+ {
1434
+ "type": "string"
1435
+ },
1436
+ {
1437
+ "$ref": "#/$defs/expression"
1438
+ }
1439
+ ]
1440
+ },
1441
+ "disabled": {
1442
+ "anyOf": [
1443
+ {
1444
+ "type": "boolean"
1445
+ },
1446
+ {
1447
+ "$ref": "#/$defs/expression"
1448
+ }
1449
+ ]
1450
+ }
1451
+ },
1452
+ "additionalProperties": false
1453
+ },
1454
+ "children": {
1455
+ "maxItems": 0
1456
+ },
1457
+ "slots": {
1458
+ "propertyNames": {
1459
+ "enum": []
1460
+ }
1461
+ },
1462
+ "on": {
1463
+ "propertyNames": {
1464
+ "enum": [
1465
+ "change"
1466
+ ]
1467
+ }
1468
+ }
1469
+ }
1470
+ }
1471
+ },
1472
+ {
1473
+ "if": {
1474
+ "properties": {
1475
+ "type": {
1476
+ "const": "RadioGroup"
1477
+ }
1478
+ }
1479
+ },
1480
+ "then": {
1481
+ "description": "Choose one of a small visible set of mutually-exclusive options.",
1482
+ "properties": {
1483
+ "props": {
1484
+ "type": "object",
1485
+ "properties": {
1486
+ "value": {
1487
+ "anyOf": [
1488
+ {
1489
+ "type": "string"
1490
+ },
1491
+ {
1492
+ "$ref": "#/$defs/expression"
1493
+ }
1494
+ ]
1495
+ },
1496
+ "options": {
1497
+ "anyOf": [
1498
+ {
1499
+ "type": "array",
1500
+ "items": {
1501
+ "type": "object",
1502
+ "properties": {
1503
+ "label": {
1504
+ "type": "string"
1505
+ },
1506
+ "value": {
1507
+ "type": "string"
1508
+ },
1509
+ "disabled": {
1510
+ "type": "boolean"
1511
+ },
1512
+ "description": {
1513
+ "type": "string"
1514
+ }
1515
+ },
1516
+ "required": [
1517
+ "label",
1518
+ "value"
1519
+ ],
1520
+ "additionalProperties": false
1521
+ }
1522
+ },
1523
+ {
1524
+ "$ref": "#/$defs/expression"
1525
+ }
1526
+ ]
1527
+ },
1528
+ "orientation": {
1529
+ "anyOf": [
1530
+ {
1531
+ "type": "string",
1532
+ "enum": [
1533
+ "vertical",
1534
+ "horizontal"
1535
+ ]
1536
+ },
1537
+ {
1538
+ "$ref": "#/$defs/expression"
1539
+ }
1540
+ ]
1541
+ },
1542
+ "disabled": {
1543
+ "anyOf": [
1544
+ {
1545
+ "type": "boolean"
1546
+ },
1547
+ {
1548
+ "$ref": "#/$defs/expression"
1549
+ }
1550
+ ]
1551
+ }
1552
+ },
1553
+ "required": [
1554
+ "options"
1555
+ ],
1556
+ "additionalProperties": false
1557
+ },
1558
+ "children": {
1559
+ "maxItems": 0
1560
+ },
1561
+ "slots": {
1562
+ "propertyNames": {
1563
+ "enum": []
1564
+ }
1565
+ },
1566
+ "on": {
1567
+ "propertyNames": {
1568
+ "enum": [
1569
+ "change"
1570
+ ]
1571
+ }
1572
+ }
1573
+ }
1574
+ }
1575
+ },
1576
+ {
1577
+ "if": {
1578
+ "properties": {
1579
+ "type": {
1580
+ "const": "Form"
1581
+ }
1582
+ }
1583
+ },
1584
+ "then": {
1585
+ "description": "Form container. Put Field components inside and bind controls to state.",
1586
+ "properties": {
1587
+ "props": {
1588
+ "type": "object",
1589
+ "properties": {
1590
+ "direction": {
1591
+ "anyOf": [
1592
+ {
1593
+ "type": "string",
1594
+ "enum": [
1595
+ "auto",
1596
+ "horizontal",
1597
+ "vertical"
1598
+ ]
1599
+ },
1600
+ {
1601
+ "$ref": "#/$defs/expression"
1602
+ }
1603
+ ]
1604
+ },
1605
+ "fieldWidth": {
1606
+ "anyOf": [
1607
+ {
1608
+ "type": "string"
1609
+ },
1610
+ {
1611
+ "$ref": "#/$defs/expression"
1612
+ }
1613
+ ]
1614
+ }
1615
+ },
1616
+ "additionalProperties": false
1617
+ },
1618
+ "slots": {
1619
+ "propertyNames": {
1620
+ "enum": []
1621
+ }
1622
+ },
1623
+ "on": {
1624
+ "propertyNames": {
1625
+ "enum": [
1626
+ "submit"
1627
+ ]
1628
+ }
1629
+ }
1630
+ }
1631
+ }
1632
+ },
1633
+ {
1634
+ "if": {
1635
+ "properties": {
1636
+ "type": {
1637
+ "const": "Field"
1638
+ }
1639
+ }
1640
+ },
1641
+ "then": {
1642
+ "description": "Labeled form field for create/edit dialogs and forms.",
1643
+ "properties": {
1644
+ "props": {
1645
+ "type": "object",
1646
+ "properties": {
1647
+ "label": {
1648
+ "anyOf": [
1649
+ {
1650
+ "type": "string"
1651
+ },
1652
+ {
1653
+ "$ref": "#/$defs/expression"
1654
+ }
1655
+ ]
1656
+ },
1657
+ "description": {
1658
+ "anyOf": [
1659
+ {
1660
+ "type": "string"
1661
+ },
1662
+ {
1663
+ "$ref": "#/$defs/expression"
1664
+ }
1665
+ ]
1666
+ },
1667
+ "help": {
1668
+ "anyOf": [
1669
+ {
1670
+ "type": "string"
1671
+ },
1672
+ {
1673
+ "$ref": "#/$defs/expression"
1674
+ }
1675
+ ]
1676
+ },
1677
+ "required": {
1678
+ "anyOf": [
1679
+ {
1680
+ "type": "boolean"
1681
+ },
1682
+ {
1683
+ "$ref": "#/$defs/expression"
1684
+ }
1685
+ ]
1686
+ },
1687
+ "fieldWidth": {
1688
+ "anyOf": [
1689
+ {
1690
+ "type": "string"
1691
+ },
1692
+ {
1693
+ "$ref": "#/$defs/expression"
1694
+ }
1695
+ ]
1696
+ },
1697
+ "direction": {
1698
+ "anyOf": [
1699
+ {
1700
+ "type": "string",
1701
+ "enum": [
1702
+ "auto",
1703
+ "horizontal",
1704
+ "vertical"
1705
+ ]
1706
+ },
1707
+ {
1708
+ "$ref": "#/$defs/expression"
1709
+ }
1710
+ ]
1711
+ }
1712
+ },
1713
+ "required": [
1714
+ "label"
1715
+ ],
1716
+ "additionalProperties": false
1717
+ },
1718
+ "slots": {
1719
+ "propertyNames": {
1720
+ "enum": []
1721
+ }
1722
+ },
1723
+ "on": {
1724
+ "propertyNames": {
1725
+ "enum": []
1726
+ }
1727
+ }
1728
+ }
1729
+ }
1730
+ },
1731
+ {
1732
+ "if": {
1733
+ "properties": {
1734
+ "type": {
1735
+ "const": "SettingsSection"
1736
+ }
1737
+ }
1738
+ },
1739
+ "then": {
1740
+ "description": "Section of related settings. Prefer this plus SettingsField for DSM settings pages.",
1741
+ "properties": {
1742
+ "props": {
1743
+ "type": "object",
1744
+ "properties": {
1745
+ "title": {
1746
+ "anyOf": [
1747
+ {
1748
+ "type": "string"
1749
+ },
1750
+ {
1751
+ "$ref": "#/$defs/expression"
1752
+ }
1753
+ ]
1754
+ },
1755
+ "collapsible": {
1756
+ "anyOf": [
1757
+ {
1758
+ "type": "boolean"
1759
+ },
1760
+ {
1761
+ "$ref": "#/$defs/expression"
1762
+ }
1763
+ ]
1764
+ },
1765
+ "open": {
1766
+ "anyOf": [
1767
+ {
1768
+ "type": "boolean"
1769
+ },
1770
+ {
1771
+ "$ref": "#/$defs/expression"
1772
+ }
1773
+ ]
1774
+ }
1775
+ },
1776
+ "required": [
1777
+ "title"
1778
+ ],
1779
+ "additionalProperties": false
1780
+ },
1781
+ "slots": {
1782
+ "propertyNames": {
1783
+ "enum": [
1784
+ "actions"
1785
+ ]
1786
+ }
1787
+ },
1788
+ "on": {
1789
+ "propertyNames": {
1790
+ "enum": [
1791
+ "openChange"
1792
+ ]
1793
+ }
1794
+ }
1795
+ }
1796
+ }
1797
+ },
1798
+ {
1799
+ "if": {
1800
+ "properties": {
1801
+ "type": {
1802
+ "const": "SettingsField"
1803
+ }
1804
+ }
1805
+ },
1806
+ "then": {
1807
+ "description": "DSM settings row with label, description and one control/content region.",
1808
+ "properties": {
1809
+ "props": {
1810
+ "type": "object",
1811
+ "properties": {
1812
+ "label": {
1813
+ "anyOf": [
1814
+ {
1815
+ "type": "string"
1816
+ },
1817
+ {
1818
+ "$ref": "#/$defs/expression"
1819
+ }
1820
+ ]
1821
+ },
1822
+ "description": {
1823
+ "anyOf": [
1824
+ {
1825
+ "type": "string"
1826
+ },
1827
+ {
1828
+ "$ref": "#/$defs/expression"
1829
+ }
1830
+ ]
1831
+ },
1832
+ "required": {
1833
+ "anyOf": [
1834
+ {
1835
+ "type": "boolean"
1836
+ },
1837
+ {
1838
+ "$ref": "#/$defs/expression"
1839
+ }
1840
+ ]
1841
+ },
1842
+ "fieldWidth": {
1843
+ "anyOf": [
1844
+ {
1845
+ "type": "string"
1846
+ },
1847
+ {
1848
+ "$ref": "#/$defs/expression"
1849
+ }
1850
+ ]
1851
+ },
1852
+ "align": {
1853
+ "anyOf": [
1854
+ {
1855
+ "type": "string",
1856
+ "enum": [
1857
+ "start",
1858
+ "center"
1859
+ ]
1860
+ },
1861
+ {
1862
+ "$ref": "#/$defs/expression"
1863
+ }
1864
+ ]
1865
+ }
1866
+ },
1867
+ "required": [
1868
+ "label"
1869
+ ],
1870
+ "additionalProperties": false
1871
+ },
1872
+ "slots": {
1873
+ "propertyNames": {
1874
+ "enum": []
1875
+ }
1876
+ },
1877
+ "on": {
1878
+ "propertyNames": {
1879
+ "enum": []
1880
+ }
1881
+ }
1882
+ }
1883
+ }
1884
+ },
1885
+ {
1886
+ "if": {
1887
+ "properties": {
1888
+ "type": {
1889
+ "const": "Surface"
1890
+ }
1891
+ }
1892
+ },
1893
+ "then": {
1894
+ "description": "Neutral bordered/raised content surface when Card semantics are not needed.",
1895
+ "properties": {
1896
+ "props": {
1897
+ "type": "object",
1898
+ "properties": {
1899
+ "padding": {
1900
+ "anyOf": [
1901
+ {
1902
+ "type": "string",
1903
+ "enum": [
1904
+ "none",
1905
+ "sm",
1906
+ "md",
1907
+ "lg"
1908
+ ]
1909
+ },
1910
+ {
1911
+ "$ref": "#/$defs/expression"
1912
+ }
1913
+ ]
1914
+ },
1915
+ "border": {
1916
+ "anyOf": [
1917
+ {
1918
+ "type": "boolean"
1919
+ },
1920
+ {
1921
+ "$ref": "#/$defs/expression"
1922
+ }
1923
+ ]
1924
+ },
1925
+ "raised": {
1926
+ "anyOf": [
1927
+ {
1928
+ "type": "boolean"
1929
+ },
1930
+ {
1931
+ "$ref": "#/$defs/expression"
1932
+ }
1933
+ ]
1934
+ }
1935
+ },
1936
+ "additionalProperties": false
1937
+ },
1938
+ "slots": {
1939
+ "propertyNames": {
1940
+ "enum": []
1941
+ }
1942
+ },
1943
+ "on": {
1944
+ "propertyNames": {
1945
+ "enum": []
1946
+ }
1947
+ }
1948
+ }
1949
+ }
1950
+ },
1951
+ {
1952
+ "if": {
1953
+ "properties": {
1954
+ "type": {
1955
+ "const": "Card"
1956
+ }
1957
+ }
1958
+ },
1959
+ "then": {
1960
+ "description": "Grouped content with optional header/actions/footer. Do not use a Card just to add spacing.",
1961
+ "properties": {
1962
+ "props": {
1963
+ "type": "object",
1964
+ "properties": {
1965
+ "title": {
1966
+ "anyOf": [
1967
+ {
1968
+ "type": "string"
1969
+ },
1970
+ {
1971
+ "$ref": "#/$defs/expression"
1972
+ }
1973
+ ]
1974
+ },
1975
+ "layoutType": {
1976
+ "anyOf": [
1977
+ {
1978
+ "type": "string",
1979
+ "enum": [
1980
+ "regular",
1981
+ "compact"
1982
+ ]
1983
+ },
1984
+ {
1985
+ "$ref": "#/$defs/expression"
1986
+ }
1987
+ ]
1988
+ },
1989
+ "expandable": {
1990
+ "anyOf": [
1991
+ {
1992
+ "type": "boolean"
1993
+ },
1994
+ {
1995
+ "$ref": "#/$defs/expression"
1996
+ }
1997
+ ]
1998
+ },
1999
+ "expanded": {
2000
+ "anyOf": [
2001
+ {
2002
+ "type": "boolean"
2003
+ },
2004
+ {
2005
+ "$ref": "#/$defs/expression"
2006
+ }
2007
+ ]
2008
+ },
2009
+ "footerAlign": {
2010
+ "anyOf": [
2011
+ {
2012
+ "type": "string",
2013
+ "enum": [
2014
+ "start",
2015
+ "end",
2016
+ "between"
2017
+ ]
2018
+ },
2019
+ {
2020
+ "$ref": "#/$defs/expression"
2021
+ }
2022
+ ]
2023
+ }
2024
+ },
2025
+ "additionalProperties": false
2026
+ },
2027
+ "slots": {
2028
+ "propertyNames": {
2029
+ "enum": [
2030
+ "header-actions",
2031
+ "footer"
2032
+ ]
2033
+ }
2034
+ },
2035
+ "on": {
2036
+ "propertyNames": {
2037
+ "enum": [
2038
+ "expandedChange"
2039
+ ]
2040
+ }
2041
+ }
2042
+ }
2043
+ }
2044
+ },
2045
+ {
2046
+ "if": {
2047
+ "properties": {
2048
+ "type": {
2049
+ "const": "Callout"
2050
+ }
2051
+ }
2052
+ },
2053
+ "then": {
2054
+ "description": "Inline information, success, warning or error message.",
2055
+ "properties": {
2056
+ "props": {
2057
+ "type": "object",
2058
+ "properties": {
2059
+ "tone": {
2060
+ "anyOf": [
2061
+ {
2062
+ "type": "string",
2063
+ "enum": [
2064
+ "info",
2065
+ "success",
2066
+ "warning",
2067
+ "danger"
2068
+ ]
2069
+ },
2070
+ {
2071
+ "$ref": "#/$defs/expression"
2072
+ }
2073
+ ]
2074
+ },
2075
+ "title": {
2076
+ "anyOf": [
2077
+ {
2078
+ "type": "string"
2079
+ },
2080
+ {
2081
+ "$ref": "#/$defs/expression"
2082
+ }
2083
+ ]
2084
+ },
2085
+ "closable": {
2086
+ "anyOf": [
2087
+ {
2088
+ "type": "boolean"
2089
+ },
2090
+ {
2091
+ "$ref": "#/$defs/expression"
2092
+ }
2093
+ ]
2094
+ }
2095
+ },
2096
+ "additionalProperties": false
2097
+ },
2098
+ "slots": {
2099
+ "propertyNames": {
2100
+ "enum": [
2101
+ "actions"
2102
+ ]
2103
+ }
2104
+ },
2105
+ "on": {
2106
+ "propertyNames": {
2107
+ "enum": [
2108
+ "close"
2109
+ ]
2110
+ }
2111
+ }
2112
+ }
2113
+ }
2114
+ },
2115
+ {
2116
+ "if": {
2117
+ "properties": {
2118
+ "type": {
2119
+ "const": "EmptyState"
2120
+ }
2121
+ }
2122
+ },
2123
+ "then": {
2124
+ "description": "Empty/no-results state with optional recovery or create actions.",
2125
+ "properties": {
2126
+ "props": {
2127
+ "type": "object",
2128
+ "properties": {
2129
+ "title": {
2130
+ "anyOf": [
2131
+ {
2132
+ "type": "string"
2133
+ },
2134
+ {
2135
+ "$ref": "#/$defs/expression"
2136
+ }
2137
+ ]
2138
+ },
2139
+ "description": {
2140
+ "anyOf": [
2141
+ {
2142
+ "type": "string"
2143
+ },
2144
+ {
2145
+ "$ref": "#/$defs/expression"
2146
+ }
2147
+ ]
2148
+ },
2149
+ "icon": {
2150
+ "anyOf": [
2151
+ {
2152
+ "type": "string"
2153
+ },
2154
+ {
2155
+ "$ref": "#/$defs/expression"
2156
+ }
2157
+ ]
2158
+ }
2159
+ },
2160
+ "required": [
2161
+ "title"
2162
+ ],
2163
+ "additionalProperties": false
2164
+ },
2165
+ "children": {
2166
+ "maxItems": 0
2167
+ },
2168
+ "slots": {
2169
+ "propertyNames": {
2170
+ "enum": [
2171
+ "actions"
2172
+ ]
2173
+ }
2174
+ },
2175
+ "on": {
2176
+ "propertyNames": {
2177
+ "enum": []
2178
+ }
2179
+ }
2180
+ }
2181
+ }
2182
+ },
2183
+ {
2184
+ "if": {
2185
+ "properties": {
2186
+ "type": {
2187
+ "const": "Progress"
2188
+ }
2189
+ }
2190
+ },
2191
+ "then": {
2192
+ "description": "Linear determinate progress. Domain-specific progress visualizations should be custom components.",
2193
+ "properties": {
2194
+ "props": {
2195
+ "type": "object",
2196
+ "properties": {
2197
+ "value": {
2198
+ "anyOf": [
2199
+ {
2200
+ "type": "number"
2201
+ },
2202
+ {
2203
+ "$ref": "#/$defs/expression"
2204
+ }
2205
+ ]
2206
+ },
2207
+ "max": {
2208
+ "anyOf": [
2209
+ {
2210
+ "type": "number"
2211
+ },
2212
+ {
2213
+ "$ref": "#/$defs/expression"
2214
+ }
2215
+ ]
2216
+ },
2217
+ "label": {
2218
+ "anyOf": [
2219
+ {
2220
+ "type": "string"
2221
+ },
2222
+ {
2223
+ "$ref": "#/$defs/expression"
2224
+ }
2225
+ ]
2226
+ },
2227
+ "valueLabel": {
2228
+ "anyOf": [
2229
+ {
2230
+ "type": "string"
2231
+ },
2232
+ {
2233
+ "$ref": "#/$defs/expression"
2234
+ }
2235
+ ]
2236
+ }
2237
+ },
2238
+ "additionalProperties": false
2239
+ },
2240
+ "children": {
2241
+ "maxItems": 0
2242
+ },
2243
+ "slots": {
2244
+ "propertyNames": {
2245
+ "enum": []
2246
+ }
2247
+ },
2248
+ "on": {
2249
+ "propertyNames": {
2250
+ "enum": []
2251
+ }
2252
+ }
2253
+ }
2254
+ }
2255
+ },
2256
+ {
2257
+ "if": {
2258
+ "properties": {
2259
+ "type": {
2260
+ "const": "Badge"
2261
+ }
2262
+ }
2263
+ },
2264
+ "then": {
2265
+ "description": "Short status/category badge.",
2266
+ "properties": {
2267
+ "props": {
2268
+ "type": "object",
2269
+ "properties": {
2270
+ "text": {
2271
+ "anyOf": [
2272
+ {
2273
+ "type": "string"
2274
+ },
2275
+ {
2276
+ "$ref": "#/$defs/expression"
2277
+ }
2278
+ ]
2279
+ },
2280
+ "tone": {
2281
+ "anyOf": [
2282
+ {
2283
+ "type": "string",
2284
+ "enum": [
2285
+ "neutral",
2286
+ "info",
2287
+ "success",
2288
+ "warning",
2289
+ "danger"
2290
+ ]
2291
+ },
2292
+ {
2293
+ "$ref": "#/$defs/expression"
2294
+ }
2295
+ ]
2296
+ }
2297
+ },
2298
+ "required": [
2299
+ "text"
2300
+ ],
2301
+ "additionalProperties": false
2302
+ },
2303
+ "children": {
2304
+ "maxItems": 0
2305
+ },
2306
+ "slots": {
2307
+ "propertyNames": {
2308
+ "enum": []
2309
+ }
2310
+ },
2311
+ "on": {
2312
+ "propertyNames": {
2313
+ "enum": []
2314
+ }
2315
+ }
2316
+ }
2317
+ }
2318
+ },
2319
+ {
2320
+ "if": {
2321
+ "properties": {
2322
+ "type": {
2323
+ "const": "Dialog"
2324
+ }
2325
+ }
2326
+ },
2327
+ "then": {
2328
+ "description": "Modal task/dialog. Bind open to state. Put confirmation or form actions in footer.",
2329
+ "properties": {
2330
+ "props": {
2331
+ "type": "object",
2332
+ "properties": {
2333
+ "open": {
2334
+ "anyOf": [
2335
+ {
2336
+ "type": "boolean"
2337
+ },
2338
+ {
2339
+ "$ref": "#/$defs/expression"
2340
+ }
2341
+ ]
2342
+ },
2343
+ "title": {
2344
+ "anyOf": [
2345
+ {
2346
+ "type": "string"
2347
+ },
2348
+ {
2349
+ "$ref": "#/$defs/expression"
2350
+ }
2351
+ ]
2352
+ },
2353
+ "description": {
2354
+ "anyOf": [
2355
+ {
2356
+ "type": "string"
2357
+ },
2358
+ {
2359
+ "$ref": "#/$defs/expression"
2360
+ }
2361
+ ]
2362
+ },
2363
+ "width": {
2364
+ "anyOf": [
2365
+ {
2366
+ "type": "string"
2367
+ },
2368
+ {
2369
+ "$ref": "#/$defs/expression"
2370
+ }
2371
+ ]
2372
+ },
2373
+ "showClose": {
2374
+ "anyOf": [
2375
+ {
2376
+ "type": "boolean"
2377
+ },
2378
+ {
2379
+ "$ref": "#/$defs/expression"
2380
+ }
2381
+ ]
2382
+ }
2383
+ },
2384
+ "additionalProperties": false
2385
+ },
2386
+ "slots": {
2387
+ "propertyNames": {
2388
+ "enum": [
2389
+ "footer"
2390
+ ]
2391
+ }
2392
+ },
2393
+ "on": {
2394
+ "propertyNames": {
2395
+ "enum": [
2396
+ "openChange"
2397
+ ]
2398
+ }
2399
+ }
2400
+ }
2401
+ }
2402
+ },
2403
+ {
2404
+ "if": {
2405
+ "properties": {
2406
+ "type": {
2407
+ "const": "DataTable"
2408
+ }
2409
+ }
2410
+ },
2411
+ "then": {
2412
+ "description": "Simple resource table where cells display scalar row fields. Use an app extension component for rich/custom cells and row actions.",
2413
+ "properties": {
2414
+ "props": {
2415
+ "type": "object",
2416
+ "properties": {
2417
+ "columns": {
2418
+ "anyOf": [
2419
+ {
2420
+ "type": "array",
2421
+ "items": {
2422
+ "type": "object",
2423
+ "properties": {
2424
+ "key": {
2425
+ "type": "string"
2426
+ },
2427
+ "label": {
2428
+ "type": "string"
2429
+ },
2430
+ "width": {
2431
+ "type": "string"
2432
+ },
2433
+ "align": {
2434
+ "type": "string",
2435
+ "enum": [
2436
+ "left",
2437
+ "center",
2438
+ "right"
2439
+ ]
2440
+ }
2441
+ },
2442
+ "required": [
2443
+ "key",
2444
+ "label"
2445
+ ],
2446
+ "additionalProperties": false
2447
+ }
2448
+ },
2449
+ {
2450
+ "$ref": "#/$defs/expression"
2451
+ }
2452
+ ]
2453
+ },
2454
+ "rows": {
2455
+ "anyOf": [
2456
+ {
2457
+ "type": "array",
2458
+ "items": {
2459
+ "type": "object",
2460
+ "propertyNames": {
2461
+ "type": "string"
2462
+ },
2463
+ "additionalProperties": {}
2464
+ }
2465
+ },
2466
+ {
2467
+ "$ref": "#/$defs/expression"
2468
+ }
2469
+ ]
2470
+ },
2471
+ "rowKey": {
2472
+ "anyOf": [
2473
+ {
2474
+ "type": "string"
2475
+ },
2476
+ {
2477
+ "$ref": "#/$defs/expression"
2478
+ }
2479
+ ]
2480
+ },
2481
+ "emptyText": {
2482
+ "anyOf": [
2483
+ {
2484
+ "type": "string"
2485
+ },
2486
+ {
2487
+ "$ref": "#/$defs/expression"
2488
+ }
2489
+ ]
2490
+ },
2491
+ "compact": {
2492
+ "anyOf": [
2493
+ {
2494
+ "type": "boolean"
2495
+ },
2496
+ {
2497
+ "$ref": "#/$defs/expression"
2498
+ }
2499
+ ]
2500
+ },
2501
+ "mobileView": {
2502
+ "anyOf": [
2503
+ {
2504
+ "type": "string",
2505
+ "enum": [
2506
+ "auto",
2507
+ "cards",
2508
+ "table"
2509
+ ]
2510
+ },
2511
+ {
2512
+ "$ref": "#/$defs/expression"
2513
+ }
2514
+ ]
2515
+ }
2516
+ },
2517
+ "required": [
2518
+ "columns",
2519
+ "rows"
2520
+ ],
2521
+ "additionalProperties": false
2522
+ },
2523
+ "children": {
2524
+ "maxItems": 0
2525
+ },
2526
+ "slots": {
2527
+ "propertyNames": {
2528
+ "enum": []
2529
+ }
2530
+ },
2531
+ "on": {
2532
+ "propertyNames": {
2533
+ "enum": []
2534
+ }
2535
+ }
2536
+ }
2537
+ }
2538
+ },
2539
+ {
2540
+ "if": {
2541
+ "properties": {
2542
+ "type": {
2543
+ "const": "ResourceList"
2544
+ }
2545
+ }
2546
+ },
2547
+ "then": {
2548
+ "description": "Common resource collection pattern: optional toolbar plus a simple table. For domain-specific row rendering, extend the catalog with a custom list/table component.",
2549
+ "properties": {
2550
+ "props": {
2551
+ "type": "object",
2552
+ "properties": {
2553
+ "columns": {
2554
+ "anyOf": [
2555
+ {
2556
+ "type": "array",
2557
+ "items": {
2558
+ "type": "object",
2559
+ "properties": {
2560
+ "key": {
2561
+ "type": "string"
2562
+ },
2563
+ "label": {
2564
+ "type": "string"
2565
+ },
2566
+ "width": {
2567
+ "type": "string"
2568
+ },
2569
+ "align": {
2570
+ "type": "string",
2571
+ "enum": [
2572
+ "left",
2573
+ "center",
2574
+ "right"
2575
+ ]
2576
+ }
2577
+ },
2578
+ "required": [
2579
+ "key",
2580
+ "label"
2581
+ ],
2582
+ "additionalProperties": false
2583
+ }
2584
+ },
2585
+ {
2586
+ "$ref": "#/$defs/expression"
2587
+ }
2588
+ ]
2589
+ },
2590
+ "rows": {
2591
+ "anyOf": [
2592
+ {
2593
+ "type": "array",
2594
+ "items": {
2595
+ "type": "object",
2596
+ "propertyNames": {
2597
+ "type": "string"
2598
+ },
2599
+ "additionalProperties": {}
2600
+ }
2601
+ },
2602
+ {
2603
+ "$ref": "#/$defs/expression"
2604
+ }
2605
+ ]
2606
+ },
2607
+ "rowKey": {
2608
+ "anyOf": [
2609
+ {
2610
+ "type": "string"
2611
+ },
2612
+ {
2613
+ "$ref": "#/$defs/expression"
2614
+ }
2615
+ ]
2616
+ },
2617
+ "emptyText": {
2618
+ "anyOf": [
2619
+ {
2620
+ "type": "string"
2621
+ },
2622
+ {
2623
+ "$ref": "#/$defs/expression"
2624
+ }
2625
+ ]
2626
+ },
2627
+ "compact": {
2628
+ "anyOf": [
2629
+ {
2630
+ "type": "boolean"
2631
+ },
2632
+ {
2633
+ "$ref": "#/$defs/expression"
2634
+ }
2635
+ ]
2636
+ },
2637
+ "mobileView": {
2638
+ "anyOf": [
2639
+ {
2640
+ "type": "string",
2641
+ "enum": [
2642
+ "auto",
2643
+ "cards",
2644
+ "table"
2645
+ ]
2646
+ },
2647
+ {
2648
+ "$ref": "#/$defs/expression"
2649
+ }
2650
+ ]
2651
+ }
2652
+ },
2653
+ "required": [
2654
+ "columns",
2655
+ "rows"
2656
+ ],
2657
+ "additionalProperties": false
2658
+ },
2659
+ "children": {
2660
+ "maxItems": 0
2661
+ },
2662
+ "slots": {
2663
+ "propertyNames": {
2664
+ "enum": [
2665
+ "toolbar"
2666
+ ]
2667
+ }
2668
+ },
2669
+ "on": {
2670
+ "propertyNames": {
2671
+ "enum": []
2672
+ }
2673
+ }
2674
+ }
2675
+ }
2676
+ },
2677
+ {
2678
+ "if": {
2679
+ "properties": {
2680
+ "type": {
2681
+ "const": "Loading"
2682
+ }
2683
+ }
2684
+ },
2685
+ "then": {
2686
+ "description": "Centered loading state for a page or bounded region.",
2687
+ "properties": {
2688
+ "props": {
2689
+ "type": "object",
2690
+ "properties": {
2691
+ "text": {
2692
+ "anyOf": [
2693
+ {
2694
+ "type": "string"
2695
+ },
2696
+ {
2697
+ "$ref": "#/$defs/expression"
2698
+ }
2699
+ ]
2700
+ }
2701
+ },
2702
+ "additionalProperties": false
2703
+ },
2704
+ "children": {
2705
+ "maxItems": 0
2706
+ },
2707
+ "slots": {
2708
+ "propertyNames": {
2709
+ "enum": []
2710
+ }
2711
+ },
2712
+ "on": {
2713
+ "propertyNames": {
2714
+ "enum": []
2715
+ }
2716
+ }
2717
+ }
2718
+ }
2719
+ }
2720
+ ]
2721
+ }
2722
+ }
2723
+ }