@cueplusplus/ui 0.3.0 → 0.6.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 (541) hide show
  1. package/CHANGELOG.md +2263 -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/chat/index.d.ts +2 -2
  12. package/dist/chat/message-list.d.ts +6 -0
  13. package/dist/chat/message-list.js +35 -0
  14. package/dist/chrome/_drag.js +59 -0
  15. package/dist/chrome/_status-bar-item.js +85 -0
  16. package/dist/chrome/_status-bar.d.ts +15 -0
  17. package/dist/chrome/_status-bar.js +171 -0
  18. package/dist/chrome/app-shell.d.ts +120 -2
  19. package/dist/chrome/app-shell.js +107 -8
  20. package/dist/chrome/index.d.ts +4 -3
  21. package/dist/chrome/status-bar.d.ts +87 -4
  22. package/dist/chrome/status-bar.js +80 -16
  23. package/dist/chrome/title-bar.d.ts +11 -1
  24. package/dist/chrome/title-bar.js +1 -3
  25. package/dist/configurator/_export.js +3 -2
  26. package/dist/configurator/_overrides.d.ts +1 -1
  27. package/dist/configurator/token-editor.js +4 -1
  28. package/dist/date/_segments.js +52 -6
  29. package/dist/elements/activity-graph.d.ts +40 -0
  30. package/dist/elements/activity-graph.js +81 -0
  31. package/dist/elements/agent-card.d.ts +49 -0
  32. package/dist/elements/agent-card.js +91 -0
  33. package/dist/elements/agent-handoff.d.ts +24 -0
  34. package/dist/elements/agent-handoff.js +53 -0
  35. package/dist/elements/agent-mode-badge.d.ts +72 -0
  36. package/dist/elements/agent-mode-badge.js +110 -0
  37. package/dist/elements/agent-plan.d.ts +24 -0
  38. package/dist/elements/agent-plan.js +74 -0
  39. package/dist/elements/agent-status.d.ts +29 -0
  40. package/dist/elements/agent-status.js +46 -0
  41. package/dist/elements/agent-surface.d.ts +65 -0
  42. package/dist/elements/agent-surface.js +68 -0
  43. package/dist/elements/animated-number.d.ts +86 -0
  44. package/dist/elements/animated-number.js +118 -0
  45. package/dist/elements/approval-card.d.ts +40 -0
  46. package/dist/elements/approval-card.js +78 -0
  47. package/dist/elements/artifact-card.d.ts +30 -0
  48. package/dist/elements/artifact-card.js +58 -0
  49. package/dist/elements/background-inbox.d.ts +39 -0
  50. package/dist/elements/background-inbox.js +60 -0
  51. package/dist/elements/canvas-split.d.ts +77 -0
  52. package/dist/elements/canvas-split.js +138 -0
  53. package/dist/elements/chart.d.ts +41 -0
  54. package/dist/elements/chart.js +117 -0
  55. package/dist/elements/chat-panel.d.ts +46 -0
  56. package/dist/elements/chat-panel.js +104 -0
  57. package/dist/elements/checkpoint-history.d.ts +31 -0
  58. package/dist/elements/checkpoint-history.js +65 -0
  59. package/dist/elements/clamp.d.ts +90 -0
  60. package/dist/elements/clamp.js +109 -0
  61. package/dist/elements/code-diff.d.ts +42 -0
  62. package/dist/elements/code-diff.js +69 -0
  63. package/dist/elements/code-runner.d.ts +38 -0
  64. package/dist/elements/code-runner.js +84 -0
  65. package/dist/elements/command-palette.d.ts +48 -0
  66. package/dist/elements/command-palette.js +129 -0
  67. package/dist/elements/compaction-row.d.ts +63 -0
  68. package/dist/elements/compaction-row.js +110 -0
  69. package/dist/elements/comparison-card.d.ts +47 -0
  70. package/dist/elements/comparison-card.js +69 -0
  71. package/dist/elements/composer.d.ts +274 -0
  72. package/dist/elements/composer.js +505 -0
  73. package/dist/elements/computer-use.d.ts +40 -0
  74. package/dist/elements/computer-use.js +92 -0
  75. package/dist/elements/confidence-marker.d.ts +39 -0
  76. package/dist/elements/confidence-marker.js +64 -0
  77. package/dist/elements/connection-state.d.ts +29 -0
  78. package/dist/elements/connection-state.js +66 -0
  79. package/dist/elements/context-breakdown.d.ts +30 -0
  80. package/dist/elements/context-breakdown.js +86 -0
  81. package/dist/elements/context-usage.d.ts +99 -0
  82. package/dist/elements/context-usage.js +225 -0
  83. package/dist/elements/conversation-search.d.ts +48 -0
  84. package/dist/elements/conversation-search.js +88 -0
  85. package/dist/elements/cost-meter.d.ts +33 -0
  86. package/dist/elements/cost-meter.js +75 -0
  87. package/dist/elements/data-table.d.ts +31 -0
  88. package/dist/elements/data-table.js +67 -0
  89. package/dist/elements/day-separator.d.ts +34 -0
  90. package/dist/elements/day-separator.js +50 -0
  91. package/dist/elements/diagram.d.ts +34 -0
  92. package/dist/elements/diagram.js +75 -0
  93. package/dist/elements/document-reference.d.ts +37 -0
  94. package/dist/elements/document-reference.js +66 -0
  95. package/dist/elements/draft-restore.d.ts +27 -0
  96. package/dist/elements/draft-restore.js +54 -0
  97. package/dist/elements/edit-message.d.ts +36 -0
  98. package/dist/elements/edit-message.js +77 -0
  99. package/dist/elements/elements.css +459 -0
  100. package/dist/elements/elicitation-form.d.ts +48 -0
  101. package/dist/elements/elicitation-form.js +106 -0
  102. package/dist/elements/empty-state.d.ts +52 -0
  103. package/dist/elements/empty-state.js +98 -0
  104. package/dist/elements/end-of-turn-summary.d.ts +60 -0
  105. package/dist/elements/end-of-turn-summary.js +75 -0
  106. package/dist/elements/error-state.d.ts +29 -0
  107. package/dist/elements/error-state.js +55 -0
  108. package/dist/elements/feedback-dialog.d.ts +36 -0
  109. package/dist/elements/feedback-dialog.js +81 -0
  110. package/dist/elements/file-tree.d.ts +45 -0
  111. package/dist/elements/file-tree.js +84 -0
  112. package/dist/elements/flow-graph.d.ts +45 -0
  113. package/dist/elements/flow-graph.js +78 -0
  114. package/dist/elements/generative/chart.js +200 -0
  115. package/dist/elements/generative/faults.js +111 -0
  116. package/dist/elements/generative/icons.d.ts +41 -0
  117. package/dist/elements/generative/icons.js +190 -0
  118. package/dist/elements/generative/intrinsics.js +483 -0
  119. package/dist/elements/generative/spec.d.ts +110 -0
  120. package/dist/elements/generative/spec.js +366 -0
  121. package/dist/elements/generative.css +1145 -0
  122. package/dist/elements/generative.d.ts +144 -0
  123. package/dist/elements/generative.js +126 -0
  124. package/dist/elements/guardrail-notice.d.ts +29 -0
  125. package/dist/elements/guardrail-notice.js +63 -0
  126. package/dist/elements/image-generation.d.ts +18 -0
  127. package/dist/elements/image-generation.js +64 -0
  128. package/dist/elements/index.d.ts +116 -0
  129. package/dist/elements/index.js +115 -0
  130. package/dist/elements/inline-citation.d.ts +43 -0
  131. package/dist/elements/inline-citation.js +93 -0
  132. package/dist/elements/job-progress.d.ts +49 -0
  133. package/dist/elements/job-progress.js +74 -0
  134. package/dist/elements/launcher-bubble.d.ts +34 -0
  135. package/dist/elements/launcher-bubble.js +72 -0
  136. package/dist/elements/live-region-announcer.d.ts +130 -0
  137. package/dist/elements/live-region-announcer.js +230 -0
  138. package/dist/elements/loading-state.d.ts +27 -0
  139. package/dist/elements/loading-state.js +36 -0
  140. package/dist/elements/map-answer.d.ts +38 -0
  141. package/dist/elements/map-answer.js +93 -0
  142. package/dist/elements/markdown.d.ts +131 -0
  143. package/dist/elements/markdown.js +528 -0
  144. package/dist/elements/math-block.d.ts +51 -0
  145. package/dist/elements/math-block.js +70 -0
  146. package/dist/elements/mcp-server-panel.d.ts +41 -0
  147. package/dist/elements/mcp-server-panel.js +115 -0
  148. package/dist/elements/memory-chips.d.ts +30 -0
  149. package/dist/elements/memory-chips.js +43 -0
  150. package/dist/elements/message-actions.d.ts +38 -0
  151. package/dist/elements/message-actions.js +71 -0
  152. package/dist/elements/message-attachment.d.ts +48 -0
  153. package/dist/elements/message-attachment.js +63 -0
  154. package/dist/elements/message-branches.d.ts +25 -0
  155. package/dist/elements/message-branches.js +65 -0
  156. package/dist/elements/message-pair.d.ts +33 -0
  157. package/dist/elements/message-pair.js +65 -0
  158. package/dist/elements/message-queue.d.ts +31 -0
  159. package/dist/elements/message-queue.js +80 -0
  160. package/dist/elements/message-timing.d.ts +33 -0
  161. package/dist/elements/message-timing.js +37 -0
  162. package/dist/elements/mobile-composer.d.ts +44 -0
  163. package/dist/elements/mobile-composer.js +88 -0
  164. package/dist/elements/model-picker.d.ts +38 -0
  165. package/dist/elements/model-picker.js +69 -0
  166. package/dist/elements/number-ticker.d.ts +18 -0
  167. package/dist/elements/number-ticker.js +47 -0
  168. package/dist/elements/onboarding.d.ts +30 -0
  169. package/dist/elements/onboarding.js +75 -0
  170. package/dist/elements/permission-grant.d.ts +35 -0
  171. package/dist/elements/permission-grant.js +86 -0
  172. package/dist/elements/permission-scopes.d.ts +215 -0
  173. package/dist/elements/permission-scopes.js +249 -0
  174. package/dist/elements/prompt-library.d.ts +43 -0
  175. package/dist/elements/prompt-library.js +117 -0
  176. package/dist/elements/queue-dock.d.ts +101 -0
  177. package/dist/elements/queue-dock.js +132 -0
  178. package/dist/elements/quota-banner.d.ts +26 -0
  179. package/dist/elements/quota-banner.js +66 -0
  180. package/dist/elements/quote-reply.d.ts +44 -0
  181. package/dist/elements/quote-reply.js +79 -0
  182. package/dist/elements/range.d.ts +29 -0
  183. package/dist/elements/range.js +45 -0
  184. package/dist/elements/read-aloud.d.ts +45 -0
  185. package/dist/elements/read-aloud.js +75 -0
  186. package/dist/elements/reasoning-effort.d.ts +36 -0
  187. package/dist/elements/reasoning-effort.js +67 -0
  188. package/dist/elements/reasoning-panel.d.ts +46 -0
  189. package/dist/elements/reasoning-panel.js +75 -0
  190. package/dist/elements/recommendation-card.d.ts +45 -0
  191. package/dist/elements/recommendation-card.js +83 -0
  192. package/dist/elements/regenerate-menu.d.ts +45 -0
  193. package/dist/elements/regenerate-menu.js +51 -0
  194. package/dist/elements/replay.d.ts +217 -0
  195. package/dist/elements/replay.js +498 -0
  196. package/dist/elements/research-report.d.ts +38 -0
  197. package/dist/elements/research-report.js +69 -0
  198. package/dist/elements/retrieval-chunks.d.ts +43 -0
  199. package/dist/elements/retrieval-chunks.js +81 -0
  200. package/dist/elements/revert-dock.d.ts +159 -0
  201. package/dist/elements/revert-dock.js +327 -0
  202. package/dist/elements/reviewable-diff.d.ts +45 -0
  203. package/dist/elements/reviewable-diff.js +110 -0
  204. package/dist/elements/risk-badge.d.ts +52 -0
  205. package/dist/elements/risk-badge.js +91 -0
  206. package/dist/elements/schedule-card.d.ts +42 -0
  207. package/dist/elements/schedule-card.js +90 -0
  208. package/dist/elements/score-breakdown.d.ts +47 -0
  209. package/dist/elements/score-breakdown.js +82 -0
  210. package/dist/elements/scroll-anchor.d.ts +32 -0
  211. package/dist/elements/scroll-anchor.js +121 -0
  212. package/dist/elements/settings-panel.d.ts +52 -0
  213. package/dist/elements/settings-panel.js +107 -0
  214. package/dist/elements/shared-conversation.d.ts +39 -0
  215. package/dist/elements/shared-conversation.js +68 -0
  216. package/dist/elements/sources.d.ts +33 -0
  217. package/dist/elements/sources.js +61 -0
  218. package/dist/elements/speaker-identity.d.ts +32 -0
  219. package/dist/elements/speaker-identity.js +51 -0
  220. package/dist/elements/spec-sheet.d.ts +31 -0
  221. package/dist/elements/spec-sheet.js +45 -0
  222. package/dist/elements/stopped-run.d.ts +22 -0
  223. package/dist/elements/stopped-run.js +50 -0
  224. package/dist/elements/streaming-text.d.ts +31 -0
  225. package/dist/elements/streaming-text.js +45 -0
  226. package/dist/elements/subagent-list.d.ts +37 -0
  227. package/dist/elements/subagent-list.js +79 -0
  228. package/dist/elements/suggestions.d.ts +30 -0
  229. package/dist/elements/suggestions.js +36 -0
  230. package/dist/elements/surfaces.d.ts +85 -0
  231. package/dist/elements/surfaces.js +107 -0
  232. package/dist/elements/tail-status.d.ts +131 -0
  233. package/dist/elements/tail-status.js +94 -0
  234. package/dist/elements/terminal-block.d.ts +29 -0
  235. package/dist/elements/terminal-block.js +54 -0
  236. package/dist/elements/thinking-indicator.d.ts +18 -0
  237. package/dist/elements/thinking-indicator.js +36 -0
  238. package/dist/elements/thread-list.d.ts +35 -0
  239. package/dist/elements/thread-list.js +68 -0
  240. package/dist/elements/thread-search.d.ts +42 -0
  241. package/dist/elements/thread-search.js +99 -0
  242. package/dist/elements/timeline.d.ts +37 -0
  243. package/dist/elements/timeline.js +46 -0
  244. package/dist/elements/todo-list.d.ts +42 -0
  245. package/dist/elements/todo-list.js +59 -0
  246. package/dist/elements/tool-call.d.ts +41 -0
  247. package/dist/elements/tool-call.js +85 -0
  248. package/dist/elements/tool-error.d.ts +39 -0
  249. package/dist/elements/tool-error.js +76 -0
  250. package/dist/elements/tool-group.d.ts +45 -0
  251. package/dist/elements/tool-group.js +71 -0
  252. package/dist/elements/tool-timeline.d.ts +65 -0
  253. package/dist/elements/tool-timeline.js +88 -0
  254. package/dist/elements/trace-waterfall.d.ts +37 -0
  255. package/dist/elements/trace-waterfall.js +69 -0
  256. package/dist/elements/transcript-rules.d.ts +67 -0
  257. package/dist/elements/transcript-rules.js +95 -0
  258. package/dist/elements/turn-footer.d.ts +74 -0
  259. package/dist/elements/turn-footer.js +101 -0
  260. package/dist/elements/typing-indicator.d.ts +16 -0
  261. package/dist/elements/typing-indicator.js +51 -0
  262. package/dist/elements/verdict-row.d.ts +89 -0
  263. package/dist/elements/verdict-row.js +150 -0
  264. package/dist/elements/vocabulary.d.ts +612 -0
  265. package/dist/elements/vocabulary.js +611 -0
  266. package/dist/elements/voice-conversation.d.ts +49 -0
  267. package/dist/elements/voice-conversation.js +123 -0
  268. package/dist/elements/web-preview.d.ts +32 -0
  269. package/dist/elements/web-preview.js +66 -0
  270. package/dist/elements/web-search.d.ts +37 -0
  271. package/dist/elements/web-search.js +66 -0
  272. package/dist/elements/work-collapse.d.ts +103 -0
  273. package/dist/elements/work-collapse.js +131 -0
  274. package/dist/forms/_chassis.d.ts +104 -4
  275. package/dist/forms/_chassis.js +104 -4
  276. package/dist/forms/input-group.d.ts +8 -3
  277. package/dist/forms/input-group.js +8 -3
  278. package/dist/forms/number-field.d.ts +3 -2
  279. package/dist/forms/number-field.js +3 -2
  280. package/dist/icons/containers.d.ts +89 -0
  281. package/dist/icons/containers.js +295 -0
  282. package/dist/icons/index.d.ts +2 -0
  283. package/dist/index.d.ts +12 -6
  284. package/dist/index.js +5 -1
  285. package/dist/instruments/_data-row.js +118 -0
  286. package/dist/instruments/data-row.d.ts +94 -0
  287. package/dist/instruments/data-row.js +151 -0
  288. package/dist/instruments/data-tree.d.ts +126 -0
  289. package/dist/instruments/data-tree.js +303 -0
  290. package/dist/instruments/index.d.ts +5 -2
  291. package/dist/instruments/index.js +4 -1
  292. package/dist/instruments/ledger.d.ts +105 -0
  293. package/dist/instruments/ledger.js +114 -0
  294. package/dist/instruments/table.d.ts +70 -2
  295. package/dist/instruments/table.js +133 -39
  296. package/dist/instruments/two-step-button.js +25 -6
  297. package/dist/layout/sidebar.d.ts +19 -1
  298. package/dist/layout/sidebar.js +19 -1
  299. package/dist/primitives/button.js +11 -1
  300. package/dist/primitives/chip.d.ts +35 -9
  301. package/dist/primitives/chip.js +97 -11
  302. package/dist/system/agent-skin.d.ts +27 -0
  303. package/dist/system/agent-skin.js +20 -0
  304. package/dist/system/portal.d.ts +5 -3
  305. package/dist/system/portal.js +19 -5
  306. package/dist/system/theme-provider.js +54 -9
  307. package/dist/system/use-density.d.ts +9 -0
  308. package/dist/system/use-density.js +9 -0
  309. package/dist/system/use-isomorphic-layout-effect.js +19 -1
  310. package/dist/theming/_presets.d.ts +1 -1
  311. package/dist/theming/_presets.js +74 -11
  312. package/dist/theming/contrast.d.ts +16 -4
  313. package/dist/theming/contrast.js +33 -6
  314. package/dist/theming/create-theme.d.ts +6 -2
  315. package/dist/theming/create-theme.js +32 -5
  316. package/dist/theming/serialize.d.ts +10 -1
  317. package/dist/theming/serialize.js +62 -8
  318. package/manifest/components/activity-graph.json +88 -0
  319. package/manifest/components/agent-card.json +120 -0
  320. package/manifest/components/agent-handoff.json +87 -0
  321. package/manifest/components/agent-mode-badge.json +84 -0
  322. package/manifest/components/agent-plan.json +67 -0
  323. package/manifest/components/agent-status.json +73 -0
  324. package/manifest/components/agent-surface.json +78 -0
  325. package/manifest/components/alert-dialog.json +1 -1
  326. package/manifest/components/animated-number.json +67 -0
  327. package/manifest/components/app-shell.json +142 -9
  328. package/manifest/components/approval-card.json +106 -0
  329. package/manifest/components/artifact-card.json +81 -0
  330. package/manifest/components/audience-icon.json +52 -0
  331. package/manifest/components/autocomplete.json +2 -0
  332. package/manifest/components/background-inbox.json +71 -0
  333. package/manifest/components/branch-picker.json +124 -0
  334. package/manifest/components/button.json +1 -0
  335. package/manifest/components/canvas-split-body.json +62 -0
  336. package/manifest/components/canvas-split-document.json +54 -0
  337. package/manifest/components/canvas-split-header.json +83 -0
  338. package/manifest/components/canvas-split-line.json +62 -0
  339. package/manifest/components/canvas-split-message.json +62 -0
  340. package/manifest/components/canvas-split-thread.json +54 -0
  341. package/manifest/components/canvas-split.json +60 -0
  342. package/manifest/components/catalogue-icon.json +52 -0
  343. package/manifest/components/channel-beta-icon.json +52 -0
  344. package/manifest/components/channel-released-icon.json +52 -0
  345. package/manifest/components/chart.json +93 -0
  346. package/manifest/components/chat-empty-state.json +55 -0
  347. package/manifest/components/chat-panel-assistant-message.json +51 -0
  348. package/manifest/components/chat-panel-composer.json +66 -0
  349. package/manifest/components/chat-panel-messages.json +51 -0
  350. package/manifest/components/chat-panel-typing.json +51 -0
  351. package/manifest/components/chat-panel-user-message.json +51 -0
  352. package/manifest/components/chat-panel.json +57 -0
  353. package/manifest/components/checkpoint-history.json +80 -0
  354. package/manifest/components/chip.json +24 -12
  355. package/manifest/components/clamp.json +102 -0
  356. package/manifest/components/cli-tool-icon.json +52 -0
  357. package/manifest/components/code-diff.json +87 -0
  358. package/manifest/components/code-runner.json +97 -0
  359. package/manifest/components/color-field.json +2 -0
  360. package/manifest/components/color-picker.json +2 -0
  361. package/manifest/components/combobox.json +2 -0
  362. package/manifest/components/compaction-row.json +100 -0
  363. package/manifest/components/comparison-card.json +83 -0
  364. package/manifest/components/composer-actions.json +65 -0
  365. package/manifest/components/composer-attach-button.json +65 -0
  366. package/manifest/components/composer-attachment-chip.json +75 -0
  367. package/manifest/components/composer-attachments.json +60 -0
  368. package/manifest/components/composer-bar.json +73 -0
  369. package/manifest/components/composer-command-item.json +79 -0
  370. package/manifest/components/composer-context.json +67 -0
  371. package/manifest/components/composer-input.json +73 -0
  372. package/manifest/components/composer-menu-item.json +72 -0
  373. package/manifest/components/composer-menu.json +79 -0
  374. package/manifest/components/composer-model-item.json +75 -0
  375. package/manifest/components/composer-model-trigger.json +75 -0
  376. package/manifest/components/composer-person-item.json +79 -0
  377. package/manifest/components/composer-send.json +80 -0
  378. package/manifest/components/composer-toolbar.json +65 -0
  379. package/manifest/components/composer-voice-button.json +68 -0
  380. package/manifest/components/composer-voice.json +75 -0
  381. package/manifest/components/composer.json +2 -0
  382. package/manifest/components/computer-use.json +84 -0
  383. package/manifest/components/confidence-marker.json +74 -0
  384. package/manifest/components/connection-state.json +84 -0
  385. package/manifest/components/context-breakdown.json +65 -0
  386. package/manifest/components/context-usage.json +85 -0
  387. package/manifest/components/conversation-search.json +92 -0
  388. package/manifest/components/cost-meter.json +74 -0
  389. package/manifest/components/cue-portal-frame.json +1 -1
  390. package/manifest/components/data-row.json +203 -0
  391. package/manifest/components/data-tree.json +151 -0
  392. package/manifest/components/date-field.json +2 -0
  393. package/manifest/components/date-picker.json +2 -0
  394. package/manifest/components/date-range-picker.json +2 -0
  395. package/manifest/components/day-separator.json +58 -0
  396. package/manifest/components/delegation-card.json +1 -1
  397. package/manifest/components/density.json +1 -1
  398. package/manifest/components/diagram.json +100 -0
  399. package/manifest/components/document-reference.json +90 -0
  400. package/manifest/components/draft-restore.json +82 -0
  401. package/manifest/components/drawer.json +1 -1
  402. package/manifest/components/dropdown-menu.json +1 -1
  403. package/manifest/components/edit-message.json +105 -0
  404. package/manifest/components/elements-command-palette.json +100 -0
  405. package/manifest/components/elements-composer.json +71 -0
  406. package/manifest/components/elements-data-table.json +68 -0
  407. package/manifest/components/elements-timeline.json +69 -0
  408. package/manifest/components/elicitation-form.json +103 -0
  409. package/manifest/components/empty-state-composer.json +64 -0
  410. package/manifest/components/empty-state-greeting.json +49 -0
  411. package/manifest/components/empty-state-suggestion.json +57 -0
  412. package/manifest/components/empty-state-suggestions.json +49 -0
  413. package/manifest/components/end-of-turn-summary.json +77 -0
  414. package/manifest/components/env-var-input.json +2 -0
  415. package/manifest/components/error-state.json +80 -0
  416. package/manifest/components/feedback-dialog.json +107 -0
  417. package/manifest/components/file-tree.json +83 -0
  418. package/manifest/components/flow-graph.json +75 -0
  419. package/manifest/components/folder-icon.json +52 -0
  420. package/manifest/components/frac.json +59 -0
  421. package/manifest/components/generation-loader.json +64 -0
  422. package/manifest/components/generative-ui.json +93 -0
  423. package/manifest/components/guardrail-notice.json +91 -0
  424. package/manifest/components/hover-card.json +1 -1
  425. package/manifest/components/image-generation.json +67 -0
  426. package/manifest/components/info-tip.json +1 -1
  427. package/manifest/components/inline-citation.json +77 -0
  428. package/manifest/components/input-group.json +4 -2
  429. package/manifest/components/input.json +3 -1
  430. package/manifest/components/job-progress.json +96 -0
  431. package/manifest/components/launcher-bubble.json +105 -0
  432. package/manifest/components/ledger.json +187 -0
  433. package/manifest/components/live-region-announcer.json +79 -0
  434. package/manifest/components/map-answer.json +83 -0
  435. package/manifest/components/markdown-text.json +94 -0
  436. package/manifest/components/math-block.json +74 -0
  437. package/manifest/components/mcp-server-icon.json +52 -0
  438. package/manifest/components/mcp-server-panel.json +87 -0
  439. package/manifest/components/memory-chips.json +65 -0
  440. package/manifest/components/message-actions.json +99 -0
  441. package/manifest/components/message-attachments.json +63 -0
  442. package/manifest/components/message-branches.json +71 -0
  443. package/manifest/components/message-list.json +1 -1
  444. package/manifest/components/message-pair.json +86 -0
  445. package/manifest/components/message-queue.json +74 -0
  446. package/manifest/components/message-timing.json +62 -0
  447. package/manifest/components/mobile-composer.json +126 -0
  448. package/manifest/components/model-picker.json +76 -0
  449. package/manifest/components/multi-select.json +2 -0
  450. package/manifest/components/musical-time-input.json +2 -0
  451. package/manifest/components/node-card.json +1 -1
  452. package/manifest/components/node-handle.json +1 -1
  453. package/manifest/components/number-field.json +3 -1
  454. package/manifest/components/number-ticker.json +61 -0
  455. package/manifest/components/onboarding.json +84 -0
  456. package/manifest/components/otp-field.json +9 -7
  457. package/manifest/components/password-input.json +2 -0
  458. package/manifest/components/permission-grant.json +92 -0
  459. package/manifest/components/permission-scopes.json +139 -0
  460. package/manifest/components/popover.json +1 -1
  461. package/manifest/components/prompt-library.json +99 -0
  462. package/manifest/components/queue-dock.json +110 -0
  463. package/manifest/components/quota-banner.json +94 -0
  464. package/manifest/components/quote-reply.json +105 -0
  465. package/manifest/components/read-aloud.json +111 -0
  466. package/manifest/components/reasoning-effort.json +81 -0
  467. package/manifest/components/reasoning-panel.json +108 -0
  468. package/manifest/components/recommendation-card.json +107 -0
  469. package/manifest/components/regenerate-menu.json +89 -0
  470. package/manifest/components/replay-player.json +102 -0
  471. package/manifest/components/research-report.json +76 -0
  472. package/manifest/components/retrieval-chunks.json +84 -0
  473. package/manifest/components/revert-dock.json +150 -0
  474. package/manifest/components/reviewable-diff.json +93 -0
  475. package/manifest/components/risk-badge.json +74 -0
  476. package/manifest/components/schedule-card.json +101 -0
  477. package/manifest/components/score-breakdown.json +91 -0
  478. package/manifest/components/scroll-anchor.json +72 -0
  479. package/manifest/components/scroll-area.json +7 -7
  480. package/manifest/components/scrub-input.json +2 -0
  481. package/manifest/components/search-input.json +9 -7
  482. package/manifest/components/segmented-control.json +21 -21
  483. package/manifest/components/select.json +1 -0
  484. package/manifest/components/settings-panel.json +118 -0
  485. package/manifest/components/shared-conversation.json +89 -0
  486. package/manifest/components/shimmer-label.json +59 -0
  487. package/manifest/components/skill-icon.json +52 -0
  488. package/manifest/components/sources.json +83 -0
  489. package/manifest/components/speaker-identity.json +61 -0
  490. package/manifest/components/spec-sheet.json +80 -0
  491. package/manifest/components/stack-icon.json +52 -0
  492. package/manifest/components/stacks-matrix-icon.json +52 -0
  493. package/manifest/components/stat.json +1 -1
  494. package/manifest/components/status-bar.json +146 -12
  495. package/manifest/components/status-dot.json +1 -1
  496. package/manifest/components/stopped-run.json +81 -0
  497. package/manifest/components/streaming-text.json +71 -0
  498. package/manifest/components/sub.json +44 -0
  499. package/manifest/components/subagent-list.json +88 -0
  500. package/manifest/components/suggestions.json +84 -0
  501. package/manifest/components/sup.json +44 -0
  502. package/manifest/components/swap-label.json +71 -0
  503. package/manifest/components/table-scroll-region.json +6 -0
  504. package/manifest/components/table.json +88 -4
  505. package/manifest/components/tags-input.json +2 -0
  506. package/manifest/components/tail-status.json +109 -0
  507. package/manifest/components/terminal-block.json +91 -0
  508. package/manifest/components/textarea.json +3 -1
  509. package/manifest/components/theme-provider.json +2 -2
  510. package/manifest/components/thinking-indicator.json +63 -0
  511. package/manifest/components/thread-list.json +76 -0
  512. package/manifest/components/thread-search.json +90 -0
  513. package/manifest/components/threshold-rail.json +2 -2
  514. package/manifest/components/time-boundary.json +62 -0
  515. package/manifest/components/time-field.json +2 -0
  516. package/manifest/components/timeline.json +1 -1
  517. package/manifest/components/title-bar.json +1 -1
  518. package/manifest/components/todo-list.json +69 -0
  519. package/manifest/components/toggle-group.json +9 -7
  520. package/manifest/components/toggle.json +2 -0
  521. package/manifest/components/token-editor.json +1 -1
  522. package/manifest/components/tool-call-card.json +200 -0
  523. package/manifest/components/tool-call.json +119 -0
  524. package/manifest/components/tool-error.json +114 -0
  525. package/manifest/components/tool-group.json +83 -0
  526. package/manifest/components/tool-timeline.json +119 -0
  527. package/manifest/components/toolbar.json +7 -7
  528. package/manifest/components/tooltip.json +1 -1
  529. package/manifest/components/trace-waterfall.json +74 -0
  530. package/manifest/components/turn-footer.json +105 -0
  531. package/manifest/components/typing-indicator.json +53 -0
  532. package/manifest/components/unread-divider.json +55 -0
  533. package/manifest/components/usage-chart.json +1 -1
  534. package/manifest/components/verdict-row.json +91 -0
  535. package/manifest/components/voice-conversation.json +109 -0
  536. package/manifest/components/web-preview.json +87 -0
  537. package/manifest/components/web-search.json +92 -0
  538. package/manifest/components/work-collapse.json +102 -0
  539. package/manifest/manifest.json +2736 -60
  540. package/manifest/tokens.json +22 -1
  541. package/package.json +44 -2
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "ComposerToolbar",
3
+ "slug": "composer-toolbar",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "The row under the input, which holds the two `ComposerActions` clusters.",
11
+ "props": [],
12
+ "typeReferences": [
13
+ "ComponentProps<\"div\">"
14
+ ],
15
+ "subcomponents": [],
16
+ "parts": [],
17
+ "variants": {},
18
+ "defaultVariants": {},
19
+ "tokensUsed": [
20
+ "--cue-accent",
21
+ "--cue-danger",
22
+ "--cue-fg",
23
+ "--cue-fg-muted",
24
+ "--cue-fg-subtle",
25
+ "--cue-font-mono",
26
+ "--cue-ok",
27
+ "--cue-radius-control",
28
+ "--cue-radius-overlay",
29
+ "--cue-radius-surface",
30
+ "--cue-stream",
31
+ "--cue-surface-1",
32
+ "--cue-surface-2",
33
+ "--cue-surface-3",
34
+ "--cue-text-body",
35
+ "--cue-text-emphasis",
36
+ "--cue-text-label",
37
+ "--cue-text-micro",
38
+ "--cue-text-ui"
39
+ ],
40
+ "summary": "The row under the input, which holds the two `ComposerActions` clusters.",
41
+ "examples": [],
42
+ "status": "todo-docs",
43
+ "url": "/docs/components/composer-toolbar",
44
+ "mdUrl": "/docs/components/composer-toolbar.md",
45
+ "jsonUrl": "/r/components/composer-toolbar.json",
46
+ "specimens": [
47
+ {
48
+ "title": "ElementsComposer / ComposerBar / ComposerInput / ComposerToolbar",
49
+ "group": "elements-composer",
50
+ "components": [
51
+ "ElementsComposer",
52
+ "ComposerBar",
53
+ "ComposerInput",
54
+ "ComposerToolbar",
55
+ "ComposerActions",
56
+ "ComposerAttachButton",
57
+ "ComposerSend"
58
+ ],
59
+ "code": "<Specimens>\n <Specimen label=\"empty\" wide>\n <ElementsComposer>\n <ComposerBar>\n <ComposerInput\n aria-label=\"Ask about the rig\"\n value=\"\"\n placeholder=\"Ask about the rig\"\n readOnly\n />\n <ComposerToolbar>\n <ComposerActions>\n <ComposerAttachButton onClick={() => undefined} />\n </ComposerActions>\n <ComposerActions>\n <ComposerSend streaming={false} idle />\n </ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n </ElementsComposer>\n </Specimen>\n\n <Specimen label=\"typed\" wide>\n <ElementsComposer>\n <ComposerBar>\n <ComposerInput\n aria-label=\"Ask about the rig\"\n value={message}\n placeholder=\"Ask about the rig\"\n onChange={(event) => setMessage(event.target.value)}\n onSubmit={() => setMessage(\"\")}\n />\n <ComposerToolbar>\n <ComposerActions>\n <ComposerAttachButton onClick={() => undefined} />\n <ComposerModelTrigger model={model} open={false} />\n </ComposerActions>\n <ComposerActions>\n <ComposerContext usage={USAGE} />\n <ComposerVoiceButton active={false} />\n <ComposerSend streaming={false} idle={message === \"\"} />\n </ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n </ElementsComposer>\n </Specimen>\n\n <Specimen label=\"streaming, file over the bar\" wide>\n <ElementsComposer>\n <ComposerBar dragActive>\n <ComposerInput\n aria-label=\"Ask about the rig\"\n value=\"\"\n placeholder=\"Drop the truss drawing here\"\n readOnly\n />\n <ComposerToolbar>\n <ComposerActions>\n <ComposerAttachButton />\n </ComposerActions>\n <ComposerActions>\n <ComposerSend streaming idle={false} />\n </ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n </ElementsComposer>\n </Specimen>\n</Specimens>",
60
+ "note": "The composer assembled from its parts, which is the only way it exists — there is no root that configures it. `ElementsComposer` positions, `ComposerBar` is the paper, and everything between the input and the send button is a facet you either compose in or leave out, so a composer with no attachments carries no attachment code. `ComposerSend` is dim while the input is empty and becomes a stop square while the model is streaming; it is the same button either way, because there is never a moment when both are wanted.",
61
+ "interaction": "`ComposerAttachButton` disables itself when no handler is given rather than rendering a control that does nothing. The send button is labelled by state — `Send message` or `Stop generating` — so the swap is announced and not just drawn."
62
+ }
63
+ ],
64
+ "todo": true
65
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "ComposerVoiceButton",
3
+ "slug": "composer-voice-button",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "The microphone, which becomes a filled stop while recording.",
11
+ "props": [
12
+ {
13
+ "name": "active",
14
+ "type": "boolean",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "Whether the microphone is open."
18
+ }
19
+ ],
20
+ "typeReferences": [
21
+ "Omit<ComponentProps<\"button\">, \"children\"> & {\n /** Whether the microphone is open. */\n active: boolean;\n}"
22
+ ],
23
+ "subcomponents": [],
24
+ "parts": [],
25
+ "variants": {},
26
+ "defaultVariants": {},
27
+ "tokensUsed": [
28
+ "--cue-accent",
29
+ "--cue-danger",
30
+ "--cue-fg",
31
+ "--cue-fg-muted",
32
+ "--cue-fg-subtle",
33
+ "--cue-font-mono",
34
+ "--cue-ok",
35
+ "--cue-radius-control",
36
+ "--cue-radius-overlay",
37
+ "--cue-radius-surface",
38
+ "--cue-stream",
39
+ "--cue-surface-1",
40
+ "--cue-surface-2",
41
+ "--cue-surface-3",
42
+ "--cue-text-body",
43
+ "--cue-text-emphasis",
44
+ "--cue-text-label",
45
+ "--cue-text-micro",
46
+ "--cue-text-ui"
47
+ ],
48
+ "summary": "The microphone, which becomes a filled stop while recording.",
49
+ "examples": [],
50
+ "status": "todo-docs",
51
+ "url": "/docs/components/composer-voice-button",
52
+ "mdUrl": "/docs/components/composer-voice-button.md",
53
+ "jsonUrl": "/r/components/composer-voice-button.json",
54
+ "specimens": [
55
+ {
56
+ "title": "ComposerVoice / ComposerVoiceButton",
57
+ "group": "elements-composer",
58
+ "components": [
59
+ "ComposerVoice",
60
+ "ComposerVoiceButton"
61
+ ],
62
+ "code": "<Specimens>\n <Specimen label=\"recording\" wide>\n <ComposerVoice recording seconds={14} />\n </Specimen>\n <Specimen label=\"transcribing\" wide>\n <ComposerVoice recording={false} seconds={14} />\n </Specimen>\n <Specimen label=\"idle button\">\n <ComposerVoiceButton active={false} />\n </Specimen>\n <Specimen label=\"live button\">\n <ComposerVoiceButton active />\n </Specimen>\n</Specimens>",
63
+ "note": "What replaces the input while the microphone is open. Recording gives a level meter and a running clock; stopping leaves the same row with a shimmering `Transcribing` where the clock was, because the microphone closing is not the end of the work. The meter is drawn from `seconds` — the caller owns the tick, so this bench holds it still and a real one animates.",
64
+ "interaction": "the button is labelled by state (`Start voice input` / `Stop recording`) and fills in while live, so the control that stops a recording never looks like the one that starts it."
65
+ }
66
+ ],
67
+ "todo": true
68
+ }
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "ComposerVoice",
3
+ "slug": "composer-voice",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "What replaces the input while the microphone is open: a level meter, a running clock\nwhile recording, and a shimmering `Transcribing` once it stops.",
11
+ "props": [
12
+ {
13
+ "name": "recording",
14
+ "type": "boolean",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "Whether the microphone is open. False is the transcribing state, not the resting one."
18
+ },
19
+ {
20
+ "name": "seconds",
21
+ "type": "number",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "How long it has been recording. Drives both the clock and the meter, so the caller\nowns the tick."
25
+ }
26
+ ],
27
+ "typeReferences": [
28
+ "Omit<ComponentProps<\"div\">, \"children\"> & {\n /** Whether the microphone is open. False is the transcribing state, not the resting one. */\n recording: boolean;\n /**\n * How long it has been recording. Drives both the clock and the meter, so the caller\n * owns the tick.\n */\n seconds: number;\n}"
29
+ ],
30
+ "subcomponents": [],
31
+ "parts": [],
32
+ "variants": {},
33
+ "defaultVariants": {},
34
+ "tokensUsed": [
35
+ "--cue-accent",
36
+ "--cue-danger",
37
+ "--cue-fg",
38
+ "--cue-fg-muted",
39
+ "--cue-fg-subtle",
40
+ "--cue-font-mono",
41
+ "--cue-ok",
42
+ "--cue-radius-control",
43
+ "--cue-radius-overlay",
44
+ "--cue-radius-surface",
45
+ "--cue-stream",
46
+ "--cue-surface-1",
47
+ "--cue-surface-2",
48
+ "--cue-surface-3",
49
+ "--cue-text-body",
50
+ "--cue-text-emphasis",
51
+ "--cue-text-label",
52
+ "--cue-text-micro",
53
+ "--cue-text-ui"
54
+ ],
55
+ "summary": "What replaces the input while the microphone is open: a level meter, a running clock while recording, and a shimmering `Transcribing` once it stops.",
56
+ "examples": [],
57
+ "status": "todo-docs",
58
+ "url": "/docs/components/composer-voice",
59
+ "mdUrl": "/docs/components/composer-voice.md",
60
+ "jsonUrl": "/r/components/composer-voice.json",
61
+ "specimens": [
62
+ {
63
+ "title": "ComposerVoice / ComposerVoiceButton",
64
+ "group": "elements-composer",
65
+ "components": [
66
+ "ComposerVoice",
67
+ "ComposerVoiceButton"
68
+ ],
69
+ "code": "<Specimens>\n <Specimen label=\"recording\" wide>\n <ComposerVoice recording seconds={14} />\n </Specimen>\n <Specimen label=\"transcribing\" wide>\n <ComposerVoice recording={false} seconds={14} />\n </Specimen>\n <Specimen label=\"idle button\">\n <ComposerVoiceButton active={false} />\n </Specimen>\n <Specimen label=\"live button\">\n <ComposerVoiceButton active />\n </Specimen>\n</Specimens>",
70
+ "note": "What replaces the input while the microphone is open. Recording gives a level meter and a running clock; stopping leaves the same row with a shimmering `Transcribing` where the clock was, because the microphone closing is not the end of the work. The meter is drawn from `seconds` — the caller owns the tick, so this bench holds it still and a real one animates.",
71
+ "interaction": "the button is labelled by state (`Start voice input` / `Stop recording`) and fills in while live, so the control that stops a recording never looks like the one that starts it."
72
+ }
73
+ ],
74
+ "todo": true
75
+ }
@@ -130,12 +130,14 @@
130
130
  "tokensUsed": [
131
131
  "--cue-accent",
132
132
  "--cue-border",
133
+ "--cue-border-strong",
133
134
  "--cue-control-lg",
134
135
  "--cue-control-md",
135
136
  "--cue-control-sm",
136
137
  "--cue-danger",
137
138
  "--cue-fg",
138
139
  "--cue-fg-subtle",
140
+ "--cue-focus",
139
141
  "--cue-font-mono",
140
142
  "--cue-radius-control",
141
143
  "--cue-space-2",
@@ -0,0 +1,84 @@
1
+ {
2
+ "name": "ComputerUse",
3
+ "slug": "computer-use",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "The screen the agent is driving, with a cursor trail and what it is doing right now.",
11
+ "props": [
12
+ {
13
+ "name": "url",
14
+ "type": "string",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "What the session is pointed at."
18
+ },
19
+ {
20
+ "name": "steps",
21
+ "type": "readonly ComputerStep[]",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "Actions taken, in order. Each carries the coordinates the cursor moved to."
25
+ },
26
+ {
27
+ "name": "activeIndex",
28
+ "type": "number",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "Which step is happening now. The two before it stay as a fading trail."
32
+ },
33
+ {
34
+ "name": "children",
35
+ "type": "ReactNode",
36
+ "required": true,
37
+ "defaultValue": null,
38
+ "description": "The viewport being driven: a video stream, a screenshot, an iframe."
39
+ }
40
+ ],
41
+ "typeReferences": [
42
+ "Omit<ComponentProps<\"div\">, \"url\" | \"steps\" | \"activeIndex\" | \"children\"> & {\n /** What the session is pointed at. */\n url: string;\n /** Actions taken, in order. Each carries the coordinates the cursor moved to. */\n steps: readonly ComputerStep[];\n /** Which step is happening now. The two before it stay as a fading trail. */\n activeIndex: number;\n /** The viewport being driven: a video stream, a screenshot, an iframe. */\n children: React.ReactNode;\n}"
43
+ ],
44
+ "subcomponents": [],
45
+ "parts": [],
46
+ "variants": {},
47
+ "defaultVariants": {},
48
+ "tokensUsed": [
49
+ "--cue-border",
50
+ "--cue-danger",
51
+ "--cue-fg-muted",
52
+ "--cue-fg-subtle",
53
+ "--cue-ok",
54
+ "--cue-radius-overlay",
55
+ "--cue-stream",
56
+ "--cue-text-body",
57
+ "--cue-warn"
58
+ ],
59
+ "summary": "The screen the agent is driving, with a cursor trail and what it is doing right now.",
60
+ "examples": [
61
+ {
62
+ "title": "Usage",
63
+ "code": "import { ComputerUse } from \"@cueplusplus/ui/elements\";\n\n<ComputerUse url=\"github.com/...\" steps={steps} activeIndex={2}>\n <iframe title=\"Session\" src={streamUrl} />\n</ComputerUse>",
64
+ "language": "tsx"
65
+ }
66
+ ],
67
+ "status": "todo-docs",
68
+ "url": "/docs/components/computer-use",
69
+ "mdUrl": "/docs/components/computer-use.md",
70
+ "jsonUrl": "/r/components/computer-use.json",
71
+ "specimens": [
72
+ {
73
+ "title": "ComputerUse",
74
+ "group": "elements-agents",
75
+ "components": [
76
+ "ComputerUse"
77
+ ],
78
+ "code": "<Specimens>\n <Specimen label=\"mid-session\" wide>\n <ComputerUse\n url=\"desk.local/show/patch\"\n steps={CLICKS}\n activeIndex={2}\n >\n <div className=\"flex h-40 flex-col gap-(--cue-space-2) bg-surface-1 p-(--cue-space-4)\">\n <span className=\"font-mono text-(length:--cue-text-label) text-fg-subtle\">\n UNIVERSE 3 — PATCH\n </span>\n <span className=\"text-(length:--cue-text-body) text-fg-muted\">\n 6 fixtures selected · start address 1\n </span>\n </div>\n </ComputerUse>\n </Specimen>\n <Specimen label=\"first step\" wide>\n <ComputerUse url=\"desk.local/show/patch\" steps={CLICKS} activeIndex={0}>\n <div className=\"flex h-40 items-center justify-center bg-surface-1\">\n <span className=\"font-mono text-(length:--cue-text-label) text-fg-subtle\">\n SHOW FILE — OVERVIEW\n </span>\n </div>\n </ComputerUse>\n </Specimen>\n</Specimens>",
79
+ "note": "The screen the agent is driving, with a cursor trail behind it and the current action named underneath. The two steps before the live one stay as fading dots, which is what turns a jumping pointer into a path you can follow. The viewport is `children` — a screenshot, a video stream, a sandboxed iframe — so the element frames it and isolates nothing of its own.",
80
+ "interaction": "none, and deliberately: this is a view of a session, not a remote control. The cursor and its trail are `aria-hidden`; the action row underneath is what a screen reader gets."
81
+ }
82
+ ],
83
+ "todo": true
84
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "ConfidenceMarker",
3
+ "slug": "confidence-marker",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "Which claims came from a source, which were inferred, and which are guesses.",
9
+ "props": [
10
+ {
11
+ "name": "claims",
12
+ "type": "readonly ConfidenceClaim[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "The answer split into claims. Each is underlined according to how well it is\nsupported."
16
+ },
17
+ {
18
+ "name": "hoveredId",
19
+ "type": "string",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "Which claim is hovered. Pass an empty string for none."
23
+ },
24
+ {
25
+ "name": "onHover",
26
+ "type": "((id: string) => void)",
27
+ "required": false,
28
+ "defaultValue": null,
29
+ "description": "Called with the hovered claim id, or an empty string on exit."
30
+ }
31
+ ],
32
+ "typeReferences": [
33
+ "Omit<\n ComponentProps<\"div\">,\n \"children\" | \"claims\" | \"hoveredId\" | \"onHover\"\n> & {\n /**\n * The answer split into claims. Each is underlined according to how well it is\n * supported.\n */\n claims: readonly ConfidenceClaim[];\n /** Which claim is hovered. Pass an empty string for none. */\n hoveredId: string;\n /** Called with the hovered claim id, or an empty string on exit. */\n onHover?: (id: string) => void;\n}"
34
+ ],
35
+ "subcomponents": [],
36
+ "parts": [],
37
+ "variants": {},
38
+ "defaultVariants": {},
39
+ "tokensUsed": [
40
+ "--cue-accent",
41
+ "--cue-danger",
42
+ "--cue-fg",
43
+ "--cue-fg-muted",
44
+ "--cue-ok",
45
+ "--cue-radius-control",
46
+ "--cue-text-body",
47
+ "--cue-warn"
48
+ ],
49
+ "summary": "Which claims came from a source, which were inferred, and which are guesses.",
50
+ "examples": [
51
+ {
52
+ "title": "Usage",
53
+ "code": "import { ConfidenceMarker } from \"@cueplusplus/ui/elements\";\n\n<ConfidenceMarker claims={claims} hoveredId={hoveredId} onHover={setHoveredId} />",
54
+ "language": "tsx"
55
+ }
56
+ ],
57
+ "status": "todo-docs",
58
+ "url": "/docs/components/confidence-marker",
59
+ "mdUrl": "/docs/components/confidence-marker.md",
60
+ "jsonUrl": "/r/components/confidence-marker.json",
61
+ "specimens": [
62
+ {
63
+ "title": "ConfidenceMarker",
64
+ "group": "elements-knowledge",
65
+ "components": [
66
+ "ConfidenceMarker"
67
+ ],
68
+ "code": "<Specimens>\n <Specimen label=\"the inferred clause\" wide>\n <ConfidenceMarker claims={CLAIMS} hoveredId={hovered} onHover={setHovered} />\n </Specimen>\n <Specimen label=\"nothing hovered\" wide>\n <ConfidenceMarker claims={CLAIMS} hoveredId=\"\" />\n </Specimen>\n</Specimens>",
69
+ "note": "Which clause came from a source, which was worked out, and which is a guess — drawn as three underlines rather than three colours of text, so the sentence still reads as a sentence. The basis appears under it on hover, in a row that is always reserved so nothing below moves.",
70
+ "interaction": "each clause is a button that responds to hover *and* focus, so the basis is reachable from a keyboard. The chip carries role='status' and is referenced by `aria-describedby`."
71
+ }
72
+ ],
73
+ "todo": true
74
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "name": "ConnectionState",
3
+ "slug": "connection-state",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "The socket drops, the run keeps going on the server, and the stream is picked back\nup.",
11
+ "props": [
12
+ {
13
+ "name": "phase",
14
+ "type": "\"online\" | \"dropped\" | \"reconnecting\" | \"resumed\"",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "Which banner to show. online renders nothing, so the element can stay mounted."
18
+ },
19
+ {
20
+ "name": "attempt",
21
+ "type": "number",
22
+ "required": false,
23
+ "defaultValue": null,
24
+ "description": "Retry number, shown while reconnecting."
25
+ },
26
+ {
27
+ "name": "resumedTokens",
28
+ "type": "number",
29
+ "required": false,
30
+ "defaultValue": null,
31
+ "description": "How much of the stream was recovered, shown once resumed."
32
+ },
33
+ {
34
+ "name": "onRetry",
35
+ "type": "(() => void)",
36
+ "required": false,
37
+ "defaultValue": null,
38
+ "description": "Called from the Reconnect button while dropped."
39
+ }
40
+ ],
41
+ "typeReferences": [
42
+ "Omit<\n ComponentProps<\"div\">,\n \"children\" | \"phase\" | \"attempt\" | \"resumedTokens\" | \"onRetry\"\n> & {\n /** Which banner to show. online renders nothing, so the element can stay mounted. */\n phase: ConnectionPhase;\n /** Retry number, shown while reconnecting. */\n attempt?: number;\n /** How much of the stream was recovered, shown once resumed. */\n resumedTokens?: number;\n /** Called from the Reconnect button while dropped. */\n onRetry?: () => void;\n}"
43
+ ],
44
+ "subcomponents": [],
45
+ "parts": [],
46
+ "variants": {},
47
+ "defaultVariants": {},
48
+ "tokensUsed": [
49
+ "--cue-fg",
50
+ "--cue-fg-muted",
51
+ "--cue-fg-subtle",
52
+ "--cue-ok",
53
+ "--cue-radius-overlay",
54
+ "--cue-surface-2",
55
+ "--cue-text-body",
56
+ "--cue-text-ui",
57
+ "--cue-warn"
58
+ ],
59
+ "summary": "The socket drops, the run keeps going on the server, and the stream is picked back up.",
60
+ "examples": [
61
+ {
62
+ "title": "Usage",
63
+ "code": "import { ConnectionState } from \"@cueplusplus/ui/elements\";\n\n<ConnectionState phase=\"reconnecting\" attempt={2} onRetry={reconnect} />",
64
+ "language": "tsx"
65
+ }
66
+ ],
67
+ "status": "todo-docs",
68
+ "url": "/docs/components/connection-state",
69
+ "mdUrl": "/docs/components/connection-state.md",
70
+ "jsonUrl": "/r/components/connection-state.json",
71
+ "specimens": [
72
+ {
73
+ "title": "ConnectionState",
74
+ "group": "elements-agents",
75
+ "components": [
76
+ "ConnectionState"
77
+ ],
78
+ "code": "<Specimens>\n <Specimen label=\"dropped\" wide>\n <ConnectionState phase=\"dropped\" onRetry={() => undefined} />\n </Specimen>\n <Specimen label=\"reconnecting\" wide>\n <ConnectionState phase=\"reconnecting\" attempt={3} />\n </Specimen>\n <Specimen label=\"resumed\" wide>\n <ConnectionState phase=\"resumed\" resumedTokens={1_842} />\n </Specimen>\n <Specimen label=\"online — renders nothing\" wide>\n <ConnectionState phase=\"online\" />\n </Specimen>\n</Specimens>",
79
+ "note": "The socket drops; the run does not. Four phases, and the useful one is `online` — it renders nothing at all, so the element can stay mounted at the top of a transcript and simply have nothing to say most of the time. `dropped` offers a reconnect, `reconnecting` counts attempts, and `resumed` says how much of the stream was recovered.",
80
+ "interaction": "Reconnect is a plain named button. Nothing here retries on its own — the phase is the caller's, so a page can back off however it likes."
81
+ }
82
+ ],
83
+ "todo": true
84
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "ContextBreakdown",
3
+ "slug": "context-breakdown",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "Where the window actually went: prompt, tools, files, conversation, and what's left.",
9
+ "props": [
10
+ {
11
+ "name": "segments",
12
+ "type": "readonly ContextSegment[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "What is occupying the window, in stacking order. Headroom is derived, not passed."
16
+ },
17
+ {
18
+ "name": "limit",
19
+ "type": "number",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "Window size. The header turns amber once the segments pass 85 percent of it. A\nzero limit is treated as zero pressure rather than dividing by it."
23
+ }
24
+ ],
25
+ "typeReferences": [
26
+ "Omit<ComponentProps<\"div\">, \"children\" | \"segments\" | \"limit\"> & {\n /** What is occupying the window, in stacking order. Headroom is derived, not passed. */\n segments: readonly ContextSegment[];\n /**\n * Window size. The header turns amber once the segments pass 85 percent of it. A\n * zero limit is treated as zero pressure rather than dividing by it.\n */\n limit: number;\n}"
27
+ ],
28
+ "subcomponents": [],
29
+ "parts": [],
30
+ "variants": {},
31
+ "defaultVariants": {},
32
+ "tokensUsed": [
33
+ "--cue-fg-muted",
34
+ "--cue-fg-subtle",
35
+ "--cue-radius-overlay",
36
+ "--cue-surface-2",
37
+ "--cue-text-body",
38
+ "--cue-warn"
39
+ ],
40
+ "summary": "Where the window actually went: prompt, tools, files, conversation, and what's left.",
41
+ "examples": [
42
+ {
43
+ "title": "Usage",
44
+ "code": "import { ContextBreakdown } from \"@cueplusplus/ui/elements\";\n\n<ContextBreakdown segments={segments} limit={128000} />",
45
+ "language": "tsx"
46
+ }
47
+ ],
48
+ "status": "todo-docs",
49
+ "url": "/docs/components/context-breakdown",
50
+ "mdUrl": "/docs/components/context-breakdown.md",
51
+ "jsonUrl": "/r/components/context-breakdown.json",
52
+ "specimens": [
53
+ {
54
+ "title": "ContextBreakdown",
55
+ "group": "elements-agents",
56
+ "components": [
57
+ "ContextBreakdown"
58
+ ],
59
+ "code": "<Specimens>\n <Specimen label=\"room to work\" wide>\n <ContextBreakdown segments={CONTEXT} limit={200_000} />\n </Specimen>\n <Specimen label=\"under pressure\" wide>\n <ContextBreakdown segments={CONTEXT_TIGHT} limit={128_000} />\n </Specimen>\n</Specimens>",
60
+ "note": "Where the window actually went, which is the question a context limit never answers on its own. Headroom is derived rather than passed — it is whatever the segments left — and the header turns warn once they pass 85 per cent of the limit. The tint is the caller's: the same class paints the bar slice and its legend dot, so the two cannot drift apart.",
61
+ "interaction": "none. The legend dots are `aria-hidden`; the label beside each one carries the meaning."
62
+ }
63
+ ],
64
+ "todo": true
65
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "ContextUsage",
3
+ "slug": "context-usage",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "Where the window went, what share each part of it took, and what that cost.\n\nA context limit tells a reader nothing they can act on. This says which four\nthings are holding the window open, so the answer to \"why did it forget the\nthing I said an hour ago\" can be *the venue's documents are 38k of it* rather\nthan a number going up. The bar is the shape, the table is the argument, and\nthe stat rows underneath are what turn it from a gauge into a bill.\n\nThe breakdown is a real table with real column headers, which is Claude\nCode's own shape and the right one: three columns of numbers whose meaning is\ncarried by the heading above them is exactly what a `<table>` is for, and a\ngrid of `<div>`s says none of it to a screen reader.\n\nPressure is stated on the element as `data-pressure` — `ok`, `high` past 85\nper cent, `over` past the limit — and the header figure takes the warning hue\nwith it. Past the limit the bar simply fills: there is no headroom left to\ndraw, and a segment hanging off the end would be a picture of a number rather\nthan of a window.",
9
+ "props": [
10
+ {
11
+ "name": "categories",
12
+ "type": "readonly ContextCategory[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "What is occupying the window, in the order it stacks in the bar. Headroom\nis derived from the limit, never passed."
16
+ },
17
+ {
18
+ "name": "limit",
19
+ "type": "number",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "The window's size, in tokens. A limit of zero is treated as no pressure\nrather than divided by."
23
+ },
24
+ {
25
+ "name": "stats",
26
+ "type": "readonly ContextStat[]",
27
+ "required": false,
28
+ "defaultValue": null,
29
+ "description": "The numbers under the bar: input, output, reasoning and cache tokens, the\nlimit, the cost. Pre-formatted, and drawn in the order given.\n`CONTEXT_STAT_LABELS` carries opencode's names for them."
30
+ },
31
+ {
32
+ "name": "labels",
33
+ "type": "Partial<ContextLabels>",
34
+ "required": false,
35
+ "defaultValue": null,
36
+ "description": "The meter's own six strings, merged over `CONTEXT_LABELS`: its title, the\nthree column headings, the headroom row and the phrase after the\npercentage."
37
+ }
38
+ ],
39
+ "typeReferences": [
40
+ "Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
41
+ ],
42
+ "subcomponents": [],
43
+ "parts": [],
44
+ "variants": {},
45
+ "defaultVariants": {},
46
+ "tokensUsed": [
47
+ "--cue-accent",
48
+ "--cue-border",
49
+ "--cue-danger",
50
+ "--cue-fg",
51
+ "--cue-fg-muted",
52
+ "--cue-fg-subtle",
53
+ "--cue-ok",
54
+ "--cue-radius-overlay",
55
+ "--cue-stream",
56
+ "--cue-surface-2",
57
+ "--cue-text-body",
58
+ "--cue-warn"
59
+ ],
60
+ "summary": "Where the window went, what share each part of it took, and what that cost.",
61
+ "examples": [
62
+ {
63
+ "title": "Usage",
64
+ "code": "import { ContextUsage, CONTEXT_CATEGORY_LABELS } from \"@cueplusplus/ui/elements\";\n\n<ContextUsage\n limit={200_000}\n categories={[\n { label: CONTEXT_CATEGORY_LABELS.system, tokens: 11_800 },\n { label: CONTEXT_CATEGORY_LABELS.tools, tokens: 38_400 },\n { label: CONTEXT_CATEGORY_LABELS.assistant, tokens: 21_100 },\n ]}\n stats={[{ label: \"Total cost\", value: \"$3.12\" }]}\n/>\n// Over the limit: the bar is full, the headroom row is zero, and the header\n// figure says so in the danger hue.\n<ContextUsage limit={128_000} categories={categories} />",
65
+ "language": "tsx"
66
+ }
67
+ ],
68
+ "status": "todo-docs",
69
+ "url": "/docs/components/context-usage",
70
+ "mdUrl": "/docs/components/context-usage.md",
71
+ "jsonUrl": "/r/components/context-usage.json",
72
+ "specimens": [
73
+ {
74
+ "title": "ContextUsage",
75
+ "group": "elements-agents",
76
+ "components": [
77
+ "ContextUsage"
78
+ ],
79
+ "code": "<Specimens>\n <Specimen label=\"room to work\" wide>\n <ContextUsage categories={WINDOW} limit={200_000} stats={WINDOW_STATS} />\n </Specimen>\n <Specimen label=\"under pressure\" wide>\n <ContextUsage categories={WINDOW_TIGHT} limit={128_000} />\n </Specimen>\n <Specimen label=\"over the limit\" wide>\n <ContextUsage categories={WINDOW_TIGHT} limit={96_000} />\n </Specimen>\n</Specimens>",
80
+ "note": "Where the window went, what share each part took, and what that cost — Cursor's tray, opencode's labels and Claude Code's table, which between them are a complete spec. The breakdown is a real table with real column headers because three columns of numbers whose meaning lives in the heading above them is exactly what a table is for. A category that names no tone takes the next hue in the family's rotation, so five rows are legible without the caller choosing five colours that fight.",
81
+ "interaction": "none. The bar is aria-hidden — every figure in it is written out in the table under it — and pressure is stated on the element as `data-pressure`, so a console can style the whole card from one attribute rather than from a threshold of its own."
82
+ }
83
+ ],
84
+ "todo": true
85
+ }