@elmethis/core 0.9.0 → 0.9.2

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,1199 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://46ki75.github.io/elmethis/a2ui/v0_9/block_catalog.json",
4
+ "catalogId": "https://46ki75.github.io/elmethis/a2ui/v0_9/block_catalog.json",
5
+ "title": "Elmethis Block Catalog",
6
+ "description": "Block-level A2UI components used by the @elmethis renderers (typography, media, code, math, table, tabs). Extends — does not replace — the A2UI Basic Catalog.",
7
+ "components": {
8
+ "RichText": {
9
+ "type": "object",
10
+ "allOf": [
11
+ {
12
+ "$ref": "#/$defs/ComponentCommon"
13
+ },
14
+ {
15
+ "$ref": "#/$defs/CatalogComponentCommon"
16
+ },
17
+ {
18
+ "type": "object",
19
+ "properties": {
20
+ "component": {
21
+ "const": "RichText"
22
+ },
23
+ "text": {
24
+ "$ref": "#/$defs/DynamicString",
25
+ "description": "The text content to display."
26
+ },
27
+ "decoration": {
28
+ "type": "array",
29
+ "items": {
30
+ "type": "string",
31
+ "enum": [
32
+ "bold",
33
+ "italic",
34
+ "underline",
35
+ "strikethrough",
36
+ "code",
37
+ "katex"
38
+ ]
39
+ },
40
+ "description": "Text decorations to apply."
41
+ },
42
+ "ruby": {
43
+ "type": "string",
44
+ "description": "Ruby annotation text."
45
+ },
46
+ "color": {
47
+ "type": "string",
48
+ "description": "Text color (e.g. '#ff0000' or 'red')."
49
+ }
50
+ },
51
+ "required": [
52
+ "component",
53
+ "text"
54
+ ]
55
+ }
56
+ ],
57
+ "unevaluatedProperties": false
58
+ },
59
+ "LinkText": {
60
+ "type": "object",
61
+ "allOf": [
62
+ {
63
+ "$ref": "#/$defs/ComponentCommon"
64
+ },
65
+ {
66
+ "$ref": "#/$defs/CatalogComponentCommon"
67
+ },
68
+ {
69
+ "type": "object",
70
+ "properties": {
71
+ "component": {
72
+ "const": "LinkText"
73
+ },
74
+ "text": {
75
+ "$ref": "#/$defs/DynamicString",
76
+ "description": "The visible link text."
77
+ },
78
+ "href": {
79
+ "type": "string",
80
+ "description": "The URL to link to."
81
+ },
82
+ "favicon": {
83
+ "type": "string",
84
+ "description": "The URL of the favicon to show before the text."
85
+ }
86
+ },
87
+ "required": [
88
+ "component",
89
+ "text",
90
+ "href"
91
+ ]
92
+ }
93
+ ],
94
+ "unevaluatedProperties": false
95
+ },
96
+ "Icon": {
97
+ "type": "object",
98
+ "allOf": [
99
+ {
100
+ "$ref": "#/$defs/ComponentCommon"
101
+ },
102
+ {
103
+ "$ref": "#/$defs/CatalogComponentCommon"
104
+ },
105
+ {
106
+ "type": "object",
107
+ "properties": {
108
+ "component": {
109
+ "const": "Icon"
110
+ },
111
+ "src": {
112
+ "type": "string",
113
+ "description": "The source URL of the icon image."
114
+ },
115
+ "alt": {
116
+ "type": "string",
117
+ "description": "Accessible alt text for the icon."
118
+ }
119
+ },
120
+ "required": [
121
+ "component",
122
+ "src"
123
+ ]
124
+ }
125
+ ],
126
+ "unevaluatedProperties": false
127
+ },
128
+ "Row": {
129
+ "type": "object",
130
+ "allOf": [
131
+ {
132
+ "$ref": "#/$defs/ComponentCommon"
133
+ },
134
+ {
135
+ "$ref": "#/$defs/CatalogComponentCommon"
136
+ },
137
+ {
138
+ "type": "object",
139
+ "properties": {
140
+ "component": {
141
+ "const": "Row"
142
+ },
143
+ "children": {
144
+ "$ref": "#/$defs/ChildList",
145
+ "description": "Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID."
146
+ },
147
+ "justify": {
148
+ "type": "string",
149
+ "enum": [
150
+ "center",
151
+ "end",
152
+ "spaceAround",
153
+ "spaceBetween",
154
+ "spaceEvenly",
155
+ "start",
156
+ "stretch"
157
+ ],
158
+ "default": "start",
159
+ "description": "Defines the arrangement of children along the main axis (horizontally). Use 'spaceBetween' to push items to the edges, or 'start'/'end'/'center' to pack them together."
160
+ },
161
+ "align": {
162
+ "type": "string",
163
+ "enum": [
164
+ "start",
165
+ "center",
166
+ "end",
167
+ "stretch"
168
+ ],
169
+ "default": "stretch",
170
+ "description": "Defines the alignment of children along the cross axis (vertically). This is similar to the CSS 'align-items' property, but uses camelCase values (e.g., 'start')."
171
+ }
172
+ },
173
+ "required": [
174
+ "component",
175
+ "children"
176
+ ]
177
+ }
178
+ ],
179
+ "unevaluatedProperties": false
180
+ },
181
+ "Column": {
182
+ "type": "object",
183
+ "allOf": [
184
+ {
185
+ "$ref": "#/$defs/ComponentCommon"
186
+ },
187
+ {
188
+ "$ref": "#/$defs/CatalogComponentCommon"
189
+ },
190
+ {
191
+ "type": "object",
192
+ "properties": {
193
+ "component": {
194
+ "const": "Column"
195
+ },
196
+ "children": {
197
+ "$ref": "#/$defs/ChildList",
198
+ "description": "Ordered list of child component IDs."
199
+ },
200
+ "justify": {
201
+ "type": "string",
202
+ "enum": [
203
+ "start",
204
+ "end",
205
+ "center",
206
+ "spaceBetween",
207
+ "spaceAround",
208
+ "spaceEvenly",
209
+ "stretch"
210
+ ],
211
+ "description": "Justify-content alignment for children."
212
+ },
213
+ "align": {
214
+ "type": "string",
215
+ "enum": [
216
+ "start",
217
+ "end",
218
+ "center",
219
+ "stretch"
220
+ ],
221
+ "description": "Align-items alignment for children."
222
+ },
223
+ "widthRatio": {
224
+ "type": "number",
225
+ "description": "Relative flex width of this column when inside a ColumnList. Defaults to 1."
226
+ }
227
+ },
228
+ "required": [
229
+ "component",
230
+ "children"
231
+ ]
232
+ }
233
+ ],
234
+ "unevaluatedProperties": false
235
+ },
236
+ "ColumnList": {
237
+ "type": "object",
238
+ "allOf": [
239
+ {
240
+ "$ref": "#/$defs/ComponentCommon"
241
+ },
242
+ {
243
+ "$ref": "#/$defs/CatalogComponentCommon"
244
+ },
245
+ {
246
+ "type": "object",
247
+ "properties": {
248
+ "component": {
249
+ "const": "ColumnList"
250
+ },
251
+ "children": {
252
+ "type": "array",
253
+ "items": {
254
+ "type": "string"
255
+ },
256
+ "description": "Ordered list of Column component IDs."
257
+ }
258
+ },
259
+ "required": [
260
+ "component",
261
+ "children"
262
+ ]
263
+ }
264
+ ],
265
+ "unevaluatedProperties": false
266
+ },
267
+ "Heading": {
268
+ "type": "object",
269
+ "allOf": [
270
+ {
271
+ "$ref": "#/$defs/ComponentCommon"
272
+ },
273
+ {
274
+ "$ref": "#/$defs/CatalogComponentCommon"
275
+ },
276
+ {
277
+ "type": "object",
278
+ "properties": {
279
+ "component": {
280
+ "const": "Heading"
281
+ },
282
+ "level": {
283
+ "type": "number",
284
+ "enum": [
285
+ 1,
286
+ 2,
287
+ 3,
288
+ 4,
289
+ 5,
290
+ 6
291
+ ],
292
+ "description": "Heading level 1–6, maps to h1–h6."
293
+ },
294
+ "children": {
295
+ "$ref": "#/$defs/ChildList",
296
+ "description": "Ordered list of inline component IDs (RichText, LinkText, Icon, etc.) that form the heading text."
297
+ }
298
+ },
299
+ "required": [
300
+ "component",
301
+ "level",
302
+ "children"
303
+ ]
304
+ }
305
+ ],
306
+ "unevaluatedProperties": false
307
+ },
308
+ "Paragraph": {
309
+ "type": "object",
310
+ "allOf": [
311
+ {
312
+ "$ref": "#/$defs/ComponentCommon"
313
+ },
314
+ {
315
+ "$ref": "#/$defs/CatalogComponentCommon"
316
+ },
317
+ {
318
+ "type": "object",
319
+ "properties": {
320
+ "component": {
321
+ "const": "Paragraph"
322
+ },
323
+ "children": {
324
+ "$ref": "#/$defs/ChildList",
325
+ "description": "Ordered list of inline component IDs (RichText, LinkText, etc.), or a list template."
326
+ },
327
+ "color": {
328
+ "type": "string",
329
+ "description": "Text color applied to the paragraph."
330
+ },
331
+ "backgroundColor": {
332
+ "type": "string",
333
+ "description": "Background color applied to the paragraph."
334
+ }
335
+ },
336
+ "required": [
337
+ "component",
338
+ "children"
339
+ ]
340
+ }
341
+ ],
342
+ "unevaluatedProperties": false
343
+ },
344
+ "List": {
345
+ "type": "object",
346
+ "allOf": [
347
+ {
348
+ "$ref": "#/$defs/ComponentCommon"
349
+ },
350
+ {
351
+ "$ref": "#/$defs/CatalogComponentCommon"
352
+ },
353
+ {
354
+ "type": "object",
355
+ "properties": {
356
+ "component": {
357
+ "const": "List"
358
+ },
359
+ "children": {
360
+ "type": "array",
361
+ "items": {
362
+ "type": "string"
363
+ },
364
+ "description": "Ordered list of ListItem component IDs."
365
+ },
366
+ "style": {
367
+ "type": "string",
368
+ "enum": [
369
+ "unordered",
370
+ "ordered"
371
+ ],
372
+ "default": "unordered",
373
+ "description": "The list style: bullet points or numbered."
374
+ }
375
+ },
376
+ "required": [
377
+ "component",
378
+ "children"
379
+ ]
380
+ }
381
+ ],
382
+ "unevaluatedProperties": false
383
+ },
384
+ "ListItem": {
385
+ "type": "object",
386
+ "allOf": [
387
+ {
388
+ "$ref": "#/$defs/ComponentCommon"
389
+ },
390
+ {
391
+ "$ref": "#/$defs/CatalogComponentCommon"
392
+ },
393
+ {
394
+ "type": "object",
395
+ "properties": {
396
+ "component": {
397
+ "const": "ListItem"
398
+ },
399
+ "children": {
400
+ "type": "array",
401
+ "items": {
402
+ "type": "string"
403
+ },
404
+ "description": "Ordered list of child component IDs inside this list item."
405
+ }
406
+ },
407
+ "required": [
408
+ "component",
409
+ "children"
410
+ ]
411
+ }
412
+ ],
413
+ "unevaluatedProperties": false
414
+ },
415
+ "BlockQuote": {
416
+ "type": "object",
417
+ "allOf": [
418
+ {
419
+ "$ref": "#/$defs/ComponentCommon"
420
+ },
421
+ {
422
+ "$ref": "#/$defs/CatalogComponentCommon"
423
+ },
424
+ {
425
+ "type": "object",
426
+ "properties": {
427
+ "component": {
428
+ "const": "BlockQuote"
429
+ },
430
+ "cite": {
431
+ "type": "string",
432
+ "description": "Optional citation URL for the quoted source."
433
+ },
434
+ "children": {
435
+ "$ref": "#/$defs/ChildList",
436
+ "description": "Ordered list of child component IDs that make up the quote body."
437
+ }
438
+ },
439
+ "required": [
440
+ "component",
441
+ "children"
442
+ ]
443
+ }
444
+ ],
445
+ "unevaluatedProperties": false
446
+ },
447
+ "Callout": {
448
+ "type": "object",
449
+ "allOf": [
450
+ {
451
+ "$ref": "#/$defs/ComponentCommon"
452
+ },
453
+ {
454
+ "$ref": "#/$defs/CatalogComponentCommon"
455
+ },
456
+ {
457
+ "type": "object",
458
+ "properties": {
459
+ "component": {
460
+ "const": "Callout"
461
+ },
462
+ "type": {
463
+ "type": "string",
464
+ "enum": [
465
+ "note",
466
+ "tip",
467
+ "important",
468
+ "warning",
469
+ "caution"
470
+ ],
471
+ "description": "Callout severity/type. Determines the icon and accent color."
472
+ },
473
+ "children": {
474
+ "$ref": "#/$defs/ChildList",
475
+ "description": "Ordered list of child component IDs that make up the callout body."
476
+ }
477
+ },
478
+ "required": [
479
+ "component",
480
+ "children"
481
+ ]
482
+ }
483
+ ],
484
+ "unevaluatedProperties": false
485
+ },
486
+ "Divider": {
487
+ "type": "object",
488
+ "allOf": [
489
+ {
490
+ "$ref": "#/$defs/ComponentCommon"
491
+ },
492
+ {
493
+ "$ref": "#/$defs/CatalogComponentCommon"
494
+ },
495
+ {
496
+ "type": "object",
497
+ "properties": {
498
+ "component": {
499
+ "const": "Divider"
500
+ }
501
+ },
502
+ "required": [
503
+ "component"
504
+ ]
505
+ }
506
+ ],
507
+ "unevaluatedProperties": false
508
+ },
509
+ "Toggle": {
510
+ "type": "object",
511
+ "allOf": [
512
+ {
513
+ "$ref": "#/$defs/ComponentCommon"
514
+ },
515
+ {
516
+ "$ref": "#/$defs/CatalogComponentCommon"
517
+ },
518
+ {
519
+ "type": "object",
520
+ "properties": {
521
+ "component": {
522
+ "const": "Toggle"
523
+ },
524
+ "summary": {
525
+ "$ref": "#/$defs/ChildList",
526
+ "description": "Ordered list of inline component IDs that form the visible toggle label."
527
+ },
528
+ "children": {
529
+ "$ref": "#/$defs/ChildList",
530
+ "description": "Ordered list of component IDs shown when the toggle is expanded."
531
+ }
532
+ },
533
+ "required": [
534
+ "component",
535
+ "summary",
536
+ "children"
537
+ ]
538
+ }
539
+ ],
540
+ "unevaluatedProperties": false
541
+ },
542
+ "Bookmark": {
543
+ "type": "object",
544
+ "allOf": [
545
+ {
546
+ "$ref": "#/$defs/ComponentCommon"
547
+ },
548
+ {
549
+ "$ref": "#/$defs/CatalogComponentCommon"
550
+ },
551
+ {
552
+ "type": "object",
553
+ "properties": {
554
+ "component": {
555
+ "const": "Bookmark"
556
+ },
557
+ "url": {
558
+ "type": "string",
559
+ "description": "The URL the bookmark links to."
560
+ },
561
+ "title": {
562
+ "type": "string",
563
+ "description": "Display title of the bookmarked page."
564
+ },
565
+ "description": {
566
+ "type": "string",
567
+ "description": "Short description or excerpt of the page."
568
+ },
569
+ "image": {
570
+ "type": "string",
571
+ "description": "URL of the OGP/thumbnail image for the bookmark."
572
+ }
573
+ },
574
+ "required": [
575
+ "component",
576
+ "url"
577
+ ]
578
+ }
579
+ ],
580
+ "unevaluatedProperties": false
581
+ },
582
+ "File": {
583
+ "type": "object",
584
+ "allOf": [
585
+ {
586
+ "$ref": "#/$defs/ComponentCommon"
587
+ },
588
+ {
589
+ "$ref": "#/$defs/CatalogComponentCommon"
590
+ },
591
+ {
592
+ "type": "object",
593
+ "properties": {
594
+ "component": {
595
+ "const": "File"
596
+ },
597
+ "src": {
598
+ "type": "string",
599
+ "description": "The source URL of the file to download."
600
+ },
601
+ "name": {
602
+ "type": "string",
603
+ "description": "Human-readable display name for the file."
604
+ }
605
+ },
606
+ "required": [
607
+ "component",
608
+ "src"
609
+ ]
610
+ }
611
+ ],
612
+ "unevaluatedProperties": false
613
+ },
614
+ "BlockImage": {
615
+ "type": "object",
616
+ "allOf": [
617
+ {
618
+ "$ref": "#/$defs/ComponentCommon"
619
+ },
620
+ {
621
+ "$ref": "#/$defs/CatalogComponentCommon"
622
+ },
623
+ {
624
+ "type": "object",
625
+ "properties": {
626
+ "component": {
627
+ "const": "BlockImage"
628
+ },
629
+ "src": {
630
+ "type": "string",
631
+ "description": "The source URL of the image."
632
+ },
633
+ "alt": {
634
+ "type": "string",
635
+ "description": "Accessible alt text for the image."
636
+ },
637
+ "width": {
638
+ "type": "number",
639
+ "description": "Intrinsic image width in pixels."
640
+ },
641
+ "height": {
642
+ "type": "number",
643
+ "description": "Intrinsic image height in pixels."
644
+ },
645
+ "srcset": {
646
+ "type": "string",
647
+ "description": "srcset attribute for responsive images."
648
+ },
649
+ "sizes": {
650
+ "type": "string",
651
+ "description": "sizes attribute for responsive images."
652
+ },
653
+ "caption": {
654
+ "type": "string",
655
+ "description": "Optional caption shown below the image."
656
+ }
657
+ },
658
+ "required": [
659
+ "component",
660
+ "src"
661
+ ]
662
+ }
663
+ ],
664
+ "unevaluatedProperties": false
665
+ },
666
+ "CodeBlock": {
667
+ "type": "object",
668
+ "allOf": [
669
+ {
670
+ "$ref": "#/$defs/ComponentCommon"
671
+ },
672
+ {
673
+ "$ref": "#/$defs/CatalogComponentCommon"
674
+ },
675
+ {
676
+ "type": "object",
677
+ "properties": {
678
+ "component": {
679
+ "const": "CodeBlock"
680
+ },
681
+ "code": {
682
+ "type": "string",
683
+ "description": "The source code content to display."
684
+ },
685
+ "language": {
686
+ "type": "string",
687
+ "description": "The programming language of the code block, used for syntax highlighting (e.g. 'typescript', 'python')."
688
+ },
689
+ "caption": {
690
+ "type": "string",
691
+ "description": "An optional caption displayed above the code block."
692
+ }
693
+ },
694
+ "required": [
695
+ "component",
696
+ "code"
697
+ ]
698
+ }
699
+ ],
700
+ "unevaluatedProperties": false
701
+ },
702
+ "Katex": {
703
+ "type": "object",
704
+ "allOf": [
705
+ {
706
+ "$ref": "#/$defs/ComponentCommon"
707
+ },
708
+ {
709
+ "$ref": "#/$defs/CatalogComponentCommon"
710
+ },
711
+ {
712
+ "type": "object",
713
+ "properties": {
714
+ "component": {
715
+ "const": "Katex"
716
+ },
717
+ "expression": {
718
+ "type": "string",
719
+ "description": "The KaTeX/LaTeX expression to render in display mode."
720
+ }
721
+ },
722
+ "required": [
723
+ "component",
724
+ "expression"
725
+ ]
726
+ }
727
+ ],
728
+ "unevaluatedProperties": false
729
+ },
730
+ "Mermaid": {
731
+ "type": "object",
732
+ "allOf": [
733
+ {
734
+ "$ref": "#/$defs/ComponentCommon"
735
+ },
736
+ {
737
+ "$ref": "#/$defs/CatalogComponentCommon"
738
+ },
739
+ {
740
+ "type": "object",
741
+ "properties": {
742
+ "component": {
743
+ "const": "Mermaid"
744
+ },
745
+ "code": {
746
+ "type": "string",
747
+ "description": "The Mermaid diagram definition string to render."
748
+ }
749
+ },
750
+ "required": [
751
+ "component",
752
+ "code"
753
+ ]
754
+ }
755
+ ],
756
+ "unevaluatedProperties": false
757
+ },
758
+ "ContentTab": {
759
+ "type": "object",
760
+ "allOf": [
761
+ {
762
+ "$ref": "#/$defs/ComponentCommon"
763
+ },
764
+ {
765
+ "$ref": "#/$defs/CatalogComponentCommon"
766
+ },
767
+ {
768
+ "type": "object",
769
+ "properties": {
770
+ "component": {
771
+ "const": "ContentTab"
772
+ },
773
+ "label": {
774
+ "$ref": "#/$defs/ChildList",
775
+ "description": "Inline content that renders the tab's button (typically RichText / LinkText / Icon ids), or a list template."
776
+ },
777
+ "content": {
778
+ "$ref": "#/$defs/ChildList",
779
+ "description": "Block content shown when this tab is active, or a list template."
780
+ }
781
+ },
782
+ "required": [
783
+ "component",
784
+ "label",
785
+ "content"
786
+ ]
787
+ }
788
+ ],
789
+ "unevaluatedProperties": false
790
+ },
791
+ "ContentTabs": {
792
+ "type": "object",
793
+ "allOf": [
794
+ {
795
+ "$ref": "#/$defs/ComponentCommon"
796
+ },
797
+ {
798
+ "$ref": "#/$defs/CatalogComponentCommon"
799
+ },
800
+ {
801
+ "type": "object",
802
+ "properties": {
803
+ "component": {
804
+ "const": "ContentTabs"
805
+ },
806
+ "children": {
807
+ "type": "array",
808
+ "items": {
809
+ "type": "string"
810
+ },
811
+ "description": "Ordered list of ContentTab component IDs."
812
+ }
813
+ },
814
+ "required": [
815
+ "component",
816
+ "children"
817
+ ]
818
+ }
819
+ ],
820
+ "unevaluatedProperties": false
821
+ },
822
+ "Table": {
823
+ "type": "object",
824
+ "allOf": [
825
+ {
826
+ "$ref": "#/$defs/ComponentCommon"
827
+ },
828
+ {
829
+ "$ref": "#/$defs/CatalogComponentCommon"
830
+ },
831
+ {
832
+ "type": "object",
833
+ "properties": {
834
+ "component": {
835
+ "const": "Table"
836
+ },
837
+ "body": {
838
+ "type": "array",
839
+ "items": {
840
+ "type": "string"
841
+ },
842
+ "description": "Ordered list of TableRow component IDs for the table body."
843
+ },
844
+ "header": {
845
+ "type": "array",
846
+ "items": {
847
+ "type": "string"
848
+ },
849
+ "description": "Optional ordered list of TableRow component IDs for the table header."
850
+ },
851
+ "caption": {
852
+ "type": "string",
853
+ "description": "Optional table caption displayed above or below the table."
854
+ },
855
+ "hasColumnHeader": {
856
+ "type": "boolean",
857
+ "description": "When true, the cells in the first column are treated as row-header (<th>) cells. Use this when each row has a leading label cell (e.g. a property name in a comparison table)."
858
+ },
859
+ "hasRowHeader": {
860
+ "type": "boolean",
861
+ "description": "When true, the table has a dedicated header row section."
862
+ }
863
+ },
864
+ "required": [
865
+ "component",
866
+ "body"
867
+ ]
868
+ }
869
+ ],
870
+ "unevaluatedProperties": false
871
+ },
872
+ "TableRow": {
873
+ "type": "object",
874
+ "allOf": [
875
+ {
876
+ "$ref": "#/$defs/ComponentCommon"
877
+ },
878
+ {
879
+ "$ref": "#/$defs/CatalogComponentCommon"
880
+ },
881
+ {
882
+ "type": "object",
883
+ "properties": {
884
+ "component": {
885
+ "const": "TableRow"
886
+ },
887
+ "children": {
888
+ "type": "array",
889
+ "items": {
890
+ "type": "string"
891
+ },
892
+ "description": "Ordered list of TableCell component IDs in this row."
893
+ }
894
+ },
895
+ "required": [
896
+ "component",
897
+ "children"
898
+ ]
899
+ }
900
+ ],
901
+ "unevaluatedProperties": false
902
+ },
903
+ "TableCell": {
904
+ "type": "object",
905
+ "allOf": [
906
+ {
907
+ "$ref": "#/$defs/ComponentCommon"
908
+ },
909
+ {
910
+ "$ref": "#/$defs/CatalogComponentCommon"
911
+ },
912
+ {
913
+ "type": "object",
914
+ "properties": {
915
+ "component": {
916
+ "const": "TableCell"
917
+ },
918
+ "children": {
919
+ "type": "array",
920
+ "items": {
921
+ "type": "string"
922
+ },
923
+ "description": "Ordered list of inline component IDs that make up the cell content."
924
+ },
925
+ "isHeader": {
926
+ "type": "boolean",
927
+ "description": "When true, this cell renders as a <th> header cell instead of a <td>."
928
+ }
929
+ },
930
+ "required": [
931
+ "component",
932
+ "children"
933
+ ]
934
+ }
935
+ ],
936
+ "unevaluatedProperties": false
937
+ },
938
+ "Unsupported": {
939
+ "type": "object",
940
+ "allOf": [
941
+ {
942
+ "$ref": "#/$defs/ComponentCommon"
943
+ },
944
+ {
945
+ "$ref": "#/$defs/CatalogComponentCommon"
946
+ },
947
+ {
948
+ "type": "object",
949
+ "properties": {
950
+ "component": {
951
+ "const": "Unsupported"
952
+ },
953
+ "details": {
954
+ "type": "string",
955
+ "description": "Human-readable details about the unsupported component."
956
+ }
957
+ },
958
+ "required": [
959
+ "component"
960
+ ]
961
+ }
962
+ ],
963
+ "unevaluatedProperties": false
964
+ }
965
+ },
966
+ "$defs": {
967
+ "ComponentId": {
968
+ "type": "string",
969
+ "description": "The unique identifier for a component, used for both definitions and references within the same surface."
970
+ },
971
+ "AccessibilityAttributes": {
972
+ "type": "object",
973
+ "description": "Attributes to enhance accessibility when using assistive technologies like screen readers.",
974
+ "properties": {
975
+ "label": {
976
+ "$ref": "#/$defs/DynamicString",
977
+ "description": "A short string, typically 1 to 3 words, used by assistive technologies to convey the purpose or intent of an element."
978
+ },
979
+ "description": {
980
+ "$ref": "#/$defs/DynamicString",
981
+ "description": "Additional information provided by assistive technologies about an element such as instructions, format requirements, or result of an action."
982
+ }
983
+ }
984
+ },
985
+ "ComponentCommon": {
986
+ "type": "object",
987
+ "properties": {
988
+ "id": {
989
+ "$ref": "#/$defs/ComponentId"
990
+ },
991
+ "accessibility": {
992
+ "$ref": "#/$defs/AccessibilityAttributes"
993
+ }
994
+ },
995
+ "required": [
996
+ "id"
997
+ ]
998
+ },
999
+ "CatalogComponentCommon": {
1000
+ "type": "object",
1001
+ "properties": {
1002
+ "weight": {
1003
+ "type": "number",
1004
+ "description": "The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column."
1005
+ }
1006
+ }
1007
+ },
1008
+ "ChildList": {
1009
+ "oneOf": [
1010
+ {
1011
+ "type": "array",
1012
+ "items": {
1013
+ "$ref": "#/$defs/ComponentId"
1014
+ },
1015
+ "description": "A static list of child component IDs."
1016
+ },
1017
+ {
1018
+ "type": "object",
1019
+ "description": "A template for generating a dynamic list of children from a data model list. The `componentId` is the component to use as a template.",
1020
+ "properties": {
1021
+ "componentId": {
1022
+ "$ref": "#/$defs/ComponentId"
1023
+ },
1024
+ "path": {
1025
+ "type": "string",
1026
+ "description": "The path to the list of component property objects in the data model."
1027
+ }
1028
+ },
1029
+ "required": [
1030
+ "componentId",
1031
+ "path"
1032
+ ],
1033
+ "additionalProperties": false
1034
+ }
1035
+ ]
1036
+ },
1037
+ "DataBinding": {
1038
+ "type": "object",
1039
+ "properties": {
1040
+ "path": {
1041
+ "type": "string",
1042
+ "description": "A JSON Pointer path to a value in the data model."
1043
+ }
1044
+ },
1045
+ "required": [
1046
+ "path"
1047
+ ],
1048
+ "additionalProperties": false
1049
+ },
1050
+ "FunctionCall": {
1051
+ "type": "object",
1052
+ "description": "A call to a catalog-defined function.",
1053
+ "properties": {
1054
+ "call": {
1055
+ "type": "string",
1056
+ "description": "The function name to invoke."
1057
+ },
1058
+ "args": {
1059
+ "type": "object",
1060
+ "description": "Named arguments for the function call.",
1061
+ "additionalProperties": true
1062
+ },
1063
+ "returnType": {
1064
+ "type": "string",
1065
+ "description": "The expected return type of the function call. Used to disambiguate overloads."
1066
+ }
1067
+ },
1068
+ "required": [
1069
+ "call"
1070
+ ]
1071
+ },
1072
+ "DynamicString": {
1073
+ "description": "Represents a string",
1074
+ "oneOf": [
1075
+ {
1076
+ "type": "string"
1077
+ },
1078
+ {
1079
+ "$ref": "#/$defs/DataBinding"
1080
+ },
1081
+ {
1082
+ "allOf": [
1083
+ {
1084
+ "$ref": "#/$defs/FunctionCall"
1085
+ },
1086
+ {
1087
+ "properties": {
1088
+ "returnType": {
1089
+ "const": "string"
1090
+ }
1091
+ }
1092
+ }
1093
+ ]
1094
+ }
1095
+ ]
1096
+ },
1097
+ "DynamicNumber": {
1098
+ "description": "Represents a value that can be either a literal number, a path to a number in the data model, or a function call returning a number.",
1099
+ "oneOf": [
1100
+ {
1101
+ "type": "number"
1102
+ },
1103
+ {
1104
+ "$ref": "#/$defs/DataBinding"
1105
+ },
1106
+ {
1107
+ "allOf": [
1108
+ {
1109
+ "$ref": "#/$defs/FunctionCall"
1110
+ },
1111
+ {
1112
+ "properties": {
1113
+ "returnType": {
1114
+ "const": "number"
1115
+ }
1116
+ }
1117
+ }
1118
+ ]
1119
+ }
1120
+ ]
1121
+ },
1122
+ "DynamicBoolean": {
1123
+ "description": "A boolean value that can be a literal, a path, or a function call returning a boolean.",
1124
+ "oneOf": [
1125
+ {
1126
+ "type": "boolean"
1127
+ },
1128
+ {
1129
+ "$ref": "#/$defs/DataBinding"
1130
+ },
1131
+ {
1132
+ "allOf": [
1133
+ {
1134
+ "$ref": "#/$defs/FunctionCall"
1135
+ },
1136
+ {
1137
+ "properties": {
1138
+ "returnType": {
1139
+ "const": "boolean"
1140
+ }
1141
+ }
1142
+ }
1143
+ ]
1144
+ }
1145
+ ]
1146
+ },
1147
+ "DynamicStringList": {
1148
+ "description": "Represents a value that can be either a literal array of strings, a path to a string array in the data model, or a function call returning a string array.",
1149
+ "oneOf": [
1150
+ {
1151
+ "type": "array",
1152
+ "items": {
1153
+ "type": "string"
1154
+ }
1155
+ },
1156
+ {
1157
+ "$ref": "#/$defs/DataBinding"
1158
+ },
1159
+ {
1160
+ "allOf": [
1161
+ {
1162
+ "$ref": "#/$defs/FunctionCall"
1163
+ },
1164
+ {
1165
+ "properties": {
1166
+ "returnType": {
1167
+ "const": "array"
1168
+ }
1169
+ }
1170
+ }
1171
+ ]
1172
+ }
1173
+ ]
1174
+ },
1175
+ "DynamicValue": {
1176
+ "description": "A value that can be a literal, a path, or a function call returning any type.",
1177
+ "oneOf": [
1178
+ {
1179
+ "type": "string"
1180
+ },
1181
+ {
1182
+ "type": "number"
1183
+ },
1184
+ {
1185
+ "type": "boolean"
1186
+ },
1187
+ {
1188
+ "type": "array"
1189
+ },
1190
+ {
1191
+ "$ref": "#/$defs/DataBinding"
1192
+ },
1193
+ {
1194
+ "$ref": "#/$defs/FunctionCall"
1195
+ }
1196
+ ]
1197
+ }
1198
+ }
1199
+ }