@cueplusplus/ui 0.9.0 → 0.11.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 (330) hide show
  1. package/CHANGELOG.md +337 -0
  2. package/README.md +197 -9
  3. package/dist/chrome/index.d.ts +2 -1
  4. package/dist/chrome/index.js +3 -2
  5. package/dist/chrome/inspector.d.ts +61 -0
  6. package/dist/chrome/inspector.js +121 -0
  7. package/dist/forms/input.d.ts +12 -0
  8. package/dist/forms/textarea.d.ts +12 -0
  9. package/dist/forms/toggle.d.ts +6 -0
  10. package/dist/index.d.ts +7 -3
  11. package/dist/index.js +8 -3
  12. package/dist/instruments/code-block.d.ts +35 -0
  13. package/dist/instruments/code-block.js +173 -0
  14. package/dist/instruments/index.d.ts +2 -1
  15. package/dist/instruments/index.js +2 -1
  16. package/dist/instruments/meter.d.ts +5 -1
  17. package/dist/layout/bento.d.ts +144 -0
  18. package/dist/layout/bento.js +266 -0
  19. package/dist/layout/index.d.ts +4 -2
  20. package/dist/layout/index.js +4 -2
  21. package/dist/layout/preview.d.ts +110 -0
  22. package/dist/layout/preview.js +459 -0
  23. package/dist/primitives/button.d.ts +12 -0
  24. package/dist/primitives/chip.d.ts +1 -1
  25. package/dist/system/index.d.ts +2 -2
  26. package/dist/system/index.js +2 -1
  27. package/dist/system/overrides.d.ts +38 -1
  28. package/dist/system/overrides.js +40 -1
  29. package/manifest/components/accordion.json +24 -6
  30. package/manifest/components/activity-graph.json +20 -5
  31. package/manifest/components/agent-card.json +37 -9
  32. package/manifest/components/agent-handoff.json +21 -5
  33. package/manifest/components/agent-mode-badge.json +22 -4
  34. package/manifest/components/agent-pile.json +38 -8
  35. package/manifest/components/agent-plan.json +9 -2
  36. package/manifest/components/agent-status.json +17 -3
  37. package/manifest/components/agent-surface.json +26 -11
  38. package/manifest/components/alert-dialog.json +29 -5
  39. package/manifest/components/animated-number.json +14 -6
  40. package/manifest/components/app-bar.json +66 -13
  41. package/manifest/components/app-shell.json +133 -31
  42. package/manifest/components/app-window-frame.json +28 -6
  43. package/manifest/components/approval-card.json +37 -7
  44. package/manifest/components/artifact-card.json +16 -4
  45. package/manifest/components/ask-box.json +99 -21
  46. package/manifest/components/audience-icon.json +1 -7
  47. package/manifest/components/autocomplete.json +80 -18
  48. package/manifest/components/avatar-group.json +13 -2
  49. package/manifest/components/avatar.json +22 -4
  50. package/manifest/components/background-inbox.json +9 -2
  51. package/manifest/components/bento.json +306 -0
  52. package/manifest/components/branch-picker.json +29 -7
  53. package/manifest/components/breadcrumb.json +13 -3
  54. package/manifest/components/button-group.json +21 -4
  55. package/manifest/components/button.json +41 -4
  56. package/manifest/components/canvas-split-body.json +4 -1
  57. package/manifest/components/canvas-split-header.json +17 -4
  58. package/manifest/components/canvas-split-line.json +4 -1
  59. package/manifest/components/canvas-split-message.json +8 -1
  60. package/manifest/components/card.json +14 -3
  61. package/manifest/components/carousel.json +54 -12
  62. package/manifest/components/catalogue-icon.json +1 -7
  63. package/manifest/components/channel-beta-icon.json +1 -7
  64. package/manifest/components/channel-matrix.json +80 -15
  65. package/manifest/components/channel-released-icon.json +1 -7
  66. package/manifest/components/chart-container.json +26 -10
  67. package/manifest/components/chart-ramp.json +13 -3
  68. package/manifest/components/chart-swatch.json +9 -2
  69. package/manifest/components/chart-tooltip-content.json +31 -7
  70. package/manifest/components/chart.json +30 -6
  71. package/manifest/components/chat-panel-composer.json +9 -2
  72. package/manifest/components/checkbox-group.json +4 -2
  73. package/manifest/components/checkbox.json +17 -4
  74. package/manifest/components/checkpoint-history.json +13 -3
  75. package/manifest/components/chip.json +35 -5
  76. package/manifest/components/clamp.json +30 -7
  77. package/manifest/components/cli-tool-icon.json +1 -7
  78. package/manifest/components/code-block.json +106 -0
  79. package/manifest/components/code-diff.json +20 -5
  80. package/manifest/components/code-runner.json +32 -6
  81. package/manifest/components/collapsible.json +16 -4
  82. package/manifest/components/color-area.json +4 -1
  83. package/manifest/components/color-field.json +13 -3
  84. package/manifest/components/color-picker.json +75 -17
  85. package/manifest/components/color-slider.json +12 -3
  86. package/manifest/components/color-swatch.json +13 -2
  87. package/manifest/components/colors-section.json +8 -4
  88. package/manifest/components/combobox.json +81 -18
  89. package/manifest/components/command-palette.json +57 -13
  90. package/manifest/components/compaction-row.json +35 -7
  91. package/manifest/components/comparison-card.json +17 -4
  92. package/manifest/components/composer-attachment-chip.json +9 -2
  93. package/manifest/components/composer-bar.json +4 -1
  94. package/manifest/components/composer-command-item.json +8 -2
  95. package/manifest/components/composer-context.json +4 -1
  96. package/manifest/components/composer-input.json +5 -1
  97. package/manifest/components/composer-menu-item.json +4 -1
  98. package/manifest/components/composer-menu.json +12 -2
  99. package/manifest/components/composer-model-item.json +8 -2
  100. package/manifest/components/composer-model-trigger.json +8 -2
  101. package/manifest/components/composer-person-item.json +8 -2
  102. package/manifest/components/composer-send.json +8 -2
  103. package/manifest/components/composer-voice-button.json +4 -1
  104. package/manifest/components/composer-voice.json +8 -2
  105. package/manifest/components/composer.json +76 -17
  106. package/manifest/components/computer-use.json +17 -4
  107. package/manifest/components/confidence-marker.json +13 -3
  108. package/manifest/components/connection-state.json +23 -4
  109. package/manifest/components/container.json +14 -2
  110. package/manifest/components/context-breakdown.json +8 -2
  111. package/manifest/components/context-menu.json +16 -4
  112. package/manifest/components/context-usage.json +16 -4
  113. package/manifest/components/conversation-search.json +22 -5
  114. package/manifest/components/copy-button.json +32 -7
  115. package/manifest/components/cost-meter.json +12 -3
  116. package/manifest/components/cue-logotype.json +17 -3
  117. package/manifest/components/cue-mark.json +17 -3
  118. package/manifest/components/cue-portal-frame.json +13 -3
  119. package/manifest/components/data-row.json +21 -7
  120. package/manifest/components/data-table-pagination.json +18 -4
  121. package/manifest/components/data-table-toolbar.json +30 -7
  122. package/manifest/components/data-tree.json +42 -9
  123. package/manifest/components/date-field.json +13 -2
  124. package/manifest/components/date-picker.json +81 -19
  125. package/manifest/components/date-range-picker.json +81 -19
  126. package/manifest/components/day-separator.json +4 -1
  127. package/manifest/components/delegation-card.json +64 -12
  128. package/manifest/components/density.json +24 -4
  129. package/manifest/components/description-list.json +8 -1
  130. package/manifest/components/diagram.json +33 -7
  131. package/manifest/components/dialog.json +29 -6
  132. package/manifest/components/disclosure.json +31 -7
  133. package/manifest/components/dmx-bar.json +16 -4
  134. package/manifest/components/dmx-strip.json +20 -5
  135. package/manifest/components/document-reference.json +21 -5
  136. package/manifest/components/draft-restore.json +18 -4
  137. package/manifest/components/drawer.json +30 -6
  138. package/manifest/components/dropdown-menu.json +55 -10
  139. package/manifest/components/edit-message.json +32 -7
  140. package/manifest/components/elements-command-palette.json +27 -6
  141. package/manifest/components/elements-data-table.json +9 -2
  142. package/manifest/components/elements-timeline.json +8 -2
  143. package/manifest/components/elicitation-form.json +31 -6
  144. package/manifest/components/empty-state-composer.json +9 -2
  145. package/manifest/components/empty-state-suggestion.json +4 -1
  146. package/manifest/components/empty-state.json +25 -5
  147. package/manifest/components/end-of-turn-summary.json +16 -4
  148. package/manifest/components/env-var-input.json +54 -12
  149. package/manifest/components/error-state.json +17 -4
  150. package/manifest/components/export-dialog.json +27 -8
  151. package/manifest/components/eyebrow.json +4 -1
  152. package/manifest/components/feedback-dialog.json +33 -7
  153. package/manifest/components/field-description.json +4 -1
  154. package/manifest/components/field-error.json +13 -3
  155. package/manifest/components/field-label.json +4 -1
  156. package/manifest/components/field.json +4 -1
  157. package/manifest/components/file-tree.json +16 -4
  158. package/manifest/components/file-upload.json +58 -13
  159. package/manifest/components/flow-graph.json +12 -3
  160. package/manifest/components/folder-icon.json +1 -7
  161. package/manifest/components/footer.json +24 -4
  162. package/manifest/components/frac.json +10 -2
  163. package/manifest/components/generation-loader.json +17 -3
  164. package/manifest/components/generative-ui.json +39 -7
  165. package/manifest/components/grid.json +56 -5
  166. package/manifest/components/group-bar.json +25 -6
  167. package/manifest/components/guardrail-notice.json +22 -5
  168. package/manifest/components/hover-card.json +45 -8
  169. package/manifest/components/icon-button.json +22 -4
  170. package/manifest/components/image-generation.json +8 -2
  171. package/manifest/components/info-tip.json +42 -7
  172. package/manifest/components/inline-citation.json +14 -3
  173. package/manifest/components/input-group.json +24 -5
  174. package/manifest/components/input.json +33 -3
  175. package/manifest/components/inspector.json +199 -0
  176. package/manifest/components/item.json +42 -8
  177. package/manifest/components/job-progress.json +25 -6
  178. package/manifest/components/launcher-bubble.json +32 -7
  179. package/manifest/components/ledger.json +87 -19
  180. package/manifest/components/link.json +16 -3
  181. package/manifest/components/live-region-announcer.json +21 -5
  182. package/manifest/components/log-viewer.json +42 -10
  183. package/manifest/components/map-answer.json +17 -4
  184. package/manifest/components/markdown-text.json +36 -5
  185. package/manifest/components/math-block.json +12 -3
  186. package/manifest/components/mcp-server-icon.json +1 -7
  187. package/manifest/components/mcp-server-panel.json +18 -4
  188. package/manifest/components/memory-chips.json +9 -2
  189. package/manifest/components/menubar.json +33 -7
  190. package/manifest/components/message-actions.json +32 -7
  191. package/manifest/components/message-attachments.json +9 -2
  192. package/manifest/components/message-branches.json +14 -3
  193. package/manifest/components/message-list.json +27 -6
  194. package/manifest/components/message-pair.json +25 -5
  195. package/manifest/components/message-queue.json +13 -3
  196. package/manifest/components/message-timing.json +8 -2
  197. package/manifest/components/message.json +41 -9
  198. package/manifest/components/meter.json +43 -7
  199. package/manifest/components/mobile-composer.json +47 -10
  200. package/manifest/components/model-picker.json +13 -3
  201. package/manifest/components/multi-select.json +78 -17
  202. package/manifest/components/musical-time-input.json +34 -8
  203. package/manifest/components/navigation-menu.json +54 -12
  204. package/manifest/components/node-card.json +42 -7
  205. package/manifest/components/node-handle.json +17 -2
  206. package/manifest/components/number-field.json +28 -6
  207. package/manifest/components/number-ticker.json +8 -2
  208. package/manifest/components/onboarding.json +18 -4
  209. package/manifest/components/otp-field.json +43 -10
  210. package/manifest/components/page-shell.json +35 -6
  211. package/manifest/components/pagination.json +21 -5
  212. package/manifest/components/panel-header.json +15 -3
  213. package/manifest/components/password-input.json +58 -8
  214. package/manifest/components/permission-grant.json +28 -5
  215. package/manifest/components/permission-scopes.json +57 -12
  216. package/manifest/components/piano-keyboard.json +38 -9
  217. package/manifest/components/plussie.json +34 -5
  218. package/manifest/components/popover.json +45 -8
  219. package/manifest/components/preset-section.json +12 -5
  220. package/manifest/components/preview.json +202 -0
  221. package/manifest/components/progress.json +25 -6
  222. package/manifest/components/prompt-library.json +27 -6
  223. package/manifest/components/queue-dock.json +36 -8
  224. package/manifest/components/quota-banner.json +25 -6
  225. package/manifest/components/quote-reply.json +29 -7
  226. package/manifest/components/radio-group.json +12 -2
  227. package/manifest/components/radio.json +17 -3
  228. package/manifest/components/rating.json +60 -13
  229. package/manifest/components/read-aloud.json +35 -8
  230. package/manifest/components/reasoning-effort.json +17 -4
  231. package/manifest/components/reasoning-panel.json +33 -8
  232. package/manifest/components/recommendation-card.json +35 -10
  233. package/manifest/components/regenerate-menu.json +22 -5
  234. package/manifest/components/replay-player.json +29 -7
  235. package/manifest/components/research-report.json +12 -3
  236. package/manifest/components/resizable.json +4 -1
  237. package/manifest/components/retrieval-chunks.json +16 -4
  238. package/manifest/components/revert-dock.json +61 -14
  239. package/manifest/components/reviewable-diff.json +23 -5
  240. package/manifest/components/risk-badge.json +18 -3
  241. package/manifest/components/row.json +17 -4
  242. package/manifest/components/schedule-card.json +25 -6
  243. package/manifest/components/score-breakdown.json +20 -5
  244. package/manifest/components/scroll-anchor.json +13 -3
  245. package/manifest/components/scroll-area.json +31 -8
  246. package/manifest/components/scrollable-tabs-list.json +12 -4
  247. package/manifest/components/scrub-input.json +84 -18
  248. package/manifest/components/seam-cell.json +19 -3
  249. package/manifest/components/seam-grid.json +12 -3
  250. package/manifest/components/search-input.json +69 -10
  251. package/manifest/components/section-header.json +36 -8
  252. package/manifest/components/segmented-control.json +50 -11
  253. package/manifest/components/select.json +74 -16
  254. package/manifest/components/separator.json +4 -1
  255. package/manifest/components/settings-panel.json +41 -9
  256. package/manifest/components/shape-section.json +8 -4
  257. package/manifest/components/shared-conversation.json +21 -5
  258. package/manifest/components/sheet.json +29 -6
  259. package/manifest/components/shimmer-label.json +4 -2
  260. package/manifest/components/sidebar.json +60 -13
  261. package/manifest/components/skill-icon.json +1 -7
  262. package/manifest/components/slider.json +22 -5
  263. package/manifest/components/sources.json +17 -4
  264. package/manifest/components/sparkline.json +17 -4
  265. package/manifest/components/speaker-identity.json +4 -1
  266. package/manifest/components/spec-sheet.json +16 -4
  267. package/manifest/components/spectrum-visualizer.json +41 -10
  268. package/manifest/components/spinner.json +12 -2
  269. package/manifest/components/stack-icon.json +1 -7
  270. package/manifest/components/stack.json +54 -7
  271. package/manifest/components/stacks-matrix-icon.json +1 -7
  272. package/manifest/components/stat.json +28 -4
  273. package/manifest/components/status-bar.json +50 -9
  274. package/manifest/components/status-dot.json +23 -4
  275. package/manifest/components/stepper.json +22 -5
  276. package/manifest/components/stopped-run.json +19 -4
  277. package/manifest/components/streaming-text.json +12 -3
  278. package/manifest/components/subagent-list.json +21 -5
  279. package/manifest/components/suggestions.json +27 -5
  280. package/manifest/components/swap-label.json +18 -4
  281. package/manifest/components/switch.json +18 -3
  282. package/manifest/components/table-scroll-region.json +4 -1
  283. package/manifest/components/table.json +54 -11
  284. package/manifest/components/tabs.json +16 -5
  285. package/manifest/components/tags-input.json +79 -17
  286. package/manifest/components/tail-status.json +37 -8
  287. package/manifest/components/terminal-block.json +25 -5
  288. package/manifest/components/terminal-frame.json +34 -8
  289. package/manifest/components/textarea.json +28 -3
  290. package/manifest/components/theme-configurator.json +47 -11
  291. package/manifest/components/theme-provider.json +79 -15
  292. package/manifest/components/thinking-indicator.json +8 -2
  293. package/manifest/components/thread-list.json +13 -3
  294. package/manifest/components/thread-search.json +22 -5
  295. package/manifest/components/threshold-rail.json +77 -14
  296. package/manifest/components/time-boundary.json +8 -2
  297. package/manifest/components/time-field.json +13 -2
  298. package/manifest/components/timeline-ruler.json +51 -12
  299. package/manifest/components/timeline.json +19 -3
  300. package/manifest/components/title-bar.json +19 -4
  301. package/manifest/components/toast.json +12 -3
  302. package/manifest/components/todo-list.json +8 -2
  303. package/manifest/components/toggle-group.json +33 -7
  304. package/manifest/components/toggle.json +33 -4
  305. package/manifest/components/token-editor.json +26 -7
  306. package/manifest/components/tool-call-card.json +83 -16
  307. package/manifest/components/tool-call.json +37 -9
  308. package/manifest/components/tool-error.json +34 -8
  309. package/manifest/components/tool-group.json +17 -4
  310. package/manifest/components/tool-timeline.json +37 -9
  311. package/manifest/components/toolbar.json +37 -8
  312. package/manifest/components/tooltip.json +41 -7
  313. package/manifest/components/trace-waterfall.json +12 -3
  314. package/manifest/components/tree-visibility-toggle.json +18 -3
  315. package/manifest/components/tree.json +52 -11
  316. package/manifest/components/turn-footer.json +36 -8
  317. package/manifest/components/two-step-button.json +46 -9
  318. package/manifest/components/typing-indicator.json +8 -1
  319. package/manifest/components/universe-grid.json +37 -10
  320. package/manifest/components/unread-divider.json +4 -1
  321. package/manifest/components/usage-chart.json +46 -9
  322. package/manifest/components/verdict-row.json +20 -5
  323. package/manifest/components/voice-conversation.json +37 -7
  324. package/manifest/components/web-preview.json +23 -5
  325. package/manifest/components/web-search.json +20 -5
  326. package/manifest/components/work-collapse.json +30 -7
  327. package/manifest/fixtures.json +111 -0
  328. package/manifest/manifest.json +354 -297
  329. package/manifest/tokens.json +2 -2
  330. package/package.json +8 -7
