@cueplusplus/ui 0.3.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 (488) hide show
  1. package/CHANGELOG.md +2229 -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/app-shell.d.ts +52 -2
  15. package/dist/chrome/app-shell.js +80 -8
  16. package/dist/chrome/index.d.ts +2 -2
  17. package/dist/configurator/_export.js +3 -2
  18. package/dist/configurator/_overrides.d.ts +1 -1
  19. package/dist/configurator/token-editor.js +4 -1
  20. package/dist/date/_segments.js +37 -2
  21. package/dist/elements/activity-graph.d.ts +40 -0
  22. package/dist/elements/activity-graph.js +81 -0
  23. package/dist/elements/agent-card.d.ts +49 -0
  24. package/dist/elements/agent-card.js +91 -0
  25. package/dist/elements/agent-handoff.d.ts +24 -0
  26. package/dist/elements/agent-handoff.js +53 -0
  27. package/dist/elements/agent-mode-badge.d.ts +72 -0
  28. package/dist/elements/agent-mode-badge.js +110 -0
  29. package/dist/elements/agent-plan.d.ts +24 -0
  30. package/dist/elements/agent-plan.js +74 -0
  31. package/dist/elements/agent-status.d.ts +29 -0
  32. package/dist/elements/agent-status.js +46 -0
  33. package/dist/elements/agent-surface.d.ts +65 -0
  34. package/dist/elements/agent-surface.js +68 -0
  35. package/dist/elements/animated-number.d.ts +86 -0
  36. package/dist/elements/animated-number.js +118 -0
  37. package/dist/elements/approval-card.d.ts +40 -0
  38. package/dist/elements/approval-card.js +78 -0
  39. package/dist/elements/artifact-card.d.ts +30 -0
  40. package/dist/elements/artifact-card.js +58 -0
  41. package/dist/elements/background-inbox.d.ts +39 -0
  42. package/dist/elements/background-inbox.js +60 -0
  43. package/dist/elements/canvas-split.d.ts +77 -0
  44. package/dist/elements/canvas-split.js +138 -0
  45. package/dist/elements/chart.d.ts +41 -0
  46. package/dist/elements/chart.js +117 -0
  47. package/dist/elements/chat-panel.d.ts +46 -0
  48. package/dist/elements/chat-panel.js +104 -0
  49. package/dist/elements/checkpoint-history.d.ts +31 -0
  50. package/dist/elements/checkpoint-history.js +65 -0
  51. package/dist/elements/clamp.d.ts +90 -0
  52. package/dist/elements/clamp.js +109 -0
  53. package/dist/elements/code-diff.d.ts +42 -0
  54. package/dist/elements/code-diff.js +69 -0
  55. package/dist/elements/code-runner.d.ts +38 -0
  56. package/dist/elements/code-runner.js +84 -0
  57. package/dist/elements/command-palette.d.ts +48 -0
  58. package/dist/elements/command-palette.js +129 -0
  59. package/dist/elements/compaction-row.d.ts +63 -0
  60. package/dist/elements/compaction-row.js +110 -0
  61. package/dist/elements/comparison-card.d.ts +47 -0
  62. package/dist/elements/comparison-card.js +69 -0
  63. package/dist/elements/composer.d.ts +274 -0
  64. package/dist/elements/composer.js +505 -0
  65. package/dist/elements/computer-use.d.ts +40 -0
  66. package/dist/elements/computer-use.js +92 -0
  67. package/dist/elements/confidence-marker.d.ts +39 -0
  68. package/dist/elements/confidence-marker.js +64 -0
  69. package/dist/elements/connection-state.d.ts +29 -0
  70. package/dist/elements/connection-state.js +66 -0
  71. package/dist/elements/context-breakdown.d.ts +30 -0
  72. package/dist/elements/context-breakdown.js +86 -0
  73. package/dist/elements/context-usage.d.ts +99 -0
  74. package/dist/elements/context-usage.js +225 -0
  75. package/dist/elements/conversation-search.d.ts +48 -0
  76. package/dist/elements/conversation-search.js +88 -0
  77. package/dist/elements/cost-meter.d.ts +33 -0
  78. package/dist/elements/cost-meter.js +75 -0
  79. package/dist/elements/data-table.d.ts +31 -0
  80. package/dist/elements/data-table.js +67 -0
  81. package/dist/elements/day-separator.d.ts +34 -0
  82. package/dist/elements/day-separator.js +50 -0
  83. package/dist/elements/diagram.d.ts +34 -0
  84. package/dist/elements/diagram.js +75 -0
  85. package/dist/elements/document-reference.d.ts +37 -0
  86. package/dist/elements/document-reference.js +66 -0
  87. package/dist/elements/draft-restore.d.ts +27 -0
  88. package/dist/elements/draft-restore.js +54 -0
  89. package/dist/elements/edit-message.d.ts +36 -0
  90. package/dist/elements/edit-message.js +77 -0
  91. package/dist/elements/elements.css +459 -0
  92. package/dist/elements/elicitation-form.d.ts +48 -0
  93. package/dist/elements/elicitation-form.js +106 -0
  94. package/dist/elements/empty-state.d.ts +52 -0
  95. package/dist/elements/empty-state.js +98 -0
  96. package/dist/elements/end-of-turn-summary.d.ts +60 -0
  97. package/dist/elements/end-of-turn-summary.js +75 -0
  98. package/dist/elements/error-state.d.ts +29 -0
  99. package/dist/elements/error-state.js +55 -0
  100. package/dist/elements/feedback-dialog.d.ts +36 -0
  101. package/dist/elements/feedback-dialog.js +81 -0
  102. package/dist/elements/file-tree.d.ts +45 -0
  103. package/dist/elements/file-tree.js +84 -0
  104. package/dist/elements/flow-graph.d.ts +45 -0
  105. package/dist/elements/flow-graph.js +78 -0
  106. package/dist/elements/generative/chart.js +200 -0
  107. package/dist/elements/generative/faults.js +111 -0
  108. package/dist/elements/generative/icons.d.ts +41 -0
  109. package/dist/elements/generative/icons.js +190 -0
  110. package/dist/elements/generative/intrinsics.js +483 -0
  111. package/dist/elements/generative/spec.d.ts +110 -0
  112. package/dist/elements/generative/spec.js +366 -0
  113. package/dist/elements/generative.css +1145 -0
  114. package/dist/elements/generative.d.ts +144 -0
  115. package/dist/elements/generative.js +126 -0
  116. package/dist/elements/guardrail-notice.d.ts +29 -0
  117. package/dist/elements/guardrail-notice.js +63 -0
  118. package/dist/elements/image-generation.d.ts +18 -0
  119. package/dist/elements/image-generation.js +64 -0
  120. package/dist/elements/index.d.ts +116 -0
  121. package/dist/elements/index.js +115 -0
  122. package/dist/elements/inline-citation.d.ts +43 -0
  123. package/dist/elements/inline-citation.js +93 -0
  124. package/dist/elements/job-progress.d.ts +49 -0
  125. package/dist/elements/job-progress.js +74 -0
  126. package/dist/elements/launcher-bubble.d.ts +34 -0
  127. package/dist/elements/launcher-bubble.js +72 -0
  128. package/dist/elements/live-region-announcer.d.ts +130 -0
  129. package/dist/elements/live-region-announcer.js +230 -0
  130. package/dist/elements/loading-state.d.ts +27 -0
  131. package/dist/elements/loading-state.js +36 -0
  132. package/dist/elements/map-answer.d.ts +38 -0
  133. package/dist/elements/map-answer.js +93 -0
  134. package/dist/elements/markdown.d.ts +131 -0
  135. package/dist/elements/markdown.js +528 -0
  136. package/dist/elements/math-block.d.ts +51 -0
  137. package/dist/elements/math-block.js +70 -0
  138. package/dist/elements/mcp-server-panel.d.ts +41 -0
  139. package/dist/elements/mcp-server-panel.js +115 -0
  140. package/dist/elements/memory-chips.d.ts +30 -0
  141. package/dist/elements/memory-chips.js +43 -0
  142. package/dist/elements/message-actions.d.ts +38 -0
  143. package/dist/elements/message-actions.js +71 -0
  144. package/dist/elements/message-attachment.d.ts +48 -0
  145. package/dist/elements/message-attachment.js +63 -0
  146. package/dist/elements/message-branches.d.ts +25 -0
  147. package/dist/elements/message-branches.js +65 -0
  148. package/dist/elements/message-pair.d.ts +33 -0
  149. package/dist/elements/message-pair.js +65 -0
  150. package/dist/elements/message-queue.d.ts +31 -0
  151. package/dist/elements/message-queue.js +80 -0
  152. package/dist/elements/message-timing.d.ts +33 -0
  153. package/dist/elements/message-timing.js +37 -0
  154. package/dist/elements/mobile-composer.d.ts +44 -0
  155. package/dist/elements/mobile-composer.js +88 -0
  156. package/dist/elements/model-picker.d.ts +38 -0
  157. package/dist/elements/model-picker.js +69 -0
  158. package/dist/elements/number-ticker.d.ts +18 -0
  159. package/dist/elements/number-ticker.js +47 -0
  160. package/dist/elements/onboarding.d.ts +30 -0
  161. package/dist/elements/onboarding.js +75 -0
  162. package/dist/elements/permission-grant.d.ts +35 -0
  163. package/dist/elements/permission-grant.js +86 -0
  164. package/dist/elements/permission-scopes.d.ts +215 -0
  165. package/dist/elements/permission-scopes.js +249 -0
  166. package/dist/elements/prompt-library.d.ts +43 -0
  167. package/dist/elements/prompt-library.js +117 -0
  168. package/dist/elements/queue-dock.d.ts +101 -0
  169. package/dist/elements/queue-dock.js +132 -0
  170. package/dist/elements/quota-banner.d.ts +26 -0
  171. package/dist/elements/quota-banner.js +66 -0
  172. package/dist/elements/quote-reply.d.ts +44 -0
  173. package/dist/elements/quote-reply.js +79 -0
  174. package/dist/elements/range.d.ts +29 -0
  175. package/dist/elements/range.js +45 -0
  176. package/dist/elements/read-aloud.d.ts +45 -0
  177. package/dist/elements/read-aloud.js +75 -0
  178. package/dist/elements/reasoning-effort.d.ts +36 -0
  179. package/dist/elements/reasoning-effort.js +67 -0
  180. package/dist/elements/reasoning-panel.d.ts +46 -0
  181. package/dist/elements/reasoning-panel.js +75 -0
  182. package/dist/elements/recommendation-card.d.ts +45 -0
  183. package/dist/elements/recommendation-card.js +83 -0
  184. package/dist/elements/regenerate-menu.d.ts +45 -0
  185. package/dist/elements/regenerate-menu.js +51 -0
  186. package/dist/elements/replay.d.ts +217 -0
  187. package/dist/elements/replay.js +498 -0
  188. package/dist/elements/research-report.d.ts +38 -0
  189. package/dist/elements/research-report.js +69 -0
  190. package/dist/elements/retrieval-chunks.d.ts +43 -0
  191. package/dist/elements/retrieval-chunks.js +81 -0
  192. package/dist/elements/revert-dock.d.ts +159 -0
  193. package/dist/elements/revert-dock.js +327 -0
  194. package/dist/elements/reviewable-diff.d.ts +45 -0
  195. package/dist/elements/reviewable-diff.js +110 -0
  196. package/dist/elements/risk-badge.d.ts +52 -0
  197. package/dist/elements/risk-badge.js +91 -0
  198. package/dist/elements/schedule-card.d.ts +42 -0
  199. package/dist/elements/schedule-card.js +90 -0
  200. package/dist/elements/score-breakdown.d.ts +47 -0
  201. package/dist/elements/score-breakdown.js +82 -0
  202. package/dist/elements/scroll-anchor.d.ts +32 -0
  203. package/dist/elements/scroll-anchor.js +121 -0
  204. package/dist/elements/settings-panel.d.ts +52 -0
  205. package/dist/elements/settings-panel.js +107 -0
  206. package/dist/elements/shared-conversation.d.ts +39 -0
  207. package/dist/elements/shared-conversation.js +68 -0
  208. package/dist/elements/sources.d.ts +33 -0
  209. package/dist/elements/sources.js +61 -0
  210. package/dist/elements/speaker-identity.d.ts +32 -0
  211. package/dist/elements/speaker-identity.js +51 -0
  212. package/dist/elements/spec-sheet.d.ts +31 -0
  213. package/dist/elements/spec-sheet.js +45 -0
  214. package/dist/elements/stopped-run.d.ts +22 -0
  215. package/dist/elements/stopped-run.js +50 -0
  216. package/dist/elements/streaming-text.d.ts +31 -0
  217. package/dist/elements/streaming-text.js +45 -0
  218. package/dist/elements/subagent-list.d.ts +37 -0
  219. package/dist/elements/subagent-list.js +79 -0
  220. package/dist/elements/suggestions.d.ts +30 -0
  221. package/dist/elements/suggestions.js +36 -0
  222. package/dist/elements/surfaces.d.ts +85 -0
  223. package/dist/elements/surfaces.js +107 -0
  224. package/dist/elements/tail-status.d.ts +131 -0
  225. package/dist/elements/tail-status.js +94 -0
  226. package/dist/elements/terminal-block.d.ts +29 -0
  227. package/dist/elements/terminal-block.js +54 -0
  228. package/dist/elements/thinking-indicator.d.ts +18 -0
  229. package/dist/elements/thinking-indicator.js +36 -0
  230. package/dist/elements/thread-list.d.ts +35 -0
  231. package/dist/elements/thread-list.js +68 -0
  232. package/dist/elements/thread-search.d.ts +42 -0
  233. package/dist/elements/thread-search.js +99 -0
  234. package/dist/elements/timeline.d.ts +37 -0
  235. package/dist/elements/timeline.js +46 -0
  236. package/dist/elements/todo-list.d.ts +42 -0
  237. package/dist/elements/todo-list.js +59 -0
  238. package/dist/elements/tool-call.d.ts +41 -0
  239. package/dist/elements/tool-call.js +85 -0
  240. package/dist/elements/tool-error.d.ts +39 -0
  241. package/dist/elements/tool-error.js +76 -0
  242. package/dist/elements/tool-group.d.ts +45 -0
  243. package/dist/elements/tool-group.js +71 -0
  244. package/dist/elements/tool-timeline.d.ts +65 -0
  245. package/dist/elements/tool-timeline.js +88 -0
  246. package/dist/elements/trace-waterfall.d.ts +37 -0
  247. package/dist/elements/trace-waterfall.js +69 -0
  248. package/dist/elements/transcript-rules.d.ts +67 -0
  249. package/dist/elements/transcript-rules.js +95 -0
  250. package/dist/elements/turn-footer.d.ts +74 -0
  251. package/dist/elements/turn-footer.js +101 -0
  252. package/dist/elements/typing-indicator.d.ts +16 -0
  253. package/dist/elements/typing-indicator.js +51 -0
  254. package/dist/elements/verdict-row.d.ts +89 -0
  255. package/dist/elements/verdict-row.js +150 -0
  256. package/dist/elements/vocabulary.d.ts +612 -0
  257. package/dist/elements/vocabulary.js +611 -0
  258. package/dist/elements/voice-conversation.d.ts +49 -0
  259. package/dist/elements/voice-conversation.js +123 -0
  260. package/dist/elements/web-preview.d.ts +32 -0
  261. package/dist/elements/web-preview.js +66 -0
  262. package/dist/elements/web-search.d.ts +37 -0
  263. package/dist/elements/web-search.js +66 -0
  264. package/dist/elements/work-collapse.d.ts +103 -0
  265. package/dist/elements/work-collapse.js +131 -0
  266. package/dist/icons/containers.d.ts +89 -0
  267. package/dist/icons/containers.js +295 -0
  268. package/dist/icons/index.d.ts +2 -0
  269. package/dist/index.d.ts +6 -4
  270. package/dist/index.js +2 -1
  271. package/dist/instruments/two-step-button.js +25 -6
  272. package/dist/layout/sidebar.d.ts +19 -1
  273. package/dist/layout/sidebar.js +19 -1
  274. package/dist/primitives/button.js +11 -1
  275. package/dist/primitives/chip.d.ts +35 -9
  276. package/dist/primitives/chip.js +97 -11
  277. package/dist/system/agent-skin.d.ts +27 -0
  278. package/dist/system/agent-skin.js +20 -0
  279. package/dist/system/portal.d.ts +5 -3
  280. package/dist/system/portal.js +19 -5
  281. package/dist/system/theme-provider.js +54 -9
  282. package/dist/system/use-density.d.ts +9 -0
  283. package/dist/system/use-density.js +9 -0
  284. package/dist/system/use-isomorphic-layout-effect.js +19 -1
  285. package/dist/theming/_presets.d.ts +1 -1
  286. package/dist/theming/_presets.js +71 -8
  287. package/dist/theming/contrast.d.ts +16 -4
  288. package/dist/theming/contrast.js +33 -6
  289. package/dist/theming/create-theme.d.ts +6 -2
  290. package/dist/theming/create-theme.js +32 -5
  291. package/dist/theming/serialize.d.ts +10 -1
  292. package/dist/theming/serialize.js +62 -8
  293. package/manifest/components/activity-graph.json +88 -0
  294. package/manifest/components/agent-card.json +120 -0
  295. package/manifest/components/agent-handoff.json +87 -0
  296. package/manifest/components/agent-mode-badge.json +84 -0
  297. package/manifest/components/agent-plan.json +67 -0
  298. package/manifest/components/agent-status.json +73 -0
  299. package/manifest/components/agent-surface.json +78 -0
  300. package/manifest/components/alert-dialog.json +1 -1
  301. package/manifest/components/animated-number.json +67 -0
  302. package/manifest/components/app-shell.json +99 -7
  303. package/manifest/components/approval-card.json +106 -0
  304. package/manifest/components/artifact-card.json +81 -0
  305. package/manifest/components/audience-icon.json +52 -0
  306. package/manifest/components/background-inbox.json +71 -0
  307. package/manifest/components/branch-picker.json +124 -0
  308. package/manifest/components/button.json +1 -0
  309. package/manifest/components/canvas-split-body.json +62 -0
  310. package/manifest/components/canvas-split-document.json +54 -0
  311. package/manifest/components/canvas-split-header.json +83 -0
  312. package/manifest/components/canvas-split-line.json +62 -0
  313. package/manifest/components/canvas-split-message.json +62 -0
  314. package/manifest/components/canvas-split-thread.json +54 -0
  315. package/manifest/components/canvas-split.json +60 -0
  316. package/manifest/components/catalogue-icon.json +52 -0
  317. package/manifest/components/channel-beta-icon.json +52 -0
  318. package/manifest/components/channel-released-icon.json +52 -0
  319. package/manifest/components/chart.json +93 -0
  320. package/manifest/components/chat-empty-state.json +55 -0
  321. package/manifest/components/chat-panel-assistant-message.json +51 -0
  322. package/manifest/components/chat-panel-composer.json +66 -0
  323. package/manifest/components/chat-panel-messages.json +51 -0
  324. package/manifest/components/chat-panel-typing.json +51 -0
  325. package/manifest/components/chat-panel-user-message.json +51 -0
  326. package/manifest/components/chat-panel.json +57 -0
  327. package/manifest/components/checkpoint-history.json +80 -0
  328. package/manifest/components/chip.json +24 -12
  329. package/manifest/components/clamp.json +102 -0
  330. package/manifest/components/cli-tool-icon.json +52 -0
  331. package/manifest/components/code-diff.json +87 -0
  332. package/manifest/components/code-runner.json +97 -0
  333. package/manifest/components/compaction-row.json +100 -0
  334. package/manifest/components/comparison-card.json +83 -0
  335. package/manifest/components/composer-actions.json +65 -0
  336. package/manifest/components/composer-attach-button.json +65 -0
  337. package/manifest/components/composer-attachment-chip.json +75 -0
  338. package/manifest/components/composer-attachments.json +60 -0
  339. package/manifest/components/composer-bar.json +73 -0
  340. package/manifest/components/composer-command-item.json +79 -0
  341. package/manifest/components/composer-context.json +67 -0
  342. package/manifest/components/composer-input.json +73 -0
  343. package/manifest/components/composer-menu-item.json +72 -0
  344. package/manifest/components/composer-menu.json +79 -0
  345. package/manifest/components/composer-model-item.json +75 -0
  346. package/manifest/components/composer-model-trigger.json +75 -0
  347. package/manifest/components/composer-person-item.json +79 -0
  348. package/manifest/components/composer-send.json +80 -0
  349. package/manifest/components/composer-toolbar.json +65 -0
  350. package/manifest/components/composer-voice-button.json +68 -0
  351. package/manifest/components/composer-voice.json +75 -0
  352. package/manifest/components/computer-use.json +84 -0
  353. package/manifest/components/confidence-marker.json +74 -0
  354. package/manifest/components/connection-state.json +84 -0
  355. package/manifest/components/context-breakdown.json +65 -0
  356. package/manifest/components/context-usage.json +85 -0
  357. package/manifest/components/conversation-search.json +92 -0
  358. package/manifest/components/cost-meter.json +74 -0
  359. package/manifest/components/cue-portal-frame.json +1 -1
  360. package/manifest/components/day-separator.json +58 -0
  361. package/manifest/components/delegation-card.json +1 -1
  362. package/manifest/components/density.json +1 -1
  363. package/manifest/components/diagram.json +100 -0
  364. package/manifest/components/document-reference.json +90 -0
  365. package/manifest/components/draft-restore.json +82 -0
  366. package/manifest/components/drawer.json +1 -1
  367. package/manifest/components/dropdown-menu.json +1 -1
  368. package/manifest/components/edit-message.json +105 -0
  369. package/manifest/components/elements-command-palette.json +100 -0
  370. package/manifest/components/elements-composer.json +71 -0
  371. package/manifest/components/elements-data-table.json +68 -0
  372. package/manifest/components/elements-timeline.json +69 -0
  373. package/manifest/components/elicitation-form.json +103 -0
  374. package/manifest/components/empty-state-composer.json +64 -0
  375. package/manifest/components/empty-state-greeting.json +49 -0
  376. package/manifest/components/empty-state-suggestion.json +57 -0
  377. package/manifest/components/empty-state-suggestions.json +49 -0
  378. package/manifest/components/end-of-turn-summary.json +77 -0
  379. package/manifest/components/error-state.json +80 -0
  380. package/manifest/components/feedback-dialog.json +107 -0
  381. package/manifest/components/file-tree.json +83 -0
  382. package/manifest/components/flow-graph.json +75 -0
  383. package/manifest/components/folder-icon.json +52 -0
  384. package/manifest/components/frac.json +59 -0
  385. package/manifest/components/generation-loader.json +64 -0
  386. package/manifest/components/generative-ui.json +93 -0
  387. package/manifest/components/guardrail-notice.json +91 -0
  388. package/manifest/components/hover-card.json +1 -1
  389. package/manifest/components/image-generation.json +67 -0
  390. package/manifest/components/info-tip.json +1 -1
  391. package/manifest/components/inline-citation.json +77 -0
  392. package/manifest/components/job-progress.json +96 -0
  393. package/manifest/components/launcher-bubble.json +105 -0
  394. package/manifest/components/live-region-announcer.json +79 -0
  395. package/manifest/components/map-answer.json +83 -0
  396. package/manifest/components/markdown-text.json +94 -0
  397. package/manifest/components/math-block.json +74 -0
  398. package/manifest/components/mcp-server-icon.json +52 -0
  399. package/manifest/components/mcp-server-panel.json +87 -0
  400. package/manifest/components/memory-chips.json +65 -0
  401. package/manifest/components/message-actions.json +99 -0
  402. package/manifest/components/message-attachments.json +63 -0
  403. package/manifest/components/message-branches.json +71 -0
  404. package/manifest/components/message-list.json +1 -1
  405. package/manifest/components/message-pair.json +86 -0
  406. package/manifest/components/message-queue.json +74 -0
  407. package/manifest/components/message-timing.json +62 -0
  408. package/manifest/components/mobile-composer.json +126 -0
  409. package/manifest/components/model-picker.json +76 -0
  410. package/manifest/components/node-card.json +1 -1
  411. package/manifest/components/node-handle.json +1 -1
  412. package/manifest/components/number-ticker.json +61 -0
  413. package/manifest/components/onboarding.json +84 -0
  414. package/manifest/components/otp-field.json +7 -7
  415. package/manifest/components/permission-grant.json +92 -0
  416. package/manifest/components/permission-scopes.json +139 -0
  417. package/manifest/components/popover.json +1 -1
  418. package/manifest/components/prompt-library.json +99 -0
  419. package/manifest/components/queue-dock.json +110 -0
  420. package/manifest/components/quota-banner.json +94 -0
  421. package/manifest/components/quote-reply.json +105 -0
  422. package/manifest/components/read-aloud.json +111 -0
  423. package/manifest/components/reasoning-effort.json +81 -0
  424. package/manifest/components/reasoning-panel.json +108 -0
  425. package/manifest/components/recommendation-card.json +107 -0
  426. package/manifest/components/regenerate-menu.json +89 -0
  427. package/manifest/components/replay-player.json +102 -0
  428. package/manifest/components/research-report.json +76 -0
  429. package/manifest/components/retrieval-chunks.json +84 -0
  430. package/manifest/components/revert-dock.json +150 -0
  431. package/manifest/components/reviewable-diff.json +93 -0
  432. package/manifest/components/risk-badge.json +74 -0
  433. package/manifest/components/schedule-card.json +101 -0
  434. package/manifest/components/score-breakdown.json +91 -0
  435. package/manifest/components/scroll-anchor.json +72 -0
  436. package/manifest/components/scroll-area.json +7 -7
  437. package/manifest/components/search-input.json +7 -7
  438. package/manifest/components/segmented-control.json +21 -21
  439. package/manifest/components/settings-panel.json +118 -0
  440. package/manifest/components/shared-conversation.json +89 -0
  441. package/manifest/components/shimmer-label.json +59 -0
  442. package/manifest/components/skill-icon.json +52 -0
  443. package/manifest/components/sources.json +83 -0
  444. package/manifest/components/speaker-identity.json +61 -0
  445. package/manifest/components/spec-sheet.json +80 -0
  446. package/manifest/components/stack-icon.json +52 -0
  447. package/manifest/components/stacks-matrix-icon.json +52 -0
  448. package/manifest/components/stat.json +1 -1
  449. package/manifest/components/status-dot.json +1 -1
  450. package/manifest/components/stopped-run.json +81 -0
  451. package/manifest/components/streaming-text.json +71 -0
  452. package/manifest/components/sub.json +44 -0
  453. package/manifest/components/subagent-list.json +88 -0
  454. package/manifest/components/suggestions.json +84 -0
  455. package/manifest/components/sup.json +44 -0
  456. package/manifest/components/swap-label.json +71 -0
  457. package/manifest/components/tail-status.json +109 -0
  458. package/manifest/components/terminal-block.json +91 -0
  459. package/manifest/components/theme-provider.json +2 -2
  460. package/manifest/components/thinking-indicator.json +63 -0
  461. package/manifest/components/thread-list.json +76 -0
  462. package/manifest/components/thread-search.json +90 -0
  463. package/manifest/components/threshold-rail.json +2 -2
  464. package/manifest/components/time-boundary.json +62 -0
  465. package/manifest/components/timeline.json +1 -1
  466. package/manifest/components/todo-list.json +69 -0
  467. package/manifest/components/toggle-group.json +7 -7
  468. package/manifest/components/token-editor.json +1 -1
  469. package/manifest/components/tool-call-card.json +200 -0
  470. package/manifest/components/tool-call.json +119 -0
  471. package/manifest/components/tool-error.json +114 -0
  472. package/manifest/components/tool-group.json +83 -0
  473. package/manifest/components/tool-timeline.json +119 -0
  474. package/manifest/components/toolbar.json +7 -7
  475. package/manifest/components/tooltip.json +1 -1
  476. package/manifest/components/trace-waterfall.json +74 -0
  477. package/manifest/components/turn-footer.json +105 -0
  478. package/manifest/components/typing-indicator.json +53 -0
  479. package/manifest/components/unread-divider.json +55 -0
  480. package/manifest/components/usage-chart.json +1 -1
  481. package/manifest/components/verdict-row.json +91 -0
  482. package/manifest/components/voice-conversation.json +109 -0
  483. package/manifest/components/web-preview.json +87 -0
  484. package/manifest/components/web-search.json +92 -0
  485. package/manifest/components/work-collapse.json +102 -0
  486. package/manifest/manifest.json +2670 -33
  487. package/manifest/tokens.json +22 -1
  488. package/package.json +46 -4
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "EmptyStateSuggestion",
3
+ "slug": "empty-state-suggestion",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "One thing worth asking, as a pill. `index` staggers its entrance so the row arrives\nleft to right rather than all at once.",
11
+ "props": [
12
+ {
13
+ "name": "index",
14
+ "type": "number",
15
+ "required": false,
16
+ "defaultValue": "0",
17
+ "description": "Position in the row. Staggers the entrance so the pills arrive in order."
18
+ }
19
+ ],
20
+ "typeReferences": [
21
+ "ComponentProps<\"button\"> & {\n /** Position in the row. Staggers the entrance so the pills arrive in order. */\n index?: number;\n}"
22
+ ],
23
+ "subcomponents": [],
24
+ "parts": [],
25
+ "variants": {},
26
+ "defaultVariants": {},
27
+ "tokensUsed": [
28
+ "--cue-accent",
29
+ "--cue-fg-subtle",
30
+ "--cue-text-body",
31
+ "--cue-text-emphasis",
32
+ "--cue-text-title"
33
+ ],
34
+ "summary": "One thing worth asking, as a pill.",
35
+ "examples": [],
36
+ "status": "todo-docs",
37
+ "url": "/docs/components/empty-state-suggestion",
38
+ "mdUrl": "/docs/components/empty-state-suggestion.md",
39
+ "jsonUrl": "/r/components/empty-state-suggestion.json",
40
+ "specimens": [
41
+ {
42
+ "title": "ChatEmptyState",
43
+ "group": "elements-composer",
44
+ "components": [
45
+ "ChatEmptyState",
46
+ "EmptyStateGreeting",
47
+ "EmptyStateSuggestions",
48
+ "EmptyStateSuggestion",
49
+ "EmptyStateComposer"
50
+ ],
51
+ "code": "<Specimens>\n <Specimen label=\"greeting, ways in, composer\" wide>\n <ChatEmptyState>\n <EmptyStateGreeting>What is the rig doing tonight?</EmptyStateGreeting>\n <EmptyStateSuggestions>\n {OPENERS.map((opener, index) => (\n <EmptyStateSuggestion key={opener} index={index}>\n {opener}\n </EmptyStateSuggestion>\n ))}\n </EmptyStateSuggestions>\n <EmptyStateComposer placeholder=\"Ask about the rig\" onSend={() => undefined} />\n </ChatEmptyState>\n </Specimen>\n <Specimen label=\"greeting only\" wide>\n <ChatEmptyState>\n <EmptyStateGreeting>Ready when you are.</EmptyStateGreeting>\n <EmptyStateComposer placeholder=\"Ask about the rig\" />\n </ChatEmptyState>\n </Specimen>\n</Specimens>",
52
+ "note": "The first screen, composed rather than configured: a greeting, some ways in, and a composer-shaped invitation. `EmptyStateComposer` is a display and not a working input — the placeholder is a string and send takes a handler — for the screen whose real composer is somewhere else. The suggestions stagger their entrance from `index`, so the row arrives left to right instead of all at once. Named `ChatEmptyState` because cue already publishes a layout `EmptyState`.",
53
+ "interaction": "each suggestion is a button with cue's focus ring; the greeting is an `h2`, so a screen reader lands on the sentence rather than the pills."
54
+ }
55
+ ],
56
+ "todo": true
57
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "EmptyStateSuggestions",
3
+ "slug": "empty-state-suggestions",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "The row the suggestion pills wrap in.",
11
+ "props": [],
12
+ "typeReferences": [
13
+ "ComponentProps<\"div\">"
14
+ ],
15
+ "subcomponents": [],
16
+ "parts": [],
17
+ "variants": {},
18
+ "defaultVariants": {},
19
+ "tokensUsed": [
20
+ "--cue-accent",
21
+ "--cue-fg-subtle",
22
+ "--cue-text-body",
23
+ "--cue-text-emphasis",
24
+ "--cue-text-title"
25
+ ],
26
+ "summary": "The row the suggestion pills wrap in.",
27
+ "examples": [],
28
+ "status": "todo-docs",
29
+ "url": "/docs/components/empty-state-suggestions",
30
+ "mdUrl": "/docs/components/empty-state-suggestions.md",
31
+ "jsonUrl": "/r/components/empty-state-suggestions.json",
32
+ "specimens": [
33
+ {
34
+ "title": "ChatEmptyState",
35
+ "group": "elements-composer",
36
+ "components": [
37
+ "ChatEmptyState",
38
+ "EmptyStateGreeting",
39
+ "EmptyStateSuggestions",
40
+ "EmptyStateSuggestion",
41
+ "EmptyStateComposer"
42
+ ],
43
+ "code": "<Specimens>\n <Specimen label=\"greeting, ways in, composer\" wide>\n <ChatEmptyState>\n <EmptyStateGreeting>What is the rig doing tonight?</EmptyStateGreeting>\n <EmptyStateSuggestions>\n {OPENERS.map((opener, index) => (\n <EmptyStateSuggestion key={opener} index={index}>\n {opener}\n </EmptyStateSuggestion>\n ))}\n </EmptyStateSuggestions>\n <EmptyStateComposer placeholder=\"Ask about the rig\" onSend={() => undefined} />\n </ChatEmptyState>\n </Specimen>\n <Specimen label=\"greeting only\" wide>\n <ChatEmptyState>\n <EmptyStateGreeting>Ready when you are.</EmptyStateGreeting>\n <EmptyStateComposer placeholder=\"Ask about the rig\" />\n </ChatEmptyState>\n </Specimen>\n</Specimens>",
44
+ "note": "The first screen, composed rather than configured: a greeting, some ways in, and a composer-shaped invitation. `EmptyStateComposer` is a display and not a working input — the placeholder is a string and send takes a handler — for the screen whose real composer is somewhere else. The suggestions stagger their entrance from `index`, so the row arrives left to right instead of all at once. Named `ChatEmptyState` because cue already publishes a layout `EmptyState`.",
45
+ "interaction": "each suggestion is a button with cue's focus ring; the greeting is an `h2`, so a screen reader lands on the sentence rather than the pills."
46
+ }
47
+ ],
48
+ "todo": true
49
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "EndOfTurnSummary",
3
+ "slug": "end-of-turn-summary",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "What the turn came to, in one line: `3 files changed +48 −12`.\n\nA rollup, not a control: it says what happened and offers nothing to do about\nit, because the things to do about it — review, keep, reject — belong to a\nbar above the composer that acts on the whole run, and a per-turn row with\nthose buttons on it is a row that can be pressed after the next turn has\nalready changed the same files.\n\nThe counts are drawn only when there are some. A turn that read four files\nand wrote nothing says `No files changed` and stops, rather than saying it\nwith two zeroes.",
9
+ "props": [
10
+ {
11
+ "name": "files",
12
+ "type": "number",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "How many files the turn touched."
16
+ },
17
+ {
18
+ "name": "additions",
19
+ "type": "number",
20
+ "required": false,
21
+ "defaultValue": "0",
22
+ "description": "Lines added across them."
23
+ },
24
+ {
25
+ "name": "deletions",
26
+ "type": "number",
27
+ "required": false,
28
+ "defaultValue": "0",
29
+ "description": "Lines removed across them."
30
+ },
31
+ {
32
+ "name": "label",
33
+ "type": "string",
34
+ "required": false,
35
+ "defaultValue": null,
36
+ "description": "The whole line, replacing the one {@link formatChangeSummary} would build —\nfor a turn whose result is not a diff at all: `2 cues written`,\n`Nothing to change`."
37
+ }
38
+ ],
39
+ "typeReferences": [
40
+ "Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
41
+ ],
42
+ "subcomponents": [],
43
+ "parts": [],
44
+ "variants": {},
45
+ "defaultVariants": {},
46
+ "tokensUsed": [
47
+ "--cue-danger",
48
+ "--cue-fg-muted",
49
+ "--cue-ok",
50
+ "--cue-text-ui"
51
+ ],
52
+ "summary": "What the turn came to, in one line: `3 files changed +48 −12`.",
53
+ "examples": [
54
+ {
55
+ "title": "Usage",
56
+ "code": "import { EndOfTurnSummary } from \"@cueplusplus/ui/elements\";\n\n<EndOfTurnSummary files={3} additions={48} deletions={12} />\n<EndOfTurnSummary files={0} />",
57
+ "language": "tsx"
58
+ }
59
+ ],
60
+ "status": "todo-docs",
61
+ "url": "/docs/components/end-of-turn-summary",
62
+ "mdUrl": "/docs/components/end-of-turn-summary.md",
63
+ "jsonUrl": "/r/components/end-of-turn-summary.json",
64
+ "specimens": [
65
+ {
66
+ "title": "EndOfTurnSummary",
67
+ "group": "elements-thread",
68
+ "components": [
69
+ "EndOfTurnSummary"
70
+ ],
71
+ "code": "<Specimens>\n <Specimen label=\"three files\" wide>\n <div className=\"w-full max-w-md\">\n <EndOfTurnSummary files={3} additions={48} deletions={12} />\n </div>\n </Specimen>\n <Specimen label=\"one file, additions only\" wide>\n <div className=\"w-full max-w-md\">\n <EndOfTurnSummary files={1} additions={6} />\n </div>\n </Specimen>\n <Specimen label=\"nothing changed\" wide>\n <div className=\"w-full max-w-md\">\n <EndOfTurnSummary files={0} />\n </div>\n </Specimen>\n</Specimens>",
72
+ "note": "What the turn came to, in one line. A rollup and not a control: review, keep and reject act on the whole run and belong above the composer, where they cannot be pressed after the next turn has already changed the same files. The + and − are CodeDiff's glyphs, so one transcript never shows two conventions for the same number, and a turn that changed nothing says so instead of saying it with two zeroes.",
73
+ "interaction": "none. It is a sentence with two tinted numbers in it."
74
+ }
75
+ ],
76
+ "todo": true
77
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "ErrorState",
3
+ "slug": "error-state",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "A quiet failure banner with a retry path, not a modal in your face.",
11
+ "props": [
12
+ {
13
+ "name": "title",
14
+ "type": "string",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "Primary failure headline shown in the banner."
18
+ },
19
+ {
20
+ "name": "detail",
21
+ "type": "string",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "Supporting detail under the title explaining what went wrong."
25
+ },
26
+ {
27
+ "name": "retrying",
28
+ "type": "boolean",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "When true the banner swaps to a spinning Retrying status instead of the error."
32
+ },
33
+ {
34
+ "name": "onRetry",
35
+ "type": "() => void",
36
+ "required": true,
37
+ "defaultValue": null,
38
+ "description": "Called when the retry control is pressed."
39
+ }
40
+ ],
41
+ "typeReferences": [
42
+ "Omit<\n ComponentProps<\"div\">,\n \"children\" | \"role\"\n>"
43
+ ],
44
+ "subcomponents": [],
45
+ "parts": [],
46
+ "variants": {},
47
+ "defaultVariants": {},
48
+ "tokensUsed": [
49
+ "--cue-danger",
50
+ "--cue-fg-muted",
51
+ "--cue-radius-overlay",
52
+ "--cue-text-body",
53
+ "--cue-text-ui"
54
+ ],
55
+ "summary": "A quiet failure banner with a retry path, not a modal in your face.",
56
+ "examples": [
57
+ {
58
+ "title": "Usage",
59
+ "code": "import { ErrorState } from \"@cueplusplus/ui/elements\";\n\n<ErrorState\n title=\"Request failed\"\n detail=\"The model timed out.\"\n retrying={false}\n onRetry={() => {}}\n/>",
60
+ "language": "tsx"
61
+ }
62
+ ],
63
+ "status": "todo-docs",
64
+ "url": "/docs/components/error-state",
65
+ "mdUrl": "/docs/components/error-state.md",
66
+ "jsonUrl": "/r/components/error-state.json",
67
+ "specimens": [
68
+ {
69
+ "title": "ErrorState",
70
+ "group": "elements-agents",
71
+ "components": [
72
+ "ErrorState"
73
+ ],
74
+ "code": "<Specimens>\n <Specimen label=\"failed\" wide>\n <ErrorState\n title=\"The desk refused the patch\"\n detail=\"Universe 3 is not enabled on this show file. Enable it on the desk, or patch into universes 1 and 2.\"\n retrying={false}\n onRetry={() => undefined}\n />\n </Specimen>\n <Specimen label=\"retrying\" wide>\n <ErrorState\n title=\"The desk refused the patch\"\n detail=\"Universe 3 is not enabled on this show file.\"\n retrying\n onRetry={() => undefined}\n />\n </Specimen>\n</Specimens>",
75
+ "note": "A failure banner, not a modal: it sits in the flow where the answer would have been, says what broke and what to do, and leaves the rest of the page alone. Retrying is a different element entirely rather than a disabled button — `role='alert'` while it is a failure, `role='status'` while it is trying again, which is the difference between interrupting a screen reader and not.",
76
+ "interaction": "Retry is a named button that tints on hover. The retrying state has no control at all, because there is nothing to press while it works."
77
+ }
78
+ ],
79
+ "todo": true
80
+ }
@@ -0,0 +1,107 @@
1
+ {
2
+ "name": "FeedbackDialog",
3
+ "slug": "feedback-dialog",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "A thumbs-down that asks why, so the signal arrives with a reason attached.",
11
+ "props": [
12
+ {
13
+ "name": "reasons",
14
+ "type": "readonly string[]",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "The reason chips offered. Keep them short enough to scan in one line."
18
+ },
19
+ {
20
+ "name": "selected",
21
+ "type": "readonly string[]",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "Which reasons are currently picked. More than one is allowed."
25
+ },
26
+ {
27
+ "name": "note",
28
+ "type": "string",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "Free-text detail, always optional."
32
+ },
33
+ {
34
+ "name": "sent",
35
+ "type": "boolean",
36
+ "required": true,
37
+ "defaultValue": null,
38
+ "description": "Replaces the whole form with an acknowledgement once the report is filed."
39
+ },
40
+ {
41
+ "name": "onToggleReason",
42
+ "type": "((reason: string) => void)",
43
+ "required": false,
44
+ "defaultValue": null,
45
+ "description": "Called when a reason chip is picked or unpicked."
46
+ },
47
+ {
48
+ "name": "onNoteChange",
49
+ "type": "((note: string) => void)",
50
+ "required": false,
51
+ "defaultValue": null,
52
+ "description": "Called as the free-text note is typed."
53
+ },
54
+ {
55
+ "name": "onSubmit",
56
+ "type": "(() => void)",
57
+ "required": false,
58
+ "defaultValue": null,
59
+ "description": "Called when the report is sent."
60
+ }
61
+ ],
62
+ "typeReferences": [
63
+ "Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"reasons\"\n | \"selected\"\n | \"note\"\n | \"sent\"\n | \"onToggleReason\"\n | \"onNoteChange\"\n | \"onSubmit\"\n> & {\n /** The reason chips offered. Keep them short enough to scan in one line. */\n reasons: readonly string[];\n /** Which reasons are currently picked. More than one is allowed. */\n selected: readonly string[];\n /** Free-text detail, always optional. */\n note: string;\n /** Replaces the whole form with an acknowledgement once the report is filed. */\n sent: boolean;\n /** Called when a reason chip is picked or unpicked. */\n onToggleReason?: (reason: string) => void;\n /** Called as the free-text note is typed. */\n onNoteChange?: (note: string) => void;\n /** Called when the report is sent. */\n onSubmit?: () => void;\n}"
64
+ ],
65
+ "subcomponents": [],
66
+ "parts": [],
67
+ "variants": {},
68
+ "defaultVariants": {},
69
+ "tokensUsed": [
70
+ "--cue-accent",
71
+ "--cue-accent-fg",
72
+ "--cue-fg",
73
+ "--cue-fg-muted",
74
+ "--cue-fg-subtle",
75
+ "--cue-ok",
76
+ "--cue-radius-overlay",
77
+ "--cue-radius-surface",
78
+ "--cue-surface-1",
79
+ "--cue-text-body",
80
+ "--cue-text-ui"
81
+ ],
82
+ "summary": "A thumbs-down that asks why, so the signal arrives with a reason attached.",
83
+ "examples": [
84
+ {
85
+ "title": "Usage",
86
+ "code": "import { FeedbackDialog } from \"@cueplusplus/ui/elements\";\n\n<FeedbackDialog\n reasons={[\"Not factual\", \"Too long\"]}\n selected={selected}\n note={note}\n sent={sent}\n onToggleReason={toggle}\n onNoteChange={setNote}\n onSubmit={send}\n/>",
87
+ "language": "tsx"
88
+ }
89
+ ],
90
+ "status": "todo-docs",
91
+ "url": "/docs/components/feedback-dialog",
92
+ "mdUrl": "/docs/components/feedback-dialog.md",
93
+ "jsonUrl": "/r/components/feedback-dialog.json",
94
+ "specimens": [
95
+ {
96
+ "title": "FeedbackDialog",
97
+ "group": "elements-composer",
98
+ "components": [
99
+ "FeedbackDialog"
100
+ ],
101
+ "code": "<Specimens>\n <Specimen label=\"collecting\" wide>\n <FeedbackDialog\n reasons={[\"Wrong universe\", \"Bad addressing\", \"Too slow\", \"Touched the desk\"]}\n selected={reasons}\n note={note}\n sent={sent}\n onToggleReason={(reason) =>\n setReasons((current) =>\n current.includes(reason)\n ? current.filter((item) => item !== reason)\n : [...current, reason],\n )\n }\n onNoteChange={setNote}\n onSubmit={() => setSent(true)}\n />\n </Specimen>\n <Specimen label=\"sent\" wide>\n <FeedbackDialog\n reasons={[\"Wrong universe\", \"Bad addressing\"]}\n selected={[\"Wrong universe\"]}\n note=\"\"\n sent\n />\n </Specimen>\n</Specimens>",
102
+ "note": "A thumbs-down that asks why, so the signal arrives with a reason attached. The reasons are chips rather than a select because more than one is usually true, and the note is marked optional in the header — a feedback form that demands prose collects nothing. Sending replaces the whole form with an acknowledgement.",
103
+ "interaction": "each chip is `aria-pressed`. The acknowledgement lives in a `status` live region mounted from the start and empty until it is not — a region created together with its text is the case a screen reader is free to miss."
104
+ }
105
+ ],
106
+ "todo": true
107
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "FileTree",
3
+ "slug": "file-tree",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "Everything a run touched, as a tree, with the churn spelled out per file.",
11
+ "props": [
12
+ {
13
+ "name": "nodes",
14
+ "type": "readonly FileTreeNode[]",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "Flat list in display order. Nesting comes from each node's depth, not from\nchildren arrays."
18
+ },
19
+ {
20
+ "name": "visibleCount",
21
+ "type": "number",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "How many nodes have landed. Raise it as the run touches more files."
25
+ },
26
+ {
27
+ "name": "totalAdditions",
28
+ "type": "number",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "Added lines across the whole change."
32
+ },
33
+ {
34
+ "name": "totalDeletions",
35
+ "type": "number",
36
+ "required": true,
37
+ "defaultValue": null,
38
+ "description": "Removed lines across the whole change."
39
+ }
40
+ ],
41
+ "typeReferences": [
42
+ "Omit<\n ComponentProps<\"div\">,\n \"children\" | \"nodes\" | \"visibleCount\" | \"totalAdditions\" | \"totalDeletions\"\n> & {\n /**\n * Flat list in display order. Nesting comes from each node's depth, not from\n * children arrays.\n */\n nodes: readonly FileTreeNode[];\n /** How many nodes have landed. Raise it as the run touches more files. */\n visibleCount: number;\n /** Added lines across the whole change. */\n totalAdditions: number;\n /** Removed lines across the whole change. */\n totalDeletions: number;\n}"
43
+ ],
44
+ "subcomponents": [],
45
+ "parts": [],
46
+ "variants": {},
47
+ "defaultVariants": {},
48
+ "tokensUsed": [
49
+ "--cue-danger",
50
+ "--cue-fg-muted",
51
+ "--cue-fg-subtle",
52
+ "--cue-ok",
53
+ "--cue-radius-overlay",
54
+ "--cue-radius-surface",
55
+ "--cue-surface-1",
56
+ "--cue-text-body"
57
+ ],
58
+ "summary": "Everything a run touched, as a tree, with the churn spelled out per file.",
59
+ "examples": [
60
+ {
61
+ "title": "Usage",
62
+ "code": "import { FileTree } from \"@cueplusplus/ui/elements\";\n\n<FileTree\n nodes={nodes}\n visibleCount={nodes.length}\n totalAdditions={78}\n totalDeletions={9}\n/>",
63
+ "language": "tsx"
64
+ }
65
+ ],
66
+ "status": "todo-docs",
67
+ "url": "/docs/components/file-tree",
68
+ "mdUrl": "/docs/components/file-tree.md",
69
+ "jsonUrl": "/r/components/file-tree.json",
70
+ "specimens": [
71
+ {
72
+ "title": "FileTree",
73
+ "group": "elements",
74
+ "components": [
75
+ "FileTree"
76
+ ],
77
+ "code": "<Specimens>\n <Specimen label=\"mid-run\" wide>\n <FileTree nodes={TOUCHED} visibleCount={3} totalAdditions={12} totalDeletions={4} />\n </Specimen>\n <Specimen label=\"complete\" wide>\n <FileTree\n nodes={TOUCHED}\n visibleCount={TOUCHED.length}\n totalAdditions={60}\n totalDeletions={6}\n />\n </Specimen>\n</Specimens>",
78
+ "note": "Everything a run touched, with the churn per file. The list is flat and the nesting is `depth`, which is what lets a row appear the moment the agent reports it rather than after its folder is complete.",
79
+ "interaction": "rows highlight on hover to keep the eye on one line; nothing here is clickable, because the tree reports rather than navigates."
80
+ }
81
+ ],
82
+ "todo": true
83
+ }
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "FlowGraph",
3
+ "slug": "flow-graph",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "Work as a graph rather than a list: branches that fan out and rejoin.",
9
+ "props": [
10
+ {
11
+ "name": "nodes",
12
+ "type": "readonly FlowNode[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "Every node with its grid position. Layout is explicit; the element runs no solver."
16
+ },
17
+ {
18
+ "name": "edges",
19
+ "type": "readonly FlowEdge[]",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "Connections by node id. An edge dims until both of its ends are visible."
23
+ },
24
+ {
25
+ "name": "visibleCount",
26
+ "type": "number",
27
+ "required": true,
28
+ "defaultValue": null,
29
+ "description": "How many nodes have been reached so far."
30
+ }
31
+ ],
32
+ "typeReferences": [
33
+ "Omit<\n ComponentProps<\"div\">,\n \"children\" | \"nodes\" | \"edges\" | \"visibleCount\"\n> & {\n /** Every node with its grid position. Layout is explicit; the element runs no solver. */\n nodes: readonly FlowNode[];\n /** Connections by node id. An edge dims until both of its ends are visible. */\n edges: readonly FlowEdge[];\n /** How many nodes have been reached so far. */\n visibleCount: number;\n}"
34
+ ],
35
+ "subcomponents": [],
36
+ "parts": [],
37
+ "variants": {},
38
+ "defaultVariants": {},
39
+ "tokensUsed": [
40
+ "--cue-border",
41
+ "--cue-fg",
42
+ "--cue-fg-muted",
43
+ "--cue-fg-subtle",
44
+ "--cue-radius-overlay",
45
+ "--cue-radius-surface",
46
+ "--cue-stream",
47
+ "--cue-surface-1",
48
+ "--cue-text-ui"
49
+ ],
50
+ "summary": "Work as a graph rather than a list: branches that fan out and rejoin.",
51
+ "examples": [
52
+ {
53
+ "title": "Usage",
54
+ "code": "import { FlowGraph } from \"@cueplusplus/ui/elements\";\n\n<FlowGraph nodes={nodes} edges={edges} visibleCount={nodes.length} />",
55
+ "language": "tsx"
56
+ }
57
+ ],
58
+ "status": "todo-docs",
59
+ "url": "/docs/components/flow-graph",
60
+ "mdUrl": "/docs/components/flow-graph.md",
61
+ "jsonUrl": "/r/components/flow-graph.json",
62
+ "specimens": [
63
+ {
64
+ "title": "FlowGraph",
65
+ "group": "elements-agents",
66
+ "components": [
67
+ "FlowGraph"
68
+ ],
69
+ "code": "<Specimens>\n <Specimen label=\"partway\" wide>\n <FlowGraph nodes={FLOW_NODES} edges={FLOW_EDGES} visibleCount={4} />\n </Specimen>\n <Specimen label=\"the whole graph\" wide>\n <FlowGraph\n nodes={FLOW_NODES.map((node) => ({ ...node, state: \"done\" as const }))}\n edges={FLOW_EDGES}\n visibleCount={FLOW_NODES.length}\n />\n </Specimen>\n</Specimens>",
70
+ "note": "Work as a graph rather than a list, for the runs that fan out and rejoin — here the two trusses are patched in parallel and the render waits for both. Layout is explicit: every node carries its own column and row and the element runs no solver, which is what keeps a re-render from rearranging a diagram somebody was reading.",
71
+ "interaction": "none. `visibleCount` is what makes the graph arrive a node at a time, and an edge stays dim until both of its ends have been reached."
72
+ }
73
+ ],
74
+ "todo": true
75
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "FolderIcon",
3
+ "slug": "folder-icon",
4
+ "group": "icons",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": false,
8
+ "description": "A folder somebody made: a shelf of bookmarks, filed by hand.\n\nThe tab is the whole glyph. A plain rounded box in this library is a panel,\na card or a dialog, and the one thing a folder has to say is that a person\nput these here on purpose rather than a query having returned them.",
9
+ "props": [],
10
+ "typeReferences": [
11
+ "React.SVGProps<SVGSVGElement>"
12
+ ],
13
+ "subcomponents": [],
14
+ "parts": [],
15
+ "variants": {},
16
+ "defaultVariants": {},
17
+ "tokensUsed": [
18
+ "--cue-danger",
19
+ "--cue-fg",
20
+ "--cue-icon-",
21
+ "--cue-icon-md",
22
+ "--cue-icon-sm"
23
+ ],
24
+ "summary": "A folder somebody made: a shelf of bookmarks, filed by hand.",
25
+ "examples": [],
26
+ "status": "todo-docs",
27
+ "url": "/docs/components/folder-icon",
28
+ "mdUrl": "/docs/components/folder-icon.md",
29
+ "jsonUrl": "/r/components/folder-icon.json",
30
+ "specimens": [
31
+ {
32
+ "title": "The container icon set",
33
+ "group": "icons",
34
+ "components": [
35
+ "CatalogueIcon",
36
+ "StackIcon",
37
+ "StacksMatrixIcon",
38
+ "AudienceIcon",
39
+ "ChannelReleasedIcon",
40
+ "ChannelBetaIcon",
41
+ "FolderIcon",
42
+ "McpServerIcon",
43
+ "CliToolIcon",
44
+ "SkillIcon"
45
+ ],
46
+ "code": "<Specimens>\n {CONTAINERS.map(([label, name, Icon]) => (\n <Specimen key={name} label={label}>\n <Icon className=\"size-icon-md text-fg\" />\n </Specimen>\n ))}\n</Specimens>\n<Specimens>\n <Specimen label=\"icon-sm\">\n <SkillIcon className=\"size-icon-sm text-fg\" />\n </Specimen>\n <Specimen label=\"icon-md\">\n <SkillIcon className=\"size-icon-md text-fg\" />\n </Specimen>\n <Specimen label=\"inherited\">\n <SkillIcon className=\"size-icon-md\" />\n </Specimen>\n <Specimen label=\"muted\">\n <SkillIcon className=\"size-icon-md text-fg-muted\" />\n </Specimen>\n <Specimen label=\"accent\">\n <SkillIcon className=\"size-icon-md text-accent\" />\n </Specimen>\n <Specimen label=\"danger\">\n <SkillIcon className=\"size-icon-md text-danger\" />\n </Specimen>\n</Specimens>\n<Specimens>\n <Specimen label=\"in a row\" wide>\n <span className=\"inline-flex items-center gap-(--cue-space-2) font-mono text-(length:--cue-text-ui) text-fg-muted\">\n <ChannelReleasedIcon className=\"size-icon-md shrink-0\" />\n Our skills · released\n </span>\n </Specimen>\n <Specimen label=\"current row\" wide>\n <span className=\"inline-flex items-center gap-(--cue-space-2) font-mono text-(length:--cue-text-ui) text-fg\">\n <ChannelBetaIcon className=\"size-icon-md shrink-0\" />\n Our skills · beta\n </span>\n </Specimen>\n</Specimens>",
47
+ "note": "One grid and one weight across all ten, at size-icon-md — the size a navigation row draws them at. Each is a plain <svg> that takes every SVG prop.",
48
+ "interaction": "none. They are decorative by default: aria-hidden, announced by nothing, because the row they mark already carries its name."
49
+ }
50
+ ],
51
+ "todo": true
52
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "Frac",
3
+ "slug": "frac",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "A fraction inside an expression — numerator, rule, denominator — set inline and\naligned to the middle.",
9
+ "props": [
10
+ {
11
+ "name": "over",
12
+ "type": "ReactNode",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "Numerator."
16
+ },
17
+ {
18
+ "name": "under",
19
+ "type": "ReactNode",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "Denominator."
23
+ }
24
+ ],
25
+ "typeReferences": [],
26
+ "subcomponents": [],
27
+ "parts": [],
28
+ "variants": {},
29
+ "defaultVariants": {},
30
+ "tokensUsed": [
31
+ "--cue-border-strong",
32
+ "--cue-fg",
33
+ "--cue-fg-subtle",
34
+ "--cue-radius-overlay",
35
+ "--cue-text-emphasis"
36
+ ],
37
+ "summary": "A fraction inside an expression — numerator, rule, denominator — set inline and aligned to the middle.",
38
+ "examples": [],
39
+ "status": "todo-docs",
40
+ "url": "/docs/components/frac",
41
+ "mdUrl": "/docs/components/frac.md",
42
+ "jsonUrl": "/r/components/frac.json",
43
+ "specimens": [
44
+ {
45
+ "title": "MathBlock",
46
+ "group": "elements-knowledge",
47
+ "components": [
48
+ "MathBlock",
49
+ "Frac",
50
+ "Sub",
51
+ "Sup"
52
+ ],
53
+ "code": "<Specimens>\n <Specimen label=\"worked through\" wide>\n <MathBlock label=\"illuminance at the deck\" steps={MATH} visibleSteps={MATH.length} />\n </Specimen>\n <Specimen label=\"first step only\" wide>\n <MathBlock steps={MATH} visibleSteps={1} />\n </Specimen>\n</Specimens>",
54
+ "note": "Maths with the working shown, a step at a time. The expressions are nodes rather than a string, so there is no parser and no KaTeX in the bundle — `Frac` stacks a numerator over a rule, `Sup` and `Sub` set an index upright inside the serif italic, and anything else is text.",
55
+ "interaction": "none. Each step's note says what justified it, which is what turns three lines of algebra into an explanation."
56
+ }
57
+ ],
58
+ "todo": true
59
+ }