@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,64 @@
1
+ {
2
+ "name": "GenerationLoader",
3
+ "slug": "generation-loader",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "The wait before there is anything to show. A nine-cell matrix keeps time under a\nshimmering label, driven by a `tick` the caller advances — so a paused replay pauses\nthe loader too.",
9
+ "props": [
10
+ {
11
+ "name": "label",
12
+ "type": "string",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "Status copy shown under the pixel grid while the model has nothing else to show."
16
+ },
17
+ {
18
+ "name": "tick",
19
+ "type": "number",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "Animation clock that advances the pixel pattern and the elapsed seconds counter."
23
+ },
24
+ {
25
+ "name": "variant",
26
+ "type": "\"dots\" | \"squares\" | \"rounded\"",
27
+ "required": false,
28
+ "defaultValue": "dots",
29
+ "description": "Cell shape of the pixel matrix."
30
+ }
31
+ ],
32
+ "typeReferences": [
33
+ "Omit<\n ComponentProps<\"div\">,\n \"children\"\n>"
34
+ ],
35
+ "subcomponents": [],
36
+ "parts": [],
37
+ "variants": {},
38
+ "defaultVariants": {},
39
+ "tokensUsed": [
40
+ "--cue-accent",
41
+ "--cue-fg-muted",
42
+ "--cue-radius-control",
43
+ "--cue-text-body"
44
+ ],
45
+ "summary": "The wait before there is anything to show.",
46
+ "examples": [],
47
+ "status": "todo-docs",
48
+ "url": "/docs/components/generation-loader",
49
+ "mdUrl": "/docs/components/generation-loader.md",
50
+ "jsonUrl": "/r/components/generation-loader.json",
51
+ "specimens": [
52
+ {
53
+ "title": "GenerationLoader",
54
+ "group": "elements-thread",
55
+ "components": [
56
+ "GenerationLoader"
57
+ ],
58
+ "code": "<Specimens>\n {LOADER_VARIANTS.map((variant, index) => (\n <Specimen key={variant} label={variant}>\n <GenerationLoader label=\"Working on the patch\" tick={index * 4} variant={variant} />\n </Specimen>\n ))}\n</Specimens>",
59
+ "note": "The wait before there is anything at all to show. Nine cells keep time under a shimmering label, driven by a tick the caller advances — so a paused replay pauses the loader too, which a CSS animation could never do. The three variants are three shapes for the same clock.",
60
+ "interaction": "none. The matrix is aria-hidden; the label is the only thing a screen reader gets, which is the right amount."
61
+ }
62
+ ],
63
+ "todo": true
64
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "name": "GenerativeUI",
3
+ "slug": "generative-ui",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements/generative",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "The vocabulary a model composes at runtime.\n\nEvery other component in this library is handed props by a programmer, and a\nwrong one costs a type error at the call site. This one is handed a tree by a\nlanguage model over a network, so its whole contract is what it does with\ninput nobody checked. A model emits JSON — 27 intrinsic names, nested — and\n`GenerativeUI` turns it into elements. There is no compile step between the\ntwo and there cannot be one.\n\nThat reverses the usual priorities. The interesting question is not what a\ncorrect spec renders as, it is what an incorrect one does, and the answer is\nthree-fold and never an exception:\n\n- a `$type` from a newer catalogue draws an in-place notice and its siblings\n still render;\n- a spec that is not a component tree at all draws a legible error state,\n never a blank box that looks like a message still streaming;\n- a tree nested deeper than {@link GENERATIVE_MAX_DEPTH} stops and says so,\n rather than exhausting the stack and taking the console with it.\n\nThe root is a plain `<div data-slot=\"generative-ui\" data-aui=\"root\">` and it\nis always there: an unreadable spec draws the error state *inside* it rather\nthan instead of it, so a caller's layout, `className` and ref hold whatever\nthe model sent.\n\n## Why it is not Tailwind\n\nThe stylesheet is plain `[data-aui]` CSS, and the tree it draws carries no\n`class` attribute anywhere. That is upstream's arrangement and it is worth\nkeeping precisely: a widget a model composed has to draw inside whatever\nconsole it was sent to, and a console is very often somebody else's app with\nno utility framework, no shadcn and no design system of its own. The\nconsequence runs all the way down — the icons are hand-drawn rather than\n`lucide-react`, the chart is 300 lines of SVG rather than `recharts`, and\n`./elements/generative` declares no optional peer at all. There is no package\nin the tree whose absence turns a weather card into a stack trace.\n\n```tsx\nimport { GenerativeUI } from \"@cueplusplus/ui/elements/generative\";\nimport \"@cueplusplus/ui/elements/generative.css\";\n```\n\n## Two skins\n\n`skin` and `fidelity` are the same two axes {@link AgentSurface } publishes,\nand for the same reason: the vocabulary has cue's values by default and\nassistant-ui's under `skin=\"aui\"`, which is upstream's own\n`data-aui-theme=\"elements\"` layer — a 20px card, a borderless 12px field, a\npill button. Pass them here when the tree is its own island; leave them off\ninside an `AgentSurface`, which has already stamped the subtree and whose\nvalues inherit through CSS with nothing threaded.",
9
+ "props": [
10
+ {
11
+ "name": "spec",
12
+ "type": "unknown",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "The tree to draw, exactly as it arrived.\n\nTyped `unknown` rather than `GenerativeNode` on purpose. A caller who has\njust parsed a tool result holds a `JSON.parse` return, and a signature that\ndemanded a node would push every consumer into the same cast — which is a\nclaim about the bytes that nobody is in a position to make. The renderer\nreads what it was given and reports what it could not use."
16
+ },
17
+ {
18
+ "name": "onAction",
19
+ "type": "((action: GenerativeAction) => void)",
20
+ "required": false,
21
+ "defaultValue": null,
22
+ "description": "Where a control's press goes: a button, a form submit, a list row, a\ncheckbox, a card's confirm.\n\nCalled with the `$action` string the model put on the node, the intrinsic\nthat fired it, and — where the control has one — its own value. Omit it and\nevery control is inert, which is the right default for a transcript that is\nbeing re-read rather than used."
23
+ },
24
+ {
25
+ "name": "onFault",
26
+ "type": "((fault: GenerativeFault) => void)",
27
+ "required": false,
28
+ "defaultValue": null,
29
+ "description": "Told about every node the renderer refused to guess at, after the render\nthat refused it.\n\nThe counterpart of never throwing. A fallback is legible on screen, but the\nperson who needs to know that this console is a version behind the model\ndriving it is usually not the person looking at it — so the faults are also\na stream, one call per refusal, suitable for a counter or a log line."
30
+ },
31
+ {
32
+ "name": "renderMarkdown",
33
+ "type": "((value: string) => ReactNode)",
34
+ "required": false,
35
+ "defaultValue": null,
36
+ "description": "Turns a `Markdown` node's source into elements.\n\nWithout it the source renders verbatim, as characters, because this subpath\nships no parser and will not acquire one: `@cueplusplus/ui/elements/markdown`\nis the sanitized renderer this prop is shaped for, and it carries two peers\nthat a console drawing a weather card should not have to install.\n\n```tsx\nimport { MarkdownText } from \"@cueplusplus/ui/elements/markdown\";\n\n<GenerativeUI spec={spec} renderMarkdown={(md) => <MarkdownText>{md}</MarkdownText>} />\n```"
37
+ },
38
+ {
39
+ "name": "maxDepth",
40
+ "type": "number",
41
+ "required": false,
42
+ "defaultValue": null,
43
+ "description": "How many levels to walk before drawing the depth notice. Defaults to\n{@link GENERATIVE_MAX_DEPTH}; anything below one level is read as one,\nsince a tree with no levels is not a tree."
44
+ },
45
+ {
46
+ "name": "skin",
47
+ "type": "\"cue\" | \"aui\"",
48
+ "required": false,
49
+ "defaultValue": null,
50
+ "description": "Which value-set paints this tree: `cue` (the default) or `aui`, which\ninstalls assistant-ui's own surface language. Leave it off inside an\n{@link AgentSurface }, which has stamped the subtree already."
51
+ },
52
+ {
53
+ "name": "fidelity",
54
+ "type": "\"upstream\" | \"cue-metrics\"",
55
+ "required": false,
56
+ "defaultValue": null,
57
+ "description": "Whether the density knobs follow cue's ladder (`cue-metrics`, the default)\nor pin assistant-ui's own numbers (`upstream`)."
58
+ }
59
+ ],
60
+ "typeReferences": [
61
+ "Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
62
+ ],
63
+ "subcomponents": [],
64
+ "parts": [],
65
+ "variants": {},
66
+ "defaultVariants": {},
67
+ "tokensUsed": [],
68
+ "summary": "The vocabulary a model composes at runtime.",
69
+ "examples": [
70
+ {
71
+ "title": "Usage",
72
+ "code": "<GenerativeUI\n spec={JSON.parse(toolResult)}\n onAction={(action) => send({ type: \"ui-action\", ...action })}\n onFault={(fault) => telemetry.warn(\"generative\", fault)}\n/>",
73
+ "language": "tsx"
74
+ }
75
+ ],
76
+ "status": "todo-docs",
77
+ "url": "/docs/components/generative-ui",
78
+ "mdUrl": "/docs/components/generative-ui.md",
79
+ "jsonUrl": "/r/components/generative-ui.json",
80
+ "specimens": [
81
+ {
82
+ "title": "GenerativeUI",
83
+ "group": "elements-knowledge",
84
+ "components": [
85
+ "GenerativeUI"
86
+ ],
87
+ "code": "<Specimens>\n <Specimen label=\"a composed dashboard\" wide>\n <GenerativeUI spec={RIG_DASHBOARD} />\n </Specimen>\n <Specimen label=\"a form\" wide>\n <GenerativeUI\n spec={patchRequest(patchSent)}\n onAction={(action) => {\n if (action.action !== \"patch-request\") return;\n const values = action.values ?? {};\n setPatchSent(\n values[\"fixture\"] === undefined\n ? null\n : `${values[\"fixture\"]} on ${values[\"universe\"] === \"\" ? \"no universe yet\" : values[\"universe\"]}, from ${values[\"from\"]}.`,\n );\n }}\n />\n </Specimen>\n <Specimen label=\"a chart\" wide>\n <GenerativeUI spec={DRAW_CHART} />\n </Specimen>\n <Specimen label=\"an unknown component\" wide>\n <GenerativeUI spec={FROM_THE_FUTURE} />\n </Specimen>\n <Specimen label=\"a malformed spec\" wide>\n <GenerativeUI spec={NOT_A_TREE} />\n </Specimen>\n</Specimens>",
88
+ "note": "The one component here nobody wrote props for. A model emits a tree of 27 intrinsic names as JSON and this draws it, with no compile step in between and none possible, so the specimens are the spec objects themselves: a dashboard the model composed out of facts, a chart and a table; a patch form whose confirm hands back every named field at once; and a chart on its own. The last two are wrong on purpose. A $type from a newer catalogue draws an in-place notice and its siblings still render; a spec that is not a tree at all draws a legible error rather than the blank box that reads as a message still streaming. Neither throws, which is the whole contract. It draws from plain [data-aui] CSS with no utilities and no icon or chart package behind it, because the console a model is talking to is usually somebody else's app.",
89
+ "interaction": "every control is a real control and takes the house focus ring; text fires on blur rather than per keystroke, since $action is a message to the model. The form specimen is live: submit it and the model's own card gains a success alert with what the desk received."
90
+ }
91
+ ],
92
+ "todo": true
93
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "GuardrailNotice",
3
+ "slug": "guardrail-notice",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "A refusal in its own shape, with the nearest thing it can do instead.",
11
+ "props": [
12
+ {
13
+ "name": "title",
14
+ "type": "string",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "The refusal in one line, stated plainly rather than apologetically."
18
+ },
19
+ {
20
+ "name": "explanation",
21
+ "type": "string",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "Why, and where the line actually sits."
25
+ },
26
+ {
27
+ "name": "policy",
28
+ "type": "string",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "Short label for the rule that applied."
32
+ },
33
+ {
34
+ "name": "alternatives",
35
+ "type": "readonly string[]",
36
+ "required": true,
37
+ "defaultValue": null,
38
+ "description": "The nearest things it can do. Pass an empty array to hide the section."
39
+ },
40
+ {
41
+ "name": "onPick",
42
+ "type": "((alternative: string) => void)",
43
+ "required": false,
44
+ "defaultValue": null,
45
+ "description": "Called when an alternative is chosen."
46
+ }
47
+ ],
48
+ "typeReferences": [
49
+ "Omit<\n ComponentProps<\"div\">,\n \"children\" | \"title\" | \"explanation\" | \"policy\" | \"alternatives\" | \"onPick\"\n> & {\n /** The refusal in one line, stated plainly rather than apologetically. */\n title: string;\n /** Why, and where the line actually sits. */\n explanation: string;\n /** Short label for the rule that applied. */\n policy: string;\n /** The nearest things it can do. Pass an empty array to hide the section. */\n alternatives: readonly string[];\n /** Called when an alternative is chosen. */\n onPick?: (alternative: string) => void;\n}"
50
+ ],
51
+ "subcomponents": [],
52
+ "parts": [],
53
+ "variants": {},
54
+ "defaultVariants": {},
55
+ "tokensUsed": [
56
+ "--cue-fg",
57
+ "--cue-fg-muted",
58
+ "--cue-fg-subtle",
59
+ "--cue-radius-overlay",
60
+ "--cue-radius-surface",
61
+ "--cue-surface-1",
62
+ "--cue-text-body",
63
+ "--cue-text-ui",
64
+ "--cue-warn"
65
+ ],
66
+ "summary": "A refusal in its own shape, with the nearest thing it can do instead.",
67
+ "examples": [
68
+ {
69
+ "title": "Usage",
70
+ "code": "import { GuardrailNotice } from \"@cueplusplus/ui/elements\";\n\n<GuardrailNotice\n title=\"I can't help with that\"\n explanation=\"This asks for a working attack against infrastructure you don't own.\"\n policy=\"policy\"\n alternatives={alternatives}\n/>",
71
+ "language": "tsx"
72
+ }
73
+ ],
74
+ "status": "todo-docs",
75
+ "url": "/docs/components/guardrail-notice",
76
+ "mdUrl": "/docs/components/guardrail-notice.md",
77
+ "jsonUrl": "/r/components/guardrail-notice.json",
78
+ "specimens": [
79
+ {
80
+ "title": "GuardrailNotice",
81
+ "group": "elements-agents",
82
+ "components": [
83
+ "GuardrailNotice"
84
+ ],
85
+ "code": "<Specimens>\n <Specimen label=\"three ways round it\" wide>\n <GuardrailNotice\n title=\"I will not write to the desk while the house is open.\"\n explanation=\"The show is running and this patch changes fixtures that are live on stage. Outside show hours the same change is fine.\"\n policy=\"live-desk\"\n alternatives={[\n \"Write the patch to a file for the LX crew\",\n \"Queue it for the post-show window\",\n \"Show me what would change\",\n ]}\n onPick={() => undefined}\n />\n </Specimen>\n <Specimen label=\"nothing else to offer\" wide>\n <GuardrailNotice\n title=\"I cannot open universe 4 on this desk.\"\n explanation=\"The show file is licensed for three universes. This is a limit on the desk, not a policy I can waive.\"\n policy=\"capability\"\n alternatives={[]}\n />\n </Specimen>\n</Specimens>",
86
+ "note": "A refusal in its own shape: what it will not do, why, the rule that applied, and the nearest things it *can* do. The alternatives are the whole point — a refusal that ends at 'no' hands the work back with nothing attached, and this one hands back three next moves.",
87
+ "interaction": "each alternative is a button reporting its own text to `onPick`. With an empty list the section disappears rather than leaving an empty rule."
88
+ }
89
+ ],
90
+ "todo": true
91
+ }
@@ -82,7 +82,7 @@
82
82
  },
