@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,113 @@
1
+ {
2
+ "name": "TwoStepButton",
3
+ "slug": "two-step-button",
4
+ "group": "instruments",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "Arm, then confirm: a destructive action that takes two deliberate presses.\n\nThe most-reused interaction in the portfolio (fifteen call sites, three\nhand-rolled implementations) and the right shape for a destructive action\nthat is *routine* — deleting a cue, clearing a patch. A modal\n`AlertDialog` is the right shape for a rare and expensive one; putting a\ndialog in front of an action people take twenty times an hour just teaches\nthem to dismiss dialogs.\n\nFour ways out, because an armed button left lying around is a trap: Cancel,\nEscape, moving focus away, and a timeout. Focus lands on **Cancel** when the\npair arms, never on the destructive half — the same ruling as a destructive\ndialog's default button, and it means a stuck Enter key cannot walk through\nboth steps.",
9
+ "props": [
10
+ {
11
+ "name": "onConfirm",
12
+ "type": "() => void",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "Fired once, when the *second* press lands."
16
+ },
17
+ {
18
+ "name": "children",
19
+ "type": "ReactNode",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "The idle label — name the action, not the button (\"Delete rig\", not \"Delete\")."
23
+ },
24
+ {
25
+ "name": "confirmLabel",
26
+ "type": "ReactNode",
27
+ "required": false,
28
+ "defaultValue": "Confirm",
29
+ "description": "Label on the armed half. Defaults to `\"Confirm\"`."
30
+ },
31
+ {
32
+ "name": "cancelLabel",
33
+ "type": "ReactNode",
34
+ "required": false,
35
+ "defaultValue": "Cancel",
36
+ "description": "Label on the escape hatch. Defaults to `\"Cancel\"`."
37
+ },
38
+ {
39
+ "name": "tone",
40
+ "type": "\"danger\" | \"warn\"",
41
+ "required": false,
42
+ "defaultValue": "danger",
43
+ "description": "How severe this is. Defaults to `\"danger\"`."
44
+ },
45
+ {
46
+ "name": "timeout",
47
+ "type": "number",
48
+ "required": false,
49
+ "defaultValue": "4000",
50
+ "description": "ms before an untouched armed state disarms itself. `0` disables. Defaults to `4000`."
51
+ },
52
+ {
53
+ "name": "onArmedChange",
54
+ "type": "((armed: boolean) => void)",
55
+ "required": false,
56
+ "defaultValue": null,
57
+ "description": "Called with the new armed state on every arm and disarm."
58
+ },
59
+ {
60
+ "name": "render",
61
+ "type": "RenderProp<Record<string, unknown>>",
62
+ "required": false,
63
+ "defaultValue": null,
64
+ "description": "Replace the rendered element (Base UI render prop). Accepts an element —\n`render={<a href=\"/x\" />}` — or a function returning one. When set, the\ndefault `type=\"button\"` is dropped so non-button elements stay valid."
65
+ },
66
+ {
67
+ "name": "icon",
68
+ "type": "ElementType<any, keyof IntrinsicElements>",
69
+ "required": false,
70
+ "defaultValue": null,
71
+ "description": "Optional leading icon component (e.g. a lucide icon). Rendered\n`aria-hidden` and sized to the density icon token, so it tracks the density\nlevel without the caller passing a pixel size."
72
+ }
73
+ ],
74
+ "typeReferences": [
75
+ "Omit<ButtonProps, \"onClick\" | \"variant\" | \"onConfirm\" | \"children\">"
76
+ ],
77
+ "subcomponents": [],
78
+ "parts": [],
79
+ "variants": {},
80
+ "defaultVariants": {},
81
+ "tokensUsed": [
82
+ "--cue-danger",
83
+ "--cue-danger-fg",
84
+ "--cue-space-2",
85
+ "--cue-warn",
86
+ "--cue-warn-fg"
87
+ ],
88
+ "summary": "Arm, then confirm: a destructive action that takes two deliberate presses.",
89
+ "examples": [
90
+ {
91
+ "title": "Usage",
92
+ "code": "<TwoStepButton onConfirm={() => deleteRig(id)}>Delete rig</TwoStepButton>\n<TwoStepButton tone=\"warn\" timeout={0} confirmLabel=\"Reset it\" onConfirm={reset}>\n Reset patch\n</TwoStepButton>",
93
+ "language": "tsx"
94
+ }
95
+ ],
96
+ "status": "todo-docs",
97
+ "url": "/docs/components/two-step-button",
98
+ "mdUrl": "/docs/components/two-step-button.md",
99
+ "jsonUrl": "/r/components/two-step-button.json",
100
+ "specimens": [
101
+ {
102
+ "title": "TwoStepButton",
103
+ "group": "instruments",
104
+ "components": [
105
+ "TwoStepButton"
106
+ ],
107
+ "code": "<Specimens>\n <Specimen label=\"danger\">\n <TwoStepButton\n tone=\"danger\"\n onConfirm={() => setConfirmed((count) => count + 1)}\n confirmLabel={COPY.destructive.action}\n >\n {COPY.destructive.action}\n </TwoStepButton>\n </Specimen>\n <Specimen label=\"warn\">\n <TwoStepButton tone=\"warn\" onConfirm={() => setConfirmed((count) => count + 1)}>\n Reset patch\n </TwoStepButton>\n </Specimen>\n <Specimen label=\"short timeout\">\n <TwoStepButton timeout={2000} onConfirm={() => setConfirmed((count) => count + 1)}>\n Unpatch all\n </TwoStepButton>\n </Specimen>\n <Specimen label=\"disabled\">\n <TwoStepButton disabled onConfirm={() => {}}>\n Unpatch all\n </TwoStepButton>\n </Specimen>\n <Specimen label=\"confirmed\">\n <Chip tone={confirmed === 0 ? \"neutral\" : \"ok\"}>{confirmed} confirmed</Chip>\n </Specimen>\n</Specimens>",
108
+ "note": "Arm, then confirm. The portfolio's most-reused interaction, unified from three upstream implementations.",
109
+ "interaction": "Escape, blur and the timeout all disarm; the armed state shows a visible Cancel next to a tone-solid confirm."
110
+ }
111
+ ],
112
+ "todo": true
113
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "TypingIndicator",
3
+ "slug": "typing-indicator",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "The classic three dots, tuned to read as presence rather than noise.",
9
+ "props": [
10
+ {
11
+ "name": "variant",
12
+ "type": "\"bubble\" | \"bare\"",
13
+ "required": false,
14
+ "defaultValue": "bubble",
15
+ "description": "bubble wraps the dots in a pill; bare renders only the three dots."
16
+ }
17
+ ],
18
+ "typeReferences": [
19
+ "Omit<\n ComponentProps<\"div\">,\n \"children\" | \"variant\" | \"role\" | \"aria-label\"\n> & {\n /** bubble wraps the dots in a pill; bare renders only the three dots. */\n variant?: \"bubble\" | \"bare\";\n}"
20
+ ],
21
+ "subcomponents": [],
22
+ "parts": [],
23
+ "variants": {},
24
+ "defaultVariants": {},
25
+ "tokensUsed": [
26
+ "--cue-surface-3"
27
+ ],
28
+ "summary": "The classic three dots, tuned to read as presence rather than noise.",
29
+ "examples": [
30
+ {
31
+ "title": "Usage",
32
+ "code": "import { TypingIndicator } from \"@cueplusplus/ui/elements\";\n\n<TypingIndicator />",
33
+ "language": "tsx"
34
+ }
35
+ ],
36
+ "status": "todo-docs",
37
+ "url": "/docs/components/typing-indicator",
38
+ "mdUrl": "/docs/components/typing-indicator.md",
39
+ "jsonUrl": "/r/components/typing-indicator.json",
40
+ "specimens": [
41
+ {
42
+ "title": "TypingIndicator",
43
+ "group": "elements-thread",
44
+ "components": [
45
+ "TypingIndicator"
46
+ ],
47
+ "code": "<Specimens>\n <Specimen label=\"bubble\">\n <TypingIndicator />\n </Specimen>\n <Specimen label=\"bare\">\n <TypingIndicator variant=\"bare\" />\n </Specimen>\n</Specimens>",
48
+ "note": "The gap between sending and the first token. Three dots that read as presence rather than noise — bare when the transcript has no bubbles, in a pill when it does.",
49
+ "interaction": "none. Both variants carry role='status' and a name, so the wait is announced once instead of animating silently."
50
+ }
51
+ ],
52
+ "todo": true
53
+ }
@@ -0,0 +1,127 @@
1
+ {
2
+ "name": "UniverseGrid",
3
+ "slug": "universe-grid",
4
+ "group": "dmx",
5
+ "importPath": "@cueplusplus/ui/dmx",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "A universe as 512 slots of occupancy: who holds what, and where two fixtures\nwere given the same address.\n\nPorted from stagetool's patching panel, which is the only audited product with\na real patch model behind it. What it draws is deliberately not a table:\n\n- **Position is the address.** A block's left edge *is* channel `start`, so the\n shape of a patch — the gaps, the drift, the fixture that starts at 497 —\n reads without anyone counting.\n- **A one-channel fixture is still visible.** Blocks have a two-pixel floor,\n which is the whole reason the bar can honestly claim to show everything\n patched.\n- **A conflict is drawn twice.** Both offending blocks get a danger ring *and*\n the contested slots get a band, because \"these two overlap\" and \"here is\n where\" are two different questions.\n\nAccessibility follows the `GroupBar` rule: colour is never the only channel.\nWithout `onSelect` the bar is one `role=\"img\"` whose name spells the whole\npatch out; with it, each block becomes a named button and the bar becomes a\ngroup.",
9
+ "props": [
10
+ {
11
+ "name": "allocations",
12
+ "type": "readonly DmxAllocation[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "The patch. Order is display order; overlaps are found, not assumed away."
16
+ },
17
+ {
18
+ "name": "label",
19
+ "type": "string",
20
+ "required": false,
21
+ "defaultValue": null,
22
+ "description": "Which universe this is. Names the graphic; also the group label when selectable."
23
+ },
24
+ {
25
+ "name": "slots",
26
+ "type": "number",
27
+ "required": false,
28
+ "defaultValue": "512",
29
+ "description": "Frame length. Defaults to a full universe of 512."
30
+ },
31
+ {
32
+ "name": "height",
33
+ "type": "number",
34
+ "required": false,
35
+ "defaultValue": "18",
36
+ "description": "Bar height in px at the 16px root, emitted as `rem`. Defaults to `18`."
37
+ },
38
+ {
39
+ "name": "ruler",
40
+ "type": "boolean",
41
+ "required": false,
42
+ "defaultValue": "true",
43
+ "description": "Draw the address ruler. Defaults to `true`."
44
+ },
45
+ {
46
+ "name": "legend",
47
+ "type": "boolean",
48
+ "required": false,
49
+ "defaultValue": "true",
50
+ "description": "Draw the legend row. Defaults to `true`."
51
+ },
52
+ {
53
+ "name": "legendMax",
54
+ "type": "number",
55
+ "required": false,
56
+ "defaultValue": "6",
57
+ "description": "Legend entries before the tail collapses. Defaults to `6`."
58
+ },
59
+ {
60
+ "name": "onSelect",
61
+ "type": "((allocation: DmxAllocation) => void)",
62
+ "required": false,
63
+ "defaultValue": null,
64
+ "description": "Make the blocks buttons. Without it they are decoration inside one\n`role=\"img\"`, which is what keeps a 40-fixture patch from becoming 40 tab\nstops."
65
+ },
66
+ {
67
+ "name": "emptyLabel",
68
+ "type": "string",
69
+ "required": false,
70
+ "defaultValue": "No patch assignments",
71
+ "description": "What to say when nothing is patched. Defaults to `\"No patch assignments\"`."
72
+ }
73
+ ],
74
+ "typeReferences": [
75
+ "Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\" | \"onSelect\">"
76
+ ],
77
+ "subcomponents": [],
78
+ "parts": [],
79
+ "variants": {},
80
+ "defaultVariants": {},
81
+ "tokensUsed": [
82
+ "--cue-accent",
83
+ "--cue-border",
84
+ "--cue-busy",
85
+ "--cue-danger",
86
+ "--cue-danger-soft",
87
+ "--cue-data-ground",
88
+ "--cue-fg-muted",
89
+ "--cue-fg-subtle",
90
+ "--cue-font-mono",
91
+ "--cue-info",
92
+ "--cue-ok",
93
+ "--cue-radius-control",
94
+ "--cue-space-2",
95
+ "--cue-space-4",
96
+ "--cue-space-5",
97
+ "--cue-sunken",
98
+ "--cue-text-label",
99
+ "--cue-text-micro",
100
+ "--cue-warn"
101
+ ],
102
+ "summary": "A universe as 512 slots of occupancy: who holds what, and where two fixtures were given the same address.",
103
+ "examples": [
104
+ {
105
+ "title": "Usage",
106
+ "code": "<UniverseGrid\n label=\"Universe 1\"\n allocations={[\n { label: \"wash\", start: 1, size: 24, tone: \"accent\" },\n { label: \"movers\", start: 129, size: 32, tone: \"info\" },\n ]}\n/>",
107
+ "language": "tsx"
108
+ }
109
+ ],
110
+ "status": "todo-docs",
111
+ "url": "/docs/components/universe-grid",
112
+ "mdUrl": "/docs/components/universe-grid.md",
113
+ "jsonUrl": "/r/components/universe-grid.json",
114
+ "specimens": [
115
+ {
116
+ "title": "UniverseGrid",
117
+ "group": "dmx",
118
+ "components": [
119
+ "UniverseGrid"
120
+ ],
121
+ "code": "<div className=\"flex w-full flex-col gap-(--cue-space-5)\">\n <UniverseGrid allocations={ALLOCATIONS} label=\"Universe 1 patch\" />\n <UniverseGrid\n allocations={[\n { label: \"Front truss\", start: 1, size: 48, tone: \"accent\" },\n { label: \"Movers\", start: 40, size: 32, tone: \"info\" },\n ]}\n label=\"Universe 2 patch, with a conflict\"\n />\n <UniverseGrid allocations={[]} label=\"Universe 3 patch\" emptyLabel={COPY.empty.title} />\n <UniverseGrid\n allocations={ALLOCATIONS}\n ruler={false}\n legend={false}\n height={10}\n label=\"Universe 1 patch, bare\"\n />\n</div>",
122
+ "note": "512 slots of occupancy: minimum 2px slivers so a two-channel fixture is still visible, a conflict ring where two allocations overlap, a tick ruler at 1/64/…/512 and a legend that folds to `+N more`.",
123
+ "interaction": "each block is a button; the accessible name spells the whole patch out, so the picture is not the only channel."
124
+ }
125
+ ],
126
+ "todo": true
127
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "UnreadDivider",
3
+ "slug": "unread-divider",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "The rule that says \"you have read down to here\": an accented line with its\nlabel at the end.\n\nThe second row of Cursor's union that no catalogue ships, and the one with a\nrule of its own that is easy to get wrong: it marks where the reader *was*,\nso it does not move while they read. A divider that chased the last-seen\nmessage would vanish the moment it appeared, which is why this component\ntakes no messages, no counts and no scroll position — the caller decides\nwhere it goes and when it leaves, and the row is only ever the mark.\n\nAccented rather than neutral, and asymmetric rather than centred, so it can\nnever be mistaken for a {@link TimeBoundary} two rows above it.",
9
+ "props": [
10
+ {
11
+ "name": "label",
12
+ "type": "string",
13
+ "required": false,
14
+ "defaultValue": "New",
15
+ "description": "What the rule says. `New` by default — one word, because the row is a place\nmarker and not an announcement, and because the sentence a reader wants is\nthe one below the rule."
16
+ }
17
+ ],
18
+ "typeReferences": [
19
+ "Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
20
+ ],
21
+ "subcomponents": [],
22
+ "parts": [],
23
+ "variants": {},
24
+ "defaultVariants": {},
25
+ "tokensUsed": [
26
+ "--cue-accent",
27
+ "--cue-border",
28
+ "--cue-fg-subtle"
29
+ ],
30
+ "summary": "The rule that says \"you have read down to here\": an accented line with its label at the end.",
31
+ "examples": [
32
+ {
33
+ "title": "Usage",
34
+ "code": "import { UnreadDivider } from \"@cueplusplus/ui/elements\";\n\n<UnreadDivider />\n<UnreadDivider label=\"New since you left\" />",
35
+ "language": "tsx"
36
+ }
37
+ ],
38
+ "status": "todo-docs",
39
+ "url": "/docs/components/unread-divider",
40
+ "mdUrl": "/docs/components/unread-divider.md",
41
+ "jsonUrl": "/r/components/unread-divider.json",
42
+ "specimens": [
43
+ {
44
+ "title": "UnreadDivider",
45
+ "group": "elements-thread",
46
+ "components": [
47
+ "UnreadDivider"
48
+ ],
49
+ "code": "<Specimens>\n <Specimen label=\"default\" wide>\n <div className=\"w-full max-w-md\">\n <UnreadDivider />\n </div>\n </Specimen>\n <Specimen label=\"its own words\" wide>\n <div className=\"w-full max-w-md\">\n <UnreadDivider label=\"New since you left\" />\n </div>\n </Specimen>\n</Specimens>",
50
+ "note": "The second rule Cursor's row union has and no catalogue ships: where you had read down to. It takes no messages, no count and no scroll position, because the one rule it must obey is that it does not move while you read — a divider that chased the last-seen message would vanish the moment it appeared. Accented and asymmetric, so it can never be mistaken for a time boundary two rows above it.",
51
+ "interaction": "none, deliberately. The mark is the whole component; when it leaves is the caller's decision."
52
+ }
53
+ ],
54
+ "todo": true
55
+ }
@@ -0,0 +1,124 @@
1
+ {
2
+ "name": "UsageChart",
3
+ "slug": "usage-chart",
4
+ "group": "instruments",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "A quota trace: where you sit against the ceiling, over time.\n\nDependency-free inline SVG — a charting library is a large price for one\nline and five gridlines, and none of them draws the three things that make\nthis chart honest:\n\n1. **The y axis is always 0–100.** A quota chart auto-scaled to its own range\n makes a flat 3% look identical to a flat 95%. The ceiling is the reading,\n so the ceiling is always drawn.\n2. **Gaps are gaps.** When the sweep does not run, the line breaks. Joining\n across a hole invents data — and worse, invents a *smooth* trend across\n exactly the window nothing is known about. The area fill stops at the\n break for the same reason.\n3. **Out-of-range values are clamped, not plotted.** Upstream numbers are\n reverse-engineered and can be anything; 140% should read as a flat line on\n the ceiling, not as a path drawn over the axis labels.",
9
+ "props": [
10
+ {
11
+ "name": "points",
12
+ "type": "readonly UsageChartPoint[]",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "The series. Sorted and cleaned internally; order in is not order out."
16
+ },
17
+ {
18
+ "name": "tone",
19
+ "type": "\"danger\" | \"accent\" | \"busy\" | \"ok\" | \"warn\" | \"info\"",
20
+ "required": false,
21
+ "defaultValue": "accent",
22
+ "description": "Stroke tone. Defaults to `\"accent\"`."
23
+ },
24
+ {
25
+ "name": "height",
26
+ "type": "number",
27
+ "required": false,
28
+ "defaultValue": "120",
29
+ "description": "Plot height in px at the 16px root. Defaults to `120`."
30
+ },
31
+ {
32
+ "name": "gapMs",
33
+ "type": "number",
34
+ "required": false,
35
+ "defaultValue": "15 * 60 * 1000",
36
+ "description": "Break the line when consecutive samples are further apart than this, in ms."
37
+ },
38
+ {
39
+ "name": "threshold",
40
+ "type": "number",
41
+ "required": false,
42
+ "defaultValue": null,
43
+ "description": "Draw a dashed rule at this percentage — where throttling starts, say."
44
+ },
45
+ {
46
+ "name": "label",
47
+ "type": "string",
48
+ "required": false,
49
+ "defaultValue": null,
50
+ "description": "The accessible name. Name the series; the shape is not self-describing."
51
+ },
52
+ {
53
+ "name": "emptyLabel",
54
+ "type": "string",
55
+ "required": false,
56
+ "defaultValue": "No data yet",
57
+ "description": "What to say when there is nothing to plot. Defaults to `\"No data yet\"`."
58
+ },
59
+ {
60
+ "name": "formatTimestamp",
61
+ "type": "((t: number) => string)",
62
+ "required": false,
63
+ "defaultValue": null,
64
+ "description": "Format a sample's timestamp for the tooltip. Defaults to a short local date-time."
65
+ },
66
+ {
67
+ "name": "formatValue",
68
+ "type": "((v: number) => string)",
69
+ "required": false,
70
+ "defaultValue": "(value) => `${Math.round(value)}%`",
71
+ "description": "Format a sample's value for the tooltip. Defaults to `\"87%\"`."
72
+ }
73
+ ],
74
+ "typeReferences": [
75
+ "Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
76
+ ],
77
+ "subcomponents": [],
78
+ "parts": [],
79
+ "variants": {},
80
+ "defaultVariants": {},
81
+ "tokensUsed": [
82
+ "--cue-accent",
83
+ "--cue-border",
84
+ "--cue-border-overlay",
85
+ "--cue-busy",
86
+ "--cue-danger",
87
+ "--cue-fg",
88
+ "--cue-fg-subtle",
89
+ "--cue-font-mono",
90
+ "--cue-info",
91
+ "--cue-ok",
92
+ "--cue-radius-control",
93
+ "--cue-space-1",
94
+ "--cue-space-3",
95
+ "--cue-surface-2",
96
+ "--cue-text-label",
97
+ "--cue-warn"
98
+ ],
99
+ "summary": "A quota trace: where you sit against the ceiling, over time.",
100
+ "examples": [
101
+ {
102
+ "title": "Usage",
103
+ "code": "<UsageChart label=\"API requests\" points={series} threshold={80} tone=\"warn\" />",
104
+ "language": "tsx"
105
+ }
106
+ ],
107
+ "status": "todo-docs",
108
+ "url": "/docs/components/usage-chart",
109
+ "mdUrl": "/docs/components/usage-chart.md",
110
+ "jsonUrl": "/r/components/usage-chart.json",
111
+ "specimens": [
112
+ {
113
+ "title": "UsageChart",
114
+ "group": "instruments",
115
+ "components": [
116
+ "UsageChart"
117
+ ],
118
+ "code": "<div className=\"grid w-full gap-(--cue-space-5) lg:grid-cols-2\">\n <UsageChart points={USAGE} gapMs={2 * MINUTE} threshold={80} label=\"Output level\" />\n <UsageChart points={[]} label=\"No samples\" emptyLabel={COPY.empty.title} />\n</div>",
119
+ "note": "A dependency-free SVG chart pinned to 0–100, with gap-aware path segmentation: a hole in the data is a hole in the line, not a straight edge across it.",
120
+ "interaction": "hover draws a crosshair at the nearest point and a tooltip chip; the whole chart carries a text summary for readers who get no hover."
121
+ }
122
+ ],
123
+ "todo": true
124
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "VerdictRow",
3
+ "slug": "verdict-row",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [
7
+ "lucide-react"
8
+ ],
9
+ "clientOnly": true,
10
+ "description": "What the run thought of its own work, attached to the turn that did it.\n\nThe second of the two elements nothing in the field ships. A finished turn\nsays what it changed and how long it took; whether it is any *good* is the\none question the reader actually has, and every agent runtime that runs a\ncritic, a test suite or a self-review already has an answer to it. This is\nthat answer as a row: a rating out of five, the exact score beside it, the\nscorer's sentence, and the problems it thinks are most likely, each with how\nsure it is.\n\nEvery number is defended. Scores arrive from a model, so `NaN`, `Infinity`\nand out-of-range values are normal traffic and all of them clamp — a verdict\nrow is worthless if a bad payload can make it render `NaN out of 5`.\n\nTone is stated as `data-verdict` on the element, from OpenHands' own\nthresholds (`ok` at 0.6, `warn` at 0.4, `danger` below), and the chips take\ntheirs from the probability (`danger` at 0.7, `warn` at 0.5). The stars are\none `role=\"img\"` with the rating as its name rather than five glyphs a screen\nreader would read out one at a time.",
11
+ "props": [
12
+ {
13
+ "name": "score",
14
+ "type": "number",
15
+ "required": true,
16
+ "defaultValue": null,
17
+ "description": "What the scorer thought of the work, `0`–`1`. Clamped, and a non-finite\nscore is worth no stars — see {@link verdictStars}."
18
+ },
19
+ {
20
+ "name": "title",
21
+ "type": "string",
22
+ "required": false,
23
+ "defaultValue": null,
24
+ "description": "What the scorer is called. Defaults to `VERDICT_LABELS.title`\n(`Verification`), which is deliberately not `Critic`: the same row fits a\ntest run, a linter or a second model."
25
+ },
26
+ {
27
+ "name": "summary",
28
+ "type": "string",
29
+ "required": false,
30
+ "defaultValue": null,
31
+ "description": "One line of the scorer's own prose, under the rating."
32
+ },
33
+ {
34
+ "name": "issues",
35
+ "type": "readonly VerdictIssue[]",
36
+ "required": false,
37
+ "defaultValue": null,
38
+ "description": "What it thinks is probably wrong, drawn as chips with their probabilities\nand tinted by them. Order is the caller's — most likely first reads best."
39
+ },
40
+ {
41
+ "name": "labels",
42
+ "type": "Partial<VerdictLabels>",
43
+ "required": false,
44
+ "defaultValue": null,
45
+ "description": "The row's three strings, merged over `VERDICT_LABELS`."
46
+ }
47
+ ],
48
+ "typeReferences": [
49
+ "Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
50
+ ],
51
+ "subcomponents": [],
52
+ "parts": [],
53
+ "variants": {},
54
+ "defaultVariants": {},
55
+ "tokensUsed": [
56
+ "--cue-danger",
57
+ "--cue-fg",
58
+ "--cue-fg-muted",
59
+ "--cue-fg-subtle",
60
+ "--cue-ok",
61
+ "--cue-radius-control",
62
+ "--cue-radius-overlay",
63
+ "--cue-text-ui",
64
+ "--cue-warn"
65
+ ],
66
+ "summary": "What the run thought of its own work, attached to the turn that did it.",
67
+ "examples": [
68
+ {
69
+ "title": "Usage",
70
+ "code": "import { VerdictRow } from \"@cueplusplus/ui/elements\";\n\n<VerdictRow\n score={0.82}\n summary=\"The patch matches the plot and the cue holds.\"\n issues={[{ label: \"No fallback for a missing fixture\", probability: 0.54 }]}\n/>\n// A verdict that failed the work, from a test run rather than a model.\n<VerdictRow score={0.24} title=\"Test run\" summary=\"3 of 41 checks failed.\" />",
71
+ "language": "tsx"
72
+ }
73
+ ],
74
+ "status": "todo-docs",
75
+ "url": "/docs/components/verdict-row",
76
+ "mdUrl": "/docs/components/verdict-row.md",
77
+ "jsonUrl": "/r/components/verdict-row.json",
78
+ "specimens": [
79
+ {
80
+ "title": "VerdictRow",
81
+ "group": "elements",
82
+ "components": [
83
+ "VerdictRow"
84
+ ],
85
+ "code": "<Specimens>\n <Specimen label=\"it holds\" wide>\n <div className=\"w-full max-w-md\">\n <VerdictRow score={0.86} summary=\"The patch matches the plot and cue 1 holds at 3.0s.\" />\n </div>\n </Specimen>\n <Specimen label=\"doubtful, with what it doubts\" wide>\n <div className=\"w-full max-w-md\">\n <VerdictRow\n score={0.52}\n summary=\"The universe is patched, but nothing proves the cue fires.\"\n issues={DOUBTS}\n />\n </div>\n </Specimen>\n <Specimen label=\"failed, from a test run rather than a model\" wide>\n <div className=\"w-full max-w-md\">\n <VerdictRow score={0.24} title=\"Test run\" summary=\"3 of 41 checks failed.\" />\n </div>\n </Specimen>\n</Specimens>",
86
+ "note": "What the run thought of its own work, attached to the turn that did it. A finished turn says what it changed and how long it took; whether it is any good is the question the reader actually has, and every runtime that runs a critic, a test suite or a self-review already has an answer. The scorer is unnamed on purpose — the same row fits a critic model, a linter and a second pair of eyes. The stars are the shape and the percentage is the number, because 0.58 against 0.62 is a decision and rounding it away hides the thing that moved the colour.",
87
+ "interaction": "none, but every number is defended: scores arrive from a model over a network, so NaN, Infinity and out-of-range values all clamp rather than reaching the DOM. The rating is one role=img with `Rated 4 out of 5` as its name, not five glyphs read out one at a time."
88
+ }
89
+ ],
90
+ "todo": true
91
+ }