@cueplusplus/ui 0.2.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/CHANGELOG.md +2250 -0
  2. package/dist/agent-runtime/_glyphs.js +43 -0
  3. package/dist/agent-runtime/branch-picker.d.ts +45 -0
  4. package/dist/agent-runtime/branch-picker.js +87 -0
  5. package/dist/agent-runtime/index.d.ts +4 -0
  6. package/dist/agent-runtime/index.js +4 -0
  7. package/dist/agent-runtime/tool-call-card.d.ts +69 -0
  8. package/dist/agent-runtime/tool-call-card.js +187 -0
  9. package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
  10. package/dist/agent-runtime/use-agent-thread.js +251 -0
  11. package/dist/brand/_chassis.d.ts +1 -1
  12. package/dist/brand/cue-mark.d.ts +1 -1
  13. package/dist/brand/cue-mark.js +1 -1
  14. package/dist/chat/index.d.ts +2 -2
  15. package/dist/chat/message-list.d.ts +6 -0
  16. package/dist/chat/message-list.js +35 -0
  17. package/dist/chrome/_edge-scroller.js +12 -1
  18. package/dist/chrome/_tabs-scroll.d.ts +1 -1
  19. package/dist/chrome/_tabs-scroll.js +1 -1
  20. package/dist/chrome/app-shell.d.ts +52 -2
  21. package/dist/chrome/app-shell.js +80 -8
  22. package/dist/chrome/index.d.ts +2 -2
  23. package/dist/configurator/_export.js +3 -2
  24. package/dist/configurator/_overrides.d.ts +1 -1
  25. package/dist/configurator/_overrides.js +18 -6
  26. package/dist/configurator/token-editor.js +4 -1
  27. package/dist/date/_segments.js +37 -2
  28. package/dist/elements/activity-graph.d.ts +40 -0
  29. package/dist/elements/activity-graph.js +81 -0
  30. package/dist/elements/agent-card.d.ts +49 -0
  31. package/dist/elements/agent-card.js +91 -0
  32. package/dist/elements/agent-handoff.d.ts +24 -0
  33. package/dist/elements/agent-handoff.js +53 -0
  34. package/dist/elements/agent-mode-badge.d.ts +72 -0
  35. package/dist/elements/agent-mode-badge.js +110 -0
  36. package/dist/elements/agent-plan.d.ts +24 -0
  37. package/dist/elements/agent-plan.js +74 -0
  38. package/dist/elements/agent-status.d.ts +29 -0
  39. package/dist/elements/agent-status.js +46 -0
  40. package/dist/elements/agent-surface.d.ts +65 -0
  41. package/dist/elements/agent-surface.js +68 -0
  42. package/dist/elements/animated-number.d.ts +86 -0
  43. package/dist/elements/animated-number.js +118 -0
  44. package/dist/elements/approval-card.d.ts +40 -0
  45. package/dist/elements/approval-card.js +78 -0
  46. package/dist/elements/artifact-card.d.ts +30 -0
  47. package/dist/elements/artifact-card.js +58 -0
  48. package/dist/elements/background-inbox.d.ts +39 -0
  49. package/dist/elements/background-inbox.js +60 -0
  50. package/dist/elements/canvas-split.d.ts +77 -0
  51. package/dist/elements/canvas-split.js +138 -0
  52. package/dist/elements/chart.d.ts +41 -0
  53. package/dist/elements/chart.js +117 -0
  54. package/dist/elements/chat-panel.d.ts +46 -0
  55. package/dist/elements/chat-panel.js +104 -0
  56. package/dist/elements/checkpoint-history.d.ts +31 -0
  57. package/dist/elements/checkpoint-history.js +65 -0
  58. package/dist/elements/clamp.d.ts +90 -0
  59. package/dist/elements/clamp.js +109 -0
  60. package/dist/elements/code-diff.d.ts +42 -0
  61. package/dist/elements/code-diff.js +69 -0
  62. package/dist/elements/code-runner.d.ts +38 -0
  63. package/dist/elements/code-runner.js +84 -0
  64. package/dist/elements/command-palette.d.ts +48 -0
  65. package/dist/elements/command-palette.js +129 -0
  66. package/dist/elements/compaction-row.d.ts +63 -0
  67. package/dist/elements/compaction-row.js +110 -0
  68. package/dist/elements/comparison-card.d.ts +47 -0
  69. package/dist/elements/comparison-card.js +69 -0
  70. package/dist/elements/composer.d.ts +274 -0
  71. package/dist/elements/composer.js +505 -0
  72. package/dist/elements/computer-use.d.ts +40 -0
  73. package/dist/elements/computer-use.js +92 -0
  74. package/dist/elements/confidence-marker.d.ts +39 -0
  75. package/dist/elements/confidence-marker.js +64 -0
  76. package/dist/elements/connection-state.d.ts +29 -0
  77. package/dist/elements/connection-state.js +66 -0
  78. package/dist/elements/context-breakdown.d.ts +30 -0
  79. package/dist/elements/context-breakdown.js +86 -0
  80. package/dist/elements/context-usage.d.ts +99 -0
  81. package/dist/elements/context-usage.js +225 -0
  82. package/dist/elements/conversation-search.d.ts +48 -0
  83. package/dist/elements/conversation-search.js +88 -0
  84. package/dist/elements/cost-meter.d.ts +33 -0
  85. package/dist/elements/cost-meter.js +75 -0
  86. package/dist/elements/data-table.d.ts +31 -0
  87. package/dist/elements/data-table.js +67 -0
  88. package/dist/elements/day-separator.d.ts +34 -0
  89. package/dist/elements/day-separator.js +50 -0
  90. package/dist/elements/diagram.d.ts +34 -0
  91. package/dist/elements/diagram.js +75 -0
  92. package/dist/elements/document-reference.d.ts +37 -0
  93. package/dist/elements/document-reference.js +66 -0
  94. package/dist/elements/draft-restore.d.ts +27 -0
  95. package/dist/elements/draft-restore.js +54 -0
  96. package/dist/elements/edit-message.d.ts +36 -0
  97. package/dist/elements/edit-message.js +77 -0
  98. package/dist/elements/elements.css +459 -0
  99. package/dist/elements/elicitation-form.d.ts +48 -0
  100. package/dist/elements/elicitation-form.js +106 -0
  101. package/dist/elements/empty-state.d.ts +52 -0
  102. package/dist/elements/empty-state.js +98 -0
  103. package/dist/elements/end-of-turn-summary.d.ts +60 -0
  104. package/dist/elements/end-of-turn-summary.js +75 -0
  105. package/dist/elements/error-state.d.ts +29 -0
  106. package/dist/elements/error-state.js +55 -0
  107. package/dist/elements/feedback-dialog.d.ts +36 -0
  108. package/dist/elements/feedback-dialog.js +81 -0
  109. package/dist/elements/file-tree.d.ts +45 -0
  110. package/dist/elements/file-tree.js +84 -0
  111. package/dist/elements/flow-graph.d.ts +45 -0
  112. package/dist/elements/flow-graph.js +78 -0
  113. package/dist/elements/generative/chart.js +200 -0
  114. package/dist/elements/generative/faults.js +111 -0
  115. package/dist/elements/generative/icons.d.ts +41 -0
  116. package/dist/elements/generative/icons.js +190 -0
  117. package/dist/elements/generative/intrinsics.js +483 -0
  118. package/dist/elements/generative/spec.d.ts +110 -0
  119. package/dist/elements/generative/spec.js +366 -0
  120. package/dist/elements/generative.css +1145 -0
  121. package/dist/elements/generative.d.ts +144 -0
  122. package/dist/elements/generative.js +126 -0
  123. package/dist/elements/guardrail-notice.d.ts +29 -0
  124. package/dist/elements/guardrail-notice.js +63 -0
  125. package/dist/elements/image-generation.d.ts +18 -0
  126. package/dist/elements/image-generation.js +64 -0
  127. package/dist/elements/index.d.ts +116 -0
  128. package/dist/elements/index.js +115 -0
  129. package/dist/elements/inline-citation.d.ts +43 -0
  130. package/dist/elements/inline-citation.js +93 -0
  131. package/dist/elements/job-progress.d.ts +49 -0
  132. package/dist/elements/job-progress.js +74 -0
  133. package/dist/elements/launcher-bubble.d.ts +34 -0
  134. package/dist/elements/launcher-bubble.js +72 -0
  135. package/dist/elements/live-region-announcer.d.ts +130 -0
  136. package/dist/elements/live-region-announcer.js +230 -0
  137. package/dist/elements/loading-state.d.ts +27 -0
  138. package/dist/elements/loading-state.js +36 -0
  139. package/dist/elements/map-answer.d.ts +38 -0
  140. package/dist/elements/map-answer.js +93 -0
  141. package/dist/elements/markdown.d.ts +131 -0
  142. package/dist/elements/markdown.js +528 -0
  143. package/dist/elements/math-block.d.ts +51 -0
  144. package/dist/elements/math-block.js +70 -0
  145. package/dist/elements/mcp-server-panel.d.ts +41 -0
  146. package/dist/elements/mcp-server-panel.js +115 -0
  147. package/dist/elements/memory-chips.d.ts +30 -0
  148. package/dist/elements/memory-chips.js +43 -0
  149. package/dist/elements/message-actions.d.ts +38 -0
  150. package/dist/elements/message-actions.js +71 -0
  151. package/dist/elements/message-attachment.d.ts +48 -0
  152. package/dist/elements/message-attachment.js +63 -0
  153. package/dist/elements/message-branches.d.ts +25 -0
  154. package/dist/elements/message-branches.js +65 -0
  155. package/dist/elements/message-pair.d.ts +33 -0
  156. package/dist/elements/message-pair.js +65 -0
  157. package/dist/elements/message-queue.d.ts +31 -0
  158. package/dist/elements/message-queue.js +80 -0
  159. package/dist/elements/message-timing.d.ts +33 -0
  160. package/dist/elements/message-timing.js +37 -0
  161. package/dist/elements/mobile-composer.d.ts +44 -0
  162. package/dist/elements/mobile-composer.js +88 -0
  163. package/dist/elements/model-picker.d.ts +38 -0
  164. package/dist/elements/model-picker.js +69 -0
  165. package/dist/elements/number-ticker.d.ts +18 -0
  166. package/dist/elements/number-ticker.js +47 -0
  167. package/dist/elements/onboarding.d.ts +30 -0
  168. package/dist/elements/onboarding.js +75 -0
  169. package/dist/elements/permission-grant.d.ts +35 -0
  170. package/dist/elements/permission-grant.js +86 -0
  171. package/dist/elements/permission-scopes.d.ts +215 -0
  172. package/dist/elements/permission-scopes.js +249 -0
  173. package/dist/elements/prompt-library.d.ts +43 -0
  174. package/dist/elements/prompt-library.js +117 -0
  175. package/dist/elements/queue-dock.d.ts +101 -0
  176. package/dist/elements/queue-dock.js +132 -0
  177. package/dist/elements/quota-banner.d.ts +26 -0
  178. package/dist/elements/quota-banner.js +66 -0
  179. package/dist/elements/quote-reply.d.ts +44 -0
  180. package/dist/elements/quote-reply.js +79 -0
  181. package/dist/elements/range.d.ts +29 -0
  182. package/dist/elements/range.js +45 -0
  183. package/dist/elements/read-aloud.d.ts +45 -0
  184. package/dist/elements/read-aloud.js +75 -0
  185. package/dist/elements/reasoning-effort.d.ts +36 -0
  186. package/dist/elements/reasoning-effort.js +67 -0
  187. package/dist/elements/reasoning-panel.d.ts +46 -0
  188. package/dist/elements/reasoning-panel.js +75 -0
  189. package/dist/elements/recommendation-card.d.ts +45 -0
  190. package/dist/elements/recommendation-card.js +83 -0
  191. package/dist/elements/regenerate-menu.d.ts +45 -0
  192. package/dist/elements/regenerate-menu.js +51 -0
  193. package/dist/elements/replay.d.ts +217 -0
  194. package/dist/elements/replay.js +498 -0
  195. package/dist/elements/research-report.d.ts +38 -0
  196. package/dist/elements/research-report.js +69 -0
  197. package/dist/elements/retrieval-chunks.d.ts +43 -0
  198. package/dist/elements/retrieval-chunks.js +81 -0
  199. package/dist/elements/revert-dock.d.ts +159 -0
  200. package/dist/elements/revert-dock.js +327 -0
  201. package/dist/elements/reviewable-diff.d.ts +45 -0
  202. package/dist/elements/reviewable-diff.js +110 -0
  203. package/dist/elements/risk-badge.d.ts +52 -0
  204. package/dist/elements/risk-badge.js +91 -0
  205. package/dist/elements/schedule-card.d.ts +42 -0
  206. package/dist/elements/schedule-card.js +90 -0
  207. package/dist/elements/score-breakdown.d.ts +47 -0
  208. package/dist/elements/score-breakdown.js +82 -0
  209. package/dist/elements/scroll-anchor.d.ts +32 -0
  210. package/dist/elements/scroll-anchor.js +121 -0
  211. package/dist/elements/settings-panel.d.ts +52 -0
  212. package/dist/elements/settings-panel.js +107 -0
  213. package/dist/elements/shared-conversation.d.ts +39 -0
  214. package/dist/elements/shared-conversation.js +68 -0
  215. package/dist/elements/sources.d.ts +33 -0
  216. package/dist/elements/sources.js +61 -0
  217. package/dist/elements/speaker-identity.d.ts +32 -0
  218. package/dist/elements/speaker-identity.js +51 -0
  219. package/dist/elements/spec-sheet.d.ts +31 -0
  220. package/dist/elements/spec-sheet.js +45 -0
  221. package/dist/elements/stopped-run.d.ts +22 -0
  222. package/dist/elements/stopped-run.js +50 -0
  223. package/dist/elements/streaming-text.d.ts +31 -0
  224. package/dist/elements/streaming-text.js +45 -0
  225. package/dist/elements/subagent-list.d.ts +37 -0
  226. package/dist/elements/subagent-list.js +79 -0
  227. package/dist/elements/suggestions.d.ts +30 -0
  228. package/dist/elements/suggestions.js +36 -0
  229. package/dist/elements/surfaces.d.ts +85 -0
  230. package/dist/elements/surfaces.js +107 -0
  231. package/dist/elements/tail-status.d.ts +131 -0
  232. package/dist/elements/tail-status.js +94 -0
  233. package/dist/elements/terminal-block.d.ts +29 -0
  234. package/dist/elements/terminal-block.js +54 -0
  235. package/dist/elements/thinking-indicator.d.ts +18 -0
  236. package/dist/elements/thinking-indicator.js +36 -0
  237. package/dist/elements/thread-list.d.ts +35 -0
  238. package/dist/elements/thread-list.js +68 -0
  239. package/dist/elements/thread-search.d.ts +42 -0
  240. package/dist/elements/thread-search.js +99 -0
  241. package/dist/elements/timeline.d.ts +37 -0
  242. package/dist/elements/timeline.js +46 -0
  243. package/dist/elements/todo-list.d.ts +42 -0
  244. package/dist/elements/todo-list.js +59 -0
  245. package/dist/elements/tool-call.d.ts +41 -0
  246. package/dist/elements/tool-call.js +85 -0
  247. package/dist/elements/tool-error.d.ts +39 -0
  248. package/dist/elements/tool-error.js +76 -0
  249. package/dist/elements/tool-group.d.ts +45 -0
  250. package/dist/elements/tool-group.js +71 -0
  251. package/dist/elements/tool-timeline.d.ts +65 -0
  252. package/dist/elements/tool-timeline.js +88 -0
  253. package/dist/elements/trace-waterfall.d.ts +37 -0
  254. package/dist/elements/trace-waterfall.js +69 -0
  255. package/dist/elements/transcript-rules.d.ts +67 -0
  256. package/dist/elements/transcript-rules.js +95 -0
  257. package/dist/elements/turn-footer.d.ts +74 -0
  258. package/dist/elements/turn-footer.js +101 -0
  259. package/dist/elements/typing-indicator.d.ts +16 -0
  260. package/dist/elements/typing-indicator.js +51 -0
  261. package/dist/elements/verdict-row.d.ts +89 -0
  262. package/dist/elements/verdict-row.js +150 -0
  263. package/dist/elements/vocabulary.d.ts +612 -0
  264. package/dist/elements/vocabulary.js +611 -0
  265. package/dist/elements/voice-conversation.d.ts +49 -0
  266. package/dist/elements/voice-conversation.js +123 -0
  267. package/dist/elements/web-preview.d.ts +32 -0
  268. package/dist/elements/web-preview.js +66 -0
  269. package/dist/elements/web-search.d.ts +37 -0
  270. package/dist/elements/web-search.js +66 -0
  271. package/dist/elements/work-collapse.d.ts +103 -0
  272. package/dist/elements/work-collapse.js +131 -0
  273. package/dist/icons/containers.d.ts +89 -0
  274. package/dist/icons/containers.js +295 -0
  275. package/dist/icons/index.d.ts +2 -0
  276. package/dist/index.d.ts +9 -7
  277. package/dist/index.js +3 -2
  278. package/dist/instruments/index.d.ts +2 -2
  279. package/dist/instruments/index.js +2 -2
  280. package/dist/instruments/table.d.ts +14 -1
  281. package/dist/instruments/table.js +20 -1
  282. package/dist/instruments/two-step-button.js +25 -6
  283. package/dist/layout/sidebar.d.ts +19 -1
  284. package/dist/layout/sidebar.js +19 -1
  285. package/dist/primitives/button.js +11 -1
  286. package/dist/primitives/chip.d.ts +34 -8
  287. package/dist/primitives/chip.js +97 -11
  288. package/dist/styles.css +11 -1
  289. package/dist/system/agent-skin.d.ts +27 -0
  290. package/dist/system/agent-skin.js +20 -0
  291. package/dist/system/index.d.ts +3 -3
  292. package/dist/system/portal.d.ts +5 -3
  293. package/dist/system/portal.js +36 -8
  294. package/dist/system/prepaint.d.ts +20 -2
  295. package/dist/system/prepaint.js +39 -33
  296. package/dist/system/theme-provider.d.ts +13 -2
  297. package/dist/system/theme-provider.js +107 -26
  298. package/dist/system/use-density.d.ts +9 -0
  299. package/dist/system/use-density.js +9 -0
  300. package/dist/system/use-isomorphic-layout-effect.js +19 -1
  301. package/dist/theming/_presets.d.ts +1 -1
  302. package/dist/theming/_presets.js +124 -8
  303. package/dist/theming/contrast.d.ts +16 -4
  304. package/dist/theming/contrast.js +33 -6
  305. package/dist/theming/create-theme.d.ts +8 -4
  306. package/dist/theming/create-theme.js +56 -20
  307. package/dist/theming/serialize.d.ts +11 -2
  308. package/dist/theming/serialize.js +87 -9
  309. package/manifest/components/accordion.json +154 -0
  310. package/manifest/components/activity-graph.json +88 -0
  311. package/manifest/components/agent-card.json +120 -0
  312. package/manifest/components/agent-handoff.json +87 -0
  313. package/manifest/components/agent-mode-badge.json +84 -0
  314. package/manifest/components/agent-pile.json +116 -0
  315. package/manifest/components/agent-plan.json +67 -0
  316. package/manifest/components/agent-status.json +73 -0
  317. package/manifest/components/agent-surface.json +78 -0
  318. package/manifest/components/alert-dialog.json +190 -0
  319. package/manifest/components/animated-number.json +67 -0
  320. package/manifest/components/app-bar.json +244 -0
  321. package/manifest/components/app-shell.json +383 -0
  322. package/manifest/components/app-window-frame.json +102 -0
  323. package/manifest/components/approval-card.json +106 -0
  324. package/manifest/components/artifact-card.json +81 -0
  325. package/manifest/components/ask-box.json +209 -0
  326. package/manifest/components/audience-icon.json +52 -0
  327. package/manifest/components/autocomplete.json +197 -0
  328. package/manifest/components/avatar-group.json +72 -0
  329. package/manifest/components/avatar.json +95 -0
  330. package/manifest/components/background-inbox.json +71 -0
  331. package/manifest/components/branch-picker.json +124 -0
  332. package/manifest/components/breadcrumb.json +74 -0
  333. package/manifest/components/button-group.json +74 -0
  334. package/manifest/components/button.json +126 -0
  335. package/manifest/components/calendar.json +65 -0
  336. package/manifest/components/canvas-split-body.json +62 -0
  337. package/manifest/components/canvas-split-document.json +54 -0
  338. package/manifest/components/canvas-split-header.json +83 -0
  339. package/manifest/components/canvas-split-line.json +62 -0
  340. package/manifest/components/canvas-split-message.json +62 -0
  341. package/manifest/components/canvas-split-thread.json +54 -0
  342. package/manifest/components/canvas-split.json +60 -0
  343. package/manifest/components/card.json +140 -0
  344. package/manifest/components/carousel.json +200 -0
  345. package/manifest/components/catalogue-icon.json +52 -0
  346. package/manifest/components/channel-beta-icon.json +52 -0
  347. package/manifest/components/channel-matrix.json +173 -0
  348. package/manifest/components/channel-released-icon.json +52 -0
  349. package/manifest/components/chart-container.json +111 -0
  350. package/manifest/components/chart-ramp.json +72 -0
  351. package/manifest/components/chart-swatch.json +65 -0
  352. package/manifest/components/chart-tooltip-content.json +114 -0
  353. package/manifest/components/chart.json +93 -0
  354. package/manifest/components/chat-empty-state.json +55 -0
  355. package/manifest/components/chat-panel-assistant-message.json +51 -0
  356. package/manifest/components/chat-panel-composer.json +66 -0
  357. package/manifest/components/chat-panel-messages.json +51 -0
  358. package/manifest/components/chat-panel-typing.json +51 -0
  359. package/manifest/components/chat-panel-user-message.json +51 -0
  360. package/manifest/components/chat-panel.json +57 -0
  361. package/manifest/components/checkbox-group.json +68 -0
  362. package/manifest/components/checkbox.json +93 -0
  363. package/manifest/components/checkpoint-history.json +80 -0
  364. package/manifest/components/chip.json +144 -0
  365. package/manifest/components/clamp.json +102 -0
  366. package/manifest/components/cli-tool-icon.json +52 -0
  367. package/manifest/components/code-diff.json +87 -0
  368. package/manifest/components/code-runner.json +97 -0
  369. package/manifest/components/collapsible.json +120 -0
  370. package/manifest/components/color-area.json +59 -0
  371. package/manifest/components/color-field.json +79 -0
  372. package/manifest/components/color-picker.json +175 -0
  373. package/manifest/components/color-slider.json +75 -0
  374. package/manifest/components/color-swatch.json +68 -0
  375. package/manifest/components/colors-section.json +66 -0
  376. package/manifest/components/combobox.json +198 -0
  377. package/manifest/components/command-palette.json +177 -0
  378. package/manifest/components/compaction-row.json +100 -0
  379. package/manifest/components/comparison-card.json +83 -0
  380. package/manifest/components/composer-actions.json +65 -0
  381. package/manifest/components/composer-attach-button.json +65 -0
  382. package/manifest/components/composer-attachment-chip.json +75 -0
  383. package/manifest/components/composer-attachments.json +60 -0
  384. package/manifest/components/composer-bar.json +73 -0
  385. package/manifest/components/composer-command-item.json +79 -0
  386. package/manifest/components/composer-context.json +67 -0
  387. package/manifest/components/composer-input.json +73 -0
  388. package/manifest/components/composer-menu-item.json +72 -0
  389. package/manifest/components/composer-menu.json +79 -0
  390. package/manifest/components/composer-model-item.json +75 -0
  391. package/manifest/components/composer-model-trigger.json +75 -0
  392. package/manifest/components/composer-person-item.json +79 -0
  393. package/manifest/components/composer-send.json +80 -0
  394. package/manifest/components/composer-toolbar.json +65 -0
  395. package/manifest/components/composer-voice-button.json +68 -0
  396. package/manifest/components/composer-voice.json +75 -0
  397. package/manifest/components/composer.json +176 -0
  398. package/manifest/components/computer-use.json +84 -0
  399. package/manifest/components/confidence-marker.json +74 -0
  400. package/manifest/components/connection-state.json +84 -0
  401. package/manifest/components/container.json +60 -0
  402. package/manifest/components/context-breakdown.json +65 -0
  403. package/manifest/components/context-menu.json +121 -0
  404. package/manifest/components/context-usage.json +85 -0
  405. package/manifest/components/conversation-search.json +92 -0
  406. package/manifest/components/copy-button.json +93 -0
  407. package/manifest/components/cost-meter.json +74 -0
  408. package/manifest/components/cue-logotype.json +96 -0
  409. package/manifest/components/cue-mark.json +97 -0
  410. package/manifest/components/cue-portal-frame.json +55 -0
  411. package/manifest/components/data-table-pagination.json +83 -0
  412. package/manifest/components/data-table-toolbar.json +104 -0
  413. package/manifest/components/date-field.json +80 -0
  414. package/manifest/components/date-picker.json +191 -0
  415. package/manifest/components/date-range-picker.json +191 -0
  416. package/manifest/components/day-separator.json +58 -0
  417. package/manifest/components/delegation-card.json +144 -0
  418. package/manifest/components/density.json +58 -0
  419. package/manifest/components/description-list.json +84 -0
  420. package/manifest/components/diagram.json +100 -0
  421. package/manifest/components/dialog.json +198 -0
  422. package/manifest/components/disclosure.json +109 -0
  423. package/manifest/components/dmx-bar.json +94 -0
  424. package/manifest/components/dmx-strip.json +101 -0
  425. package/manifest/components/document-reference.json +90 -0
  426. package/manifest/components/draft-restore.json +82 -0
  427. package/manifest/components/drawer.json +179 -0
  428. package/manifest/components/dropdown-menu.json +229 -0
  429. package/manifest/components/edit-message.json +105 -0
  430. package/manifest/components/elements-command-palette.json +100 -0
  431. package/manifest/components/elements-composer.json +71 -0
  432. package/manifest/components/elements-data-table.json +68 -0
  433. package/manifest/components/elements-timeline.json +69 -0
  434. package/manifest/components/elicitation-form.json +103 -0
  435. package/manifest/components/empty-state-composer.json +64 -0
  436. package/manifest/components/empty-state-greeting.json +49 -0
  437. package/manifest/components/empty-state-suggestion.json +57 -0
  438. package/manifest/components/empty-state-suggestions.json +49 -0
  439. package/manifest/components/empty-state.json +90 -0
  440. package/manifest/components/end-of-turn-summary.json +77 -0
  441. package/manifest/components/env-var-input.json +150 -0
  442. package/manifest/components/error-state.json +80 -0
  443. package/manifest/components/export-dialog.json +84 -0
  444. package/manifest/components/eyebrow.json +56 -0
  445. package/manifest/components/feedback-dialog.json +107 -0
  446. package/manifest/components/field-description.json +63 -0
  447. package/manifest/components/field-error.json +77 -0
  448. package/manifest/components/field-label.json +63 -0
  449. package/manifest/components/field.json +79 -0
  450. package/manifest/components/file-tree.json +83 -0
  451. package/manifest/components/file-upload.json +159 -0
  452. package/manifest/components/flow-background.json +50 -0
  453. package/manifest/components/flow-controls.json +50 -0
  454. package/manifest/components/flow-graph.json +75 -0
  455. package/manifest/components/folder-icon.json +52 -0
  456. package/manifest/components/footer.json +112 -0
  457. package/manifest/components/frac.json +59 -0
  458. package/manifest/components/generation-loader.json +64 -0
  459. package/manifest/components/generative-ui.json +93 -0
  460. package/manifest/components/grid.json +81 -0
  461. package/manifest/components/group-bar.json +102 -0
  462. package/manifest/components/guardrail-notice.json +91 -0
  463. package/manifest/components/hover-card.json +151 -0
  464. package/manifest/components/icon-button.json +88 -0
  465. package/manifest/components/image-generation.json +67 -0
  466. package/manifest/components/info-tip.json +98 -0
  467. package/manifest/components/inline-citation.json +77 -0
  468. package/manifest/components/input-group.json +91 -0
  469. package/manifest/components/input.json +89 -0
  470. package/manifest/components/item.json +129 -0
  471. package/manifest/components/job-progress.json +96 -0
  472. package/manifest/components/kbd.json +52 -0
  473. package/manifest/components/launcher-bubble.json +105 -0
  474. package/manifest/components/link.json +81 -0
  475. package/manifest/components/live-region-announcer.json +79 -0
  476. package/manifest/components/log-viewer.json +139 -0
  477. package/manifest/components/map-answer.json +83 -0
  478. package/manifest/components/markdown-text.json +94 -0
  479. package/manifest/components/math-block.json +74 -0
  480. package/manifest/components/mcp-server-icon.json +52 -0
  481. package/manifest/components/mcp-server-panel.json +87 -0
  482. package/manifest/components/memory-chips.json +65 -0
  483. package/manifest/components/menubar.json +157 -0
  484. package/manifest/components/message-actions.json +99 -0
  485. package/manifest/components/message-attachments.json +63 -0
  486. package/manifest/components/message-branches.json +71 -0
  487. package/manifest/components/message-list.json +100 -0
  488. package/manifest/components/message-pair.json +86 -0
  489. package/manifest/components/message-queue.json +74 -0
  490. package/manifest/components/message-timing.json +62 -0
  491. package/manifest/components/message.json +116 -0
  492. package/manifest/components/meter.json +114 -0
  493. package/manifest/components/mobile-composer.json +126 -0
  494. package/manifest/components/model-picker.json +76 -0
  495. package/manifest/components/multi-select.json +190 -0
  496. package/manifest/components/musical-time-input.json +113 -0
  497. package/manifest/components/navigation-menu.json +226 -0
  498. package/manifest/components/node-card.json +109 -0
  499. package/manifest/components/node-handle.json +69 -0
  500. package/manifest/components/number-field.json +107 -0
  501. package/manifest/components/number-ticker.json +61 -0
  502. package/manifest/components/onboarding.json +84 -0
  503. package/manifest/components/otp-field.json +128 -0
  504. package/manifest/components/page-shell.json +96 -0
  505. package/manifest/components/pagination.json +92 -0
  506. package/manifest/components/panel-header.json +77 -0
  507. package/manifest/components/panel.json +71 -0
  508. package/manifest/components/password-input.json +119 -0
  509. package/manifest/components/permission-grant.json +92 -0
  510. package/manifest/components/permission-scopes.json +139 -0
  511. package/manifest/components/piano-keyboard.json +120 -0
  512. package/manifest/components/plussie.json +111 -0
  513. package/manifest/components/popover.json +193 -0
  514. package/manifest/components/preset-section.json +73 -0
  515. package/manifest/components/progress.json +95 -0
  516. package/manifest/components/prompt-library.json +99 -0
  517. package/manifest/components/queue-dock.json +110 -0
  518. package/manifest/components/quota-banner.json +94 -0
  519. package/manifest/components/quote-reply.json +105 -0
  520. package/manifest/components/radio-group.json +73 -0
  521. package/manifest/components/radio.json +80 -0
  522. package/manifest/components/rating.json +141 -0
  523. package/manifest/components/read-aloud.json +111 -0
  524. package/manifest/components/reasoning-effort.json +81 -0
  525. package/manifest/components/reasoning-panel.json +108 -0
  526. package/manifest/components/recommendation-card.json +107 -0
  527. package/manifest/components/regenerate-menu.json +89 -0
  528. package/manifest/components/replay-player.json +102 -0
  529. package/manifest/components/research-report.json +76 -0
  530. package/manifest/components/resizable.json +88 -0
  531. package/manifest/components/retrieval-chunks.json +84 -0
  532. package/manifest/components/revert-dock.json +150 -0
  533. package/manifest/components/reviewable-diff.json +93 -0
  534. package/manifest/components/risk-badge.json +74 -0
  535. package/manifest/components/row.json +109 -0
  536. package/manifest/components/schedule-card.json +101 -0
  537. package/manifest/components/score-breakdown.json +91 -0
  538. package/manifest/components/scroll-anchor.json +72 -0
  539. package/manifest/components/scroll-area.json +91 -0
  540. package/manifest/components/scrollable-tabs-list.json +83 -0
  541. package/manifest/components/scrub-input.json +200 -0
  542. package/manifest/components/seam-cell.json +75 -0
  543. package/manifest/components/seam-grid.json +75 -0
  544. package/manifest/components/seam-list.json +56 -0
  545. package/manifest/components/search-input.json +134 -0
  546. package/manifest/components/section-header.json +112 -0
  547. package/manifest/components/segmented-control.json +138 -0
  548. package/manifest/components/select.json +194 -0
  549. package/manifest/components/separator.json +53 -0
  550. package/manifest/components/settings-panel.json +118 -0
  551. package/manifest/components/shape-section.json +66 -0
  552. package/manifest/components/shared-conversation.json +89 -0
  553. package/manifest/components/sheet.json +186 -0
  554. package/manifest/components/shimmer-label.json +59 -0
  555. package/manifest/components/sidebar.json +198 -0
  556. package/manifest/components/signal-edge.json +56 -0
  557. package/manifest/components/skeleton.json +46 -0
  558. package/manifest/components/skill-icon.json +52 -0
  559. package/manifest/components/slider.json +89 -0
  560. package/manifest/components/sources.json +83 -0
  561. package/manifest/components/sparkline.json +76 -0
  562. package/manifest/components/speaker-identity.json +61 -0
  563. package/manifest/components/spec-sheet.json +80 -0
  564. package/manifest/components/spectrum-visualizer.json +115 -0
  565. package/manifest/components/spinner.json +61 -0
  566. package/manifest/components/stack-icon.json +52 -0
  567. package/manifest/components/stack.json +96 -0
  568. package/manifest/components/stacks-matrix-icon.json +52 -0
  569. package/manifest/components/stat.json +87 -0
  570. package/manifest/components/status-bar.json +58 -0
  571. package/manifest/components/status-dot.json +78 -0
  572. package/manifest/components/stepper.json +89 -0
  573. package/manifest/components/stopped-run.json +81 -0
  574. package/manifest/components/streaming-text.json +71 -0
  575. package/manifest/components/sub.json +44 -0
  576. package/manifest/components/subagent-list.json +88 -0
  577. package/manifest/components/suggestions.json +84 -0
  578. package/manifest/components/sup.json +44 -0
  579. package/manifest/components/swap-label.json +71 -0
  580. package/manifest/components/switch.json +87 -0
  581. package/manifest/components/table-scroll-region.json +69 -0
  582. package/manifest/components/table.json +155 -0
  583. package/manifest/components/tabs.json +145 -0
  584. package/manifest/components/tags-input.json +190 -0
  585. package/manifest/components/tail-status.json +109 -0
  586. package/manifest/components/terminal-block.json +91 -0
  587. package/manifest/components/terminal-frame.json +119 -0
  588. package/manifest/components/textarea.json +76 -0
  589. package/manifest/components/theme-configurator.json +124 -0
  590. package/manifest/components/theme-provider.json +134 -0
  591. package/manifest/components/thinking-indicator.json +63 -0
  592. package/manifest/components/thread-list.json +76 -0
  593. package/manifest/components/thread-search.json +90 -0
  594. package/manifest/components/threshold-rail.json +160 -0
  595. package/manifest/components/time-boundary.json +62 -0
  596. package/manifest/components/time-field.json +80 -0
  597. package/manifest/components/timeline-ruler.json +139 -0
  598. package/manifest/components/timeline.json +115 -0
  599. package/manifest/components/title-bar.json +82 -0
  600. package/manifest/components/toast.json +130 -0
  601. package/manifest/components/todo-list.json +69 -0
  602. package/manifest/components/toggle-group.json +106 -0
  603. package/manifest/components/toggle.json +109 -0
  604. package/manifest/components/token-editor.json +90 -0
  605. package/manifest/components/tool-call-card.json +200 -0
  606. package/manifest/components/tool-call.json +119 -0
  607. package/manifest/components/tool-error.json +114 -0
  608. package/manifest/components/tool-group.json +83 -0
  609. package/manifest/components/tool-timeline.json +119 -0
  610. package/manifest/components/toolbar.json +163 -0
  611. package/manifest/components/tooltip.json +164 -0
  612. package/manifest/components/trace-waterfall.json +74 -0
  613. package/manifest/components/tree-visibility-toggle.json +84 -0
  614. package/manifest/components/tree.json +140 -0
  615. package/manifest/components/turn-footer.json +105 -0
  616. package/manifest/components/two-step-button.json +113 -0
  617. package/manifest/components/typing-indicator.json +53 -0
  618. package/manifest/components/universe-grid.json +127 -0
  619. package/manifest/components/unread-divider.json +55 -0
  620. package/manifest/components/usage-chart.json +124 -0
  621. package/manifest/components/verdict-row.json +91 -0
  622. package/manifest/components/voice-conversation.json +109 -0
  623. package/manifest/components/web-preview.json +87 -0
  624. package/manifest/components/web-search.json +92 -0
  625. package/manifest/components/work-collapse.json +102 -0
  626. package/manifest/manifest.json +4779 -0
  627. package/manifest/tokens.json +159 -0
  628. package/package.json +54 -5