83
83
  {
84
84
  "name": "side",
85
- "type": "\"left\" | \"right\" | \"top\" | \"bottom\" | \"inline-end\" | \"inline-start\"",
85
+ "type": "\"left\" | \"right\" | \"bottom\" | \"top\" | \"inline-end\" | \"inline-start\"",
86
86
  "required": false,
87
87
  "defaultValue": null,
88
88
  "description": "Preferred side of the trigger. Defaults to `\"bottom\"`."
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "ImageGeneration",
3
+ "slug": "image-generation",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "A dot grid holds the frame while the image resolves out of a blur.",
11
+ "props": [
12
+ {
13
+ "name": "prompt",
14
+ "type": "string",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "Prompt text shown under the image frame."
18
+ },
19
+ {
20
+ "name": "generating",
21
+ "type": "boolean",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "When true the frame holds a pulsing dot grid; otherwise the image resolves."
25
+ }
26
+ ],
27
+ "typeReferences": [
28
+ "Omit<ComponentProps<\"div\">, \"children\" | \"prompt\" | \"generating\"> & {\n /** Prompt text shown under the image frame. */\n prompt: string;\n /** When true the frame holds a pulsing dot grid; otherwise the image resolves. */\n generating: boolean;\n}"
29
+ ],
30
+ "subcomponents": [],
31
+ "parts": [],
32
+ "variants": {},
33
+ "defaultVariants": {},
34
+ "tokensUsed": [
35
+ "--cue-accent-fg",
36
+ "--cue-fg-muted",
37
+ "--cue-fg-subtle",
38
+ "--cue-radius-overlay",
39
+ "--cue-surface-3",
40
+ "--cue-text-ui"
41
+ ],
42
+ "summary": "A dot grid holds the frame while the image resolves out of a blur.",
43
+ "examples": [
44
+ {
45
+ "title": "Usage",
46
+ "code": "import { ImageGeneration } from \"@cueplusplus/ui/elements\";\n\n<ImageGeneration prompt=\"A calm blue abstract\" generating={false} />",
47
+ "language": "tsx"
48
+ }
49
+ ],
50
+ "status": "todo-docs",
51
+ "url": "/docs/components/image-generation",
52
+ "mdUrl": "/docs/components/image-generation.md",
53
+ "jsonUrl": "/r/components/image-generation.json",
54
+ "specimens": [
55
+ {
56
+ "title": "ImageGeneration",
57
+ "group": "elements-agents",
58
+ "components": [
59
+ "ImageGeneration"
60
+ ],
61
+ "code": "<Specimens>\n <Specimen label=\"generating\">\n <ImageGeneration prompt=\"Pre-vis: front wash at 8.4 m trim\" generating />\n </Specimen>\n <Specimen label=\"resolved\">\n <ImageGeneration prompt=\"Pre-vis: front wash at 8.4 m trim\" generating={false} />\n </Specimen>\n</Specimens>",
62
+ "note": "A dot grid holds the square while the image resolves out of a blur — the frame is the right size from the first frame, so nothing below it moves when the picture lands. While generating, the prompt is replaced by a shimmering label; when it settles, the prompt is what is left under the image.",
63
+ "interaction": "regenerate is a labelled icon button. The grid and the image are both `aria-hidden`: the prompt underneath is the description, and a decorative placeholder should not be announced as a picture."
64
+ }
65
+ ],
66
+ "todo": true
67
+ }
@@ -30,7 +30,7 @@
30
30
  },