@@ -27,7 +27,10 @@
27
27
  "type": "boolean",
28
28
  "required": false,
29
29
  "defaultValue": "true",
30
- "description": "Keep the bar at the top of the viewport as the page scrolls. Defaults to\n`true`.\n\nSet it `false` inside `AppShell`, where nothing scrolls the document and a\nsticky bar would be solving a problem the shell has already solved."
30
+ "description": "Keep the bar at the top of the viewport as the page scrolls. Defaults to\n`true`.\n\nSet it `false` inside `AppShell`, where nothing scrolls the document and a\nsticky bar would be solving a problem the shell has already solved.",
31
+ "control": {
32
+ "kind": "boolean"
33
+ }
31
34
  }
32
35
  ],
33
36
  "typeReferences": [
@@ -44,7 +47,10 @@
44
47
  "type": "RenderProp<Record<string, unknown>>",
45
48
  "required": false,
46
49
  "defaultValue": null,
47
- "description": "Replace the rendered element (Base UI render prop). Accepts an element —\n`render={<NextLink href=\"/x\" />}` — or a function returning one. This is\nhow the design system composes with a router without depending on one."
50
+ "description": "Replace the rendered element (Base UI render prop). Accepts an element —\n`render={<NextLink href=\"/x\" />}` — or a function returning one. This is\nhow the design system composes with a router without depending on one.",
51
+ "control": {
52
+ "kind": "opaque"
53
+ }
48
54
  }