@@ -0,0 +1,95 @@
1
+ {
2
+ "name": "Avatar",
3
+ "slug": "avatar",
4
+ "group": "primitives",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "A round user/entity avatar sized off the density control ladder, so it lines\nup with the buttons and inputs on the same row.\n\nWraps Base UI's `Avatar`, which owns the image-loading state machine: the\nfallback shows immediately, is replaced when the image decodes, and comes\nback if the image errors.",
9
+ "props": [
10
+ {
11
+ "name": "src",
12
+ "type": "string",
13
+ "required": false,
14
+ "defaultValue": null,
15
+ "description": "Image URL. Omit to go straight to the fallback."
16
+ },
17
+ {
18
+ "name": "alt",
19
+ "type": "string",
20
+ "required": false,
21
+ "defaultValue": null,
22
+ "description": "Alt text for the image, and the name the default initials are derived from."
23
+ },
24
+ {
25
+ "name": "fallback",
26
+ "type": "ReactNode",
27
+ "required": false,
28
+ "defaultValue": null,
29
+ "description": "What to show while the image loads or after it fails. Defaults to initials from `alt`."
30
+ },
31
+ {
32
+ "name": "size",
33
+ "type": "\"sm\" | \"md\" | \"lg\"",
34
+ "required": false,
35
+ "defaultValue": "md",
36
+ "description": ""
37
+ }
38
+ ],
39
+ "typeReferences": [
40
+ "Omit<React.ComponentPropsWithoutRef<\"span\">, \"children\">",
41
+ "VariantProps<typeof avatarVariants>"
42
+ ],
43
+ "subcomponents": [],
44
+ "parts": [],
45
+ "variants": {
46
+ "size": [
47
+ "sm",
48
+ "md",
49
+ "lg"
50
+ ]
51
+ },
52
+ "defaultVariants": {
53
+ "size": "md"
54
+ },
55
+ "tokensUsed": [
56
+ "--cue-bg",
57
+ "--cue-border",
58
+ "--cue-control-lg",
59
+ "--cue-control-md",
60
+ "--cue-control-sm",
61
+ "--cue-fg-muted",
62
+ "--cue-font-mono",
63
+ "--cue-space-2",
64
+ "--cue-surface-2",
65
+ "--cue-surface-3",
66
+ "--cue-text-label",
67
+ "--cue-text-micro",
68
+ "--cue-text-ui"
69
+ ],
70
+ "summary": "A round user/entity avatar sized off the density control ladder, so it lines up with the buttons and inputs on the same row.",
71
+ "examples": [
72
+ {
73
+ "title": "Usage",
74
+ "code": "<Avatar alt=\"Ada Lovelace\" src=\"/ada.png\" />\n<Avatar alt=\"Ada Lovelace\" size=\"sm\" />",
75
+ "language": "tsx"
76
+ }
77
+ ],
78
+ "status": "todo-docs",
79
+ "url": "/docs/components/avatar",
80
+ "mdUrl": "/docs/components/avatar.md",
81
+ "jsonUrl": "/r/components/avatar.json",
82
+ "specimens": [
83
+ {
84
+ "title": "Avatar",
85
+ "group": "primitives",
86
+ "components": [
87
+ "Avatar"
88
+ ],
89
+ "code": "<Specimens>\n {SIZES.map((size) => (\n <Specimen key={size} label={size}>\n <Avatar size={size} fallback=\"CR\" />\n </Specimen>\n ))}\n <Specimen label=\"image\">\n <Avatar\n src=\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' fill='%23888'/%3E%3C/svg%3E\"\n alt=\"Operator portrait\"\n />\n </Specimen>\n</Specimens>",
90
+ "note": "Initials fall back when there is no image; the ring is drawn in the background colour so a pile reads as separate faces.",
91
+ "interaction": "none."
92
+ }
93
+ ],
94
+ "todo": true
95
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "BackgroundInbox",
3
+ "slug": "background-inbox",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "Work still going somewhere else, and the results waiting to be collected.",
11
+ "props": [
12
+ {
13
+ "name": "runs",
14
+ "type": "readonly BackgroundRun[]",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "Detached runs. The header counts what is ready rather than what is in flight,\nbecause ready is the thing that needs you."
18
+ },
19
+ {
20
+ "name": "onCollect",
21
+ "type": "((id: string) => void)",
22
+ "required": false,
23
+ "defaultValue": null,
24
+ "description": "Called to pull a finished run back into the thread. Running rows are not clickable."
25
+ }
26
+ ],
27
+ "typeReferences": [
28
+ "Omit<ComponentProps<\"div\">, \"children\" | \"runs\" | \"onCollect\"> & {\n /**\n * Detached runs. The header counts what is ready rather than what is in flight,\n * because ready is the thing that needs you.\n */\n runs: readonly BackgroundRun[];\n /** Called to pull a finished run back into the thread. Running rows are not clickable. */\n onCollect?: (id: string) => void;\n}"
29
+ ],
30
+ "subcomponents": [],
31
+ "parts": [],
32
+ "variants": {},
33
+ "defaultVariants": {},
34
+ "tokensUsed": [
35
+ "--cue-danger",
36
+ "--cue-fg",
37
+ "--cue-fg-muted",
38
+ "--cue-fg-subtle",
39
+ "--cue-ok",
40
+ "--cue-radius-overlay",
41
+ "--cue-radius-surface",
42
+ "--cue-stream",
43
+ "--cue-surface-1",
44
+ "--cue-text-body"
45
+ ],
46
+ "summary": "Work still going somewhere else, and the results waiting to be collected.",
47
+ "examples": [
48
+ {
49
+ "title": "Usage",
50
+ "code": "import { BackgroundInbox } from \"@cueplusplus/ui/elements\";\n\n<BackgroundInbox runs={runs} onCollect={collect} />",
51
+ "language": "tsx"
52
+ }
53
+ ],
54
+ "status": "todo-docs",
55
+ "url": "/docs/components/background-inbox",
56
+ "mdUrl": "/docs/components/background-inbox.md",
57
+ "jsonUrl": "/r/components/background-inbox.json",
58
+ "specimens": [
59
+ {
60
+ "title": "BackgroundInbox",
61
+ "group": "elements-agents",
62
+ "components": [
63
+ "BackgroundInbox"
64
+ ],
65
+ "code": "<Specimens>\n <Specimen label=\"one ready\" wide>\n <BackgroundInbox\n runs={inbox}\n onCollect={(id) => setCollected((current) => [...current, id])}\n />\n </Specimen>\n <Specimen label=\"nothing back yet\" wide>\n <BackgroundInbox\n runs={INBOX.map((item) => ({ ...item, state: \"running\" as const, summary: undefined }))}\n />\n </Specimen>\n</Specimens>",
66
+ "note": "Work that left the conversation and is still going somewhere else. The header counts what is *ready* rather than what is in flight, because ready is the half that needs a person; a running row is not clickable at all, so there is nothing to press before there is something to collect.",
67
+ "interaction": "a ready or failed row is a button and takes cue's focus ring; a running one is `disabled`, which is what makes the spinner mean wait rather than try again."
68
+ }
69
+ ],
70
+ "todo": true
71
+ }
@@ -0,0 +1,124 @@
1
+ {
2
+ "name": "BranchPicker",
3
+ "slug": "branch-picker",
4
+ "group": "agent-runtime",
5
+ "importPath": "@cueplusplus/ui/agent-runtime",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "The `‹ 2 / 3 ›` stepper that walks a turn's regenerated siblings.\n\nIt keeps a segmented control's two promises — exactly one branch is on show,\nand the set cannot be emptied — without being one. A row of N numbered\nsegments is the wrong shape for a count that is usually 2 and occasionally 9,\nand a segmented control's recessed frame fights the message bubble it sits\nin. Two ghost icon buttons around a mono readout stay quiet until the reader\nhas a reason to look at them.\n\nA single branch is not a choice, so below two branches this renders nothing\nat all: the host can hand it every turn's `branch` without deciding which\nturns deserve a control. It belongs in an agent turn's `footer` — a user\nbubble is a solid accent fill, and a stepper drawn on it is unreadable.\n\nThe picker never moves the thread itself. It reports a direction and the host\nasks the runtime; under an ExternalStore runtime the switch arrives back at\nthe adapter's `setMessages`, which is the host's to write.",
9
+ "props": [
10
+ {
11
+ "name": "index",
12
+ "type": "number",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "1-based position of the branch on show — what the readout prints."
16
+ },
17
+ {
18
+ "name": "count",
19
+ "type": "number",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "How many sibling branches exist. Below 2 the picker renders nothing."
23
+ },
24
+ {
25
+ "name": "onNavigate",
26
+ "type": "(direction: BranchDirection) => void",
27
+ "required": true,
28
+ "defaultValue": null,
29
+ "description": "Called with the direction to move in. Never called past either end."
30
+ },
31
+ {
32
+ "name": "previousLabel",
33
+ "type": "string",
34
+ "required": false,
35
+ "defaultValue": "Previous branch",
36
+ "description": "Accessible name of the previous button. Defaults to `\"Previous branch\"`."
37
+ },
38
+ {
39
+ "name": "nextLabel",
40
+ "type": "string",
41
+ "required": false,
42
+ "defaultValue": "Next branch",
43
+ "description": "Accessible name of the next button. Defaults to `\"Next branch\"`."
44
+ },
45
+ {
46
+ "name": "disabled",
47
+ "type": "boolean",
48
+ "required": false,
49
+ "defaultValue": null,
50
+ "description": "Block both buttons — a run is in flight and the runtime cannot switch mid-run."
51
+ },
52
+ {
53
+ "name": "aria-label",
54
+ "type": "string",
55
+ "required": false,
56
+ "defaultValue": "Branches",
57
+ "description": "Accessible name for the group. Defaults to `\"Branches\"`."
58
+ }
59
+ ],
60
+ "typeReferences": [
61
+ "Omit<React.ComponentPropsWithoutRef<\"div\">, \"onChange\" | \"children\">"
62
+ ],
63
+ "subcomponents": [],
64
+ "parts": [],
65
+ "variants": {},
66
+ "defaultVariants": {},
67
+ "tokensUsed": [
68
+ "--cue-fg-subtle",
69
+ "--cue-font-mono",
70
+ "--cue-space-1",
71
+ "--cue-text-micro"
72
+ ],
73
+ "summary": "The `‹ 2 / 3 ›` stepper over a turn's regenerated siblings, and nothing at all below two.",
74
+ "examples": [
75
+ {
76
+ "title": "Usage",
77
+ "code": "<Message agent=\"planner\" footer={<BranchPicker index={2} count={3} onNavigate={go} disabled={busy} />}>…</Message>",
78
+ "language": "tsx"
79
+ }
80
+ ],
81
+ "status": "stable",
82
+ "url": "/docs/components/branch-picker",
83
+ "mdUrl": "/docs/components/branch-picker.md",
84
+ "jsonUrl": "/r/components/branch-picker.json",
85
+ "whenToUse": [
86
+ "An agent turn's `footer`, once a regenerate has given the turn a sibling.",
87
+ "Any host that can move between branches: it reports a direction and lets you ask the runtime."
88
+ ],
89
+ "whenNotToUse": [
90
+ "A single branch. It renders nothing, on purpose, so a host can hand it every turn.",
91
+ "Picking between views or modes. That is `SegmentedControl`, which shows every option at once.",
92
+ "Paging through a list. That is `Pagination`; a branch set is one answer with alternatives, not a sequence.",
93
+ "Regenerating. The picker only moves between branches that exist; `useAgentThread().regenerate` makes a new one, and the host draws that control — a ghost `Button` in a turn's footer, as the demo does."
94
+ ],
95
+ "commonMistakes": [
96
+ "Putting it in a user bubble's footer. That bubble is a solid accent fill and a ghost stepper on it is unreadable.",
97
+ "Wiring `onNavigate` to a state setter without clamping, when the runtime is the one that knows the count.",
98
+ "Leaving it enabled during a run. Pass `disabled` while the thread is busy, because the runtime will not switch mid-run."
99
+ ],
100
+ "specimens": [
101
+ {
102
+ "title": "useAgentThread / ToolCallCard / BranchPicker",
103
+ "group": "agent-runtime",
104
+ "components": [
105
+ "useAgentThread",
106
+ "ToolCallCard",
107
+ "BranchPicker"
108
+ ],
109
+ "code": "<ScriptedThread />",
110
+ "note": "The hook reads an assistant-ui runtime and hands back the props the Chat group already takes: `busy`, `disabled`, `onSend` and `onStop` for the composer, `role`, `agent` and `pending` for each turn, `toolCalls` for the cards, `branch` and `switchBranch` for the stepper. No provider is mounted and no borrowed DOM is rendered, so every pixel here is this library's. The thread below plays a fixed script, because a docs page has no model behind it.",
111
+ "interaction": "the script streams once and stops on its own; Stop cancels it mid-sentence, Regenerate answers again under the same question, and the stepper that then appears walks the two answers."
112
+ },
113
+ {
114
+ "title": "BranchPicker",
115
+ "group": "agent-runtime",
116
+ "components": [
117
+ "BranchPicker"
118
+ ],
119
+ "code": "<div className=\"flex w-full max-w-[42rem] flex-col gap-(--cue-space-4)\">\n <StatefulPicker />\n <Message\n agent=\"reviewer\"\n author=\"Reviewer\"\n footer={<BranchPicker index={1} count={2} onNavigate={() => {}} disabled />}\n >\n Blocked while a run is in flight: the runtime cannot switch branches mid-run.\n </Message>\n</div>",
120
+ "note": "A stepper rather than a segmented row of numbers: a branch count is usually 2 and occasionally 9, and a segmented frame fights the bubble it sits in. It keeps the two promises that matter, which are that exactly one branch is on show and that the set cannot be emptied, and it renders nothing at all below two branches. It belongs in an agent turn's footer, never a user bubble's.",
121
+ "interaction": "each end button disables itself at its end of the run, and the position is read aloud as well as drawn."
122
+ }
123
+ ]
124
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "Breadcrumb",
3
+ "slug": "breadcrumb",
4
+ "group": "layout",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": false,
8
+ "description": "Where you are, and how to get back.\n\nThe last crumb is never a link: it is the page you are on, marked\n`aria-current=\"page\"` and set in full-strength ink so the trail has one\nvisible end. Separators are `aria-hidden` — a screen reader announcing\n\"console slash patch slash universe 1\" is reading punctuation, not structure.\n\nStatic markup — no `\"use client\"`.",
9
+ "props": [
10
+ {
11
+ "name": "items",
12
+ "type": "readonly BreadcrumbItem[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "The trail, root first. The last entry is the current page."
16
+ },
17
+ {
18
+ "name": "separator",
19
+ "type": "ReactNode",
20
+ "required": false,
21
+ "defaultValue": "/",
22
+ "description": "What sits between crumbs. Defaults to `\"/\"`."
23
+ },
24
+ {
25
+ "name": "label",
26
+ "type": "string",
27
+ "required": false,
28
+ "defaultValue": "Breadcrumb",
29
+ "description": "The nav's accessible name. Defaults to `\"Breadcrumb\"`."
30
+ }
31
+ ],
32
+ "typeReferences": [
33
+ "Omit<React.ComponentPropsWithoutRef<\"nav\">, \"children\">"
34
+ ],
35
+ "subcomponents": [],
36
+ "parts": [],
37
+ "variants": {},
38
+ "defaultVariants": {},
39
+ "tokensUsed": [
40
+ "--cue-accent",
41
+ "--cue-fg",
42
+ "--cue-fg-muted",
43
+ "--cue-fg-subtle",
44
+ "--cue-font-mono",
45
+ "--cue-radius-control",
46
+ "--cue-space-2",
47
+ "--cue-text-label"
48
+ ],
49
+ "summary": "Where you are, and how to get back.",
50
+ "examples": [
51
+ {
52
+ "title": "Usage",
53
+ "code": "<Breadcrumb items={[{ label: \"Console\", href: \"/\" }, { label: \"Patch\" }]} />",
54
+ "language": "tsx"
55
+ }
56
+ ],
57
+ "status": "todo-docs",
58
+ "url": "/docs/components/breadcrumb",
59
+ "mdUrl": "/docs/components/breadcrumb.md",
60
+ "jsonUrl": "/r/components/breadcrumb.json",
61
+ "specimens": [
62
+ {
63
+ "title": "Breadcrumb",
64
+ "group": "layout",
65
+ "components": [
66
+ "Breadcrumb"
67
+ ],
68
+ "code": "<Breadcrumb items={CRUMBS} />",
69
+ "note": "Where you are, with `aria-hidden` punctuation between the crumbs and the last one marked current.",
70
+ "interaction": "every crumb but the last is a link; the last is plain text."
71
+ }
72
+ ],
73
+ "todo": true
74
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "ButtonGroup",
3
+ "slug": "button-group",
4
+ "group": "forms",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "Several related actions drawn as one control.\n\nPurely presentational: it owns no state and imposes no roving focus, because\nits members are *actions*, each independently reachable by Tab. When the\nmembers represent a **choice** rather than actions, use {@link ToggleGroup }\n(several or none) or `SegmentedControl` (exactly one) — those carry the\npressed-state ARIA a group of plain buttons must not fake.\n\nThe children keep their own variants, so a `secondary`/`primary` pair reads as\n\"and here is the one you probably want\" without any extra API.",
9
+ "props": [
10
+ {
11
+ "name": "orientation",
12
+ "type": "\"horizontal\" | \"vertical\"",
13
+ "required": false,
14
+ "defaultValue": "horizontal",
15
+ "description": "Which way the children run. Defaults to `\"horizontal\"`."
16
+ },
17
+ {
18
+ "name": "attached",
19
+ "type": "boolean",
20
+ "required": false,
21
+ "defaultValue": "true",
22
+ "description": "Join the children into one control (shared rims, outer corners only).\nDefaults to `true`; pass `false` for a merely-adjacent row of buttons that\nshould still be announced as one group."
23
+ },
24
+ {
25
+ "name": "aria-label",
26
+ "type": "string",
27
+ "required": false,
28
+ "defaultValue": null,
29
+ "description": "Accessible name for the cluster. A group of buttons with no name is a group\nof buttons; with one it is \"Blend mode\"."
30
+ },
31
+ {
32
+ "name": "children",
33
+ "type": "ReactNode",
34
+ "required": true,
35
+ "defaultValue": null,
36
+ "description": "The buttons — {@link Button }, {@link IconButton } or anything button-shaped."
37
+ }
38
+ ],
39
+ "typeReferences": [
40
+ "React.ComponentPropsWithoutRef<\"div\">"
41
+ ],
42
+ "subcomponents": [],
43
+ "parts": [],
44
+ "variants": {},
45
+ "defaultVariants": {},
46
+ "tokensUsed": [
47
+ "--cue-space-2"
48
+ ],
49
+ "summary": "Several related actions drawn as one control.",
50
+ "examples": [
51
+ {
52
+ "title": "Usage",
53
+ "code": "<ButtonGroup aria-label=\"Blend mode\">\n <Button>HTP</Button>\n <Button variant=\"primary\">LTP</Button>\n</ButtonGroup>\n<ButtonGroup aria-label=\"Zoom\" orientation=\"vertical\">\n <IconButton aria-label=\"Zoom in\" icon={Plus} variant=\"outline\" />\n <IconButton aria-label=\"Zoom out\" icon={Minus} variant=\"outline\" />\n</ButtonGroup>",
54
+ "language": "tsx"
55
+ }
56
+ ],
57
+ "status": "todo-docs",
58
+ "url": "/docs/components/button-group",
59
+ "mdUrl": "/docs/components/button-group.md",
60
+ "jsonUrl": "/r/components/button-group.json",
61
+ "specimens": [
62
+ {
63
+ "title": "ButtonGroup",
64
+ "group": "forms",
65
+ "components": [
66
+ "ButtonGroup"
67
+ ],
68
+ "code": "<Specimens>\n <Specimen label=\"attached\">\n <ButtonGroup>\n <Button>Patch</Button>\n <Button>Unpatch</Button>\n <Button>Swap</Button>\n </ButtonGroup>\n </Specimen>\n <Specimen label=\"spaced\">\n <ButtonGroup attached={false}>\n <Button>Patch</Button>\n <Button variant=\"primary\">Apply</Button>\n </ButtonGroup>\n </Specimen>\n <Specimen label=\"vertical\">\n <ButtonGroup orientation=\"vertical\">\n <Button>Up</Button>\n <Button>Down</Button>\n </ButtonGroup>\n </Specimen>\n</Specimens>",
69
+ "note": "Buttons welded into one control, horizontally or vertically.",
70
+ "interaction": "each button keeps its own focus ring; only the outer corners are rounded."
71
+ }
72
+ ],
73
+ "todo": true
74
+ }
@@ -0,0 +1,126 @@
1
+ {
2
+ "name": "Button",
3
+ "slug": "button",
4
+ "group": "primitives",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "The system's primary action control.\n\nA real `<button>` by default, restyled entirely from tokens: height comes\nfrom the density control ladder, colour from the theme's accent/surface ramp.\nThe focus ring is an `outline`, never a `box-shadow`, so it survives inside\n`overflow: hidden` panels.",
9
+ "props": [
10
+ {
11
+ "name": "render",
12
+ "type": "RenderProp<Record<string, unknown>>",
13
+ "required": false,
14
+ "defaultValue": null,
15
+ "description": "Replace the rendered element (Base UI render prop). Accepts an element —\n`render={<a href=\"/x\" />}` — or a function returning one. When set, the\ndefault `type=\"button\"` is dropped so non-button elements stay valid."
16
+ },
17
+ {
18
+ "name": "icon",
19
+ "type": "ElementType<any, keyof IntrinsicElements>",
20
+ "required": false,
21
+ "defaultValue": null,
22
+ "description": "Optional leading icon component (e.g. a lucide icon). Rendered\n`aria-hidden` and sized to the density icon token, so it tracks the density\nlevel without the caller passing a pixel size."
23
+ },
24
+ {
25
+ "name": "size",
26
+ "type": "\"sm\" | \"md\" | \"lg\"",
27
+ "required": false,
28
+ "defaultValue": "md",
29
+ "description": ""
30
+ },
31
+ {
32
+ "name": "variant",
33
+ "type": "\"danger\" | \"ghost\" | \"secondary\" | \"primary\" | \"outline\" | \"danger-outline\"",
34
+ "required": false,
35
+ "defaultValue": "secondary",
36
+ "description": ""
37
+ }
38
+ ],
39
+ "typeReferences": [
40
+ "React.ComponentPropsWithoutRef<\"button\">",
41
+ "VariantProps<typeof buttonVariants>"
42
+ ],
43
+ "subcomponents": [],
44
+ "parts": [],
45
+ "variants": {
46
+ "variant": [
47
+ "primary",
48
+ "secondary",
49
+ "ghost",
50
+ "outline",
51
+ "danger",
52
+ "danger-outline"
53
+ ],
54
+ "size": [
55
+ "sm",
56
+ "md",
57
+ "lg"
58
+ ]
59
+ },
60
+ "defaultVariants": {
61
+ "variant": "secondary",
62
+ "size": "md"
63
+ },
64
+ "tokensUsed": [
65
+ "--cue-accent",
66
+ "--cue-accent-fg",
67
+ "--cue-accent-hover",
68
+ "--cue-border",
69
+ "--cue-border-strong",
70
+ "--cue-control-lg",
71
+ "--cue-control-md",
72
+ "--cue-control-sm",
73
+ "--cue-danger",
74
+ "--cue-danger-fg",
75
+ "--cue-fg",
76
+ "--cue-fg-muted",
77
+ "--cue-font-mono",
78
+ "--cue-icon-md",
79
+ "--cue-icon-sm",
80
+ "--cue-radius-control",
81
+ "--cue-space-4",
82
+ "--cue-space-5",
83
+ "--cue-space-6",
84
+ "--cue-surface-2",
85
+ "--cue-text-emphasis",
86
+ "--cue-text-ui"
87
+ ],
88
+ "summary": "The action control: six variants across three density-sized heights.",
89
+ "examples": [
90
+ {
91
+ "title": "Usage",
92
+ "code": "<Button variant=\"primary\" size=\"sm\" icon={Play}>Run cue</Button>\n// Compose with a router link instead of a <button>:\n<Button render={<Link href=\"/patch\" />}>Patch</Button>",
93
+ "language": "tsx"
94
+ }
95
+ ],
96
+ "status": "stable",
97
+ "url": "/docs/components/button",
98
+ "mdUrl": "/docs/components/button.md",
99
+ "jsonUrl": "/r/components/button.json",
100
+ "whenToUse": [
101
+ "An action that happens on this page: submit, run, open a dialog.",
102
+ "Something that must look like a button but render as something else. Pass `render={<Link href=\"/patch\" />}`."
103
+ ],
104
+ "whenNotToUse": [
105
+ "Navigation that should behave like a link (middle-click, copy address). Use `Link`.",
106
+ "An icon-only control. Use `IconButton`, which requires the `aria-label` a bare icon needs.",
107
+ "A destructive action that should be confirmed where it stands. Use `TwoStepButton`."
108
+ ],
109
+ "commonMistakes": [
110
+ "Reaching for `variant=\"primary\"` on every button. One primary per view; `secondary` is the default for a reason.",
111
+ "Styling a Base UI trigger directly instead of passing `render={<Button />}`, which drops the variant classes into a tailwind-merge tie-break.",
112
+ "Fixing the height with `h-8 px-3` instead of `size`, which stops tracking density."
113
+ ],
114
+ "specimens": [
115
+ {
116
+ "title": "Button",
117
+ "group": "primitives",
118
+ "components": [
119
+ "Button"
120
+ ],
121
+ "code": "<Specimens>\n {BUTTON_VARIANTS.map((variant) => (\n <Specimen key={variant} label={variant}>\n <Button variant={variant}>Go</Button>\n </Specimen>\n ))}\n <Specimen label=\"disabled\">\n <Button disabled>Go</Button>\n </Specimen>\n <Specimen label=\"with icon\">\n <Button variant=\"primary\" icon={Play}>\n Go\n </Button>\n </Specimen>\n <Specimen label=\"loading\">\n <Button disabled>\n <Spinner size=\"sm\" /> Patching\n </Button>\n </Specimen>\n</Specimens>\n<Specimens>\n {SIZES.map((size) => (\n <Specimen key={size} label={`size ${size}`}>\n <Button size={size}>Go</Button>\n </Specimen>\n ))}\n</Specimens>",
122
+ "note": "Six variants, three sizes. The accent ink is theme-controlled, so `primary` is never a hardcoded white on blue.",
123
+ "interaction": "hover darkens the fill (or tints the ground, for the quiet variants); keyboard focus draws a 2px accent ring outside the border, so the border-colour convention and the ring never fight."
124
+ }
125
+ ]
126
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "Calendar",
3
+ "slug": "calendar",
4
+ "group": "date",
5
+ "importPath": "@cueplusplus/ui/date",
6
+ "peerDependencies": [
7
+ "react-day-picker"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "A month grid, on react-day-picker v10.\n\nSelection modes, keyboard navigation, the ARIA grid wiring and the date maths\n(date-fns under the hood) are the library's; this layer supplies the token\nskin and nothing else, so upgrading the library never means re-deriving\nbehaviour. Every `classNames` slot the caller passes is merged *over* the\nskin rather than replacing it.\n\n`react-day-picker` and `date-fns` are **optional peers**: import this from\n`@cueplusplus/ui/date`, never from the core barrel.",
11
+ "props": [],
12
+ "typeReferences": [
13
+ "DayPickerProps"
14
+ ],
15
+ "subcomponents": [],
16
+ "parts": [],
17
+ "variants": {},
18
+ "defaultVariants": {},
19
+ "tokensUsed": [
20
+ "--cue-accent",
21
+ "--cue-accent-fg",
22
+ "--cue-accent-hover",
23
+ "--cue-accent-soft",
24
+ "--cue-border",
25
+ "--cue-control-sm",
26
+ "--cue-fg",
27
+ "--cue-fg-muted",
28
+ "--cue-fg-subtle",
29
+ "--cue-font-mono",
30
+ "--cue-icon-sm",
31
+ "--cue-radius-control",
32
+ "--cue-space-2",
33
+ "--cue-space-5",
34
+ "--cue-sunken",
35
+ "--cue-surface-3",
36
+ "--cue-text-label",
37
+ "--cue-text-micro",
38
+ "--cue-text-ui"
39
+ ],
40
+ "summary": "A month grid, on react-day-picker v10.",
41
+ "examples": [
42
+ {
43
+ "title": "Usage",
44
+ "code": "<Calendar mode=\"single\" selected={date} onSelect={setDate} />\n<Calendar mode=\"range\" numberOfMonths={2} selected={range} onSelect={setRange} />",
45
+ "language": "tsx"
46
+ }
47
+ ],
48
+ "status": "todo-docs",
49
+ "url": "/docs/components/calendar",
50
+ "mdUrl": "/docs/components/calendar.md",
51
+ "jsonUrl": "/r/components/calendar.json",
52
+ "specimens": [
53
+ {
54
+ "title": "Calendar",
55
+ "group": "date",
56
+ "components": [
57
+ "Calendar"
58
+ ],
59
+ "code": "<div className=\"flex flex-wrap gap-(--cue-space-6)\">\n <Specimen label=\"single\">\n <Calendar\n mode=\"single\"\n month={TODAY}\n selected={day}\n onSelect={setDay}\n aria-label=\"Go-live date\"\n />\n </Specimen>\n <Specimen label=\"range\">\n <Calendar\n mode=\"range\"\n month={TODAY}\n selected={range}\n onSelect={setRange}\n aria-label=\"Run of the show\"\n />\n </Specimen>\n <Specimen label=\"with disabled days\">\n <Calendar\n mode=\"single\"\n month={TODAY}\n disabled={{ dayOfWeek: [0, 6] }}\n aria-label=\"Weekdays only\"\n />\n </Specimen>\n</div>",
60
+ "note": "react-day-picker's month grid, restyled from tokens. Speaks plain `Date`, because that is what a show file holds.",
61
+ "interaction": "arrow keys walk the grid, Page Up and Page Down change month; the selected day is accent-soft, today is ringed."
62
+ }
63
+ ],
64
+ "todo": true
65
+ }