@exponential-at/ui 0.0.0-stage → 0.1.0

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.
Files changed (251) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +54 -0
  3. package/README.md +360 -2
  4. package/catalog/a11y.json +668 -0
  5. package/catalog/basic-map.json +104 -0
  6. package/catalog/code.json +58 -0
  7. package/catalog/core.catalog.json +4752 -0
  8. package/catalog/core.schema.json +22667 -0
  9. package/catalog/host.json +64 -0
  10. package/catalog/layout.json +20 -0
  11. package/catalog/limits.json +9 -0
  12. package/catalog/locale.json +48 -0
  13. package/catalog/macros.json +3417 -0
  14. package/catalog/recipes.json +61 -0
  15. package/catalog/strings.json +72 -0
  16. package/catalog/style.json +128 -0
  17. package/catalog/theme.schema.json +42543 -0
  18. package/catalog/tokens.json +47 -0
  19. package/conformance/README.md +217 -0
  20. package/conformance/baseline.ts +101 -0
  21. package/conformance/browser-page.ts +146 -0
  22. package/conformance/browser-suites.ts +683 -0
  23. package/conformance/compare.ts +201 -0
  24. package/conformance/dom.ts +96 -0
  25. package/conformance/dump.ts +163 -0
  26. package/conformance/fonts.json +154 -0
  27. package/conformance/manifest.json +224 -0
  28. package/conformance/parity-compare.ts +191 -0
  29. package/conformance/parity-report.schema.json +73 -0
  30. package/conformance/parity.ts +412 -0
  31. package/conformance/pixel.ts +177 -0
  32. package/conformance/primitives-page.ts +49 -0
  33. package/conformance/report.schema.json +66 -0
  34. package/conformance/run.ts +118 -0
  35. package/dist/chunks/index-98npjvsd.js +3940 -0
  36. package/dist/chunks/index-98npjvsd.js.map +27 -0
  37. package/dist/chunks/index-gwkt14w3.js +7314 -0
  38. package/dist/chunks/index-gwkt14w3.js.map +10 -0
  39. package/dist/chunks/index-njt7yzzm.js +134 -0
  40. package/dist/chunks/index-njt7yzzm.js.map +9 -0
  41. package/dist/chunks/index-we7va6v6.js +7984 -0
  42. package/dist/chunks/index-we7va6v6.js.map +15 -0
  43. package/dist/chunks/index-xrm6f7wc.js +2563 -0
  44. package/dist/chunks/index-xrm6f7wc.js.map +10 -0
  45. package/dist/conformance.js +182749 -0
  46. package/dist/conformance.js.map +10 -0
  47. package/dist/entries/prompt.js +251 -0
  48. package/dist/entries/prompt.js.map +11 -0
  49. package/dist/entries/schema.js +1725 -0
  50. package/dist/entries/schema.js.map +11 -0
  51. package/dist/host/index.js +122 -0
  52. package/dist/host/index.js.map +9 -0
  53. package/dist/index.js +3213 -0
  54. package/dist/index.js.map +27 -0
  55. package/dist/types/src/a11y.d.ts +21 -0
  56. package/dist/types/src/animation.d.ts +76 -0
  57. package/dist/types/src/basic-map.d.ts +38 -0
  58. package/dist/types/src/builder.d.ts +50 -0
  59. package/dist/types/src/catalog.d.ts +54 -0
  60. package/dist/types/src/catalog.described.d.ts +33 -0
  61. package/dist/types/src/catalog.generated.d.ts +829 -0
  62. package/dist/types/src/chart.d.ts +46 -0
  63. package/dist/types/src/code.d.ts +44 -0
  64. package/dist/types/src/color.d.ts +20 -0
  65. package/dist/types/src/conformance.d.ts +39 -0
  66. package/dist/types/src/connector/app.d.ts +14 -0
  67. package/dist/types/src/connector/connector.d.ts +77 -0
  68. package/dist/types/src/connector/index.d.ts +4 -0
  69. package/dist/types/src/css.d.ts +29 -0
  70. package/dist/types/src/define.d.ts +66 -0
  71. package/dist/types/src/direction.d.ts +16 -0
  72. package/dist/types/src/dynamic.d.ts +159 -0
  73. package/dist/types/src/entries/prompt.d.ts +11 -0
  74. package/dist/types/src/entries/schema.d.ts +8 -0
  75. package/dist/types/src/expr.d.ts +71 -0
  76. package/dist/types/src/extension.d.ts +4 -0
  77. package/dist/types/src/format.d.ts +112 -0
  78. package/dist/types/src/geometry.d.ts +40 -0
  79. package/dist/types/src/host/contract.d.ts +188 -0
  80. package/dist/types/src/host/decoders.d.ts +61 -0
  81. package/dist/types/src/host/index.d.ts +11 -0
  82. package/dist/types/src/host/package.d.ts +58 -0
  83. package/dist/types/src/host/policy.d.ts +105 -0
  84. package/dist/types/src/host/router.d.ts +34 -0
  85. package/dist/types/src/host/runtime.d.ts +205 -0
  86. package/dist/types/src/host/sources.d.ts +15 -0
  87. package/dist/types/src/host/transports.d.ts +109 -0
  88. package/dist/types/src/index.d.ts +63 -0
  89. package/dist/types/src/layout.d.ts +20 -0
  90. package/dist/types/src/limits.d.ts +21 -0
  91. package/dist/types/src/list.d.ts +133 -0
  92. package/dist/types/src/locale.d.ts +22 -0
  93. package/dist/types/src/macros.d.ts +29 -0
  94. package/dist/types/src/overlay.d.ts +27 -0
  95. package/dist/types/src/prompt.d.ts +44 -0
  96. package/dist/types/src/recipes.d.ts +17 -0
  97. package/dist/types/src/reducer.d.ts +41 -0
  98. package/dist/types/src/resizable.d.ts +38 -0
  99. package/dist/types/src/schema.d.ts +7 -0
  100. package/dist/types/src/strings.d.ts +13 -0
  101. package/dist/types/src/style.d.ts +201 -0
  102. package/dist/types/src/test-preload.d.ts +1 -0
  103. package/dist/types/src/text-shimmer.d.ts +24 -0
  104. package/dist/types/src/theme-types.d.ts +162 -0
  105. package/dist/types/src/theme.d.ts +73 -0
  106. package/dist/types/src/themes.d.ts +22 -0
  107. package/dist/types/src/tree-guides.d.ts +17 -0
  108. package/dist/types/src/types.d.ts +314 -0
  109. package/dist/types/src/validate.d.ts +31 -0
  110. package/dist/types/src/web/base-css.d.ts +1 -0
  111. package/dist/types/src/web/box-css.d.ts +55 -0
  112. package/dist/types/src/web/coerce.d.ts +32 -0
  113. package/dist/types/src/web/data.d.ts +105 -0
  114. package/dist/types/src/web/dates.d.ts +12 -0
  115. package/dist/types/src/web/form.d.ts +44 -0
  116. package/dist/types/src/web/host-types.d.ts +119 -0
  117. package/dist/types/src/web/index.d.ts +28 -0
  118. package/dist/types/src/web/inputs.d.ts +55 -0
  119. package/dist/types/src/web/list.d.ts +13 -0
  120. package/dist/types/src/web/listbox.d.ts +14 -0
  121. package/dist/types/src/web/markdown.d.ts +96 -0
  122. package/dist/types/src/web/media.d.ts +62 -0
  123. package/dist/types/src/web/parts.d.ts +4 -0
  124. package/dist/types/src/web/primitives/alert-dialog.d.ts +10 -0
  125. package/dist/types/src/web/primitives/alert.d.ts +9 -0
  126. package/dist/types/src/web/primitives/avatar-color.d.ts +2 -0
  127. package/dist/types/src/web/primitives/avatar.d.ts +13 -0
  128. package/dist/types/src/web/primitives/badge.d.ts +10 -0
  129. package/dist/types/src/web/primitives/breadcrumb.d.ts +10 -0
  130. package/dist/types/src/web/primitives/button.d.ts +6 -0
  131. package/dist/types/src/web/primitives/calendar.d.ts +43 -0
  132. package/dist/types/src/web/primitives/card.d.ts +9 -0
  133. package/dist/types/src/web/primitives/checkbox.d.ts +5 -0
  134. package/dist/types/src/web/primitives/choice-tiles.d.ts +32 -0
  135. package/dist/types/src/web/primitives/cn.d.ts +3 -0
  136. package/dist/types/src/web/primitives/code-block.d.ts +24 -0
  137. package/dist/types/src/web/primitives/command.d.ts +134 -0
  138. package/dist/types/src/web/primitives/context-ring.d.ts +24 -0
  139. package/dist/types/src/web/primitives/dialog-arms.d.ts +6 -0
  140. package/dist/types/src/web/primitives/dialog.d.ts +24 -0
  141. package/dist/types/src/web/primitives/disclosure-header.d.ts +5 -0
  142. package/dist/types/src/web/primitives/dock.d.ts +42 -0
  143. package/dist/types/src/web/primitives/dropdown-menu.d.ts +14 -0
  144. package/dist/types/src/web/primitives/empty-state.d.ts +15 -0
  145. package/dist/types/src/web/primitives/glass-card.d.ts +4 -0
  146. package/dist/types/src/web/primitives/hover-card.d.ts +7 -0
  147. package/dist/types/src/web/primitives/icon-disc.d.ts +12 -0
  148. package/dist/types/src/web/primitives/index.d.ts +48 -0
  149. package/dist/types/src/web/primitives/input.d.ts +5 -0
  150. package/dist/types/src/web/primitives/kbd.d.ts +4 -0
  151. package/dist/types/src/web/primitives/label.d.ts +3 -0
  152. package/dist/types/src/web/primitives/menu-surface.d.ts +17 -0
  153. package/dist/types/src/web/primitives/meter.d.ts +21 -0
  154. package/dist/types/src/web/primitives/popover.d.ts +3 -0
  155. package/dist/types/src/web/primitives/progress-ring.d.ts +5 -0
  156. package/dist/types/src/web/primitives/progress.d.ts +8 -0
  157. package/dist/types/src/web/primitives/scroll-area.d.ts +49 -0
  158. package/dist/types/src/web/primitives/segmented-control.d.ts +5 -0
  159. package/dist/types/src/web/primitives/select.d.ts +47 -0
  160. package/dist/types/src/web/primitives/separator.d.ts +3 -0
  161. package/dist/types/src/web/primitives/sheet-chrome.d.ts +4 -0
  162. package/dist/types/src/web/primitives/sheet.d.ts +20 -0
  163. package/dist/types/src/web/primitives/skeleton.d.ts +3 -0
  164. package/dist/types/src/web/primitives/spinner.d.ts +3 -0
  165. package/dist/types/src/web/primitives/switch.d.ts +4 -0
  166. package/dist/types/src/web/primitives/table.d.ts +11 -0
  167. package/dist/types/src/web/primitives/tabs.d.ts +13 -0
  168. package/dist/types/src/web/primitives/textarea.d.ts +3 -0
  169. package/dist/types/src/web/primitives/toast.d.ts +163 -0
  170. package/dist/types/src/web/primitives/tooltip.d.ts +3 -0
  171. package/dist/types/src/web/primitives/truncate.d.ts +7 -0
  172. package/dist/types/src/web/primitives/typeahead-portal.d.ts +12 -0
  173. package/dist/types/src/web/share.d.ts +6 -0
  174. package/dist/types/src/web/table.d.ts +20 -0
  175. package/dist/types/src/web/theme-css.d.ts +69 -0
  176. package/dist/types/src/web/urls.d.ts +21 -0
  177. package/dist/web/index.js +2303 -0
  178. package/dist/web/index.js.map +26 -0
  179. package/dist/web/primitives/index.js +1450 -0
  180. package/dist/web/primitives/index.js.map +57 -0
  181. package/docs/components.generated.json +6238 -0
  182. package/docs/round-1-contract.md +679 -0
  183. package/docs/round-2-contract.md +476 -0
  184. package/docs/round-3-contract.md +174 -0
  185. package/docs/themes.generated.json +3503 -0
  186. package/fixtures/animations.json +2890 -0
  187. package/fixtures/bench-list.json +58 -0
  188. package/fixtures/bind-time.json +30664 -0
  189. package/fixtures/catalog-basic-map.json +1692 -0
  190. package/fixtures/catalog-components.json +9323 -0
  191. package/fixtures/catalog-extension.json +620 -0
  192. package/fixtures/catalog-macros.json +36370 -0
  193. package/fixtures/code-tokens.json +1993 -0
  194. package/fixtures/conformance-baseline.json +55544 -0
  195. package/fixtures/conformance-cases.json +49 -0
  196. package/fixtures/conformance-known.json +2123 -0
  197. package/fixtures/control-geometry.json +4200 -0
  198. package/fixtures/dashboard.data.json +74 -0
  199. package/fixtures/dashboard.json +752 -0
  200. package/fixtures/demo-surface.json +47 -0
  201. package/fixtures/format.json +870 -0
  202. package/fixtures/host-policy.json +1067 -0
  203. package/fixtures/host-router.json +1152 -0
  204. package/fixtures/host-transport.json +590 -0
  205. package/fixtures/interactions-round1.json +773 -0
  206. package/fixtures/kitchen-sink.expanded.json +10844 -0
  207. package/fixtures/kitchen-sink.json +3049 -0
  208. package/fixtures/layout-geometry-round1.json +7278 -0
  209. package/fixtures/layout-geometry.json +2072 -0
  210. package/fixtures/overlay-geometry.json +272 -0
  211. package/fixtures/primitive-specimens.json +58 -0
  212. package/fixtures/prompt-budget.json +33 -0
  213. package/fixtures/resizable.json +714 -0
  214. package/fixtures/round4-contract.json +2985 -0
  215. package/fixtures/specimens.json +9832 -0
  216. package/fixtures/style-conditions.json +336 -0
  217. package/fixtures/template-items.json +2215 -0
  218. package/fixtures/text-direction.json +309 -0
  219. package/fixtures/text-shimmer.json +96 -0
  220. package/fixtures/theme-extends.json +573 -0
  221. package/fixtures/theme-invalid.json +1296 -0
  222. package/fixtures/theme-recipes.json +58600 -0
  223. package/fixtures/theme-resolved.json +23949 -0
  224. package/fixtures/toast-stack.json +215 -0
  225. package/fixtures/tree-guides.json +224 -0
  226. package/fixtures/virtual-list.json +733 -0
  227. package/generated/ExponentialUICatalog.generated.kt +67 -0
  228. package/generated/ExponentialUICatalog.generated.swift +67 -0
  229. package/generated/ExponentialUIThemes.generated.kt +23 -0
  230. package/generated/ExponentialUIThemes.generated.swift +23 -0
  231. package/generated/catalog.descriptions.generated.rs +6 -0
  232. package/generated/catalog.generated.rs +80 -0
  233. package/generated/catalog.themes.generated.rs +34 -0
  234. package/generated/core.descriptions.json +2505 -0
  235. package/generated/core.runtime.json +3609 -0
  236. package/package.json +87 -4
  237. package/themes/exponential.recipes.json +49 -0
  238. package/themes/exponential.theme.json +755 -0
  239. package/themes/neutral.theme.json +5676 -0
  240. package/themes/orange.theme.json +43 -0
  241. package/themes/playful.theme.json +219 -0
  242. package/vendor/a2ui/LICENSE.txt +203 -0
  243. package/vendor/a2ui/README.md +27 -0
  244. package/vendor/a2ui/v0_9/basic_catalog.json +1387 -0
  245. package/vendor/a2ui/v0_9/basic_catalog_rules.txt +5 -0
  246. package/vendor/a2ui/v0_9/client_capabilities.json +97 -0
  247. package/vendor/a2ui/v0_9/client_to_server.json +104 -0
  248. package/vendor/a2ui/v0_9/common_types.json +315 -0
  249. package/vendor/a2ui/v0_9/server_to_client.json +132 -0
  250. package/vendor/json-render/LICENSE.txt +201 -0
  251. package/vendor/json-render/README.md +13 -0