49
55
  ],
50
56
  "typeReferences": [
@@ -61,42 +67,70 @@
61
67
  "type": "\"center\" | \"end\" | \"start\"",
62
68
  "required": false,
63
69
  "defaultValue": "end",
64
- "description": "Where the links sit when they are narrower than the space. Defaults to `\"end\"`."
70
+ "description": "Where the links sit when they are narrower than the space. Defaults to `\"end\"`.",
71
+ "control": {
72
+ "kind": "enum",
73
+ "members": [
74
+ "center",
75
+ "end",
76
+ "start"
77
+ ]
78
+ }
65
79
  },
66
80
  {
67
81
  "name": "overflow",
68
82
  "type": "\"clip\" | \"scroll\"",
69
83
  "required": false,
70
84
  "defaultValue": "scroll",
71
- "description": "What the navigation does when the links do not fit. Defaults to `\"scroll\"`.\n\nThe same behaviour `Toolbar` and `SegmentedControl` have, from the same\nmodule: the links scroll inside the bar, the overflowing edge is faded and\na pager chevron appears there. This is what lets the bar survive a phone\nwithout a viewport breakpoint."
85
+ "description": "What the navigation does when the links do not fit. Defaults to `\"scroll\"`.\n\nThe same behaviour `Toolbar` and `SegmentedControl` have, from the same\nmodule: the links scroll inside the bar, the overflowing edge is faded and\na pager chevron appears there. This is what lets the bar survive a phone\nwithout a viewport breakpoint.",
86
+ "control": {
87
+ "kind": "enum",
88
+ "members": [
89
+ "clip",
90
+ "scroll"
91
+ ]
92
+ }
72
93
  },
