@exponential_app/eui 0.0.0-stage → 0.2.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 (272) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +54 -0
  3. package/README.md +377 -2
  4. package/catalog/a11y.json +705 -0
  5. package/catalog/basic-map.json +104 -0
  6. package/catalog/code.json +58 -0
  7. package/catalog/core.catalog.json +5190 -0
  8. package/catalog/core.schema.json +24542 -0
  9. package/catalog/host.json +95 -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 +4152 -0
  14. package/catalog/recipes.json +64 -0
  15. package/catalog/strings.json +84 -0
  16. package/catalog/style.json +180 -0
  17. package/catalog/theme.schema.json +47754 -0
  18. package/catalog/tokens.json +47 -0
  19. package/conformance/README.md +218 -0
  20. package/conformance/baseline.ts +101 -0
  21. package/conformance/browser-page.ts +146 -0
  22. package/conformance/browser-suites.ts +699 -0
  23. package/conformance/compare.ts +201 -0
  24. package/conformance/dom.ts +97 -0
  25. package/conformance/dump.ts +163 -0
  26. package/conformance/fonts.json +157 -0
  27. package/conformance/manifest.json +233 -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/conformance/voice-wave-child.ts +102 -0
  36. package/dist/chunks/index-5fmaa0xq.js +8384 -0
  37. package/dist/chunks/index-5fmaa0xq.js.map +10 -0
  38. package/dist/chunks/index-62yzr94z.js +2784 -0
  39. package/dist/chunks/index-62yzr94z.js.map +10 -0
  40. package/dist/chunks/index-bg2jsgjq.js +8541 -0
  41. package/dist/chunks/index-bg2jsgjq.js.map +15 -0
  42. package/dist/chunks/index-fy7y2nz8.js +186 -0
  43. package/dist/chunks/index-fy7y2nz8.js.map +9 -0
  44. package/dist/chunks/index-gtk2gwsb.js +4555 -0
  45. package/dist/chunks/index-gtk2gwsb.js.map +31 -0
  46. package/dist/chunks/index-t6qz1770.js +95 -0
  47. package/dist/chunks/index-t6qz1770.js.map +11 -0
  48. package/dist/conformance.js +230462 -0
  49. package/dist/conformance.js.map +10 -0
  50. package/dist/entries/prompt.js +251 -0
  51. package/dist/entries/prompt.js.map +11 -0
  52. package/dist/entries/schema.js +1725 -0
  53. package/dist/entries/schema.js.map +11 -0
  54. package/dist/host/index.js +194 -0
  55. package/dist/host/index.js.map +9 -0
  56. package/dist/index.js +3840 -0
  57. package/dist/index.js.map +29 -0
  58. package/dist/types/src/a11y.d.ts +21 -0
  59. package/dist/types/src/animation.d.ts +76 -0
  60. package/dist/types/src/basic-map.d.ts +38 -0
  61. package/dist/types/src/builder.d.ts +50 -0
  62. package/dist/types/src/catalog.d.ts +54 -0
  63. package/dist/types/src/catalog.described.d.ts +33 -0
  64. package/dist/types/src/catalog.generated.d.ts +904 -0
  65. package/dist/types/src/chart.d.ts +46 -0
  66. package/dist/types/src/code.d.ts +44 -0
  67. package/dist/types/src/color.d.ts +20 -0
  68. package/dist/types/src/conformance.d.ts +39 -0
  69. package/dist/types/src/connector/app.d.ts +14 -0
  70. package/dist/types/src/connector/connector.d.ts +77 -0
  71. package/dist/types/src/connector/index.d.ts +4 -0
  72. package/dist/types/src/css.d.ts +27 -0
  73. package/dist/types/src/define.d.ts +66 -0
  74. package/dist/types/src/direction.d.ts +16 -0
  75. package/dist/types/src/dynamic.d.ts +161 -0
  76. package/dist/types/src/entries/prompt.d.ts +11 -0
  77. package/dist/types/src/entries/schema.d.ts +8 -0
  78. package/dist/types/src/expr.d.ts +71 -0
  79. package/dist/types/src/extension.d.ts +4 -0
  80. package/dist/types/src/format.d.ts +112 -0
  81. package/dist/types/src/geometry.d.ts +40 -0
  82. package/dist/types/src/host/contract.d.ts +225 -0
  83. package/dist/types/src/host/decoders.d.ts +61 -0
  84. package/dist/types/src/host/index.d.ts +15 -0
  85. package/dist/types/src/host/package.d.ts +102 -0
  86. package/dist/types/src/host/policy.d.ts +107 -0
  87. package/dist/types/src/host/record-store.d.ts +103 -0
  88. package/dist/types/src/host/records.d.ts +45 -0
  89. package/dist/types/src/host/router.d.ts +38 -0
  90. package/dist/types/src/host/runtime.d.ts +213 -0
  91. package/dist/types/src/host/signature.d.ts +52 -0
  92. package/dist/types/src/host/sources.d.ts +22 -0
  93. package/dist/types/src/host/tools.d.ts +42 -0
  94. package/dist/types/src/host/transports.d.ts +109 -0
  95. package/dist/types/src/index.d.ts +69 -0
  96. package/dist/types/src/layout.d.ts +20 -0
  97. package/dist/types/src/limits.d.ts +21 -0
  98. package/dist/types/src/list.d.ts +133 -0
  99. package/dist/types/src/locale.d.ts +22 -0
  100. package/dist/types/src/macros.d.ts +29 -0
  101. package/dist/types/src/overlay.d.ts +27 -0
  102. package/dist/types/src/prompt.d.ts +44 -0
  103. package/dist/types/src/qr-code.d.ts +30 -0
  104. package/dist/types/src/recipes.d.ts +17 -0
  105. package/dist/types/src/reducer.d.ts +41 -0
  106. package/dist/types/src/resizable.d.ts +38 -0
  107. package/dist/types/src/schema.d.ts +7 -0
  108. package/dist/types/src/strings.d.ts +13 -0
  109. package/dist/types/src/style.d.ts +201 -0
  110. package/dist/types/src/test-preload.d.ts +1 -0
  111. package/dist/types/src/text-shimmer.d.ts +24 -0
  112. package/dist/types/src/theme-types.d.ts +162 -0
  113. package/dist/types/src/theme.d.ts +75 -0
  114. package/dist/types/src/themes.d.ts +22 -0
  115. package/dist/types/src/tree-guides.d.ts +17 -0
  116. package/dist/types/src/types.d.ts +320 -0
  117. package/dist/types/src/validate.d.ts +31 -0
  118. package/dist/types/src/voice-wave.d.ts +181 -0
  119. package/dist/types/src/web/base-css.d.ts +1 -0
  120. package/dist/types/src/web/box-css.d.ts +63 -0
  121. package/dist/types/src/web/coerce.d.ts +32 -0
  122. package/dist/types/src/web/custom-icons.generated.d.ts +4 -0
  123. package/dist/types/src/web/data.d.ts +107 -0
  124. package/dist/types/src/web/dates.d.ts +12 -0
  125. package/dist/types/src/web/form.d.ts +44 -0
  126. package/dist/types/src/web/host-types.d.ts +126 -0
  127. package/dist/types/src/web/index.d.ts +35 -0
  128. package/dist/types/src/web/inputs.d.ts +55 -0
  129. package/dist/types/src/web/list.d.ts +16 -0
  130. package/dist/types/src/web/listbox.d.ts +14 -0
  131. package/dist/types/src/web/markdown.d.ts +96 -0
  132. package/dist/types/src/web/media.d.ts +63 -0
  133. package/dist/types/src/web/parts.d.ts +4 -0
  134. package/dist/types/src/web/primitives/alert-dialog.d.ts +10 -0
  135. package/dist/types/src/web/primitives/alert.d.ts +9 -0
  136. package/dist/types/src/web/primitives/avatar-color.d.ts +2 -0
  137. package/dist/types/src/web/primitives/avatar.d.ts +13 -0
  138. package/dist/types/src/web/primitives/badge.d.ts +10 -0
  139. package/dist/types/src/web/primitives/breadcrumb.d.ts +10 -0
  140. package/dist/types/src/web/primitives/button.d.ts +6 -0
  141. package/dist/types/src/web/primitives/calendar.d.ts +43 -0
  142. package/dist/types/src/web/primitives/card.d.ts +9 -0
  143. package/dist/types/src/web/primitives/checkbox.d.ts +5 -0
  144. package/dist/types/src/web/primitives/choice-tiles.d.ts +32 -0
  145. package/dist/types/src/web/primitives/cn.d.ts +3 -0
  146. package/dist/types/src/web/primitives/code-block.d.ts +24 -0
  147. package/dist/types/src/web/primitives/command.d.ts +134 -0
  148. package/dist/types/src/web/primitives/context-ring.d.ts +24 -0
  149. package/dist/types/src/web/primitives/dialog-arms.d.ts +6 -0
  150. package/dist/types/src/web/primitives/dialog.d.ts +24 -0
  151. package/dist/types/src/web/primitives/disclosure-header.d.ts +5 -0
  152. package/dist/types/src/web/primitives/dock.d.ts +42 -0
  153. package/dist/types/src/web/primitives/dropdown-menu.d.ts +14 -0
  154. package/dist/types/src/web/primitives/empty-state.d.ts +15 -0
  155. package/dist/types/src/web/primitives/glass-card.d.ts +4 -0
  156. package/dist/types/src/web/primitives/hover-card.d.ts +7 -0
  157. package/dist/types/src/web/primitives/icon-disc.d.ts +12 -0
  158. package/dist/types/src/web/primitives/index.d.ts +50 -0
  159. package/dist/types/src/web/primitives/input.d.ts +5 -0
  160. package/dist/types/src/web/primitives/kbd.d.ts +4 -0
  161. package/dist/types/src/web/primitives/label.d.ts +3 -0
  162. package/dist/types/src/web/primitives/measure.d.ts +16 -0
  163. package/dist/types/src/web/primitives/menu-surface.d.ts +17 -0
  164. package/dist/types/src/web/primitives/meter.d.ts +21 -0
  165. package/dist/types/src/web/primitives/popover.d.ts +3 -0
  166. package/dist/types/src/web/primitives/progress-ring.d.ts +5 -0
  167. package/dist/types/src/web/primitives/progress.d.ts +8 -0
  168. package/dist/types/src/web/primitives/scroll-area.d.ts +49 -0
  169. package/dist/types/src/web/primitives/segmented-control.d.ts +5 -0
  170. package/dist/types/src/web/primitives/select.d.ts +47 -0
  171. package/dist/types/src/web/primitives/separator.d.ts +3 -0
  172. package/dist/types/src/web/primitives/sheet-chrome.d.ts +4 -0
  173. package/dist/types/src/web/primitives/sheet.d.ts +20 -0
  174. package/dist/types/src/web/primitives/skeleton.d.ts +3 -0
  175. package/dist/types/src/web/primitives/spinner.d.ts +3 -0
  176. package/dist/types/src/web/primitives/switch.d.ts +4 -0
  177. package/dist/types/src/web/primitives/table.d.ts +11 -0
  178. package/dist/types/src/web/primitives/tabs.d.ts +13 -0
  179. package/dist/types/src/web/primitives/textarea.d.ts +3 -0
  180. package/dist/types/src/web/primitives/toast.d.ts +163 -0
  181. package/dist/types/src/web/primitives/tooltip.d.ts +3 -0
  182. package/dist/types/src/web/primitives/truncate.d.ts +7 -0
  183. package/dist/types/src/web/primitives/typeahead-portal.d.ts +12 -0
  184. package/dist/types/src/web/primitives/voice-wave.d.ts +50 -0
  185. package/dist/types/src/web/round5.d.ts +107 -0
  186. package/dist/types/src/web/share.d.ts +6 -0
  187. package/dist/types/src/web/table.d.ts +20 -0
  188. package/dist/types/src/web/theme-css.d.ts +69 -0
  189. package/dist/types/src/web/urls.d.ts +21 -0
  190. package/dist/web/index.js +2565 -0
  191. package/dist/web/index.js.map +28 -0
  192. package/dist/web/primitives/index.js +1476 -0
  193. package/dist/web/primitives/index.js.map +57 -0
  194. package/docs/components.generated.json +6783 -0
  195. package/docs/package-format.md +182 -0
  196. package/docs/round-1-contract.md +679 -0
  197. package/docs/round-2-contract.md +476 -0
  198. package/docs/round-3-contract.md +174 -0
  199. package/docs/round-5-contract.md +268 -0
  200. package/docs/themes.generated.json +3647 -0
  201. package/fixtures/animations.json +2890 -0
  202. package/fixtures/bench-list.json +58 -0
  203. package/fixtures/bind-time.json +54734 -0
  204. package/fixtures/catalog-basic-map.json +1692 -0
  205. package/fixtures/catalog-components.json +10293 -0
  206. package/fixtures/catalog-extension.json +620 -0
  207. package/fixtures/catalog-macros.json +51805 -0
  208. package/fixtures/code-tokens.json +1993 -0
  209. package/fixtures/conformance-baseline.json +59016 -0
  210. package/fixtures/conformance-cases.json +49 -0
  211. package/fixtures/conformance-known.json +2111 -0
  212. package/fixtures/control-geometry.json +5129 -0
  213. package/fixtures/dashboard.data.json +74 -0
  214. package/fixtures/dashboard.json +781 -0
  215. package/fixtures/demo-surface.json +47 -0
  216. package/fixtures/format.json +870 -0
  217. package/fixtures/host-package.json +1262 -0
  218. package/fixtures/host-policy.json +1209 -0
  219. package/fixtures/host-router.json +2034 -0
  220. package/fixtures/host-transport.json +590 -0
  221. package/fixtures/interactions-round1.json +1058 -0
  222. package/fixtures/kitchen-sink.expanded.json +11972 -0
  223. package/fixtures/kitchen-sink.json +3140 -0
  224. package/fixtures/layout-geometry-round1.json +7278 -0
  225. package/fixtures/layout-geometry.json +2072 -0
  226. package/fixtures/overlay-geometry.json +272 -0
  227. package/fixtures/pointer.json +89 -0
  228. package/fixtures/primitive-specimens.json +59 -0
  229. package/fixtures/prompt-budget.json +33 -0
  230. package/fixtures/qr-code.json +480 -0
  231. package/fixtures/resizable.json +714 -0
  232. package/fixtures/round4-contract.json +2985 -0
  233. package/fixtures/specimens.json +11168 -0
  234. package/fixtures/style-conditions.json +336 -0
  235. package/fixtures/template-items.json +2215 -0
  236. package/fixtures/text-direction.json +309 -0
  237. package/fixtures/text-shimmer.json +96 -0
  238. package/fixtures/theme-extends.json +573 -0
  239. package/fixtures/theme-invalid.json +1300 -0
  240. package/fixtures/theme-recipes.json +61762 -0
  241. package/fixtures/theme-resolved.json +25969 -0
  242. package/fixtures/toast-stack.json +215 -0
  243. package/fixtures/tree-guides.json +224 -0
  244. package/fixtures/virtual-list.json +733 -0
  245. package/fixtures/voice-wave.json +19236 -0
  246. package/generated/ExponentialUICatalog.generated.kt +67 -0
  247. package/generated/ExponentialUICatalog.generated.swift +67 -0
  248. package/generated/ExponentialUIThemes.generated.kt +23 -0
  249. package/generated/ExponentialUIThemes.generated.swift +23 -0
  250. package/generated/catalog.descriptions.generated.rs +6 -0
  251. package/generated/catalog.generated.rs +80 -0
  252. package/generated/catalog.themes.generated.rs +34 -0
  253. package/generated/core.descriptions.json +2726 -0
  254. package/generated/core.runtime.json +3944 -0
  255. package/package.json +87 -4
  256. package/themes/exponential.recipes.json +49 -0
  257. package/themes/exponential.theme.json +768 -0
  258. package/themes/neutral.theme.json +6178 -0
  259. package/themes/orange.theme.json +43 -0
  260. package/themes/playful.theme.json +219 -0
  261. package/vendor/a2ui/LICENSE.txt +203 -0
  262. package/vendor/a2ui/README.md +27 -0
  263. package/vendor/a2ui/v0_9/basic_catalog.json +1387 -0
  264. package/vendor/a2ui/v0_9/basic_catalog_rules.txt +5 -0
  265. package/vendor/a2ui/v0_9/client_capabilities.json +97 -0
  266. package/vendor/a2ui/v0_9/client_to_server.json +104 -0
  267. package/vendor/a2ui/v0_9/common_types.json +315 -0
  268. package/vendor/a2ui/v0_9/server_to_client.json +132 -0
  269. package/vendor/json-render/LICENSE.txt +201 -0
  270. package/vendor/json-render/README.md +13 -0
  271. package/vendor/nayuki-qr/LICENSE.txt +20 -0
  272. package/vendor/nayuki-qr/README.md +10 -0
