@cueplusplus/ui 0.2.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/CHANGELOG.md +2250 -0
  2. package/dist/agent-runtime/_glyphs.js +43 -0
  3. package/dist/agent-runtime/branch-picker.d.ts +45 -0
  4. package/dist/agent-runtime/branch-picker.js +87 -0
  5. package/dist/agent-runtime/index.d.ts +4 -0
  6. package/dist/agent-runtime/index.js +4 -0
  7. package/dist/agent-runtime/tool-call-card.d.ts +69 -0
  8. package/dist/agent-runtime/tool-call-card.js +187 -0
  9. package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
  10. package/dist/agent-runtime/use-agent-thread.js +251 -0
  11. package/dist/brand/_chassis.d.ts +1 -1
  12. package/dist/brand/cue-mark.d.ts +1 -1
  13. package/dist/brand/cue-mark.js +1 -1
  14. package/dist/chat/index.d.ts +2 -2
  15. package/dist/chat/message-list.d.ts +6 -0
  16. package/dist/chat/message-list.js +35 -0
  17. package/dist/chrome/_edge-scroller.js +12 -1
  18. package/dist/chrome/_tabs-scroll.d.ts +1 -1
  19. package/dist/chrome/_tabs-scroll.js +1 -1
  20. package/dist/chrome/app-shell.d.ts +52 -2
  21. package/dist/chrome/app-shell.js +80 -8
  22. package/dist/chrome/index.d.ts +2 -2
  23. package/dist/configurator/_export.js +3 -2
  24. package/dist/configurator/_overrides.d.ts +1 -1
  25. package/dist/configurator/_overrides.js +18 -6
  26. package/dist/configurator/token-editor.js +4 -1
  27. package/dist/date/_segments.js +37 -2
  28. package/dist/elements/activity-graph.d.ts +40 -0
  29. package/dist/elements/activity-graph.js +81 -0
  30. package/dist/elements/agent-card.d.ts +49 -0
  31. package/dist/elements/agent-card.js +91 -0
  32. package/dist/elements/agent-handoff.d.ts +24 -0
  33. package/dist/elements/agent-handoff.js +53 -0
  34. package/dist/elements/agent-mode-badge.d.ts +72 -0
  35. package/dist/elements/agent-mode-badge.js +110 -0
  36. package/dist/elements/agent-plan.d.ts +24 -0
  37. package/dist/elements/agent-plan.js +74 -0
  38. package/dist/elements/agent-status.d.ts +29 -0
  39. package/dist/elements/agent-status.js +46 -0
  40. package/dist/elements/agent-surface.d.ts +65 -0
  41. package/dist/elements/agent-surface.js +68 -0
  42. package/dist/elements/animated-number.d.ts +86 -0
  43. package/dist/elements/animated-number.js +118 -0
  44. package/dist/elements/approval-card.d.ts +40 -0
  45. package/dist/elements/approval-card.js +78 -0
  46. package/dist/elements/artifact-card.d.ts +30 -0
  47. package/dist/elements/artifact-card.js +58 -0
  48. package/dist/elements/background-inbox.d.ts +39 -0
  49. package/dist/elements/background-inbox.js +60 -0
  50. package/dist/elements/canvas-split.d.ts +77 -0
  51. package/dist/elements/canvas-split.js +138 -0
  52. package/dist/elements/chart.d.ts +41 -0
  53. package/dist/elements/chart.js +117 -0
  54. package/dist/elements/chat-panel.d.ts +46 -0
  55. package/dist/elements/chat-panel.js +104 -0
  56. package/dist/elements/checkpoint-history.d.ts +31 -0
  57. package/dist/elements/checkpoint-history.js +65 -0
  58. package/dist/elements/clamp.d.ts +90 -0
  59. package/dist/elements/clamp.js +109 -0
  60. package/dist/elements/code-diff.d.ts +42 -0
  61. package/dist/elements/code-diff.js +69 -0
  62. package/dist/elements/code-runner.d.ts +38 -0
  63. package/dist/elements/code-runner.js +84 -0
  64. package/dist/elements/command-palette.d.ts +48 -0
  65. package/dist/elements/command-palette.js +129 -0
  66. package/dist/elements/compaction-row.d.ts +63 -0
  67. package/dist/elements/compaction-row.js +110 -0
  68. package/dist/elements/comparison-card.d.ts +47 -0
  69. package/dist/elements/comparison-card.js +69 -0
  70. package/dist/elements/composer.d.ts +274 -0
  71. package/dist/elements/composer.js +505 -0
  72. package/dist/elements/computer-use.d.ts +40 -0
  73. package/dist/elements/computer-use.js +92 -0
  74. package/dist/elements/confidence-marker.d.ts +39 -0
  75. package/dist/elements/confidence-marker.js +64 -0
  76. package/dist/elements/connection-state.d.ts +29 -0
  77. package/dist/elements/connection-state.js +66 -0
  78. package/dist/elements/context-breakdown.d.ts +30 -0
  79. package/dist/elements/context-breakdown.js +86 -0
  80. package/dist/elements/context-usage.d.ts +99 -0
  81. package/dist/elements/context-usage.js +225 -0
  82. package/dist/elements/conversation-search.d.ts +48 -0
  83. package/dist/elements/conversation-search.js +88 -0
  84. package/dist/elements/cost-meter.d.ts +33 -0
  85. package/dist/elements/cost-meter.js +75 -0
  86. package/dist/elements/data-table.d.ts +31 -0
  87. package/dist/elements/data-table.js +67 -0
  88. package/dist/elements/day-separator.d.ts +34 -0
  89. package/dist/elements/day-separator.js +50 -0
  90. package/dist/elements/diagram.d.ts +34 -0
  91. package/dist/elements/diagram.js +75 -0
  92. package/dist/elements/document-reference.d.ts +37 -0
  93. package/dist/elements/document-reference.js +66 -0
  94. package/dist/elements/draft-restore.d.ts +27 -0
  95. package/dist/elements/draft-restore.js +54 -0
  96. package/dist/elements/edit-message.d.ts +36 -0
  97. package/dist/elements/edit-message.js +77 -0
  98. package/dist/elements/elements.css +459 -0
  99. package/dist/elements/elicitation-form.d.ts +48 -0
  100. package/dist/elements/elicitation-form.js +106 -0
  101. package/dist/elements/empty-state.d.ts +52 -0
  102. package/dist/elements/empty-state.js +98 -0
  103. package/dist/elements/end-of-turn-summary.d.ts +60 -0
  104. package/dist/elements/end-of-turn-summary.js +75 -0
  105. package/dist/elements/error-state.d.ts +29 -0
  106. package/dist/elements/error-state.js +55 -0
  107. package/dist/elements/feedback-dialog.d.ts +36 -0
  108. package/dist/elements/feedback-dialog.js +81 -0
  109. package/dist/elements/file-tree.d.ts +45 -0
  110. package/dist/elements/file-tree.js +84 -0
  111. package/dist/elements/flow-graph.d.ts +45 -0
  112. package/dist/elements/flow-graph.js +78 -0
  113. package/dist/elements/generative/chart.js +200 -0
  114. package/dist/elements/generative/faults.js +111 -0
  115. package/dist/elements/generative/icons.d.ts +41 -0
  116. package/dist/elements/generative/icons.js +190 -0
  117. package/dist/elements/generative/intrinsics.js +483 -0
  118. package/dist/elements/generative/spec.d.ts +110 -0
  119. package/dist/elements/generative/spec.js +366 -0
  120. package/dist/elements/generative.css +1145 -0
  121. package/dist/elements/generative.d.ts +144 -0
  122. package/dist/elements/generative.js +126 -0
  123. package/dist/elements/guardrail-notice.d.ts +29 -0
  124. package/dist/elements/guardrail-notice.js +63 -0
  125. package/dist/elements/image-generation.d.ts +18 -0
  126. package/dist/elements/image-generation.js +64 -0
  127. package/dist/elements/index.d.ts +116 -0
  128. package/dist/elements/index.js +115 -0
  129. package/dist/elements/inline-citation.d.ts +43 -0
  130. package/dist/elements/inline-citation.js +93 -0
  131. package/dist/elements/job-progress.d.ts +49 -0
  132. package/dist/elements/job-progress.js +74 -0
  133. package/dist/elements/launcher-bubble.d.ts +34 -0
  134. package/dist/elements/launcher-bubble.js +72 -0
  135. package/dist/elements/live-region-announcer.d.ts +130 -0
  136. package/dist/elements/live-region-announcer.js +230 -0
  137. package/dist/elements/loading-state.d.ts +27 -0
  138. package/dist/elements/loading-state.js +36 -0
  139. package/dist/elements/map-answer.d.ts +38 -0
  140. package/dist/elements/map-answer.js +93 -0
  141. package/dist/elements/markdown.d.ts +131 -0
  142. package/dist/elements/markdown.js +528 -0
  143. package/dist/elements/math-block.d.ts +51 -0
  144. package/dist/elements/math-block.js +70 -0
  145. package/dist/elements/mcp-server-panel.d.ts +41 -0
  146. package/dist/elements/mcp-server-panel.js +115 -0
  147. package/dist/elements/memory-chips.d.ts +30 -0
  148. package/dist/elements/memory-chips.js +43 -0
  149. package/dist/elements/message-actions.d.ts +38 -0
  150. package/dist/elements/message-actions.js +71 -0
  151. package/dist/elements/message-attachment.d.ts +48 -0
  152. package/dist/elements/message-attachment.js +63 -0
  153. package/dist/elements/message-branches.d.ts +25 -0
  154. package/dist/elements/message-branches.js +65 -0
  155. package/dist/elements/message-pair.d.ts +33 -0
  156. package/dist/elements/message-pair.js +65 -0
  157. package/dist/elements/message-queue.d.ts +31 -0
  158. package/dist/elements/message-queue.js +80 -0
  159. package/dist/elements/message-timing.d.ts +33 -0
  160. package/dist/elements/message-timing.js +37 -0
  161. package/dist/elements/mobile-composer.d.ts +44 -0
  162. package/dist/elements/mobile-composer.js +88 -0
  163. package/dist/elements/model-picker.d.ts +38 -0
  164. package/dist/elements/model-picker.js +69 -0
  165. package/dist/elements/number-ticker.d.ts +18 -0
  166. package/dist/elements/number-ticker.js +47 -0
  167. package/dist/elements/onboarding.d.ts +30 -0
  168. package/dist/elements/onboarding.js +75 -0
  169. package/dist/elements/permission-grant.d.ts +35 -0
  170. package/dist/elements/permission-grant.js +86 -0
  171. package/dist/elements/permission-scopes.d.ts +215 -0
  172. package/dist/elements/permission-scopes.js +249 -0
  173. package/dist/elements/prompt-library.d.ts +43 -0
  174. package/dist/elements/prompt-library.js +117 -0
  175. package/dist/elements/queue-dock.d.ts +101 -0
  176. package/dist/elements/queue-dock.js +132 -0
  177. package/dist/elements/quota-banner.d.ts +26 -0
  178. package/dist/elements/quota-banner.js +66 -0
  179. package/dist/elements/quote-reply.d.ts +44 -0
  180. package/dist/elements/quote-reply.js +79 -0
  181. package/dist/elements/range.d.ts +29 -0
  182. package/dist/elements/range.js +45 -0
  183. package/dist/elements/read-aloud.d.ts +45 -0
  184. package/dist/elements/read-aloud.js +75 -0
  185. package/dist/elements/reasoning-effort.d.ts +36 -0
  186. package/dist/elements/reasoning-effort.js +67 -0
  187. package/dist/elements/reasoning-panel.d.ts +46 -0
  188. package/dist/elements/reasoning-panel.js +75 -0
  189. package/dist/elements/recommendation-card.d.ts +45 -0
  190. package/dist/elements/recommendation-card.js +83 -0
  191. package/dist/elements/regenerate-menu.d.ts +45 -0
  192. package/dist/elements/regenerate-menu.js +51 -0
  193. package/dist/elements/replay.d.ts +217 -0
  194. package/dist/elements/replay.js +498 -0
  195. package/dist/elements/research-report.d.ts +38 -0
  196. package/dist/elements/research-report.js +69 -0
  197. package/dist/elements/retrieval-chunks.d.ts +43 -0
  198. package/dist/elements/retrieval-chunks.js +81 -0
  199. package/dist/elements/revert-dock.d.ts +159 -0
  200. package/dist/elements/revert-dock.js +327 -0
  201. package/dist/elements/reviewable-diff.d.ts +45 -0
  202. package/dist/elements/reviewable-diff.js +110 -0
  203. package/dist/elements/risk-badge.d.ts +52 -0
  204. package/dist/elements/risk-badge.js +91 -0
  205. package/dist/elements/schedule-card.d.ts +42 -0
  206. package/dist/elements/schedule-card.js +90 -0
  207. package/dist/elements/score-breakdown.d.ts +47 -0
  208. package/dist/elements/score-breakdown.js +82 -0
  209. package/dist/elements/scroll-anchor.d.ts +32 -0
  210. package/dist/elements/scroll-anchor.js +121 -0
  211. package/dist/elements/settings-panel.d.ts +52 -0
  212. package/dist/elements/settings-panel.js +107 -0
  213. package/dist/elements/shared-conversation.d.ts +39 -0
  214. package/dist/elements/shared-conversation.js +68 -0
  215. package/dist/elements/sources.d.ts +33 -0
  216. package/dist/elements/sources.js +61 -0
  217. package/dist/elements/speaker-identity.d.ts +32 -0
  218. package/dist/elements/speaker-identity.js +51 -0
  219. package/dist/elements/spec-sheet.d.ts +31 -0
  220. package/dist/elements/spec-sheet.js +45 -0
  221. package/dist/elements/stopped-run.d.ts +22 -0
  222. package/dist/elements/stopped-run.js +50 -0
  223. package/dist/elements/streaming-text.d.ts +31 -0
  224. package/dist/elements/streaming-text.js +45 -0
  225. package/dist/elements/subagent-list.d.ts +37 -0
  226. package/dist/elements/subagent-list.js +79 -0
  227. package/dist/elements/suggestions.d.ts +30 -0
  228. package/dist/elements/suggestions.js +36 -0
  229. package/dist/elements/surfaces.d.ts +85 -0
  230. package/dist/elements/surfaces.js +107 -0
  231. package/dist/elements/tail-status.d.ts +131 -0
  232. package/dist/elements/tail-status.js +94 -0
  233. package/dist/elements/terminal-block.d.ts +29 -0
  234. package/dist/elements/terminal-block.js +54 -0
  235. package/dist/elements/thinking-indicator.d.ts +18 -0
  236. package/dist/elements/thinking-indicator.js +36 -0
  237. package/dist/elements/thread-list.d.ts +35 -0
  238. package/dist/elements/thread-list.js +68 -0
  239. package/dist/elements/thread-search.d.ts +42 -0
  240. package/dist/elements/thread-search.js +99 -0
  241. package/dist/elements/timeline.d.ts +37 -0
  242. package/dist/elements/timeline.js +46 -0
  243. package/dist/elements/todo-list.d.ts +42 -0
  244. package/dist/elements/todo-list.js +59 -0
  245. package/dist/elements/tool-call.d.ts +41 -0
  246. package/dist/elements/tool-call.js +85 -0
  247. package/dist/elements/tool-error.d.ts +39 -0
  248. package/dist/elements/tool-error.js +76 -0
  249. package/dist/elements/tool-group.d.ts +45 -0
  250. package/dist/elements/tool-group.js +71 -0
  251. package/dist/elements/tool-timeline.d.ts +65 -0
  252. package/dist/elements/tool-timeline.js +88 -0
  253. package/dist/elements/trace-waterfall.d.ts +37 -0
  254. package/dist/elements/trace-waterfall.js +69 -0
  255. package/dist/elements/transcript-rules.d.ts +67 -0
  256. package/dist/elements/transcript-rules.js +95 -0
  257. package/dist/elements/turn-footer.d.ts +74 -0
  258. package/dist/elements/turn-footer.js +101 -0
  259. package/dist/elements/typing-indicator.d.ts +16 -0
  260. package/dist/elements/typing-indicator.js +51 -0
  261. package/dist/elements/verdict-row.d.ts +89 -0
  262. package/dist/elements/verdict-row.js +150 -0
  263. package/dist/elements/vocabulary.d.ts +612 -0
  264. package/dist/elements/vocabulary.js +611 -0
  265. package/dist/elements/voice-conversation.d.ts +49 -0
  266. package/dist/elements/voice-conversation.js +123 -0
  267. package/dist/elements/web-preview.d.ts +32 -0
  268. package/dist/elements/web-preview.js +66 -0
  269. package/dist/elements/web-search.d.ts +37 -0
  270. package/dist/elements/web-search.js +66 -0
  271. package/dist/elements/work-collapse.d.ts +103 -0
  272. package/dist/elements/work-collapse.js +131 -0
  273. package/dist/icons/containers.d.ts +89 -0
  274. package/dist/icons/containers.js +295 -0
  275. package/dist/icons/index.d.ts +2 -0
  276. package/dist/index.d.ts +9 -7
  277. package/dist/index.js +3 -2
  278. package/dist/instruments/index.d.ts +2 -2
  279. package/dist/instruments/index.js +2 -2
  280. package/dist/instruments/table.d.ts +14 -1
  281. package/dist/instruments/table.js +20 -1
  282. package/dist/instruments/two-step-button.js +25 -6
  283. package/dist/layout/sidebar.d.ts +19 -1
  284. package/dist/layout/sidebar.js +19 -1
  285. package/dist/primitives/button.js +11 -1
  286. package/dist/primitives/chip.d.ts +34 -8
  287. package/dist/primitives/chip.js +97 -11
  288. package/dist/styles.css +11 -1
  289. package/dist/system/agent-skin.d.ts +27 -0
  290. package/dist/system/agent-skin.js +20 -0
  291. package/dist/system/index.d.ts +3 -3
  292. package/dist/system/portal.d.ts +5 -3
  293. package/dist/system/portal.js +36 -8
  294. package/dist/system/prepaint.d.ts +20 -2
  295. package/dist/system/prepaint.js +39 -33
  296. package/dist/system/theme-provider.d.ts +13 -2
  297. package/dist/system/theme-provider.js +107 -26
  298. package/dist/system/use-density.d.ts +9 -0
  299. package/dist/system/use-density.js +9 -0
  300. package/dist/system/use-isomorphic-layout-effect.js +19 -1
  301. package/dist/theming/_presets.d.ts +1 -1
  302. package/dist/theming/_presets.js +124 -8
  303. package/dist/theming/contrast.d.ts +16 -4
  304. package/dist/theming/contrast.js +33 -6
  305. package/dist/theming/create-theme.d.ts +8 -4
  306. package/dist/theming/create-theme.js +56 -20
  307. package/dist/theming/serialize.d.ts +11 -2
  308. package/dist/theming/serialize.js +87 -9
  309. package/manifest/components/accordion.json +154 -0
  310. package/manifest/components/activity-graph.json +88 -0
  311. package/manifest/components/agent-card.json +120 -0
  312. package/manifest/components/agent-handoff.json +87 -0
  313. package/manifest/components/agent-mode-badge.json +84 -0
  314. package/manifest/components/agent-pile.json +116 -0
  315. package/manifest/components/agent-plan.json +67 -0
  316. package/manifest/components/agent-status.json +73 -0
  317. package/manifest/components/agent-surface.json +78 -0
  318. package/manifest/components/alert-dialog.json +190 -0
  319. package/manifest/components/animated-number.json +67 -0
  320. package/manifest/components/app-bar.json +244 -0
  321. package/manifest/components/app-shell.json +383 -0
  322. package/manifest/components/app-window-frame.json +102 -0
  323. package/manifest/components/approval-card.json +106 -0
  324. package/manifest/components/artifact-card.json +81 -0
  325. package/manifest/components/ask-box.json +209 -0
  326. package/manifest/components/audience-icon.json +52 -0
  327. package/manifest/components/autocomplete.json +197 -0
  328. package/manifest/components/avatar-group.json +72 -0
  329. package/manifest/components/avatar.json +95 -0
  330. package/manifest/components/background-inbox.json +71 -0
  331. package/manifest/components/branch-picker.json +124 -0
  332. package/manifest/components/breadcrumb.json +74 -0
  333. package/manifest/components/button-group.json +74 -0
  334. package/manifest/components/button.json +126 -0
  335. package/manifest/components/calendar.json +65 -0
  336. package/manifest/components/canvas-split-body.json +62 -0
  337. package/manifest/components/canvas-split-document.json +54 -0
  338. package/manifest/components/canvas-split-header.json +83 -0
  339. package/manifest/components/canvas-split-line.json +62 -0
  340. package/manifest/components/canvas-split-message.json +62 -0
  341. package/manifest/components/canvas-split-thread.json +54 -0
  342. package/manifest/components/canvas-split.json +60 -0
  343. package/manifest/components/card.json +140 -0
  344. package/manifest/components/carousel.json +200 -0
  345. package/manifest/components/catalogue-icon.json +52 -0
  346. package/manifest/components/channel-beta-icon.json +52 -0
  347. package/manifest/components/channel-matrix.json +173 -0
  348. package/manifest/components/channel-released-icon.json +52 -0
  349. package/manifest/components/chart-container.json +111 -0
  350. package/manifest/components/chart-ramp.json +72 -0
  351. package/manifest/components/chart-swatch.json +65 -0
  352. package/manifest/components/chart-tooltip-content.json +114 -0
  353. package/manifest/components/chart.json +93 -0
  354. package/manifest/components/chat-empty-state.json +55 -0
  355. package/manifest/components/chat-panel-assistant-message.json +51 -0
  356. package/manifest/components/chat-panel-composer.json +66 -0
  357. package/manifest/components/chat-panel-messages.json +51 -0
  358. package/manifest/components/chat-panel-typing.json +51 -0
  359. package/manifest/components/chat-panel-user-message.json +51 -0
  360. package/manifest/components/chat-panel.json +57 -0
  361. package/manifest/components/checkbox-group.json +68 -0
  362. package/manifest/components/checkbox.json +93 -0
  363. package/manifest/components/checkpoint-history.json +80 -0
  364. package/manifest/components/chip.json +144 -0
  365. package/manifest/components/clamp.json +102 -0
  366. package/manifest/components/cli-tool-icon.json +52 -0
  367. package/manifest/components/code-diff.json +87 -0
  368. package/manifest/components/code-runner.json +97 -0
  369. package/manifest/components/collapsible.json +120 -0
  370. package/manifest/components/color-area.json +59 -0
  371. package/manifest/components/color-field.json +79 -0
  372. package/manifest/components/color-picker.json +175 -0
  373. package/manifest/components/color-slider.json +75 -0
  374. package/manifest/components/color-swatch.json +68 -0
  375. package/manifest/components/colors-section.json +66 -0
  376. package/manifest/components/combobox.json +198 -0
  377. package/manifest/components/command-palette.json +177 -0
  378. package/manifest/components/compaction-row.json +100 -0
  379. package/manifest/components/comparison-card.json +83 -0
  380. package/manifest/components/composer-actions.json +65 -0
  381. package/manifest/components/composer-attach-button.json +65 -0
  382. package/manifest/components/composer-attachment-chip.json +75 -0
  383. package/manifest/components/composer-attachments.json +60 -0
  384. package/manifest/components/composer-bar.json +73 -0
  385. package/manifest/components/composer-command-item.json +79 -0
  386. package/manifest/components/composer-context.json +67 -0
  387. package/manifest/components/composer-input.json +73 -0
  388. package/manifest/components/composer-menu-item.json +72 -0
  389. package/manifest/components/composer-menu.json +79 -0
  390. package/manifest/components/composer-model-item.json +75 -0
  391. package/manifest/components/composer-model-trigger.json +75 -0
  392. package/manifest/components/composer-person-item.json +79 -0
  393. package/manifest/components/composer-send.json +80 -0
  394. package/manifest/components/composer-toolbar.json +65 -0
  395. package/manifest/components/composer-voice-button.json +68 -0
  396. package/manifest/components/composer-voice.json +75 -0
  397. package/manifest/components/composer.json +176 -0
  398. package/manifest/components/computer-use.json +84 -0
  399. package/manifest/components/confidence-marker.json +74 -0
  400. package/manifest/components/connection-state.json +84 -0
  401. package/manifest/components/container.json +60 -0
  402. package/manifest/components/context-breakdown.json +65 -0
  403. package/manifest/components/context-menu.json +121 -0
  404. package/manifest/components/context-usage.json +85 -0
  405. package/manifest/components/conversation-search.json +92 -0
  406. package/manifest/components/copy-button.json +93 -0
  407. package/manifest/components/cost-meter.json +74 -0
  408. package/manifest/components/cue-logotype.json +96 -0
  409. package/manifest/components/cue-mark.json +97 -0
  410. package/manifest/components/cue-portal-frame.json +55 -0
  411. package/manifest/components/data-table-pagination.json +83 -0
  412. package/manifest/components/data-table-toolbar.json +104 -0
  413. package/manifest/components/date-field.json +80 -0
  414. package/manifest/components/date-picker.json +191 -0
  415. package/manifest/components/date-range-picker.json +191 -0
  416. package/manifest/components/day-separator.json +58 -0
  417. package/manifest/components/delegation-card.json +144 -0
  418. package/manifest/components/density.json +58 -0
  419. package/manifest/components/description-list.json +84 -0
  420. package/manifest/components/diagram.json +100 -0
  421. package/manifest/components/dialog.json +198 -0
  422. package/manifest/components/disclosure.json +109 -0
  423. package/manifest/components/dmx-bar.json +94 -0
  424. package/manifest/components/dmx-strip.json +101 -0
  425. package/manifest/components/document-reference.json +90 -0
  426. package/manifest/components/draft-restore.json +82 -0
  427. package/manifest/components/drawer.json +179 -0
  428. package/manifest/components/dropdown-menu.json +229 -0
  429. package/manifest/components/edit-message.json +105 -0
  430. package/manifest/components/elements-command-palette.json +100 -0
  431. package/manifest/components/elements-composer.json +71 -0
  432. package/manifest/components/elements-data-table.json +68 -0
  433. package/manifest/components/elements-timeline.json +69 -0
  434. package/manifest/components/elicitation-form.json +103 -0
  435. package/manifest/components/empty-state-composer.json +64 -0
  436. package/manifest/components/empty-state-greeting.json +49 -0
  437. package/manifest/components/empty-state-suggestion.json +57 -0
  438. package/manifest/components/empty-state-suggestions.json +49 -0
  439. package/manifest/components/empty-state.json +90 -0
  440. package/manifest/components/end-of-turn-summary.json +77 -0
  441. package/manifest/components/env-var-input.json +150 -0
  442. package/manifest/components/error-state.json +80 -0
  443. package/manifest/components/export-dialog.json +84 -0
  444. package/manifest/components/eyebrow.json +56 -0
  445. package/manifest/components/feedback-dialog.json +107 -0
  446. package/manifest/components/field-description.json +63 -0
  447. package/manifest/components/field-error.json +77 -0
  448. package/manifest/components/field-label.json +63 -0
  449. package/manifest/components/field.json +79 -0
  450. package/manifest/components/file-tree.json +83 -0
  451. package/manifest/components/file-upload.json +159 -0
  452. package/manifest/components/flow-background.json +50 -0
  453. package/manifest/components/flow-controls.json +50 -0
  454. package/manifest/components/flow-graph.json +75 -0
  455. package/manifest/components/folder-icon.json +52 -0
  456. package/manifest/components/footer.json +112 -0
  457. package/manifest/components/frac.json +59 -0
  458. package/manifest/components/generation-loader.json +64 -0
  459. package/manifest/components/generative-ui.json +93 -0
  460. package/manifest/components/grid.json +81 -0
  461. package/manifest/components/group-bar.json +102 -0
  462. package/manifest/components/guardrail-notice.json +91 -0
  463. package/manifest/components/hover-card.json +151 -0
  464. package/manifest/components/icon-button.json +88 -0
  465. package/manifest/components/image-generation.json +67 -0
  466. package/manifest/components/info-tip.json +98 -0
  467. package/manifest/components/inline-citation.json +77 -0
  468. package/manifest/components/input-group.json +91 -0
  469. package/manifest/components/input.json +89 -0
  470. package/manifest/components/item.json +129 -0
  471. package/manifest/components/job-progress.json +96 -0
  472. package/manifest/components/kbd.json +52 -0
  473. package/manifest/components/launcher-bubble.json +105 -0
  474. package/manifest/components/link.json +81 -0
  475. package/manifest/components/live-region-announcer.json +79 -0
  476. package/manifest/components/log-viewer.json +139 -0
  477. package/manifest/components/map-answer.json +83 -0
  478. package/manifest/components/markdown-text.json +94 -0
  479. package/manifest/components/math-block.json +74 -0
  480. package/manifest/components/mcp-server-icon.json +52 -0
  481. package/manifest/components/mcp-server-panel.json +87 -0
  482. package/manifest/components/memory-chips.json +65 -0
  483. package/manifest/components/menubar.json +157 -0
  484. package/manifest/components/message-actions.json +99 -0
  485. package/manifest/components/message-attachments.json +63 -0
  486. package/manifest/components/message-branches.json +71 -0
  487. package/manifest/components/message-list.json +100 -0
  488. package/manifest/components/message-pair.json +86 -0
  489. package/manifest/components/message-queue.json +74 -0
  490. package/manifest/components/message-timing.json +62 -0
  491. package/manifest/components/message.json +116 -0
  492. package/manifest/components/meter.json +114 -0
  493. package/manifest/components/mobile-composer.json +126 -0
  494. package/manifest/components/model-picker.json +76 -0
  495. package/manifest/components/multi-select.json +190 -0
  496. package/manifest/components/musical-time-input.json +113 -0
  497. package/manifest/components/navigation-menu.json +226 -0
  498. package/manifest/components/node-card.json +109 -0
  499. package/manifest/components/node-handle.json +69 -0
  500. package/manifest/components/number-field.json +107 -0
  501. package/manifest/components/number-ticker.json +61 -0
  502. package/manifest/components/onboarding.json +84 -0
  503. package/manifest/components/otp-field.json +128 -0
  504. package/manifest/components/page-shell.json +96 -0
  505. package/manifest/components/pagination.json +92 -0
  506. package/manifest/components/panel-header.json +77 -0
  507. package/manifest/components/panel.json +71 -0
  508. package/manifest/components/password-input.json +119 -0
  509. package/manifest/components/permission-grant.json +92 -0
  510. package/manifest/components/permission-scopes.json +139 -0
  511. package/manifest/components/piano-keyboard.json +120 -0
  512. package/manifest/components/plussie.json +111 -0
  513. package/manifest/components/popover.json +193 -0
  514. package/manifest/components/preset-section.json +73 -0
  515. package/manifest/components/progress.json +95 -0
  516. package/manifest/components/prompt-library.json +99 -0
  517. package/manifest/components/queue-dock.json +110 -0
  518. package/manifest/components/quota-banner.json +94 -0
  519. package/manifest/components/quote-reply.json +105 -0
  520. package/manifest/components/radio-group.json +73 -0
  521. package/manifest/components/radio.json +80 -0
  522. package/manifest/components/rating.json +141 -0
  523. package/manifest/components/read-aloud.json +111 -0
  524. package/manifest/components/reasoning-effort.json +81 -0
  525. package/manifest/components/reasoning-panel.json +108 -0
  526. package/manifest/components/recommendation-card.json +107 -0
  527. package/manifest/components/regenerate-menu.json +89 -0
  528. package/manifest/components/replay-player.json +102 -0
  529. package/manifest/components/research-report.json +76 -0
  530. package/manifest/components/resizable.json +88 -0
  531. package/manifest/components/retrieval-chunks.json +84 -0
  532. package/manifest/components/revert-dock.json +150 -0
  533. package/manifest/components/reviewable-diff.json +93 -0
  534. package/manifest/components/risk-badge.json +74 -0
  535. package/manifest/components/row.json +109 -0
  536. package/manifest/components/schedule-card.json +101 -0
  537. package/manifest/components/score-breakdown.json +91 -0
  538. package/manifest/components/scroll-anchor.json +72 -0
  539. package/manifest/components/scroll-area.json +91 -0
  540. package/manifest/components/scrollable-tabs-list.json +83 -0
  541. package/manifest/components/scrub-input.json +200 -0
  542. package/manifest/components/seam-cell.json +75 -0
  543. package/manifest/components/seam-grid.json +75 -0
  544. package/manifest/components/seam-list.json +56 -0
  545. package/manifest/components/search-input.json +134 -0
  546. package/manifest/components/section-header.json +112 -0
  547. package/manifest/components/segmented-control.json +138 -0
  548. package/manifest/components/select.json +194 -0
  549. package/manifest/components/separator.json +53 -0
  550. package/manifest/components/settings-panel.json +118 -0
  551. package/manifest/components/shape-section.json +66 -0
  552. package/manifest/components/shared-conversation.json +89 -0
  553. package/manifest/components/sheet.json +186 -0
  554. package/manifest/components/shimmer-label.json +59 -0
  555. package/manifest/components/sidebar.json +198 -0
  556. package/manifest/components/signal-edge.json +56 -0
  557. package/manifest/components/skeleton.json +46 -0
  558. package/manifest/components/skill-icon.json +52 -0
  559. package/manifest/components/slider.json +89 -0
  560. package/manifest/components/sources.json +83 -0
  561. package/manifest/components/sparkline.json +76 -0
  562. package/manifest/components/speaker-identity.json +61 -0
  563. package/manifest/components/spec-sheet.json +80 -0
  564. package/manifest/components/spectrum-visualizer.json +115 -0
  565. package/manifest/components/spinner.json +61 -0
  566. package/manifest/components/stack-icon.json +52 -0
  567. package/manifest/components/stack.json +96 -0
  568. package/manifest/components/stacks-matrix-icon.json +52 -0
  569. package/manifest/components/stat.json +87 -0
  570. package/manifest/components/status-bar.json +58 -0
  571. package/manifest/components/status-dot.json +78 -0
  572. package/manifest/components/stepper.json +89 -0
  573. package/manifest/components/stopped-run.json +81 -0
  574. package/manifest/components/streaming-text.json +71 -0
  575. package/manifest/components/sub.json +44 -0
  576. package/manifest/components/subagent-list.json +88 -0
  577. package/manifest/components/suggestions.json +84 -0
  578. package/manifest/components/sup.json +44 -0
  579. package/manifest/components/swap-label.json +71 -0
  580. package/manifest/components/switch.json +87 -0
  581. package/manifest/components/table-scroll-region.json +69 -0
  582. package/manifest/components/table.json +155 -0
  583. package/manifest/components/tabs.json +145 -0
  584. package/manifest/components/tags-input.json +190 -0
  585. package/manifest/components/tail-status.json +109 -0
  586. package/manifest/components/terminal-block.json +91 -0
  587. package/manifest/components/terminal-frame.json +119 -0
  588. package/manifest/components/textarea.json +76 -0
  589. package/manifest/components/theme-configurator.json +124 -0
  590. package/manifest/components/theme-provider.json +134 -0
  591. package/manifest/components/thinking-indicator.json +63 -0
  592. package/manifest/components/thread-list.json +76 -0
  593. package/manifest/components/thread-search.json +90 -0
  594. package/manifest/components/threshold-rail.json +160 -0
  595. package/manifest/components/time-boundary.json +62 -0
  596. package/manifest/components/time-field.json +80 -0
  597. package/manifest/components/timeline-ruler.json +139 -0
  598. package/manifest/components/timeline.json +115 -0
  599. package/manifest/components/title-bar.json +82 -0
  600. package/manifest/components/toast.json +130 -0
  601. package/manifest/components/todo-list.json +69 -0
  602. package/manifest/components/toggle-group.json +106 -0
  603. package/manifest/components/toggle.json +109 -0
  604. package/manifest/components/token-editor.json +90 -0
  605. package/manifest/components/tool-call-card.json +200 -0
  606. package/manifest/components/tool-call.json +119 -0
  607. package/manifest/components/tool-error.json +114 -0
  608. package/manifest/components/tool-group.json +83 -0
  609. package/manifest/components/tool-timeline.json +119 -0
  610. package/manifest/components/toolbar.json +163 -0
  611. package/manifest/components/tooltip.json +164 -0
  612. package/manifest/components/trace-waterfall.json +74 -0
  613. package/manifest/components/tree-visibility-toggle.json +84 -0
  614. package/manifest/components/tree.json +140 -0
  615. package/manifest/components/turn-footer.json +105 -0
  616. package/manifest/components/two-step-button.json +113 -0
  617. package/manifest/components/typing-indicator.json +53 -0
  618. package/manifest/components/universe-grid.json +127 -0
  619. package/manifest/components/unread-divider.json +55 -0
  620. package/manifest/components/usage-chart.json +124 -0
  621. package/manifest/components/verdict-row.json +91 -0
  622. package/manifest/components/voice-conversation.json +109 -0
  623. package/manifest/components/web-preview.json +87 -0
  624. package/manifest/components/web-search.json +92 -0
  625. package/manifest/components/work-collapse.json +102 -0
  626. package/manifest/manifest.json +4779 -0
  627. package/manifest/tokens.json +159 -0
  628. package/package.json +54 -5