73
94
  {
74
95
  "name": "previousLabel",
75
96
  "type": "string",
76
97
  "required": false,
77
98
  "defaultValue": "Show earlier links",
78
- "description": "Accessible name for the chevron that reveals links off the leading edge."
99
+ "description": "Accessible name for the chevron that reveals links off the leading edge.",
100
+ "control": {
101
+ "kind": "string"
102
+ }
79
103
  },
80
104
  {
81
105
  "name": "nextLabel",
82
106
  "type": "string",
83
107
  "required": false,
84
108
  "defaultValue": "Show later links",
85
- "description": "Accessible name for the chevron that reveals links off the trailing edge."
109
+ "description": "Accessible name for the chevron that reveals links off the trailing edge.",
110
+ "control": {
111
+ "kind": "string"
112
+ }
86
113
  },
87
114
  {
88
115
  "name": "frameClassName",
89
116
  "type": "string",
90
117
  "required": false,
91
118
  "defaultValue": null,
92
- "description": "Extra classes for the frame around the `<nav>`, which is what takes the remaining width."
119
+ "description": "Extra classes for the frame around the `<nav>`, which is what takes the remaining width.",
120
+ "control": {
121
+ "kind": "string"
122
+ }
93
123
  },
94
124
  {
95
125
  "name": "children",
96
126
  "type": "ReactNode",
97
127
  "required": false,
98
128
  "defaultValue": null,
99
- "description": "The links, and any separators between clusters of them."
129
+ "description": "The links, and any separators between clusters of them.",
130
+ "control": {
131
+ "kind": "node",
132
+ "fixture": "children.text"
133
+ }
100
134
  }
101
135
  ],
102
136
  "typeReferences": [
@@ -113,28 +147,44 @@
113
147
  "type": "\"strong\" | \"muted\"",
114
148
  "required": false,
115
149
  "defaultValue": "muted",
116
- "description": "Which register the link is set in. Defaults to `\"muted\"`."
150
+ "description": "Which register the link is set in. Defaults to `\"muted\"`.",
151
+ "control": {
152
+ "kind": "enum",
153
+ "members": [
154
+ "strong",
155
+ "muted"
156
+ ]
157
+ }
117
158
  },
118
159
  {
119
160
  "name": "active",
120
161
  "type": "boolean",
121
162
  "required": false,
122
163
  "defaultValue": "false",
123
- "description": "This is the page the reader is on.\n\nInks the link with the accent and sets `aria-current=\"page\"` — the same\nbargain `Sidebar.Item` makes, so the current destination is announced and\nnot merely coloured. Overrides `register`: a current page is never\nfurniture."
164
+ "description": "This is the page the reader is on.\n\nInks the link with the accent and sets `aria-current=\"page\"` — the same\nbargain `Sidebar.Item` makes, so the current destination is announced and\nnot merely coloured. Overrides `register`: a current page is never\nfurniture.",
165
+ "control": {
166
+ "kind": "boolean"
167
+ }
124
168
  },
125
169
  {
126
170
  "name": "external",
127
171
  "type": "boolean",
128
172
  "required": false,
129
173
  "defaultValue": "false",
130
- "description": "Open in a new tab, mark the anchor `rel=\"noreferrer noopener\"` and append a\n`↗`. The glyph is not decoration: a link that replaces the user's context\nwithout warning is a WCAG 3.2.5 failure, and the arrow is the warning."
174
+ "description": "Open in a new tab, mark the anchor `rel=\"noreferrer noopener\"` and append a\n`↗`. The glyph is not decoration: a link that replaces the user's context\nwithout warning is a WCAG 3.2.5 failure, and the arrow is the warning.",
175
+ "control": {
176
+ "kind": "boolean"
177
+ }
131
178
  },
132
179
  {
133
180
  "name": "render",
134
181
  "type": "RenderProp<Record<string, unknown>>",
135
182
  "required": false,
136
183
  "defaultValue": null,
137
- "description": "Replace the rendered element (Base UI render prop). Accepts an element —\n`render={<NextLink href=\"/x\" />}` — or a function returning one. This is\nhow the design system composes with a router without depending on one."
184
+ "description": "Replace the rendered element (Base UI render prop). Accepts an element —\n`render={<NextLink href=\"/x\" />}` — or a function returning one. This is\nhow the design system composes with a router without depending on one.",
185
+ "control": {
186
+ "kind": "opaque"
187
+ }
138
188
  }
