@superxd-studio/adptr 0.5.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 (221) hide show
  1. package/GENERATIVE.md +101 -0
  2. package/INTERACTIONS.md +51 -0
  3. package/LICENSE +21 -0
  4. package/README.md +57 -0
  5. package/REUSE.md +170 -0
  6. package/REVIEW.md +68 -0
  7. package/THIRD-PARTY-NOTICES.md +28 -0
  8. package/ai-sdk/index.js +96 -0
  9. package/assets/ibm-plex-mono-cyrillic-400-normal.woff2 +0 -0
  10. package/assets/ibm-plex-mono-cyrillic-500-normal.woff2 +0 -0
  11. package/assets/ibm-plex-mono-cyrillic-ext-400-normal.woff2 +0 -0
  12. package/assets/ibm-plex-mono-cyrillic-ext-500-normal.woff2 +0 -0
  13. package/assets/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  14. package/assets/ibm-plex-mono-latin-500-normal.woff2 +0 -0
  15. package/assets/ibm-plex-mono-latin-ext-400-normal.woff2 +0 -0
  16. package/assets/ibm-plex-mono-latin-ext-500-normal.woff2 +0 -0
  17. package/assets/ibm-plex-mono-vietnamese-400-normal.woff2 +0 -0
  18. package/assets/ibm-plex-mono-vietnamese-500-normal.woff2 +0 -0
  19. package/assets/instrument-sans-latin-ext-wght-normal.woff2 +0 -0
  20. package/assets/instrument-sans-latin-wght-normal.woff2 +0 -0
  21. package/assistant-ui/index.js +139 -0
  22. package/chunks/callout-DKMHSnjc.js +342 -0
  23. package/chunks/canvas-BJ15-XxE.js +598 -0
  24. package/chunks/controller-Cfpg0C7v.js +180 -0
  25. package/chunks/core-BCqVRLUy.js +312 -0
  26. package/chunks/text-field-BLtoaZFn.js +41 -0
  27. package/chunks/types-BGF7r1my.js +115 -0
  28. package/chunks/ui-9DyNsYXY.js +967 -0
  29. package/core/index.js +4 -0
  30. package/custom/index.js +64 -0
  31. package/examples/ai-sdk-backend/package.json +11 -0
  32. package/examples/ai-sdk-backend/server.mjs +316 -0
  33. package/examples/custom-backend/copy.mjs +7 -0
  34. package/examples/custom-backend/server.mjs +118 -0
  35. package/examples/generative/specs.json +2094 -0
  36. package/examples/review-backend/copy.mjs +27 -0
  37. package/examples/review-backend/package.json +11 -0
  38. package/examples/review-backend/server.mjs +276 -0
  39. package/examples/web-ai-sdk/index.html +12 -0
  40. package/examples/web-ai-sdk/package.json +21 -0
  41. package/examples/web-ai-sdk/src/copy.ts +1 -0
  42. package/examples/web-ai-sdk/src/main.tsx +64 -0
  43. package/examples/web-ai-sdk/tsconfig.json +13 -0
  44. package/examples/web-generative/index.html +12 -0
  45. package/examples/web-generative/package.json +23 -0
  46. package/examples/web-generative/src/copy.ts +42 -0
  47. package/examples/web-generative/src/main.tsx +74 -0
  48. package/examples/web-generative/tsconfig.json +14 -0
  49. package/examples/web-independent/index.html +12 -0
  50. package/examples/web-independent/package.json +20 -0
  51. package/examples/web-independent/src/main.tsx +32 -0
  52. package/examples/web-independent/tsconfig.json +14 -0
  53. package/examples/web-interactions/index.html +12 -0
  54. package/examples/web-interactions/package.json +21 -0
  55. package/examples/web-interactions/src/copy.ts +215 -0
  56. package/examples/web-interactions/src/examples.tsx +628 -0
  57. package/examples/web-interactions/src/main.tsx +116 -0
  58. package/examples/web-interactions/tsconfig.json +14 -0
  59. package/examples/web-review/index.html +12 -0
  60. package/examples/web-review/package.json +20 -0
  61. package/examples/web-review/src/main.tsx +59 -0
  62. package/examples/web-review/tsconfig.json +14 -0
  63. package/fonts.css +117 -0
  64. package/generative/index.js +1560 -0
  65. package/interactions/index.js +1591 -0
  66. package/langgraph-review/index.js +36 -0
  67. package/licenses/ai-sdk.txt +13 -0
  68. package/licenses/assistant-ui-generative.txt +21 -0
  69. package/licenses/assistant-ui.txt +23 -0
  70. package/licenses/ibm-plex-mono.txt +93 -0
  71. package/licenses/instrument-sans.txt +93 -0
  72. package/licenses/internationalized-date.txt +201 -0
  73. package/licenses/langgraph.txt +21 -0
  74. package/licenses/lucide.txt +43 -0
  75. package/licenses/react-markdown.txt +21 -0
  76. package/licenses/remark-gfm.txt +22 -0
  77. package/licenses/zod.txt +21 -0
  78. package/package.json +138 -0
  79. package/review/index.js +31 -0
  80. package/source/components/avatar.tsx +50 -0
  81. package/source/components/button.tsx +155 -0
  82. package/source/components/callout.tsx +65 -0
  83. package/source/components/canvas/connector.tsx +14 -0
  84. package/source/components/canvas/copy.ts +34 -0
  85. package/source/components/canvas/index.tsx +257 -0
  86. package/source/components/canvas/recorder.ts +36 -0
  87. package/source/components/date-time-field.tsx +77 -0
  88. package/source/components/flow-motion.tsx +109 -0
  89. package/source/components/icons.tsx +275 -0
  90. package/source/components/responsive-overlay.tsx +91 -0
  91. package/source/components/scenario-picker/copy.ts +5 -0
  92. package/source/components/scenario-picker/index.tsx +142 -0
  93. package/source/components/scroll-area.tsx +59 -0
  94. package/source/components/search-picker.tsx +127 -0
  95. package/source/components/segmented-control.tsx +123 -0
  96. package/source/components/skeleton.tsx +11 -0
  97. package/source/components/spinner.tsx +19 -0
  98. package/source/components/superxd-arrow.tsx +22 -0
  99. package/source/components/switch.tsx +45 -0
  100. package/source/components/text-field.tsx +81 -0
  101. package/source/components/thinking.tsx +16 -0
  102. package/source/components/ui/copy.ts +12 -0
  103. package/source/components/ui/display.tsx +276 -0
  104. package/source/components/ui/navigation.tsx +346 -0
  105. package/source/components/ui/portal-theme.tsx +28 -0
  106. package/source/components/ui/selection.tsx +336 -0
  107. package/source/lib/cn.ts +23 -0
  108. package/source/reusable/ai-sdk/index.ts +114 -0
  109. package/source/reusable/assistant-ui/index.tsx +266 -0
  110. package/source/reusable/core/attachments.ts +163 -0
  111. package/source/reusable/core/index.ts +417 -0
  112. package/source/reusable/custom/index.ts +90 -0
  113. package/source/reusable/generative/actions.ts +188 -0
  114. package/source/reusable/generative/copy.ts +47 -0
  115. package/source/reusable/generative/data.tsx +126 -0
  116. package/source/reusable/generative/index.tsx +517 -0
  117. package/source/reusable/generative/schema.ts +327 -0
  118. package/source/reusable/generative/timeline.tsx +214 -0
  119. package/source/reusable/generative/vocabulary.tsx +847 -0
  120. package/source/reusable/interactions/agent.ts +259 -0
  121. package/source/reusable/interactions/artifact.ts +236 -0
  122. package/source/reusable/interactions/context.tsx +38 -0
  123. package/source/reusable/interactions/copy.ts +117 -0
  124. package/source/reusable/interactions/feedback.ts +73 -0
  125. package/source/reusable/interactions/index.ts +11 -0
  126. package/source/reusable/interactions/presentation.tsx +483 -0
  127. package/source/reusable/interactions/store.ts +74 -0
  128. package/source/reusable/interactions/threads.ts +126 -0
  129. package/source/reusable/interactions/web.tsx +574 -0
  130. package/source/reusable/langgraph-review/index.ts +73 -0
  131. package/source/reusable/review/controller.ts +263 -0
  132. package/source/reusable/review/index.ts +47 -0
  133. package/source/reusable/review/types.ts +189 -0
  134. package/source/reusable/ui/index.ts +25 -0
  135. package/source/reusable/uploads/index.ts +48 -0
  136. package/source/reusable/web/attachments/copy.ts +23 -0
  137. package/source/reusable/web/attachments/index.tsx +233 -0
  138. package/source/reusable/web/copy.ts +22 -0
  139. package/source/reusable/web/index.tsx +470 -0
  140. package/source/reusable/web/message/copy.ts +26 -0
  141. package/source/reusable/web/message/index.tsx +388 -0
  142. package/source/reusable/web/message/streaming.ts +64 -0
  143. package/source/reusable/web/message/styles.css +21 -0
  144. package/source/reusable/web/review/copy.ts +78 -0
  145. package/source/reusable/web/review/flow.ts +24 -0
  146. package/source/reusable/web/review/index.tsx +506 -0
  147. package/source/reusable/web/styles.ts +2 -0
  148. package/source/styles/library.css +612 -0
  149. package/source/styles/theme.css +228 -0
  150. package/styles.css +3 -0
  151. package/styles.d.ts +1 -0
  152. package/types/components/avatar.d.ts +14 -0
  153. package/types/components/button.d.ts +36 -0
  154. package/types/components/callout.d.ts +19 -0
  155. package/types/components/canvas/connector.d.ts +2 -0
  156. package/types/components/canvas/copy.d.ts +34 -0
  157. package/types/components/canvas/index.d.ts +33 -0
  158. package/types/components/canvas/recorder.d.ts +10 -0
  159. package/types/components/date-time-field.d.ts +11 -0
  160. package/types/components/flow-motion.d.ts +38 -0
  161. package/types/components/icons.d.ts +138 -0
  162. package/types/components/responsive-overlay.d.ts +15 -0
  163. package/types/components/scenario-picker/copy.d.ts +5 -0
  164. package/types/components/scenario-picker/index.d.ts +14 -0
  165. package/types/components/scroll-area.d.ts +14 -0
  166. package/types/components/search-picker.d.ts +27 -0
  167. package/types/components/segmented-control.d.ts +23 -0
  168. package/types/components/skeleton.d.ts +4 -0
  169. package/types/components/spinner.d.ts +4 -0
  170. package/types/components/superxd-arrow.d.ts +5 -0
  171. package/types/components/switch.d.ts +8 -0
  172. package/types/components/text-field.d.ts +19 -0
  173. package/types/components/thinking.d.ts +8 -0
  174. package/types/components/ui/copy.d.ts +12 -0
  175. package/types/components/ui/display.d.ts +50 -0
  176. package/types/components/ui/navigation.d.ts +63 -0
  177. package/types/components/ui/portal-theme.d.ts +8 -0
  178. package/types/components/ui/selection.d.ts +37 -0
  179. package/types/lib/cn.d.ts +3 -0
  180. package/types/reusable/ai-sdk/index.d.ts +15 -0
  181. package/types/reusable/assistant-ui/index.d.ts +12 -0
  182. package/types/reusable/core/attachments.d.ts +54 -0
  183. package/types/reusable/core/index.d.ts +107 -0
  184. package/types/reusable/custom/index.d.ts +14 -0
  185. package/types/reusable/generative/actions.d.ts +45 -0
  186. package/types/reusable/generative/copy.d.ts +48 -0
  187. package/types/reusable/generative/data.d.ts +4 -0
  188. package/types/reusable/generative/index.d.ts +30 -0
  189. package/types/reusable/generative/schema.d.ts +303 -0
  190. package/types/reusable/generative/timeline.d.ts +21 -0
  191. package/types/reusable/generative/vocabulary.d.ts +34 -0
  192. package/types/reusable/interactions/agent.d.ts +98 -0
  193. package/types/reusable/interactions/artifact.d.ts +118 -0
  194. package/types/reusable/interactions/context.d.ts +130 -0
  195. package/types/reusable/interactions/copy.d.ts +115 -0
  196. package/types/reusable/interactions/feedback.d.ts +34 -0
  197. package/types/reusable/interactions/index.d.ts +10 -0
  198. package/types/reusable/interactions/presentation.d.ts +97 -0
  199. package/types/reusable/interactions/store.d.ts +29 -0
  200. package/types/reusable/interactions/threads.d.ts +38 -0
  201. package/types/reusable/interactions/web.d.ts +22 -0
  202. package/types/reusable/langgraph-review/index.d.ts +5 -0
  203. package/types/reusable/review/controller.d.ts +52 -0
  204. package/types/reusable/review/index.d.ts +12 -0
  205. package/types/reusable/review/types.d.ts +61 -0
  206. package/types/reusable/ui/index.d.ts +19 -0
  207. package/types/reusable/uploads/index.d.ts +11 -0
  208. package/types/reusable/web/attachments/copy.d.ts +25 -0
  209. package/types/reusable/web/attachments/index.d.ts +24 -0
  210. package/types/reusable/web/copy.d.ts +24 -0
  211. package/types/reusable/web/index.d.ts +41 -0
  212. package/types/reusable/web/message/copy.d.ts +27 -0
  213. package/types/reusable/web/message/index.d.ts +56 -0
  214. package/types/reusable/web/message/streaming.d.ts +27 -0
  215. package/types/reusable/web/review/copy.d.ts +72 -0
  216. package/types/reusable/web/review/flow.d.ts +3 -0
  217. package/types/reusable/web/review/index.d.ts +38 -0
  218. package/types/reusable/web/styles.d.ts +2 -0
  219. package/ui/index.js +4 -0
  220. package/uploads/index.js +34 -0
  221. package/web/index.js +931 -0
