@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,105 @@
1
+ {
2
+ "name": "QuoteReply",
3
+ "slug": "quote-reply",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "Select a phrase in an answer and a toolbar offers to quote, explain, or rewrite it.",
11
+ "props": [
12
+ {
13
+ "name": "before",
14
+ "type": "string",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "Text preceding the selection."
18
+ },
19
+ {
20
+ "name": "selection",
21
+ "type": "string",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "The highlighted run the actions apply to."
25
+ },
26
+ {
27
+ "name": "after",
28
+ "type": "string",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "Text following the selection."
32
+ },
33
+ {
34
+ "name": "actions",
35
+ "type": "readonly QuoteAction[]",
36
+ "required": true,
37
+ "defaultValue": null,
38
+ "description": "What the toolbar offers. Each action names one of the three built-in icons."
39
+ },
40
+ {
41
+ "name": "toolbarVisible",
42
+ "type": "boolean",
43
+ "required": true,
44
+ "defaultValue": null,
45
+ "description": "Whether the floating toolbar is showing. Drive it from your own selection handler."
46
+ },
47
+ {
48
+ "name": "quoted",
49
+ "type": "string",
50
+ "required": false,
51
+ "defaultValue": null,
52
+ "description": "Once quoted, the text carried into the composer, shown under a rule."
53
+ },
54
+ {
55
+ "name": "onAction",
56
+ "type": "((key: string) => void)",
57
+ "required": false,
58
+ "defaultValue": null,
59
+ "description": "Called with the key of the action that was chosen."
60
+ }
61
+ ],
62
+ "typeReferences": [
63
+ "Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"before\"\n | \"selection\"\n | \"after\"\n | \"actions\"\n | \"toolbarVisible\"\n | \"quoted\"\n | \"onAction\"\n> & {\n /** Text preceding the selection. */\n before: string;\n /** The highlighted run the actions apply to. */\n selection: string;\n /** Text following the selection. */\n after: string;\n /** What the toolbar offers. Each action names one of the three built-in icons. */\n actions: readonly QuoteAction[];\n /** Whether the floating toolbar is showing. Drive it from your own selection handler. */\n toolbarVisible: boolean;\n /** Once quoted, the text carried into the composer, shown under a rule. */\n quoted?: string;\n /** Called with the key of the action that was chosen. */\n onAction?: (key: string) => void;\n}"
64
+ ],
65
+ "subcomponents": [],
66
+ "parts": [],
67
+ "variants": {},
68
+ "defaultVariants": {},
69
+ "tokensUsed": [
70
+ "--cue-border-strong",
71
+ "--cue-fg",
72
+ "--cue-fg-muted",
73
+ "--cue-fg-subtle",
74
+ "--cue-radius-control",
75
+ "--cue-stream",
76
+ "--cue-surface-2",
77
+ "--cue-text-body",
78
+ "--cue-text-ui"
79
+ ],
80
+ "summary": "Select a phrase in an answer and a toolbar offers to quote, explain, or rewrite it.",
81
+ "examples": [
82
+ {
83
+ "title": "Usage",
84
+ "code": "import { QuoteReply } from \"@cueplusplus/ui/elements\";\n\n<QuoteReply\n before=\"The regression happens because \"\n selection=\"the converter drops parts with no text\"\n after=\", so the turn never lands.\"\n actions={actions}\n toolbarVisible\n onAction={handle}\n/>",
85
+ "language": "tsx"
86
+ }
87
+ ],
88
+ "status": "todo-docs",
89
+ "url": "/docs/components/quote-reply",
90
+ "mdUrl": "/docs/components/quote-reply.md",
91
+ "jsonUrl": "/r/components/quote-reply.json",
92
+ "specimens": [
93
+ {
94
+ "title": "QuoteReply",
95
+ "group": "elements-thread",
96
+ "components": [
97
+ "QuoteReply"
98
+ ],
99
+ "code": "<Specimens>\n <Specimen label=\"toolbar up\" wide>\n <QuoteReply\n before=\"Patched 6 fixtures on \"\n selection=\"universe 3, channels 1 to 48\"\n after=\". Cue 1 is untouched.\"\n actions={QUOTE_ACTIONS}\n toolbarVisible\n />\n </Specimen>\n <Specimen label=\"quoted\" wide>\n <QuoteReply\n before=\"Patched 6 fixtures on \"\n selection=\"universe 3, channels 1 to 48\"\n after=\". Cue 1 is untouched.\"\n actions={QUOTE_ACTIONS}\n toolbarVisible={false}\n quoted=\"universe 3, channels 1 to 48\"\n />\n </Specimen>\n</Specimens>",
100
+ "note": "Select a phrase in an answer and act on that phrase rather than the whole turn. The selection stays lit in the streaming hue while the toolbar is up, and what you quoted is repeated under the composer so the next turn's subject is never in doubt.",
101
+ "interaction": "the toolbar's row is reserved whether or not it is showing, so nothing below it jumps when a selection appears. Each action is a labelled button."
102
+ }
103
+ ],
104
+ "todo": true
105
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "RadioGroup",
3
+ "slug": "radio-group",
4
+ "group": "forms",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "One-of-many selection: a roving-tabindex group of {@link Radio}s sharing a\nsingle value.\n\nArrow keys move *and* select, per the WAI-ARIA radio group pattern that Base\nUI implements — so the whole group is one tab stop, which is what keeps a\ndense settings panel navigable.",
9
+ "props": [
10
+ {
11
+ "name": "className",
12
+ "type": "string",
13
+ "required": false,
14
+ "defaultValue": null,
15
+ "description": "Extra classes, merged over the stack defaults."
16
+ },
17
+ {
18
+ "name": "orientation",
19
+ "type": "\"horizontal\" | \"vertical\"",
20
+ "required": false,
21
+ "defaultValue": "vertical",
22
+ "description": "Lay the options out in a column (default) or a row."
23
+ }
24
+ ],
25
+ "typeReferences": [
26
+ "Omit<BaseRadioGroup.Props, \"className\">"
27
+ ],
28
+ "subcomponents": [],
29
+ "parts": [],
30
+ "variants": {},
31
+ "defaultVariants": {},
32
+ "tokensUsed": [
33
+ "--cue-accent",
34
+ "--cue-border",
35
+ "--cue-border-strong",
36
+ "--cue-danger",
37
+ "--cue-fg-muted",
38
+ "--cue-font-mono",
39
+ "--cue-icon-md",
40
+ "--cue-icon-sm",
41
+ "--cue-space-2",
42
+ "--cue-space-3",
43
+ "--cue-space-5",
44
+ "--cue-sunken",
45
+ "--cue-text-ui"
46
+ ],
47
+ "summary": "One-of-many selection: a roving-tabindex group of {@link Radio}s sharing a single value.",
48
+ "examples": [
49
+ {
50
+ "title": "Usage",
51
+ "code": "<RadioGroup aria-label=\"Blend mode\" value={mode} onValueChange={setMode}>\n <Radio value=\"htp\" label=\"HTP\" />\n <Radio value=\"ltp\" label=\"LTP\" />\n</RadioGroup>",
52
+ "language": "tsx"
53
+ }
54
+ ],
55
+ "status": "todo-docs",
56
+ "url": "/docs/components/radio-group",
57
+ "mdUrl": "/docs/components/radio-group.md",
58
+ "jsonUrl": "/r/components/radio-group.json",
59
+ "specimens": [
60
+ {
61
+ "title": "RadioGroup",
62
+ "group": "forms",
63
+ "components": [
64
+ "RadioGroup",
65
+ "Radio"
66
+ ],
67
+ "code": "<div className=\"grid w-full gap-(--cue-space-5) lg:grid-cols-2\">\n <RadioGroup aria-label=\"Blend mode\" defaultValue=\"htp\">\n {BLEND_MODES.map((option) => (\n <Radio key={option.value} value={option.value} label={option.label} />\n ))}\n </RadioGroup>\n <RadioGroup aria-label=\"Blend mode, horizontal\" defaultValue=\"ltp\" orientation=\"horizontal\">\n {BLEND_MODES.map((option) => (\n <Radio key={option.value} value={option.value} label={option.label} />\n ))}\n <Radio value=\"off\" label=\"Off\" disabled />\n </RadioGroup>\n</div>",
68
+ "note": "One choice out of a short set, in either orientation.",
69
+ "interaction": "arrow keys move the selection, and the group is one tab stop."
70
+ }
71
+ ],
72
+ "todo": true
73
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "Radio",
3
+ "slug": "radio",
4
+ "group": "forms",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "One option inside a {@link RadioGroup}.\n\nRound, to say \"exactly one\" the way a square {@link Checkbox } says \"any\nnumber\". Checked draws an accent rim with an accent core rather than a solid\nfill, so the selected option stays legible against the sunken field colour on\nevery theme.",
9
+ "props": [
10
+ {
11
+ "name": "label",
12
+ "type": "ReactNode",
13
+ "required": false,
14
+ "defaultValue": null,
15
+ "description": "Inline label rendered beside the dot and wrapped with it in a `<label>`, so\nthe text is both the accessible name and part of the hit target."
16
+ },
17
+ {
18
+ "name": "className",
19
+ "type": "string",
20
+ "required": false,
21
+ "defaultValue": null,
22
+ "description": "Extra classes, merged over the dot defaults."
23
+ },
24
+ {
25
+ "name": "size",
26
+ "type": "\"sm\" | \"md\"",
27
+ "required": false,
28
+ "defaultValue": "md",
29
+ "description": "Rung of the density icon ladder for the dot. Defaults to `\"md\"`."
30
+ }
31
+ ],
32
+ "typeReferences": [
33
+ "Omit<BaseRadio.Root.Props, \"className\">"
34
+ ],
35
+ "subcomponents": [],
36
+ "parts": [],
37
+ "variants": {},
38
+ "defaultVariants": {},
39
+ "tokensUsed": [
40
+ "--cue-accent",
41
+ "--cue-border",
42
+ "--cue-border-strong",
43
+ "--cue-danger",
44
+ "--cue-fg-muted",
45
+ "--cue-font-mono",
46
+ "--cue-icon-md",
47
+ "--cue-icon-sm",
48
+ "--cue-space-2",
49
+ "--cue-space-3",
50
+ "--cue-space-5",
51
+ "--cue-sunken",
52
+ "--cue-text-ui"
53
+ ],
54
+ "summary": "One option inside a {@link RadioGroup}.",
55
+ "examples": [
56
+ {
57
+ "title": "Usage",
58
+ "code": "<Radio value=\"htp\" label=\"Highest takes precedence\" />",
59
+ "language": "tsx"
60
+ }
61
+ ],
62
+ "status": "todo-docs",
63
+ "url": "/docs/components/radio",
64
+ "mdUrl": "/docs/components/radio.md",
65
+ "jsonUrl": "/r/components/radio.json",
66
+ "specimens": [
67
+ {
68
+ "title": "RadioGroup",
69
+ "group": "forms",
70
+ "components": [
71
+ "RadioGroup",
72
+ "Radio"
73
+ ],
74
+ "code": "<div className=\"grid w-full gap-(--cue-space-5) lg:grid-cols-2\">\n <RadioGroup aria-label=\"Blend mode\" defaultValue=\"htp\">\n {BLEND_MODES.map((option) => (\n <Radio key={option.value} value={option.value} label={option.label} />\n ))}\n </RadioGroup>\n <RadioGroup aria-label=\"Blend mode, horizontal\" defaultValue=\"ltp\" orientation=\"horizontal\">\n {BLEND_MODES.map((option) => (\n <Radio key={option.value} value={option.value} label={option.label} />\n ))}\n <Radio value=\"off\" label=\"Off\" disabled />\n </RadioGroup>\n</div>",
75
+ "note": "One choice out of a short set, in either orientation.",
76
+ "interaction": "arrow keys move the selection, and the group is one tab stop."
77
+ }
78
+ ],
79
+ "todo": true
80
+ }
@@ -0,0 +1,141 @@
1
+ {
2
+ "name": "Rating",
3
+ "slug": "rating",
4
+ "group": "forms",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "A 0–N rating, drawn as marks.\n\nBuilt as a **radio group**, not a row of buttons: exactly one value is in\neffect, arrow keys move between the options, and one Tab stop covers the whole\nwidget. A row of toggle buttons would put five stops in the tab order and\nannounce five unrelated controls.\n\nRead-only renders as a single `img` with the value in its name — an\nun-interactive control that still takes focus is a trap, and five disabled\nradios announce five things where one sentence will do.",
9
+ "props": [
10
+ {
11
+ "name": "value",
12
+ "type": "number",
13
+ "required": false,
14
+ "defaultValue": null,
15
+ "description": "The rating, `0`–`count`. Use with `onValueChange` for a controlled widget."
16
+ },
17
+ {
18
+ "name": "defaultValue",
19
+ "type": "number",
20
+ "required": false,
21
+ "defaultValue": "0",
22
+ "description": "Initial rating for an uncontrolled widget. Defaults to `0`."
23
+ },
24
+ {
25
+ "name": "onValueChange",
26
+ "type": "((value: number) => void)",
27
+ "required": false,
28
+ "defaultValue": null,
29
+ "description": "Called with the new rating; `0` means \"cleared\"."
30
+ },
31
+ {
32
+ "name": "count",
33
+ "type": "number",
34
+ "required": false,
35
+ "defaultValue": "5",
36
+ "description": "How many marks. Defaults to `5`."
37
+ },
38
+ {
39
+ "name": "size",
40
+ "type": "\"sm\" | \"md\" | \"lg\"",
41
+ "required": false,
42
+ "defaultValue": "md",
43
+ "description": "Rung of the icon ladder. Defaults to `\"md\"`."
44
+ },
45
+ {
46
+ "name": "allowClear",
47
+ "type": "boolean",
48
+ "required": false,
49
+ "defaultValue": "true",
50
+ "description": "Picking the current value clears it back to `0`. Defaults to `true` — a\nrating you cannot take back is a trap, and there is no other affordance for\n\"actually, no opinion\"."
51
+ },
52
+ {
53
+ "name": "readOnly",
54
+ "type": "boolean",
55
+ "required": false,
56
+ "defaultValue": "false",
57
+ "description": "Render a static readout with no controls."
58
+ },
59
+ {
60
+ "name": "disabled",
61
+ "type": "boolean",
62
+ "required": false,
63
+ "defaultValue": "false",
64
+ "description": "Grey the marks out and refuse interaction."
65
+ },
66
+ {
67
+ "name": "label",
68
+ "type": "string",
69
+ "required": false,
70
+ "defaultValue": null,
71
+ "description": "Accessible name for the group. Also the prefix of the read-only readout —\n`\"Signal quality: 4 of 5\"`. Synonym of `aria-label`, which wins if both are\ngiven."
72
+ },
73
+ {
74
+ "name": "aria-label",
75
+ "type": "string",
76
+ "required": false,
77
+ "defaultValue": null,
78
+ "description": "Accessible name for the group, for callers who prefer the ARIA spelling."
79
+ },
80
+ {
81
+ "name": "icon",
82
+ "type": "ElementType<any, keyof IntrinsicElements>",
83
+ "required": false,
84
+ "defaultValue": "StarGlyph",
85
+ "description": "The mark component. Defaults to a filled star."
86
+ },
87
+ {
88
+ "name": "markLabel",
89
+ "type": "((index: number, count: number) => string)",
90
+ "required": false,
91
+ "defaultValue": "(index, total) => `${index} of ${total}`",
92
+ "description": "Accessible name for mark `index` (1-based) of `count`. Defaults to\n``(index, count) => `${index} of ${count}` ``."
93
+ },
94
+ {
95
+ "name": "className",
96
+ "type": "string",
97
+ "required": false,
98
+ "defaultValue": null,
99
+ "description": "Extra classes for the group."
100
+ }
101
+ ],
102
+ "typeReferences": [
103
+ "Omit<React.ComponentPropsWithoutRef<\"div\">, \"onChange\" | \"defaultValue\">"
104
+ ],
105
+ "subcomponents": [],
106
+ "parts": [],
107
+ "variants": {},
108
+ "defaultVariants": {},
109
+ "tokensUsed": [
110
+ "--cue-accent",
111
+ "--cue-fg-subtle",
112
+ "--cue-icon-md",
113
+ "--cue-icon-sm",
114
+ "--cue-space-1"
115
+ ],
116
+ "summary": "A 0–N rating, drawn as marks.",
117
+ "examples": [
118
+ {
119
+ "title": "Usage",
120
+ "code": "<Rating label=\"Signal quality\" value={score} onValueChange={setScore} />\n<Rating aria-label=\"Signal quality\" value={4} readOnly size=\"sm\" />",
121
+ "language": "tsx"
122
+ }
123
+ ],
124
+ "status": "todo-docs",
125
+ "url": "/docs/components/rating",
126
+ "mdUrl": "/docs/components/rating.md",
127
+ "jsonUrl": "/r/components/rating.json",
128
+ "specimens": [
129
+ {
130
+ "title": "Rating",
131
+ "group": "forms",
132
+ "components": [
133
+ "Rating"
134
+ ],
135
+ "code": "<Specimens>\n <Specimen label=\"default\">\n <Rating label=\"Rig condition\" defaultValue={4} />\n </Specimen>\n <Specimen label=\"clearable\">\n <Rating label=\"Rig condition, clearable\" defaultValue={3} allowClear />\n </Specimen>\n <Specimen label=\"read-only\">\n <Rating label=\"Rig condition, read-only\" value={5} readOnly />\n </Specimen>\n <Specimen label=\"disabled\">\n <Rating label=\"Rig condition, disabled\" defaultValue={2} disabled />\n </Specimen>\n</Specimens>",
136
+ "note": "A radio group of marks, with the value spoken rather than implied by how many glyphs are filled.",
137
+ "interaction": "arrow keys move; clicking the current mark clears it when `allowClear` is on."
138
+ }
139
+ ],
140
+ "todo": true
141
+ }
@@ -0,0 +1,111 @@
1
+ {
2
+ "name": "ReadAloud",
3
+ "slug": "read-aloud",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "An answer played back, the spoken word lit as it goes, speed under your thumb.",
11
+ "props": [
12
+ {
13
+ "name": "words",
14
+ "type": "readonly string[]",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "The answer split into words, so the spoken one can be lit without re-parsing the\ntext."
18
+ },
19
+ {
20
+ "name": "spokenIndex",
21
+ "type": "number",
22
+ "required": true,
23
+ "defaultValue": null,
24
+ "description": "Index of the word being spoken. Everything before it dims, everything after stays\nwaiting, and an index outside the text speaks none of it."
25
+ },
26
+ {
27
+ "name": "playing",
28
+ "type": "boolean",
29
+ "required": true,
30
+ "defaultValue": null,
31
+ "description": "Swaps the transport button between play and pause."
32
+ },
33
+ {
34
+ "name": "rate",
35
+ "type": "number",
36
+ "required": true,
37
+ "defaultValue": null,
38
+ "description": "Playback speed, printed on the rate control."
39
+ },
40
+ {
41
+ "name": "elapsed",
42
+ "type": "string",
43
+ "required": true,
44
+ "defaultValue": null,
45
+ "description": "Pre-formatted elapsed time."
46
+ },
47
+ {
48
+ "name": "duration",
49
+ "type": "string",
50
+ "required": true,
51
+ "defaultValue": null,
52
+ "description": "Pre-formatted total duration."
53
+ },
54
+ {
55
+ "name": "onToggle",
56
+ "type": "(() => void)",
57
+ "required": false,
58
+ "defaultValue": null,
59
+ "description": "Called when playback is started or paused."
60
+ },
61
+ {
62
+ "name": "onRateChange",
63
+ "type": "(() => void)",
64
+ "required": false,
65
+ "defaultValue": null,
66
+ "description": "Called when the rate control is tapped; cycle the rate yourself."
67
+ }
68
+ ],
69
+ "typeReferences": [
70
+ "Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"words\"\n | \"spokenIndex\"\n | \"playing\"\n | \"rate\"\n | \"elapsed\"\n | \"duration\"\n | \"onToggle\"\n | \"onRateChange\"\n> & {\n /**\n * The answer split into words, so the spoken one can be lit without re-parsing the\n * text.\n */\n words: readonly string[];\n /**\n * Index of the word being spoken. Everything before it dims, everything after stays\n * waiting, and an index outside the text speaks none of it.\n */\n spokenIndex: number;\n /** Swaps the transport button between play and pause. */\n playing: boolean;\n /** Playback speed, printed on the rate control. */\n rate: number;\n /** Pre-formatted elapsed time. */\n elapsed: string;\n /** Pre-formatted total duration. */\n duration: string;\n /** Called when playback is started or paused. */\n onToggle?: () => void;\n /** Called when the rate control is tapped; cycle the rate yourself. */\n onRateChange?: () => void;\n}"
71
+ ],
72
+ "subcomponents": [],
73
+ "parts": [],
74
+ "variants": {},
75
+ "defaultVariants": {},
76
+ "tokensUsed": [
77
+ "--cue-fg",
78
+ "--cue-fg-muted",
79
+ "--cue-fg-subtle",
80
+ "--cue-radius-control",
81
+ "--cue-radius-overlay",
82
+ "--cue-stream",
83
+ "--cue-surface-2",
84
+ "--cue-text-body"
85
+ ],
86
+ "summary": "An answer played back, the spoken word lit as it goes, speed under your thumb.",
87
+ "examples": [
88
+ {
89
+ "title": "Usage",
90
+ "code": "import { ReadAloud } from \"@cueplusplus/ui/elements\";\n\n<ReadAloud\n words={words}\n spokenIndex={12}\n playing\n rate={1}\n elapsed=\"0:04\"\n duration=\"0:11\"\n onToggle={toggle}\n onRateChange={cycleRate}\n/>",
91
+ "language": "tsx"
92
+ }
93
+ ],
94
+ "status": "todo-docs",
95
+ "url": "/docs/components/read-aloud",
96
+ "mdUrl": "/docs/components/read-aloud.md",
97
+ "jsonUrl": "/r/components/read-aloud.json",
98
+ "specimens": [
99
+ {
100
+ "title": "ReadAloud",
101
+ "group": "elements-thread",
102
+ "components": [
103
+ "ReadAloud"
104
+ ],
105
+ "code": "<Specimens>\n <Specimen label=\"playing\" wide>\n <ReadAloud\n words={SPOKEN}\n spokenIndex={4}\n playing={playing}\n rate={rate}\n elapsed=\"0:06\"\n duration=\"0:14\"\n onToggle={() => setPlaying((current) => !current)}\n onRateChange={() => setRate((current) => (current === 2 ? 1 : current + 0.5))}\n />\n </Specimen>\n <Specimen label=\"paused at the start\" wide>\n <ReadAloud\n words={SPOKEN}\n spokenIndex={0}\n playing={false}\n rate={1}\n elapsed=\"0:00\"\n duration=\"0:14\"\n />\n </Specimen>\n</Specimens>",
106
+ "note": "An answer played back with the spoken word lit as it goes. Position is a word index the caller advances, not an audio element, so the same component drives a real voice, a replay, or this bench. Speed is one tap away because that is the control people actually reach for.",
107
+ "interaction": "play/pause and the speed chip are both named buttons, and the label says the current rate rather than just the glyph. The progress bar animates linearly, and not at all under reduced motion."
108
+ }
109
+ ],
110
+ "todo": true
111
+ }
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "ReasoningEffort",
3
+ "slug": "reasoning-effort",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "How hard to think, and how much of that budget the run actually spent.",
9
+ "props": [
10
+ {
11
+ "name": "levels",
12
+ "type": "readonly EffortLevel[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "Every tier on offer, each carrying its own token budget."
16
+ },
17
+ {
18
+ "name": "selectedKey",
19
+ "type": "string",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "Which tier is active. Its budget becomes the denominator."
23
+ },
24
+ {
25
+ "name": "spent",
26
+ "type": "number",
27
+ "required": true,
28
+ "defaultValue": null,
29
+ "description": "Thinking tokens used so far, filling the bar against the selected budget."
30
+ },
31
+ {
32
+ "name": "onSelect",
33
+ "type": "((key: string) => void)",
34
+ "required": false,
35
+ "defaultValue": null,
36
+ "description": "Called when a tier is picked."
37
+ }
38
+ ],
39
+ "typeReferences": [
40
+ "Omit<\n ComponentProps<\"div\">,\n \"children\" | \"levels\" | \"selectedKey\" | \"spent\" | \"onSelect\"\n> & {\n /** Every tier on offer, each carrying its own token budget. */\n levels: readonly EffortLevel[];\n /** Which tier is active. Its budget becomes the denominator. */\n selectedKey: string;\n /** Thinking tokens used so far, filling the bar against the selected budget. */\n spent: number;\n /** Called when a tier is picked. */\n onSelect?: (key: string) => void;\n}"
41
+ ],
42
+ "subcomponents": [],
43
+ "parts": [],
44
+ "variants": {},
45
+ "defaultVariants": {},
46
+ "tokensUsed": [
47
+ "--cue-bg",
48
+ "--cue-fg",
49
+ "--cue-fg-muted",
50
+ "--cue-fg-subtle",
51
+ "--cue-stream",
52
+ "--cue-surface-2",
53
+ "--cue-text-body",
54
+ "--cue-text-ui"
55
+ ],
56
+ "summary": "How hard to think, and how much of that budget the run actually spent.",
57
+ "examples": [
58
+ {
59
+ "title": "Usage",
60
+ "code": "import { ReasoningEffort } from \"@cueplusplus/ui/elements\";\n\n<ReasoningEffort\n levels={levels}\n selectedKey=\"high\"\n spent={5200}\n onSelect={setLevel}\n/>",
61
+ "language": "tsx"
62
+ }
63
+ ],
64
+ "status": "todo-docs",
65
+ "url": "/docs/components/reasoning-effort",
66
+ "mdUrl": "/docs/components/reasoning-effort.md",
67
+ "jsonUrl": "/r/components/reasoning-effort.json",
68
+ "specimens": [
69
+ {
70
+ "title": "ReasoningEffort",
71
+ "group": "elements-thread",
72
+ "components": [
73
+ "ReasoningEffort"
74
+ ],
75
+ "code": "<Specimens>\n <Specimen label=\"medium, a third spent\" wide>\n <ReasoningEffort\n levels={EFFORT}\n selectedKey={effort}\n spent={2841}\n onSelect={setEffort}\n />\n </Specimen>\n <Specimen label=\"low, over its rung\" wide>\n <ReasoningEffort levels={EFFORT} selectedKey=\"low\" spent={2048} />\n </Specimen>\n</Specimens>",
76
+ "note": "How hard to think, and how much of that budget the run actually spent. The segmented control is the choice; the hairline under it is the consequence, and it moves when you change rungs because a bigger budget makes the same spend a smaller fraction.",
77
+ "interaction": "each segment is a button carrying aria-pressed. The meter animates its width rather than jumping, and holds still for a reader who asked for less motion."
78
+ }
79
+ ],
80
+ "todo": true
81
+ }