139
189
  ],
140
190
  "typeReferences": [
@@ -151,7 +201,10 @@
151
201
  "type": "string",
152
202
  "required": false,
153
203
  "defaultValue": null,
154
- "description": "Extra classes, merged over the hairline defaults."
204
+ "description": "Extra classes, merged over the hairline defaults.",
205
+ "control": {
206
+ "kind": "string"
207
+ }
155
208
  }
156
209
  ],
157
210
  "typeReferences": [
@@ -29,56 +29,82 @@
29
29
  "type": "boolean",
30
30
  "required": false,
31
31
  "defaultValue": null,
32
- "description": "Whether the mobile navigation drawer is open, when controlled. Pass with `onNavOpenChange`."
32
+ "description": "Whether the mobile navigation drawer is open, when controlled. Pass with `onNavOpenChange`.",
33
+ "control": {
34
+ "kind": "boolean"
35
+ }
33
36
  },
34
37
  {
35
38
  "name": "defaultNavOpen",
36
39
  "type": "boolean",
37
40
  "required": false,
38
41
  "defaultValue": "false",
39
- "description": "Initial open state of the mobile navigation drawer when uncontrolled. Defaults to `false`."
42
+ "description": "Initial open state of the mobile navigation drawer when uncontrolled. Defaults to `false`.",
43
+ "control": {
44
+ "kind": "boolean"
45
+ }
40
46
  },
41
47
  {
42
48
  "name": "onNavOpenChange",
43
49
  "type": "((open: boolean) => void)",
44
50
  "required": false,
45
51
  "defaultValue": null,
46
- "description": "Called with the next open state whenever the drawer is opened or dismissed."
52
+ "description": "Called with the next open state whenever the drawer is opened or dismissed.",
53
+ "control": {
54
+ "kind": "callback",
55
+ "fixture": "callback.log"
56
+ }
47
57
  },
48
58
  {
49
59
  "name": "rail",
50
60
  "type": "boolean",
51
61
  "required": false,
52
62
  "defaultValue": null,
53
- "description": "Whether the navigation column is collapsed to an icon rail, when\ncontrolled. Pass with `onRailChange`. Defaults to expanded.\n\nIt is the column's own collapse, owned one level up. Collapsing is a\nproperty of the column, but the header cell over it is a child of the bar\n— a different branch of the tree — and a length only one of them knows is\na length they will eventually disagree about. So the frame holds the\nstate, stamps `data-rail` on itself for anything that has to answer to it,\nand hands it down to `Sidebar.Root` as its controlled `collapsed`.\n\n**Persistence is the caller's.** A rail is set once and expected to be\nremembered, and where it is remembered — `localStorage`, a cookie the\nserver can read before first paint, a user record — is a decision about\nhydration and privacy that a layout component has no business making."
63
+ "description": "Whether the navigation column is collapsed to an icon rail, when\ncontrolled. Pass with `onRailChange`. Defaults to expanded.\n\nIt is the column's own collapse, owned one level up. Collapsing is a\nproperty of the column, but the header cell over it is a child of the bar\n— a different branch of the tree — and a length only one of them knows is\na length they will eventually disagree about. So the frame holds the\nstate, stamps `data-rail` on itself for anything that has to answer to it,\nand hands it down to `Sidebar.Root` as its controlled `collapsed`.\n\n**Persistence is the caller's.** A rail is set once and expected to be\nremembered, and where it is remembered — `localStorage`, a cookie the\nserver can read before first paint, a user record — is a decision about\nhydration and privacy that a layout component has no business making.",
64
+ "control": {
65
+ "kind": "boolean"
66
+ }
54
67
  },
55
68
  {
56
69
  "name": "defaultRail",
57
70
  "type": "boolean",
58
71
  "required": false,
59
72
  "defaultValue": "false",
60
- "description": "Initial rail state when uncontrolled. Defaults to `false`."
73
+ "description": "Initial rail state when uncontrolled. Defaults to `false`.",
74
+ "control": {
75
+ "kind": "boolean"
76
+ }
61
77
  },
62
78
  {
63
79
  "name": "onRailChange",
64
80
  "type": "((rail: boolean) => void)",
65
81
  "required": false,
66
82
  "defaultValue": null,
67
- "description": "Called with the next rail state whenever the column is collapsed or expanded."
83
+ "description": "Called with the next rail state whenever the column is collapsed or expanded.",
84
+ "control": {
85
+ "kind": "callback",
86
+ "fixture": "callback.log"
87
+ }
68
88
  },
69
89
  {
70
90
  "name": "navWidth",
71
91
  "type": "string",
72
92
  "required": false,
73
93
  "defaultValue": "14rem",
74
- "description": "Width of the navigation column while expanded. Any CSS length. Defaults to `\"14rem\"`."
94
+ "description": "Width of the navigation column while expanded. Any CSS length. Defaults to `\"14rem\"`.",
95
+ "control": {
96
+ "kind": "string"
97
+ }
75
98
  },
76
99
  {
77
100
  "name": "railWidth",
78
101
  "type": "string",
79
102
  "required": false,
80
103
  "defaultValue": "3.5rem",
81
- "description": "Width of the navigation column while railed. Any CSS length. Defaults to\n`\"3.5rem\"` — a `--cue-icon-md` glyph centred in a `--cue-control-md` row,\nwith a gutter either side that still reads as a column rather than a strip."
104
+ "description": "Width of the navigation column while railed. Any CSS length. Defaults to\n`\"3.5rem\"` — a `--cue-icon-md` glyph centred in a `--cue-control-md` row,\nwith a gutter either side that still reads as a column rather than a strip.",
105
+ "control": {
106
+ "kind": "string"
107
+ }
82
108
  }
83
109
  ],
84
110
  "typeReferences": [
@@ -95,35 +121,53 @@
95
121
  "type": "ReactNode",
96
122
  "required": false,
97
123
  "defaultValue": null,
98
- "description": "The header cell over the navigation column: the app mark, and whatever\ncontrol rails it.\n\nOmit it and the bar is one undivided strip — no empty bordered cell, which\nis worse than no cell."
124
+ "description": "The header cell over the navigation column: the app mark, and whatever\ncontrol rails it.\n\nOmit it and the bar is one undivided strip — no empty bordered cell, which\nis worse than no cell.",
125
+ "control": {
126
+ "kind": "node",
127
+ "fixture": "children.text"
128
+ }
99
129
  },