31
31
  {
32
32
  "name": "side",
33
- "type": "\"left\" | \"right\" | \"top\" | \"bottom\" | \"inline-end\" | \"inline-start\"",
33
+ "type": "\"left\" | \"right\" | \"bottom\" | \"top\" | \"inline-end\" | \"inline-start\"",
34
34
  "required": false,
35
35
  "defaultValue": "top",
36
36
  "description": "Preferred side of the badge. Defaults to `\"top\"`."
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "InlineCitation",
3
+ "slug": "inline-citation",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "Numbered references inside a sentence, each with a hover preview of its source.",
9
+ "props": [
10
+ {
11
+ "name": "sources",
12
+ "type": "CitationSource[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "Sources attached to the numbered reference markers in the sentence."
16
+ },
17
+ {
18
+ "name": "openIndex",
19
+ "type": "number | null",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "Which citation preview is open, or null when none is open."
23
+ },
24
+ {
25
+ "name": "onOpenIndexChange",
26
+ "type": "(index: number | null) => void",
27
+ "required": true,
28
+ "defaultValue": null,
29
+ "description": "Called when a citation marker opens or closes its preview."
30
+ }
31
+ ],
32
+ "typeReferences": [
33
+ "Omit<\n ComponentProps<\"p\">,\n \"children\"\n>"
34
+ ],
35
+ "subcomponents": [],
36
+ "parts": [],
37
+ "variants": {},
38
+ "defaultVariants": {},
39
+ "tokensUsed": [
40
+ "--cue-accent",
41
+ "--cue-accent-fg",
42
+ "--cue-fg",
43
+ "--cue-fg-muted",
44
+ "--cue-fg-subtle",
45
+ "--cue-font-mono",
46
+ "--cue-radius-control",
47
+ "--cue-radius-overlay",
48
+ "--cue-surface-2",
49
+ "--cue-text-body",
50
+ "--cue-text-micro"
51
+ ],
52
+ "summary": "Numbered references inside a sentence, each with a hover preview of its source.",
53
+ "examples": [
54
+ {
55
+ "title": "Usage",
56
+ "code": "import { InlineCitation } from \"@cueplusplus/ui/elements\";\n\n<InlineCitation\n sources={[\n {\n domain: \"docs.example.com\",\n title: \"Optimistic updates\",\n snippet: \"Confirm writes after paint.\",\n },\n ]}\n openIndex={0}\n onOpenIndexChange={setOpenIndex}\n/>",
57
+ "language": "tsx"
58
+ }
59
+ ],
60
+ "status": "todo-docs",
61
+ "url": "/docs/components/inline-citation",
62
+ "mdUrl": "/docs/components/inline-citation.md",
63
+ "jsonUrl": "/r/components/inline-citation.json",
64
+ "specimens": [
65
+ {
66
+ "title": "InlineCitation",
67
+ "group": "elements-knowledge",
68
+ "components": [
69
+ "InlineCitation"
70
+ ],
71
+ "code": "<Specimens>\n <Specimen label=\"the first marker open\" wide>\n <InlineCitation\n sources={CITED}\n openIndex={citation}\n onOpenIndexChange={setCitation}\n />\n </Specimen>\n <Specimen label=\"both closed\" wide>\n <InlineCitation\n sources={CITED}\n openIndex={null}\n onOpenIndexChange={() => undefined}\n />\n </Specimen>\n</Specimens>",
72
+ "note": "The marker inside the sentence, rather than the list under it: a numbered chip the paragraph flows around, and behind each one the page it stands on. `Sources` is the bibliography; this is the footnote, and the two are meant to be read together — the chip says a claim is attributable without spending a clause saying so.",
73
+ "interaction": "each marker is a button, so the preview is reachable from a keyboard as well as a pointer; the open one inverts to the accent fill. The card is the family's one portal, and it carries the island stamp — opened inside an `AgentSurface`, it paints in that island's values rather than the document's."
74
+ }
75
+ ],
76
+ "todo": true
77
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "JobProgress",
3
+ "slug": "job-progress",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "Work measured in minutes: weighted stages, an ETA, and a way out.",
11
+ "props": [
12
+ {
13
+ "name": "title",
14
+ "type": "string",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "What the job is doing."
18
+ },
19
+ {
20
+ "name": "stages",
21
+ "type": "readonly JobStage[]",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "Stages with relative weights, so a long install does not read the same as a fast\nclone."
25
+ },
26
+ {
27
+ "name": "stageIndex",
28
+ "type": "number",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "Which stage is running. Passing stages.length marks the job finished, and the bar\nnever runs past its track."
32
+ },
33
+ {
34
+ "name": "stageProgress",
35
+ "type": "number",
36
+ "required": true,
37
+ "defaultValue": null,
38
+ "description": "Progress inside the current stage, 0 to 1."
39
+ },
40
+ {
41
+ "name": "eta",
42
+ "type": "string",
43
+ "required": true,
44
+ "defaultValue": null,
45
+ "description": "Pre-formatted estimate. Replaced by done once finished."
46
+ },
47
+ {
48
+ "name": "onCancel",
49
+ "type": "(() => void)",
50
+ "required": false,
51
+ "defaultValue": null,
52
+ "description": "Called to stop the job. Hidden once it finishes."
53
+ }
54
+ ],
55
+ "typeReferences": [
56
+ "Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"title\"\n | \"stages\"\n | \"stageIndex\"\n | \"stageProgress\"\n | \"eta\"\n | \"onCancel\"\n> & {\n /** What the job is doing. */\n title: string;\n /**\n * Stages with relative weights, so a long install does not read the same as a fast\n * clone.\n */\n stages: readonly JobStage[];\n /**\n * Which stage is running. Passing stages.length marks the job finished, and the bar\n * never runs past its track.\n */\n stageIndex: number;\n /** Progress inside the current stage, 0 to 1. */\n stageProgress: number;\n /** Pre-formatted estimate. Replaced by done once finished. */\n eta: string;\n /** Called to stop the job. Hidden once it finishes. */\n onCancel?: () => void;\n}"
57
+ ],
58
+ "subcomponents": [],
59
+ "parts": [],
60
+ "variants": {},
61
+ "defaultVariants": {},
62
+ "tokensUsed": [
63
+ "--cue-fg",
64
+ "--cue-fg-subtle",
65
+ "--cue-ok",
66
+ "--cue-radius-overlay",
67
+ "--cue-stream",
68
+ "--cue-surface-2",
69
+ "--cue-text-body"
70
+ ],
71
+ "summary": "Work measured in minutes: weighted stages, an ETA, and a way out.",
72
+ "examples": [
73
+ {
74
+ "title": "Usage",
75
+ "code": "import { JobProgress } from \"@cueplusplus/ui/elements\";\n\n<JobProgress\n title=\"Verify the fix on CI\"\n stages={stages}\n stageIndex={1}\n stageProgress={0.6}\n eta=\"about 3 min\"\n/>",
76
+ "language": "tsx"
77
+ }
78
+ ],
79
+ "status": "todo-docs",
80
+ "url": "/docs/components/job-progress",
81
+ "mdUrl": "/docs/components/job-progress.md",
82
+ "jsonUrl": "/r/components/job-progress.json",
83
+ "specimens": [
84
+ {
85
+ "title": "JobProgress",
86
+ "group": "elements-agents",
87
+ "components": [
88
+ "JobProgress"
89
+ ],
90
+ "code": "<Specimens>\n <Specimen label=\"rendering\" wide>\n <JobProgress\n title=\"Overnight patch and pre-vis\"\n stages={STAGES}\n stageIndex={2}\n stageProgress={0.42}\n eta=\"4m left\"\n onCancel={() => undefined}\n />\n </Specimen>\n <Specimen label=\"done\" wide>\n <JobProgress\n title=\"Overnight patch and pre-vis\"\n stages={STAGES}\n stageIndex={STAGES.length}\n stageProgress={1}\n eta=\"4m left\"\n />\n </Specimen>\n</Specimens>",
91
+ "note": "Work measured in minutes rather than steps. The stages are weighted, so a six-minute render does not read the same length as a one-second export, and the bar is filled from those weights plus the fraction of the current stage — which is why it never jumps backwards when a short stage ends.",
92
+ "interaction": "cancel is a labelled icon button and disappears once the job finishes: there is nothing left to stop, and a dead X beside a green tick reads as an error."
93
+ }
94
+ ],
95
+ "todo": true
96
+ }
@@ -0,0 +1,105 @@
1
+ {
2
+ "name": "LauncherBubble",
3
+ "slug": "launcher-bubble",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "The floating entry point, and the panel it opens into.",
11
+ "props": [
12
+ {
13
+ "name": "open",
14
+ "type": "boolean",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "Whether the panel is showing. The trigger icon crossfades either way."
18
+ },
19
+ {
20
+ "name": "unread",
21
+ "type": "number",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "Badge count on the closed bubble. Hidden at zero and while open."
25
+ },
26
+ {
27
+ "name": "greeting",
28
+ "type": "string",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "Opening line in the panel."
32
+ },
33
+ {
34
+ "name": "prompts",
35
+ "type": "readonly string[]",
36
+ "required": true,
37
+ "defaultValue": null,
38
+ "description": "Ways in, so the first message does not have to be invented."
39
+ },
40
+ {
41
+ "name": "onToggle",
42
+ "type": "(() => void)",
43
+ "required": false,
44
+ "defaultValue": null,
45
+ "description": "Called when the bubble is pressed."
46
+ },
47
+ {
48
+ "name": "onPick",
49
+ "type": "((prompt: string) => void)",
50
+ "required": false,
51
+ "defaultValue": null,
52
+ "description": "Called when a starter prompt is chosen."
53
+ },
54
+ {
55
+ "name": "onStart",
56
+ "type": "(() => void)",
57
+ "required": false,
58
+ "defaultValue": null,
59
+ "description": "Called from the Start a conversation action, for opening an empty thread."
60
+ }
61
+ ],
62
+ "typeReferences": [
63
+ "Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"open\"\n | \"unread\"\n | \"greeting\"\n | \"prompts\"\n | \"onToggle\"\n | \"onPick\"\n | \"onStart\"\n> & {\n /** Whether the panel is showing. The trigger icon crossfades either way. */\n open: boolean;\n /** Badge count on the closed bubble. Hidden at zero and while open. */\n unread: number;\n /** Opening line in the panel. */\n greeting: string;\n /** Ways in, so the first message does not have to be invented. */\n prompts: readonly string[];\n /** Called when the bubble is pressed. */\n onToggle?: () => void;\n /** Called when a starter prompt is chosen. */\n onPick?: (prompt: string) => void;\n /** Called from the Start a conversation action, for opening an empty thread. */\n onStart?: () => void;\n}"
64
+ ],
65
+ "subcomponents": [],
66
+ "parts": [],
67
+ "variants": {},
68
+ "defaultVariants": {},
69
+ "tokensUsed": [
70
+ "--cue-bg",
71
+ "--cue-fg",
72
+ "--cue-fg-muted",
73
+ "--cue-fg-subtle",
74
+ "--cue-radius-overlay",
75
+ "--cue-radius-surface",
76
+ "--cue-surface-2",
77
+ "--cue-text-body",
78
+ "--cue-text-ui"
79
+ ],
80
+ "summary": "The floating entry point, and the panel it opens into.",
81
+ "examples": [
82
+ {
83
+ "title": "Usage",
84
+ "code": "import { LauncherBubble } from \"@cueplusplus/ui/elements\";\n\n<LauncherBubble\n open={open}\n unread={2}\n greeting=\"Need a hand?\"\n prompts={prompts}\n onToggle={toggle}\n/>",
85
+ "language": "tsx"
86
+ }
87
+ ],
88
+ "status": "todo-docs",
89
+ "url": "/docs/components/launcher-bubble",
90
+ "mdUrl": "/docs/components/launcher-bubble.md",
91
+ "jsonUrl": "/r/components/launcher-bubble.json",
92
+ "specimens": [
93
+ {
94
+ "title": "LauncherBubble",
95
+ "group": "elements-composer",
96
+ "components": [
97
+ "LauncherBubble"
98
+ ],
99
+ "code": "<Specimens>\n <Specimen label=\"open\" wide>\n <LauncherBubble\n open={launcher}\n unread={2}\n greeting=\"Ask us about the venue\"\n prompts={[\"What is the rig?\", \"Can I bring my own desk?\", \"Who is the LX contact?\"]}\n onToggle={() => setLauncher((open) => !open)}\n onPick={() => setLauncher(false)}\n onStart={() => setLauncher(false)}\n />\n </Specimen>\n <Specimen label=\"closed, two waiting\" wide>\n <LauncherBubble\n open={false}\n unread={2}\n greeting=\"Ask us about the venue\"\n prompts={[\"What is the rig?\"]}\n />\n </Specimen>\n</Specimens>",
100
+ "note": "The floating entry point and the panel it opens into — the shape an assistant takes on somebody else's site. The badge counts unread and disappears the moment the panel is open, because a count of things you are currently looking at is noise. The starter prompts exist so the first message does not have to be invented by a visitor who has no idea what this thing knows.",
101
+ "interaction": "the bubble carries `aria-expanded` and its label changes with it (`Open the assistant` / `Close the assistant`); the two icons cross-fade in one grid cell so nothing reflows."
102
+ }
103
+ ],
104
+ "todo": true
105
+ }