@@ -0,0 +1,2215 @@
1
+ {
2
+ "$comment": "AUTO-GENERATED by packages/exponential-ui/scripts/generate-round2.ts — do not edit (inputs live there). Round 2 (docs/round-2-contract.md §4). `keys`: a template's item keys (src/list.ts templateItemKeys: the value at `key` — a pointer relative to the item — as a string, objects as JSON; `#<index>` when missing, null, empty or a DUPLICATE of an earlier key, more `#`s until unique; no key = the index). `rowKeys`: Table rows by their `rowKey` FIELD, same rules. `instances`: the items a template renders in a scope and the instance SUFFIX each item's nodes wear (`<node id><suffix>`; suffix = `.<key>` with `~` → `~0` and `.` → `~1`; it ACCUMULATES through nested templates: `issue.ops.1`). `reduce`: a node a `template` names is LIFTED out of the tree into `templates` (never also rendered in place), on the nested and the flat path; an unknown template id is an issue; a template that would instantiate itself (its owner, an ancestor of its owner, the root, or through other templates) is an issue (`template: cycle through this id`) and is NOT lifted: it stays in place and its owner renders no items. VAPP-103 (`limit-*`, catalog/limits.json): an id placed a second time (two parents, one parent twice, or the main tree and a template) renders at its FIRST place only (`id used twice; only its first place renders`), a node deeper than `maxDepth` levels (the root = 1) is the Unknown placeholder (`nesting deeper than N levels`).",
3
+ "keys": [
4
+ {
5
+ "name": "no-key-is-index",
6
+ "items": [
7
+ {
8
+ "id": "a"
9
+ },
10
+ {
11
+ "id": "b"
12
+ }
13
+ ],
14
+ "expected": [
15
+ "0",
16
+ "1"
17
+ ]
18
+ },
19
+ {
20
+ "name": "keys",
21
+ "items": [
22
+ {
23
+ "id": "a"
24
+ },
25
+ {
26
+ "id": "b"
27
+ },
28
+ {
29
+ "id": "c"
30
+ }
31
+ ],
32
+ "key": "id",
33
+ "expected": [
34
+ "a",
35
+ "b",
36
+ "c"
37
+ ]
38
+ },
39
+ {
40
+ "name": "duplicate",
41
+ "items": [
42
+ {
43
+ "id": "a"
44
+ },
45
+ {
46
+ "id": "a"
47
+ },
48
+ {
49
+ "id": "b"
50
+ }
51
+ ],
52
+ "key": "id",
53
+ "expected": [
54
+ "a",
55
+ "#1",
56
+ "b"
57
+ ]
58
+ },
59
+ {
60
+ "name": "missing-null-empty",
61
+ "items": [
62
+ {
63
+ "id": "a"
64
+ },
65
+ {},
66
+ {
67
+ "id": null
68
+ },
69
+ {
70
+ "id": ""
71
+ }
72
+ ],
73
+ "key": "id",
74
+ "expected": [
75
+ "a",
76
+ "#1",
77
+ "#2",
78
+ "#3"
79
+ ]
80
+ },
81
+ {
82
+ "name": "numbers-and-objects",
83
+ "items": [
84
+ {
85
+ "id": 7
86
+ },
87
+ {
88
+ "id": {
89
+ "x": 1
90
+ }
91
+ },
92
+ {
93
+ "id": true
94
+ }
95
+ ],
96
+ "key": "/id",
97
+ "expected": [
98
+ "7",
99
+ "{\"x\":1}",
100
+ "true"
101
+ ]
102
+ },
103
+ {
104
+ "name": "collision-with-hash",
105
+ "items": [
106
+ {
107
+ "id": "#1"
108
+ },
109
+ {
110
+ "id": "a"
111
+ },
112
+ {
113
+ "id": "a"
114
+ }
115
+ ],
116
+ "key": "id",
117
+ "expected": [
118
+ "#1",
119
+ "a",
120
+ "#2"
121
+ ]
122
+ },
123
+ {
124
+ "name": "nested-pointer",
125
+ "items": [
126
+ {
127
+ "who": {
128
+ "name": "ada"
129
+ }
130
+ },
131
+ {
132
+ "who": {
133
+ "name": "bob"
134
+ }
135
+ }
136
+ ],
137
+ "key": "who/name",
138
+ "expected": [
139
+ "ada",
140
+ "bob"
141
+ ]
142
+ }
143
+ ],
144
+ "rowKeys": [
145
+ {
146
+ "name": "default-id",
147
+ "rows": [
148
+ {
149
+ "id": "alice"
150
+ },
151
+ {
152
+ "id": "bob"
153
+ }
154
+ ],
155
+ "expected": [
156
+ "alice",
157
+ "bob"
158
+ ]
159
+ },
160
+ {
161
+ "name": "own-field",
162
+ "rows": [
163
+ {
164
+ "email": "a@x"
165
+ },
166
+ {
167
+ "email": "b@x"
168
+ }
169
+ ],
170
+ "rowKey": "email",
171
+ "expected": [
172
+ "a@x",
173
+ "b@x"
174
+ ]
175
+ },
176
+ {
177
+ "name": "missing-and-duplicate",
178
+ "rows": [
179
+ {
180
+ "id": "a"
181
+ },
182
+ {
183
+ "name": "no id"
184
+ },
185
+ {
186
+ "id": "a"
187
+ }
188
+ ],
189
+ "expected": [
190
+ "a",
191
+ "#1",
192
+ "#2"
193
+ ]
194
+ },
195
+ {
196
+ "name": "field-with-slash",
197
+ "rows": [
198
+ {
199
+ "a/b": "x"
200
+ },
201
+ {
202
+ "a/b": "y"
203
+ }
204
+ ],
205
+ "rowKey": "a/b",
206
+ "expected": [
207
+ "x",
208
+ "y"
209
+ ]
210
+ }
211
+ ],
212
+ "instances": [
213
+ {
214
+ "name": "top-level",
215
+ "data": {
216
+ "boards": [
217
+ {
218
+ "id": "ops",
219
+ "issues": [
220
+ {
221
+ "id": "1",
222
+ "t": "Ship"
223
+ },
224
+ {
225
+ "id": "2",
226
+ "t": "Test"
227
+ }
228
+ ]
229
+ },
230
+ {
231
+ "id": "web",
232
+ "issues": [
233
+ {
234
+ "id": "1",
235
+ "t": "Fix"
236
+ }
237
+ ]
238
+ },
239
+ {
240
+ "id": "ops",
241
+ "issues": []
242
+ }
243
+ ]
244
+ },
245
+ "template": {
246
+ "component": "board",
247
+ "path": "/boards",
248
+ "key": "id"
249
+ },
250
+ "scope": "",
251
+ "instance": "",
252
+ "expected": [
253
+ {
254
+ "key": "ops",
255
+ "path": "/boards/0",
256
+ "index": 0,
257
+ "instance": ".ops"
258
+ },
259
+ {
260
+ "key": "web",
261
+ "path": "/boards/1",
262
+ "index": 1,
263
+ "instance": ".web"
264
+ },
265
+ {
266
+ "key": "#2",
267
+ "path": "/boards/2",
268
+ "index": 2,
269
+ "instance": ".#2"
270
+ }
271
+ ]
272
+ },
273
+ {
274
+ "name": "relative-path-in-scope",
275
+ "data": {
276
+ "boards": [
277
+ {
278
+ "id": "ops",
279
+ "issues": [
280
+ {
281
+ "id": "1",
282
+ "t": "Ship"
283
+ },
284
+ {
285
+ "id": "2",
286
+ "t": "Test"
287
+ }
288
+ ]
289
+ },
290
+ {
291
+ "id": "web",
292
+ "issues": [
293
+ {
294
+ "id": "1",
295
+ "t": "Fix"
296
+ }
297
+ ]
298
+ },
299
+ {
300
+ "id": "ops",
301
+ "issues": []
302
+ }
303
+ ]
304
+ },
305
+ "template": {
306
+ "component": "issue",
307
+ "path": "issues",
308
+ "key": "id"
309
+ },
310
+ "scope": "/boards/0",
311
+ "instance": ".ops",
312
+ "expected": [
313
+ {
314
+ "key": "1",
315
+ "path": "/boards/0/issues/0",
316
+ "index": 0,
317
+ "instance": ".ops.1"
318
+ },
319
+ {
320
+ "key": "2",
321
+ "path": "/boards/0/issues/1",
322
+ "index": 1,
323
+ "instance": ".ops.2"
324
+ }
325
+ ]
326
+ },
327
+ {
328
+ "name": "nested-suffix-accumulates",
329
+ "data": {
330
+ "boards": [
331
+ {
332
+ "id": "ops",
333
+ "issues": [
334
+ {
335
+ "id": "1",
336
+ "t": "Ship"
337
+ },
338
+ {
339
+ "id": "2",
340
+ "t": "Test"
341
+ }
342
+ ]
343
+ },
344
+ {
345
+ "id": "web",
346
+ "issues": [
347
+ {
348
+ "id": "1",
349
+ "t": "Fix"
350
+ }
351
+ ]
352
+ },
353
+ {
354
+ "id": "ops",
355
+ "issues": []
356
+ }
357
+ ]
358
+ },
359
+ "template": {
360
+ "component": "board",
361
+ "path": "/boards",
362
+ "key": "id"
363
+ },
364
+ "inner": {
365
+ "component": "issue",
366
+ "path": "issues",
367
+ "key": "id"
368
+ },
369
+ "scope": "",
370
+ "instance": "",
371
+ "expected": [
372
+ {
373
+ "outer": "ops",
374
+ "key": "1",
375
+ "path": "/boards/0/issues/0",
376
+ "index": 0,
377
+ "instance": ".ops.1",
378
+ "ids": {
379
+ "issue": "issue.ops.1",
380
+ "title": "issue.title.ops.1"
381
+ }
382
+ },
383
+ {
384
+ "outer": "ops",
385
+ "key": "2",
386
+ "path": "/boards/0/issues/1",
387
+ "index": 1,
388
+ "instance": ".ops.2",
389
+ "ids": {
390
+ "issue": "issue.ops.2",
391
+ "title": "issue.title.ops.2"
392
+ }
393
+ },
394
+ {
395
+ "outer": "web",
396
+ "key": "1",
397
+ "path": "/boards/1/issues/0",
398
+ "index": 0,
399
+ "instance": ".web.1",
400
+ "ids": {
401
+ "issue": "issue.web.1",
402
+ "title": "issue.title.web.1"
403
+ }
404
+ }
405
+ ]
406
+ },
407
+ {
408
+ "name": "not-an-array",
409
+ "data": {
410
+ "boards": {
411
+ "a": 1
412
+ }
413
+ },
414
+ "template": {
415
+ "component": "board",
416
+ "path": "/boards",
417
+ "key": "id"
418
+ },
419
+ "scope": "",
420
+ "instance": "",
421
+ "expected": []
422
+ },
423
+ {
424
+ "name": "dotted-keys-escaped",
425
+ "data": {
426
+ "boards": [
427
+ {
428
+ "id": "a.b",
429
+ "issues": [
430
+ {
431
+ "id": "c"
432
+ }
433
+ ]
434
+ },
435
+ {
436
+ "id": "a",
437
+ "issues": [
438
+ {
439
+ "id": "b.c"
440
+ },
441
+ {
442
+ "id": "~1"
443
+ }
444
+ ]
445
+ }
446
+ ]
447
+ },
448
+ "template": {
449
+ "component": "board",
450
+ "path": "/boards",
451
+ "key": "id"
452
+ },
453
+ "inner": {
454
+ "component": "issue",
455
+ "path": "issues",
456
+ "key": "id"
457
+ },
458
+ "scope": "",
459
+ "instance": "",
460
+ "expected": [
461
+ {
462
+ "outer": "a.b",
463
+ "key": "c",
464
+ "path": "/boards/0/issues/0",
465
+ "index": 0,
466
+ "instance": ".a~1b.c",
467
+ "ids": {
468
+ "issue": "issue.a~1b.c",
469
+ "title": "issue.title.a~1b.c"
470
+ }
471
+ },
472
+ {
473
+ "outer": "a",
474
+ "key": "b.c",
475
+ "path": "/boards/1/issues/0",
476
+ "index": 0,
477
+ "instance": ".a.b~1c",
478
+ "ids": {
479
+ "issue": "issue.a.b~1c",
480
+ "title": "issue.title.a.b~1c"
481
+ }
482
+ },
483
+ {
484
+ "outer": "a",
485
+ "key": "~1",
486
+ "path": "/boards/1/issues/1",
487
+ "index": 1,
488
+ "instance": ".a.~01",
489
+ "ids": {
490
+ "issue": "issue.a.~01",
491
+ "title": "issue.title.a.~01"
492
+ }
493
+ }
494
+ ]
495
+ }
496
+ ],
497
+ "reduce": [
498
+ {
499
+ "name": "nested-lifted",
500
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1",
501
+ "nested": {
502
+ "id": "root",
503
+ "component": "Box",
504
+ "children": [
505
+ {
506
+ "id": "list",
507
+ "component": "List",
508
+ "template": {
509
+ "component": "row",
510
+ "path": "/items"
511
+ }
512
+ },
513
+ {
514
+ "id": "row",
515
+ "component": "Row",
516
+ "props": {
517
+ "title": {
518
+ "path": "title"
519
+ }
520
+ }
521
+ },
522
+ {
523
+ "id": "card",
524
+ "component": "Box",
525
+ "children": [
526
+ {
527
+ "id": "inner",
528
+ "component": "List",
529
+ "template": {
530
+ "component": "cell",
531
+ "path": "cells"
532
+ }
533
+ },
534
+ {
535
+ "id": "cell",
536
+ "component": "Text",
537
+ "props": {
538
+ "text": {
539
+ "path": "v"
540
+ }
541
+ }
542
+ }
543
+ ]
544
+ }
545
+ ]
546
+ },
547
+ "expected": {
548
+ "root": {
549
+ "id": "root",
550
+ "component": "Box",
551
+ "props": {},
552
+ "children": [
553
+ {
554
+ "id": "list",
555
+ "component": "List",
556
+ "props": {},
557
+ "children": [],
558
+ "template": {
559
+ "component": "row",
560
+ "path": "/items"
561
+ }
562
+ },
563
+ {
564
+ "id": "card",
565
+ "component": "Box",
566
+ "props": {},
567
+ "children": [
568
+ {
569
+ "id": "inner",
570
+ "component": "List",
571
+ "props": {},
572
+ "children": [],
573
+ "template": {
574
+ "component": "cell",
575
+ "path": "cells"
576
+ }
577
+ }
578
+ ]
579
+ }
580
+ ]
581
+ },
582
+ "issues": [],
583
+ "templates": {
584
+ "row": {
585
+ "id": "row",
586
+ "component": "Box",
587
+ "props": {
588
+ "pressable": false
589
+ },
590
+ "children": [
591
+ {
592
+ "id": "row.body",
593
+ "component": "Box",
594
+ "props": {},
595
+ "children": [
596
+ {
597
+ "id": "row.body.title",
598
+ "component": "Text",
599
+ "props": {
600
+ "text": {
601
+ "path": "title"
602
+ },
603
+ "variant": "body",
604
+ "lines": 1
605
+ },
606
+ "children": [],
607
+ "recipe": {
608
+ "macro": "Row",
609
+ "part": "title",
610
+ "props": {
611
+ "selected": false,
612
+ "density": "default",
613
+ "surface": "flat",
614
+ "depth": 0
615
+ }
616
+ }
617
+ }
618
+ ],
619
+ "style": {
620
+ "display": "flex",
621
+ "flexDirection": "column",
622
+ "gap": "$spacing.xxs",
623
+ "flexGrow": 1,
624
+ "minWidth": 0,
625
+ "paddingVertical": "$spacing.xs"
626
+ },
627
+ "recipe": {
628
+ "macro": "Row",
629
+ "part": "body",
630
+ "props": {
631
+ "selected": false,
632
+ "density": "default",
633
+ "surface": "flat",
634
+ "depth": 0
635
+ }
636
+ }
637
+ }
638
+ ],
639
+ "style": {
640
+ "display": "flex",
641
+ "flexDirection": "row",
642
+ "alignItems": "center",
643
+ "gap": "$spacing.sm",
644
+ "minHeight": "$control.row",
645
+ "paddingHorizontal": "$spacing.md",
646
+ "borderRadius": "$radius.md"
647
+ },
648
+ "recipe": {
649
+ "macro": "Row",
650
+ "part": "root",
651
+ "props": {
652
+ "selected": false,
653
+ "density": "default",
654
+ "surface": "flat",
655
+ "depth": 0
656
+ }
657
+ },
658
+ "accessibility": {
659
+ "role": "none"
660
+ }
661
+ },
662
+ "cell": {
663
+ "id": "cell",
664
+ "component": "Text",
665
+ "props": {
666
+ "text": {
667
+ "path": "v"
668
+ }
669
+ },
670
+ "children": []
671
+ }
672
+ }
673
+ }
674
+ },
675
+ {
676
+ "name": "flat-lifted-and-built",
677
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1",
678
+ "components": [
679
+ {
680
+ "id": "root",
681
+ "component": "Box",
682
+ "children": [
683
+ "list",
684
+ "item",
685
+ "ghost-list"
686
+ ]
687
+ },
688
+ {
689
+ "id": "list",
690
+ "component": "List",
691
+ "children": {
692
+ "componentId": "item",
693
+ "path": "/items",
694
+ "key": "id"
695
+ }
696
+ },
697
+ {
698
+ "id": "item",
699
+ "component": "Box",
700
+ "children": [
701
+ "label",
702
+ "sub"
703
+ ]
704
+ },
705
+ {
706
+ "id": "label",
707
+ "component": "Text",
708
+ "text": {
709
+ "path": "name"
710
+ }
711
+ },
712
+ {
713
+ "id": "sub",
714
+ "component": "List",
715
+ "children": {
716
+ "componentId": "tag",
717
+ "path": "tags"
718
+ }
719
+ },
720
+ {
721
+ "id": "tag",
722
+ "component": "Badge",
723
+ "text": {
724
+ "path": ""
725
+ }
726
+ },
727
+ {
728
+ "id": "ghost-list",
729
+ "component": "List",
730
+ "children": {
731
+ "componentId": "nowhere",
732
+ "path": "/x"
733
+ }
734
+ }
735
+ ],
736
+ "expected": {
737
+ "root": {
738
+ "id": "root",
739
+ "component": "Box",
740
+ "props": {},
741
+ "children": [
742
+ {
743
+ "id": "list",
744
+ "component": "List",
745
+ "props": {},
746
+ "children": [],
747
+ "template": {
748
+ "component": "item",
749
+ "path": "/items",
750
+ "key": "id"
751
+ }
752
+ },
753
+ {
754
+ "id": "ghost-list",
755
+ "component": "List",
756
+ "props": {},
757
+ "children": [],
758
+ "template": {
759
+ "component": "nowhere",
760
+ "path": "/x"
761
+ }
762
+ }
763
+ ]
764
+ },
765
+ "issues": [
766
+ {
767
+ "id": "nowhere",
768
+ "message": "template: no component with this id"
769
+ }
770
+ ],
771
+ "templates": {
772
+ "item": {
773
+ "id": "item",
774
+ "component": "Box",
775
+ "props": {},
776
+ "children": [
777
+ {
778
+ "id": "label",
779
+ "component": "Text",
780
+ "props": {
781
+ "text": {
782
+ "path": "name"
783
+ }
784
+ },
785
+ "children": []
786
+ },
787
+ {
788
+ "id": "sub",
789
+ "component": "List",
790
+ "props": {},
791
+ "children": [],
792
+ "template": {
793
+ "component": "tag",
794
+ "path": "tags"
795
+ }
796
+ }
797
+ ]
798
+ },
799
+ "tag": {
800
+ "id": "tag",
801
+ "component": "Box",
802
+ "props": {},
803
+ "children": [
804
+ {
805
+ "id": "tag.label",
806
+ "component": "Text",
807
+ "props": {
808
+ "text": {
809
+ "path": ""
810
+ },
811
+ "variant": "caption",
812
+ "lines": 1
813
+ },
814
+ "children": [],
815
+ "recipe": {
816
+ "macro": "Badge",
817
+ "part": "label",
818
+ "props": {
819
+ "variant": "default"
820
+ }
821
+ }
822
+ }
823
+ ],
824
+ "style": {
825
+ "display": "flex",
826
+ "flexDirection": "row",
827
+ "alignItems": "center",
828
+ "gap": "$spacing.xxs",
829
+ "height": "$control.badge",
830
+ "paddingHorizontal": "$spacing.sm",
831
+ "borderRadius": "$radius.full",
832
+ "alignSelf": "flex-start"
833
+ },
834
+ "recipe": {
835
+ "macro": "Badge",
836
+ "part": "root",
837
+ "props": {
838
+ "variant": "default"
839
+ }
840
+ }
841
+ }
842
+ }
843
+ }
844
+ },
845
+ {
846
+ "name": "cycle-self",
847
+ "nested": {
848
+ "id": "root",
849
+ "component": "Box",
850
+ "children": [
851
+ {
852
+ "id": "l",
853
+ "component": "List",
854
+ "template": {
855
+ "component": "l",
856
+ "path": "/items"
857
+ }
858
+ }
859
+ ]
860
+ },
861
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1",
862
+ "expected": {
863
+ "root": {
864
+ "id": "root",
865
+ "component": "Box",
866
+ "props": {},
867
+ "children": [
868
+ {
869
+ "id": "l",
870
+ "component": "List",
871
+ "props": {},
872
+ "children": [],
873
+ "template": {
874
+ "component": "l",
875
+ "path": "/items"
876
+ }
877
+ }
878
+ ]
879
+ },
880
+ "issues": [
881
+ {
882
+ "id": "l",
883
+ "message": "template: cycle through this id"
884
+ }
885
+ ]
886
+ }
887
+ },
888
+ {
889
+ "name": "cycle-ancestor",
890
+ "components": [
891
+ {
892
+ "id": "root",
893
+ "component": "Box",
894
+ "children": [
895
+ "col"
896
+ ]
897
+ },
898
+ {
899
+ "id": "col",
900
+ "component": "Box",
901
+ "children": [
902
+ "l"
903
+ ]
904
+ },
905
+ {
906
+ "id": "l",
907
+ "component": "List",
908
+ "children": {
909
+ "componentId": "col",
910
+ "path": "/items"
911
+ }
912
+ }
913
+ ],
914
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1",
915
+ "expected": {
916
+ "root": {
917
+ "id": "root",
918
+ "component": "Box",
919
+ "props": {},
920
+ "children": [
921
+ {
922
+ "id": "col",
923
+ "component": "Box",
924
+ "props": {},
925
+ "children": [
926
+ {
927
+ "id": "l",
928
+ "component": "List",
929
+ "props": {},
930
+ "children": [],
931
+ "template": {
932
+ "component": "col",
933
+ "path": "/items"
934
+ }
935
+ }
936
+ ]
937
+ }
938
+ ]
939
+ },
940
+ "issues": [
941
+ {
942
+ "id": "col",
943
+ "message": "template: cycle through this id"
944
+ }
945
+ ]
946
+ }
947
+ },
948
+ {
949
+ "name": "cycle-root",
950
+ "nested": {
951
+ "id": "root",
952
+ "component": "Box",
953
+ "children": [
954
+ {
955
+ "id": "l",
956
+ "component": "List",
957
+ "template": {
958
+ "component": "root",
959
+ "path": "/items"
960
+ }
961
+ }
962
+ ]
963
+ },
964
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1",
965
+ "expected": {
966
+ "root": {
967
+ "id": "root",
968
+ "component": "Box",
969
+ "props": {},
970
+ "children": [
971
+ {
972
+ "id": "l",
973
+ "component": "List",
974
+ "props": {},
975
+ "children": [],
976
+ "template": {
977
+ "component": "root",
978
+ "path": "/items"
979
+ }
980
+ }
981
+ ]
982
+ },
983
+ "issues": [
984
+ {
985
+ "id": "root",
986
+ "message": "template: cycle through this id"
987
+ }
988
+ ]
989
+ }
990
+ },
991
+ {
992
+ "name": "cycle-mutual-built",
993
+ "components": [
994
+ {
995
+ "id": "root",
996
+ "component": "Box",
997
+ "children": [
998
+ "a",
999
+ "ok"
1000
+ ]
1001
+ },
1002
+ {
1003
+ "id": "a",
1004
+ "component": "List",
1005
+ "children": {
1006
+ "componentId": "t1",
1007
+ "path": "/items"
1008
+ }
1009
+ },
1010
+ {
1011
+ "id": "t1",
1012
+ "component": "Box",
1013
+ "children": [
1014
+ "l2"
1015
+ ]
1016
+ },
1017
+ {
1018
+ "id": "l2",
1019
+ "component": "List",
1020
+ "children": {
1021
+ "componentId": "t2",
1022
+ "path": "/items"
1023
+ }
1024
+ },
1025
+ {
1026
+ "id": "t2",
1027
+ "component": "Box",
1028
+ "children": [
1029
+ "l3"
1030
+ ]
1031
+ },
1032
+ {
1033
+ "id": "l3",
1034
+ "component": "List",
1035
+ "children": {
1036
+ "componentId": "t1",
1037
+ "path": "/items"
1038
+ }
1039
+ },
1040
+ {
1041
+ "id": "ok",
1042
+ "component": "List",
1043
+ "children": {
1044
+ "componentId": "row",
1045
+ "path": "/rows"
1046
+ }
1047
+ },
1048
+ {
1049
+ "id": "row",
1050
+ "component": "Text",
1051
+ "text": {
1052
+ "path": "t"
1053
+ }
1054
+ }
1055
+ ],
1056
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1",
1057
+ "expected": {
1058
+ "root": {
1059
+ "id": "root",
1060
+ "component": "Box",
1061
+ "props": {},
1062
+ "children": [
1063
+ {
1064
+ "id": "a",
1065
+ "component": "List",
1066
+ "props": {},
1067
+ "children": [],
1068
+ "template": {
1069
+ "component": "t1",
1070
+ "path": "/items"
1071
+ }
1072
+ },
1073
+ {
1074
+ "id": "ok",
1075
+ "component": "List",
1076
+ "props": {},
1077
+ "children": [],
1078
+ "template": {
1079
+ "component": "row",
1080
+ "path": "/rows"
1081
+ }
1082
+ }
1083
+ ]
1084
+ },
1085
+ "issues": [
1086
+ {
1087
+ "id": "t1",
1088
+ "message": "template: cycle through this id"
1089
+ },
1090
+ {
1091
+ "id": "t2",
1092
+ "message": "template: cycle through this id"
1093
+ }
1094
+ ],
1095
+ "templates": {
1096
+ "row": {
1097
+ "id": "row",
1098
+ "component": "Text",
1099
+ "props": {
1100
+ "text": {
1101
+ "path": "t"
1102
+ }
1103
+ },
1104
+ "children": []
1105
+ }
1106
+ }
1107
+ }
1108
+ },
1109
+ {
1110
+ "name": "limit-used-twice",
1111
+ "components": [
1112
+ {
1113
+ "id": "root",
1114
+ "component": "Box",
1115
+ "children": [
1116
+ "a",
1117
+ "shared",
1118
+ "shared"
1119
+ ]
1120
+ },
1121
+ {
1122
+ "id": "a",
1123
+ "component": "Box",
1124
+ "children": [
1125
+ "shared"
1126
+ ],
1127
+ "slots": {}
1128
+ },
1129
+ {
1130
+ "id": "shared",
1131
+ "component": "Text",
1132
+ "text": "once"
1133
+ }
1134
+ ],
1135
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1",
1136
+ "expected": {
1137
+ "root": {
1138
+ "id": "root",
1139
+ "component": "Box",
1140
+ "props": {},
1141
+ "children": [
1142
+ {
1143
+ "id": "a",
1144
+ "component": "Box",
1145
+ "props": {},
1146
+ "children": [
1147
+ {
1148
+ "id": "shared",
1149
+ "component": "Text",
1150
+ "props": {
1151
+ "text": "once"
1152
+ },
1153
+ "children": []
1154
+ }
1155
+ ]
1156
+ }
1157
+ ]
1158
+ },
1159
+ "issues": [
1160
+ {
1161
+ "id": "shared",
1162
+ "message": "id used twice; only its first place renders"
1163
+ }
1164
+ ]
1165
+ }
1166
+ },
1167
+ {
1168
+ "name": "limit-used-twice-doubling",
1169
+ "components": [
1170
+ {
1171
+ "id": "root",
1172
+ "component": "Box",
1173
+ "children": [
1174
+ "n1",
1175
+ "n1"
1176
+ ]
1177
+ },
1178
+ {
1179
+ "id": "n1",
1180
+ "component": "Box",
1181
+ "children": [
1182
+ "n2",
1183
+ "n2"
1184
+ ]
1185
+ },
1186
+ {
1187
+ "id": "n2",
1188
+ "component": "Box",
1189
+ "children": [
1190
+ "n3",
1191
+ "n3"
1192
+ ]
1193
+ },
1194
+ {
1195
+ "id": "n3",
1196
+ "component": "Box",
1197
+ "children": [
1198
+ "n4",
1199
+ "n4"
1200
+ ]
1201
+ },
1202
+ {
1203
+ "id": "n4",
1204
+ "component": "Box",
1205
+ "children": [
1206
+ "n5",
1207
+ "n5"
1208
+ ]
1209
+ },
1210
+ {
1211
+ "id": "n5",
1212
+ "component": "Box",
1213
+ "children": [
1214
+ "n6",
1215
+ "n6"
1216
+ ]
1217
+ },
1218
+ {
1219
+ "id": "n6",
1220
+ "component": "Box",
1221
+ "children": [
1222
+ "n7",
1223
+ "n7"
1224
+ ]
1225
+ },
1226
+ {
1227
+ "id": "n7",
1228
+ "component": "Box",
1229
+ "children": [
1230
+ "n8",
1231
+ "n8"
1232
+ ]
1233
+ },
1234
+ {
1235
+ "id": "n8",
1236
+ "component": "Box",
1237
+ "children": [
1238
+ "n9",
1239
+ "n9"
1240
+ ]
1241
+ },
1242
+ {
1243
+ "id": "n9",
1244
+ "component": "Box",
1245
+ "children": [
1246
+ "n10",
1247
+ "n10"
1248
+ ]
1249
+ },
1250
+ {
1251
+ "id": "n10",
1252
+ "component": "Box",
1253
+ "children": [
1254
+ "n11",
1255
+ "n11"
1256
+ ]
1257
+ },
1258
+ {
1259
+ "id": "n11",
1260
+ "component": "Box",
1261
+ "children": [
1262
+ "n12",
1263
+ "n12"
1264
+ ]
1265
+ },
1266
+ {
1267
+ "id": "n12",
1268
+ "component": "Text",
1269
+ "text": "leaf"
1270
+ }
1271
+ ],
1272
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1",
1273
+ "expected": {
1274
+ "root": {
1275
+ "id": "root",
1276
+ "component": "Box",
1277
+ "props": {},
1278
+ "children": [
1279
+ {
1280
+ "id": "n1",
1281
+ "component": "Box",
1282
+ "props": {},
1283
+ "children": [
1284
+ {
1285
+ "id": "n2",
1286
+ "component": "Box",
1287
+ "props": {},
1288
+ "children": [
1289
+ {
1290
+ "id": "n3",
1291
+ "component": "Box",
1292
+ "props": {},
1293
+ "children": [
1294
+ {
1295
+ "id": "n4",
1296
+ "component": "Box",
1297
+ "props": {},
1298
+ "children": [
1299
+ {
1300
+ "id": "n5",
1301
+ "component": "Box",
1302
+ "props": {},
1303
+ "children": [
1304
+ {
1305
+ "id": "n6",
1306
+ "component": "Box",
1307
+ "props": {},
1308
+ "children": [
1309
+ {
1310
+ "id": "n7",
1311
+ "component": "Box",
1312
+ "props": {},
1313
+ "children": [
1314
+ {
1315
+ "id": "n8",
1316
+ "component": "Box",
1317
+ "props": {},
1318
+ "children": [
1319
+ {
1320
+ "id": "n9",
1321
+ "component": "Box",
1322
+ "props": {},
1323
+ "children": [
1324
+ {
1325
+ "id": "n10",
1326
+ "component": "Box",
1327
+ "props": {},
1328
+ "children": [
1329
+ {
1330
+ "id": "n11",
1331
+ "component": "Box",
1332
+ "props": {},
1333
+ "children": [
1334
+ {
1335
+ "id": "n12",
1336
+ "component": "Text",
1337
+ "props": {
1338
+ "text": "leaf"
1339
+ },
1340
+ "children": []
1341
+ }
1342
+ ]
1343
+ }
1344
+ ]
1345
+ }
1346
+ ]
1347
+ }
1348
+ ]
1349
+ }
1350
+ ]
1351
+ }
1352
+ ]
1353
+ }
1354
+ ]
1355
+ }
1356
+ ]
1357
+ }
1358
+ ]
1359
+ }
1360
+ ]
1361
+ }
1362
+ ]
1363
+ }
1364
+ ]
1365
+ },
1366
+ "issues": [
1367
+ {
1368
+ "id": "n12",
1369
+ "message": "id used twice; only its first place renders"
1370
+ },
1371
+ {
1372
+ "id": "n11",
1373
+ "message": "id used twice; only its first place renders"
1374
+ },
1375
+ {
1376
+ "id": "n10",
1377
+ "message": "id used twice; only its first place renders"
1378
+ },
1379
+ {
1380
+ "id": "n9",
1381
+ "message": "id used twice; only its first place renders"
1382
+ },
1383
+ {
1384
+ "id": "n8",
1385
+ "message": "id used twice; only its first place renders"
1386
+ },
1387
+ {
1388
+ "id": "n7",
1389
+ "message": "id used twice; only its first place renders"
1390
+ },
1391
+ {
1392
+ "id": "n6",
1393
+ "message": "id used twice; only its first place renders"
1394
+ },
1395
+ {
1396
+ "id": "n5",
1397
+ "message": "id used twice; only its first place renders"
1398
+ },
1399
+ {
1400
+ "id": "n4",
1401
+ "message": "id used twice; only its first place renders"
1402
+ },
1403
+ {
1404
+ "id": "n3",
1405
+ "message": "id used twice; only its first place renders"
1406
+ },
1407
+ {
1408
+ "id": "n2",
1409
+ "message": "id used twice; only its first place renders"
1410
+ },
1411
+ {
1412
+ "id": "n1",
1413
+ "message": "id used twice; only its first place renders"
1414
+ }
1415
+ ]
1416
+ }
1417
+ },
1418
+ {
1419
+ "name": "limit-used-twice-across-a-template",
1420
+ "components": [
1421
+ {
1422
+ "id": "root",
1423
+ "component": "Box",
1424
+ "children": [
1425
+ "label",
1426
+ "list"
1427
+ ]
1428
+ },
1429
+ {
1430
+ "id": "list",
1431
+ "component": "List",
1432
+ "children": {
1433
+ "componentId": "row",
1434
+ "path": "/items"
1435
+ }
1436
+ },
1437
+ {
1438
+ "id": "row",
1439
+ "component": "Box",
1440
+ "children": [
1441
+ "label"
1442
+ ]
1443
+ },
1444
+ {
1445
+ "id": "label",
1446
+ "component": "Text",
1447
+ "text": "shared"
1448
+ }
1449
+ ],
1450
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1",
1451
+ "expected": {
1452
+ "root": {
1453
+ "id": "root",
1454
+ "component": "Box",
1455
+ "props": {},
1456
+ "children": [
1457
+ {
1458
+ "id": "label",
1459
+ "component": "Text",
1460
+ "props": {
1461
+ "text": "shared"
1462
+ },
1463
+ "children": []
1464
+ },
1465
+ {
1466
+ "id": "list",
1467
+ "component": "List",
1468
+ "props": {},
1469
+ "children": [],
1470
+ "template": {
1471
+ "component": "row",
1472
+ "path": "/items"
1473
+ }
1474
+ }
1475
+ ]
1476
+ },
1477
+ "issues": [
1478
+ {
1479
+ "id": "label",
1480
+ "message": "id used twice; only its first place renders"
1481
+ }
1482
+ ],
1483
+ "templates": {
1484
+ "row": {
1485
+ "id": "row",
1486
+ "component": "Box",
1487
+ "props": {},
1488
+ "children": []
1489
+ }
1490
+ }
1491
+ }
1492
+ },
1493
+ {
1494
+ "name": "limit-depth",
1495
+ "components": [
1496
+ {
1497
+ "id": "root",
1498
+ "component": "Box",
1499
+ "children": [
1500
+ "n1"
1501
+ ]
1502
+ },
1503
+ {
1504
+ "id": "n1",
1505
+ "component": "Box",
1506
+ "children": [
1507
+ "n2"
1508
+ ]
1509
+ },
1510
+ {
1511
+ "id": "n2",
1512
+ "component": "Box",
1513
+ "children": [
1514
+ "n3"
1515
+ ]
1516
+ },
1517
+ {
1518
+ "id": "n3",
1519
+ "component": "Box",
1520
+ "children": [
1521
+ "n4"
1522
+ ]
1523
+ },
1524
+ {
1525
+ "id": "n4",
1526
+ "component": "Box",
1527
+ "children": [
1528
+ "n5"
1529
+ ]
1530
+ },
1531
+ {
1532
+ "id": "n5",
1533
+ "component": "Box",
1534
+ "children": [
1535
+ "n6"
1536
+ ]
1537
+ },
1538
+ {
1539
+ "id": "n6",
1540
+ "component": "Box",
1541
+ "children": [
1542
+ "n7"
1543
+ ]
1544
+ },
1545
+ {
1546
+ "id": "n7",
1547
+ "component": "Box",
1548
+ "children": [
1549
+ "n8"
1550
+ ]
1551
+ },
1552
+ {
1553
+ "id": "n8",
1554
+ "component": "Box",
1555
+ "children": [
1556
+ "n9"
1557
+ ]
1558
+ },
1559
+ {
1560
+ "id": "n9",
1561
+ "component": "Box",
1562
+ "children": [
1563
+ "n10"
1564
+ ]
1565
+ },
1566
+ {
1567
+ "id": "n10",
1568
+ "component": "Box",
1569
+ "children": [
1570
+ "n11"
1571
+ ]
1572
+ },
1573
+ {
1574
+ "id": "n11",
1575
+ "component": "Box",
1576
+ "children": [
1577
+ "n12"
1578
+ ]
1579
+ },
1580
+ {
1581
+ "id": "n12",
1582
+ "component": "Box",
1583
+ "children": [
1584
+ "n13"
1585
+ ]
1586
+ },
1587
+ {
1588
+ "id": "n13",
1589
+ "component": "Box",
1590
+ "children": [
1591
+ "n14"
1592
+ ]
1593
+ },
1594
+ {
1595
+ "id": "n14",
1596
+ "component": "Box",
1597
+ "children": [
1598
+ "n15"
1599
+ ]
1600
+ },
1601
+ {
1602
+ "id": "n15",
1603
+ "component": "Box",
1604
+ "children": [
1605
+ "n16"
1606
+ ]
1607
+ },
1608
+ {
1609
+ "id": "n16",
1610
+ "component": "Box",
1611
+ "children": [
1612
+ "n17"
1613
+ ]
1614
+ },
1615
+ {
1616
+ "id": "n17",
1617
+ "component": "Box",
1618
+ "children": [
1619
+ "n18"
1620
+ ]
1621
+ },
1622
+ {
1623
+ "id": "n18",
1624
+ "component": "Box",
1625
+ "children": [
1626
+ "n19"
1627
+ ]
1628
+ },
1629
+ {
1630
+ "id": "n19",
1631
+ "component": "Box",
1632
+ "children": [
1633
+ "n20"
1634
+ ]
1635
+ },
1636
+ {
1637
+ "id": "n20",
1638
+ "component": "Box",
1639
+ "children": [
1640
+ "n21"
1641
+ ]
1642
+ },
1643
+ {
1644
+ "id": "n21",
1645
+ "component": "Box",
1646
+ "children": [
1647
+ "n22"
1648
+ ]
1649
+ },
1650
+ {
1651
+ "id": "n22",
1652
+ "component": "Box",
1653
+ "children": [
1654
+ "n23"
1655
+ ]
1656
+ },
1657
+ {
1658
+ "id": "n23",
1659
+ "component": "Box",
1660
+ "children": [
1661
+ "n24"
1662
+ ]
1663
+ },
1664
+ {
1665
+ "id": "n24",
1666
+ "component": "Box",
1667
+ "children": [
1668
+ "n25"
1669
+ ]
1670
+ },
1671
+ {
1672
+ "id": "n25",
1673
+ "component": "Box",
1674
+ "children": [
1675
+ "n26"
1676
+ ]
1677
+ },
1678
+ {
1679
+ "id": "n26",
1680
+ "component": "Box",
1681
+ "children": [
1682
+ "n27"
1683
+ ]
1684
+ },
1685
+ {
1686
+ "id": "n27",
1687
+ "component": "Box",
1688
+ "children": [
1689
+ "n28"
1690
+ ]
1691
+ },
1692
+ {
1693
+ "id": "n28",
1694
+ "component": "Box",
1695
+ "children": [
1696
+ "n29"
1697
+ ]
1698
+ },
1699
+ {
1700
+ "id": "n29",
1701
+ "component": "Box",
1702
+ "children": [
1703
+ "n30"
1704
+ ]
1705
+ },
1706
+ {
1707
+ "id": "n30",
1708
+ "component": "Box",
1709
+ "children": [
1710
+ "n31"
1711
+ ]
1712
+ },
1713
+ {
1714
+ "id": "n31",
1715
+ "component": "Box",
1716
+ "children": [
1717
+ "n32"
1718
+ ]
1719
+ },
1720
+ {
1721
+ "id": "n32",
1722
+ "component": "Box",
1723
+ "children": [
1724
+ "n33"
1725
+ ]
1726
+ },
1727
+ {
1728
+ "id": "n33",
1729
+ "component": "Box",
1730
+ "children": [
1731
+ "n34"
1732
+ ]
1733
+ },
1734
+ {
1735
+ "id": "n34",
1736
+ "component": "Box",
1737
+ "children": [
1738
+ "n35"
1739
+ ]
1740
+ },
1741
+ {
1742
+ "id": "n35",
1743
+ "component": "Box",
1744
+ "children": [
1745
+ "n36"
1746
+ ]
1747
+ },
1748
+ {
1749
+ "id": "n36",
1750
+ "component": "Box",
1751
+ "children": [
1752
+ "n37"
1753
+ ]
1754
+ },
1755
+ {
1756
+ "id": "n37",
1757
+ "component": "Box",
1758
+ "children": [
1759
+ "n38"
1760
+ ]
1761
+ },
1762
+ {
1763
+ "id": "n38",
1764
+ "component": "Box",
1765
+ "children": [
1766
+ "n39"
1767
+ ]
1768
+ },
1769
+ {
1770
+ "id": "n39",
1771
+ "component": "Box",
1772
+ "children": [
1773
+ "n40"
1774
+ ]
1775
+ },
1776
+ {
1777
+ "id": "n40",
1778
+ "component": "Box",
1779
+ "children": [
1780
+ "n41"
1781
+ ]
1782
+ },
1783
+ {
1784
+ "id": "n41",
1785
+ "component": "Box",
1786
+ "children": [
1787
+ "n42"
1788
+ ]
1789
+ },
1790
+ {
1791
+ "id": "n42",
1792
+ "component": "Box",
1793
+ "children": [
1794
+ "n43"
1795
+ ]
1796
+ },
1797
+ {
1798
+ "id": "n43",
1799
+ "component": "Box",
1800
+ "children": [
1801
+ "n44"
1802
+ ]
1803
+ },
1804
+ {
1805
+ "id": "n44",
1806
+ "component": "Box",
1807
+ "children": [
1808
+ "n45"
1809
+ ]
1810
+ },
1811
+ {
1812
+ "id": "n45",
1813
+ "component": "Box",
1814
+ "children": [
1815
+ "n46"
1816
+ ]
1817
+ },
1818
+ {
1819
+ "id": "n46",
1820
+ "component": "Box",
1821
+ "children": [
1822
+ "n47"
1823
+ ]
1824
+ },
1825
+ {
1826
+ "id": "n47",
1827
+ "component": "Box",
1828
+ "children": [
1829
+ "n48"
1830
+ ]
1831
+ },
1832
+ {
1833
+ "id": "n48",
1834
+ "component": "Box",
1835
+ "children": [
1836
+ "n49"
1837
+ ]
1838
+ },
1839
+ {
1840
+ "id": "n49",
1841
+ "component": "Box",
1842
+ "children": [
1843
+ "n50"
1844
+ ]
1845
+ },
1846
+ {
1847
+ "id": "n50",
1848
+ "component": "Box",
1849
+ "children": [
1850
+ "n51"
1851
+ ]
1852
+ },
1853
+ {
1854
+ "id": "n51",
1855
+ "component": "Text",
1856
+ "text": "leaf"
1857
+ }
1858
+ ],
1859
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1",
1860
+ "expected": {
1861
+ "root": {
1862
+ "id": "root",
1863
+ "component": "Box",
1864
+ "props": {},
1865
+ "children": [
1866
+ {
1867
+ "id": "n1",
1868
+ "component": "Box",
1869
+ "props": {},
1870
+ "children": [
1871
+ {
1872
+ "id": "n2",
1873
+ "component": "Box",
1874
+ "props": {},
1875
+ "children": [
1876
+ {
1877
+ "id": "n3",
1878
+ "component": "Box",
1879
+ "props": {},
1880
+ "children": [
1881
+ {
1882
+ "id": "n4",
1883
+ "component": "Box",
1884
+ "props": {},
1885
+ "children": [
1886
+ {
1887
+ "id": "n5",
1888
+ "component": "Box",
1889
+ "props": {},
1890
+ "children": [
1891
+ {
1892
+ "id": "n6",
1893
+ "component": "Box",
1894
+ "props": {},
1895
+ "children": [
1896
+ {
1897
+ "id": "n7",
1898
+ "component": "Box",
1899
+ "props": {},
1900
+ "children": [
1901
+ {
1902
+ "id": "n8",
1903
+ "component": "Box",
1904
+ "props": {},
1905
+ "children": [
1906
+ {
1907
+ "id": "n9",
1908
+ "component": "Box",
1909
+ "props": {},
1910
+ "children": [
1911
+ {
1912
+ "id": "n10",
1913
+ "component": "Box",
1914
+ "props": {},
1915
+ "children": [
1916
+ {
1917
+ "id": "n11",
1918
+ "component": "Box",
1919
+ "props": {},
1920
+ "children": [
1921
+ {
1922
+ "id": "n12",
1923
+ "component": "Box",
1924
+ "props": {},
1925
+ "children": [
1926
+ {
1927
+ "id": "n13",
1928
+ "component": "Box",
1929
+ "props": {},
1930
+ "children": [
1931
+ {
1932
+ "id": "n14",
1933
+ "component": "Box",
1934
+ "props": {},
1935
+ "children": [
1936
+ {
1937
+ "id": "n15",
1938
+ "component": "Box",
1939
+ "props": {},
1940
+ "children": [
1941
+ {
1942
+ "id": "n16",
1943
+ "component": "Box",
1944
+ "props": {},
1945
+ "children": [
1946
+ {
1947
+ "id": "n17",
1948
+ "component": "Box",
1949
+ "props": {},
1950
+ "children": [
1951
+ {
1952
+ "id": "n18",
1953
+ "component": "Box",
1954
+ "props": {},
1955
+ "children": [
1956
+ {
1957
+ "id": "n19",
1958
+ "component": "Box",
1959
+ "props": {},
1960
+ "children": [
1961
+ {
1962
+ "id": "n20",
1963
+ "component": "Box",
1964
+ "props": {},
1965
+ "children": [
1966
+ {
1967
+ "id": "n21",
1968
+ "component": "Box",
1969
+ "props": {},
1970
+ "children": [
1971
+ {
1972
+ "id": "n22",
1973
+ "component": "Box",
1974
+ "props": {},
1975
+ "children": [
1976
+ {
1977
+ "id": "n23",
1978
+ "component": "Box",
1979
+ "props": {},
1980
+ "children": [
1981
+ {
1982
+ "id": "n24",
1983
+ "component": "Box",
1984
+ "props": {},
1985
+ "children": [
1986
+ {
1987
+ "id": "n25",
1988
+ "component": "Box",
1989
+ "props": {},
1990
+ "children": [
1991
+ {
1992
+ "id": "n26",
1993
+ "component": "Box",
1994
+ "props": {},
1995
+ "children": [
1996
+ {
1997
+ "id": "n27",
1998
+ "component": "Box",
1999
+ "props": {},
2000
+ "children": [
2001
+ {
2002
+ "id": "n28",
2003
+ "component": "Box",
2004
+ "props": {},
2005
+ "children": [
2006
+ {
2007
+ "id": "n29",
2008
+ "component": "Box",
2009
+ "props": {},
2010
+ "children": [
2011
+ {
2012
+ "id": "n30",
2013
+ "component": "Box",
2014
+ "props": {},
2015
+ "children": [
2016
+ {
2017
+ "id": "n31",
2018
+ "component": "Box",
2019
+ "props": {},
2020
+ "children": [
2021
+ {
2022
+ "id": "n32",
2023
+ "component": "Box",
2024
+ "props": {},
2025
+ "children": [
2026
+ {
2027
+ "id": "n33",
2028
+ "component": "Box",
2029
+ "props": {},
2030
+ "children": [
2031
+ {
2032
+ "id": "n34",
2033
+ "component": "Box",
2034
+ "props": {},
2035
+ "children": [
2036
+ {
2037
+ "id": "n35",
2038
+ "component": "Box",
2039
+ "props": {},
2040
+ "children": [
2041
+ {
2042
+ "id": "n36",
2043
+ "component": "Box",
2044
+ "props": {},
2045
+ "children": [
2046
+ {
2047
+ "id": "n37",
2048
+ "component": "Box",
2049
+ "props": {},
2050
+ "children": [
2051
+ {
2052
+ "id": "n38",
2053
+ "component": "Box",
2054
+ "props": {},
2055
+ "children": [
2056
+ {
2057
+ "id": "n39",
2058
+ "component": "Box",
2059
+ "props": {},
2060
+ "children": [
2061
+ {
2062
+ "id": "n40",
2063
+ "component": "Box",
2064
+ "props": {},
2065
+ "children": [
2066
+ {
2067
+ "id": "n41",
2068
+ "component": "Box",
2069
+ "props": {},
2070
+ "children": [
2071
+ {
2072
+ "id": "n42",
2073
+ "component": "Box",
2074
+ "props": {},
2075
+ "children": [
2076
+ {
2077
+ "id": "n43",
2078
+ "component": "Box",
2079
+ "props": {},
2080
+ "children": [
2081
+ {
2082
+ "id": "n44",
2083
+ "component": "Box",
2084
+ "props": {},
2085
+ "children": [
2086
+ {
2087
+ "id": "n45",
2088
+ "component": "Box",
2089
+ "props": {},
2090
+ "children": [
2091
+ {
2092
+ "id": "n46",
2093
+ "component": "Box",
2094
+ "props": {},
2095
+ "children": [
2096
+ {
2097
+ "id": "n47",
2098
+ "component": "Box",
2099
+ "props": {},
2100
+ "children": [
2101
+ {
2102
+ "id": "n48",
2103
+ "component": "Unknown",
2104
+ "props": {
2105
+ "component": "Box",
2106
+ "catalogId": "https://ui.exponential.at/catalogs/core/v1"
2107
+ },
2108
+ "children": []
2109
+ }
2110
+ ]
2111
+ }
2112
+ ]
2113
+ }
2114
+ ]
2115
+ }
2116
+ ]
2117
+ }
2118
+ ]
2119
+ }
2120
+ ]
2121
+ }
2122
+ ]
2123
+ }
2124
+ ]
2125
+ }
2126
+ ]
2127
+ }
2128
+ ]
2129
+ }
2130
+ ]
2131
+ }
2132
+ ]
2133
+ }
2134
+ ]
2135
+ }
2136
+ ]
2137
+ }
2138
+ ]
2139
+ }
2140
+ ]
2141
+ }
2142
+ ]
2143
+ }
2144
+ ]
2145
+ }
2146
+ ]
2147
+ }
2148
+ ]
2149
+ }
2150
+ ]
2151
+ }
2152
+ ]
2153
+ }
2154
+ ]
2155
+ }
2156
+ ]
2157
+ }
2158
+ ]
2159
+ }
2160
+ ]
2161
+ }
2162
+ ]
2163
+ }
2164
+ ]
2165
+ }
2166
+ ]
2167
+ }
2168
+ ]
2169
+ }
2170
+ ]
2171
+ }
2172
+ ]
2173
+ }
2174
+ ]
2175
+ }
2176
+ ]
2177
+ }
2178
+ ]
2179
+ }
2180
+ ]
2181
+ }
2182
+ ]
2183
+ }
2184
+ ]
2185
+ }
2186
+ ]
2187
+ }
2188
+ ]
2189
+ }
2190
+ ]
2191
+ }
2192
+ ]
2193
+ }
2194
+ ]
2195
+ }
2196
+ ]
2197
+ }
2198
+ ]
2199
+ }
2200
+ ]
2201
+ }
2202
+ ]
2203
+ }
2204
+ ]
2205
+ },
2206
+ "issues": [
2207
+ {
2208
+ "id": "n48",
2209
+ "message": "nesting deeper than 48 levels"
2210
+ }
2211
+ ]
2212
+ }
2213
+ }
2214
+ ]
2215
+ }