100
130
  {
101
131
  "name": "brandClassName",
102
132
  "type": "string",
103
133
  "required": false,
104
134
  "defaultValue": null,
105
- "description": "Extra classes for the header cell — the bordered box that spans the\nnavigation column, not the row of brand content inside it. Anything about\nthe cell's width, rim or gutter belongs here; anything about how the mark\nand its controls sit belongs on the nodes passed as `brand`."
135
+ "description": "Extra classes for the header cell — the bordered box that spans the\nnavigation column, not the row of brand content inside it. Anything about\nthe cell's width, rim or gutter belongs here; anything about how the mark\nand its controls sit belongs on the nodes passed as `brand`.",
136
+ "control": {
137
+ "kind": "string"
138
+ }
106
139
  },
107
140
  {
108
141
  "name": "platformDrag",
109
142
  "type": "boolean",
110
143
  "required": false,
111
144
  "defaultValue": "false",
112
- "description": "Make the bar's dead space a window drag handle. Defaults to `false`.\n\nThis is the same contract {@link TitleBar } has always offered, on the bar\na console with a navigation column actually uses — a desktop app should\nnot need a `TitleBar` *and* an `AppShell.Bar` stacked on top of each other\nto get one draggable row, which is two chrome rungs of a small window\nspent on furniture.\n\nEvery structural surface is attributed and every interactive cluster is\ncarved back out, because the two shells this ships into fail in opposite\ndirections. Tauri matches the *exact* element under the cursor, so the\nbrand cell and the rest cell carry the attribute themselves — a click on\nthe cell's own dead space targets the cell, never the root beneath it, and\na bar that only attributed its root would be draggable nowhere. Electron\nbuilds a geometric mask from painted boxes instead and excludes nothing on\nits own, so the brand content, the leading children and `actions` each sit\nin a cluster marked `app-region: no-drag` — without it a button that merely\noverlaps the bar stops receiving clicks at all. See `./_drag.ts`.\n\n**It changes how the clusters are sized, and that is a trade.** Off, each\ncluster grows into its cell, so a caller's own `ms-auto` reaches the cell's\ntrailing rim. On, the clusters take their content's width and `actions` is\npushed over with `ms-auto` instead, because a cluster that fills its cell\nis a `no-drag` rectangle painted over every dead pixel the cell just\nattributed — the bar would be draggable nowhere but its paddings and its\none gap. The dead area belongs to the window in drag mode, and a caller who\nneeds content to reach the rim there should say so on a box of their own\ninside the cluster.\n\n`select-none` comes with it: dragging a window and selecting the text you\nstarted the drag on are the same gesture, and the shell wins.\n\nNot wired here: double-click-to-maximise. Tauri's injected script already\ndoes it for any drag region, macOS's cancel-by-dragging-away included.\nElectron does not, and an Electron app has to listen for `dblclick` and\ntoggle the window itself. Which of those an app is, is not something a\nlayout component can know."
145
+ "description": "Make the bar's dead space a window drag handle. Defaults to `false`.\n\nThis is the same contract {@link TitleBar } has always offered, on the bar\na console with a navigation column actually uses — a desktop app should\nnot need a `TitleBar` *and* an `AppShell.Bar` stacked on top of each other\nto get one draggable row, which is two chrome rungs of a small window\nspent on furniture.\n\nEvery structural surface is attributed and every interactive cluster is\ncarved back out, because the two shells this ships into fail in opposite\ndirections. Tauri matches the *exact* element under the cursor, so the\nbrand cell and the rest cell carry the attribute themselves — a click on\nthe cell's own dead space targets the cell, never the root beneath it, and\na bar that only attributed its root would be draggable nowhere. Electron\nbuilds a geometric mask from painted boxes instead and excludes nothing on\nits own, so the brand content, the leading children and `actions` each sit\nin a cluster marked `app-region: no-drag` — without it a button that merely\noverlaps the bar stops receiving clicks at all. See `./_drag.ts`.\n\n**It changes how the clusters are sized, and that is a trade.** Off, each\ncluster grows into its cell, so a caller's own `ms-auto` reaches the cell's\ntrailing rim. On, the clusters take their content's width and `actions` is\npushed over with `ms-auto` instead, because a cluster that fills its cell\nis a `no-drag` rectangle painted over every dead pixel the cell just\nattributed — the bar would be draggable nowhere but its paddings and its\none gap. The dead area belongs to the window in drag mode, and a caller who\nneeds content to reach the rim there should say so on a box of their own\ninside the cluster.\n\n`select-none` comes with it: dragging a window and selecting the text you\nstarted the drag on are the same gesture, and the shell wins.\n\nNot wired here: double-click-to-maximise. Tauri's injected script already\ndoes it for any drag region, macOS's cancel-by-dragging-away included.\nElectron does not, and an Electron app has to listen for `dblclick` and\ntoggle the window itself. Which of those an app is, is not something a\nlayout component can know.",
146
+ "control": {
147
+ "kind": "boolean"
148
+ }
113
149
  },
114
150
  {
115
151
  "name": "center",
116
152
  "type": "ReactNode",
117
153
  "required": false,
118
154
  "defaultValue": null,
119
- "description": "A title centred on the **bar**, not between the cells beside it.\n\nAbsolutely positioned against the bar's own box, so it stays put when a\nbutton appears in `actions` or the column rails — the whole reason a\ndocument name in desktop chrome is not just another flex child.\n`pointer-events-none` so the dead space around a short title still drags,\nwhich is also what makes it click through to the drag surface underneath\nin Tauri, whose hit-testing is the browser's own.\n\nInert by construction. Anything the reader has to click belongs in\n`actions` or in `children`, where it can be carved out of the drag region."
155
+ "description": "A title centred on the **bar**, not between the cells beside it.\n\nAbsolutely positioned against the bar's own box, so it stays put when a\nbutton appears in `actions` or the column rails — the whole reason a\ndocument name in desktop chrome is not just another flex child.\n`pointer-events-none` so the dead space around a short title still drags,\nwhich is also what makes it click through to the drag surface underneath\nin Tauri, whose hit-testing is the browser's own.\n\nInert by construction. Anything the reader has to click belongs in\n`actions` or in `children`, where it can be carved out of the drag region.",
156
+ "control": {
157
+ "kind": "node",
158
+ "fixture": "children.text"
159
+ }
120
160
  },
121
161
  {
122
162
  "name": "actions",
123
163
  "type": "ReactNode",
124
164
  "required": false,
125
165
  "defaultValue": null,
126
- "description": "The trailing cluster: connection state, a run indicator, an overflow menu.\n\nPinned to the bar's trailing edge and never squeezed, so it reads as window\nfurniture rather than the end of a sentence. `children` keeps flowing into\nthe same cell ahead of it, which is what lets an existing web-shell caller\npass free-form content and gain a cluster without rearranging anything."
166
+ "description": "The trailing cluster: connection state, a run indicator, an overflow menu.\n\nPinned to the bar's trailing edge and never squeezed, so it reads as window\nfurniture rather than the end of a sentence. `children` keeps flowing into\nthe same cell ahead of it, which is what lets an existing web-shell caller\npass free-form content and gain a cluster without rearranging anything.",
167
+ "control": {
168
+ "kind": "node",
169
+ "fixture": "children.text"
170
+ }
127
171
  }
