@exponential-at/ui 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +54 -0
  3. package/README.md +360 -2
  4. package/catalog/a11y.json +668 -0
  5. package/catalog/basic-map.json +104 -0
  6. package/catalog/code.json +58 -0
  7. package/catalog/core.catalog.json +4752 -0
  8. package/catalog/core.schema.json +22667 -0
  9. package/catalog/host.json +64 -0
  10. package/catalog/layout.json +20 -0
  11. package/catalog/limits.json +9 -0
  12. package/catalog/locale.json +48 -0
  13. package/catalog/macros.json +3417 -0
  14. package/catalog/recipes.json +61 -0
  15. package/catalog/strings.json +72 -0
  16. package/catalog/style.json +128 -0
  17. package/catalog/theme.schema.json +42543 -0
  18. package/catalog/tokens.json +47 -0
  19. package/conformance/README.md +217 -0
  20. package/conformance/baseline.ts +101 -0
  21. package/conformance/browser-page.ts +146 -0
  22. package/conformance/browser-suites.ts +683 -0
  23. package/conformance/compare.ts +201 -0
  24. package/conformance/dom.ts +96 -0
  25. package/conformance/dump.ts +163 -0
  26. package/conformance/fonts.json +154 -0
  27. package/conformance/manifest.json +224 -0
  28. package/conformance/parity-compare.ts +191 -0
  29. package/conformance/parity-report.schema.json +73 -0
  30. package/conformance/parity.ts +412 -0
  31. package/conformance/pixel.ts +177 -0
  32. package/conformance/primitives-page.ts +49 -0
  33. package/conformance/report.schema.json +66 -0
  34. package/conformance/run.ts +118 -0
  35. package/dist/chunks/index-98npjvsd.js +3940 -0
  36. package/dist/chunks/index-98npjvsd.js.map +27 -0
  37. package/dist/chunks/index-gwkt14w3.js +7314 -0
  38. package/dist/chunks/index-gwkt14w3.js.map +10 -0
  39. package/dist/chunks/index-njt7yzzm.js +134 -0
  40. package/dist/chunks/index-njt7yzzm.js.map +9 -0
  41. package/dist/chunks/index-we7va6v6.js +7984 -0
  42. package/dist/chunks/index-we7va6v6.js.map +15 -0
  43. package/dist/chunks/index-xrm6f7wc.js +2563 -0
  44. package/dist/chunks/index-xrm6f7wc.js.map +10 -0
  45. package/dist/conformance.js +182749 -0
  46. package/dist/conformance.js.map +10 -0
  47. package/dist/entries/prompt.js +251 -0
  48. package/dist/entries/prompt.js.map +11 -0
  49. package/dist/entries/schema.js +1725 -0
  50. package/dist/entries/schema.js.map +11 -0
  51. package/dist/host/index.js +122 -0
  52. package/dist/host/index.js.map +9 -0
  53. package/dist/index.js +3213 -0
  54. package/dist/index.js.map +27 -0
  55. package/dist/types/src/a11y.d.ts +21 -0
  56. package/dist/types/src/animation.d.ts +76 -0
  57. package/dist/types/src/basic-map.d.ts +38 -0
  58. package/dist/types/src/builder.d.ts +50 -0
  59. package/dist/types/src/catalog.d.ts +54 -0
  60. package/dist/types/src/catalog.described.d.ts +33 -0
  61. package/dist/types/src/catalog.generated.d.ts +829 -0
  62. package/dist/types/src/chart.d.ts +46 -0
  63. package/dist/types/src/code.d.ts +44 -0
  64. package/dist/types/src/color.d.ts +20 -0
  65. package/dist/types/src/conformance.d.ts +39 -0
  66. package/dist/types/src/connector/app.d.ts +14 -0
  67. package/dist/types/src/connector/connector.d.ts +77 -0
  68. package/dist/types/src/connector/index.d.ts +4 -0
  69. package/dist/types/src/css.d.ts +29 -0
  70. package/dist/types/src/define.d.ts +66 -0
  71. package/dist/types/src/direction.d.ts +16 -0
  72. package/dist/types/src/dynamic.d.ts +159 -0
  73. package/dist/types/src/entries/prompt.d.ts +11 -0
  74. package/dist/types/src/entries/schema.d.ts +8 -0
  75. package/dist/types/src/expr.d.ts +71 -0
  76. package/dist/types/src/extension.d.ts +4 -0
  77. package/dist/types/src/format.d.ts +112 -0
  78. package/dist/types/src/geometry.d.ts +40 -0
  79. package/dist/types/src/host/contract.d.ts +188 -0
  80. package/dist/types/src/host/decoders.d.ts +61 -0
  81. package/dist/types/src/host/index.d.ts +11 -0
  82. package/dist/types/src/host/package.d.ts +58 -0
  83. package/dist/types/src/host/policy.d.ts +105 -0
  84. package/dist/types/src/host/router.d.ts +34 -0
  85. package/dist/types/src/host/runtime.d.ts +205 -0
  86. package/dist/types/src/host/sources.d.ts +15 -0
  87. package/dist/types/src/host/transports.d.ts +109 -0
  88. package/dist/types/src/index.d.ts +63 -0
  89. package/dist/types/src/layout.d.ts +20 -0
  90. package/dist/types/src/limits.d.ts +21 -0
  91. package/dist/types/src/list.d.ts +133 -0
  92. package/dist/types/src/locale.d.ts +22 -0
  93. package/dist/types/src/macros.d.ts +29 -0
  94. package/dist/types/src/overlay.d.ts +27 -0
  95. package/dist/types/src/prompt.d.ts +44 -0
  96. package/dist/types/src/recipes.d.ts +17 -0
  97. package/dist/types/src/reducer.d.ts +41 -0
  98. package/dist/types/src/resizable.d.ts +38 -0
  99. package/dist/types/src/schema.d.ts +7 -0
  100. package/dist/types/src/strings.d.ts +13 -0
  101. package/dist/types/src/style.d.ts +201 -0
  102. package/dist/types/src/test-preload.d.ts +1 -0
  103. package/dist/types/src/text-shimmer.d.ts +24 -0
  104. package/dist/types/src/theme-types.d.ts +162 -0
  105. package/dist/types/src/theme.d.ts +73 -0
  106. package/dist/types/src/themes.d.ts +22 -0
  107. package/dist/types/src/tree-guides.d.ts +17 -0
  108. package/dist/types/src/types.d.ts +314 -0
  109. package/dist/types/src/validate.d.ts +31 -0
  110. package/dist/types/src/web/base-css.d.ts +1 -0
  111. package/dist/types/src/web/box-css.d.ts +55 -0
  112. package/dist/types/src/web/coerce.d.ts +32 -0
  113. package/dist/types/src/web/data.d.ts +105 -0
  114. package/dist/types/src/web/dates.d.ts +12 -0
  115. package/dist/types/src/web/form.d.ts +44 -0
  116. package/dist/types/src/web/host-types.d.ts +119 -0
  117. package/dist/types/src/web/index.d.ts +28 -0
  118. package/dist/types/src/web/inputs.d.ts +55 -0
  119. package/dist/types/src/web/list.d.ts +13 -0
  120. package/dist/types/src/web/listbox.d.ts +14 -0
  121. package/dist/types/src/web/markdown.d.ts +96 -0
  122. package/dist/types/src/web/media.d.ts +62 -0
  123. package/dist/types/src/web/parts.d.ts +4 -0
  124. package/dist/types/src/web/primitives/alert-dialog.d.ts +10 -0
  125. package/dist/types/src/web/primitives/alert.d.ts +9 -0
  126. package/dist/types/src/web/primitives/avatar-color.d.ts +2 -0
  127. package/dist/types/src/web/primitives/avatar.d.ts +13 -0
  128. package/dist/types/src/web/primitives/badge.d.ts +10 -0
  129. package/dist/types/src/web/primitives/breadcrumb.d.ts +10 -0
  130. package/dist/types/src/web/primitives/button.d.ts +6 -0
  131. package/dist/types/src/web/primitives/calendar.d.ts +43 -0
  132. package/dist/types/src/web/primitives/card.d.ts +9 -0
  133. package/dist/types/src/web/primitives/checkbox.d.ts +5 -0
  134. package/dist/types/src/web/primitives/choice-tiles.d.ts +32 -0
  135. package/dist/types/src/web/primitives/cn.d.ts +3 -0
  136. package/dist/types/src/web/primitives/code-block.d.ts +24 -0
  137. package/dist/types/src/web/primitives/command.d.ts +134 -0
  138. package/dist/types/src/web/primitives/context-ring.d.ts +24 -0
  139. package/dist/types/src/web/primitives/dialog-arms.d.ts +6 -0
  140. package/dist/types/src/web/primitives/dialog.d.ts +24 -0
  141. package/dist/types/src/web/primitives/disclosure-header.d.ts +5 -0
  142. package/dist/types/src/web/primitives/dock.d.ts +42 -0
  143. package/dist/types/src/web/primitives/dropdown-menu.d.ts +14 -0
  144. package/dist/types/src/web/primitives/empty-state.d.ts +15 -0
  145. package/dist/types/src/web/primitives/glass-card.d.ts +4 -0
  146. package/dist/types/src/web/primitives/hover-card.d.ts +7 -0
  147. package/dist/types/src/web/primitives/icon-disc.d.ts +12 -0
  148. package/dist/types/src/web/primitives/index.d.ts +48 -0
  149. package/dist/types/src/web/primitives/input.d.ts +5 -0
  150. package/dist/types/src/web/primitives/kbd.d.ts +4 -0
  151. package/dist/types/src/web/primitives/label.d.ts +3 -0
  152. package/dist/types/src/web/primitives/menu-surface.d.ts +17 -0
  153. package/dist/types/src/web/primitives/meter.d.ts +21 -0
  154. package/dist/types/src/web/primitives/popover.d.ts +3 -0
  155. package/dist/types/src/web/primitives/progress-ring.d.ts +5 -0
  156. package/dist/types/src/web/primitives/progress.d.ts +8 -0
  157. package/dist/types/src/web/primitives/scroll-area.d.ts +49 -0
  158. package/dist/types/src/web/primitives/segmented-control.d.ts +5 -0
  159. package/dist/types/src/web/primitives/select.d.ts +47 -0
  160. package/dist/types/src/web/primitives/separator.d.ts +3 -0
  161. package/dist/types/src/web/primitives/sheet-chrome.d.ts +4 -0
  162. package/dist/types/src/web/primitives/sheet.d.ts +20 -0
  163. package/dist/types/src/web/primitives/skeleton.d.ts +3 -0
  164. package/dist/types/src/web/primitives/spinner.d.ts +3 -0
  165. package/dist/types/src/web/primitives/switch.d.ts +4 -0
  166. package/dist/types/src/web/primitives/table.d.ts +11 -0
  167. package/dist/types/src/web/primitives/tabs.d.ts +13 -0
  168. package/dist/types/src/web/primitives/textarea.d.ts +3 -0
  169. package/dist/types/src/web/primitives/toast.d.ts +163 -0
  170. package/dist/types/src/web/primitives/tooltip.d.ts +3 -0
  171. package/dist/types/src/web/primitives/truncate.d.ts +7 -0
  172. package/dist/types/src/web/primitives/typeahead-portal.d.ts +12 -0
  173. package/dist/types/src/web/share.d.ts +6 -0
  174. package/dist/types/src/web/table.d.ts +20 -0
  175. package/dist/types/src/web/theme-css.d.ts +69 -0
  176. package/dist/types/src/web/urls.d.ts +21 -0
  177. package/dist/web/index.js +2303 -0
  178. package/dist/web/index.js.map +26 -0
  179. package/dist/web/primitives/index.js +1450 -0
  180. package/dist/web/primitives/index.js.map +57 -0
  181. package/docs/components.generated.json +6238 -0
  182. package/docs/round-1-contract.md +679 -0
  183. package/docs/round-2-contract.md +476 -0
  184. package/docs/round-3-contract.md +174 -0
  185. package/docs/themes.generated.json +3503 -0
  186. package/fixtures/animations.json +2890 -0
  187. package/fixtures/bench-list.json +58 -0
  188. package/fixtures/bind-time.json +30664 -0
  189. package/fixtures/catalog-basic-map.json +1692 -0
  190. package/fixtures/catalog-components.json +9323 -0
  191. package/fixtures/catalog-extension.json +620 -0
  192. package/fixtures/catalog-macros.json +36370 -0
  193. package/fixtures/code-tokens.json +1993 -0
  194. package/fixtures/conformance-baseline.json +55544 -0
  195. package/fixtures/conformance-cases.json +49 -0
  196. package/fixtures/conformance-known.json +2123 -0
  197. package/fixtures/control-geometry.json +4200 -0
  198. package/fixtures/dashboard.data.json +74 -0
  199. package/fixtures/dashboard.json +752 -0
  200. package/fixtures/demo-surface.json +47 -0
  201. package/fixtures/format.json +870 -0
  202. package/fixtures/host-policy.json +1067 -0
  203. package/fixtures/host-router.json +1152 -0
  204. package/fixtures/host-transport.json +590 -0
  205. package/fixtures/interactions-round1.json +773 -0
  206. package/fixtures/kitchen-sink.expanded.json +10844 -0
  207. package/fixtures/kitchen-sink.json +3049 -0
  208. package/fixtures/layout-geometry-round1.json +7278 -0
  209. package/fixtures/layout-geometry.json +2072 -0
  210. package/fixtures/overlay-geometry.json +272 -0
  211. package/fixtures/primitive-specimens.json +58 -0
  212. package/fixtures/prompt-budget.json +33 -0
  213. package/fixtures/resizable.json +714 -0
  214. package/fixtures/round4-contract.json +2985 -0
  215. package/fixtures/specimens.json +9832 -0
  216. package/fixtures/style-conditions.json +336 -0
  217. package/fixtures/template-items.json +2215 -0
  218. package/fixtures/text-direction.json +309 -0
  219. package/fixtures/text-shimmer.json +96 -0
  220. package/fixtures/theme-extends.json +573 -0
  221. package/fixtures/theme-invalid.json +1296 -0
  222. package/fixtures/theme-recipes.json +58600 -0
  223. package/fixtures/theme-resolved.json +23949 -0
  224. package/fixtures/toast-stack.json +215 -0
  225. package/fixtures/tree-guides.json +224 -0
  226. package/fixtures/virtual-list.json +733 -0
  227. package/generated/ExponentialUICatalog.generated.kt +67 -0
  228. package/generated/ExponentialUICatalog.generated.swift +67 -0
  229. package/generated/ExponentialUIThemes.generated.kt +23 -0
  230. package/generated/ExponentialUIThemes.generated.swift +23 -0
  231. package/generated/catalog.descriptions.generated.rs +6 -0
  232. package/generated/catalog.generated.rs +80 -0
  233. package/generated/catalog.themes.generated.rs +34 -0
  234. package/generated/core.descriptions.json +2505 -0
  235. package/generated/core.runtime.json +3609 -0
  236. package/package.json +87 -4
  237. package/themes/exponential.recipes.json +49 -0
  238. package/themes/exponential.theme.json +755 -0
  239. package/themes/neutral.theme.json +5676 -0
  240. package/themes/orange.theme.json +43 -0
  241. package/themes/playful.theme.json +219 -0
  242. package/vendor/a2ui/LICENSE.txt +203 -0
  243. package/vendor/a2ui/README.md +27 -0
  244. package/vendor/a2ui/v0_9/basic_catalog.json +1387 -0
  245. package/vendor/a2ui/v0_9/basic_catalog_rules.txt +5 -0
  246. package/vendor/a2ui/v0_9/client_capabilities.json +97 -0
  247. package/vendor/a2ui/v0_9/client_to_server.json +104 -0
  248. package/vendor/a2ui/v0_9/common_types.json +315 -0
  249. package/vendor/a2ui/v0_9/server_to_client.json +132 -0
  250. package/vendor/json-render/LICENSE.txt +201 -0
  251. package/vendor/json-render/README.md +13 -0