@@ -0,0 +1,3140 @@
1
+ {
2
+ "$comment": "VAPP-85: the kitchen sink, extended from the VAPP-4 spike (packages/domain-contract/fixtures/vapp-kitchen-sink.json on exp/VAPP-4) to the FULL core catalog: every visible component at least once, in the nested authoring form (id, component, props, style, children, slots, on). The spike's layout cases stay: flex rows/columns with wrap + grow/shrink/basis, a grid with gridTemplateAreas + fr + minmax and a 600 px surface breakpoint, an absolute badge overlay, 16:9 media, min/max + percentages + gap, :pressed buttons. Every renderer paints this once as the view `exponential-ui-kitchen-sink`; kitchen-sink.expanded.json is what it receives. Round 1 (docs/round-1-contract.md) adds the app shell (AppBar, Breadcrumb, the bottom bar), a RESPONSIVE section every renderer must prove at three widths (a Grid of cards 1 → 2 → 3 columns via a responsive `columns`, a Sidebar that collapses below md, a Stack that turns horizontal at md, nodes hidden on narrow or on wide surfaces, hover/focus-visible/orientation/hover-capability blocks, a Drawer whose side is responsive), a Form of the new fields, the data Table with typed, sortable, selectable columns and a slot cell, the new chart kinds, the CodeBlock, the overlay newcomers and BOUND inputs (Collapsible open, Pagination page, the bottom bar value, Progress value: two-way through the `set` action). Round 3 (VAPP-102) speaks the new vocabulary only, never a deprecated alias: ONE tree Section of Rows nested by depth [0,1,1,2,1,0] (elbow, tee and pass-through guides, filled by the core), Row as the property/picker/nav/card row, Chip as pill and rect, Segmented in all four variants (segmented, toggles, outline, the full-width `bar` bottom bar), Menu with its trigger child and as a context menu, a bottom Drawer for the old sheet and a hover Popover for the old hover card. EXP-1259: a SearchList (a picked row, identifiers and status glyphs) closes the sink, so nothing above it moves. VAPP-126 appends, after it, the layout macros (Page over a Toolbar, a FieldGroup and FormActions; a SplitView bound to /ui/splitOpen; two StatTiles).",
3
+ "id": "root",
4
+ "component": "Box",
5
+ "style": {
6
+ "display": "flex",
7
+ "flexDirection": "column",
8
+ "gap": "$spacing.lg",
9
+ "padding": "$spacing.lg",
10
+ "width": "100%",
11
+ "backgroundColor": "$color.background",
12
+ "direction": "ltr"
13
+ },
14
+ "children": [
15
+ {
16
+ "id": "shell",
17
+ "component": "Box",
18
+ "style": {
19
+ "display": "flex",
20
+ "flexDirection": "column",
21
+ "gap": "$spacing.sm"
22
+ },
23
+ "children": [
24
+ {
25
+ "id": "app-bar",
26
+ "component": "AppBar",
27
+ "props": {
28
+ "title": "Inbox",
29
+ "subtitle": {
30
+ "path": "/ui/teamName"
31
+ },
32
+ "back": true
33
+ },
34
+ "slots": {
35
+ "trailing": {
36
+ "id": "app-bar-search",
37
+ "component": "Button",
38
+ "props": {
39
+ "icon": "search",
40
+ "variant": "ghost",
41
+ "size": "icon",
42
+ "label": "Search"
43
+ }
44
+ }
45
+ },
46
+ "on": {
47
+ "back": {
48
+ "event": {
49
+ "name": "back"
50
+ }
51
+ }
52
+ }
53
+ },
54
+ {
55
+ "id": "breadcrumb",
56
+ "component": "Breadcrumb",
57
+ "props": {
58
+ "items": [
59
+ {
60
+ "label": "Boards",
61
+ "value": "boards"
62
+ },
63
+ {
64
+ "label": "Sprint 12",
65
+ "value": "sprint-12"
66
+ },
67
+ {
68
+ "label": "EXP-42",
69
+ "value": "exp-42"
70
+ }
71
+ ]
72
+ },
73
+ "on": {
74
+ "select": {
75
+ "event": {
76
+ "name": "navigate"
77
+ }
78
+ }
79
+ }
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "id": "header",
85
+ "component": "Stack",
86
+ "props": {
87
+ "direction": "horizontal",
88
+ "align": "center",
89
+ "gap": "md"
90
+ },
91
+ "children": [
92
+ {
93
+ "id": "hdr-avatar",
94
+ "component": "Avatar",
95
+ "props": {
96
+ "name": "Alex Chen",
97
+ "size": "default"
98
+ }
99
+ },
100
+ {
101
+ "id": "hdr-text",
102
+ "component": "Stack",
103
+ "props": {
104
+ "direction": "vertical",
105
+ "gap": "xs"
106
+ },
107
+ "style": {
108
+ "flexGrow": 1,
109
+ "flexShrink": 1,
110
+ "minWidth": 0
111
+ },
112
+ "children": [
113
+ {
114
+ "id": "hdr-title",
115
+ "component": "Heading",
116
+ "props": {
117
+ "text": "Reddit radar",
118
+ "level": "h2"
119
+ }
120
+ },
121
+ {
122
+ "id": "hdr-sub",
123
+ "component": "Text",
124
+ "props": {
125
+ "text": "Kitchen sink · one catalog on every client",
126
+ "variant": "muted"
127
+ }
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ "id": "hdr-badge",
133
+ "component": "Badge",
134
+ "props": {
135
+ "text": "3",
136
+ "variant": "secondary"
137
+ }
138
+ },
139
+ {
140
+ "id": "hdr-scan",
141
+ "component": "Button",
142
+ "props": {
143
+ "label": "Scan now",
144
+ "variant": "default"
145
+ },
146
+ "style": {
147
+ "flexShrink": 0,
148
+ ":pressed": {
149
+ "opacity": 0.6
150
+ }
151
+ },
152
+ "on": {
153
+ "press": {
154
+ "event": {
155
+ "name": "scan"
156
+ }
157
+ }
158
+ }
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ "id": "grid",
164
+ "component": "Box",
165
+ "style": {
166
+ "display": "grid",
167
+ "gap": "$spacing.md",
168
+ "gridTemplateColumns": "1fr",
169
+ "gridTemplateAreas": [
170
+ "nav",
171
+ "main",
172
+ "footer"
173
+ ],
174
+ "@media (min-width: 600px)": {
175
+ "gridTemplateColumns": "minmax(180px, 1fr) 2fr",
176
+ "gridTemplateRows": "auto auto",
177
+ "gridTemplateAreas": [
178
+ "nav main",
179
+ "nav footer"
180
+ ]
181
+ }
182
+ },
183
+ "children": [
184
+ {
185
+ "id": "nav-card",
186
+ "component": "Card",
187
+ "props": {
188
+ "padded": false
189
+ },
190
+ "style": {
191
+ "gridArea": "nav"
192
+ },
193
+ "children": [
194
+ {
195
+ "id": "nav-rows",
196
+ "component": "Section",
197
+ "props": {
198
+ "title": "Sources",
199
+ "count": 3,
200
+ "icon": "nav-boards",
201
+ "tree": true
202
+ },
203
+ "children": [
204
+ {
205
+ "id": "row-1",
206
+ "component": "Row",
207
+ "props": {
208
+ "title": "r/selfhosted",
209
+ "meta": "312 posts",
210
+ "selected": true,
211
+ "depth": 0
212
+ },
213
+ "on": {
214
+ "press": {
215
+ "event": {
216
+ "name": "open",
217
+ "context": {
218
+ "source": "selfhosted"
219
+ }
220
+ }
221
+ }
222
+ }
223
+ },
224
+ {
225
+ "id": "row-2",
226
+ "component": "Row",
227
+ "props": {
228
+ "title": "r/opensource",
229
+ "subtitle": "Open source",
230
+ "meta": "88 posts",
231
+ "icon": "ui-folder",
232
+ "pressable": true,
233
+ "depth": 1
234
+ }
235
+ },
236
+ {
237
+ "id": "row-3",
238
+ "component": "Row",
239
+ "props": {
240
+ "title": "r/webdev",
241
+ "meta": "1.2k posts",
242
+ "density": "compact",
243
+ "chevron": "right",
244
+ "pressable": true,
245
+ "depth": 1
246
+ }
247
+ },
248
+ {
249
+ "id": "row-4",
250
+ "component": "Row",
251
+ "props": {
252
+ "title": "r/reactjs",
253
+ "meta": "640 posts",
254
+ "pressable": true,
255
+ "depth": 2
256
+ }
257
+ },
258
+ {
259
+ "id": "row-5",
260
+ "component": "Row",
261
+ "props": {
262
+ "title": "r/rust",
263
+ "meta": "402 posts",
264
+ "pressable": true,
265
+ "depth": 1
266
+ }
267
+ },
268
+ {
269
+ "id": "row-6",
270
+ "component": "Row",
271
+ "props": {
272
+ "title": "r/homelab",
273
+ "identifier": "HL",
274
+ "meta": "57 posts",
275
+ "pressable": true,
276
+ "depth": 0
277
+ }
278
+ }
279
+ ]
280
+ },
281
+ {
282
+ "id": "nav-div",
283
+ "component": "Separator",
284
+ "props": {
285
+ "orientation": "horizontal"
286
+ }
287
+ },
288
+ {
289
+ "id": "nav-toggle",
290
+ "component": "Switch",
291
+ "props": {
292
+ "label": "Auto-scan",
293
+ "name": "autoScan",
294
+ "checked": true,
295
+ "description": "Every hour"
296
+ },
297
+ "style": {
298
+ "padding": "$spacing.md"
299
+ }
300
+ }
301
+ ]
302
+ },
303
+ {
304
+ "id": "main-card",
305
+ "component": "Card",
306
+ "props": {
307
+ "title": "Drafts",
308
+ "description": "Two ready to send"
309
+ },
310
+ "style": {
311
+ "gridArea": "main",
312
+ "minWidth": 0
313
+ },
314
+ "children": [
315
+ {
316
+ "id": "media",
317
+ "component": "Box",
318
+ "style": {
319
+ "position": "relative",
320
+ "width": "100%",
321
+ "aspectRatio": 1.7777778,
322
+ "borderRadius": "$radius.lg",
323
+ "overflow": "hidden",
324
+ "backgroundColor": "$color.info"
325
+ },
326
+ "children": [
327
+ {
328
+ "id": "media-img",
329
+ "component": "Image",
330
+ "props": {
331
+ "alt": "Cover",
332
+ "fit": "cover"
333
+ },
334
+ "style": {
335
+ "width": "100%",
336
+ "height": "100%"
337
+ }
338
+ },
339
+ {
340
+ "id": "media-badge",
341
+ "component": "Chip",
342
+ "props": {
343
+ "label": "LIVE",
344
+ "tone": "success"
345
+ },
346
+ "style": {
347
+ "position": "absolute",
348
+ "top": 8,
349
+ "right": 8
350
+ }
351
+ }
352
+ ]
353
+ },
354
+ {
355
+ "id": "main-md",
356
+ "component": "Markdown",
357
+ "props": {
358
+ "text": "**Looking for a Linear alternative** — self-hostable, with agents.\n\n- Draft reply ready\n- 2 sources cited"
359
+ },
360
+ "style": {
361
+ "minWidth": 0
362
+ }
363
+ },
364
+ {
365
+ "id": "main-progress",
366
+ "component": "Progress",
367
+ "props": {
368
+ "value": 62,
369
+ "max": 100,
370
+ "label": "Scanning"
371
+ }
372
+ },
373
+ {
374
+ "id": "main-meter",
375
+ "component": "Meter",
376
+ "props": {
377
+ "segments": [
378
+ {
379
+ "value": 40,
380
+ "tone": "primary",
381
+ "label": "Posts"
382
+ },
383
+ {
384
+ "value": 25,
385
+ "tone": "warning",
386
+ "label": "Comments"
387
+ }
388
+ ],
389
+ "max": 100,
390
+ "label": "Quota",
391
+ "value": "65%"
392
+ }
393
+ }
394
+ ]
395
+ },
396
+ {
397
+ "id": "footer-card",
398
+ "component": "Card",
399
+ "style": {
400
+ "gridArea": "footer",
401
+ "minWidth": 0
402
+ },
403
+ "children": [
404
+ {
405
+ "id": "footer-pills",
406
+ "component": "Stack",
407
+ "props": {
408
+ "direction": "horizontal",
409
+ "wrap": true,
410
+ "align": "center",
411
+ "gap": "sm"
412
+ },
413
+ "children": [
414
+ {
415
+ "id": "pill-1",
416
+ "component": "Chip",
417
+ "props": {
418
+ "label": "All",
419
+ "shape": "pill",
420
+ "selected": true,
421
+ "pressable": true
422
+ },
423
+ "on": {
424
+ "press": {
425
+ "event": {
426
+ "name": "filter",
427
+ "context": {
428
+ "value": "all"
429
+ }
430
+ }
431
+ }
432
+ }
433
+ },
434
+ {
435
+ "id": "pill-2",
436
+ "component": "Chip",
437
+ "props": {
438
+ "label": "Drafts",
439
+ "pressable": true
440
+ }
441
+ },
442
+ {
443
+ "id": "pill-3",
444
+ "component": "Chip",
445
+ "props": {
446
+ "label": "Bug",
447
+ "dot": "$color.destructive"
448
+ }
449
+ },
450
+ {
451
+ "id": "pill-4",
452
+ "component": "Chip",
453
+ "props": {
454
+ "label": "Archived",
455
+ "icon": "ui-archive"
456
+ }
457
+ },
458
+ {
459
+ "id": "footer-spacer",
460
+ "component": "Box",
461
+ "style": {
462
+ "flexGrow": 1,
463
+ "flexBasis": 120,
464
+ "minWidth": 40,
465
+ "height": 1
466
+ }
467
+ },
468
+ {
469
+ "id": "footer-more",
470
+ "component": "Button",
471
+ "props": {
472
+ "label": "More",
473
+ "variant": "ghost"
474
+ },
475
+ "style": {
476
+ ":pressed": {
477
+ "opacity": 0.6
478
+ }
479
+ }
480
+ }
481
+ ]
482
+ }
483
+ ]
484
+ }
485
+ ]
486
+ },
487
+ {
488
+ "id": "form",
489
+ "component": "Card",
490
+ "props": {
491
+ "title": "Draft reply"
492
+ },
493
+ "children": [
494
+ {
495
+ "id": "echo-field",
496
+ "component": "Input",
497
+ "props": {
498
+ "label": "Title",
499
+ "name": "title",
500
+ "placeholder": "Title (echoes after 150 ms)",
501
+ "value": {
502
+ "path": "/draft/title"
503
+ },
504
+ "checks": [
505
+ {
506
+ "condition": {
507
+ "call": "required",
508
+ "args": {
509
+ "value": {
510
+ "path": "/draft/title"
511
+ }
512
+ }
513
+ },
514
+ "message": "A title is required"
515
+ }
516
+ ],
517
+ "validateOn": "blur"
518
+ }
519
+ },
520
+ {
521
+ "id": "form-body",
522
+ "component": "Textarea",
523
+ "props": {
524
+ "label": "Body",
525
+ "name": "body",
526
+ "placeholder": "Body",
527
+ "rows": 3
528
+ },
529
+ "style": {
530
+ "minHeight": 72
531
+ }
532
+ },
533
+ {
534
+ "id": "form-row",
535
+ "component": "Stack",
536
+ "props": {
537
+ "direction": "horizontal",
538
+ "wrap": true,
539
+ "align": "center",
540
+ "gap": "sm"
541
+ },
542
+ "children": [
543
+ {
544
+ "id": "form-sub",
545
+ "component": "Select",
546
+ "props": {
547
+ "label": "Subreddit",
548
+ "name": "subreddit",
549
+ "options": [
550
+ {
551
+ "label": "r/selfhosted",
552
+ "value": "selfhosted"
553
+ },
554
+ {
555
+ "label": "r/opensource",
556
+ "value": "opensource"
557
+ },
558
+ {
559
+ "label": "r/webdev",
560
+ "value": "webdev"
561
+ }
562
+ ],
563
+ "value": "selfhosted",
564
+ "searchable": true
565
+ },
566
+ "style": {
567
+ "flexGrow": 1,
568
+ "flexBasis": 160,
569
+ "maxWidth": 320
570
+ }
571
+ },
572
+ {
573
+ "id": "form-due",
574
+ "component": "DatePicker",
575
+ "props": {
576
+ "label": "Send on",
577
+ "name": "sendOn",
578
+ "value": "2026-10-14",
579
+ "min": "2026-10-07"
580
+ }
581
+ },
582
+ {
583
+ "id": "form-actions",
584
+ "component": "Stack",
585
+ "props": {
586
+ "direction": "horizontal",
587
+ "gap": "sm"
588
+ },
589
+ "style": {
590
+ "marginInlineStart": "auto"
591
+ },
592
+ "children": [
593
+ {
594
+ "id": "form-cancel",
595
+ "component": "Button",
596
+ "props": {
597
+ "label": "Cancel",
598
+ "variant": "outline"
599
+ },
600
+ "style": {
601
+ ":pressed": {
602
+ "opacity": 0.6
603
+ }
604
+ }
605
+ },
606
+ {
607
+ "id": "form-send",
608
+ "component": "Button",
609
+ "props": {
610
+ "label": "Send",
611
+ "icon": "ui-send"
612
+ },
613
+ "style": {
614
+ ":pressed": {
615
+ "opacity": 0.6
616
+ }
617
+ },
618
+ "on": {
619
+ "press": {
620
+ "event": {
621
+ "name": "send"
622
+ }
623
+ }
624
+ }
625
+ }
626
+ ]
627
+ }
628
+ ]
629
+ },
630
+ {
631
+ "id": "form-plan",
632
+ "component": "Radio",
633
+ "props": {
634
+ "label": "Tone",
635
+ "name": "tone",
636
+ "options": [
637
+ {
638
+ "label": "Friendly",
639
+ "value": "friendly"
640
+ },
641
+ {
642
+ "label": "Direct",
643
+ "value": "direct"
644
+ }
645
+ ],
646
+ "value": "friendly",
647
+ "orientation": "horizontal"
648
+ }
649
+ },
650
+ {
651
+ "id": "form-design",
652
+ "component": "ChoiceTiles",
653
+ "props": {
654
+ "name": "design",
655
+ "options": [
656
+ {
657
+ "label": "Two columns",
658
+ "value": "two",
659
+ "description": "Pictures beside the text"
660
+ },
661
+ {
662
+ "label": "One column",
663
+ "value": "one",
664
+ "description": "Pictures under the text"
665
+ }
666
+ ],
667
+ "value": "two",
668
+ "columns": 2
669
+ }
670
+ },
671
+ {
672
+ "id": "form-agree",
673
+ "component": "Checkbox",
674
+ "props": {
675
+ "label": "Cite sources",
676
+ "name": "cite",
677
+ "checked": true
678
+ }
679
+ },
680
+ {
681
+ "id": "form-volume",
682
+ "component": "Slider",
683
+ "props": {
684
+ "label": "Length",
685
+ "min": 0,
686
+ "max": 100,
687
+ "step": 5,
688
+ "value": 40
689
+ }
690
+ },
691
+ {
692
+ "id": "form-link",
693
+ "component": "Link",
694
+ "props": {
695
+ "label": "Posting guidelines",
696
+ "href": "https://example.com/rules",
697
+ "external": true
698
+ }
699
+ }
700
+ ]
701
+ },
702
+ {
703
+ "id": "flex-demo",
704
+ "component": "Box",
705
+ "style": {
706
+ "display": "flex",
707
+ "flexDirection": "row",
708
+ "flexWrap": "wrap",
709
+ "gap": "$spacing.sm"
710
+ },
711
+ "children": [
712
+ {
713
+ "id": "fx-1",
714
+ "component": "Box",
715
+ "style": {
716
+ "flexBasis": "30%",
717
+ "flexGrow": 1,
718
+ "minWidth": 96,
719
+ "height": 40,
720
+ "borderRadius": "$radius.sm",
721
+ "backgroundColor": "$color.success",
722
+ "display": "flex",
723
+ "alignItems": "center",
724
+ "justifyContent": "center"
725
+ },
726
+ "children": [
727
+ {
728
+ "id": "fx-1-t",
729
+ "component": "Text",
730
+ "props": {
731
+ "text": "basis 30% · grow 1",
732
+ "variant": "caption"
733
+ }
734
+ }
735
+ ]
736
+ },
737
+ {
738
+ "id": "fx-2",
739
+ "component": "Box",
740
+ "style": {
741
+ "width": 160,
742
+ "flexShrink": 0,
743
+ "height": 40,
744
+ "borderRadius": "$radius.sm",
745
+ "backgroundColor": "$color.warning",
746
+ "display": "flex",
747
+ "alignItems": "center",
748
+ "justifyContent": "center"
749
+ },
750
+ "children": [
751
+ {
752
+ "id": "fx-2-t",
753
+ "component": "Text",
754
+ "props": {
755
+ "text": "160 · shrink 0",
756
+ "variant": "caption"
757
+ }
758
+ }
759
+ ]
760
+ },
761
+ {
762
+ "id": "fx-3",
763
+ "component": "Box",
764
+ "style": {
765
+ "flexGrow": 2,
766
+ "flexBasis": 80,
767
+ "maxWidth": "50%",
768
+ "height": 40,
769
+ "borderRadius": "$radius.sm",
770
+ "backgroundColor": "$color.destructive",
771
+ "display": "flex",
772
+ "alignItems": "center",
773
+ "justifyContent": "center"
774
+ },
775
+ "children": [
776
+ {
777
+ "id": "fx-3-t",
778
+ "component": "Text",
779
+ "props": {
780
+ "text": "grow 2 · max 50%",
781
+ "variant": "caption"
782
+ }
783
+ }
784
+ ]
785
+ },
786
+ {
787
+ "id": "fx-4",
788
+ "component": "Box",
789
+ "style": {
790
+ "width": "25%",
791
+ "minWidth": 64,
792
+ "height": 40,
793
+ "borderRadius": "$radius.sm",
794
+ "backgroundColor": "$color.info",
795
+ "display": "flex",
796
+ "alignItems": "center",
797
+ "justifyContent": "center"
798
+ },
799
+ "children": [
800
+ {
801
+ "id": "fx-4-t",
802
+ "component": "Text",
803
+ "props": {
804
+ "text": "25%",
805
+ "variant": "caption"
806
+ }
807
+ }
808
+ ]
809
+ }
810
+ ]
811
+ },
812
+ {
813
+ "id": "stats",
814
+ "component": "Grid",
815
+ "props": {
816
+ "columns": 3,
817
+ "gap": "md"
818
+ },
819
+ "children": [
820
+ {
821
+ "id": "stat-1",
822
+ "component": "Card",
823
+ "props": {
824
+ "title": "Posts"
825
+ },
826
+ "children": [
827
+ {
828
+ "id": "stat-1-v",
829
+ "component": "Text",
830
+ "props": {
831
+ "text": "312",
832
+ "variant": "title"
833
+ }
834
+ }
835
+ ]
836
+ },
837
+ {
838
+ "id": "stat-2",
839
+ "component": "Card",
840
+ "props": {
841
+ "title": "Drafts"
842
+ },
843
+ "children": [
844
+ {
845
+ "id": "stat-2-v",
846
+ "component": "Text",
847
+ "props": {
848
+ "text": "2",
849
+ "variant": "title"
850
+ }
851
+ }
852
+ ]
853
+ },
854
+ {
855
+ "id": "stat-3",
856
+ "component": "Card",
857
+ "props": {
858
+ "title": "Sent"
859
+ },
860
+ "children": [
861
+ {
862
+ "id": "stat-3-v",
863
+ "component": "Text",
864
+ "props": {
865
+ "text": "17",
866
+ "variant": "title"
867
+ }
868
+ }
869
+ ]
870
+ }
871
+ ]
872
+ },
873
+ {
874
+ "id": "nav-demo",
875
+ "component": "Card",
876
+ "props": {
877
+ "title": "Navigation"
878
+ },
879
+ "children": [
880
+ {
881
+ "id": "tabs",
882
+ "component": "Tabs",
883
+ "props": {
884
+ "tabs": [
885
+ {
886
+ "label": "Issue",
887
+ "value": "issue",
888
+ "icon": "ui-issue"
889
+ },
890
+ {
891
+ "label": "Run",
892
+ "value": "run",
893
+ "count": 2
894
+ }
895
+ ],
896
+ "value": "issue"
897
+ },
898
+ "children": [
899
+ {
900
+ "id": "tab-issue",
901
+ "component": "Text",
902
+ "props": {
903
+ "text": "The issue panel"
904
+ }
905
+ },
906
+ {
907
+ "id": "tab-run",
908
+ "component": "Text",
909
+ "props": {
910
+ "text": "The run panel"
911
+ }
912
+ }
913
+ ]
914
+ },
915
+ {
916
+ "id": "segmented",
917
+ "component": "Segmented",
918
+ "props": {
919
+ "items": [
920
+ {
921
+ "label": "List",
922
+ "value": "list"
923
+ },
924
+ {
925
+ "label": "Board",
926
+ "value": "board"
927
+ },
928
+ {
929
+ "label": "Graph",
930
+ "value": "graph",
931
+ "disabled": true
932
+ }
933
+ ],
934
+ "value": "list",
935
+ "variant": "segmented",
936
+ "fill": true
937
+ }
938
+ },
939
+ {
940
+ "id": "toggles",
941
+ "component": "Segmented",
942
+ "props": {
943
+ "items": [
944
+ {
945
+ "label": "Bold",
946
+ "value": "bold",
947
+ "icon": "editor-bold"
948
+ },
949
+ {
950
+ "label": "Italic",
951
+ "value": "italic",
952
+ "icon": "editor-italic"
953
+ }
954
+ ],
955
+ "type": "multiple",
956
+ "value": "bold",
957
+ "variant": "toggles",
958
+ "size": "sm"
959
+ }
960
+ },
961
+ {
962
+ "id": "accordion",
963
+ "component": "Accordion",
964
+ "props": {
965
+ "items": [
966
+ {
967
+ "title": "Details",
968
+ "value": "details"
969
+ },
970
+ {
971
+ "title": "History",
972
+ "value": "history",
973
+ "count": 4
974
+ }
975
+ ],
976
+ "type": "multiple",
977
+ "value": "details"
978
+ },
979
+ "children": [
980
+ {
981
+ "id": "acc-details",
982
+ "component": "Text",
983
+ "props": {
984
+ "text": "Everything about it"
985
+ }
986
+ },
987
+ {
988
+ "id": "acc-history",
989
+ "component": "Text",
990
+ "props": {
991
+ "text": "What happened"
992
+ }
993
+ }
994
+ ]
995
+ },
996
+ {
997
+ "id": "collapsible",
998
+ "component": "Collapsible",
999
+ "props": {
1000
+ "title": "Advanced",
1001
+ "open": {
1002
+ "path": "/ui/advancedOpen"
1003
+ },
1004
+ "count": 2
1005
+ },
1006
+ "children": [
1007
+ {
1008
+ "id": "coll-body",
1009
+ "component": "Text",
1010
+ "props": {
1011
+ "text": "Hidden until opened",
1012
+ "variant": "muted"
1013
+ }
1014
+ }
1015
+ ]
1016
+ },
1017
+ {
1018
+ "id": "pagination",
1019
+ "component": "Pagination",
1020
+ "props": {
1021
+ "totalPages": 5,
1022
+ "page": {
1023
+ "path": "/ui/page"
1024
+ }
1025
+ },
1026
+ "on": {
1027
+ "change": {
1028
+ "event": {
1029
+ "name": "page"
1030
+ }
1031
+ }
1032
+ }
1033
+ },
1034
+ {
1035
+ "id": "button-group",
1036
+ "component": "Segmented",
1037
+ "props": {
1038
+ "items": [
1039
+ {
1040
+ "label": "Day",
1041
+ "value": "day"
1042
+ },
1043
+ {
1044
+ "label": "Week",
1045
+ "value": "week"
1046
+ },
1047
+ {
1048
+ "label": "Month",
1049
+ "value": "month"
1050
+ }
1051
+ ],
1052
+ "value": "week",
1053
+ "variant": "outline"
1054
+ },
1055
+ "on": {
1056
+ "change": {
1057
+ "event": {
1058
+ "name": "range"
1059
+ }
1060
+ }
1061
+ }
1062
+ },
1063
+ {
1064
+ "id": "toggle",
1065
+ "component": "Toggle",
1066
+ "props": {
1067
+ "label": "Pin",
1068
+ "icon": "ui-pin",
1069
+ "pressed": true,
1070
+ "variant": "outline"
1071
+ }
1072
+ },
1073
+ {
1074
+ "id": "stepper",
1075
+ "component": "Stepper",
1076
+ "props": {
1077
+ "steps": [
1078
+ {
1079
+ "label": "Account"
1080
+ },
1081
+ {
1082
+ "label": "Team",
1083
+ "description": "Invite people"
1084
+ },
1085
+ {
1086
+ "label": "Done"
1087
+ }
1088
+ ],
1089
+ "current": 1,
1090
+ "orientation": "horizontal"
1091
+ }
1092
+ }
1093
+ ]
1094
+ },
1095
+ {
1096
+ "id": "feedback-demo",
1097
+ "component": "Card",
1098
+ "props": {
1099
+ "title": "Feedback"
1100
+ },
1101
+ "children": [
1102
+ {
1103
+ "id": "alert",
1104
+ "component": "Alert",
1105
+ "props": {
1106
+ "title": "Saved",
1107
+ "message": "Your changes have been saved.",
1108
+ "type": "success"
1109
+ }
1110
+ },
1111
+ {
1112
+ "id": "alert-warn",
1113
+ "component": "Alert",
1114
+ "props": {
1115
+ "title": "Quota at 80%",
1116
+ "type": "warning"
1117
+ }
1118
+ },
1119
+ {
1120
+ "id": "status-row",
1121
+ "component": "Stack",
1122
+ "props": {
1123
+ "direction": "horizontal",
1124
+ "align": "center",
1125
+ "gap": "md"
1126
+ },
1127
+ "children": [
1128
+ {
1129
+ "id": "ring",
1130
+ "component": "Ring",
1131
+ "props": {
1132
+ "value": 0.62,
1133
+ "tone": "primary",
1134
+ "label": "62% used"
1135
+ }
1136
+ },
1137
+ {
1138
+ "id": "spinner",
1139
+ "component": "Spinner",
1140
+ "props": {
1141
+ "size": "sm",
1142
+ "label": "Loading"
1143
+ }
1144
+ },
1145
+ {
1146
+ "id": "icon",
1147
+ "component": "Icon",
1148
+ "props": {
1149
+ "name": "ui-success",
1150
+ "tone": "success",
1151
+ "label": "Done"
1152
+ }
1153
+ },
1154
+ {
1155
+ "id": "skeleton",
1156
+ "component": "Skeleton",
1157
+ "props": {
1158
+ "width": "120px",
1159
+ "height": "16px"
1160
+ }
1161
+ },
1162
+ {
1163
+ "id": "skeleton-round",
1164
+ "component": "Skeleton",
1165
+ "props": {
1166
+ "width": "24px",
1167
+ "height": "24px",
1168
+ "rounded": true
1169
+ }
1170
+ }
1171
+ ]
1172
+ },
1173
+ {
1174
+ "id": "voice-wave",
1175
+ "component": "VoiceWave",
1176
+ "props": {
1177
+ "activity": "listening",
1178
+ "level": 0.6,
1179
+ "bands": [0.9, 0.6, 1, 0.5],
1180
+ "label": "Voice"
1181
+ },
1182
+ "children": [
1183
+ {
1184
+ "id": "voice-wave-mark",
1185
+ "component": "Icon",
1186
+ "props": {
1187
+ "name": "mic"
1188
+ }
1189
+ }
1190
+ ]
1191
+ },
1192
+ {
1193
+ "id": "call",
1194
+ "component": "CallSurface",
1195
+ "props": {
1196
+ "name": "Assistant",
1197
+ "state": "talking",
1198
+ "status": "01:24",
1199
+ "caption": "Sure, Friday at eight works."
1200
+ },
1201
+ "style": {
1202
+ "height": 360
1203
+ }
1204
+ },
1205
+ {
1206
+ "id": "bubble-out",
1207
+ "component": "MessageBubble",
1208
+ "props": {
1209
+ "text": "Is the printer fixed?",
1210
+ "side": "out",
1211
+ "time": "18:00",
1212
+ "status": "read"
1213
+ }
1214
+ },
1215
+ {
1216
+ "id": "bubble-in",
1217
+ "component": "MessageBubble",
1218
+ "props": {
1219
+ "text": "Yes, try again.",
1220
+ "author": "spezl",
1221
+ "time": "18:02"
1222
+ }
1223
+ },
1224
+ {
1225
+ "id": "plan",
1226
+ "component": "Plan",
1227
+ "props": {
1228
+ "title": "Here's my plan",
1229
+ "state": "running",
1230
+ "progress": 0.4,
1231
+ "steps": [
1232
+ {
1233
+ "title": "Open the site",
1234
+ "icon": "globe",
1235
+ "status": "done"
1236
+ },
1237
+ {
1238
+ "title": "Reserve a table",
1239
+ "icon": "pencil",
1240
+ "status": "running"
1241
+ }
1242
+ ]
1243
+ }
1244
+ },
1245
+ {
1246
+ "id": "qr",
1247
+ "component": "QrCode",
1248
+ "props": {
1249
+ "value": "HELLO",
1250
+ "size": 120,
1251
+ "label": "Scan to pair"
1252
+ }
1253
+ },
1254
+ {
1255
+ "id": "scanner",
1256
+ "component": "QrScanner",
1257
+ "props": {
1258
+ "hint": "Point at the code"
1259
+ },
1260
+ "style": {
1261
+ "width": 240
1262
+ }
1263
+ },
1264
+ {
1265
+ "id": "empty",
1266
+ "component": "EmptyState",
1267
+ "props": {
1268
+ "icon": "nav-inbox",
1269
+ "title": "No notifications",
1270
+ "description": "You are all caught up.",
1271
+ "actionLabel": "Refresh"
1272
+ },
1273
+ "on": {
1274
+ "press": {
1275
+ "event": {
1276
+ "name": "refresh"
1277
+ }
1278
+ }
1279
+ }
1280
+ },
1281
+ {
1282
+ "id": "empty-list",
1283
+ "component": "EmptyState",
1284
+ "props": {
1285
+ "icon": "nav-issues",
1286
+ "title": "No issues yet",
1287
+ "size": "list"
1288
+ }
1289
+ },
1290
+ {
1291
+ "id": "table",
1292
+ "component": "Table",
1293
+ "props": {
1294
+ "columns": [
1295
+ {
1296
+ "key": "name",
1297
+ "label": "Name",
1298
+ "sortable": true
1299
+ },
1300
+ {
1301
+ "key": "role",
1302
+ "label": "Role",
1303
+ "type": "badge"
1304
+ },
1305
+ {
1306
+ "key": "runs",
1307
+ "label": "Runs",
1308
+ "type": "number",
1309
+ "align": "end",
1310
+ "sortable": true,
1311
+ "width": 80
1312
+ },
1313
+ {
1314
+ "key": "status",
1315
+ "label": "Status",
1316
+ "type": "slot",
1317
+ "slot": "statusCell"
1318
+ }
1319
+ ],
1320
+ "rows": [
1321
+ {
1322
+ "id": "alice",
1323
+ "name": "Alice",
1324
+ "role": "Owner",
1325
+ "runs": 12,
1326
+ "status": "Online"
1327
+ },
1328
+ {
1329
+ "id": "bob",
1330
+ "name": "Bob",
1331
+ "role": "Member",
1332
+ "runs": 3,
1333
+ "status": "Away"
1334
+ }
1335
+ ],
1336
+ "rowKey": "id",
1337
+ "selectable": "multiple",
1338
+ "selected": {
1339
+ "path": "/ui/selectedMembers"
1340
+ },
1341
+ "sort": {
1342
+ "key": "runs",
1343
+ "direction": "desc"
1344
+ },
1345
+ "caption": "Two members",
1346
+ "striped": true
1347
+ },
1348
+ "slots": {
1349
+ "statusCell": {
1350
+ "id": "table-status",
1351
+ "component": "Chip",
1352
+ "props": {
1353
+ "label": {
1354
+ "path": "status"
1355
+ },
1356
+ "tone": "success"
1357
+ }
1358
+ }
1359
+ },
1360
+ "on": {
1361
+ "sort": {
1362
+ "event": {
1363
+ "name": "sortMembers"
1364
+ }
1365
+ },
1366
+ "select": {
1367
+ "event": {
1368
+ "name": "selectMembers"
1369
+ }
1370
+ }
1371
+ }
1372
+ },
1373
+ {
1374
+ "id": "chart",
1375
+ "component": "Chart",
1376
+ "props": {
1377
+ "kind": "bar",
1378
+ "categories": [
1379
+ "Mon",
1380
+ "Tue",
1381
+ "Wed"
1382
+ ],
1383
+ "series": [
1384
+ {
1385
+ "name": "Runs",
1386
+ "values": [
1387
+ 3,
1388
+ 5,
1389
+ 2
1390
+ ]
1391
+ },
1392
+ {
1393
+ "name": "Merges",
1394
+ "values": [
1395
+ 1,
1396
+ 2,
1397
+ 2
1398
+ ],
1399
+ "tone": "success"
1400
+ }
1401
+ ],
1402
+ "title": "This week",
1403
+ "height": 160
1404
+ }
1405
+ },
1406
+ {
1407
+ "id": "charts-row",
1408
+ "component": "Grid",
1409
+ "props": {
1410
+ "columns": {
1411
+ "base": 1,
1412
+ "md": 2
1413
+ },
1414
+ "gap": "md"
1415
+ },
1416
+ "children": [
1417
+ {
1418
+ "id": "chart-line",
1419
+ "component": "Chart",
1420
+ "props": {
1421
+ "kind": "line",
1422
+ "categories": [
1423
+ "Mon",
1424
+ "Tue",
1425
+ "Wed",
1426
+ "Thu"
1427
+ ],
1428
+ "series": [
1429
+ {
1430
+ "name": "Open",
1431
+ "values": [
1432
+ 4,
1433
+ 6,
1434
+ 5,
1435
+ 8
1436
+ ]
1437
+ },
1438
+ {
1439
+ "name": "Closed",
1440
+ "values": [
1441
+ 2,
1442
+ 3,
1443
+ 6,
1444
+ 7
1445
+ ]
1446
+ }
1447
+ ],
1448
+ "showValues": true,
1449
+ "yLabel": "Issues"
1450
+ }
1451
+ },
1452
+ {
1453
+ "id": "chart-donut",
1454
+ "component": "Chart",
1455
+ "props": {
1456
+ "kind": "donut",
1457
+ "categories": [
1458
+ "Done",
1459
+ "In progress",
1460
+ "Backlog"
1461
+ ],
1462
+ "series": [
1463
+ {
1464
+ "name": "Issues",
1465
+ "values": [
1466
+ 12,
1467
+ 5,
1468
+ 9
1469
+ ]
1470
+ }
1471
+ ],
1472
+ "height": 180
1473
+ }
1474
+ }
1475
+ ]
1476
+ },
1477
+ {
1478
+ "id": "spark-row",
1479
+ "component": "Stack",
1480
+ "props": {
1481
+ "direction": "horizontal",
1482
+ "align": "center",
1483
+ "gap": "sm"
1484
+ },
1485
+ "children": [
1486
+ {
1487
+ "id": "spark-label",
1488
+ "component": "Text",
1489
+ "props": {
1490
+ "text": "Runs this week",
1491
+ "variant": "muted"
1492
+ }
1493
+ },
1494
+ {
1495
+ "id": "sparkline",
1496
+ "component": "Sparkline",
1497
+ "props": {
1498
+ "values": [
1499
+ 1,
1500
+ 3,
1501
+ 2,
1502
+ 5,
1503
+ 4,
1504
+ 6
1505
+ ],
1506
+ "tone": "success"
1507
+ },
1508
+ "style": {
1509
+ "width": 96
1510
+ }
1511
+ },
1512
+ {
1513
+ "id": "progress-bound",
1514
+ "component": "Progress",
1515
+ "props": {
1516
+ "value": {
1517
+ "path": "/ui/upload"
1518
+ },
1519
+ "label": "Upload"
1520
+ },
1521
+ "style": {
1522
+ "flexGrow": 1
1523
+ }
1524
+ }
1525
+ ]
1526
+ }
1527
+ ]
1528
+ },
1529
+ {
1530
+ "id": "rows-demo",
1531
+ "component": "Group",
1532
+ "props": {
1533
+ "title": "Properties",
1534
+ "footer": "Read-only unless you own the board."
1535
+ },
1536
+ "children": [
1537
+ {
1538
+ "id": "prop-assignee",
1539
+ "component": "Row",
1540
+ "props": {
1541
+ "title": "Assignee",
1542
+ "value": "Alex Chen",
1543
+ "icon": "ui-assignee"
1544
+ }
1545
+ },
1546
+ {
1547
+ "id": "pick-status",
1548
+ "component": "Row",
1549
+ "props": {
1550
+ "title": "Status",
1551
+ "value": "In progress",
1552
+ "icon": "settings-statuses",
1553
+ "chevron": "selector",
1554
+ "pressable": true
1555
+ },
1556
+ "on": {
1557
+ "press": {
1558
+ "event": {
1559
+ "name": "pickStatus"
1560
+ }
1561
+ }
1562
+ }
1563
+ },
1564
+ {
1565
+ "id": "pick-label",
1566
+ "component": "Row",
1567
+ "props": {
1568
+ "title": "Labels",
1569
+ "placeholder": "Add a label",
1570
+ "chevron": "selector",
1571
+ "pressable": true
1572
+ }
1573
+ },
1574
+ {
1575
+ "id": "nav-inbox",
1576
+ "component": "Row",
1577
+ "props": {
1578
+ "title": "Inbox",
1579
+ "icon": "nav-inbox",
1580
+ "selected": true,
1581
+ "pressable": true
1582
+ },
1583
+ "slots": {
1584
+ "trailing": {
1585
+ "id": "nav-inbox-count",
1586
+ "component": "Badge",
1587
+ "props": {
1588
+ "text": "3",
1589
+ "variant": "secondary"
1590
+ }
1591
+ }
1592
+ }
1593
+ },
1594
+ {
1595
+ "id": "nav-reviews",
1596
+ "component": "Row",
1597
+ "props": {
1598
+ "title": "Reviews",
1599
+ "icon": "pr-open",
1600
+ "pressable": true
1601
+ }
1602
+ }
1603
+ ]
1604
+ },
1605
+ {
1606
+ "id": "chips-demo",
1607
+ "component": "Stack",
1608
+ "props": {
1609
+ "direction": "horizontal",
1610
+ "wrap": true,
1611
+ "gap": "sm",
1612
+ "align": "center"
1613
+ },
1614
+ "children": [
1615
+ {
1616
+ "id": "card-row",
1617
+ "component": "Row",
1618
+ "props": {
1619
+ "title": "MacBook Pro",
1620
+ "subtitle": "Online · 2 runs",
1621
+ "icon": "ui-device",
1622
+ "meta": "now",
1623
+ "surface": "card",
1624
+ "pressable": true
1625
+ },
1626
+ "style": {
1627
+ "flexBasis": 240,
1628
+ "flexGrow": 1
1629
+ }
1630
+ },
1631
+ {
1632
+ "id": "chip-board",
1633
+ "component": "Chip",
1634
+ "props": {
1635
+ "label": "Sprint 12",
1636
+ "shape": "rect",
1637
+ "icon": "nav-boards",
1638
+ "detail": "APP",
1639
+ "removable": true,
1640
+ "pressable": true
1641
+ },
1642
+ "on": {
1643
+ "press": {
1644
+ "event": {
1645
+ "name": "openBoard"
1646
+ }
1647
+ },
1648
+ "remove": {
1649
+ "event": {
1650
+ "name": "removeBoard"
1651
+ }
1652
+ }
1653
+ }
1654
+ },
1655
+ {
1656
+ "id": "chip-user",
1657
+ "component": "Chip",
1658
+ "props": {
1659
+ "label": "Alex Chen",
1660
+ "shape": "rect",
1661
+ "image": "https://example.com/alex.png",
1662
+ "pressable": true
1663
+ }
1664
+ }
1665
+ ]
1666
+ },
1667
+ {
1668
+ "id": "media-demo",
1669
+ "component": "Card",
1670
+ "props": {
1671
+ "title": "Media"
1672
+ },
1673
+ "children": [
1674
+ {
1675
+ "id": "carousel",
1676
+ "component": "Carousel",
1677
+ "props": {
1678
+ "page": 0,
1679
+ "indicators": true
1680
+ },
1681
+ "children": [
1682
+ {
1683
+ "id": "page-1",
1684
+ "component": "Image",
1685
+ "props": {
1686
+ "src": "https://example.com/1.jpg",
1687
+ "alt": "One",
1688
+ "aspectRatio": 1.7777778
1689
+ }
1690
+ },
1691
+ {
1692
+ "id": "page-2",
1693
+ "component": "Image",
1694
+ "props": {
1695
+ "src": "https://example.com/2.jpg",
1696
+ "alt": "Two",
1697
+ "aspectRatio": 1.7777778
1698
+ }
1699
+ }
1700
+ ]
1701
+ },
1702
+ {
1703
+ "id": "video",
1704
+ "component": "Video",
1705
+ "props": {
1706
+ "src": "https://example.com/clip.mp4",
1707
+ "poster": "https://example.com/clip.jpg",
1708
+ "durationMs": 12000
1709
+ }
1710
+ },
1711
+ {
1712
+ "id": "audio",
1713
+ "component": "AudioPlayer",
1714
+ "props": {
1715
+ "src": "https://example.com/track.mp3",
1716
+ "title": "Episode 12",
1717
+ "durationMs": 1860000
1718
+ }
1719
+ },
1720
+ {
1721
+ "id": "list",
1722
+ "component": "List",
1723
+ "props": {
1724
+ "direction": "vertical",
1725
+ "divided": true
1726
+ },
1727
+ "template": {
1728
+ "component": "list-item",
1729
+ "path": "/posts"
1730
+ },
1731
+ "children": []
1732
+ },
1733
+ {
1734
+ "id": "list-item",
1735
+ "component": "Row",
1736
+ "props": {
1737
+ "title": {
1738
+ "path": "title"
1739
+ },
1740
+ "meta": {
1741
+ "path": "score"
1742
+ }
1743
+ }
1744
+ }
1745
+ ]
1746
+ },
1747
+ {
1748
+ "id": "overlay-demo",
1749
+ "component": "Stack",
1750
+ "props": {
1751
+ "direction": "horizontal",
1752
+ "wrap": true,
1753
+ "gap": "sm"
1754
+ },
1755
+ "children": [
1756
+ {
1757
+ "id": "dialog",
1758
+ "component": "Dialog",
1759
+ "props": {
1760
+ "title": "Delete board?",
1761
+ "description": "This cannot be undone.",
1762
+ "open": {
1763
+ "path": "/ui/confirmOpen"
1764
+ },
1765
+ "dismissible": true
1766
+ },
1767
+ "slots": {
1768
+ "trigger": {
1769
+ "id": "dialog-trigger",
1770
+ "component": "Button",
1771
+ "props": {
1772
+ "label": "Delete",
1773
+ "variant": "destructive"
1774
+ }
1775
+ },
1776
+ "footer": {
1777
+ "id": "dialog-footer",
1778
+ "component": "Button",
1779
+ "props": {
1780
+ "label": "Delete for good",
1781
+ "variant": "destructive"
1782
+ },
1783
+ "on": {
1784
+ "press": {
1785
+ "event": {
1786
+ "name": "deleteBoard"
1787
+ }
1788
+ }
1789
+ }
1790
+ }
1791
+ },
1792
+ "children": [
1793
+ {
1794
+ "id": "dialog-body",
1795
+ "component": "Text",
1796
+ "props": {
1797
+ "text": "Issues move to the trash for 48 hours."
1798
+ }
1799
+ }
1800
+ ]
1801
+ },
1802
+ {
1803
+ "id": "drawer",
1804
+ "component": "Drawer",
1805
+ "props": {
1806
+ "title": "Filters",
1807
+ "side": "bottom",
1808
+ "open": false
1809
+ },
1810
+ "slots": {
1811
+ "trigger": {
1812
+ "id": "drawer-trigger",
1813
+ "component": "Button",
1814
+ "props": {
1815
+ "label": "Filters",
1816
+ "variant": "outline",
1817
+ "icon": "ui-properties"
1818
+ }
1819
+ }
1820
+ },
1821
+ "children": [
1822
+ {
1823
+ "id": "drawer-body",
1824
+ "component": "Checkbox",
1825
+ "props": {
1826
+ "label": "Only mine",
1827
+ "name": "mine"
1828
+ }
1829
+ }
1830
+ ]
1831
+ },
1832
+ {
1833
+ "id": "sheet",
1834
+ "component": "Drawer",
1835
+ "props": {
1836
+ "title": "Details",
1837
+ "side": "bottom",
1838
+ "open": false
1839
+ },
1840
+ "slots": {
1841
+ "trigger": {
1842
+ "id": "sheet-trigger",
1843
+ "component": "Button",
1844
+ "props": {
1845
+ "label": "Details",
1846
+ "variant": "secondary"
1847
+ }
1848
+ }
1849
+ },
1850
+ "children": [
1851
+ {
1852
+ "id": "sheet-body",
1853
+ "component": "Text",
1854
+ "props": {
1855
+ "text": "Everything in a bottom sheet."
1856
+ }
1857
+ }
1858
+ ]
1859
+ },
1860
+ {
1861
+ "id": "popover",
1862
+ "component": "Popover",
1863
+ "props": {
1864
+ "side": "bottom"
1865
+ },
1866
+ "slots": {
1867
+ "trigger": {
1868
+ "id": "popover-trigger",
1869
+ "component": "Button",
1870
+ "props": {
1871
+ "icon": "ui-info",
1872
+ "variant": "ghost",
1873
+ "size": "icon",
1874
+ "label": "About"
1875
+ }
1876
+ }
1877
+ },
1878
+ "children": [
1879
+ {
1880
+ "id": "popover-body",
1881
+ "component": "Text",
1882
+ "props": {
1883
+ "text": "A small anchored panel.",
1884
+ "variant": "caption"
1885
+ }
1886
+ }
1887
+ ]
1888
+ },
1889
+ {
1890
+ "id": "tooltip",
1891
+ "component": "Tooltip",
1892
+ "props": {
1893
+ "content": "Copy link",
1894
+ "side": "top"
1895
+ },
1896
+ "children": [
1897
+ {
1898
+ "id": "tooltip-anchor",
1899
+ "component": "Button",
1900
+ "props": {
1901
+ "icon": "ui-link",
1902
+ "variant": "ghost",
1903
+ "size": "icon",
1904
+ "label": "Copy link"
1905
+ }
1906
+ }
1907
+ ]
1908
+ },
1909
+ {
1910
+ "id": "menu",
1911
+ "component": "Menu",
1912
+ "props": {
1913
+ "items": [
1914
+ {
1915
+ "label": "Rename",
1916
+ "value": "rename",
1917
+ "icon": "ui-edit"
1918
+ },
1919
+ {
1920
+ "label": "Archive",
1921
+ "value": "archive",
1922
+ "icon": "ui-archive"
1923
+ },
1924
+ {
1925
+ "label": "Delete",
1926
+ "value": "delete",
1927
+ "destructive": true
1928
+ }
1929
+ ]
1930
+ },
1931
+ "on": {
1932
+ "select": {
1933
+ "event": {
1934
+ "name": "menu"
1935
+ }
1936
+ }
1937
+ },
1938
+ "children": [
1939
+ {
1940
+ "id": "menu-trigger",
1941
+ "component": "Button",
1942
+ "props": {
1943
+ "label": "More",
1944
+ "icon": "ui-more",
1945
+ "variant": "outline"
1946
+ }
1947
+ }
1948
+ ]
1949
+ },
1950
+ {
1951
+ "id": "alert-dialog",
1952
+ "component": "AlertDialog",
1953
+ "props": {
1954
+ "title": "Discard draft?",
1955
+ "description": "Your text will be lost.",
1956
+ "destructive": true,
1957
+ "open": {
1958
+ "path": "/ui/discardOpen"
1959
+ }
1960
+ },
1961
+ "slots": {
1962
+ "trigger": {
1963
+ "id": "alert-dialog-trigger",
1964
+ "component": "Button",
1965
+ "props": {
1966
+ "label": "Discard",
1967
+ "variant": "outline"
1968
+ }
1969
+ }
1970
+ },
1971
+ "on": {
1972
+ "confirm": {
1973
+ "event": {
1974
+ "name": "discard"
1975
+ }
1976
+ }
1977
+ }
1978
+ },
1979
+ {
1980
+ "id": "dock-card",
1981
+ "component": "DockCard",
1982
+ "props": {
1983
+ "label": "Plan ready",
1984
+ "caption": "Ask dock",
1985
+ "meta": "3 questions",
1986
+ "title": "Fold the composer into the Dock",
1987
+ "icon": "coding-plan",
1988
+ "tone": "primary",
1989
+ "open": {
1990
+ "path": "/ui/dockOpen"
1991
+ }
1992
+ },
1993
+ "children": [
1994
+ {
1995
+ "id": "dock-card-body",
1996
+ "component": "Text",
1997
+ "props": {
1998
+ "text": "Move the waiting cards above the composer and open each one as a bottom sheet."
1999
+ }
2000
+ }
2001
+ ],
2002
+ "slots": {
2003
+ "footer": {
2004
+ "id": "dock-card-footer",
2005
+ "component": "Stack",
2006
+ "props": {
2007
+ "direction": "horizontal",
2008
+ "gap": "sm",
2009
+ "justify": "end"
2010
+ },
2011
+ "children": [
2012
+ {
2013
+ "id": "dock-card-no",
2014
+ "component": "Button",
2015
+ "props": {
2016
+ "label": "No, keep planning",
2017
+ "variant": "secondary"
2018
+ }
2019
+ },
2020
+ {
2021
+ "id": "dock-card-yes",
2022
+ "component": "Button",
2023
+ "props": {
2024
+ "label": "Yes"
2025
+ }
2026
+ }
2027
+ ]
2028
+ }
2029
+ }
2030
+ },
2031
+ {
2032
+ "id": "hover-card",
2033
+ "component": "Popover",
2034
+ "props": {
2035
+ "side": "top",
2036
+ "openOn": "hover"
2037
+ },
2038
+ "slots": {
2039
+ "trigger": {
2040
+ "id": "hover-card-trigger",
2041
+ "component": "Link",
2042
+ "props": {
2043
+ "label": "@alex"
2044
+ }
2045
+ }
2046
+ },
2047
+ "children": [
2048
+ {
2049
+ "id": "hover-card-body",
2050
+ "component": "Stack",
2051
+ "props": {
2052
+ "direction": "horizontal",
2053
+ "gap": "sm",
2054
+ "align": "center"
2055
+ },
2056
+ "children": [
2057
+ {
2058
+ "id": "hover-card-avatar",
2059
+ "component": "Avatar",
2060
+ "props": {
2061
+ "name": "Alex Chen"
2062
+ }
2063
+ },
2064
+ {
2065
+ "id": "hover-card-name",
2066
+ "component": "Text",
2067
+ "props": {
2068
+ "text": "Alex Chen · Owner",
2069
+ "variant": "body"
2070
+ }
2071
+ }
2072
+ ]
2073
+ }
2074
+ ]
2075
+ },
2076
+ {
2077
+ "id": "context-menu",
2078
+ "component": "Menu",
2079
+ "props": {
2080
+ "items": [
2081
+ {
2082
+ "label": "Copy",
2083
+ "value": "copy",
2084
+ "shortcut": "⌘C",
2085
+ "icon": "ui-copy"
2086
+ },
2087
+ {
2088
+ "kind": "separator"
2089
+ },
2090
+ {
2091
+ "kind": "label",
2092
+ "label": "View"
2093
+ },
2094
+ {
2095
+ "label": "Show done",
2096
+ "value": "showDone",
2097
+ "kind": "checkbox",
2098
+ "checked": {
2099
+ "path": "/ui/showDone"
2100
+ }
2101
+ },
2102
+ {
2103
+ "label": "Sort by",
2104
+ "kind": "submenu",
2105
+ "items": [
2106
+ {
2107
+ "label": "Priority",
2108
+ "value": "priority"
2109
+ },
2110
+ {
2111
+ "label": "Updated",
2112
+ "value": "updated"
2113
+ }
2114
+ ]
2115
+ },
2116
+ {
2117
+ "kind": "separator"
2118
+ },
2119
+ {
2120
+ "label": "Delete",
2121
+ "value": "delete",
2122
+ "destructive": true
2123
+ }
2124
+ ],
2125
+ "openOn": "contextmenu"
2126
+ },
2127
+ "on": {
2128
+ "select": {
2129
+ "event": {
2130
+ "name": "contextMenu"
2131
+ }
2132
+ }
2133
+ },
2134
+ "children": [
2135
+ {
2136
+ "id": "context-menu-target",
2137
+ "component": "Card",
2138
+ "props": {
2139
+ "title": "Right-click me"
2140
+ }
2141
+ }
2142
+ ]
2143
+ },
2144
+ {
2145
+ "id": "toast",
2146
+ "component": "Toast",
2147
+ "props": {
2148
+ "title": "Saved",
2149
+ "description": "Your changes are live.",
2150
+ "type": "success",
2151
+ "open": {
2152
+ "path": "/ui/toastOpen"
2153
+ },
2154
+ "actionLabel": "Undo",
2155
+ "duration": 5000
2156
+ },
2157
+ "on": {
2158
+ "action": {
2159
+ "event": {
2160
+ "name": "undo"
2161
+ }
2162
+ }
2163
+ }
2164
+ }
2165
+ ]
2166
+ },
2167
+ {
2168
+ "id": "responsive",
2169
+ "component": "Card",
2170
+ "props": {
2171
+ "title": "Responsive"
2172
+ },
2173
+ "children": [
2174
+ {
2175
+ "id": "resp-grid",
2176
+ "component": "Grid",
2177
+ "props": {
2178
+ "columns": {
2179
+ "base": 1,
2180
+ "sm": 2,
2181
+ "lg": 3
2182
+ },
2183
+ "gap": {
2184
+ "base": "sm",
2185
+ "md": "md"
2186
+ }
2187
+ },
2188
+ "children": [
2189
+ {
2190
+ "id": "resp-card-1",
2191
+ "component": "Card",
2192
+ "props": {
2193
+ "title": "Throughput",
2194
+ "description": "Runs per day"
2195
+ },
2196
+ "children": [
2197
+ {
2198
+ "id": "resp-value-1",
2199
+ "component": "Text",
2200
+ "props": {
2201
+ "text": "128",
2202
+ "variant": "title"
2203
+ }
2204
+ }
2205
+ ]
2206
+ },
2207
+ {
2208
+ "id": "resp-card-2",
2209
+ "component": "Card",
2210
+ "props": {
2211
+ "title": "Latency",
2212
+ "description": "p95 in ms"
2213
+ },
2214
+ "children": [
2215
+ {
2216
+ "id": "resp-value-2",
2217
+ "component": "Text",
2218
+ "props": {
2219
+ "text": "412",
2220
+ "variant": "title"
2221
+ }
2222
+ }
2223
+ ]
2224
+ },
2225
+ {
2226
+ "id": "resp-card-3",
2227
+ "component": "Card",
2228
+ "props": {
2229
+ "title": "Errors",
2230
+ "description": "Last 24 h"
2231
+ },
2232
+ "children": [
2233
+ {
2234
+ "id": "resp-value-3",
2235
+ "component": "Text",
2236
+ "props": {
2237
+ "text": "3",
2238
+ "variant": "title"
2239
+ }
2240
+ }
2241
+ ]
2242
+ }
2243
+ ]
2244
+ },
2245
+ {
2246
+ "id": "resp-shell",
2247
+ "component": "Sidebar",
2248
+ "props": {
2249
+ "width": 200,
2250
+ "collapseBelow": "md",
2251
+ "collapsed": {
2252
+ "path": "/ui/sidebarCollapsed"
2253
+ }
2254
+ },
2255
+ "style": {
2256
+ "minHeight": 160
2257
+ },
2258
+ "slots": {
2259
+ "sidebar": {
2260
+ "id": "resp-nav",
2261
+ "component": "Box",
2262
+ "style": {
2263
+ "display": "flex",
2264
+ "flexDirection": "column",
2265
+ "gap": "$spacing.xxs",
2266
+ "padding": "$spacing.xs"
2267
+ },
2268
+ "children": [
2269
+ {
2270
+ "id": "resp-nav-inbox",
2271
+ "component": "Row",
2272
+ "props": {
2273
+ "title": "Inbox",
2274
+ "icon": "nav-inbox",
2275
+ "selected": true,
2276
+ "pressable": true
2277
+ },
2278
+ "slots": {
2279
+ "trailing": {
2280
+ "id": "resp-nav-inbox-count",
2281
+ "component": "Badge",
2282
+ "props": {
2283
+ "text": "2",
2284
+ "variant": "secondary"
2285
+ }
2286
+ }
2287
+ }
2288
+ },
2289
+ {
2290
+ "id": "resp-nav-issues",
2291
+ "component": "Row",
2292
+ "props": {
2293
+ "title": "Issues",
2294
+ "icon": "nav-issues",
2295
+ "pressable": true
2296
+ }
2297
+ }
2298
+ ]
2299
+ }
2300
+ },
2301
+ "children": [
2302
+ {
2303
+ "id": "resp-main",
2304
+ "component": "Stack",
2305
+ "props": {
2306
+ "direction": {
2307
+ "base": "vertical",
2308
+ "md": "horizontal"
2309
+ },
2310
+ "gap": "md",
2311
+ "align": {
2312
+ "base": "stretch",
2313
+ "md": "center"
2314
+ }
2315
+ },
2316
+ "style": {
2317
+ "padding": "$spacing.md"
2318
+ },
2319
+ "children": [
2320
+ {
2321
+ "id": "resp-main-text",
2322
+ "component": "Text",
2323
+ "props": {
2324
+ "text": "The column hides below md; this stack turns into a row at md.",
2325
+ "variant": "body"
2326
+ }
2327
+ },
2328
+ {
2329
+ "id": "resp-only-wide",
2330
+ "component": "Badge",
2331
+ "props": {
2332
+ "text": "Wide",
2333
+ "variant": "secondary"
2334
+ },
2335
+ "style": {
2336
+ "display": "none",
2337
+ "@media (min-width: $breakpoint.md)": {
2338
+ "display": "flex"
2339
+ }
2340
+ }
2341
+ },
2342
+ {
2343
+ "id": "resp-only-narrow",
2344
+ "component": "Badge",
2345
+ "props": {
2346
+ "text": "Narrow",
2347
+ "variant": "outline"
2348
+ },
2349
+ "style": {
2350
+ "@media (min-width: $breakpoint.md)": {
2351
+ "display": "none"
2352
+ }
2353
+ }
2354
+ }
2355
+ ]
2356
+ }
2357
+ ]
2358
+ },
2359
+ {
2360
+ "id": "resp-states",
2361
+ "component": "Box",
2362
+ "props": {
2363
+ "pressable": true
2364
+ },
2365
+ "style": {
2366
+ "display": "flex",
2367
+ "flexDirection": "row",
2368
+ "alignItems": "center",
2369
+ "gap": "$spacing.sm",
2370
+ "padding": "$spacing.md",
2371
+ "borderRadius": "$radius.md",
2372
+ "borderWidth": "$border.hairline",
2373
+ "borderColor": "$color.border",
2374
+ "transition": "$motion.fast",
2375
+ "transitionEasing": "$ease.standard",
2376
+ "@media (max-width: $breakpoint.sm)": {
2377
+ "flexDirection": "column",
2378
+ "alignItems": "flex-start"
2379
+ },
2380
+ "@media (orientation: portrait)": {
2381
+ "paddingVertical": "$spacing.lg"
2382
+ },
2383
+ "@media (hover: none)": {
2384
+ "minHeight": 44
2385
+ },
2386
+ "@media (prefers-reduced-motion: reduce)": {
2387
+ "transform": "scale(1)"
2388
+ },
2389
+ ":hover": {
2390
+ "backgroundColor": "$color.accent"
2391
+ },
2392
+ ":focus-visible": {
2393
+ "borderColor": "$color.ring"
2394
+ },
2395
+ ":pressed": {
2396
+ "transform": "scale(0.98)"
2397
+ }
2398
+ },
2399
+ "on": {
2400
+ "press": {
2401
+ "event": {
2402
+ "name": "tapCard"
2403
+ }
2404
+ }
2405
+ },
2406
+ "children": [
2407
+ {
2408
+ "id": "resp-states-icon",
2409
+ "component": "Icon",
2410
+ "props": {
2411
+ "name": "ui-info",
2412
+ "tone": "info"
2413
+ }
2414
+ },
2415
+ {
2416
+ "id": "resp-states-text",
2417
+ "component": "Text",
2418
+ "props": {
2419
+ "text": "Hover, keyboard focus and press restyle this box; it stacks below sm.",
2420
+ "variant": "body"
2421
+ }
2422
+ }
2423
+ ]
2424
+ },
2425
+ {
2426
+ "id": "resp-drawer",
2427
+ "component": "Drawer",
2428
+ "props": {
2429
+ "title": "Filters",
2430
+ "side": {
2431
+ "base": "bottom",
2432
+ "md": "right"
2433
+ },
2434
+ "open": {
2435
+ "path": "/ui/filtersOpen"
2436
+ },
2437
+ "dragToDismiss": true
2438
+ },
2439
+ "slots": {
2440
+ "trigger": {
2441
+ "id": "resp-drawer-trigger",
2442
+ "component": "Button",
2443
+ "props": {
2444
+ "label": "Filters",
2445
+ "icon": "ui-properties",
2446
+ "variant": "outline"
2447
+ }
2448
+ }
2449
+ },
2450
+ "children": [
2451
+ {
2452
+ "id": "resp-drawer-body",
2453
+ "component": "Text",
2454
+ "props": {
2455
+ "text": "A bottom sheet on phones, a side panel from md.",
2456
+ "variant": "body"
2457
+ }
2458
+ }
2459
+ ]
2460
+ },
2461
+ {
2462
+ "id": "resp-scroll",
2463
+ "component": "ScrollArea",
2464
+ "props": {
2465
+ "direction": "horizontal"
2466
+ },
2467
+ "children": [
2468
+ {
2469
+ "id": "resp-chip-0",
2470
+ "component": "Chip",
2471
+ "props": {
2472
+ "label": "Bug"
2473
+ },
2474
+ "style": {
2475
+ "flexShrink": 0
2476
+ }
2477
+ },
2478
+ {
2479
+ "id": "resp-chip-1",
2480
+ "component": "Chip",
2481
+ "props": {
2482
+ "label": "iOS"
2483
+ },
2484
+ "style": {
2485
+ "flexShrink": 0
2486
+ }
2487
+ },
2488
+ {
2489
+ "id": "resp-chip-2",
2490
+ "component": "Chip",
2491
+ "props": {
2492
+ "label": "Android"
2493
+ },
2494
+ "style": {
2495
+ "flexShrink": 0
2496
+ }
2497
+ },
2498
+ {
2499
+ "id": "resp-chip-3",
2500
+ "component": "Chip",
2501
+ "props": {
2502
+ "label": "Desktop"
2503
+ },
2504
+ "style": {
2505
+ "flexShrink": 0
2506
+ }
2507
+ },
2508
+ {
2509
+ "id": "resp-chip-4",
2510
+ "component": "Chip",
2511
+ "props": {
2512
+ "label": "Web"
2513
+ },
2514
+ "style": {
2515
+ "flexShrink": 0
2516
+ }
2517
+ },
2518
+ {
2519
+ "id": "resp-chip-5",
2520
+ "component": "Chip",
2521
+ "props": {
2522
+ "label": "Infra"
2523
+ },
2524
+ "style": {
2525
+ "flexShrink": 0
2526
+ }
2527
+ },
2528
+ {
2529
+ "id": "resp-chip-6",
2530
+ "component": "Chip",
2531
+ "props": {
2532
+ "label": "Docs"
2533
+ },
2534
+ "style": {
2535
+ "flexShrink": 0
2536
+ }
2537
+ }
2538
+ ]
2539
+ }
2540
+ ]
2541
+ },
2542
+ {
2543
+ "id": "new-form",
2544
+ "component": "Form",
2545
+ "props": {
2546
+ "name": "settings",
2547
+ "summary": true,
2548
+ "busy": {
2549
+ "path": "/ui/saving"
2550
+ }
2551
+ },
2552
+ "on": {
2553
+ "submit": {
2554
+ "event": {
2555
+ "name": "saveSettings"
2556
+ }
2557
+ },
2558
+ "invalid": {
2559
+ "event": {
2560
+ "name": "invalidSettings"
2561
+ }
2562
+ }
2563
+ },
2564
+ "children": [
2565
+ {
2566
+ "id": "nf-label",
2567
+ "component": "Label",
2568
+ "props": {
2569
+ "text": "Seats",
2570
+ "for": "nf-seats",
2571
+ "required": true
2572
+ }
2573
+ },
2574
+ {
2575
+ "id": "nf-seats",
2576
+ "component": "NumberField",
2577
+ "props": {
2578
+ "label": "Seats",
2579
+ "name": "seats",
2580
+ "value": {
2581
+ "path": "/form/seats"
2582
+ },
2583
+ "min": 1,
2584
+ "max": 50,
2585
+ "unit": "seats",
2586
+ "checks": [
2587
+ {
2588
+ "condition": {
2589
+ "call": "numeric",
2590
+ "args": {
2591
+ "value": {
2592
+ "path": "/form/seats"
2593
+ },
2594
+ "min": 1,
2595
+ "max": 50
2596
+ }
2597
+ },
2598
+ "message": "Between 1 and 50"
2599
+ }
2600
+ ]
2601
+ }
2602
+ },
2603
+ {
2604
+ "id": "nf-stack",
2605
+ "component": "Grid",
2606
+ "props": {
2607
+ "columns": {
2608
+ "base": 1,
2609
+ "md": 2
2610
+ },
2611
+ "gap": "md"
2612
+ },
2613
+ "children": [
2614
+ {
2615
+ "id": "nf-time",
2616
+ "component": "TimePicker",
2617
+ "props": {
2618
+ "label": "Daily digest",
2619
+ "name": "digestAt",
2620
+ "value": {
2621
+ "path": "/form/digestAt"
2622
+ },
2623
+ "step": 30
2624
+ }
2625
+ },
2626
+ {
2627
+ "id": "nf-range",
2628
+ "component": "DateRangePicker",
2629
+ "props": {
2630
+ "label": "Sprint",
2631
+ "name": "sprint",
2632
+ "start": "2026-10-07",
2633
+ "end": "2026-10-21"
2634
+ }
2635
+ }
2636
+ ]
2637
+ },
2638
+ {
2639
+ "id": "nf-labels",
2640
+ "component": "ChipInput",
2641
+ "props": {
2642
+ "label": "Labels",
2643
+ "name": "labels",
2644
+ "values": {
2645
+ "path": "/form/labels"
2646
+ },
2647
+ "suggestions": [
2648
+ {
2649
+ "label": "bug",
2650
+ "value": "bug"
2651
+ },
2652
+ {
2653
+ "label": "ios",
2654
+ "value": "ios"
2655
+ },
2656
+ {
2657
+ "label": "design",
2658
+ "value": "design"
2659
+ }
2660
+ ],
2661
+ "max": 5
2662
+ }
2663
+ },
2664
+ {
2665
+ "id": "nf-files",
2666
+ "component": "FileUpload",
2667
+ "props": {
2668
+ "label": "Attachments",
2669
+ "name": "files",
2670
+ "accept": "image/*,.pdf",
2671
+ "multiple": true,
2672
+ "maxSize": 10485760,
2673
+ "files": [
2674
+ {
2675
+ "name": "screenshot.png",
2676
+ "size": 48213,
2677
+ "type": "image/png"
2678
+ }
2679
+ ],
2680
+ "hint": "PNG, JPG or PDF up to 10 MB"
2681
+ },
2682
+ "on": {
2683
+ "upload": {
2684
+ "event": {
2685
+ "name": "upload"
2686
+ }
2687
+ },
2688
+ "remove": {
2689
+ "event": {
2690
+ "name": "removeFile"
2691
+ }
2692
+ }
2693
+ }
2694
+ },
2695
+ {
2696
+ "id": "nf-rating",
2697
+ "component": "Rating",
2698
+ "props": {
2699
+ "value": {
2700
+ "path": "/form/rating"
2701
+ },
2702
+ "max": 5
2703
+ }
2704
+ },
2705
+ {
2706
+ "id": "nf-keys",
2707
+ "component": "Stack",
2708
+ "props": {
2709
+ "direction": "horizontal",
2710
+ "align": "center",
2711
+ "gap": "xs"
2712
+ },
2713
+ "children": [
2714
+ {
2715
+ "id": "nf-keys-text",
2716
+ "component": "Text",
2717
+ "props": {
2718
+ "text": "Save with",
2719
+ "variant": "muted"
2720
+ }
2721
+ },
2722
+ {
2723
+ "id": "nf-kbd",
2724
+ "component": "Kbd",
2725
+ "props": {
2726
+ "keys": "⌘S"
2727
+ }
2728
+ }
2729
+ ]
2730
+ },
2731
+ {
2732
+ "id": "nf-submit",
2733
+ "component": "Button",
2734
+ "props": {
2735
+ "label": "Save",
2736
+ "submit": true
2737
+ }
2738
+ }
2739
+ ]
2740
+ },
2741
+ {
2742
+ "id": "code",
2743
+ "component": "CodeBlock",
2744
+ "props": {
2745
+ "code": "// the answer\nconst answer: number = 42\nexport function ask(q: string) {\n return `${q}? ${answer}`\n}",
2746
+ "language": "ts",
2747
+ "title": "answer.ts",
2748
+ "lineNumbers": true,
2749
+ "highlight": [
2750
+ 2
2751
+ ]
2752
+ }
2753
+ },
2754
+ {
2755
+ "id": "trace",
2756
+ "component": "Trace",
2757
+ "props": {
2758
+ "size": "sm"
2759
+ },
2760
+ "children": [
2761
+ {
2762
+ "id": "trace-think",
2763
+ "component": "TraceItem",
2764
+ "props": {
2765
+ "title": "Thought for 5s",
2766
+ "icon": "trace-reasoning",
2767
+ "size": "sm"
2768
+ }
2769
+ },
2770
+ {
2771
+ "id": "trace-run",
2772
+ "component": "TraceItem",
2773
+ "props": {
2774
+ "title": "Ran bun test",
2775
+ "icon": "trace-terminal",
2776
+ "size": "sm",
2777
+ "collapsible": true,
2778
+ "open": true,
2779
+ "status": "error"
2780
+ },
2781
+ "children": [
2782
+ {
2783
+ "id": "trace-out",
2784
+ "component": "CodeBlock",
2785
+ "props": {
2786
+ "code": "\u001b[32m(pass)\u001b[0m Store > put\n\u001b[31m(fail)\u001b[0m Store > get\n\n 1 pass\n 1 fail",
2787
+ "language": "ansi",
2788
+ "title": "Output",
2789
+ "size": "sm",
2790
+ "variant": "destructive"
2791
+ }
2792
+ }
2793
+ ]
2794
+ },
2795
+ {
2796
+ "id": "trace-edit",
2797
+ "component": "TraceItem",
2798
+ "props": {
2799
+ "title": "Editing src/store.ts",
2800
+ "icon": "trace-edit",
2801
+ "size": "sm",
2802
+ "status": "running"
2803
+ }
2804
+ },
2805
+ {
2806
+ "id": "trace-next",
2807
+ "component": "TraceItem",
2808
+ "props": {
2809
+ "title": "Run the suite again",
2810
+ "icon": "trace-terminal",
2811
+ "size": "sm",
2812
+ "status": "pending"
2813
+ }
2814
+ }
2815
+ ]
2816
+ },
2817
+ {
2818
+ "id": "composer",
2819
+ "component": "Composer",
2820
+ "props": {
2821
+ "placeholder": "Ask anything",
2822
+ "attachments": true,
2823
+ "submitLabel": "Send"
2824
+ },
2825
+ "on": {
2826
+ "submit": {
2827
+ "event": {
2828
+ "name": "ask"
2829
+ }
2830
+ }
2831
+ }
2832
+ },
2833
+ {
2834
+ "id": "tab-bar",
2835
+ "component": "Segmented",
2836
+ "props": {
2837
+ "items": [
2838
+ {
2839
+ "label": "Inbox",
2840
+ "value": "inbox",
2841
+ "icon": "nav-inbox"
2842
+ },
2843
+ {
2844
+ "label": "Issues",
2845
+ "value": "issues",
2846
+ "icon": "nav-issues"
2847
+ },
2848
+ {
2849
+ "label": "Settings",
2850
+ "value": "settings",
2851
+ "icon": "nav-settings"
2852
+ }
2853
+ ],
2854
+ "value": {
2855
+ "path": "/ui/tab"
2856
+ },
2857
+ "variant": "bar",
2858
+ "fill": true
2859
+ },
2860
+ "on": {
2861
+ "change": {
2862
+ "event": {
2863
+ "name": "tab"
2864
+ }
2865
+ }
2866
+ }
2867
+ },
2868
+ {
2869
+ "id": "panels",
2870
+ "component": "Resizable",
2871
+ "props": {
2872
+ "direction": {
2873
+ "base": "vertical",
2874
+ "md": "horizontal"
2875
+ },
2876
+ "sizes": [
2877
+ 40,
2878
+ 60
2879
+ ],
2880
+ "panels": [
2881
+ {
2882
+ "min": 20
2883
+ },
2884
+ {
2885
+ "min": 30,
2886
+ "collapsible": true
2887
+ }
2888
+ ],
2889
+ "handle": true
2890
+ },
2891
+ "style": {
2892
+ "height": 160
2893
+ },
2894
+ "children": [
2895
+ {
2896
+ "id": "panels-nav",
2897
+ "component": "Text",
2898
+ "props": {
2899
+ "text": "Boards",
2900
+ "variant": "label"
2901
+ },
2902
+ "style": {
2903
+ "padding": "$spacing.md"
2904
+ }
2905
+ },
2906
+ {
2907
+ "id": "panels-main",
2908
+ "component": "Text",
2909
+ "props": {
2910
+ "text": "Drag the handle; arrow keys move it by 10.",
2911
+ "variant": "muted"
2912
+ },
2913
+ "style": {
2914
+ "padding": "$spacing.md"
2915
+ }
2916
+ }
2917
+ ]
2918
+ },
2919
+ {
2920
+ "id": "search-list",
2921
+ "component": "SearchList",
2922
+ "props": {
2923
+ "placeholder": "Search issues",
2924
+ "value": "exp-12",
2925
+ "items": [
2926
+ {
2927
+ "label": "Ship the search list",
2928
+ "value": "exp-12",
2929
+ "identifier": "EXP-12",
2930
+ "icon": "status-in-progress"
2931
+ },
2932
+ {
2933
+ "label": "Spinner sizes",
2934
+ "value": "exp-14",
2935
+ "identifier": "EXP-14",
2936
+ "icon": "status-backlog"
2937
+ },
2938
+ {
2939
+ "label": "Close tabs on hover",
2940
+ "value": "exp-15",
2941
+ "identifier": "EXP-15",
2942
+ "icon": "status-done"
2943
+ }
2944
+ ]
2945
+ }
2946
+ },
2947
+ {
2948
+ "id": "macros-demo",
2949
+ "component": "Card",
2950
+ "props": {
2951
+ "title": "Layout macros"
2952
+ },
2953
+ "children": [
2954
+ {
2955
+ "id": "macros-page",
2956
+ "component": "Page",
2957
+ "props": {
2958
+ "title": "Settings",
2959
+ "subtitle": "Acme",
2960
+ "back": true
2961
+ },
2962
+ "style": {
2963
+ "height": 200
2964
+ },
2965
+ "slots": {
2966
+ "trailing": {
2967
+ "id": "macros-page-more",
2968
+ "component": "Button",
2969
+ "props": {
2970
+ "icon": "ui-more",
2971
+ "label": "More",
2972
+ "variant": "ghost",
2973
+ "size": "icon"
2974
+ }
2975
+ }
2976
+ },
2977
+ "children": [
2978
+ {
2979
+ "id": "macros-toolbar",
2980
+ "component": "Toolbar",
2981
+ "children": [
2982
+ {
2983
+ "id": "macros-search",
2984
+ "component": "Input",
2985
+ "props": {
2986
+ "name": "q",
2987
+ "label": "Search",
2988
+ "type": "search",
2989
+ "placeholder": "Search"
2990
+ },
2991
+ "style": {
2992
+ "width": 240
2993
+ }
2994
+ },
2995
+ {
2996
+ "id": "macros-filter",
2997
+ "component": "Button",
2998
+ "props": {
2999
+ "label": "Filter",
3000
+ "variant": "outline"
3001
+ }
3002
+ }
3003
+ ],
3004
+ "slots": {
3005
+ "trailing": {
3006
+ "id": "macros-new",
3007
+ "component": "Button",
3008
+ "props": {
3009
+ "label": "New issue",
3010
+ "variant": "default"
3011
+ }
3012
+ }
3013
+ }
3014
+ },
3015
+ {
3016
+ "id": "macros-fields",
3017
+ "component": "FieldGroup",
3018
+ "children": [
3019
+ {
3020
+ "id": "starts",
3021
+ "component": "Input",
3022
+ "props": {
3023
+ "label": "Starts",
3024
+ "name": "starts",
3025
+ "value": "09:00"
3026
+ }
3027
+ },
3028
+ {
3029
+ "id": "ends",
3030
+ "component": "Input",
3031
+ "props": {
3032
+ "label": "Ends",
3033
+ "name": "ends",
3034
+ "value": "10:00"
3035
+ }
3036
+ }
3037
+ ]
3038
+ },
3039
+ {
3040
+ "id": "macros-actions",
3041
+ "component": "FormActions",
3042
+ "props": {
3043
+ "submit": "Save",
3044
+ "cancel": true
3045
+ }
3046
+ }
3047
+ ]
3048
+ },
3049
+ {
3050
+ "id": "macros-split",
3051
+ "component": "SplitView",
3052
+ "props": {
3053
+ "open": {
3054
+ "path": "/ui/splitOpen"
3055
+ },
3056
+ "width": 200
3057
+ },
3058
+ "style": {
3059
+ "height": 160
3060
+ },
3061
+ "slots": {
3062
+ "list": {
3063
+ "id": "macros-split-list",
3064
+ "component": "List",
3065
+ "children": [
3066
+ {
3067
+ "id": "macros-split-r1",
3068
+ "component": "Row",
3069
+ "props": {
3070
+ "title": "Inbox",
3071
+ "selected": true,
3072
+ "pressable": true
3073
+ }
3074
+ },
3075
+ {
3076
+ "id": "macros-split-r2",
3077
+ "component": "Row",
3078
+ "props": {
3079
+ "title": "Drafts",
3080
+ "pressable": true
3081
+ }
3082
+ }
3083
+ ]
3084
+ }
3085
+ },
3086
+ "children": [
3087
+ {
3088
+ "id": "macros-split-detail",
3089
+ "component": "Text",
3090
+ "props": {
3091
+ "text": "The open item."
3092
+ }
3093
+ }
3094
+ ]
3095
+ },
3096
+ {
3097
+ "id": "macros-tiles",
3098
+ "component": "Grid",
3099
+ "props": {
3100
+ "columns": {
3101
+ "base": 1,
3102
+ "md": 2
3103
+ },
3104
+ "gap": "md"
3105
+ },
3106
+ "children": [
3107
+ {
3108
+ "id": "macros-tile-1",
3109
+ "component": "StatTile",
3110
+ "props": {
3111
+ "label": "Active users",
3112
+ "value": "1,284",
3113
+ "delta": "+12 %",
3114
+ "tone": "success",
3115
+ "trend": [
3116
+ 3,
3117
+ 4,
3118
+ 3,
3119
+ 5,
3120
+ 6,
3121
+ 8
3122
+ ]
3123
+ }
3124
+ },
3125
+ {
3126
+ "id": "macros-tile-2",
3127
+ "component": "StatTile",
3128
+ "props": {
3129
+ "label": "Error rate",
3130
+ "value": "0.04 %",
3131
+ "delta": "-0.01",
3132
+ "tone": "danger"
3133
+ }
3134
+ }
3135
+ ]
3136
+ }
3137
+ ]
3138
+ }
3139
+ ]
3140
+ }