128
172
  ],
129
173
  "typeReferences": [
@@ -149,70 +193,106 @@
149
193
  "type": "ReactNode",
150
194
  "required": false,
151
195
  "defaultValue": "Navigation",
152
- "description": "The drawer's heading, and its accessible name. Defaults to `\"Navigation\"`."
196
+ "description": "The drawer's heading, and its accessible name. Defaults to `\"Navigation\"`.",
197
+ "control": {
198
+ "kind": "node",
199
+ "fixture": "children.text"
200
+ }
153
201
  },
154
202
  {
155
203
  "name": "closeLabel",
156
204
  "type": "string",
157
205
  "required": false,
158
206
  "defaultValue": "Close navigation",
159
- "description": "Accessible name for the drawer's close affordance. Defaults to `\"Close navigation\"`."
207
+ "description": "Accessible name for the drawer's close affordance. Defaults to `\"Close navigation\"`.",
208
+ "control": {
209
+ "kind": "string"
210
+ }
160
211
  },
161
212
  {
162
213
  "name": "drawerClassName",
163
214
  "type": "string",
164
215
  "required": false,
165
216
  "defaultValue": null,
166
- "description": "Extra classes for the drawer's popup surface."
217
+ "description": "Extra classes for the drawer's popup surface.",
218
+ "control": {
219
+ "kind": "string"
220
+ }
167
221
  },
168
222
  {
169
223
  "name": "collapsible",
170
224
  "type": "boolean",
171
225
  "required": false,
172
226
  "defaultValue": "true",
173
- "description": "Draw the column's collapse rail. Defaults to `true`.\n\nThe shell renders the `Sidebar.Rail` itself rather than taking one in\n`children`, because collapsing is a property of the *column* and the same\nchildren are also the drawer's: a rail passed as a child would be laid out\ninside the overlay, where there is nothing to collapse."
227
+ "description": "Draw the column's collapse rail. Defaults to `true`.\n\nThe shell renders the `Sidebar.Rail` itself rather than taking one in\n`children`, because collapsing is a property of the *column* and the same\nchildren are also the drawer's: a rail passed as a child would be laid out\ninside the overlay, where there is nothing to collapse.",
228
+ "control": {
229
+ "kind": "boolean"
230
+ }
174
231
  },
175
232
  {
176
233
  "name": "landmark",
177
234
  "type": "\"complementary\" | \"navigation\"",
178
235
  "required": false,
179
236
  "defaultValue": "navigation",
180
- "description": "Which landmark **both** shapes announce as. Defaults to `\"navigation\"`.\n\nOne prop rather than two, because the column and the drawer are one\nnavigation wearing two shapes: the answer cannot differ by viewport."
237
+ "description": "Which landmark **both** shapes announce as. Defaults to `\"navigation\"`.\n\nOne prop rather than two, because the column and the drawer are one\nnavigation wearing two shapes: the answer cannot differ by viewport.",
238
+ "control": {
239
+ "kind": "enum",
240
+ "members": [
241
+ "complementary",
242
+ "navigation"
243
+ ]
244
+ }
181
245
  },
182
246
  {
183
247
  "name": "collapsed",
184
248
  "type": "boolean",
185
249
  "required": false,
186
250
  "defaultValue": null,
187
- "description": "Collapsed state when controlled. Pass with `onCollapsedChange`."
251
+ "description": "Collapsed state when controlled. Pass with `onCollapsedChange`.",
252
+ "control": {
253
+ "kind": "boolean"
254
+ }
188
255
  },
189
256
  {
190
257
  "name": "defaultCollapsed",
191
258
  "type": "boolean",
192
259
  "required": false,
193
260
  "defaultValue": "false",
194
- "description": "Initial collapsed state when uncontrolled. Defaults to `false`."
261
+ "description": "Initial collapsed state when uncontrolled. Defaults to `false`.",
262
+ "control": {
263
+ "kind": "boolean"
264
+ }
195
265
  },
196
266
  {
197
267
  "name": "onCollapsedChange",
198
268
  "type": "((collapsed: boolean) => void)",
199
269
  "required": false,
200
270
  "defaultValue": null,
201
- "description": "Called with the new collapsed state whenever the rail is pressed."
271
+ "description": "Called with the new collapsed state whenever the rail is pressed.",
272
+ "control": {
273
+ "kind": "callback",
274
+ "fixture": "callback.log"
275
+ }
202
276
  },
203
277
  {
204
278
  "name": "width",
205
279
  "type": "string",
206
280
  "required": false,
207
281
  "defaultValue": "14rem",
208
- "description": "Width while expanded. Any CSS length. Defaults to `\"14rem\"`."
282
+ "description": "Width while expanded. Any CSS length. Defaults to `\"14rem\"`.",
283
+ "control": {
284
+ "kind": "string"
285
+ }
209
286
  },
210
287
  {
211
288
  "name": "collapsedWidth",
212
289
  "type": "string",
213
290
  "required": false,
214
291
  "defaultValue": "3rem",
215
- "description": "Width while collapsed. Any CSS length. Defaults to `\"3rem\"`."
292
+ "description": "Width while collapsed. Any CSS length. Defaults to `\"3rem\"`.",
293
+ "control": {
294
+ "kind": "string"
295
+ }
216
296
  }
217
297
  ],
218
298
  "typeReferences": [
@@ -229,21 +309,36 @@
229
309
  "type": "string",
230
310
  "required": false,
231
311
  "defaultValue": "Open navigation",
232
- "description": "Accessible name for the control. Defaults to `\"Open navigation\"`."
312
+ "description": "Accessible name for the control. Defaults to `\"Open navigation\"`.",
313
+ "control": {
314
+ "kind": "string"
315
+ }
233
316
  },
234
317
  {
235
318
  "name": "icon",
236
319
  "type": "ElementType<any, keyof IntrinsicElements>",
237
320
  "required": false,
238
321
  "defaultValue": "MenuGlyph",
239
- "description": "The icon it draws. Defaults to the shell's own three-stroke glyph."
322
+ "description": "The icon it draws. Defaults to the shell's own three-stroke glyph.",
323
+ "control": {
324
+ "kind": "opaque",
325
+ "fixture": "icon.play"
326
+ }
240
327
  },