@@ -0,0 +1,229 @@
1
+ {
2
+ "name": "DropdownMenu",
3
+ "slug": "dropdown-menu",
4
+ "group": "overlays",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "A command list hung off a button: row actions, view options, an account menu.\n\nWraps Base UI's `Menu`, so roving focus, typeahead, submenu handling, Escape\nand outside-press dismissal are the primitive's. This layer adds the token\nskin, the portal theme stamp and the canvas-safe wheel dismissal\n(see {@link DropdownMenuRootProps.closeOnWheel}).",
9
+ "props": [],
10
+ "typeReferences": [],
11
+ "subcomponents": [
12
+ "Root",
13
+ "Trigger",
14
+ "Content",
15
+ "Group",
16
+ "Label",
17
+ "Item",
18
+ "CheckboxItem",
19
+ "Separator"
20
+ ],
21
+ "parts": [
22
+ {
23
+ "name": "Root",
24
+ "usage": "DropdownMenu.Root",
25
+ "description": "Groups the parts of a menu and owns its open state. Renders no element.",
26
+ "props": [
27
+ {
28
+ "name": "closeOnWheel",
29
+ "type": "boolean",
30
+ "required": false,
31
+ "defaultValue": "true",
32
+ "description": "Close the menu when the viewport moves under it — a wheel anywhere outside\nthe popup, or a window resize. Defaults to `true`.\n\nThe menu is positioned from its trigger's rect, and a canvas that pans by\nmutating a CSS transform fires no `scroll` event, so without this a menu\nover the patch grid detaches from its button the moment the user scrolls.\nA wheel *inside* the popup is left alone — that is a long menu scrolling."
33
+ }
34
+ ],
35
+ "typeReferences": [
36
+ "BaseMenu.Root.Props"
37
+ ]
38
+ },
39
+ {
40
+ "name": "Trigger",
41
+ "usage": "DropdownMenu.Trigger",
42
+ "description": "The control that opens the menu. Unstyled — pass `render={<Button />}` or\n`render={<IconButton …/>}` so the button's variant classes win.",
43
+ "props": [],
44
+ "typeReferences": [
45
+ "BaseMenu.Trigger.Props"
46
+ ]
47
+ },
48
+ {
49
+ "name": "Content",
50
+ "usage": "DropdownMenu.Content",
51
+ "description": "The menu's portal, positioner and popup.\n\nPortalled through {@link useCuePortalProps} so the rows render at the\ncaller's density; roving focus, typeahead and Escape come from Base UI.",
52
+ "props": [
53
+ {
54
+ "name": "className",
55
+ "type": "string",
56
+ "required": false,
57
+ "defaultValue": null,
58
+ "description": "Extra classes for the popup surface."
59
+ },
60
+ {
61
+ "name": "align",
62
+ "type": "\"center\" | \"end\" | \"start\"",
63
+ "required": false,
64
+ "defaultValue": "start",
65
+ "description": "Alignment along that side. Defaults to `\"start\"`."
66
+ },
67
+ {
68
+ "name": "keepMounted",
69
+ "type": "boolean",
70
+ "required": false,
71
+ "defaultValue": null,
72
+ "description": "Keep the popup mounted while closed."
73
+ },
74
+ {
75
+ "name": "positionerClassName",
76
+ "type": "string",
77
+ "required": false,
78
+ "defaultValue": null,
79
+ "description": "Extra classes for the positioner that places the popup."
80
+ },
81
+ {
82
+ "name": "sideOffset",
83
+ "type": "number | OffsetFunction",
84
+ "required": false,
85
+ "defaultValue": "4",
86
+ "description": "Gap in px between trigger and popup. Defaults to `4`."
87
+ },
88
+ {
89
+ "name": "side",
90
+ "type": "\"left\" | \"right\" | \"bottom\" | \"top\" | \"inline-end\" | \"inline-start\"",
91
+ "required": false,
92
+ "defaultValue": null,
93
+ "description": "Preferred side of the trigger. Defaults to `\"bottom\"`."
94
+ },
95
+ {
96
+ "name": "alignOffset",
97
+ "type": "number | OffsetFunction",
98
+ "required": false,
99
+ "defaultValue": null,
100
+ "description": "Nudge along the alignment axis, in px."
101
+ }
102
+ ],
103
+ "typeReferences": [
104
+ "Omit<BaseMenu.Popup.Props, \"className\">"
105
+ ]
106
+ },
107
+ {
108
+ "name": "Group",
109
+ "usage": "DropdownMenu.Group",
110
+ "description": "A labelled block of rows. Give it a {@link DropdownMenuLabel} as its first child.",
111
+ "props": [],
112
+ "typeReferences": [
113
+ "BaseMenu.Group.Props"
114
+ ]
115
+ },
116
+ {
117
+ "name": "Label",
118
+ "usage": "DropdownMenu.Label",
119
+ "description": "The uppercase mono caption over a group. Names the group for assistive tech,\nso it belongs inside a {@link DropdownMenuGroup}, not loose in the popup.",
120
+ "props": [],
121
+ "typeReferences": [
122
+ "BaseMenu.GroupLabel.Props"
123
+ ]
124
+ },
125
+ {
126
+ "name": "Item",
127
+ "usage": "DropdownMenu.Item",
128
+ "description": "One command. Closes the menu on press unless `closeOnClick={false}`.\n\nHighlighted with `accent-soft` rather than a solid accent fill: at console\ndensity a solid bar under the pointer is far too loud (the luma defect\nruling), and the soft tint still passes contrast against the row text.",
129
+ "props": [
130
+ {
131
+ "name": "icon",
132
+ "type": "ElementType<any, keyof IntrinsicElements>",
133
+ "required": false,
134
+ "defaultValue": null,
135
+ "description": "Optional leading icon component, sized to the density icon token."
136
+ },
137
+ {
138
+ "name": "trailing",
139
+ "type": "ReactNode",
140
+ "required": false,
141
+ "defaultValue": null,
142
+ "description": "Trailing slot — a `Kbd` shortcut hint, a count, a chevron."
143
+ }
144
+ ],
145
+ "typeReferences": [
146
+ "BaseMenu.Item.Props"
147
+ ]
148
+ },
149
+ {
150
+ "name": "CheckboxItem",
151
+ "usage": "DropdownMenu.CheckboxItem",
152
+ "description": "A row that toggles a setting. Stays open on press — toggling three view\noptions should not mean opening the menu three times.\n\nThe tick gutter is always reserved, so labels do not jog sideways as items\nare ticked.",
153
+ "props": [],
154
+ "typeReferences": [
155
+ "BaseMenu.CheckboxItem.Props"
156
+ ]
157
+ },
158
+ {
159
+ "name": "Separator",
160
+ "usage": "DropdownMenu.Separator",
161
+ "description": "The hairline between groups of rows.",
162
+ "props": [],
163
+ "typeReferences": [
164
+ "BaseMenu.Separator.Props"
165
+ ]
166
+ }
167
+ ],
168
+ "variants": {},
169
+ "defaultVariants": {},
170
+ "tokensUsed": [
171
+ "--cue-accent",
172
+ "--cue-accent-soft",
173
+ "--cue-border",
174
+ "--cue-border-overlay",
175
+ "--cue-control-sm",
176
+ "--cue-fg",
177
+ "--cue-fg-muted",
178
+ "--cue-fg-subtle",
179
+ "--cue-font-mono",
180
+ "--cue-icon-sm",
181
+ "--cue-radius-control",
182
+ "--cue-radius-overlay",
183
+ "--cue-scrim",
184
+ "--cue-space-1",
185
+ "--cue-space-2",
186
+ "--cue-space-3",
187
+ "--cue-surface-2",
188
+ "--cue-text-emphasis",
189
+ "--cue-text-label",
190
+ "--cue-text-ui"
191
+ ],
192
+ "summary": "A command list hung off a button.",
193
+ "examples": [
194
+ {
195
+ "title": "Usage",
196
+ "code": "<DropdownMenu.Root>\n <DropdownMenu.Trigger render={<IconButton aria-label=\"Cue actions\" icon={MoreVertical} />} />\n <DropdownMenu.Content align=\"end\">\n <DropdownMenu.Group>\n <DropdownMenu.Label>Playback</DropdownMenu.Label>\n <DropdownMenu.Item onClick={go}>Go</DropdownMenu.Item>\n </DropdownMenu.Group>\n <DropdownMenu.Separator />\n <DropdownMenu.CheckboxItem checked={follow} onCheckedChange={setFollow}>\n Follow\n </DropdownMenu.CheckboxItem>\n </DropdownMenu.Content>\n</DropdownMenu.Root>",
197
+ "language": "tsx"
198
+ }
199
+ ],
200
+ "status": "stable",
201
+ "url": "/docs/components/dropdown-menu",
202
+ "mdUrl": "/docs/components/dropdown-menu.md",
203
+ "jsonUrl": "/r/components/dropdown-menu.json",
204
+ "whenToUse": [
205
+ "Row actions, view options, an account menu: a list of things to do.",
206
+ "Toggling view state with `DropdownMenu.CheckboxItem`, which stays open so three toggles cost one trip."
207
+ ],
208
+ "whenNotToUse": [
209
+ "Choosing a value that a form will submit. Use `Select`.",
210
+ "Arbitrary content. A menu is a list of commands, not a layout container.",
211
+ "Right-click actions on a surface. Use `ContextMenu`."
212
+ ],
213
+ "commonMistakes": [
214
+ "Putting an input inside a menu item, where typeahead and roving focus fight the field for every keystroke.",
215
+ "Leaving a `DropdownMenu.Group` without a `DropdownMenu.Label`, which leaves the group unnamed for assistive tech."
216
+ ],
217
+ "specimens": [
218
+ {
219
+ "title": "DropdownMenu",
220
+ "group": "overlays",
221
+ "components": [
222
+ "DropdownMenu"
223
+ ],
224
+ "code": "<Specimens>\n <Specimen label=\"default\">\n <DropdownMenu.Root>\n <DropdownMenu.Trigger render={<IconButton aria-label=\"Cue actions\" icon={MoreVertical} />} />\n <DropdownMenu.Content align=\"end\">\n <DropdownMenu.Group>\n <DropdownMenu.Label>Cue</DropdownMenu.Label>\n <DropdownMenu.Item icon={Play} trailing={<Kbd>G</Kbd>}>\n Go\n </DropdownMenu.Item>\n <DropdownMenu.Item icon={Copy} trailing={<Kbd>⌘D</Kbd>}>\n Duplicate\n </DropdownMenu.Item>\n </DropdownMenu.Group>\n <DropdownMenu.Separator />\n <DropdownMenu.CheckboxItem checked={follow} onCheckedChange={setFollow}>\n Follow\n </DropdownMenu.CheckboxItem>\n <DropdownMenu.Separator />\n <DropdownMenu.Item icon={Trash2} disabled>\n Delete\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Specimen>\n <Specimen label=\"from a density island\">\n <Density density=\"ultra-compact\">\n <DropdownMenu.Root>\n <DropdownMenu.Trigger render={<Button>Ultra-compact</Button>} />\n <DropdownMenu.Content>\n <DropdownMenu.Item>The popup is ultra-compact too</DropdownMenu.Item>\n <DropdownMenu.Item>Because the portal is stamped</DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Density>\n </Specimen>\n</Specimens>",
225
+ "note": "Groups, labels, icons, trailing shortcuts, checkbox items and separators, on the shared menu surface.",
226
+ "interaction": "closes on wheel as well as on scroll, so a menu opened over a pannable canvas cannot be left floating over nothing."
227
+ }
228
+ ]
229
+ }
@@ -0,0 +1,105 @@
1
+ {
2
+ "name": "EditMessage",
3
+ "slug": "edit-message",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "Rewrite a turn in place, told up front how many replies the edit throws away.",
11
+ "props": [
12
+ {
13
+ "name": "value",
14
+ "type": "string",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "The message text, read when resting and edited when open."
18
+ },
19
+ {
20
+ "name": "discardedReplies",
21
+ "type": "number",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "How many replies sending would drop. The warning hides at zero."
25
+ },
26
+ {
27
+ "name": "editing",
28
+ "type": "boolean",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "Swaps between the resting bubble and the edit composer."
32
+ },
33
+ {
34
+ "name": "onValueChange",
35
+ "type": "((value: string) => void)",
36
+ "required": false,
37
+ "defaultValue": null,
38
+ "description": "Called as the message is edited."
39
+ },
40
+ {
41
+ "name": "onSave",
42
+ "type": "(() => void)",
43
+ "required": false,
44
+ "defaultValue": null,
45
+ "description": "Called when the edited message is sent."
46
+ },
47
+ {
48
+ "name": "onCancel",
49
+ "type": "(() => void)",
50
+ "required": false,
51
+ "defaultValue": null,
52
+ "description": "Called when the edit is abandoned. Restore the original yourself."
53
+ },
54
+ {
55
+ "name": "onStartEdit",
56
+ "type": "(() => void)",
57
+ "required": false,
58
+ "defaultValue": null,
59
+ "description": "Called when the resting bubble is clicked."
60
+ }
61
+ ],
62
+ "typeReferences": [
63
+ "Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"value\"\n | \"discardedReplies\"\n | \"editing\"\n | \"onValueChange\"\n | \"onSave\"\n | \"onCancel\"\n | \"onStartEdit\"\n> & {\n /** The message text, read when resting and edited when open. */\n value: string;\n /** How many replies sending would drop. The warning hides at zero. */\n discardedReplies: number;\n /** Swaps between the resting bubble and the edit composer. */\n editing: boolean;\n /** Called as the message is edited. */\n onValueChange?: (value: string) => void;\n /** Called when the edited message is sent. */\n onSave?: () => void;\n /** Called when the edit is abandoned. Restore the original yourself. */\n onCancel?: () => void;\n /** Called when the resting bubble is clicked. */\n onStartEdit?: () => void;\n}"
64
+ ],
65
+ "subcomponents": [],
66
+ "parts": [],
67
+ "variants": {},
68
+ "defaultVariants": {},
69
+ "tokensUsed": [
70
+ "--cue-accent",
71
+ "--cue-fg",
72
+ "--cue-fg-muted",
73
+ "--cue-radius-overlay",
74
+ "--cue-radius-surface",
75
+ "--cue-surface-2",
76
+ "--cue-text-body",
77
+ "--cue-text-ui",
78
+ "--cue-warn"
79
+ ],
80
+ "summary": "Rewrite a turn in place, told up front how many replies the edit throws away.",
81
+ "examples": [
82
+ {
83
+ "title": "Usage",
84
+ "code": "import { EditMessage } from \"@cueplusplus/ui/elements\";\n\n<EditMessage\n value={value}\n discardedReplies={3}\n editing={editing}\n onValueChange={setValue}\n onStartEdit={() => setEditing(true)}\n onCancel={cancel}\n onSave={save}\n/>",
85
+ "language": "tsx"
86
+ }
87
+ ],
88
+ "status": "todo-docs",
89
+ "url": "/docs/components/edit-message",
90
+ "mdUrl": "/docs/components/edit-message.md",
91
+ "jsonUrl": "/r/components/edit-message.json",
92
+ "specimens": [
93
+ {
94
+ "title": "EditMessage",
95
+ "group": "elements-thread",
96
+ "components": [
97
+ "EditMessage"
98
+ ],
99
+ "code": "<Specimens>\n <Specimen label=\"editing · 2 replies at stake\" wide>\n <EditMessage\n value={draft}\n discardedReplies={2}\n editing={editing}\n onValueChange={setDraft}\n onSave={() => setEditing(false)}\n onCancel={() => setEditing(false)}\n onStartEdit={() => setEditing(true)}\n />\n </Specimen>\n <Specimen label=\"editing · nothing at stake\" wide>\n <EditMessage value={draft} discardedReplies={0} editing onValueChange={setDraft} />\n </Specimen>\n <Specimen label=\"resting\" wide>\n <EditMessage\n value=\"Plot's in. Front truss, universe 3.\"\n discardedReplies={2}\n editing={false}\n onStartEdit={() => setEditing(true)}\n />\n </Specimen>\n</Specimens>",
100
+ "note": "Rewriting a turn you already sent, told up front what it throws away. The count is the point: editing the third message of a thread discards everything after it, and a control that hid that would be a data-loss trap wearing a pencil icon.",
101
+ "interaction": "resting, the whole bubble is the button that starts an edit. Editing, the textarea is labelled and takes cue's focus ring; Send leads and Cancel is a ghost."
102
+ }
103
+ ],
104
+ "todo": true
105
+ }
@@ -0,0 +1,100 @@
1
+ {
2
+ "name": "ElementsCommandPalette",
3
+ "slug": "elements-command-palette",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "Everything the app can do, one keystroke away and grouped by where it acts.",
11
+ "props": [
12
+ {
13
+ "name": "commands",
14
+ "type": "readonly PaletteCommand[]",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "Everything runnable. Groups are derived from the entries and keep first-seen order."
18
+ },
19
+ {
20
+ "name": "query",
21
+ "type": "string",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "Current filter text."
25
+ },
26
+ {
27
+ "name": "activeId",
28
+ "type": "string",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "Which row is highlighted. Arrow keys move it and Enter runs it, both handled by\nthe element; it reports the move through onActiveChange."
32
+ },
33
+ {
34
+ "name": "onQueryChange",
35
+ "type": "((query: string) => void)",
36
+ "required": false,
37
+ "defaultValue": null,
38
+ "description": "Called as the filter is typed."
39
+ },
40
+ {
41
+ "name": "onActiveChange",
42
+ "type": "((id: string) => void)",
43
+ "required": false,
44
+ "defaultValue": null,
45
+ "description": "Called as the arrow keys walk the list. The element owns the key handling and\nreports where it landed, so activeId stays yours to hold."
46
+ },
47
+ {
48
+ "name": "onRun",
49
+ "type": "((id: string) => void)",
50
+ "required": false,
51
+ "defaultValue": null,
52
+ "description": "Called when a command is chosen."
53
+ }
54
+ ],
55
+ "typeReferences": [
56
+ "Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"commands\"\n | \"query\"\n | \"activeId\"\n | \"onQueryChange\"\n | \"onActiveChange\"\n | \"onRun\"\n> & {\n /** Everything runnable. Groups are derived from the entries and keep first-seen order. */\n commands: readonly PaletteCommand[];\n /** Current filter text. */\n query: string;\n /**\n * Which row is highlighted. Arrow keys move it and Enter runs it, both handled by\n * the element; it reports the move through onActiveChange.\n */\n activeId: string;\n /** Called as the filter is typed. */\n onQueryChange?: (query: string) => void;\n /**\n * Called as the arrow keys walk the list. The element owns the key handling and\n * reports where it landed, so activeId stays yours to hold.\n */\n onActiveChange?: (id: string) => void;\n /** Called when a command is chosen. */\n onRun?: (id: string) => void;\n}"
57
+ ],
58
+ "subcomponents": [],
59
+ "parts": [],
60
+ "variants": {},
61
+ "defaultVariants": {},
62
+ "tokensUsed": [
63
+ "--cue-accent",
64
+ "--cue-border",
65
+ "--cue-fg-muted",
66
+ "--cue-fg-subtle",
67
+ "--cue-radius-control",
68
+ "--cue-radius-overlay",
69
+ "--cue-radius-surface",
70
+ "--cue-surface-1",
71
+ "--cue-surface-2",
72
+ "--cue-text-body",
73
+ "--cue-text-ui"
74
+ ],
75
+ "summary": "Everything the app can do, one keystroke away and grouped by where it acts.",
76
+ "examples": [
77
+ {
78
+ "title": "Usage",
79
+ "code": "import { CommandPalette } from \"@cueplusplus/ui/elements\";\n\n<CommandPalette\n commands={commands}\n query={query}\n activeId={activeId}\n onQueryChange={setQuery}\n onRun={run}\n/>",
80
+ "language": "tsx"
81
+ }
82
+ ],
83
+ "status": "todo-docs",
84
+ "url": "/docs/components/elements-command-palette",
85
+ "mdUrl": "/docs/components/elements-command-palette.md",
86
+ "jsonUrl": "/r/components/elements-command-palette.json",
87
+ "specimens": [
88
+ {
89
+ "title": "ElementsCommandPalette",
90
+ "group": "elements-composer",
91
+ "components": [
92
+ "ElementsCommandPalette"
93
+ ],
94
+ "code": "<Specimens>\n <Specimen label=\"everything\" wide>\n <ElementsCommandPalette\n commands={PALETTE}\n query={query}\n activeId={activeCommand}\n onQueryChange={setQuery}\n onActiveChange={setActiveCommand}\n onRun={setActiveCommand}\n />\n </Specimen>\n <Specimen label=\"filtered to one group\" wide>\n <ElementsCommandPalette commands={PALETTE} query=\"patch\" activeId=\"patch\" />\n </Specimen>\n <Specimen label=\"nothing matches\" wide>\n <ElementsCommandPalette commands={PALETTE} query=\"haze\" activeId=\"patch\" />\n </Specimen>\n</Specimens>",
95
+ "note": "Everything the console can do, one keystroke away and grouped by where it acts. The element owns the arrow keys and reports where they landed, so the highlighted row stays the caller's state — and `aria-activedescendant` moves the highlight without moving focus, which is what keeps typing and walking the list the same gesture. Groups are derived from the commands and keep first-seen order, so the palette cannot be re-ordered by accident.",
96
+ "interaction": "the input is a combobox over a listbox; arrows walk, Enter runs, and a query that filters the active row out drops the descendant reference rather than pointing at nothing."
97
+ }
98
+ ],
99
+ "todo": true
100
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "ElementsComposer",
3
+ "slug": "elements-composer",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "The unified input: attachments, commands, mentions, models, voice, and context in\none surface.",
11
+ "props": [],
12
+ "typeReferences": [
13
+ "ComponentProps<\"div\">"
14
+ ],
15
+ "subcomponents": [],
16
+ "parts": [],
17
+ "variants": {},
18
+ "defaultVariants": {},
19
+ "tokensUsed": [
20
+ "--cue-accent",
21
+ "--cue-danger",
22
+ "--cue-fg",
23
+ "--cue-fg-muted",
24
+ "--cue-fg-subtle",
25
+ "--cue-font-mono",
26
+ "--cue-ok",
27
+ "--cue-radius-control",
28
+ "--cue-radius-overlay",
29
+ "--cue-radius-surface",
30
+ "--cue-stream",
31
+ "--cue-surface-1",
32
+ "--cue-surface-2",
33
+ "--cue-surface-3",
34
+ "--cue-text-body",
35
+ "--cue-text-emphasis",
36
+ "--cue-text-label",
37
+ "--cue-text-micro",
38
+ "--cue-text-ui"
39
+ ],
40
+ "summary": "The unified input: attachments, commands, mentions, models, voice, and context in one surface.",
41
+ "examples": [
42
+ {
43
+ "title": "Usage",
44
+ "code": "import {\n Composer,\n ComposerActions,\n ComposerAttachButton,\n ComposerBar,\n ComposerInput,\n ComposerSend,\n ComposerToolbar,\n} from \"@cueplusplus/ui/elements\";\n\n<Composer>\n <ComposerBar>\n <ComposerInput value={value} placeholder=\"Ask anything\" onChange={onChange} onSubmit={send} />\n <ComposerToolbar>\n <ComposerActions><ComposerAttachButton onClick={pick} /></ComposerActions>\n <ComposerActions><ComposerSend streaming={false} idle={!value} onClick={send} /></ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n</Composer>",
45
+ "language": "tsx"
46
+ }
47
+ ],
48
+ "status": "todo-docs",
49
+ "url": "/docs/components/elements-composer",
50
+ "mdUrl": "/docs/components/elements-composer.md",
51
+ "jsonUrl": "/r/components/elements-composer.json",
52
+ "specimens": [
53
+ {
54
+ "title": "ElementsComposer / ComposerBar / ComposerInput / ComposerToolbar",
55
+ "group": "elements-composer",
56
+ "components": [
57
+ "ElementsComposer",
58
+ "ComposerBar",
59
+ "ComposerInput",
60
+ "ComposerToolbar",
61
+ "ComposerActions",
62
+ "ComposerAttachButton",
63
+ "ComposerSend"
64
+ ],
65
+ "code": "<Specimens>\n <Specimen label=\"empty\" wide>\n <ElementsComposer>\n <ComposerBar>\n <ComposerInput\n aria-label=\"Ask about the rig\"\n value=\"\"\n placeholder=\"Ask about the rig\"\n readOnly\n />\n <ComposerToolbar>\n <ComposerActions>\n <ComposerAttachButton onClick={() => undefined} />\n </ComposerActions>\n <ComposerActions>\n <ComposerSend streaming={false} idle />\n </ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n </ElementsComposer>\n </Specimen>\n\n <Specimen label=\"typed\" wide>\n <ElementsComposer>\n <ComposerBar>\n <ComposerInput\n aria-label=\"Ask about the rig\"\n value={message}\n placeholder=\"Ask about the rig\"\n onChange={(event) => setMessage(event.target.value)}\n onSubmit={() => setMessage(\"\")}\n />\n <ComposerToolbar>\n <ComposerActions>\n <ComposerAttachButton onClick={() => undefined} />\n <ComposerModelTrigger model={model} open={false} />\n </ComposerActions>\n <ComposerActions>\n <ComposerContext usage={USAGE} />\n <ComposerVoiceButton active={false} />\n <ComposerSend streaming={false} idle={message === \"\"} />\n </ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n </ElementsComposer>\n </Specimen>\n\n <Specimen label=\"streaming, file over the bar\" wide>\n <ElementsComposer>\n <ComposerBar dragActive>\n <ComposerInput\n aria-label=\"Ask about the rig\"\n value=\"\"\n placeholder=\"Drop the truss drawing here\"\n readOnly\n />\n <ComposerToolbar>\n <ComposerActions>\n <ComposerAttachButton />\n </ComposerActions>\n <ComposerActions>\n <ComposerSend streaming idle={false} />\n </ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n </ElementsComposer>\n </Specimen>\n</Specimens>",
66
+ "note": "The composer assembled from its parts, which is the only way it exists — there is no root that configures it. `ElementsComposer` positions, `ComposerBar` is the paper, and everything between the input and the send button is a facet you either compose in or leave out, so a composer with no attachments carries no attachment code. `ComposerSend` is dim while the input is empty and becomes a stop square while the model is streaming; it is the same button either way, because there is never a moment when both are wanted.",
67
+ "interaction": "`ComposerAttachButton` disables itself when no handler is given rather than rendering a control that does nothing. The send button is labelled by state — `Send message` or `Stop generating` — so the swap is announced and not just drawn."
68
+ }
69
+ ],
70
+ "todo": true
71
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "ElementsDataTable",
3
+ "slug": "elements-data-table",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "A small comparison table the model can answer with directly.",
9
+ "props": [
10
+ {
11
+ "name": "rows",
12
+ "type": "readonly ModelUsage[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "Table rows with model name, context window, and cost."
16
+ },
17
+ {
18
+ "name": "cycle",
19
+ "type": "number",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "Identity key that remounts the body so row entrance can replay."
23
+ }
24
+ ],
25
+ "typeReferences": [
26
+ "Omit<\n ComponentProps<\"div\">,\n \"children\"\n>"
27
+ ],
28
+ "subcomponents": [],
29
+ "parts": [],
30
+ "variants": {},
31
+ "defaultVariants": {},
32
+ "tokensUsed": [
33
+ "--cue-fg",
34
+ "--cue-fg-muted",
35
+ "--cue-fg-subtle",
36
+ "--cue-radius-control",
37
+ "--cue-radius-overlay",
38
+ "--cue-surface-1",
39
+ "--cue-surface-2",
40
+ "--cue-text-body",
41
+ "--cue-text-micro"
42
+ ],
43
+ "summary": "A small comparison table the model can answer with directly.",
44
+ "examples": [
45
+ {
46
+ "title": "Usage",
47
+ "code": "import { DataTable } from \"@cueplusplus/ui/elements\";\n\n<DataTable\n rows={[{ name: \"Sonnet\", context: \"200k\", cost: \"$3\" }]}\n cycle={0}\n/>",
48
+ "language": "tsx"
49
+ }
50
+ ],
51
+ "status": "todo-docs",
52
+ "url": "/docs/components/elements-data-table",
53
+ "mdUrl": "/docs/components/elements-data-table.md",
54
+ "jsonUrl": "/r/components/elements-data-table.json",
55
+ "specimens": [
56
+ {
57
+ "title": "ElementsDataTable",
58
+ "group": "elements-knowledge",
59
+ "components": [
60
+ "ElementsDataTable"
61
+ ],
62
+ "code": "<Specimens>\n <Specimen label=\"what the research cost\" wide>\n <ElementsDataTable rows={USAGE} cycle={0} />\n </Specimen>\n <Specimen label=\"one row\" wide>\n <ElementsDataTable rows={USAGE.slice(0, 1)} cycle={1} />\n </Specimen>\n</Specimens>",
63
+ "note": "A small table the model can answer with directly — three columns, no sorting, no virtualisation, no header menu. It is `ElementsDataTable` because the package already sells a real one at `@cueplusplus/ui/instruments`: that one is a data grid, this one is a paragraph shaped like a grid, and the rename keeps a consumer from reaching for the wrong one.",
64
+ "interaction": "none. `cycle` remounts the body, so a new answer's rows stagger in rather than mutating in place."
65
+ }
66
+ ],
67
+ "todo": true
68
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "ElementsTimeline",
3
+ "slug": "elements-timeline",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "Events on a time axis, with what already happened and what is still coming.",
9
+ "props": [
10
+ {
11
+ "name": "events",
12
+ "type": "readonly TimelineEvent[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "Events in chronological order, past and scheduled together."
16
+ },
17
+ {
18
+ "name": "visibleCount",
19
+ "type": "number",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "How many events have been resolved."
23
+ }
24
+ ],
25
+ "typeReferences": [
26
+ "Omit<ComponentProps<\"div\">, \"children\" | \"events\" | \"visibleCount\"> & {\n /** Events in chronological order, past and scheduled together. */\n events: readonly TimelineEvent[];\n /** How many events have been resolved. */\n visibleCount: number;\n}"
27
+ ],
28
+ "subcomponents": [],
29
+ "parts": [],
30
+ "variants": {},
31
+ "defaultVariants": {},
32
+ "tokensUsed": [
33
+ "--cue-border-strong",
34
+ "--cue-fg",
35
+ "--cue-fg-muted",
36
+ "--cue-fg-subtle",
37
+ "--cue-radius-overlay",
38
+ "--cue-stream",
39
+ "--cue-surface-2",
40
+ "--cue-surface-3",
41
+ "--cue-text-body",
42
+ "--cue-text-ui"
43
+ ],
44
+ "summary": "Events on a time axis, with what already happened and what is still coming.",
45
+ "examples": [
46
+ {
47
+ "title": "Usage",
48
+ "code": "import { Timeline } from \"@cueplusplus/ui/elements\";\n\n<Timeline events={events} visibleCount={events.length} />",
49
+ "language": "tsx"
50
+ }
51
+ ],
52
+ "status": "todo-docs",
53
+ "url": "/docs/components/elements-timeline",
54
+ "mdUrl": "/docs/components/elements-timeline.md",
55
+ "jsonUrl": "/r/components/elements-timeline.json",
56
+ "specimens": [
57
+ {
58
+ "title": "ElementsTimeline",
59
+ "group": "elements-agents",
60
+ "components": [
61
+ "ElementsTimeline"
62
+ ],
63
+ "code": "<Specimens>\n <Specimen label=\"past, now and scheduled\" wide>\n <ElementsTimeline events={EVENTS} visibleCount={EVENTS.length} />\n </Specimen>\n <Specimen label=\"two events in\" wide>\n <ElementsTimeline events={EVENTS} visibleCount={2} />\n </Specimen>\n</Specimens>",
64
+ "note": "Events on one axis, with what already happened and what is still coming in the same list — `past`, `now` and `future` are one union, so a schedule and a history are the same component. It publishes as `ElementsTimeline` because cue already sells a `Timeline`; the spec asked for `ToolTimeline`, which turned out to be the next bench's name.",
65
+ "interaction": "none. The now marker is the only one that pulses, and it holds still for a reader who asked for less motion."
66
+ }
67
+ ],
68
+ "todo": true
69
+ }