@@ -0,0 +1,2094 @@
1
+ [
2
+ {
3
+ "slug": "stays",
4
+ "title": "Riverside Loft",
5
+ "description": "A stay card with a photo, location and rating details, and a booking action.",
6
+ "spec": {
7
+ "$type": "Card",
8
+ "title": "Riverside Loft",
9
+ "children": [
10
+ {
11
+ "$type": "Image",
12
+ "$key": "image",
13
+ "src": "https://images.unsplash.com/photo-1522708323590-d24dbb6b0267?w=640&q=80",
14
+ "alt": "Cozy loft interior with an open kitchen and a red armchair"
15
+ },
16
+ {
17
+ "$type": "Row",
18
+ "$key": "meta",
19
+ "justify": "between",
20
+ "align": "center",
21
+ "children": [
22
+ {
23
+ "$type": "Caption",
24
+ "$key": "details",
25
+ "value": "Alfama · 2 guests · 1 bed"
26
+ },
27
+ {
28
+ "$type": "Badge",
29
+ "$key": "rating",
30
+ "value": "4.9",
31
+ "variant": "success"
32
+ }
33
+ ]
34
+ },
35
+ {
36
+ "$type": "Button",
37
+ "$key": "book",
38
+ "label": "Book for $142/night",
39
+ "buttonStyle": "primary",
40
+ "block": true,
41
+ "$action": {
42
+ "type": "book_stay",
43
+ "stayId": "riverside-loft"
44
+ }
45
+ }
46
+ ]
47
+ }
48
+ },
49
+ {
50
+ "slug": "booking",
51
+ "title": "Table reservation",
52
+ "description": "A booking form collecting party size, date, and seating preference, submitted through the Card form model.",
53
+ "spec": {
54
+ "$type": "Card",
55
+ "asForm": true,
56
+ "confirm": {
57
+ "label": "Confirm reservation",
58
+ "$action": {
59
+ "type": "book_reservation"
60
+ }
61
+ },
62
+ "cancel": {
63
+ "label": "Cancel",
64
+ "$action": {
65
+ "type": "dismiss"
66
+ }
67
+ },
68
+ "children": [
69
+ {
70
+ "$type": "Header",
71
+ "$key": "title",
72
+ "text": "Reserve a table",
73
+ "size": "md"
74
+ },
75
+ {
76
+ "$type": "Text",
77
+ "$key": "intro",
78
+ "value": "We hold the table for 15 minutes past the reserved time.",
79
+ "size": "sm",
80
+ "color": "secondary"
81
+ },
82
+ {
83
+ "$type": "Input",
84
+ "$key": "name",
85
+ "name": "guestName",
86
+ "label": "Name",
87
+ "placeholder": "Full name",
88
+ "required": true
89
+ },
90
+ {
91
+ "$type": "Select",
92
+ "$key": "party",
93
+ "name": "partySize",
94
+ "label": "Party size",
95
+ "placeholder": "Select party size",
96
+ "options": [
97
+ {
98
+ "label": "1 guest",
99
+ "value": "1"
100
+ },
101
+ {
102
+ "label": "2 guests",
103
+ "value": "2"
104
+ },
105
+ {
106
+ "label": "3 guests",
107
+ "value": "3"
108
+ },
109
+ {
110
+ "label": "4+ guests",
111
+ "value": "4"
112
+ }
113
+ ],
114
+ "required": true
115
+ },
116
+ {
117
+ "$type": "DatePicker",
118
+ "$key": "date",
119
+ "name": "date",
120
+ "label": "Date",
121
+ "required": true
122
+ },
123
+ {
124
+ "$type": "RadioGroup",
125
+ "$key": "seating",
126
+ "name": "seating",
127
+ "label": "Seating preference",
128
+ "defaultValue": "indoor",
129
+ "options": [
130
+ {
131
+ "label": "Indoor",
132
+ "value": "indoor"
133
+ },
134
+ {
135
+ "label": "Patio",
136
+ "value": "patio"
137
+ }
138
+ ]
139
+ },
140
+ {
141
+ "$type": "Checkbox",
142
+ "$key": "reminder",
143
+ "name": "reminder",
144
+ "label": "Send a reminder 1 hour before"
145
+ }
146
+ ]
147
+ }
148
+ },
149
+ {
150
+ "slug": "order-status",
151
+ "title": "Order tracking",
152
+ "description": "An order status card with a delivery timeline, badges per step, and quick actions.",
153
+ "spec": {
154
+ "$type": "Card",
155
+ "title": "Order #48213",
156
+ "children": [
157
+ {
158
+ "$type": "Alert",
159
+ "$key": "alert",
160
+ "tone": "success",
161
+ "title": "Order confirmed",
162
+ "description": "Your order is on its way and should arrive today."
163
+ },
164
+ {
165
+ "$type": "ListView",
166
+ "$key": "timeline",
167
+ "children": [
168
+ {
169
+ "$type": "ListViewItem",
170
+ "$key": "placed",
171
+ "children": {
172
+ "$type": "Row",
173
+ "justify": "between",
174
+ "children": [
175
+ {
176
+ "$type": "Col",
177
+ "$key": "label",
178
+ "gap": 1,
179
+ "children": [
180
+ {
181
+ "$type": "Text",
182
+ "$key": "title",
183
+ "value": "Order placed",
184
+ "weight": "medium"
185
+ },
186
+ {
187
+ "$type": "Caption",
188
+ "$key": "time",
189
+ "value": "Today at 9:02 AM"
190
+ }
191
+ ]
192
+ },
193
+ {
194
+ "$type": "Badge",
195
+ "$key": "badge",
196
+ "value": "Done",
197
+ "variant": "success"
198
+ }
199
+ ]
200
+ }
201
+ },
202
+ {
203
+ "$type": "ListViewItem",
204
+ "$key": "packed",
205
+ "children": {
206
+ "$type": "Row",
207
+ "justify": "between",
208
+ "children": [
209
+ {
210
+ "$type": "Col",
211
+ "$key": "label",
212
+ "gap": 1,
213
+ "children": [
214
+ {
215
+ "$type": "Text",
216
+ "$key": "title",
217
+ "value": "Packed",
218
+ "weight": "medium"
219
+ },
220
+ {
221
+ "$type": "Caption",
222
+ "$key": "time",
223
+ "value": "Today at 9:41 AM"
224
+ }
225
+ ]
226
+ },
227
+ {
228
+ "$type": "Badge",
229
+ "$key": "badge",
230
+ "value": "Done",
231
+ "variant": "success"
232
+ }
233
+ ]
234
+ }
235
+ },
236
+ {
237
+ "$type": "ListViewItem",
238
+ "$key": "transit",
239
+ "children": {
240
+ "$type": "Row",
241
+ "justify": "between",
242
+ "children": [
243
+ {
244
+ "$type": "Col",
245
+ "$key": "label",
246
+ "gap": 1,
247
+ "children": [
248
+ {
249
+ "$type": "Text",
250
+ "$key": "title",
251
+ "value": "Out for delivery",
252
+ "weight": "medium"
253
+ },
254
+ {
255
+ "$type": "Caption",
256
+ "$key": "time",
257
+ "value": "Estimated 2:00 to 4:00 PM"
258
+ }
259
+ ]
260
+ },
261
+ {
262
+ "$type": "Badge",
263
+ "$key": "badge",
264
+ "value": "In progress",
265
+ "variant": "info"
266
+ }
267
+ ]
268
+ }
269
+ }
270
+ ]
271
+ },
272
+ {
273
+ "$type": "Divider",
274
+ "$key": "divider"
275
+ },
276
+ {
277
+ "$type": "Row",
278
+ "$key": "actions",
279
+ "justify": "end",
280
+ "children": [
281
+ {
282
+ "$type": "Button",
283
+ "$key": "track",
284
+ "label": "Track package",
285
+ "buttonStyle": "outline",
286
+ "$action": {
287
+ "type": "track_order",
288
+ "orderId": "48213"
289
+ }
290
+ },
291
+ {
292
+ "$type": "Button",
293
+ "$key": "support",
294
+ "label": "Contact support",
295
+ "buttonStyle": "ghost",
296
+ "$action": {
297
+ "type": "contact_support",
298
+ "orderId": "48213"
299
+ }
300
+ }
301
+ ]
302
+ }
303
+ ]
304
+ }
305
+ },
306
+ {
307
+ "slug": "flight-tracker",
308
+ "title": "Flight tracker",
309
+ "description": "A flight card with a live route progress bar between origin and destination.",
310
+ "spec": {
311
+ "$type": "Card",
312
+ "children": [
313
+ {
314
+ "$type": "Row",
315
+ "$key": "airline-row",
316
+ "justify": "between",
317
+ "children": [
318
+ {
319
+ "$type": "Caption",
320
+ "$key": "airline",
321
+ "value": "United · UA 872"
322
+ },
323
+ {
324
+ "$type": "Caption",
325
+ "$key": "status",
326
+ "value": "On time"
327
+ }
328
+ ]
329
+ },
330
+ {
331
+ "$type": "Row",
332
+ "$key": "cities",
333
+ "justify": "between",
334
+ "align": "center",
335
+ "children": [
336
+ {
337
+ "$type": "Text",
338
+ "$key": "origin",
339
+ "value": "SFO",
340
+ "size": "3xl",
341
+ "weight": "bold"
342
+ },
343
+ {
344
+ "$type": "Text",
345
+ "$key": "arrow",
346
+ "value": "",
347
+ "color": "secondary",
348
+ "children": {
349
+ "$type": "Icon",
350
+ "name": "plane",
351
+ "size": "md"
352
+ }
353
+ },
354
+ {
355
+ "$type": "Text",
356
+ "$key": "dest",
357
+ "value": "NRT",
358
+ "size": "3xl",
359
+ "weight": "bold"
360
+ }
361
+ ]
362
+ },
363
+ {
364
+ "$type": "Progress",
365
+ "label": "Flight progress",
366
+ "value": 62,
367
+ "max": 100
368
+ },
369
+ {
370
+ "$type": "Row",
371
+ "$key": "meta",
372
+ "justify": "between",
373
+ "children": [
374
+ {
375
+ "$type": "Caption",
376
+ "$key": "elapsed",
377
+ "value": "6h 40m elapsed"
378
+ },
379
+ {
380
+ "$type": "Caption",
381
+ "$key": "remaining",
382
+ "value": "4h 10m remaining"
383
+ }
384
+ ]
385
+ }
386
+ ]
387
+ }
388
+ },
389
+ {
390
+ "slug": "portfolio",
391
+ "title": "Portfolio overview",
392
+ "description": "A holdings summary combining key facts, an axis-labeled bar chart, and a table of positions.",
393
+ "spec": {
394
+ "$type": "Card",
395
+ "title": "Portfolio overview",
396
+ "children": [
397
+ {
398
+ "$type": "Row",
399
+ "$key": "facts",
400
+ "gap": 6,
401
+ "children": [
402
+ {
403
+ "$type": "Fact",
404
+ "$key": "value",
405
+ "label": "Total value",
406
+ "value": "$128,430"
407
+ },
408
+ {
409
+ "$type": "Fact",
410
+ "$key": "change",
411
+ "label": "Today",
412
+ "value": "+2.4%"
413
+ },
414
+ {
415
+ "$type": "Fact",
416
+ "$key": "positions",
417
+ "label": "Positions",
418
+ "value": "12"
419
+ }
420
+ ]
421
+ },
422
+ {
423
+ "$type": "Header",
424
+ "$key": "chart-header",
425
+ "text": "Performance",
426
+ "size": "sm"
427
+ },
428
+ {
429
+ "$type": "Chart",
430
+ "$key": "chart-bar",
431
+ "variant": "bar",
432
+ "showAxis": true,
433
+ "data": [
434
+ {
435
+ "label": "Mon",
436
+ "value": 120400
437
+ },
438
+ {
439
+ "label": "Tue",
440
+ "value": 121800
441
+ },
442
+ {
443
+ "label": "Wed",
444
+ "value": 119600
445
+ },
446
+ {
447
+ "label": "Thu",
448
+ "value": 124200
449
+ },
450
+ {
451
+ "label": "Fri",
452
+ "value": 128430
453
+ }
454
+ ],
455
+ "label": "Portfolio overview"
456
+ },
457
+ {
458
+ "$type": "Table",
459
+ "$key": "holdings",
460
+ "columns": [
461
+ {
462
+ "label": "Symbol"
463
+ },
464
+ {
465
+ "label": "Shares"
466
+ },
467
+ {
468
+ "label": "Price"
469
+ },
470
+ {
471
+ "label": "Value"
472
+ }
473
+ ],
474
+ "rows": [
475
+ [
476
+ "ACME",
477
+ 40,
478
+ "$182.10",
479
+ "$7,284.00"
480
+ ],
481
+ [
482
+ "GLBX",
483
+ 25,
484
+ "$94.55",
485
+ "$2,363.75"
486
+ ],
487
+ [
488
+ "NORT",
489
+ 15,
490
+ "$310.20",
491
+ "$4,653.00"
492
+ ]
493
+ ],
494
+ "label": "Holdings",
495
+ "sortable": true
496
+ },
497
+ {
498
+ "$type": "Markdown",
499
+ "$key": "footnote",
500
+ "value": "Prices delayed by 15 minutes."
501
+ }
502
+ ]
503
+ }
504
+ },
505
+ {
506
+ "slug": "create-event",
507
+ "title": "Create event",
508
+ "description": "A calendar day summary with three upcoming events and confirm/cancel actions to add it to the calendar.",
509
+ "spec": {
510
+ "$type": "Card",
511
+ "confirm": {
512
+ "label": "Add to calendar",
513
+ "$action": {
514
+ "type": "add_to_calendar"
515
+ }
516
+ },
517
+ "cancel": {
518
+ "label": "Discard",
519
+ "$action": {
520
+ "type": "dismiss"
521
+ }
522
+ },
523
+ "children": [
524
+ {
525
+ "$type": "Row",
526
+ "$key": "date-header",
527
+ "gap": 3,
528
+ "align": "center",
529
+ "children": [
530
+ {
531
+ "$type": "Text",
532
+ "$key": "day",
533
+ "value": "24",
534
+ "size": "3xl",
535
+ "weight": "bold"
536
+ },
537
+ {
538
+ "$type": "Col",
539
+ "$key": "date-meta",
540
+ "gap": 0,
541
+ "children": [
542
+ {
543
+ "$type": "Text",
544
+ "$key": "month",
545
+ "value": "July",
546
+ "weight": "semibold"
547
+ },
548
+ {
549
+ "$type": "Caption",
550
+ "$key": "weekday",
551
+ "value": "Friday"
552
+ }
553
+ ]
554
+ }
555
+ ]
556
+ },
557
+ {
558
+ "$type": "Divider",
559
+ "$key": "divider"
560
+ },
561
+ {
562
+ "$type": "Col",
563
+ "$key": "events",
564
+ "gap": 3,
565
+ "children": [
566
+ {
567
+ "$type": "Row",
568
+ "$key": "event-1",
569
+ "align": "center",
570
+ "gap": 3,
571
+ "children": [
572
+ {
573
+ "$type": "Accent"
574
+ },
575
+ {
576
+ "$type": "Col",
577
+ "$key": "info",
578
+ "gap": 0,
579
+ "children": [
580
+ {
581
+ "$type": "Text",
582
+ "$key": "title",
583
+ "value": "Design review",
584
+ "weight": "medium"
585
+ },
586
+ {
587
+ "$type": "Caption",
588
+ "$key": "time",
589
+ "value": "9:00 to 9:30 AM"
590
+ }
591
+ ]
592
+ },
593
+ {
594
+ "$type": "Spacer",
595
+ "$key": "spacer"
596
+ },
597
+ {
598
+ "$type": "Badge",
599
+ "$key": "tag",
600
+ "value": "Work",
601
+ "variant": "info"
602
+ }
603
+ ]
604
+ },
605
+ {
606
+ "$type": "Row",
607
+ "$key": "event-2",
608
+ "align": "center",
609
+ "gap": 3,
610
+ "children": [
611
+ {
612
+ "$type": "Accent"
613
+ },
614
+ {
615
+ "$type": "Col",
616
+ "$key": "info",
617
+ "gap": 0,
618
+ "children": [
619
+ {
620
+ "$type": "Text",
621
+ "$key": "title",
622
+ "value": "Lunch with Sam",
623
+ "weight": "medium"
624
+ },
625
+ {
626
+ "$type": "Caption",
627
+ "$key": "time",
628
+ "value": "12:30 to 1:30 PM"
629
+ }
630
+ ]
631
+ },
632
+ {
633
+ "$type": "Spacer",
634
+ "$key": "spacer"
635
+ },
636
+ {
637
+ "$type": "Badge",
638
+ "$key": "tag",
639
+ "value": "Personal",
640
+ "variant": "warning"
641
+ }
642
+ ]
643
+ },
644
+ {
645
+ "$type": "Row",
646
+ "$key": "event-3",
647
+ "align": "center",
648
+ "gap": 3,
649
+ "children": [
650
+ {
651
+ "$type": "Accent"
652
+ },
653
+ {
654
+ "$type": "Col",
655
+ "$key": "info",
656
+ "gap": 0,
657
+ "children": [
658
+ {
659
+ "$type": "Text",
660
+ "$key": "title",
661
+ "value": "Flight to Tokyo",
662
+ "weight": "medium"
663
+ },
664
+ {
665
+ "$type": "Caption",
666
+ "$key": "time",
667
+ "value": "6:45 PM"
668
+ }
669
+ ]
670
+ },
671
+ {
672
+ "$type": "Spacer",
673
+ "$key": "spacer"
674
+ },
675
+ {
676
+ "$type": "Badge",
677
+ "$key": "tag",
678
+ "value": "Travel",
679
+ "variant": "success"
680
+ }
681
+ ]
682
+ }
683
+ ]
684
+ }
685
+ ]
686
+ }
687
+ },
688
+ {
689
+ "slug": "view-event",
690
+ "title": "View event",
691
+ "description": "A compact single-event summary card.",
692
+ "spec": {
693
+ "$type": "Card",
694
+ "children": [
695
+ {
696
+ "$type": "Caption",
697
+ "$key": "date",
698
+ "value": "Friday, July 24"
699
+ },
700
+ {
701
+ "$type": "Header",
702
+ "$key": "title",
703
+ "text": "Design review",
704
+ "size": "md"
705
+ },
706
+ {
707
+ "$type": "Caption",
708
+ "$key": "time",
709
+ "value": "9:00 to 9:30 AM · Conference Room B"
710
+ }
711
+ ]
712
+ }
713
+ },
714
+ {
715
+ "slug": "weather-current",
716
+ "title": "Current weather",
717
+ "description": "A glanceable weather card with a large temperature reading and conditions.",
718
+ "spec": {
719
+ "$type": "Card",
720
+ "children": [
721
+ {
722
+ "$type": "Row",
723
+ "$key": "header",
724
+ "justify": "between",
725
+ "align": "center",
726
+ "children": [
727
+ {
728
+ "$type": "Text",
729
+ "$key": "city",
730
+ "value": "Austin, TX",
731
+ "color": "secondary"
732
+ },
733
+ {
734
+ "$type": "Icon",
735
+ "$key": "icon",
736
+ "name": "sun",
737
+ "size": "lg"
738
+ }
739
+ ]
740
+ },
741
+ {
742
+ "$type": "Text",
743
+ "$key": "temp",
744
+ "value": "94°F",
745
+ "size": "3xl",
746
+ "weight": "bold"
747
+ },
748
+ {
749
+ "$type": "Text",
750
+ "$key": "description",
751
+ "value": "Sunny, feels like 98°F",
752
+ "color": "secondary"
753
+ }
754
+ ]
755
+ }
756
+ },
757
+ {
758
+ "slug": "ride-status",
759
+ "title": "Ride status",
760
+ "description": "A live ride card with a big ETA and pick-up/driver facts.",
761
+ "spec": {
762
+ "$type": "Card",
763
+ "children": [
764
+ {
765
+ "$type": "Header",
766
+ "$key": "eta",
767
+ "text": "Arriving in 4 min",
768
+ "size": "3xl"
769
+ },
770
+ {
771
+ "$type": "Text",
772
+ "$key": "car",
773
+ "value": "Toyota Camry · ABC 1234",
774
+ "color": "secondary"
775
+ },
776
+ {
777
+ "$type": "Divider",
778
+ "$key": "divider"
779
+ },
780
+ {
781
+ "$type": "Row",
782
+ "$key": "facts",
783
+ "gap": 6,
784
+ "children": [
785
+ {
786
+ "$type": "Row",
787
+ "$key": "pickup",
788
+ "align": "start",
789
+ "children": [
790
+ {
791
+ "$type": "Icon",
792
+ "$key": "icon",
793
+ "name": "map-pin",
794
+ "size": "sm"
795
+ },
796
+ {
797
+ "$type": "Fact",
798
+ "$key": "fact",
799
+ "label": "Pick up",
800
+ "value": "123 Market St"
801
+ }
802
+ ]
803
+ },
804
+ {
805
+ "$type": "Fact",
806
+ "$key": "driver",
807
+ "label": "Driver",
808
+ "value": "Alex · 4.98 ★"
809
+ }
810
+ ]
811
+ }
812
+ ]
813
+ }
814
+ },
815
+ {
816
+ "slug": "draft-email",
817
+ "title": "Draft email",
818
+ "description": "A composer Form with from/to/subject/body fields, submitting the collected values on send.",
819
+ "spec": {
820
+ "$type": "Card",
821
+ "title": "New message",
822
+ "children": {
823
+ "$type": "Form",
824
+ "$action": {
825
+ "type": "send_email"
826
+ },
827
+ "children": [
828
+ {
829
+ "$type": "Row",
830
+ "$key": "from-row",
831
+ "align": "center",
832
+ "children": [
833
+ {
834
+ "$type": "Caption",
835
+ "$key": "from-label",
836
+ "value": "From"
837
+ },
838
+ {
839
+ "$type": "Text",
840
+ "$key": "from-value",
841
+ "value": "me@example.com",
842
+ "size": "sm"
843
+ }
844
+ ]
845
+ },
846
+ {
847
+ "$type": "Row",
848
+ "$key": "to-row",
849
+ "align": "center",
850
+ "children": [
851
+ {
852
+ "$type": "Input",
853
+ "$key": "to-input",
854
+ "name": "to",
855
+ "placeholder": "recipient@example.com",
856
+ "label": "To",
857
+ "required": true,
858
+ "inputType": "email",
859
+ "defaultValue": "sam@example.com"
860
+ }
861
+ ]
862
+ },
863
+ {
864
+ "$type": "Input",
865
+ "$key": "subject",
866
+ "name": "subject",
867
+ "label": "Subject",
868
+ "placeholder": "Subject",
869
+ "required": true,
870
+ "defaultValue": "Your workspace is ready"
871
+ },
872
+ {
873
+ "$type": "Input",
874
+ "$key": "body",
875
+ "name": "body",
876
+ "label": "Message",
877
+ "multiline": true,
878
+ "placeholder": "Write your message",
879
+ "required": false,
880
+ "defaultValue": "Hi Sam,\n\nYour workspace is ready. Add your first project when you’re ready.\n\nMaya"
881
+ },
882
+ {
883
+ "$type": "Row",
884
+ "$key": "actions",
885
+ "justify": "end",
886
+ "children": [
887
+ {
888
+ "$type": "Button",
889
+ "$key": "discard",
890
+ "label": "Discard",
891
+ "buttonStyle": "ghost",
892
+ "$action": {
893
+ "type": "discard_email"
894
+ }
895
+ },
896
+ {
897
+ "$type": "Button",
898
+ "$key": "send",
899
+ "label": "Send email",
900
+ "buttonStyle": "primary",
901
+ "submit": true
902
+ }
903
+ ]
904
+ }
905
+ ]
906
+ }
907
+ }
908
+ },
909
+ {
910
+ "slug": "cart",
911
+ "title": "Shopping cart",
912
+ "description": "A cart summary: line items, a Divider, subtotal/tax/total facts, and purchase actions.",
913
+ "spec": {
914
+ "$type": "Card",
915
+ "title": "Your cart",
916
+ "children": [
917
+ {
918
+ "$type": "ListView",
919
+ "$key": "items",
920
+ "children": [
921
+ {
922
+ "$type": "ListViewItem",
923
+ "$key": "item-1",
924
+ "children": {
925
+ "$type": "Row",
926
+ "justify": "between",
927
+ "children": [
928
+ {
929
+ "$type": "Text",
930
+ "$key": "name",
931
+ "value": "Wireless Headphones"
932
+ },
933
+ {
934
+ "$type": "Caption",
935
+ "$key": "price",
936
+ "value": "$79.00"
937
+ }
938
+ ]
939
+ }
940
+ },
941
+ {
942
+ "$type": "ListViewItem",
943
+ "$key": "item-2",
944
+ "children": {
945
+ "$type": "Row",
946
+ "justify": "between",
947
+ "children": [
948
+ {
949
+ "$type": "Text",
950
+ "$key": "name",
951
+ "value": "USB-C Cable (2m)"
952
+ },
953
+ {
954
+ "$type": "Caption",
955
+ "$key": "price",
956
+ "value": "$12.00"
957
+ }
958
+ ]
959
+ }
960
+ },
961
+ {
962
+ "$type": "ListViewItem",
963
+ "$key": "item-3",
964
+ "children": {
965
+ "$type": "Row",
966
+ "justify": "between",
967
+ "children": [
968
+ {
969
+ "$type": "Text",
970
+ "$key": "name",
971
+ "value": "Phone Case"
972
+ },
973
+ {
974
+ "$type": "Caption",
975
+ "$key": "price",
976
+ "value": "$18.00"
977
+ }
978
+ ]
979
+ }
980
+ }
981
+ ]
982
+ },
983
+ {
984
+ "$type": "Divider",
985
+ "$key": "divider"
986
+ },
987
+ {
988
+ "$type": "Row",
989
+ "$key": "totals",
990
+ "justify": "between",
991
+ "children": [
992
+ {
993
+ "$type": "Fact",
994
+ "$key": "subtotal",
995
+ "label": "Subtotal",
996
+ "value": "$109.00"
997
+ },
998
+ {
999
+ "$type": "Fact",
1000
+ "$key": "tax",
1001
+ "label": "Tax",
1002
+ "value": "$9.81"
1003
+ },
1004
+ {
1005
+ "$type": "Fact",
1006
+ "$key": "total",
1007
+ "label": "Total",
1008
+ "value": "$118.81"
1009
+ }
1010
+ ]
1011
+ },
1012
+ {
1013
+ "$type": "Row",
1014
+ "$key": "actions",
1015
+ "justify": "end",
1016
+ "children": [
1017
+ {
1018
+ "$type": "Button",
1019
+ "$key": "add",
1020
+ "label": "Add to cart",
1021
+ "buttonStyle": "outline",
1022
+ "$action": {
1023
+ "type": "add_to_cart"
1024
+ }
1025
+ },
1026
+ {
1027
+ "$type": "Button",
1028
+ "$key": "purchase",
1029
+ "label": "Purchase",
1030
+ "buttonStyle": "primary",
1031
+ "$action": {
1032
+ "type": "purchase_cart"
1033
+ }
1034
+ }
1035
+ ]
1036
+ }
1037
+ ]
1038
+ }
1039
+ },
1040
+ {
1041
+ "slug": "playlist",
1042
+ "title": "Playlist",
1043
+ "description": "A media card with a cover image and a numbered track list, each row playable on its own.",
1044
+ "spec": {
1045
+ "$type": "Card",
1046
+ "children": [
1047
+ {
1048
+ "$type": "Image",
1049
+ "$key": "cover",
1050
+ "src": "https://images.unsplash.com/photo-1598488035139-bdbb2231ce04?w=640&q=80",
1051
+ "alt": "Recording studio with guitars on the wall and a mixing console lit in warm neon"
1052
+ },
1053
+ {
1054
+ "$type": "Divider",
1055
+ "$key": "divider"
1056
+ },
1057
+ {
1058
+ "$type": "Header",
1059
+ "$key": "title",
1060
+ "text": "Focus Flow",
1061
+ "size": "md"
1062
+ },
1063
+ {
1064
+ "$type": "ListView",
1065
+ "$key": "tracks",
1066
+ "children": [
1067
+ {
1068
+ "$type": "ListViewItem",
1069
+ "$key": "t1",
1070
+ "children": {
1071
+ "$type": "Row",
1072
+ "align": "center",
1073
+ "gap": 3,
1074
+ "children": [
1075
+ {
1076
+ "$type": "Text",
1077
+ "$key": "n",
1078
+ "value": "1",
1079
+ "size": "sm",
1080
+ "color": "secondary"
1081
+ },
1082
+ {
1083
+ "$type": "Image",
1084
+ "$key": "thumb",
1085
+ "src": "https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=640&q=80",
1086
+ "alt": "",
1087
+ "size": "sm",
1088
+ "round": true
1089
+ },
1090
+ {
1091
+ "$type": "Col",
1092
+ "$key": "info",
1093
+ "gap": 0,
1094
+ "children": [
1095
+ {
1096
+ "$type": "Text",
1097
+ "$key": "title",
1098
+ "value": "Morning Light",
1099
+ "weight": "medium"
1100
+ },
1101
+ {
1102
+ "$type": "Caption",
1103
+ "$key": "artist",
1104
+ "value": "Aria Sol"
1105
+ }
1106
+ ]
1107
+ },
1108
+ {
1109
+ "$type": "Spacer",
1110
+ "$key": "spacer"
1111
+ },
1112
+ {
1113
+ "$type": "Button",
1114
+ "$key": "play",
1115
+ "label": "Play",
1116
+ "buttonStyle": "ghost",
1117
+ "$action": {
1118
+ "type": "play_track",
1119
+ "trackId": "t1"
1120
+ },
1121
+ "children": {
1122
+ "$type": "Icon",
1123
+ "name": "play",
1124
+ "size": "sm"
1125
+ }
1126
+ }
1127
+ ]
1128
+ }
1129
+ },
1130
+ {
1131
+ "$type": "ListViewItem",
1132
+ "$key": "t2",
1133
+ "children": {
1134
+ "$type": "Row",
1135
+ "align": "center",
1136
+ "gap": 3,
1137
+ "children": [
1138
+ {
1139
+ "$type": "Text",
1140
+ "$key": "n",
1141
+ "value": "2",
1142
+ "size": "sm",
1143
+ "color": "secondary"
1144
+ },
1145
+ {
1146
+ "$type": "Image",
1147
+ "$key": "thumb",
1148
+ "src": "https://images.unsplash.com/photo-1471478331149-c72f17e33c73?w=640&q=80",
1149
+ "alt": "",
1150
+ "size": "sm",
1151
+ "round": true
1152
+ },
1153
+ {
1154
+ "$type": "Col",
1155
+ "$key": "info",
1156
+ "gap": 0,
1157
+ "children": [
1158
+ {
1159
+ "$type": "Text",
1160
+ "$key": "title",
1161
+ "value": "Slow Static",
1162
+ "weight": "medium"
1163
+ },
1164
+ {
1165
+ "$type": "Caption",
1166
+ "$key": "artist",
1167
+ "value": "Field Notes"
1168
+ }
1169
+ ]
1170
+ },
1171
+ {
1172
+ "$type": "Spacer",
1173
+ "$key": "spacer"
1174
+ },
1175
+ {
1176
+ "$type": "Button",
1177
+ "$key": "play",
1178
+ "label": "Play",
1179
+ "buttonStyle": "ghost",
1180
+ "$action": {
1181
+ "type": "play_track",
1182
+ "trackId": "t2"
1183
+ },
1184
+ "children": {
1185
+ "$type": "Icon",
1186
+ "name": "play",
1187
+ "size": "sm"
1188
+ }
1189
+ }
1190
+ ]
1191
+ }
1192
+ },
1193
+ {
1194
+ "$type": "ListViewItem",
1195
+ "$key": "t3",
1196
+ "children": {
1197
+ "$type": "Row",
1198
+ "align": "center",
1199
+ "gap": 3,
1200
+ "children": [
1201
+ {
1202
+ "$type": "Text",
1203
+ "$key": "n",
1204
+ "value": "3",
1205
+ "size": "sm",
1206
+ "color": "secondary"
1207
+ },
1208
+ {
1209
+ "$type": "Image",
1210
+ "$key": "thumb",
1211
+ "src": "https://images.unsplash.com/photo-1516280440614-37939bbacd81?w=640&q=80",
1212
+ "alt": "",
1213
+ "size": "sm",
1214
+ "round": true
1215
+ },
1216
+ {
1217
+ "$type": "Col",
1218
+ "$key": "info",
1219
+ "gap": 0,
1220
+ "children": [
1221
+ {
1222
+ "$type": "Text",
1223
+ "$key": "title",
1224
+ "value": "Amber Hours",
1225
+ "weight": "medium"
1226
+ },
1227
+ {
1228
+ "$type": "Caption",
1229
+ "$key": "artist",
1230
+ "value": "Aria Sol"
1231
+ }
1232
+ ]
1233
+ },
1234
+ {
1235
+ "$type": "Spacer",
1236
+ "$key": "spacer"
1237
+ },
1238
+ {
1239
+ "$type": "Button",
1240
+ "$key": "play",
1241
+ "label": "Play",
1242
+ "buttonStyle": "ghost",
1243
+ "$action": {
1244
+ "type": "play_track",
1245
+ "trackId": "t3"
1246
+ },
1247
+ "children": {
1248
+ "$type": "Icon",
1249
+ "name": "play",
1250
+ "size": "sm"
1251
+ }
1252
+ }
1253
+ ]
1254
+ }
1255
+ }
1256
+ ]
1257
+ },
1258
+ {
1259
+ "$type": "Button",
1260
+ "$key": "view-all",
1261
+ "label": "View playlist",
1262
+ "buttonStyle": "outline",
1263
+ "block": true,
1264
+ "$action": {
1265
+ "type": "view_playlist"
1266
+ }
1267
+ }
1268
+ ]
1269
+ }
1270
+ },
1271
+ {
1272
+ "slug": "channel-message",
1273
+ "title": "Channel message",
1274
+ "description": "A chat message card with a channel/timestamp row, an author row with a round avatar, and a Markdown body.",
1275
+ "spec": {
1276
+ "$type": "Card",
1277
+ "children": [
1278
+ {
1279
+ "$type": "Row",
1280
+ "$key": "meta",
1281
+ "justify": "between",
1282
+ "children": [
1283
+ {
1284
+ "$type": "Caption",
1285
+ "$key": "channel",
1286
+ "value": "#product-updates"
1287
+ },
1288
+ {
1289
+ "$type": "Caption",
1290
+ "$key": "timestamp",
1291
+ "value": "Today at 2:14 PM"
1292
+ }
1293
+ ]
1294
+ },
1295
+ {
1296
+ "$type": "Row",
1297
+ "$key": "author-row",
1298
+ "align": "center",
1299
+ "children": [
1300
+ {
1301
+ "$type": "Avatar",
1302
+ "name": "Jordan Lee"
1303
+ },
1304
+ {
1305
+ "$type": "Text",
1306
+ "$key": "author",
1307
+ "value": "Jordan Lee",
1308
+ "weight": "semibold"
1309
+ }
1310
+ ]
1311
+ },
1312
+ {
1313
+ "$type": "Markdown",
1314
+ "$key": "body",
1315
+ "value": "Shipping three things this week:\n\n1. **Faster search** across the whole workspace\n2. **Dark mode** for the mobile app\n3. A refreshed **onboarding flow**\n\nLet us know what you think!"
1316
+ }
1317
+ ]
1318
+ }
1319
+ },
1320
+ {
1321
+ "slug": "receipt",
1322
+ "title": "Purchase receipt",
1323
+ "description": "A receipt card (Badge instead of Alert) with the purchased item, delivery/seller/paid facts, and a details link.",
1324
+ "spec": {
1325
+ "$type": "Card",
1326
+ "children": [
1327
+ {
1328
+ "$type": "Badge",
1329
+ "$key": "status",
1330
+ "value": "Purchase complete",
1331
+ "variant": "success",
1332
+ "children": {
1333
+ "$type": "Icon",
1334
+ "name": "check",
1335
+ "size": "sm"
1336
+ }
1337
+ },
1338
+ {
1339
+ "$type": "Row",
1340
+ "$key": "product",
1341
+ "gap": 3,
1342
+ "align": "center",
1343
+ "children": [
1344
+ {
1345
+ "$type": "Image",
1346
+ "$key": "thumb",
1347
+ "src": "https://images.unsplash.com/photo-1587829741301-dc798b83add3?w=640&q=80",
1348
+ "alt": "Mechanical keyboard",
1349
+ "size": "sm"
1350
+ },
1351
+ {
1352
+ "$type": "Col",
1353
+ "$key": "info",
1354
+ "gap": 0,
1355
+ "children": [
1356
+ {
1357
+ "$type": "Text",
1358
+ "$key": "title",
1359
+ "value": "Mechanical Keyboard, Tactile",
1360
+ "weight": "medium"
1361
+ },
1362
+ {
1363
+ "$type": "Caption",
1364
+ "$key": "qty",
1365
+ "value": "Qty 1"
1366
+ }
1367
+ ]
1368
+ }
1369
+ ]
1370
+ },
1371
+ {
1372
+ "$type": "Divider",
1373
+ "$key": "divider"
1374
+ },
1375
+ {
1376
+ "$type": "Col",
1377
+ "$key": "facts",
1378
+ "gap": 2,
1379
+ "children": [
1380
+ {
1381
+ "$type": "Fact",
1382
+ "$key": "delivery",
1383
+ "label": "Estimated delivery",
1384
+ "value": "July 29 to August 1"
1385
+ },
1386
+ {
1387
+ "$type": "Fact",
1388
+ "$key": "seller",
1389
+ "label": "Sold by",
1390
+ "value": "Northwind Supply Co."
1391
+ },
1392
+ {
1393
+ "$type": "Fact",
1394
+ "$key": "paid",
1395
+ "label": "Paid",
1396
+ "value": "$149.00"
1397
+ }
1398
+ ]
1399
+ },
1400
+ {
1401
+ "$type": "Button",
1402
+ "$key": "details",
1403
+ "label": "View details",
1404
+ "buttonStyle": "outline",
1405
+ "$action": {
1406
+ "type": "view_order_details"
1407
+ }
1408
+ }
1409
+ ]
1410
+ }
1411
+ },
1412
+ {
1413
+ "slug": "chart-area",
1414
+ "title": "Weekly active users",
1415
+ "description": "A stacked two-series area chart with axis ticks and a legend.",
1416
+ "spec": {
1417
+ "$type": "Card",
1418
+ "title": "Weekly active users",
1419
+ "children": [
1420
+ {
1421
+ "$type": "Chart",
1422
+ "$key": "chart",
1423
+ "variant": "area",
1424
+ "stacked": true,
1425
+ "showAxis": true,
1426
+ "showLegend": true,
1427
+ "series": [
1428
+ {
1429
+ "label": "New users",
1430
+ "data": [
1431
+ {
1432
+ "label": "Mon",
1433
+ "value": 320
1434
+ },
1435
+ {
1436
+ "label": "Tue",
1437
+ "value": 410
1438
+ },
1439
+ {
1440
+ "label": "Wed",
1441
+ "value": 380
1442
+ },
1443
+ {
1444
+ "label": "Thu",
1445
+ "value": 460
1446
+ },
1447
+ {
1448
+ "label": "Fri",
1449
+ "value": 520
1450
+ },
1451
+ {
1452
+ "label": "Sat",
1453
+ "value": 300
1454
+ },
1455
+ {
1456
+ "label": "Sun",
1457
+ "value": 260
1458
+ }
1459
+ ]
1460
+ },
1461
+ {
1462
+ "label": "Returning users",
1463
+ "data": [
1464
+ {
1465
+ "label": "Mon",
1466
+ "value": 890
1467
+ },
1468
+ {
1469
+ "label": "Tue",
1470
+ "value": 910
1471
+ },
1472
+ {
1473
+ "label": "Wed",
1474
+ "value": 940
1475
+ },
1476
+ {
1477
+ "label": "Thu",
1478
+ "value": 980
1479
+ },
1480
+ {
1481
+ "label": "Fri",
1482
+ "value": 1020
1483
+ },
1484
+ {
1485
+ "label": "Sat",
1486
+ "value": 760
1487
+ },
1488
+ {
1489
+ "label": "Sun",
1490
+ "value": 700
1491
+ }
1492
+ ]
1493
+ }
1494
+ ],
1495
+ "label": "Weekly active users"
1496
+ }
1497
+ ]
1498
+ }
1499
+ },
1500
+ {
1501
+ "slug": "player-card",
1502
+ "title": "Player card",
1503
+ "description": "A stat card with four Col-laid-out stats beneath the player header.",
1504
+ "spec": {
1505
+ "$type": "Card",
1506
+ "children": [
1507
+ {
1508
+ "$type": "Header",
1509
+ "$key": "name",
1510
+ "text": "Marcus Chen",
1511
+ "size": "lg"
1512
+ },
1513
+ {
1514
+ "$type": "Caption",
1515
+ "$key": "position",
1516
+ "value": "Point Guard · #23"
1517
+ },
1518
+ {
1519
+ "$type": "Row",
1520
+ "$key": "stats",
1521
+ "justify": "between",
1522
+ "children": [
1523
+ {
1524
+ "$type": "Col",
1525
+ "$key": "pts",
1526
+ "align": "center",
1527
+ "gap": 1,
1528
+ "children": [
1529
+ {
1530
+ "$type": "Text",
1531
+ "$key": "value",
1532
+ "value": "24.6",
1533
+ "size": "2xl",
1534
+ "weight": "bold"
1535
+ },
1536
+ {
1537
+ "$type": "Caption",
1538
+ "$key": "label",
1539
+ "value": "PPG"
1540
+ }
1541
+ ]
1542
+ },
1543
+ {
1544
+ "$type": "Col",
1545
+ "$key": "ast",
1546
+ "align": "center",
1547
+ "gap": 1,
1548
+ "children": [
1549
+ {
1550
+ "$type": "Text",
1551
+ "$key": "value",
1552
+ "value": "8.1",
1553
+ "size": "2xl",
1554
+ "weight": "bold"
1555
+ },
1556
+ {
1557
+ "$type": "Caption",
1558
+ "$key": "label",
1559
+ "value": "AST"
1560
+ }
1561
+ ]
1562
+ },
1563
+ {
1564
+ "$type": "Col",
1565
+ "$key": "reb",
1566
+ "align": "center",
1567
+ "gap": 1,
1568
+ "children": [
1569
+ {
1570
+ "$type": "Text",
1571
+ "$key": "value",
1572
+ "value": "5.3",
1573
+ "size": "2xl",
1574
+ "weight": "bold"
1575
+ },
1576
+ {
1577
+ "$type": "Caption",
1578
+ "$key": "label",
1579
+ "value": "REB"
1580
+ }
1581
+ ]
1582
+ },
1583
+ {
1584
+ "$type": "Col",
1585
+ "$key": "eff",
1586
+ "align": "center",
1587
+ "gap": 1,
1588
+ "children": [
1589
+ {
1590
+ "$type": "Text",
1591
+ "$key": "value",
1592
+ "value": "27.9",
1593
+ "size": "2xl",
1594
+ "weight": "bold"
1595
+ },
1596
+ {
1597
+ "$type": "Caption",
1598
+ "$key": "label",
1599
+ "value": "EFF"
1600
+ }
1601
+ ]
1602
+ }
1603
+ ]
1604
+ }
1605
+ ]
1606
+ }
1607
+ },
1608
+ {
1609
+ "slug": "event-session",
1610
+ "title": "Conference session",
1611
+ "description": "A conference session card with a kicker, title, description, and two speaker rows with a View action.",
1612
+ "spec": {
1613
+ "$type": "Card",
1614
+ "children": [
1615
+ {
1616
+ "$type": "Caption",
1617
+ "$key": "kicker",
1618
+ "value": "TRACK 2 · AI ENGINEERING"
1619
+ },
1620
+ {
1621
+ "$type": "Header",
1622
+ "$key": "title",
1623
+ "text": "Building Reliable Agent Loops",
1624
+ "size": "md"
1625
+ },
1626
+ {
1627
+ "$type": "Text",
1628
+ "$key": "description",
1629
+ "value": "A practical look at retries, tool-call verification, and human-in-the-loop patterns for production agents.",
1630
+ "size": "sm",
1631
+ "color": "secondary"
1632
+ },
1633
+ {
1634
+ "$type": "Row",
1635
+ "$key": "meta",
1636
+ "gap": 3,
1637
+ "children": [
1638
+ {
1639
+ "$type": "Caption",
1640
+ "$key": "location",
1641
+ "value": "Hall B"
1642
+ },
1643
+ {
1644
+ "$type": "Caption",
1645
+ "$key": "time",
1646
+ "value": "2:30 PM to 3:15 PM"
1647
+ }
1648
+ ]
1649
+ },
1650
+ {
1651
+ "$type": "Divider",
1652
+ "$key": "divider"
1653
+ },
1654
+ {
1655
+ "$type": "Row",
1656
+ "$key": "speaker-1",
1657
+ "justify": "between",
1658
+ "align": "center",
1659
+ "children": [
1660
+ {
1661
+ "$type": "Row",
1662
+ "$key": "info",
1663
+ "align": "center",
1664
+ "children": [
1665
+ {
1666
+ "$type": "Avatar",
1667
+ "name": "Priya Nair"
1668
+ },
1669
+ {
1670
+ "$type": "Col",
1671
+ "$key": "text",
1672
+ "gap": 0,
1673
+ "children": [
1674
+ {
1675
+ "$type": "Text",
1676
+ "$key": "name",
1677
+ "value": "Priya Nair",
1678
+ "weight": "medium"
1679
+ },
1680
+ {
1681
+ "$type": "Caption",
1682
+ "$key": "title",
1683
+ "value": "Staff Engineer, Agentbase"
1684
+ }
1685
+ ]
1686
+ }
1687
+ ]
1688
+ },
1689
+ {
1690
+ "$type": "Button",
1691
+ "$key": "view",
1692
+ "label": "View",
1693
+ "buttonStyle": "outline",
1694
+ "$action": {
1695
+ "type": "view_speaker",
1696
+ "speakerId": "priya-nair"
1697
+ }
1698
+ }
1699
+ ]
1700
+ },
1701
+ {
1702
+ "$type": "Row",
1703
+ "$key": "speaker-2",
1704
+ "justify": "between",
1705
+ "align": "center",
1706
+ "children": [
1707
+ {
1708
+ "$type": "Row",
1709
+ "$key": "info",
1710
+ "align": "center",
1711
+ "children": [
1712
+ {
1713
+ "$type": "Avatar",
1714
+ "name": "Devon Brooks"
1715
+ },
1716
+ {
1717
+ "$type": "Col",
1718
+ "$key": "text",
1719
+ "gap": 0,
1720
+ "children": [
1721
+ {
1722
+ "$type": "Text",
1723
+ "$key": "name",
1724
+ "value": "Devon Brooks",
1725
+ "weight": "medium"
1726
+ },
1727
+ {
1728
+ "$type": "Caption",
1729
+ "$key": "title",
1730
+ "value": "Founding Engineer, Agentbase"
1731
+ }
1732
+ ]
1733
+ }
1734
+ ]
1735
+ },
1736
+ {
1737
+ "$type": "Button",
1738
+ "$key": "view",
1739
+ "label": "View",
1740
+ "buttonStyle": "outline",
1741
+ "$action": {
1742
+ "type": "view_speaker",
1743
+ "speakerId": "devon-brooks"
1744
+ }
1745
+ }
1746
+ ]
1747
+ }
1748
+ ]
1749
+ }
1750
+ },
1751
+ {
1752
+ "slug": "notify-confirm",
1753
+ "title": "Confirm dialog",
1754
+ "description": "A compact confirmation card with Yes/No buttons carrying distinct actions.",
1755
+ "spec": {
1756
+ "$type": "Card",
1757
+ "children": [
1758
+ {
1759
+ "$type": "Header",
1760
+ "$key": "title",
1761
+ "text": "Remove this draft?",
1762
+ "size": "md"
1763
+ },
1764
+ {
1765
+ "$type": "Text",
1766
+ "$key": "question",
1767
+ "value": "Remove the draft from this workspace. Published work stays in place.",
1768
+ "size": "sm",
1769
+ "color": "secondary"
1770
+ },
1771
+ {
1772
+ "$type": "Row",
1773
+ "$key": "actions",
1774
+ "justify": "end",
1775
+ "children": [
1776
+ {
1777
+ "$type": "Button",
1778
+ "$key": "no",
1779
+ "label": "Keep draft",
1780
+ "buttonStyle": "outline",
1781
+ "$action": {
1782
+ "type": "cancel_delete"
1783
+ }
1784
+ },
1785
+ {
1786
+ "$type": "Button",
1787
+ "$key": "yes",
1788
+ "label": "Remove draft",
1789
+ "buttonStyle": "danger",
1790
+ "$action": {
1791
+ "type": "confirm_delete"
1792
+ }
1793
+ }
1794
+ ]
1795
+ }
1796
+ ]
1797
+ }
1798
+ },
1799
+ {
1800
+ "slug": "chart-line",
1801
+ "title": "Response time",
1802
+ "description": "A single-series line chart with axis ticks.",
1803
+ "spec": {
1804
+ "$type": "Card",
1805
+ "title": "Response time (p50)",
1806
+ "children": [
1807
+ {
1808
+ "$type": "Chart",
1809
+ "$key": "chart",
1810
+ "variant": "line",
1811
+ "showAxis": true,
1812
+ "data": [
1813
+ {
1814
+ "label": "12a",
1815
+ "value": 120
1816
+ },
1817
+ {
1818
+ "label": "4a",
1819
+ "value": 98
1820
+ },
1821
+ {
1822
+ "label": "8a",
1823
+ "value": 210
1824
+ },
1825
+ {
1826
+ "label": "12p",
1827
+ "value": 340
1828
+ },
1829
+ {
1830
+ "label": "4p",
1831
+ "value": 280
1832
+ },
1833
+ {
1834
+ "label": "8p",
1835
+ "value": 190
1836
+ }
1837
+ ],
1838
+ "label": "Response time"
1839
+ }
1840
+ ]
1841
+ }
1842
+ },
1843
+ {
1844
+ "slug": "create-task",
1845
+ "title": "Create task",
1846
+ "description": "A short task-creation Form: title, description, due date, and a submit button.",
1847
+ "spec": {
1848
+ "$type": "Form",
1849
+ "$action": {
1850
+ "type": "create_task"
1851
+ },
1852
+ "children": [
1853
+ {
1854
+ "$type": "Input",
1855
+ "$key": "title",
1856
+ "name": "title",
1857
+ "label": "Title",
1858
+ "placeholder": "Task title",
1859
+ "required": true
1860
+ },
1861
+ {
1862
+ "$type": "Input",
1863
+ "$key": "description",
1864
+ "name": "description",
1865
+ "label": "Description",
1866
+ "multiline": true,
1867
+ "placeholder": "Add more detail",
1868
+ "required": false
1869
+ },
1870
+ {
1871
+ "$type": "DatePicker",
1872
+ "$key": "due",
1873
+ "name": "dueDate",
1874
+ "label": "Due date",
1875
+ "required": true
1876
+ },
1877
+ {
1878
+ "$type": "Button",
1879
+ "$key": "create",
1880
+ "label": "Create task",
1881
+ "buttonStyle": "primary",
1882
+ "block": true,
1883
+ "submit": true
1884
+ }
1885
+ ]
1886
+ }
1887
+ },
1888
+ {
1889
+ "slug": "software-purchase",
1890
+ "title": "Software purchase",
1891
+ "description": "A plan-purchase Card form with volume/frequency selects, a total fact, and confirm/discard actions.",
1892
+ "spec": {
1893
+ "$type": "Card",
1894
+ "title": "Purchase Pro plan",
1895
+ "asForm": true,
1896
+ "confirm": {
1897
+ "label": "Confirm",
1898
+ "$action": {
1899
+ "type": "confirm_purchase"
1900
+ }
1901
+ },
1902
+ "cancel": {
1903
+ "label": "Discard",
1904
+ "$action": {
1905
+ "type": "dismiss"
1906
+ }
1907
+ },
1908
+ "children": [
1909
+ {
1910
+ "$type": "Input",
1911
+ "$key": "purpose",
1912
+ "name": "purpose",
1913
+ "label": "What is it for?",
1914
+ "placeholder": "e.g. Engineering team",
1915
+ "required": true
1916
+ },
1917
+ {
1918
+ "$type": "Row",
1919
+ "$key": "dates",
1920
+ "gap": 3,
1921
+ "children": [
1922
+ {
1923
+ "$type": "DatePicker",
1924
+ "$key": "start",
1925
+ "name": "startDate",
1926
+ "label": "Start date",
1927
+ "required": true
1928
+ },
1929
+ {
1930
+ "$type": "DatePicker",
1931
+ "$key": "end",
1932
+ "name": "endDate",
1933
+ "label": "Renewal date",
1934
+ "required": true
1935
+ }
1936
+ ]
1937
+ },
1938
+ {
1939
+ "$type": "Row",
1940
+ "$key": "selects",
1941
+ "gap": 3,
1942
+ "children": [
1943
+ {
1944
+ "$type": "Select",
1945
+ "$key": "seats",
1946
+ "name": "seats",
1947
+ "defaultValue": "5",
1948
+ "label": "Volume",
1949
+ "placeholder": "Seats",
1950
+ "options": [
1951
+ {
1952
+ "label": "5 seats",
1953
+ "value": "5"
1954
+ },
1955
+ {
1956
+ "label": "10 seats",
1957
+ "value": "10"
1958
+ },
1959
+ {
1960
+ "label": "25 seats",
1961
+ "value": "25"
1962
+ },
1963
+ {
1964
+ "label": "50 seats",
1965
+ "value": "50"
1966
+ }
1967
+ ],
1968
+ "required": true
1969
+ },
1970
+ {
1971
+ "$type": "Select",
1972
+ "$key": "frequency",
1973
+ "name": "frequency",
1974
+ "defaultValue": "monthly",
1975
+ "label": "Frequency",
1976
+ "placeholder": "Billing",
1977
+ "options": [
1978
+ {
1979
+ "label": "Monthly",
1980
+ "value": "monthly"
1981
+ },
1982
+ {
1983
+ "label": "Annual",
1984
+ "value": "annual"
1985
+ }
1986
+ ],
1987
+ "required": true
1988
+ }
1989
+ ]
1990
+ },
1991
+ {
1992
+ "$type": "Divider",
1993
+ "$key": "divider"
1994
+ },
1995
+ {
1996
+ "$type": "Fact",
1997
+ "$key": "total",
1998
+ "label": "Total amount",
1999
+ "value": "$125 per month",
2000
+ "binding": "planTotal"
2001
+ },
2002
+ {
2003
+ "$type": "Caption",
2004
+ "value": "The amount updates with your seats and billing period."
2005
+ }
2006
+ ]
2007
+ }
2008
+ },
2009
+ {
2010
+ "slug": "chart-bars",
2011
+ "title": "Support tickets",
2012
+ "description": "A stacked three-series bar chart with axis ticks and a legend.",
2013
+ "spec": {
2014
+ "$type": "Card",
2015
+ "title": "Support tickets by channel",
2016
+ "children": [
2017
+ {
2018
+ "$type": "Chart",
2019
+ "$key": "chart",
2020
+ "variant": "bar",
2021
+ "stacked": true,
2022
+ "showAxis": true,
2023
+ "showLegend": true,
2024
+ "series": [
2025
+ {
2026
+ "label": "Email",
2027
+ "data": [
2028
+ {
2029
+ "label": "W1",
2030
+ "value": 42
2031
+ },
2032
+ {
2033
+ "label": "W2",
2034
+ "value": 38
2035
+ },
2036
+ {
2037
+ "label": "W3",
2038
+ "value": 51
2039
+ },
2040
+ {
2041
+ "label": "W4",
2042
+ "value": 35
2043
+ }
2044
+ ]
2045
+ },
2046
+ {
2047
+ "label": "Chat",
2048
+ "data": [
2049
+ {
2050
+ "label": "W1",
2051
+ "value": 28
2052
+ },
2053
+ {
2054
+ "label": "W2",
2055
+ "value": 33
2056
+ },
2057
+ {
2058
+ "label": "W3",
2059
+ "value": 25
2060
+ },
2061
+ {
2062
+ "label": "W4",
2063
+ "value": 40
2064
+ }
2065
+ ]
2066
+ },
2067
+ {
2068
+ "label": "Phone",
2069
+ "data": [
2070
+ {
2071
+ "label": "W1",
2072
+ "value": 12
2073
+ },
2074
+ {
2075
+ "label": "W2",
2076
+ "value": 9
2077
+ },
2078
+ {
2079
+ "label": "W3",
2080
+ "value": 15
2081
+ },
2082
+ {
2083
+ "label": "W4",
2084
+ "value": 11
2085
+ }
2086
+ ]
2087
+ }
2088
+ ],
2089
+ "label": "Support tickets"
2090
+ }
2091
+ ]
2092
+ }
2093
+ }
2094
+ ]