241
328
  {
242
329
  "name": "size",
243
330
  "type": "\"sm\" | \"md\" | \"lg\"",
244
331
  "required": false,
245
332
  "defaultValue": "md",
246
- "description": "Which rung of the control ladder the button takes. Defaults to `\"md\"`.\n\nThe rest of the window furniture in this library is built at `\"sm\"`, and\nthat is right for a mouse — but this control renders *only* below the `md`\nbreakpoint, which is to say only on a touch screen, where `sm` (20px at\nnormal density) is under the 24×24 CSS-pixel floor WCAG 2.2 SC 2.5.8 sets.\n`\"md\"` is 24px at normal and large, and the token layer's\n`@media (pointer: coarse)` rule lifts ultra-compact to the same 24px, so\nthe default clears the floor at every density a finger can reach it at."
333
+ "description": "Which rung of the control ladder the button takes. Defaults to `\"md\"`.\n\nThe rest of the window furniture in this library is built at `\"sm\"`, and\nthat is right for a mouse — but this control renders *only* below the `md`\nbreakpoint, which is to say only on a touch screen, where `sm` (20px at\nnormal density) is under the 24×24 CSS-pixel floor WCAG 2.2 SC 2.5.8 sets.\n`\"md\"` is 24px at normal and large, and the token layer's\n`@media (pointer: coarse)` rule lifts ultra-compact to the same 24px, so\nthe default clears the floor at every density a finger can reach it at.",
334
+ "control": {
335
+ "kind": "enum",
336
+ "members": [
337
+ "sm",
338
+ "md",
339
+ "lg"
340
+ ]
341
+ }
247
342
  }
248
343
  ],
249
344
  "typeReferences": [
@@ -260,7 +355,10 @@
260
355
  "type": "boolean",
261
356
  "required": false,
262
357
  "defaultValue": "true",
263
- "description": "Render the `<main>` landmark. Defaults to `true`.\n\nSet it `false` when the shell is embedded in a document that already has a\n`<main>` — a specimen, a screenshot, a shell shown inside a device frame on\na page of prose. A document may have only one, and a nested one is a defect\nrather than a nicety."
358
+ "description": "Render the `<main>` landmark. Defaults to `true`.\n\nSet it `false` when the shell is embedded in a document that already has a\n`<main>` — a specimen, a screenshot, a shell shown inside a device frame on\na page of prose. A document may have only one, and a nested one is a defect\nrather than a nicety.",
359
+ "control": {
360
+ "kind": "boolean"
361
+ }
264
362
  }
265
363
  ],
266
364
  "typeReferences": [
@@ -277,7 +375,10 @@
277
375
  "type": "boolean",
278
376
  "required": false,
279
377
  "defaultValue": "true",
280
- "description": "Draw the standard work-area gutters. Defaults to `true`."
378
+ "description": "Draw the standard work-area gutters. Defaults to `true`.",
379
+ "control": {
380
+ "kind": "boolean"
381
+ }
281
382
  }
282
383
  ],
283
384
  "typeReferences": [
@@ -294,7 +395,10 @@
294
395
  "type": "string",
295
396
  "required": false,
296
397
  "defaultValue": "18rem",
297
- "description": "Width of the column. Any CSS length. Defaults to `\"18rem\"`."
398
+ "description": "Width of the column. Any CSS length. Defaults to `\"18rem\"`.",
399
+ "control": {
400
+ "kind": "string"
401
+ }
298
402
  }
299
403
  ],
300
404
  "typeReferences": [
@@ -308,11 +412,9 @@
308
412
  "--cue-bg",
309
413
  "--cue-border",
310
414
  "--cue-chrome-titlebar",
311
- "--cue-control-md",
312
415
  "--cue-fg",
313
416
  "--cue-fg-muted",
314
417
  "--cue-font-mono",
315
- "--cue-icon-md",
316
418
  "--cue-nav-width",
317
419
  "--cue-pad-row-x",
318
420
  "--cue-space-3",
@@ -12,42 +12,64 @@
12
12
  "type": "ReactNode",
13
13
  "required": false,
14
14
  "defaultValue": null,
15
- "description": "The document name, centred in the title bar."
15
+ "description": "The document name, centred in the title bar.",
16
+ "control": {
17
+ "kind": "node",
18
+ "fixture": "children.text"
19
+ }
16
20
  },
17
21
  {
18
22
  "name": "traffic",
19
23
  "type": "boolean",
20
24
  "required": false,
21
25
  "defaultValue": "true",
22
- "description": "Draw the three window lights. Defaults to `true`."
26
+ "description": "Draw the three window lights. Defaults to `true`.",
27
+ "control": {
28
+ "kind": "boolean"
29
+ }
23
30
  },
24
31
  {
25
32
  "name": "toolbar",
26
33
  "type": "ReactNode",
27
34
  "required": false,
28
35
  "defaultValue": null,
29
- "description": "Contents of the toolbar row under the title bar. Omit for no toolbar."
36
+ "description": "Contents of the toolbar row under the title bar. Omit for no toolbar.",
37
+ "control": {
38
+ "kind": "node",
39
+ "fixture": "children.text"
40
+ }
30
41
  },
31
42
  {
32
43
  "name": "statusBar",
33
44
  "type": "ReactNode",
34
45
  "required": false,
35
46
  "defaultValue": null,
36
- "description": "Contents of the status bar along the bottom. Omit for no status bar."
47
+ "description": "Contents of the status bar along the bottom. Omit for no status bar.",
48
+ "control": {
49
+ "kind": "node",
50
+ "fixture": "children.text"
51
+ }
37
52
  },
38
53
  {
39
54
  "name": "elevated",
40
55
  "type": "boolean",
41
56
  "required": false,
42
57
  "defaultValue": "true",
43
- "description": "Float the frame off the page with a drop shadow. Defaults to `true`.\n\nThis is the one flat-design exception in the kit, and it is not really an\nexception: the component *depicts a floating window*, which is exactly the\ncase the overlay shadow rule already carves out. Set it `false` when the\nframe is inlined into a page that is already a window."
58
+ "description": "Float the frame off the page with a drop shadow. Defaults to `true`.\n\nThis is the one flat-design exception in the kit, and it is not really an\nexception: the component *depicts a floating window*, which is exactly the\ncase the overlay shadow rule already carves out. Set it `false` when the\nframe is inlined into a page that is already a window.",
59
+ "control": {
60
+ "kind": "boolean"
61
+ }
44
62
  },
45
63
  {
46
64
  "name": "children",
47
65
  "type": "ReactNode",
48
66
  "required": false,
49
67
  "defaultValue": null,
50
- "description": "What is inside the window."
68
+ "description": "What is inside the window.",
69
+ "control": {
70
+ "kind": "node",
71
+ "fixture": "children.text"
72
+ }
51
73
  }
52
74
  ],
53
75
  "typeReferences": [