@@ -0,0 +1,3049 @@
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": "empty",
1175
+ "component": "EmptyState",
1176
+ "props": {
1177
+ "icon": "nav-inbox",
1178
+ "title": "No notifications",
1179
+ "description": "You are all caught up.",
1180
+ "actionLabel": "Refresh"
1181
+ },
1182
+ "on": {
1183
+ "press": {
1184
+ "event": {
1185
+ "name": "refresh"
1186
+ }
1187
+ }
1188
+ }
1189
+ },
1190
+ {
1191
+ "id": "empty-list",
1192
+ "component": "EmptyState",
1193
+ "props": {
1194
+ "icon": "nav-issues",
1195
+ "title": "No issues yet",
1196
+ "size": "list"
1197
+ }
1198
+ },
1199
+ {
1200
+ "id": "table",
1201
+ "component": "Table",
1202
+ "props": {
1203
+ "columns": [
1204
+ {
1205
+ "key": "name",
1206
+ "label": "Name",
1207
+ "sortable": true
1208
+ },
1209
+ {
1210
+ "key": "role",
1211
+ "label": "Role",
1212
+ "type": "badge"
1213
+ },
1214
+ {
1215
+ "key": "runs",
1216
+ "label": "Runs",
1217
+ "type": "number",
1218
+ "align": "end",
1219
+ "sortable": true,
1220
+ "width": 80
1221
+ },
1222
+ {
1223
+ "key": "status",
1224
+ "label": "Status",
1225
+ "type": "slot",
1226
+ "slot": "statusCell"
1227
+ }
1228
+ ],
1229
+ "rows": [
1230
+ {
1231
+ "id": "alice",
1232
+ "name": "Alice",
1233
+ "role": "Owner",
1234
+ "runs": 12,
1235
+ "status": "Online"
1236
+ },
1237
+ {
1238
+ "id": "bob",
1239
+ "name": "Bob",
1240
+ "role": "Member",
1241
+ "runs": 3,
1242
+ "status": "Away"
1243
+ }
1244
+ ],
1245
+ "rowKey": "id",
1246
+ "selectable": "multiple",
1247
+ "selected": {
1248
+ "path": "/ui/selectedMembers"
1249
+ },
1250
+ "sort": {
1251
+ "key": "runs",
1252
+ "direction": "desc"
1253
+ },
1254
+ "caption": "Two members",
1255
+ "striped": true
1256
+ },
1257
+ "slots": {
1258
+ "statusCell": {
1259
+ "id": "table-status",
1260
+ "component": "Chip",
1261
+ "props": {
1262
+ "label": {
1263
+ "path": "status"
1264
+ },
1265
+ "tone": "success"
1266
+ }
1267
+ }
1268
+ },
1269
+ "on": {
1270
+ "sort": {
1271
+ "event": {
1272
+ "name": "sortMembers"
1273
+ }
1274
+ },
1275
+ "select": {
1276
+ "event": {
1277
+ "name": "selectMembers"
1278
+ }
1279
+ }
1280
+ }
1281
+ },
1282
+ {
1283
+ "id": "chart",
1284
+ "component": "Chart",
1285
+ "props": {
1286
+ "kind": "bar",
1287
+ "categories": [
1288
+ "Mon",
1289
+ "Tue",
1290
+ "Wed"
1291
+ ],
1292
+ "series": [
1293
+ {
1294
+ "name": "Runs",
1295
+ "values": [
1296
+ 3,
1297
+ 5,
1298
+ 2
1299
+ ]
1300
+ },
1301
+ {
1302
+ "name": "Merges",
1303
+ "values": [
1304
+ 1,
1305
+ 2,
1306
+ 2
1307
+ ],
1308
+ "tone": "success"
1309
+ }
1310
+ ],
1311
+ "title": "This week",
1312
+ "height": 160
1313
+ }
1314
+ },
1315
+ {
1316
+ "id": "charts-row",
1317
+ "component": "Grid",
1318
+ "props": {
1319
+ "columns": {
1320
+ "base": 1,
1321
+ "md": 2
1322
+ },
1323
+ "gap": "md"
1324
+ },
1325
+ "children": [
1326
+ {
1327
+ "id": "chart-line",
1328
+ "component": "Chart",
1329
+ "props": {
1330
+ "kind": "line",
1331
+ "categories": [
1332
+ "Mon",
1333
+ "Tue",
1334
+ "Wed",
1335
+ "Thu"
1336
+ ],
1337
+ "series": [
1338
+ {
1339
+ "name": "Open",
1340
+ "values": [
1341
+ 4,
1342
+ 6,
1343
+ 5,
1344
+ 8
1345
+ ]
1346
+ },
1347
+ {
1348
+ "name": "Closed",
1349
+ "values": [
1350
+ 2,
1351
+ 3,
1352
+ 6,
1353
+ 7
1354
+ ]
1355
+ }
1356
+ ],
1357
+ "showValues": true,
1358
+ "yLabel": "Issues"
1359
+ }
1360
+ },
1361
+ {
1362
+ "id": "chart-donut",
1363
+ "component": "Chart",
1364
+ "props": {
1365
+ "kind": "donut",
1366
+ "categories": [
1367
+ "Done",
1368
+ "In progress",
1369
+ "Backlog"
1370
+ ],
1371
+ "series": [
1372
+ {
1373
+ "name": "Issues",
1374
+ "values": [
1375
+ 12,
1376
+ 5,
1377
+ 9
1378
+ ]
1379
+ }
1380
+ ],
1381
+ "height": 180
1382
+ }
1383
+ }
1384
+ ]
1385
+ },
1386
+ {
1387
+ "id": "spark-row",
1388
+ "component": "Stack",
1389
+ "props": {
1390
+ "direction": "horizontal",
1391
+ "align": "center",
1392
+ "gap": "sm"
1393
+ },
1394
+ "children": [
1395
+ {
1396
+ "id": "spark-label",
1397
+ "component": "Text",
1398
+ "props": {
1399
+ "text": "Runs this week",
1400
+ "variant": "muted"
1401
+ }
1402
+ },
1403
+ {
1404
+ "id": "sparkline",
1405
+ "component": "Sparkline",
1406
+ "props": {
1407
+ "values": [
1408
+ 1,
1409
+ 3,
1410
+ 2,
1411
+ 5,
1412
+ 4,
1413
+ 6
1414
+ ],
1415
+ "tone": "success"
1416
+ },
1417
+ "style": {
1418
+ "width": 96
1419
+ }
1420
+ },
1421
+ {
1422
+ "id": "progress-bound",
1423
+ "component": "Progress",
1424
+ "props": {
1425
+ "value": {
1426
+ "path": "/ui/upload"
1427
+ },
1428
+ "label": "Upload"
1429
+ },
1430
+ "style": {
1431
+ "flexGrow": 1
1432
+ }
1433
+ }
1434
+ ]
1435
+ }
1436
+ ]
1437
+ },
1438
+ {
1439
+ "id": "rows-demo",
1440
+ "component": "Group",
1441
+ "props": {
1442
+ "title": "Properties",
1443
+ "footer": "Read-only unless you own the board."
1444
+ },
1445
+ "children": [
1446
+ {
1447
+ "id": "prop-assignee",
1448
+ "component": "Row",
1449
+ "props": {
1450
+ "title": "Assignee",
1451
+ "value": "Alex Chen",
1452
+ "icon": "ui-assignee"
1453
+ }
1454
+ },
1455
+ {
1456
+ "id": "pick-status",
1457
+ "component": "Row",
1458
+ "props": {
1459
+ "title": "Status",
1460
+ "value": "In progress",
1461
+ "icon": "settings-statuses",
1462
+ "chevron": "selector",
1463
+ "pressable": true
1464
+ },
1465
+ "on": {
1466
+ "press": {
1467
+ "event": {
1468
+ "name": "pickStatus"
1469
+ }
1470
+ }
1471
+ }
1472
+ },
1473
+ {
1474
+ "id": "pick-label",
1475
+ "component": "Row",
1476
+ "props": {
1477
+ "title": "Labels",
1478
+ "placeholder": "Add a label",
1479
+ "chevron": "selector",
1480
+ "pressable": true
1481
+ }
1482
+ },
1483
+ {
1484
+ "id": "nav-inbox",
1485
+ "component": "Row",
1486
+ "props": {
1487
+ "title": "Inbox",
1488
+ "icon": "nav-inbox",
1489
+ "selected": true,
1490
+ "pressable": true
1491
+ },
1492
+ "slots": {
1493
+ "trailing": {
1494
+ "id": "nav-inbox-count",
1495
+ "component": "Badge",
1496
+ "props": {
1497
+ "text": "3",
1498
+ "variant": "secondary"
1499
+ }
1500
+ }
1501
+ }
1502
+ },
1503
+ {
1504
+ "id": "nav-reviews",
1505
+ "component": "Row",
1506
+ "props": {
1507
+ "title": "Reviews",
1508
+ "icon": "pr-open",
1509
+ "pressable": true
1510
+ }
1511
+ }
1512
+ ]
1513
+ },
1514
+ {
1515
+ "id": "chips-demo",
1516
+ "component": "Stack",
1517
+ "props": {
1518
+ "direction": "horizontal",
1519
+ "wrap": true,
1520
+ "gap": "sm",
1521
+ "align": "center"
1522
+ },
1523
+ "children": [
1524
+ {
1525
+ "id": "card-row",
1526
+ "component": "Row",
1527
+ "props": {
1528
+ "title": "MacBook Pro",
1529
+ "subtitle": "Online · 2 runs",
1530
+ "icon": "ui-device",
1531
+ "meta": "now",
1532
+ "surface": "card",
1533
+ "pressable": true
1534
+ },
1535
+ "style": {
1536
+ "flexBasis": 240,
1537
+ "flexGrow": 1
1538
+ }
1539
+ },
1540
+ {
1541
+ "id": "chip-board",
1542
+ "component": "Chip",
1543
+ "props": {
1544
+ "label": "Sprint 12",
1545
+ "shape": "rect",
1546
+ "icon": "nav-boards",
1547
+ "detail": "APP",
1548
+ "removable": true,
1549
+ "pressable": true
1550
+ },
1551
+ "on": {
1552
+ "press": {
1553
+ "event": {
1554
+ "name": "openBoard"
1555
+ }
1556
+ },
1557
+ "remove": {
1558
+ "event": {
1559
+ "name": "removeBoard"
1560
+ }
1561
+ }
1562
+ }
1563
+ },
1564
+ {
1565
+ "id": "chip-user",
1566
+ "component": "Chip",
1567
+ "props": {
1568
+ "label": "Alex Chen",
1569
+ "shape": "rect",
1570
+ "image": "https://example.com/alex.png",
1571
+ "pressable": true
1572
+ }
1573
+ }
1574
+ ]
1575
+ },
1576
+ {
1577
+ "id": "media-demo",
1578
+ "component": "Card",
1579
+ "props": {
1580
+ "title": "Media"
1581
+ },
1582
+ "children": [
1583
+ {
1584
+ "id": "carousel",
1585
+ "component": "Carousel",
1586
+ "props": {
1587
+ "page": 0,
1588
+ "indicators": true
1589
+ },
1590
+ "children": [
1591
+ {
1592
+ "id": "page-1",
1593
+ "component": "Image",
1594
+ "props": {
1595
+ "src": "https://example.com/1.jpg",
1596
+ "alt": "One",
1597
+ "aspectRatio": 1.7777778
1598
+ }
1599
+ },
1600
+ {
1601
+ "id": "page-2",
1602
+ "component": "Image",
1603
+ "props": {
1604
+ "src": "https://example.com/2.jpg",
1605
+ "alt": "Two",
1606
+ "aspectRatio": 1.7777778
1607
+ }
1608
+ }
1609
+ ]
1610
+ },
1611
+ {
1612
+ "id": "video",
1613
+ "component": "Video",
1614
+ "props": {
1615
+ "src": "https://example.com/clip.mp4",
1616
+ "poster": "https://example.com/clip.jpg",
1617
+ "durationMs": 12000
1618
+ }
1619
+ },
1620
+ {
1621
+ "id": "audio",
1622
+ "component": "AudioPlayer",
1623
+ "props": {
1624
+ "src": "https://example.com/track.mp3",
1625
+ "title": "Episode 12",
1626
+ "durationMs": 1860000
1627
+ }
1628
+ },
1629
+ {
1630
+ "id": "list",
1631
+ "component": "List",
1632
+ "props": {
1633
+ "direction": "vertical",
1634
+ "divided": true
1635
+ },
1636
+ "template": {
1637
+ "component": "list-item",
1638
+ "path": "/posts"
1639
+ },
1640
+ "children": []
1641
+ },
1642
+ {
1643
+ "id": "list-item",
1644
+ "component": "Row",
1645
+ "props": {
1646
+ "title": {
1647
+ "path": "title"
1648
+ },
1649
+ "meta": {
1650
+ "path": "score"
1651
+ }
1652
+ }
1653
+ }
1654
+ ]
1655
+ },
1656
+ {
1657
+ "id": "overlay-demo",
1658
+ "component": "Stack",
1659
+ "props": {
1660
+ "direction": "horizontal",
1661
+ "wrap": true,
1662
+ "gap": "sm"
1663
+ },
1664
+ "children": [
1665
+ {
1666
+ "id": "dialog",
1667
+ "component": "Dialog",
1668
+ "props": {
1669
+ "title": "Delete board?",
1670
+ "description": "This cannot be undone.",
1671
+ "open": {
1672
+ "path": "/ui/confirmOpen"
1673
+ },
1674
+ "dismissible": true
1675
+ },
1676
+ "slots": {
1677
+ "trigger": {
1678
+ "id": "dialog-trigger",
1679
+ "component": "Button",
1680
+ "props": {
1681
+ "label": "Delete",
1682
+ "variant": "destructive"
1683
+ }
1684
+ },
1685
+ "footer": {
1686
+ "id": "dialog-footer",
1687
+ "component": "Button",
1688
+ "props": {
1689
+ "label": "Delete for good",
1690
+ "variant": "destructive"
1691
+ },
1692
+ "on": {
1693
+ "press": {
1694
+ "event": {
1695
+ "name": "deleteBoard"
1696
+ }
1697
+ }
1698
+ }
1699
+ }
1700
+ },
1701
+ "children": [
1702
+ {
1703
+ "id": "dialog-body",
1704
+ "component": "Text",
1705
+ "props": {
1706
+ "text": "Issues move to the trash for 48 hours."
1707
+ }
1708
+ }
1709
+ ]
1710
+ },
1711
+ {
1712
+ "id": "drawer",
1713
+ "component": "Drawer",
1714
+ "props": {
1715
+ "title": "Filters",
1716
+ "side": "bottom",
1717
+ "open": false
1718
+ },
1719
+ "slots": {
1720
+ "trigger": {
1721
+ "id": "drawer-trigger",
1722
+ "component": "Button",
1723
+ "props": {
1724
+ "label": "Filters",
1725
+ "variant": "outline",
1726
+ "icon": "ui-properties"
1727
+ }
1728
+ }
1729
+ },
1730
+ "children": [
1731
+ {
1732
+ "id": "drawer-body",
1733
+ "component": "Checkbox",
1734
+ "props": {
1735
+ "label": "Only mine",
1736
+ "name": "mine"
1737
+ }
1738
+ }
1739
+ ]
1740
+ },
1741
+ {
1742
+ "id": "sheet",
1743
+ "component": "Drawer",
1744
+ "props": {
1745
+ "title": "Details",
1746
+ "side": "bottom",
1747
+ "open": false
1748
+ },
1749
+ "slots": {
1750
+ "trigger": {
1751
+ "id": "sheet-trigger",
1752
+ "component": "Button",
1753
+ "props": {
1754
+ "label": "Details",
1755
+ "variant": "secondary"
1756
+ }
1757
+ }
1758
+ },
1759
+ "children": [
1760
+ {
1761
+ "id": "sheet-body",
1762
+ "component": "Text",
1763
+ "props": {
1764
+ "text": "Everything in a bottom sheet."
1765
+ }
1766
+ }
1767
+ ]
1768
+ },
1769
+ {
1770
+ "id": "popover",
1771
+ "component": "Popover",
1772
+ "props": {
1773
+ "side": "bottom"
1774
+ },
1775
+ "slots": {
1776
+ "trigger": {
1777
+ "id": "popover-trigger",
1778
+ "component": "Button",
1779
+ "props": {
1780
+ "icon": "ui-info",
1781
+ "variant": "ghost",
1782
+ "size": "icon",
1783
+ "label": "About"
1784
+ }
1785
+ }
1786
+ },
1787
+ "children": [
1788
+ {
1789
+ "id": "popover-body",
1790
+ "component": "Text",
1791
+ "props": {
1792
+ "text": "A small anchored panel.",
1793
+ "variant": "caption"
1794
+ }
1795
+ }
1796
+ ]
1797
+ },
1798
+ {
1799
+ "id": "tooltip",
1800
+ "component": "Tooltip",
1801
+ "props": {
1802
+ "content": "Copy link",
1803
+ "side": "top"
1804
+ },
1805
+ "children": [
1806
+ {
1807
+ "id": "tooltip-anchor",
1808
+ "component": "Button",
1809
+ "props": {
1810
+ "icon": "ui-link",
1811
+ "variant": "ghost",
1812
+ "size": "icon",
1813
+ "label": "Copy link"
1814
+ }
1815
+ }
1816
+ ]
1817
+ },
1818
+ {
1819
+ "id": "menu",
1820
+ "component": "Menu",
1821
+ "props": {
1822
+ "items": [
1823
+ {
1824
+ "label": "Rename",
1825
+ "value": "rename",
1826
+ "icon": "ui-edit"
1827
+ },
1828
+ {
1829
+ "label": "Archive",
1830
+ "value": "archive",
1831
+ "icon": "ui-archive"
1832
+ },
1833
+ {
1834
+ "label": "Delete",
1835
+ "value": "delete",
1836
+ "destructive": true
1837
+ }
1838
+ ]
1839
+ },
1840
+ "on": {
1841
+ "select": {
1842
+ "event": {
1843
+ "name": "menu"
1844
+ }
1845
+ }
1846
+ },
1847
+ "children": [
1848
+ {
1849
+ "id": "menu-trigger",
1850
+ "component": "Button",
1851
+ "props": {
1852
+ "label": "More",
1853
+ "icon": "ui-more",
1854
+ "variant": "outline"
1855
+ }
1856
+ }
1857
+ ]
1858
+ },
1859
+ {
1860
+ "id": "alert-dialog",
1861
+ "component": "AlertDialog",
1862
+ "props": {
1863
+ "title": "Discard draft?",
1864
+ "description": "Your text will be lost.",
1865
+ "destructive": true,
1866
+ "open": {
1867
+ "path": "/ui/discardOpen"
1868
+ }
1869
+ },
1870
+ "slots": {
1871
+ "trigger": {
1872
+ "id": "alert-dialog-trigger",
1873
+ "component": "Button",
1874
+ "props": {
1875
+ "label": "Discard",
1876
+ "variant": "outline"
1877
+ }
1878
+ }
1879
+ },
1880
+ "on": {
1881
+ "confirm": {
1882
+ "event": {
1883
+ "name": "discard"
1884
+ }
1885
+ }
1886
+ }
1887
+ },
1888
+ {
1889
+ "id": "dock-card",
1890
+ "component": "DockCard",
1891
+ "props": {
1892
+ "label": "Plan ready",
1893
+ "caption": "Ask dock",
1894
+ "meta": "3 questions",
1895
+ "title": "Fold the composer into the Dock",
1896
+ "icon": "coding-plan",
1897
+ "tone": "primary",
1898
+ "open": {
1899
+ "path": "/ui/dockOpen"
1900
+ }
1901
+ },
1902
+ "children": [
1903
+ {
1904
+ "id": "dock-card-body",
1905
+ "component": "Text",
1906
+ "props": {
1907
+ "text": "Move the waiting cards above the composer and open each one as a bottom sheet."
1908
+ }
1909
+ }
1910
+ ],
1911
+ "slots": {
1912
+ "footer": {
1913
+ "id": "dock-card-footer",
1914
+ "component": "Stack",
1915
+ "props": {
1916
+ "direction": "horizontal",
1917
+ "gap": "sm",
1918
+ "justify": "end"
1919
+ },
1920
+ "children": [
1921
+ {
1922
+ "id": "dock-card-no",
1923
+ "component": "Button",
1924
+ "props": {
1925
+ "label": "No, keep planning",
1926
+ "variant": "secondary"
1927
+ }
1928
+ },
1929
+ {
1930
+ "id": "dock-card-yes",
1931
+ "component": "Button",
1932
+ "props": {
1933
+ "label": "Yes"
1934
+ }
1935
+ }
1936
+ ]
1937
+ }
1938
+ }
1939
+ },
1940
+ {
1941
+ "id": "hover-card",
1942
+ "component": "Popover",
1943
+ "props": {
1944
+ "side": "top",
1945
+ "openOn": "hover"
1946
+ },
1947
+ "slots": {
1948
+ "trigger": {
1949
+ "id": "hover-card-trigger",
1950
+ "component": "Link",
1951
+ "props": {
1952
+ "label": "@alex"
1953
+ }
1954
+ }
1955
+ },
1956
+ "children": [
1957
+ {
1958
+ "id": "hover-card-body",
1959
+ "component": "Stack",
1960
+ "props": {
1961
+ "direction": "horizontal",
1962
+ "gap": "sm",
1963
+ "align": "center"
1964
+ },
1965
+ "children": [
1966
+ {
1967
+ "id": "hover-card-avatar",
1968
+ "component": "Avatar",
1969
+ "props": {
1970
+ "name": "Alex Chen"
1971
+ }
1972
+ },
1973
+ {
1974
+ "id": "hover-card-name",
1975
+ "component": "Text",
1976
+ "props": {
1977
+ "text": "Alex Chen · Owner",
1978
+ "variant": "body"
1979
+ }
1980
+ }
1981
+ ]
1982
+ }
1983
+ ]
1984
+ },
1985
+ {
1986
+ "id": "context-menu",
1987
+ "component": "Menu",
1988
+ "props": {
1989
+ "items": [
1990
+ {
1991
+ "label": "Copy",
1992
+ "value": "copy",
1993
+ "shortcut": "⌘C",
1994
+ "icon": "ui-copy"
1995
+ },
1996
+ {
1997
+ "kind": "separator"
1998
+ },
1999
+ {
2000
+ "kind": "label",
2001
+ "label": "View"
2002
+ },
2003
+ {
2004
+ "label": "Show done",
2005
+ "value": "showDone",
2006
+ "kind": "checkbox",
2007
+ "checked": {
2008
+ "path": "/ui/showDone"
2009
+ }
2010
+ },
2011
+ {
2012
+ "label": "Sort by",
2013
+ "kind": "submenu",
2014
+ "items": [
2015
+ {
2016
+ "label": "Priority",
2017
+ "value": "priority"
2018
+ },
2019
+ {
2020
+ "label": "Updated",
2021
+ "value": "updated"
2022
+ }
2023
+ ]
2024
+ },
2025
+ {
2026
+ "kind": "separator"
2027
+ },
2028
+ {
2029
+ "label": "Delete",
2030
+ "value": "delete",
2031
+ "destructive": true
2032
+ }
2033
+ ],
2034
+ "openOn": "contextmenu"
2035
+ },
2036
+ "on": {
2037
+ "select": {
2038
+ "event": {
2039
+ "name": "contextMenu"
2040
+ }
2041
+ }
2042
+ },
2043
+ "children": [
2044
+ {
2045
+ "id": "context-menu-target",
2046
+ "component": "Card",
2047
+ "props": {
2048
+ "title": "Right-click me"
2049
+ }
2050
+ }
2051
+ ]
2052
+ },
2053
+ {
2054
+ "id": "toast",
2055
+ "component": "Toast",
2056
+ "props": {
2057
+ "title": "Saved",
2058
+ "description": "Your changes are live.",
2059
+ "type": "success",
2060
+ "open": {
2061
+ "path": "/ui/toastOpen"
2062
+ },
2063
+ "actionLabel": "Undo",
2064
+ "duration": 5000
2065
+ },
2066
+ "on": {
2067
+ "action": {
2068
+ "event": {
2069
+ "name": "undo"
2070
+ }
2071
+ }
2072
+ }
2073
+ }
2074
+ ]
2075
+ },
2076
+ {
2077
+ "id": "responsive",
2078
+ "component": "Card",
2079
+ "props": {
2080
+ "title": "Responsive"
2081
+ },
2082
+ "children": [
2083
+ {
2084
+ "id": "resp-grid",
2085
+ "component": "Grid",
2086
+ "props": {
2087
+ "columns": {
2088
+ "base": 1,
2089
+ "sm": 2,
2090
+ "lg": 3
2091
+ },
2092
+ "gap": {
2093
+ "base": "sm",
2094
+ "md": "md"
2095
+ }
2096
+ },
2097
+ "children": [
2098
+ {
2099
+ "id": "resp-card-1",
2100
+ "component": "Card",
2101
+ "props": {
2102
+ "title": "Throughput",
2103
+ "description": "Runs per day"
2104
+ },
2105
+ "children": [
2106
+ {
2107
+ "id": "resp-value-1",
2108
+ "component": "Text",
2109
+ "props": {
2110
+ "text": "128",
2111
+ "variant": "title"
2112
+ }
2113
+ }
2114
+ ]
2115
+ },
2116
+ {
2117
+ "id": "resp-card-2",
2118
+ "component": "Card",
2119
+ "props": {
2120
+ "title": "Latency",
2121
+ "description": "p95 in ms"
2122
+ },
2123
+ "children": [
2124
+ {
2125
+ "id": "resp-value-2",
2126
+ "component": "Text",
2127
+ "props": {
2128
+ "text": "412",
2129
+ "variant": "title"
2130
+ }
2131
+ }
2132
+ ]
2133
+ },
2134
+ {
2135
+ "id": "resp-card-3",
2136
+ "component": "Card",
2137
+ "props": {
2138
+ "title": "Errors",
2139
+ "description": "Last 24 h"
2140
+ },
2141
+ "children": [
2142
+ {
2143
+ "id": "resp-value-3",
2144
+ "component": "Text",
2145
+ "props": {
2146
+ "text": "3",
2147
+ "variant": "title"
2148
+ }
2149
+ }
2150
+ ]
2151
+ }
2152
+ ]
2153
+ },
2154
+ {
2155
+ "id": "resp-shell",
2156
+ "component": "Sidebar",
2157
+ "props": {
2158
+ "width": 200,
2159
+ "collapseBelow": "md",
2160
+ "collapsed": {
2161
+ "path": "/ui/sidebarCollapsed"
2162
+ }
2163
+ },
2164
+ "style": {
2165
+ "minHeight": 160
2166
+ },
2167
+ "slots": {
2168
+ "sidebar": {
2169
+ "id": "resp-nav",
2170
+ "component": "Box",
2171
+ "style": {
2172
+ "display": "flex",
2173
+ "flexDirection": "column",
2174
+ "gap": "$spacing.xxs",
2175
+ "padding": "$spacing.xs"
2176
+ },
2177
+ "children": [
2178
+ {
2179
+ "id": "resp-nav-inbox",
2180
+ "component": "Row",
2181
+ "props": {
2182
+ "title": "Inbox",
2183
+ "icon": "nav-inbox",
2184
+ "selected": true,
2185
+ "pressable": true
2186
+ },
2187
+ "slots": {
2188
+ "trailing": {
2189
+ "id": "resp-nav-inbox-count",
2190
+ "component": "Badge",
2191
+ "props": {
2192
+ "text": "2",
2193
+ "variant": "secondary"
2194
+ }
2195
+ }
2196
+ }
2197
+ },
2198
+ {
2199
+ "id": "resp-nav-issues",
2200
+ "component": "Row",
2201
+ "props": {
2202
+ "title": "Issues",
2203
+ "icon": "nav-issues",
2204
+ "pressable": true
2205
+ }
2206
+ }
2207
+ ]
2208
+ }
2209
+ },
2210
+ "children": [
2211
+ {
2212
+ "id": "resp-main",
2213
+ "component": "Stack",
2214
+ "props": {
2215
+ "direction": {
2216
+ "base": "vertical",
2217
+ "md": "horizontal"
2218
+ },
2219
+ "gap": "md",
2220
+ "align": {
2221
+ "base": "stretch",
2222
+ "md": "center"
2223
+ }
2224
+ },
2225
+ "style": {
2226
+ "padding": "$spacing.md"
2227
+ },
2228
+ "children": [
2229
+ {
2230
+ "id": "resp-main-text",
2231
+ "component": "Text",
2232
+ "props": {
2233
+ "text": "The column hides below md; this stack turns into a row at md.",
2234
+ "variant": "body"
2235
+ }
2236
+ },
2237
+ {
2238
+ "id": "resp-only-wide",
2239
+ "component": "Badge",
2240
+ "props": {
2241
+ "text": "Wide",
2242
+ "variant": "secondary"
2243
+ },
2244
+ "style": {
2245
+ "display": "none",
2246
+ "@media (min-width: $breakpoint.md)": {
2247
+ "display": "flex"
2248
+ }
2249
+ }
2250
+ },
2251
+ {
2252
+ "id": "resp-only-narrow",
2253
+ "component": "Badge",
2254
+ "props": {
2255
+ "text": "Narrow",
2256
+ "variant": "outline"
2257
+ },
2258
+ "style": {
2259
+ "@media (min-width: $breakpoint.md)": {
2260
+ "display": "none"
2261
+ }
2262
+ }
2263
+ }
2264
+ ]
2265
+ }
2266
+ ]
2267
+ },
2268
+ {
2269
+ "id": "resp-states",
2270
+ "component": "Box",
2271
+ "props": {
2272
+ "pressable": true
2273
+ },
2274
+ "style": {
2275
+ "display": "flex",
2276
+ "flexDirection": "row",
2277
+ "alignItems": "center",
2278
+ "gap": "$spacing.sm",
2279
+ "padding": "$spacing.md",
2280
+ "borderRadius": "$radius.md",
2281
+ "borderWidth": "$border.hairline",
2282
+ "borderColor": "$color.border",
2283
+ "transition": "$motion.fast",
2284
+ "transitionEasing": "$ease.standard",
2285
+ "@media (max-width: $breakpoint.sm)": {
2286
+ "flexDirection": "column",
2287
+ "alignItems": "flex-start"
2288
+ },
2289
+ "@media (orientation: portrait)": {
2290
+ "paddingVertical": "$spacing.lg"
2291
+ },
2292
+ "@media (hover: none)": {
2293
+ "minHeight": 44
2294
+ },
2295
+ "@media (prefers-reduced-motion: reduce)": {
2296
+ "transform": "scale(1)"
2297
+ },
2298
+ ":hover": {
2299
+ "backgroundColor": "$color.accent"
2300
+ },
2301
+ ":focus-visible": {
2302
+ "borderColor": "$color.ring"
2303
+ },
2304
+ ":pressed": {
2305
+ "transform": "scale(0.98)"
2306
+ }
2307
+ },
2308
+ "on": {
2309
+ "press": {
2310
+ "event": {
2311
+ "name": "tapCard"
2312
+ }
2313
+ }
2314
+ },
2315
+ "children": [
2316
+ {
2317
+ "id": "resp-states-icon",
2318
+ "component": "Icon",
2319
+ "props": {
2320
+ "name": "ui-info",
2321
+ "tone": "info"
2322
+ }
2323
+ },
2324
+ {
2325
+ "id": "resp-states-text",
2326
+ "component": "Text",
2327
+ "props": {
2328
+ "text": "Hover, keyboard focus and press restyle this box; it stacks below sm.",
2329
+ "variant": "body"
2330
+ }
2331
+ }
2332
+ ]
2333
+ },
2334
+ {
2335
+ "id": "resp-drawer",
2336
+ "component": "Drawer",
2337
+ "props": {
2338
+ "title": "Filters",
2339
+ "side": {
2340
+ "base": "bottom",
2341
+ "md": "right"
2342
+ },
2343
+ "open": {
2344
+ "path": "/ui/filtersOpen"
2345
+ },
2346
+ "dragToDismiss": true
2347
+ },
2348
+ "slots": {
2349
+ "trigger": {
2350
+ "id": "resp-drawer-trigger",
2351
+ "component": "Button",
2352
+ "props": {
2353
+ "label": "Filters",
2354
+ "icon": "ui-properties",
2355
+ "variant": "outline"
2356
+ }
2357
+ }
2358
+ },
2359
+ "children": [
2360
+ {
2361
+ "id": "resp-drawer-body",
2362
+ "component": "Text",
2363
+ "props": {
2364
+ "text": "A bottom sheet on phones, a side panel from md.",
2365
+ "variant": "body"
2366
+ }
2367
+ }
2368
+ ]
2369
+ },
2370
+ {
2371
+ "id": "resp-scroll",
2372
+ "component": "ScrollArea",
2373
+ "props": {
2374
+ "direction": "horizontal"
2375
+ },
2376
+ "children": [
2377
+ {
2378
+ "id": "resp-chip-0",
2379
+ "component": "Chip",
2380
+ "props": {
2381
+ "label": "Bug"
2382
+ },
2383
+ "style": {
2384
+ "flexShrink": 0
2385
+ }
2386
+ },
2387
+ {
2388
+ "id": "resp-chip-1",
2389
+ "component": "Chip",
2390
+ "props": {
2391
+ "label": "iOS"
2392
+ },
2393
+ "style": {
2394
+ "flexShrink": 0
2395
+ }
2396
+ },
2397
+ {
2398
+ "id": "resp-chip-2",
2399
+ "component": "Chip",
2400
+ "props": {
2401
+ "label": "Android"
2402
+ },
2403
+ "style": {
2404
+ "flexShrink": 0
2405
+ }
2406
+ },
2407
+ {
2408
+ "id": "resp-chip-3",
2409
+ "component": "Chip",
2410
+ "props": {
2411
+ "label": "Desktop"
2412
+ },
2413
+ "style": {
2414
+ "flexShrink": 0
2415
+ }
2416
+ },
2417
+ {
2418
+ "id": "resp-chip-4",
2419
+ "component": "Chip",
2420
+ "props": {
2421
+ "label": "Web"
2422
+ },
2423
+ "style": {
2424
+ "flexShrink": 0
2425
+ }
2426
+ },
2427
+ {
2428
+ "id": "resp-chip-5",
2429
+ "component": "Chip",
2430
+ "props": {
2431
+ "label": "Infra"
2432
+ },
2433
+ "style": {
2434
+ "flexShrink": 0
2435
+ }
2436
+ },
2437
+ {
2438
+ "id": "resp-chip-6",
2439
+ "component": "Chip",
2440
+ "props": {
2441
+ "label": "Docs"
2442
+ },
2443
+ "style": {
2444
+ "flexShrink": 0
2445
+ }
2446
+ }
2447
+ ]
2448
+ }
2449
+ ]
2450
+ },
2451
+ {
2452
+ "id": "new-form",
2453
+ "component": "Form",
2454
+ "props": {
2455
+ "name": "settings",
2456
+ "summary": true,
2457
+ "busy": {
2458
+ "path": "/ui/saving"
2459
+ }
2460
+ },
2461
+ "on": {
2462
+ "submit": {
2463
+ "event": {
2464
+ "name": "saveSettings"
2465
+ }
2466
+ },
2467
+ "invalid": {
2468
+ "event": {
2469
+ "name": "invalidSettings"
2470
+ }
2471
+ }
2472
+ },
2473
+ "children": [
2474
+ {
2475
+ "id": "nf-label",
2476
+ "component": "Label",
2477
+ "props": {
2478
+ "text": "Seats",
2479
+ "for": "nf-seats",
2480
+ "required": true
2481
+ }
2482
+ },
2483
+ {
2484
+ "id": "nf-seats",
2485
+ "component": "NumberField",
2486
+ "props": {
2487
+ "label": "Seats",
2488
+ "name": "seats",
2489
+ "value": {
2490
+ "path": "/form/seats"
2491
+ },
2492
+ "min": 1,
2493
+ "max": 50,
2494
+ "unit": "seats",
2495
+ "checks": [
2496
+ {
2497
+ "condition": {
2498
+ "call": "numeric",
2499
+ "args": {
2500
+ "value": {
2501
+ "path": "/form/seats"
2502
+ },
2503
+ "min": 1,
2504
+ "max": 50
2505
+ }
2506
+ },
2507
+ "message": "Between 1 and 50"
2508
+ }
2509
+ ]
2510
+ }
2511
+ },
2512
+ {
2513
+ "id": "nf-stack",
2514
+ "component": "Grid",
2515
+ "props": {
2516
+ "columns": {
2517
+ "base": 1,
2518
+ "md": 2
2519
+ },
2520
+ "gap": "md"
2521
+ },
2522
+ "children": [
2523
+ {
2524
+ "id": "nf-time",
2525
+ "component": "TimePicker",
2526
+ "props": {
2527
+ "label": "Daily digest",
2528
+ "name": "digestAt",
2529
+ "value": {
2530
+ "path": "/form/digestAt"
2531
+ },
2532
+ "step": 30
2533
+ }
2534
+ },
2535
+ {
2536
+ "id": "nf-range",
2537
+ "component": "DateRangePicker",
2538
+ "props": {
2539
+ "label": "Sprint",
2540
+ "name": "sprint",
2541
+ "start": "2026-10-07",
2542
+ "end": "2026-10-21"
2543
+ }
2544
+ }
2545
+ ]
2546
+ },
2547
+ {
2548
+ "id": "nf-labels",
2549
+ "component": "ChipInput",
2550
+ "props": {
2551
+ "label": "Labels",
2552
+ "name": "labels",
2553
+ "values": {
2554
+ "path": "/form/labels"
2555
+ },
2556
+ "suggestions": [
2557
+ {
2558
+ "label": "bug",
2559
+ "value": "bug"
2560
+ },
2561
+ {
2562
+ "label": "ios",
2563
+ "value": "ios"
2564
+ },
2565
+ {
2566
+ "label": "design",
2567
+ "value": "design"
2568
+ }
2569
+ ],
2570
+ "max": 5
2571
+ }
2572
+ },
2573
+ {
2574
+ "id": "nf-files",
2575
+ "component": "FileUpload",
2576
+ "props": {
2577
+ "label": "Attachments",
2578
+ "name": "files",
2579
+ "accept": "image/*,.pdf",
2580
+ "multiple": true,
2581
+ "maxSize": 10485760,
2582
+ "files": [
2583
+ {
2584
+ "name": "screenshot.png",
2585
+ "size": 48213,
2586
+ "type": "image/png"
2587
+ }
2588
+ ],
2589
+ "hint": "PNG, JPG or PDF up to 10 MB"
2590
+ },
2591
+ "on": {
2592
+ "upload": {
2593
+ "event": {
2594
+ "name": "upload"
2595
+ }
2596
+ },
2597
+ "remove": {
2598
+ "event": {
2599
+ "name": "removeFile"
2600
+ }
2601
+ }
2602
+ }
2603
+ },
2604
+ {
2605
+ "id": "nf-rating",
2606
+ "component": "Rating",
2607
+ "props": {
2608
+ "value": {
2609
+ "path": "/form/rating"
2610
+ },
2611
+ "max": 5
2612
+ }
2613
+ },
2614
+ {
2615
+ "id": "nf-keys",
2616
+ "component": "Stack",
2617
+ "props": {
2618
+ "direction": "horizontal",
2619
+ "align": "center",
2620
+ "gap": "xs"
2621
+ },
2622
+ "children": [
2623
+ {
2624
+ "id": "nf-keys-text",
2625
+ "component": "Text",
2626
+ "props": {
2627
+ "text": "Save with",
2628
+ "variant": "muted"
2629
+ }
2630
+ },
2631
+ {
2632
+ "id": "nf-kbd",
2633
+ "component": "Kbd",
2634
+ "props": {
2635
+ "keys": "⌘S"
2636
+ }
2637
+ }
2638
+ ]
2639
+ },
2640
+ {
2641
+ "id": "nf-submit",
2642
+ "component": "Button",
2643
+ "props": {
2644
+ "label": "Save",
2645
+ "submit": true
2646
+ }
2647
+ }
2648
+ ]
2649
+ },
2650
+ {
2651
+ "id": "code",
2652
+ "component": "CodeBlock",
2653
+ "props": {
2654
+ "code": "// the answer\nconst answer: number = 42\nexport function ask(q: string) {\n return `${q}? ${answer}`\n}",
2655
+ "language": "ts",
2656
+ "title": "answer.ts",
2657
+ "lineNumbers": true,
2658
+ "highlight": [
2659
+ 2
2660
+ ]
2661
+ }
2662
+ },
2663
+ {
2664
+ "id": "trace",
2665
+ "component": "Trace",
2666
+ "props": {
2667
+ "size": "sm"
2668
+ },
2669
+ "children": [
2670
+ {
2671
+ "id": "trace-think",
2672
+ "component": "TraceItem",
2673
+ "props": {
2674
+ "title": "Thought for 5s",
2675
+ "icon": "trace-reasoning",
2676
+ "size": "sm"
2677
+ }
2678
+ },
2679
+ {
2680
+ "id": "trace-run",
2681
+ "component": "TraceItem",
2682
+ "props": {
2683
+ "title": "Ran bun test",
2684
+ "icon": "trace-terminal",
2685
+ "size": "sm",
2686
+ "collapsible": true,
2687
+ "open": true,
2688
+ "status": "error"
2689
+ },
2690
+ "children": [
2691
+ {
2692
+ "id": "trace-out",
2693
+ "component": "CodeBlock",
2694
+ "props": {
2695
+ "code": "\u001b[32m(pass)\u001b[0m Store > put\n\u001b[31m(fail)\u001b[0m Store > get\n\n 1 pass\n 1 fail",
2696
+ "language": "ansi",
2697
+ "title": "Output",
2698
+ "size": "sm",
2699
+ "variant": "destructive"
2700
+ }
2701
+ }
2702
+ ]
2703
+ },
2704
+ {
2705
+ "id": "trace-edit",
2706
+ "component": "TraceItem",
2707
+ "props": {
2708
+ "title": "Editing src/store.ts",
2709
+ "icon": "trace-edit",
2710
+ "size": "sm",
2711
+ "status": "running"
2712
+ }
2713
+ },
2714
+ {
2715
+ "id": "trace-next",
2716
+ "component": "TraceItem",
2717
+ "props": {
2718
+ "title": "Run the suite again",
2719
+ "icon": "trace-terminal",
2720
+ "size": "sm",
2721
+ "status": "pending"
2722
+ }
2723
+ }
2724
+ ]
2725
+ },
2726
+ {
2727
+ "id": "composer",
2728
+ "component": "Composer",
2729
+ "props": {
2730
+ "placeholder": "Ask anything",
2731
+ "attachments": true,
2732
+ "submitLabel": "Send"
2733
+ },
2734
+ "on": {
2735
+ "submit": {
2736
+ "event": {
2737
+ "name": "ask"
2738
+ }
2739
+ }
2740
+ }
2741
+ },
2742
+ {
2743
+ "id": "tab-bar",
2744
+ "component": "Segmented",
2745
+ "props": {
2746
+ "items": [
2747
+ {
2748
+ "label": "Inbox",
2749
+ "value": "inbox",
2750
+ "icon": "nav-inbox"
2751
+ },
2752
+ {
2753
+ "label": "Issues",
2754
+ "value": "issues",
2755
+ "icon": "nav-issues"
2756
+ },
2757
+ {
2758
+ "label": "Settings",
2759
+ "value": "settings",
2760
+ "icon": "nav-settings"
2761
+ }
2762
+ ],
2763
+ "value": {
2764
+ "path": "/ui/tab"
2765
+ },
2766
+ "variant": "bar",
2767
+ "fill": true
2768
+ },
2769
+ "on": {
2770
+ "change": {
2771
+ "event": {
2772
+ "name": "tab"
2773
+ }
2774
+ }
2775
+ }
2776
+ },
2777
+ {
2778
+ "id": "panels",
2779
+ "component": "Resizable",
2780
+ "props": {
2781
+ "direction": {
2782
+ "base": "vertical",
2783
+ "md": "horizontal"
2784
+ },
2785
+ "sizes": [
2786
+ 40,
2787
+ 60
2788
+ ],
2789
+ "panels": [
2790
+ {
2791
+ "min": 20
2792
+ },
2793
+ {
2794
+ "min": 30,
2795
+ "collapsible": true
2796
+ }
2797
+ ],
2798
+ "handle": true
2799
+ },
2800
+ "style": {
2801
+ "height": 160
2802
+ },
2803
+ "children": [
2804
+ {
2805
+ "id": "panels-nav",
2806
+ "component": "Text",
2807
+ "props": {
2808
+ "text": "Boards",
2809
+ "variant": "label"
2810
+ },
2811
+ "style": {
2812
+ "padding": "$spacing.md"
2813
+ }
2814
+ },
2815
+ {
2816
+ "id": "panels-main",
2817
+ "component": "Text",
2818
+ "props": {
2819
+ "text": "Drag the handle; arrow keys move it by 10.",
2820
+ "variant": "muted"
2821
+ },
2822
+ "style": {
2823
+ "padding": "$spacing.md"
2824
+ }
2825
+ }
2826
+ ]
2827
+ },
2828
+ {
2829
+ "id": "search-list",
2830
+ "component": "SearchList",
2831
+ "props": {
2832
+ "placeholder": "Search issues",
2833
+ "value": "exp-12",
2834
+ "items": [
2835
+ {
2836
+ "label": "Ship the search list",
2837
+ "value": "exp-12",
2838
+ "identifier": "EXP-12",
2839
+ "icon": "status-in-progress"
2840
+ },
2841
+ {
2842
+ "label": "Spinner sizes",
2843
+ "value": "exp-14",
2844
+ "identifier": "EXP-14",
2845
+ "icon": "status-backlog"
2846
+ },
2847
+ {
2848
+ "label": "Close tabs on hover",
2849
+ "value": "exp-15",
2850
+ "identifier": "EXP-15",
2851
+ "icon": "status-done"
2852
+ }
2853
+ ]
2854
+ }
2855
+ },
2856
+ {
2857
+ "id": "macros-demo",
2858
+ "component": "Card",
2859
+ "props": {
2860
+ "title": "Layout macros"
2861
+ },
2862
+ "children": [
2863
+ {
2864
+ "id": "macros-page",
2865
+ "component": "Page",
2866
+ "props": {
2867
+ "title": "Settings",
2868
+ "subtitle": "Acme",
2869
+ "back": true
2870
+ },
2871
+ "style": {
2872
+ "height": 200
2873
+ },
2874
+ "slots": {
2875
+ "trailing": {
2876
+ "id": "macros-page-more",
2877
+ "component": "Button",
2878
+ "props": {
2879
+ "icon": "ui-more",
2880
+ "label": "More",
2881
+ "variant": "ghost",
2882
+ "size": "icon"
2883
+ }
2884
+ }
2885
+ },
2886
+ "children": [
2887
+ {
2888
+ "id": "macros-toolbar",
2889
+ "component": "Toolbar",
2890
+ "children": [
2891
+ {
2892
+ "id": "macros-search",
2893
+ "component": "Input",
2894
+ "props": {
2895
+ "name": "q",
2896
+ "label": "Search",
2897
+ "type": "search",
2898
+ "placeholder": "Search"
2899
+ },
2900
+ "style": {
2901
+ "width": 240
2902
+ }
2903
+ },
2904
+ {
2905
+ "id": "macros-filter",
2906
+ "component": "Button",
2907
+ "props": {
2908
+ "label": "Filter",
2909
+ "variant": "outline"
2910
+ }
2911
+ }
2912
+ ],
2913
+ "slots": {
2914
+ "trailing": {
2915
+ "id": "macros-new",
2916
+ "component": "Button",
2917
+ "props": {
2918
+ "label": "New issue",
2919
+ "variant": "default"
2920
+ }
2921
+ }
2922
+ }
2923
+ },
2924
+ {
2925
+ "id": "macros-fields",
2926
+ "component": "FieldGroup",
2927
+ "children": [
2928
+ {
2929
+ "id": "starts",
2930
+ "component": "Input",
2931
+ "props": {
2932
+ "label": "Starts",
2933
+ "name": "starts",
2934
+ "value": "09:00"
2935
+ }
2936
+ },
2937
+ {
2938
+ "id": "ends",
2939
+ "component": "Input",
2940
+ "props": {
2941
+ "label": "Ends",
2942
+ "name": "ends",
2943
+ "value": "10:00"
2944
+ }
2945
+ }
2946
+ ]
2947
+ },
2948
+ {
2949
+ "id": "macros-actions",
2950
+ "component": "FormActions",
2951
+ "props": {
2952
+ "submit": "Save",
2953
+ "cancel": true
2954
+ }
2955
+ }
2956
+ ]
2957
+ },
2958
+ {
2959
+ "id": "macros-split",
2960
+ "component": "SplitView",
2961
+ "props": {
2962
+ "open": {
2963
+ "path": "/ui/splitOpen"
2964
+ },
2965
+ "width": 200
2966
+ },
2967
+ "style": {
2968
+ "height": 160
2969
+ },
2970
+ "slots": {
2971
+ "list": {
2972
+ "id": "macros-split-list",
2973
+ "component": "List",
2974
+ "children": [
2975
+ {
2976
+ "id": "macros-split-r1",
2977
+ "component": "Row",
2978
+ "props": {
2979
+ "title": "Inbox",
2980
+ "selected": true,
2981
+ "pressable": true
2982
+ }
2983
+ },
2984
+ {
2985
+ "id": "macros-split-r2",
2986
+ "component": "Row",
2987
+ "props": {
2988
+ "title": "Drafts",
2989
+ "pressable": true
2990
+ }
2991
+ }
2992
+ ]
2993
+ }
2994
+ },
2995
+ "children": [
2996
+ {
2997
+ "id": "macros-split-detail",
2998
+ "component": "Text",
2999
+ "props": {
3000
+ "text": "The open item."
3001
+ }
3002
+ }
3003
+ ]
3004
+ },
3005
+ {
3006
+ "id": "macros-tiles",
3007
+ "component": "Grid",
3008
+ "props": {
3009
+ "columns": {
3010
+ "base": 1,
3011
+ "md": 2
3012
+ },
3013
+ "gap": "md"
3014
+ },
3015
+ "children": [
3016
+ {
3017
+ "id": "macros-tile-1",
3018
+ "component": "StatTile",
3019
+ "props": {
3020
+ "label": "Active users",
3021
+ "value": "1,284",
3022
+ "delta": "+12 %",
3023
+ "tone": "success",
3024
+ "trend": [
3025
+ 3,
3026
+ 4,
3027
+ 3,
3028
+ 5,
3029
+ 6,
3030
+ 8
3031
+ ]
3032
+ }
3033
+ },
3034
+ {
3035
+ "id": "macros-tile-2",
3036
+ "component": "StatTile",
3037
+ "props": {
3038
+ "label": "Error rate",
3039
+ "value": "0.04 %",
3040
+ "delta": "-0.01",
3041
+ "tone": "danger"
3042
+ }
3043
+ }
3044
+ ]
3045
+ }
3046
+ ]
3047
+ }
3048
+ ]
3049
+ }