@cueplusplus/ui 0.3.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/CHANGELOG.md +2263 -0
  2. package/dist/agent-runtime/_glyphs.js +43 -0
  3. package/dist/agent-runtime/branch-picker.d.ts +45 -0
  4. package/dist/agent-runtime/branch-picker.js +87 -0
  5. package/dist/agent-runtime/index.d.ts +4 -0
  6. package/dist/agent-runtime/index.js +4 -0
  7. package/dist/agent-runtime/tool-call-card.d.ts +69 -0
  8. package/dist/agent-runtime/tool-call-card.js +187 -0
  9. package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
  10. package/dist/agent-runtime/use-agent-thread.js +251 -0
  11. package/dist/chat/index.d.ts +2 -2
  12. package/dist/chat/message-list.d.ts +6 -0
  13. package/dist/chat/message-list.js +35 -0
  14. package/dist/chrome/_drag.js +59 -0
  15. package/dist/chrome/_status-bar-item.js +85 -0
  16. package/dist/chrome/_status-bar.d.ts +15 -0
  17. package/dist/chrome/_status-bar.js +171 -0
  18. package/dist/chrome/app-shell.d.ts +120 -2
  19. package/dist/chrome/app-shell.js +107 -8
  20. package/dist/chrome/index.d.ts +4 -3
  21. package/dist/chrome/status-bar.d.ts +87 -4
  22. package/dist/chrome/status-bar.js +80 -16
  23. package/dist/chrome/title-bar.d.ts +11 -1
  24. package/dist/chrome/title-bar.js +1 -3
  25. package/dist/configurator/_export.js +3 -2
  26. package/dist/configurator/_overrides.d.ts +1 -1
  27. package/dist/configurator/token-editor.js +4 -1
  28. package/dist/date/_segments.js +52 -6
  29. package/dist/elements/activity-graph.d.ts +40 -0
  30. package/dist/elements/activity-graph.js +81 -0
  31. package/dist/elements/agent-card.d.ts +49 -0
  32. package/dist/elements/agent-card.js +91 -0
  33. package/dist/elements/agent-handoff.d.ts +24 -0
  34. package/dist/elements/agent-handoff.js +53 -0
  35. package/dist/elements/agent-mode-badge.d.ts +72 -0
  36. package/dist/elements/agent-mode-badge.js +110 -0
  37. package/dist/elements/agent-plan.d.ts +24 -0
  38. package/dist/elements/agent-plan.js +74 -0
  39. package/dist/elements/agent-status.d.ts +29 -0
  40. package/dist/elements/agent-status.js +46 -0
  41. package/dist/elements/agent-surface.d.ts +65 -0
  42. package/dist/elements/agent-surface.js +68 -0
  43. package/dist/elements/animated-number.d.ts +86 -0
  44. package/dist/elements/animated-number.js +118 -0
  45. package/dist/elements/approval-card.d.ts +40 -0
  46. package/dist/elements/approval-card.js +78 -0
  47. package/dist/elements/artifact-card.d.ts +30 -0
  48. package/dist/elements/artifact-card.js +58 -0
  49. package/dist/elements/background-inbox.d.ts +39 -0
  50. package/dist/elements/background-inbox.js +60 -0
  51. package/dist/elements/canvas-split.d.ts +77 -0
  52. package/dist/elements/canvas-split.js +138 -0
  53. package/dist/elements/chart.d.ts +41 -0
  54. package/dist/elements/chart.js +117 -0
  55. package/dist/elements/chat-panel.d.ts +46 -0
  56. package/dist/elements/chat-panel.js +104 -0
  57. package/dist/elements/checkpoint-history.d.ts +31 -0
  58. package/dist/elements/checkpoint-history.js +65 -0
  59. package/dist/elements/clamp.d.ts +90 -0
  60. package/dist/elements/clamp.js +109 -0
  61. package/dist/elements/code-diff.d.ts +42 -0
  62. package/dist/elements/code-diff.js +69 -0
  63. package/dist/elements/code-runner.d.ts +38 -0
  64. package/dist/elements/code-runner.js +84 -0
  65. package/dist/elements/command-palette.d.ts +48 -0
  66. package/dist/elements/command-palette.js +129 -0
  67. package/dist/elements/compaction-row.d.ts +63 -0
  68. package/dist/elements/compaction-row.js +110 -0
  69. package/dist/elements/comparison-card.d.ts +47 -0
  70. package/dist/elements/comparison-card.js +69 -0
  71. package/dist/elements/composer.d.ts +274 -0
  72. package/dist/elements/composer.js +505 -0
  73. package/dist/elements/computer-use.d.ts +40 -0
  74. package/dist/elements/computer-use.js +92 -0
  75. package/dist/elements/confidence-marker.d.ts +39 -0
  76. package/dist/elements/confidence-marker.js +64 -0
  77. package/dist/elements/connection-state.d.ts +29 -0
  78. package/dist/elements/connection-state.js +66 -0
  79. package/dist/elements/context-breakdown.d.ts +30 -0
  80. package/dist/elements/context-breakdown.js +86 -0
  81. package/dist/elements/context-usage.d.ts +99 -0
  82. package/dist/elements/context-usage.js +225 -0
  83. package/dist/elements/conversation-search.d.ts +48 -0
  84. package/dist/elements/conversation-search.js +88 -0
  85. package/dist/elements/cost-meter.d.ts +33 -0
  86. package/dist/elements/cost-meter.js +75 -0
  87. package/dist/elements/data-table.d.ts +31 -0
  88. package/dist/elements/data-table.js +67 -0
  89. package/dist/elements/day-separator.d.ts +34 -0
  90. package/dist/elements/day-separator.js +50 -0
  91. package/dist/elements/diagram.d.ts +34 -0
  92. package/dist/elements/diagram.js +75 -0
  93. package/dist/elements/document-reference.d.ts +37 -0
  94. package/dist/elements/document-reference.js +66 -0
  95. package/dist/elements/draft-restore.d.ts +27 -0
  96. package/dist/elements/draft-restore.js +54 -0
  97. package/dist/elements/edit-message.d.ts +36 -0
  98. package/dist/elements/edit-message.js +77 -0
  99. package/dist/elements/elements.css +459 -0
  100. package/dist/elements/elicitation-form.d.ts +48 -0
  101. package/dist/elements/elicitation-form.js +106 -0
  102. package/dist/elements/empty-state.d.ts +52 -0
  103. package/dist/elements/empty-state.js +98 -0
  104. package/dist/elements/end-of-turn-summary.d.ts +60 -0
  105. package/dist/elements/end-of-turn-summary.js +75 -0
  106. package/dist/elements/error-state.d.ts +29 -0
  107. package/dist/elements/error-state.js +55 -0
  108. package/dist/elements/feedback-dialog.d.ts +36 -0
  109. package/dist/elements/feedback-dialog.js +81 -0
  110. package/dist/elements/file-tree.d.ts +45 -0
  111. package/dist/elements/file-tree.js +84 -0
  112. package/dist/elements/flow-graph.d.ts +45 -0
  113. package/dist/elements/flow-graph.js +78 -0
  114. package/dist/elements/generative/chart.js +200 -0
  115. package/dist/elements/generative/faults.js +111 -0
  116. package/dist/elements/generative/icons.d.ts +41 -0
  117. package/dist/elements/generative/icons.js +190 -0
  118. package/dist/elements/generative/intrinsics.js +483 -0
  119. package/dist/elements/generative/spec.d.ts +110 -0
  120. package/dist/elements/generative/spec.js +366 -0
  121. package/dist/elements/generative.css +1145 -0
  122. package/dist/elements/generative.d.ts +144 -0
  123. package/dist/elements/generative.js +126 -0
  124. package/dist/elements/guardrail-notice.d.ts +29 -0
  125. package/dist/elements/guardrail-notice.js +63 -0
  126. package/dist/elements/image-generation.d.ts +18 -0
  127. package/dist/elements/image-generation.js +64 -0
  128. package/dist/elements/index.d.ts +116 -0
  129. package/dist/elements/index.js +115 -0
  130. package/dist/elements/inline-citation.d.ts +43 -0
  131. package/dist/elements/inline-citation.js +93 -0
  132. package/dist/elements/job-progress.d.ts +49 -0
  133. package/dist/elements/job-progress.js +74 -0
  134. package/dist/elements/launcher-bubble.d.ts +34 -0
  135. package/dist/elements/launcher-bubble.js +72 -0
  136. package/dist/elements/live-region-announcer.d.ts +130 -0
  137. package/dist/elements/live-region-announcer.js +230 -0
  138. package/dist/elements/loading-state.d.ts +27 -0
  139. package/dist/elements/loading-state.js +36 -0
  140. package/dist/elements/map-answer.d.ts +38 -0
  141. package/dist/elements/map-answer.js +93 -0
  142. package/dist/elements/markdown.d.ts +131 -0
  143. package/dist/elements/markdown.js +528 -0
  144. package/dist/elements/math-block.d.ts +51 -0
  145. package/dist/elements/math-block.js +70 -0
  146. package/dist/elements/mcp-server-panel.d.ts +41 -0
  147. package/dist/elements/mcp-server-panel.js +115 -0
  148. package/dist/elements/memory-chips.d.ts +30 -0
  149. package/dist/elements/memory-chips.js +43 -0
  150. package/dist/elements/message-actions.d.ts +38 -0
  151. package/dist/elements/message-actions.js +71 -0
  152. package/dist/elements/message-attachment.d.ts +48 -0
  153. package/dist/elements/message-attachment.js +63 -0
  154. package/dist/elements/message-branches.d.ts +25 -0
  155. package/dist/elements/message-branches.js +65 -0
  156. package/dist/elements/message-pair.d.ts +33 -0
  157. package/dist/elements/message-pair.js +65 -0
  158. package/dist/elements/message-queue.d.ts +31 -0
  159. package/dist/elements/message-queue.js +80 -0
  160. package/dist/elements/message-timing.d.ts +33 -0
  161. package/dist/elements/message-timing.js +37 -0
  162. package/dist/elements/mobile-composer.d.ts +44 -0
  163. package/dist/elements/mobile-composer.js +88 -0
  164. package/dist/elements/model-picker.d.ts +38 -0
  165. package/dist/elements/model-picker.js +69 -0
  166. package/dist/elements/number-ticker.d.ts +18 -0
  167. package/dist/elements/number-ticker.js +47 -0
  168. package/dist/elements/onboarding.d.ts +30 -0
  169. package/dist/elements/onboarding.js +75 -0
  170. package/dist/elements/permission-grant.d.ts +35 -0
  171. package/dist/elements/permission-grant.js +86 -0
  172. package/dist/elements/permission-scopes.d.ts +215 -0
  173. package/dist/elements/permission-scopes.js +249 -0
  174. package/dist/elements/prompt-library.d.ts +43 -0
  175. package/dist/elements/prompt-library.js +117 -0
  176. package/dist/elements/queue-dock.d.ts +101 -0
  177. package/dist/elements/queue-dock.js +132 -0
  178. package/dist/elements/quota-banner.d.ts +26 -0
  179. package/dist/elements/quota-banner.js +66 -0
  180. package/dist/elements/quote-reply.d.ts +44 -0
  181. package/dist/elements/quote-reply.js +79 -0
  182. package/dist/elements/range.d.ts +29 -0
  183. package/dist/elements/range.js +45 -0
  184. package/dist/elements/read-aloud.d.ts +45 -0
  185. package/dist/elements/read-aloud.js +75 -0
  186. package/dist/elements/reasoning-effort.d.ts +36 -0
  187. package/dist/elements/reasoning-effort.js +67 -0
  188. package/dist/elements/reasoning-panel.d.ts +46 -0
  189. package/dist/elements/reasoning-panel.js +75 -0
  190. package/dist/elements/recommendation-card.d.ts +45 -0
  191. package/dist/elements/recommendation-card.js +83 -0
  192. package/dist/elements/regenerate-menu.d.ts +45 -0
  193. package/dist/elements/regenerate-menu.js +51 -0
  194. package/dist/elements/replay.d.ts +217 -0
  195. package/dist/elements/replay.js +498 -0
  196. package/dist/elements/research-report.d.ts +38 -0
  197. package/dist/elements/research-report.js +69 -0
  198. package/dist/elements/retrieval-chunks.d.ts +43 -0
  199. package/dist/elements/retrieval-chunks.js +81 -0
  200. package/dist/elements/revert-dock.d.ts +159 -0
  201. package/dist/elements/revert-dock.js +327 -0
  202. package/dist/elements/reviewable-diff.d.ts +45 -0
  203. package/dist/elements/reviewable-diff.js +110 -0
  204. package/dist/elements/risk-badge.d.ts +52 -0
  205. package/dist/elements/risk-badge.js +91 -0
  206. package/dist/elements/schedule-card.d.ts +42 -0
  207. package/dist/elements/schedule-card.js +90 -0
  208. package/dist/elements/score-breakdown.d.ts +47 -0
  209. package/dist/elements/score-breakdown.js +82 -0
  210. package/dist/elements/scroll-anchor.d.ts +32 -0
  211. package/dist/elements/scroll-anchor.js +121 -0
  212. package/dist/elements/settings-panel.d.ts +52 -0
  213. package/dist/elements/settings-panel.js +107 -0
  214. package/dist/elements/shared-conversation.d.ts +39 -0
  215. package/dist/elements/shared-conversation.js +68 -0
  216. package/dist/elements/sources.d.ts +33 -0
  217. package/dist/elements/sources.js +61 -0
  218. package/dist/elements/speaker-identity.d.ts +32 -0
  219. package/dist/elements/speaker-identity.js +51 -0
  220. package/dist/elements/spec-sheet.d.ts +31 -0
  221. package/dist/elements/spec-sheet.js +45 -0
  222. package/dist/elements/stopped-run.d.ts +22 -0
  223. package/dist/elements/stopped-run.js +50 -0
  224. package/dist/elements/streaming-text.d.ts +31 -0
  225. package/dist/elements/streaming-text.js +45 -0
  226. package/dist/elements/subagent-list.d.ts +37 -0
  227. package/dist/elements/subagent-list.js +79 -0
  228. package/dist/elements/suggestions.d.ts +30 -0
  229. package/dist/elements/suggestions.js +36 -0
  230. package/dist/elements/surfaces.d.ts +85 -0
  231. package/dist/elements/surfaces.js +107 -0
  232. package/dist/elements/tail-status.d.ts +131 -0
  233. package/dist/elements/tail-status.js +94 -0
  234. package/dist/elements/terminal-block.d.ts +29 -0
  235. package/dist/elements/terminal-block.js +54 -0
  236. package/dist/elements/thinking-indicator.d.ts +18 -0
  237. package/dist/elements/thinking-indicator.js +36 -0
  238. package/dist/elements/thread-list.d.ts +35 -0
  239. package/dist/elements/thread-list.js +68 -0
  240. package/dist/elements/thread-search.d.ts +42 -0
  241. package/dist/elements/thread-search.js +99 -0
  242. package/dist/elements/timeline.d.ts +37 -0
  243. package/dist/elements/timeline.js +46 -0
  244. package/dist/elements/todo-list.d.ts +42 -0
  245. package/dist/elements/todo-list.js +59 -0
  246. package/dist/elements/tool-call.d.ts +41 -0
  247. package/dist/elements/tool-call.js +85 -0
  248. package/dist/elements/tool-error.d.ts +39 -0
  249. package/dist/elements/tool-error.js +76 -0
  250. package/dist/elements/tool-group.d.ts +45 -0
  251. package/dist/elements/tool-group.js +71 -0
  252. package/dist/elements/tool-timeline.d.ts +65 -0
  253. package/dist/elements/tool-timeline.js +88 -0
  254. package/dist/elements/trace-waterfall.d.ts +37 -0
  255. package/dist/elements/trace-waterfall.js +69 -0
  256. package/dist/elements/transcript-rules.d.ts +67 -0
  257. package/dist/elements/transcript-rules.js +95 -0
  258. package/dist/elements/turn-footer.d.ts +74 -0
  259. package/dist/elements/turn-footer.js +101 -0
  260. package/dist/elements/typing-indicator.d.ts +16 -0
  261. package/dist/elements/typing-indicator.js +51 -0
  262. package/dist/elements/verdict-row.d.ts +89 -0
  263. package/dist/elements/verdict-row.js +150 -0
  264. package/dist/elements/vocabulary.d.ts +612 -0
  265. package/dist/elements/vocabulary.js +611 -0
  266. package/dist/elements/voice-conversation.d.ts +49 -0
  267. package/dist/elements/voice-conversation.js +123 -0
  268. package/dist/elements/web-preview.d.ts +32 -0
  269. package/dist/elements/web-preview.js +66 -0
  270. package/dist/elements/web-search.d.ts +37 -0
  271. package/dist/elements/web-search.js +66 -0
  272. package/dist/elements/work-collapse.d.ts +103 -0
  273. package/dist/elements/work-collapse.js +131 -0
  274. package/dist/forms/_chassis.d.ts +104 -4
  275. package/dist/forms/_chassis.js +104 -4
  276. package/dist/forms/input-group.d.ts +8 -3
  277. package/dist/forms/input-group.js +8 -3
  278. package/dist/forms/number-field.d.ts +3 -2
  279. package/dist/forms/number-field.js +3 -2
  280. package/dist/icons/containers.d.ts +89 -0
  281. package/dist/icons/containers.js +295 -0
  282. package/dist/icons/index.d.ts +2 -0
  283. package/dist/index.d.ts +12 -6
  284. package/dist/index.js +5 -1
  285. package/dist/instruments/_data-row.js +118 -0
  286. package/dist/instruments/data-row.d.ts +94 -0
  287. package/dist/instruments/data-row.js +151 -0
  288. package/dist/instruments/data-tree.d.ts +126 -0
  289. package/dist/instruments/data-tree.js +303 -0
  290. package/dist/instruments/index.d.ts +5 -2
  291. package/dist/instruments/index.js +4 -1
  292. package/dist/instruments/ledger.d.ts +105 -0
  293. package/dist/instruments/ledger.js +114 -0
  294. package/dist/instruments/table.d.ts +70 -2
  295. package/dist/instruments/table.js +133 -39
  296. package/dist/instruments/two-step-button.js +25 -6
  297. package/dist/layout/sidebar.d.ts +19 -1
  298. package/dist/layout/sidebar.js +19 -1
  299. package/dist/primitives/button.js +11 -1
  300. package/dist/primitives/chip.d.ts +35 -9
  301. package/dist/primitives/chip.js +97 -11
  302. package/dist/system/agent-skin.d.ts +27 -0
  303. package/dist/system/agent-skin.js +20 -0
  304. package/dist/system/portal.d.ts +5 -3
  305. package/dist/system/portal.js +19 -5
  306. package/dist/system/theme-provider.js +54 -9
  307. package/dist/system/use-density.d.ts +9 -0
  308. package/dist/system/use-density.js +9 -0
  309. package/dist/system/use-isomorphic-layout-effect.js +19 -1
  310. package/dist/theming/_presets.d.ts +1 -1
  311. package/dist/theming/_presets.js +74 -11
  312. package/dist/theming/contrast.d.ts +16 -4
  313. package/dist/theming/contrast.js +33 -6
  314. package/dist/theming/create-theme.d.ts +6 -2
  315. package/dist/theming/create-theme.js +32 -5
  316. package/dist/theming/serialize.d.ts +10 -1
  317. package/dist/theming/serialize.js +62 -8
  318. package/manifest/components/activity-graph.json +88 -0
  319. package/manifest/components/agent-card.json +120 -0
  320. package/manifest/components/agent-handoff.json +87 -0
  321. package/manifest/components/agent-mode-badge.json +84 -0
  322. package/manifest/components/agent-plan.json +67 -0
  323. package/manifest/components/agent-status.json +73 -0
  324. package/manifest/components/agent-surface.json +78 -0
  325. package/manifest/components/alert-dialog.json +1 -1
  326. package/manifest/components/animated-number.json +67 -0
  327. package/manifest/components/app-shell.json +142 -9
  328. package/manifest/components/approval-card.json +106 -0
  329. package/manifest/components/artifact-card.json +81 -0
  330. package/manifest/components/audience-icon.json +52 -0
  331. package/manifest/components/autocomplete.json +2 -0
  332. package/manifest/components/background-inbox.json +71 -0
  333. package/manifest/components/branch-picker.json +124 -0
  334. package/manifest/components/button.json +1 -0
  335. package/manifest/components/canvas-split-body.json +62 -0
  336. package/manifest/components/canvas-split-document.json +54 -0
  337. package/manifest/components/canvas-split-header.json +83 -0
  338. package/manifest/components/canvas-split-line.json +62 -0
  339. package/manifest/components/canvas-split-message.json +62 -0
  340. package/manifest/components/canvas-split-thread.json +54 -0
  341. package/manifest/components/canvas-split.json +60 -0
  342. package/manifest/components/catalogue-icon.json +52 -0
  343. package/manifest/components/channel-beta-icon.json +52 -0
  344. package/manifest/components/channel-released-icon.json +52 -0
  345. package/manifest/components/chart.json +93 -0
  346. package/manifest/components/chat-empty-state.json +55 -0
  347. package/manifest/components/chat-panel-assistant-message.json +51 -0
  348. package/manifest/components/chat-panel-composer.json +66 -0
  349. package/manifest/components/chat-panel-messages.json +51 -0
  350. package/manifest/components/chat-panel-typing.json +51 -0
  351. package/manifest/components/chat-panel-user-message.json +51 -0
  352. package/manifest/components/chat-panel.json +57 -0
  353. package/manifest/components/checkpoint-history.json +80 -0
  354. package/manifest/components/chip.json +24 -12
  355. package/manifest/components/clamp.json +102 -0
  356. package/manifest/components/cli-tool-icon.json +52 -0
  357. package/manifest/components/code-diff.json +87 -0
  358. package/manifest/components/code-runner.json +97 -0
  359. package/manifest/components/color-field.json +2 -0
  360. package/manifest/components/color-picker.json +2 -0
  361. package/manifest/components/combobox.json +2 -0
  362. package/manifest/components/compaction-row.json +100 -0
  363. package/manifest/components/comparison-card.json +83 -0
  364. package/manifest/components/composer-actions.json +65 -0
  365. package/manifest/components/composer-attach-button.json +65 -0
  366. package/manifest/components/composer-attachment-chip.json +75 -0
  367. package/manifest/components/composer-attachments.json +60 -0
  368. package/manifest/components/composer-bar.json +73 -0
  369. package/manifest/components/composer-command-item.json +79 -0
  370. package/manifest/components/composer-context.json +67 -0
  371. package/manifest/components/composer-input.json +73 -0
  372. package/manifest/components/composer-menu-item.json +72 -0
  373. package/manifest/components/composer-menu.json +79 -0
  374. package/manifest/components/composer-model-item.json +75 -0
  375. package/manifest/components/composer-model-trigger.json +75 -0
  376. package/manifest/components/composer-person-item.json +79 -0
  377. package/manifest/components/composer-send.json +80 -0
  378. package/manifest/components/composer-toolbar.json +65 -0
  379. package/manifest/components/composer-voice-button.json +68 -0
  380. package/manifest/components/composer-voice.json +75 -0
  381. package/manifest/components/composer.json +2 -0
  382. package/manifest/components/computer-use.json +84 -0
  383. package/manifest/components/confidence-marker.json +74 -0
  384. package/manifest/components/connection-state.json +84 -0
  385. package/manifest/components/context-breakdown.json +65 -0
  386. package/manifest/components/context-usage.json +85 -0
  387. package/manifest/components/conversation-search.json +92 -0
  388. package/manifest/components/cost-meter.json +74 -0
  389. package/manifest/components/cue-portal-frame.json +1 -1
  390. package/manifest/components/data-row.json +203 -0
  391. package/manifest/components/data-tree.json +151 -0
  392. package/manifest/components/date-field.json +2 -0
  393. package/manifest/components/date-picker.json +2 -0
  394. package/manifest/components/date-range-picker.json +2 -0
  395. package/manifest/components/day-separator.json +58 -0
  396. package/manifest/components/delegation-card.json +1 -1
  397. package/manifest/components/density.json +1 -1
  398. package/manifest/components/diagram.json +100 -0
  399. package/manifest/components/document-reference.json +90 -0
  400. package/manifest/components/draft-restore.json +82 -0
  401. package/manifest/components/drawer.json +1 -1
  402. package/manifest/components/dropdown-menu.json +1 -1
  403. package/manifest/components/edit-message.json +105 -0
  404. package/manifest/components/elements-command-palette.json +100 -0
  405. package/manifest/components/elements-composer.json +71 -0
  406. package/manifest/components/elements-data-table.json +68 -0
  407. package/manifest/components/elements-timeline.json +69 -0
  408. package/manifest/components/elicitation-form.json +103 -0
  409. package/manifest/components/empty-state-composer.json +64 -0
  410. package/manifest/components/empty-state-greeting.json +49 -0
  411. package/manifest/components/empty-state-suggestion.json +57 -0
  412. package/manifest/components/empty-state-suggestions.json +49 -0
  413. package/manifest/components/end-of-turn-summary.json +77 -0
  414. package/manifest/components/env-var-input.json +2 -0
  415. package/manifest/components/error-state.json +80 -0
  416. package/manifest/components/feedback-dialog.json +107 -0
  417. package/manifest/components/file-tree.json +83 -0
  418. package/manifest/components/flow-graph.json +75 -0
  419. package/manifest/components/folder-icon.json +52 -0
  420. package/manifest/components/frac.json +59 -0
  421. package/manifest/components/generation-loader.json +64 -0
  422. package/manifest/components/generative-ui.json +93 -0
  423. package/manifest/components/guardrail-notice.json +91 -0
  424. package/manifest/components/hover-card.json +1 -1
  425. package/manifest/components/image-generation.json +67 -0
  426. package/manifest/components/info-tip.json +1 -1
  427. package/manifest/components/inline-citation.json +77 -0
  428. package/manifest/components/input-group.json +4 -2
  429. package/manifest/components/input.json +3 -1
  430. package/manifest/components/job-progress.json +96 -0
  431. package/manifest/components/launcher-bubble.json +105 -0
  432. package/manifest/components/ledger.json +187 -0
  433. package/manifest/components/live-region-announcer.json +79 -0
  434. package/manifest/components/map-answer.json +83 -0
  435. package/manifest/components/markdown-text.json +94 -0
  436. package/manifest/components/math-block.json +74 -0
  437. package/manifest/components/mcp-server-icon.json +52 -0
  438. package/manifest/components/mcp-server-panel.json +87 -0
  439. package/manifest/components/memory-chips.json +65 -0
  440. package/manifest/components/message-actions.json +99 -0
  441. package/manifest/components/message-attachments.json +63 -0
  442. package/manifest/components/message-branches.json +71 -0
  443. package/manifest/components/message-list.json +1 -1
  444. package/manifest/components/message-pair.json +86 -0
  445. package/manifest/components/message-queue.json +74 -0
  446. package/manifest/components/message-timing.json +62 -0
  447. package/manifest/components/mobile-composer.json +126 -0
  448. package/manifest/components/model-picker.json +76 -0
  449. package/manifest/components/multi-select.json +2 -0
  450. package/manifest/components/musical-time-input.json +2 -0
  451. package/manifest/components/node-card.json +1 -1
  452. package/manifest/components/node-handle.json +1 -1
  453. package/manifest/components/number-field.json +3 -1
  454. package/manifest/components/number-ticker.json +61 -0
  455. package/manifest/components/onboarding.json +84 -0
  456. package/manifest/components/otp-field.json +9 -7
  457. package/manifest/components/password-input.json +2 -0
  458. package/manifest/components/permission-grant.json +92 -0
  459. package/manifest/components/permission-scopes.json +139 -0
  460. package/manifest/components/popover.json +1 -1
  461. package/manifest/components/prompt-library.json +99 -0
  462. package/manifest/components/queue-dock.json +110 -0
  463. package/manifest/components/quota-banner.json +94 -0
  464. package/manifest/components/quote-reply.json +105 -0
  465. package/manifest/components/read-aloud.json +111 -0
  466. package/manifest/components/reasoning-effort.json +81 -0
  467. package/manifest/components/reasoning-panel.json +108 -0
  468. package/manifest/components/recommendation-card.json +107 -0
  469. package/manifest/components/regenerate-menu.json +89 -0
  470. package/manifest/components/replay-player.json +102 -0
  471. package/manifest/components/research-report.json +76 -0
  472. package/manifest/components/retrieval-chunks.json +84 -0
  473. package/manifest/components/revert-dock.json +150 -0
  474. package/manifest/components/reviewable-diff.json +93 -0
  475. package/manifest/components/risk-badge.json +74 -0
  476. package/manifest/components/schedule-card.json +101 -0
  477. package/manifest/components/score-breakdown.json +91 -0
  478. package/manifest/components/scroll-anchor.json +72 -0
  479. package/manifest/components/scroll-area.json +7 -7
  480. package/manifest/components/scrub-input.json +2 -0
  481. package/manifest/components/search-input.json +9 -7
  482. package/manifest/components/segmented-control.json +21 -21
  483. package/manifest/components/select.json +1 -0
  484. package/manifest/components/settings-panel.json +118 -0
  485. package/manifest/components/shared-conversation.json +89 -0
  486. package/manifest/components/shimmer-label.json +59 -0
  487. package/manifest/components/skill-icon.json +52 -0
  488. package/manifest/components/sources.json +83 -0
  489. package/manifest/components/speaker-identity.json +61 -0
  490. package/manifest/components/spec-sheet.json +80 -0
  491. package/manifest/components/stack-icon.json +52 -0
  492. package/manifest/components/stacks-matrix-icon.json +52 -0
  493. package/manifest/components/stat.json +1 -1
  494. package/manifest/components/status-bar.json +146 -12
  495. package/manifest/components/status-dot.json +1 -1
  496. package/manifest/components/stopped-run.json +81 -0
  497. package/manifest/components/streaming-text.json +71 -0
  498. package/manifest/components/sub.json +44 -0
  499. package/manifest/components/subagent-list.json +88 -0
  500. package/manifest/components/suggestions.json +84 -0
  501. package/manifest/components/sup.json +44 -0
  502. package/manifest/components/swap-label.json +71 -0
  503. package/manifest/components/table-scroll-region.json +6 -0
  504. package/manifest/components/table.json +88 -4
  505. package/manifest/components/tags-input.json +2 -0
  506. package/manifest/components/tail-status.json +109 -0
  507. package/manifest/components/terminal-block.json +91 -0
  508. package/manifest/components/textarea.json +3 -1
  509. package/manifest/components/theme-provider.json +2 -2
  510. package/manifest/components/thinking-indicator.json +63 -0
  511. package/manifest/components/thread-list.json +76 -0
  512. package/manifest/components/thread-search.json +90 -0
  513. package/manifest/components/threshold-rail.json +2 -2
  514. package/manifest/components/time-boundary.json +62 -0
  515. package/manifest/components/time-field.json +2 -0
  516. package/manifest/components/timeline.json +1 -1
  517. package/manifest/components/title-bar.json +1 -1
  518. package/manifest/components/todo-list.json +69 -0
  519. package/manifest/components/toggle-group.json +9 -7
  520. package/manifest/components/toggle.json +2 -0
  521. package/manifest/components/token-editor.json +1 -1
  522. package/manifest/components/tool-call-card.json +200 -0
  523. package/manifest/components/tool-call.json +119 -0
  524. package/manifest/components/tool-error.json +114 -0
  525. package/manifest/components/tool-group.json +83 -0
  526. package/manifest/components/tool-timeline.json +119 -0
  527. package/manifest/components/toolbar.json +7 -7
  528. package/manifest/components/tooltip.json +1 -1
  529. package/manifest/components/trace-waterfall.json +74 -0
  530. package/manifest/components/turn-footer.json +105 -0
  531. package/manifest/components/typing-indicator.json +53 -0
  532. package/manifest/components/unread-divider.json +55 -0
  533. package/manifest/components/usage-chart.json +1 -1
  534. package/manifest/components/verdict-row.json +91 -0
  535. package/manifest/components/voice-conversation.json +109 -0
  536. package/manifest/components/web-preview.json +87 -0
  537. package/manifest/components/web-search.json +92 -0
  538. package/manifest/components/work-collapse.json +102 -0
  539. package/manifest/manifest.json +2736 -60
  540. package/manifest/tokens.json +22 -1
  541. package/package.json +44 -2
@@ -0,0 +1,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
+ }
@@ -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\"`."