@cueplusplus/ui 0.13.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 (1016) hide show
  1. package/CHANGELOG.md +4028 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE.md +34 -0
  4. package/README.md +237 -0
  5. package/dist/agent-runtime/_glyphs.js +43 -0
  6. package/dist/agent-runtime/branch-picker.d.ts +45 -0
  7. package/dist/agent-runtime/branch-picker.js +87 -0
  8. package/dist/agent-runtime/index.d.ts +4 -0
  9. package/dist/agent-runtime/index.js +4 -0
  10. package/dist/agent-runtime/tool-call-card.d.ts +69 -0
  11. package/dist/agent-runtime/tool-call-card.js +187 -0
  12. package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
  13. package/dist/agent-runtime/use-agent-thread.js +251 -0
  14. package/dist/brand/_chassis.d.ts +54 -0
  15. package/dist/brand/_chassis.js +81 -0
  16. package/dist/brand/_geometry.js +41 -0
  17. package/dist/brand/cue-logotype.d.ts +29 -0
  18. package/dist/brand/cue-logotype.js +60 -0
  19. package/dist/brand/cue-mark.d.ts +30 -0
  20. package/dist/brand/cue-mark.js +61 -0
  21. package/dist/brand/index.d.ts +5 -0
  22. package/dist/brand/plussie.d.ts +67 -0
  23. package/dist/brand/plussie.js +125 -0
  24. package/dist/charts/_token.js +39 -0
  25. package/dist/charts/container.d.ts +58 -0
  26. package/dist/charts/container.js +77 -0
  27. package/dist/charts/index.d.ts +5 -0
  28. package/dist/charts/index.js +5 -0
  29. package/dist/charts/ramps.d.ts +140 -0
  30. package/dist/charts/ramps.js +615 -0
  31. package/dist/charts/theme.d.ts +112 -0
  32. package/dist/charts/theme.js +165 -0
  33. package/dist/charts/tones.d.ts +111 -0
  34. package/dist/charts/tones.js +127 -0
  35. package/dist/chat/_glyphs.js +55 -0
  36. package/dist/chat/agent-color.d.ts +84 -0
  37. package/dist/chat/agent-color.js +101 -0
  38. package/dist/chat/agent-pile.d.ts +55 -0
  39. package/dist/chat/agent-pile.js +121 -0
  40. package/dist/chat/ask-box.d.ts +88 -0
  41. package/dist/chat/ask-box.js +341 -0
  42. package/dist/chat/composer.d.ts +66 -0
  43. package/dist/chat/composer.js +144 -0
  44. package/dist/chat/delegation-card.d.ts +60 -0
  45. package/dist/chat/delegation-card.js +129 -0
  46. package/dist/chat/index.d.ts +8 -0
  47. package/dist/chat/index.js +8 -0
  48. package/dist/chat/message-list.d.ts +45 -0
  49. package/dist/chat/message-list.js +141 -0
  50. package/dist/chat/message.d.ts +47 -0
  51. package/dist/chat/message.js +108 -0
  52. package/dist/chrome/_band.js +54 -0
  53. package/dist/chrome/_drag.js +59 -0
  54. package/dist/chrome/_edge-scroller.d.ts +45 -0
  55. package/dist/chrome/_edge-scroller.js +149 -0
  56. package/dist/chrome/_glyphs.js +119 -0
  57. package/dist/chrome/_status-bar-item.js +85 -0
  58. package/dist/chrome/_status-bar.d.ts +15 -0
  59. package/dist/chrome/_status-bar.js +171 -0
  60. package/dist/chrome/_tabs-scroll.d.ts +67 -0
  61. package/dist/chrome/_tabs-scroll.js +73 -0
  62. package/dist/chrome/_tree.d.ts +75 -0
  63. package/dist/chrome/_tree.js +49 -0
  64. package/dist/chrome/app-bar.d.ts +103 -0
  65. package/dist/chrome/app-bar.js +175 -0
  66. package/dist/chrome/app-shell.d.ts +243 -0
  67. package/dist/chrome/app-shell.js +266 -0
  68. package/dist/chrome/band.d.ts +106 -0
  69. package/dist/chrome/band.js +97 -0
  70. package/dist/chrome/empty-state.d.ts +37 -0
  71. package/dist/chrome/empty-state.js +57 -0
  72. package/dist/chrome/eyebrow.d.ts +29 -0
  73. package/dist/chrome/eyebrow.js +36 -0
  74. package/dist/chrome/footer.d.ts +88 -0
  75. package/dist/chrome/footer.js +83 -0
  76. package/dist/chrome/index.d.ts +24 -0
  77. package/dist/chrome/index.js +22 -0
  78. package/dist/chrome/inspector.d.ts +61 -0
  79. package/dist/chrome/inspector.js +121 -0
  80. package/dist/chrome/navigation-menu.d.ts +80 -0
  81. package/dist/chrome/navigation-menu.js +121 -0
  82. package/dist/chrome/page-shell.d.ts +38 -0
  83. package/dist/chrome/page-shell.js +76 -0
  84. package/dist/chrome/panel.d.ts +55 -0
  85. package/dist/chrome/panel.js +67 -0
  86. package/dist/chrome/row.d.ts +82 -0
  87. package/dist/chrome/row.js +106 -0
  88. package/dist/chrome/scroll-area.d.ts +39 -0
  89. package/dist/chrome/scroll-area.js +70 -0
  90. package/dist/chrome/section-header.d.ts +42 -0
  91. package/dist/chrome/section-header.js +79 -0
  92. package/dist/chrome/segmented-control.d.ts +77 -0
  93. package/dist/chrome/segmented-control.js +95 -0
  94. package/dist/chrome/status-bar.d.ts +129 -0
  95. package/dist/chrome/status-bar.js +120 -0
  96. package/dist/chrome/tabs.d.ts +80 -0
  97. package/dist/chrome/tabs.js +132 -0
  98. package/dist/chrome/title-bar.d.ts +47 -0
  99. package/dist/chrome/title-bar.js +43 -0
  100. package/dist/chrome/toolbar.d.ts +68 -0
  101. package/dist/chrome/toolbar.js +83 -0
  102. package/dist/chrome/tree.d.ts +98 -0
  103. package/dist/chrome/tree.js +248 -0
  104. package/dist/color/_checker.js +14 -0
  105. package/dist/color/_convert.d.ts +52 -0
  106. package/dist/color/_convert.js +66 -0
  107. package/dist/color/_glyphs.js +28 -0
  108. package/dist/color/_thumb.js +15 -0
  109. package/dist/color/_value.js +28 -0
  110. package/dist/color/color-area.d.ts +27 -0
  111. package/dist/color/color-area.js +40 -0
  112. package/dist/color/color-field.d.ts +32 -0
  113. package/dist/color/color-field.js +43 -0
  114. package/dist/color/color-picker.d.ts +71 -0
  115. package/dist/color/color-picker.js +178 -0
  116. package/dist/color/color-slider.d.ts +31 -0
  117. package/dist/color/color-slider.js +51 -0
  118. package/dist/color/color-swatch.d.ts +32 -0
  119. package/dist/color/color-swatch.js +44 -0
  120. package/dist/color/index.d.ts +7 -0
  121. package/dist/color/index.js +7 -0
  122. package/dist/configurator/_export.d.ts +78 -0
  123. package/dist/configurator/_export.js +302 -0
  124. package/dist/configurator/_glyphs.js +92 -0
  125. package/dist/configurator/_overrides.d.ts +266 -0
  126. package/dist/configurator/_overrides.js +541 -0
  127. package/dist/configurator/configurator.d.ts +71 -0
  128. package/dist/configurator/configurator.js +284 -0
  129. package/dist/configurator/export-dialog.d.ts +30 -0
  130. package/dist/configurator/export-dialog.js +121 -0
  131. package/dist/configurator/index.d.ts +8 -0
  132. package/dist/configurator/index.js +8 -0
  133. package/dist/configurator/panel-sections.d.ts +86 -0
  134. package/dist/configurator/panel-sections.js +352 -0
  135. package/dist/configurator/token-editor.d.ts +74 -0
  136. package/dist/configurator/token-editor.js +152 -0
  137. package/dist/configurator/use-zoom.d.ts +87 -0
  138. package/dist/configurator/use-zoom.js +113 -0
  139. package/dist/date/_glyphs.js +34 -0
  140. package/dist/date/_segments.js +101 -0
  141. package/dist/date/_trigger.js +31 -0
  142. package/dist/date/calendar.d.ts +25 -0
  143. package/dist/date/calendar.js +125 -0
  144. package/dist/date/date-field.d.ts +34 -0
  145. package/dist/date/date-field.js +41 -0
  146. package/dist/date/date-picker.d.ts +69 -0
  147. package/dist/date/date-picker.js +89 -0
  148. package/dist/date/date-range-picker.d.ts +65 -0
  149. package/dist/date/date-range-picker.js +92 -0
  150. package/dist/date/index.d.ts +6 -0
  151. package/dist/date/index.js +6 -0
  152. package/dist/date/time-field.d.ts +29 -0
  153. package/dist/date/time-field.js +36 -0
  154. package/dist/dmx/_ramp.d.ts +77 -0
  155. package/dist/dmx/_ramp.js +169 -0
  156. package/dist/dmx/_readout.js +53 -0
  157. package/dist/dmx/_universe.d.ts +105 -0
  158. package/dist/dmx/_universe.js +112 -0
  159. package/dist/dmx/channel-matrix.d.ts +81 -0
  160. package/dist/dmx/channel-matrix.js +285 -0
  161. package/dist/dmx/dmx-bar.d.ts +50 -0
  162. package/dist/dmx/dmx-bar.js +107 -0
  163. package/dist/dmx/dmx-strip.d.ts +41 -0
  164. package/dist/dmx/dmx-strip.js +196 -0
  165. package/dist/dmx/index.d.ts +7 -0
  166. package/dist/dmx/index.js +7 -0
  167. package/dist/dmx/universe-grid.d.ts +61 -0
  168. package/dist/dmx/universe-grid.js +182 -0
  169. package/dist/elements/activity-graph.d.ts +40 -0
  170. package/dist/elements/activity-graph.js +81 -0
  171. package/dist/elements/agent-card.d.ts +49 -0
  172. package/dist/elements/agent-card.js +91 -0
  173. package/dist/elements/agent-handoff.d.ts +24 -0
  174. package/dist/elements/agent-handoff.js +53 -0
  175. package/dist/elements/agent-mode-badge.d.ts +72 -0
  176. package/dist/elements/agent-mode-badge.js +110 -0
  177. package/dist/elements/agent-plan.d.ts +24 -0
  178. package/dist/elements/agent-plan.js +74 -0
  179. package/dist/elements/agent-status.d.ts +29 -0
  180. package/dist/elements/agent-status.js +46 -0
  181. package/dist/elements/agent-surface.d.ts +65 -0
  182. package/dist/elements/agent-surface.js +68 -0
  183. package/dist/elements/animated-number.d.ts +86 -0
  184. package/dist/elements/animated-number.js +118 -0
  185. package/dist/elements/approval-card.d.ts +40 -0
  186. package/dist/elements/approval-card.js +78 -0
  187. package/dist/elements/artifact-card.d.ts +30 -0
  188. package/dist/elements/artifact-card.js +58 -0
  189. package/dist/elements/background-inbox.d.ts +39 -0
  190. package/dist/elements/background-inbox.js +60 -0
  191. package/dist/elements/canvas-split.d.ts +77 -0
  192. package/dist/elements/canvas-split.js +138 -0
  193. package/dist/elements/chart.d.ts +41 -0
  194. package/dist/elements/chart.js +117 -0
  195. package/dist/elements/chat-panel.d.ts +46 -0
  196. package/dist/elements/chat-panel.js +104 -0
  197. package/dist/elements/checkpoint-history.d.ts +31 -0
  198. package/dist/elements/checkpoint-history.js +65 -0
  199. package/dist/elements/clamp.d.ts +90 -0
  200. package/dist/elements/clamp.js +109 -0
  201. package/dist/elements/code-diff.d.ts +42 -0
  202. package/dist/elements/code-diff.js +69 -0
  203. package/dist/elements/code-runner.d.ts +38 -0
  204. package/dist/elements/code-runner.js +84 -0
  205. package/dist/elements/command-palette.d.ts +48 -0
  206. package/dist/elements/command-palette.js +129 -0
  207. package/dist/elements/compaction-row.d.ts +63 -0
  208. package/dist/elements/compaction-row.js +110 -0
  209. package/dist/elements/comparison-card.d.ts +47 -0
  210. package/dist/elements/comparison-card.js +69 -0
  211. package/dist/elements/composer.d.ts +274 -0
  212. package/dist/elements/composer.js +505 -0
  213. package/dist/elements/computer-use.d.ts +40 -0
  214. package/dist/elements/computer-use.js +92 -0
  215. package/dist/elements/confidence-marker.d.ts +39 -0
  216. package/dist/elements/confidence-marker.js +64 -0
  217. package/dist/elements/connection-state.d.ts +29 -0
  218. package/dist/elements/connection-state.js +66 -0
  219. package/dist/elements/context-breakdown.d.ts +30 -0
  220. package/dist/elements/context-breakdown.js +86 -0
  221. package/dist/elements/context-usage.d.ts +99 -0
  222. package/dist/elements/context-usage.js +225 -0
  223. package/dist/elements/conversation-search.d.ts +48 -0
  224. package/dist/elements/conversation-search.js +88 -0
  225. package/dist/elements/cost-meter.d.ts +33 -0
  226. package/dist/elements/cost-meter.js +75 -0
  227. package/dist/elements/data-table.d.ts +31 -0
  228. package/dist/elements/data-table.js +67 -0
  229. package/dist/elements/day-separator.d.ts +34 -0
  230. package/dist/elements/day-separator.js +50 -0
  231. package/dist/elements/diagram.d.ts +34 -0
  232. package/dist/elements/diagram.js +75 -0
  233. package/dist/elements/document-reference.d.ts +37 -0
  234. package/dist/elements/document-reference.js +66 -0
  235. package/dist/elements/draft-restore.d.ts +27 -0
  236. package/dist/elements/draft-restore.js +54 -0
  237. package/dist/elements/edit-message.d.ts +36 -0
  238. package/dist/elements/edit-message.js +77 -0
  239. package/dist/elements/elements.css +459 -0
  240. package/dist/elements/elicitation-form.d.ts +48 -0
  241. package/dist/elements/elicitation-form.js +106 -0
  242. package/dist/elements/empty-state.d.ts +52 -0
  243. package/dist/elements/empty-state.js +98 -0
  244. package/dist/elements/end-of-turn-summary.d.ts +60 -0
  245. package/dist/elements/end-of-turn-summary.js +75 -0
  246. package/dist/elements/error-state.d.ts +29 -0
  247. package/dist/elements/error-state.js +55 -0
  248. package/dist/elements/feedback-dialog.d.ts +36 -0
  249. package/dist/elements/feedback-dialog.js +81 -0
  250. package/dist/elements/file-tree.d.ts +45 -0
  251. package/dist/elements/file-tree.js +84 -0
  252. package/dist/elements/flow-graph.d.ts +45 -0
  253. package/dist/elements/flow-graph.js +78 -0
  254. package/dist/elements/generative/chart.js +200 -0
  255. package/dist/elements/generative/faults.js +111 -0
  256. package/dist/elements/generative/icons.d.ts +41 -0
  257. package/dist/elements/generative/icons.js +190 -0
  258. package/dist/elements/generative/intrinsics.js +483 -0
  259. package/dist/elements/generative/spec.d.ts +110 -0
  260. package/dist/elements/generative/spec.js +366 -0
  261. package/dist/elements/generative.css +1145 -0
  262. package/dist/elements/generative.d.ts +144 -0
  263. package/dist/elements/generative.js +126 -0
  264. package/dist/elements/guardrail-notice.d.ts +29 -0
  265. package/dist/elements/guardrail-notice.js +63 -0
  266. package/dist/elements/image-generation.d.ts +18 -0
  267. package/dist/elements/image-generation.js +64 -0
  268. package/dist/elements/index.d.ts +116 -0
  269. package/dist/elements/index.js +115 -0
  270. package/dist/elements/inline-citation.d.ts +43 -0
  271. package/dist/elements/inline-citation.js +93 -0
  272. package/dist/elements/job-progress.d.ts +49 -0
  273. package/dist/elements/job-progress.js +74 -0
  274. package/dist/elements/launcher-bubble.d.ts +34 -0
  275. package/dist/elements/launcher-bubble.js +72 -0
  276. package/dist/elements/live-region-announcer.d.ts +130 -0
  277. package/dist/elements/live-region-announcer.js +230 -0
  278. package/dist/elements/loading-state.d.ts +27 -0
  279. package/dist/elements/loading-state.js +36 -0
  280. package/dist/elements/map-answer.d.ts +38 -0
  281. package/dist/elements/map-answer.js +93 -0
  282. package/dist/elements/markdown.d.ts +131 -0
  283. package/dist/elements/markdown.js +528 -0
  284. package/dist/elements/math-block.d.ts +51 -0
  285. package/dist/elements/math-block.js +70 -0
  286. package/dist/elements/mcp-server-panel.d.ts +41 -0
  287. package/dist/elements/mcp-server-panel.js +115 -0
  288. package/dist/elements/memory-chips.d.ts +30 -0
  289. package/dist/elements/memory-chips.js +43 -0
  290. package/dist/elements/message-actions.d.ts +38 -0
  291. package/dist/elements/message-actions.js +71 -0
  292. package/dist/elements/message-attachment.d.ts +48 -0
  293. package/dist/elements/message-attachment.js +63 -0
  294. package/dist/elements/message-branches.d.ts +25 -0
  295. package/dist/elements/message-branches.js +65 -0
  296. package/dist/elements/message-pair.d.ts +33 -0
  297. package/dist/elements/message-pair.js +65 -0
  298. package/dist/elements/message-queue.d.ts +31 -0
  299. package/dist/elements/message-queue.js +80 -0
  300. package/dist/elements/message-timing.d.ts +33 -0
  301. package/dist/elements/message-timing.js +37 -0
  302. package/dist/elements/mobile-composer.d.ts +44 -0
  303. package/dist/elements/mobile-composer.js +88 -0
  304. package/dist/elements/model-picker.d.ts +38 -0
  305. package/dist/elements/model-picker.js +69 -0
  306. package/dist/elements/number-ticker.d.ts +18 -0
  307. package/dist/elements/number-ticker.js +47 -0
  308. package/dist/elements/onboarding.d.ts +30 -0
  309. package/dist/elements/onboarding.js +75 -0
  310. package/dist/elements/permission-grant.d.ts +35 -0
  311. package/dist/elements/permission-grant.js +86 -0
  312. package/dist/elements/permission-scopes.d.ts +215 -0
  313. package/dist/elements/permission-scopes.js +249 -0
  314. package/dist/elements/prompt-library.d.ts +43 -0
  315. package/dist/elements/prompt-library.js +117 -0
  316. package/dist/elements/queue-dock.d.ts +101 -0
  317. package/dist/elements/queue-dock.js +132 -0
  318. package/dist/elements/quota-banner.d.ts +26 -0
  319. package/dist/elements/quota-banner.js +66 -0
  320. package/dist/elements/quote-reply.d.ts +44 -0
  321. package/dist/elements/quote-reply.js +79 -0
  322. package/dist/elements/range.d.ts +29 -0
  323. package/dist/elements/range.js +45 -0
  324. package/dist/elements/read-aloud.d.ts +45 -0
  325. package/dist/elements/read-aloud.js +75 -0
  326. package/dist/elements/reasoning-effort.d.ts +36 -0
  327. package/dist/elements/reasoning-effort.js +67 -0
  328. package/dist/elements/reasoning-panel.d.ts +46 -0
  329. package/dist/elements/reasoning-panel.js +75 -0
  330. package/dist/elements/recommendation-card.d.ts +45 -0
  331. package/dist/elements/recommendation-card.js +83 -0
  332. package/dist/elements/regenerate-menu.d.ts +45 -0
  333. package/dist/elements/regenerate-menu.js +51 -0
  334. package/dist/elements/replay.d.ts +217 -0
  335. package/dist/elements/replay.js +498 -0
  336. package/dist/elements/research-report.d.ts +38 -0
  337. package/dist/elements/research-report.js +69 -0
  338. package/dist/elements/retrieval-chunks.d.ts +43 -0
  339. package/dist/elements/retrieval-chunks.js +81 -0
  340. package/dist/elements/revert-dock.d.ts +159 -0
  341. package/dist/elements/revert-dock.js +327 -0
  342. package/dist/elements/reviewable-diff.d.ts +45 -0
  343. package/dist/elements/reviewable-diff.js +110 -0
  344. package/dist/elements/risk-badge.d.ts +52 -0
  345. package/dist/elements/risk-badge.js +91 -0
  346. package/dist/elements/schedule-card.d.ts +42 -0
  347. package/dist/elements/schedule-card.js +90 -0
  348. package/dist/elements/score-breakdown.d.ts +47 -0
  349. package/dist/elements/score-breakdown.js +82 -0
  350. package/dist/elements/scroll-anchor.d.ts +32 -0
  351. package/dist/elements/scroll-anchor.js +123 -0
  352. package/dist/elements/settings-panel.d.ts +52 -0
  353. package/dist/elements/settings-panel.js +107 -0
  354. package/dist/elements/shared-conversation.d.ts +39 -0
  355. package/dist/elements/shared-conversation.js +68 -0
  356. package/dist/elements/sources.d.ts +33 -0
  357. package/dist/elements/sources.js +61 -0
  358. package/dist/elements/speaker-identity.d.ts +32 -0
  359. package/dist/elements/speaker-identity.js +51 -0
  360. package/dist/elements/spec-sheet.d.ts +31 -0
  361. package/dist/elements/spec-sheet.js +45 -0
  362. package/dist/elements/stopped-run.d.ts +22 -0
  363. package/dist/elements/stopped-run.js +50 -0
  364. package/dist/elements/streaming-text.d.ts +31 -0
  365. package/dist/elements/streaming-text.js +45 -0
  366. package/dist/elements/subagent-list.d.ts +37 -0
  367. package/dist/elements/subagent-list.js +79 -0
  368. package/dist/elements/suggestions.d.ts +30 -0
  369. package/dist/elements/suggestions.js +36 -0
  370. package/dist/elements/surfaces.d.ts +85 -0
  371. package/dist/elements/surfaces.js +108 -0
  372. package/dist/elements/tail-status.d.ts +131 -0
  373. package/dist/elements/tail-status.js +94 -0
  374. package/dist/elements/terminal-block.d.ts +29 -0
  375. package/dist/elements/terminal-block.js +54 -0
  376. package/dist/elements/thinking-indicator.d.ts +18 -0
  377. package/dist/elements/thinking-indicator.js +36 -0
  378. package/dist/elements/thread-list.d.ts +35 -0
  379. package/dist/elements/thread-list.js +68 -0
  380. package/dist/elements/thread-search.d.ts +42 -0
  381. package/dist/elements/thread-search.js +99 -0
  382. package/dist/elements/timeline.d.ts +37 -0
  383. package/dist/elements/timeline.js +46 -0
  384. package/dist/elements/todo-list.d.ts +42 -0
  385. package/dist/elements/todo-list.js +59 -0
  386. package/dist/elements/tool-call.d.ts +41 -0
  387. package/dist/elements/tool-call.js +85 -0
  388. package/dist/elements/tool-error.d.ts +39 -0
  389. package/dist/elements/tool-error.js +76 -0
  390. package/dist/elements/tool-group.d.ts +45 -0
  391. package/dist/elements/tool-group.js +71 -0
  392. package/dist/elements/tool-timeline.d.ts +65 -0
  393. package/dist/elements/tool-timeline.js +88 -0
  394. package/dist/elements/trace-waterfall.d.ts +37 -0
  395. package/dist/elements/trace-waterfall.js +69 -0
  396. package/dist/elements/transcript-rules.d.ts +67 -0
  397. package/dist/elements/transcript-rules.js +95 -0
  398. package/dist/elements/turn-footer.d.ts +74 -0
  399. package/dist/elements/turn-footer.js +101 -0
  400. package/dist/elements/typing-indicator.d.ts +16 -0
  401. package/dist/elements/typing-indicator.js +51 -0
  402. package/dist/elements/verdict-row.d.ts +89 -0
  403. package/dist/elements/verdict-row.js +150 -0
  404. package/dist/elements/vocabulary.d.ts +612 -0
  405. package/dist/elements/vocabulary.js +611 -0
  406. package/dist/elements/voice-conversation.d.ts +49 -0
  407. package/dist/elements/voice-conversation.js +123 -0
  408. package/dist/elements/web-preview.d.ts +32 -0
  409. package/dist/elements/web-preview.js +66 -0
  410. package/dist/elements/web-search.d.ts +37 -0
  411. package/dist/elements/web-search.js +66 -0
  412. package/dist/elements/work-collapse.d.ts +103 -0
  413. package/dist/elements/work-collapse.js +131 -0
  414. package/dist/flow/_frame.d.ts +52 -0
  415. package/dist/flow/_frame.js +38 -0
  416. package/dist/flow/controls.d.ts +41 -0
  417. package/dist/flow/controls.js +53 -0
  418. package/dist/flow/flow.css +121 -0
  419. package/dist/flow/handles.d.ts +40 -0
  420. package/dist/flow/handles.js +61 -0
  421. package/dist/flow/index.d.ts +7 -0
  422. package/dist/flow/index.js +7 -0
  423. package/dist/flow/node-card.d.ts +71 -0
  424. package/dist/flow/node-card.js +102 -0
  425. package/dist/flow/signal-edge.d.ts +60 -0
  426. package/dist/flow/signal-edge.js +108 -0
  427. package/dist/flow/use-flow-theme.d.ts +69 -0
  428. package/dist/flow/use-flow-theme.js +109 -0
  429. package/dist/forms/_chassis.d.ts +164 -0
  430. package/dist/forms/_chassis.js +159 -0
  431. package/dist/forms/_glyphs.js +143 -0
  432. package/dist/forms/_listbox.js +55 -0
  433. package/dist/forms/autocomplete.d.ts +61 -0
  434. package/dist/forms/autocomplete.js +88 -0
  435. package/dist/forms/button-group.d.ts +47 -0
  436. package/dist/forms/button-group.js +52 -0
  437. package/dist/forms/checkbox.d.ts +51 -0
  438. package/dist/forms/checkbox.js +98 -0
  439. package/dist/forms/combobox.d.ts +73 -0
  440. package/dist/forms/combobox.js +108 -0
  441. package/dist/forms/env-var-input.d.ts +74 -0
  442. package/dist/forms/env-var-input.js +116 -0
  443. package/dist/forms/field.d.ts +89 -0
  444. package/dist/forms/field.js +102 -0
  445. package/dist/forms/file-upload.d.ts +113 -0
  446. package/dist/forms/file-upload.js +232 -0
  447. package/dist/forms/index.d.ts +26 -0
  448. package/dist/forms/index.js +26 -0
  449. package/dist/forms/input-group.d.ts +36 -0
  450. package/dist/forms/input-group.js +59 -0
  451. package/dist/forms/input.d.ts +45 -0
  452. package/dist/forms/input.js +36 -0
  453. package/dist/forms/multi-select.d.ts +62 -0
  454. package/dist/forms/multi-select.js +107 -0
  455. package/dist/forms/number-field.d.ts +39 -0
  456. package/dist/forms/number-field.js +65 -0
  457. package/dist/forms/otp-field.d.ts +54 -0
  458. package/dist/forms/otp-field.js +59 -0
  459. package/dist/forms/password-input.d.ts +46 -0
  460. package/dist/forms/password-input.js +62 -0
  461. package/dist/forms/radio-group.d.ts +50 -0
  462. package/dist/forms/radio-group.js +64 -0
  463. package/dist/forms/rating.d.ts +69 -0
  464. package/dist/forms/rating.js +103 -0
  465. package/dist/forms/scrub-input.d.ts +81 -0
  466. package/dist/forms/scrub-input.js +249 -0
  467. package/dist/forms/search-input.d.ts +54 -0
  468. package/dist/forms/search-input.js +112 -0
  469. package/dist/forms/select.d.ts +75 -0
  470. package/dist/forms/select.js +91 -0
  471. package/dist/forms/slider.d.ts +44 -0
  472. package/dist/forms/slider.js +65 -0
  473. package/dist/forms/switch.d.ts +36 -0
  474. package/dist/forms/switch.js +71 -0
  475. package/dist/forms/tags-input.d.ts +69 -0
  476. package/dist/forms/tags-input.js +148 -0
  477. package/dist/forms/textarea.d.ts +39 -0
  478. package/dist/forms/textarea.js +37 -0
  479. package/dist/forms/toggle-group.d.ts +41 -0
  480. package/dist/forms/toggle-group.js +56 -0
  481. package/dist/forms/toggle.d.ts +47 -0
  482. package/dist/forms/toggle.js +100 -0
  483. package/dist/icons/containers.d.ts +89 -0
  484. package/dist/icons/containers.js +295 -0
  485. package/dist/icons/index.d.ts +2 -0
  486. package/dist/index.d.ts +138 -0
  487. package/dist/index.js +124 -0
  488. package/dist/instruments/_ansi.js +116 -0
  489. package/dist/instruments/_data-row.d.ts +68 -0
  490. package/dist/instruments/_data-row.js +139 -0
  491. package/dist/instruments/_glyphs.js +90 -0
  492. package/dist/instruments/_ledger-disclosure.js +103 -0
  493. package/dist/instruments/_ledger.d.ts +21 -0
  494. package/dist/instruments/_ledger.js +5 -0
  495. package/dist/instruments/_motion.js +56 -0
  496. package/dist/instruments/_rem.js +21 -0
  497. package/dist/instruments/app-window-frame.d.ts +48 -0
  498. package/dist/instruments/app-window-frame.js +76 -0
  499. package/dist/instruments/code-block.d.ts +35 -0
  500. package/dist/instruments/code-block.js +173 -0
  501. package/dist/instruments/copy-button.d.ts +41 -0
  502. package/dist/instruments/copy-button.js +112 -0
  503. package/dist/instruments/data-row.d.ts +94 -0
  504. package/dist/instruments/data-row.js +151 -0
  505. package/dist/instruments/data-table.d.ts +168 -0
  506. package/dist/instruments/data-table.js +212 -0
  507. package/dist/instruments/data-tree.d.ts +126 -0
  508. package/dist/instruments/data-tree.js +303 -0
  509. package/dist/instruments/group-bar.d.ts +63 -0
  510. package/dist/instruments/group-bar.js +122 -0
  511. package/dist/instruments/index.d.ts +18 -0
  512. package/dist/instruments/index.js +18 -0
  513. package/dist/instruments/ledger.d.ts +204 -0
  514. package/dist/instruments/ledger.js +204 -0
  515. package/dist/instruments/log-viewer.d.ts +74 -0
  516. package/dist/instruments/log-viewer.js +215 -0
  517. package/dist/instruments/meter.d.ts +81 -0
  518. package/dist/instruments/meter.js +96 -0
  519. package/dist/instruments/progress.d.ts +61 -0
  520. package/dist/instruments/progress.js +79 -0
  521. package/dist/instruments/seam-grid.d.ts +66 -0
  522. package/dist/instruments/seam-grid.js +78 -0
  523. package/dist/instruments/sparkline.d.ts +39 -0
  524. package/dist/instruments/sparkline.js +85 -0
  525. package/dist/instruments/stat.d.ts +35 -0
  526. package/dist/instruments/stat.js +59 -0
  527. package/dist/instruments/table.d.ts +170 -0
  528. package/dist/instruments/table.js +237 -0
  529. package/dist/instruments/terminal-frame.d.ts +89 -0
  530. package/dist/instruments/terminal-frame.js +256 -0
  531. package/dist/instruments/two-step-button.d.ts +47 -0
  532. package/dist/instruments/two-step-button.js +166 -0
  533. package/dist/instruments/usage-chart.d.ts +55 -0
  534. package/dist/instruments/usage-chart.js +235 -0
  535. package/dist/layout/_collapse.js +46 -0
  536. package/dist/layout/_glyphs.js +45 -0
  537. package/dist/layout/_ground.d.ts +22 -0
  538. package/dist/layout/_ground.js +9 -0
  539. package/dist/layout/accordion.d.ts +52 -0
  540. package/dist/layout/accordion.js +81 -0
  541. package/dist/layout/bento.d.ts +144 -0
  542. package/dist/layout/bento.js +266 -0
  543. package/dist/layout/breadcrumb.d.ts +35 -0
  544. package/dist/layout/breadcrumb.js +67 -0
  545. package/dist/layout/card.d.ts +51 -0
  546. package/dist/layout/card.js +76 -0
  547. package/dist/layout/carousel.d.ts +96 -0
  548. package/dist/layout/carousel.js +211 -0
  549. package/dist/layout/collapsible.d.ts +74 -0
  550. package/dist/layout/collapsible.js +126 -0
  551. package/dist/layout/container.d.ts +27 -0
  552. package/dist/layout/container.js +43 -0
  553. package/dist/layout/description-list.d.ts +24 -0
  554. package/dist/layout/description-list.js +37 -0
  555. package/dist/layout/frames.d.ts +70 -0
  556. package/dist/layout/frames.js +298 -0
  557. package/dist/layout/grid.d.ts +40 -0
  558. package/dist/layout/grid.js +48 -0
  559. package/dist/layout/index.d.ts +19 -0
  560. package/dist/layout/index.js +18 -0
  561. package/dist/layout/item.d.ts +65 -0
  562. package/dist/layout/item.js +100 -0
  563. package/dist/layout/link.d.ts +48 -0
  564. package/dist/layout/link.js +63 -0
  565. package/dist/layout/pagination.d.ts +54 -0
  566. package/dist/layout/pagination.js +121 -0
  567. package/dist/layout/preview.d.ts +177 -0
  568. package/dist/layout/preview.js +628 -0
  569. package/dist/layout/resizable.d.ts +38 -0
  570. package/dist/layout/resizable.js +68 -0
  571. package/dist/layout/sidebar.d.ts +105 -0
  572. package/dist/layout/sidebar.js +158 -0
  573. package/dist/layout/stack.d.ts +46 -0
  574. package/dist/layout/stack.js +62 -0
  575. package/dist/layout/stepper.d.ts +49 -0
  576. package/dist/layout/stepper.js +81 -0
  577. package/dist/layout/timeline.d.ts +43 -0
  578. package/dist/layout/timeline.js +63 -0
  579. package/dist/lib/aria-class.js +24 -0
  580. package/dist/lib/cn.js +18 -0
  581. package/dist/lib/compose.js +38 -0
  582. package/dist/lib/cva.d.ts +18 -0
  583. package/dist/lib/cva.js +65 -0
  584. package/dist/midi/_notes.d.ts +101 -0
  585. package/dist/midi/_notes.js +183 -0
  586. package/dist/midi/_ruler.d.ts +100 -0
  587. package/dist/midi/_ruler.js +105 -0
  588. package/dist/midi/_time.d.ts +107 -0
  589. package/dist/midi/_time.js +130 -0
  590. package/dist/midi/index.d.ts +9 -0
  591. package/dist/midi/index.js +9 -0
  592. package/dist/midi/musical-time-input.d.ts +48 -0
  593. package/dist/midi/musical-time-input.js +154 -0
  594. package/dist/midi/piano-keyboard.d.ts +50 -0
  595. package/dist/midi/piano-keyboard.js +197 -0
  596. package/dist/midi/spectrum-visualizer.d.ts +65 -0
  597. package/dist/midi/spectrum-visualizer.js +213 -0
  598. package/dist/midi/threshold-rail.d.ts +72 -0
  599. package/dist/midi/threshold-rail.js +214 -0
  600. package/dist/midi/timeline-ruler.d.ts +83 -0
  601. package/dist/midi/timeline-ruler.js +152 -0
  602. package/dist/overlays/_debounce.js +34 -0
  603. package/dist/overlays/_glyphs.js +59 -0
  604. package/dist/overlays/_surface.d.ts +70 -0
  605. package/dist/overlays/_surface.js +70 -0
  606. package/dist/overlays/_wheel.js +42 -0
  607. package/dist/overlays/alert-dialog.d.ts +67 -0
  608. package/dist/overlays/alert-dialog.js +117 -0
  609. package/dist/overlays/command-palette.d.ts +93 -0
  610. package/dist/overlays/command-palette.js +193 -0
  611. package/dist/overlays/context-menu.d.ts +64 -0
  612. package/dist/overlays/context-menu.js +78 -0
  613. package/dist/overlays/dialog.d.ts +72 -0
  614. package/dist/overlays/dialog.js +124 -0
  615. package/dist/overlays/drawer.d.ts +75 -0
  616. package/dist/overlays/drawer.js +151 -0
  617. package/dist/overlays/dropdown-menu.d.ts +79 -0
  618. package/dist/overlays/dropdown-menu.js +156 -0
  619. package/dist/overlays/hover-card.d.ts +58 -0
  620. package/dist/overlays/hover-card.js +91 -0
  621. package/dist/overlays/index.d.ts +15 -0
  622. package/dist/overlays/index.js +15 -0
  623. package/dist/overlays/info-tip.d.ts +41 -0
  624. package/dist/overlays/info-tip.js +45 -0
  625. package/dist/overlays/menubar.d.ts +72 -0
  626. package/dist/overlays/menubar.js +100 -0
  627. package/dist/overlays/popover.d.ts +66 -0
  628. package/dist/overlays/popover.js +114 -0
  629. package/dist/overlays/sheet.d.ts +78 -0
  630. package/dist/overlays/sheet.js +131 -0
  631. package/dist/overlays/toast.d.ts +106 -0
  632. package/dist/overlays/toast.js +146 -0
  633. package/dist/overlays/tooltip.d.ts +57 -0
  634. package/dist/overlays/tooltip.js +95 -0
  635. package/dist/primitives/avatar.d.ts +51 -0
  636. package/dist/primitives/avatar.js +93 -0
  637. package/dist/primitives/button.d.ts +58 -0
  638. package/dist/primitives/button.js +104 -0
  639. package/dist/primitives/chip.d.ts +73 -0
  640. package/dist/primitives/chip.js +238 -0
  641. package/dist/primitives/icon-button.d.ts +41 -0
  642. package/dist/primitives/icon-button.js +59 -0
  643. package/dist/primitives/index.d.ts +10 -0
  644. package/dist/primitives/index.js +10 -0
  645. package/dist/primitives/kbd.d.ts +17 -0
  646. package/dist/primitives/kbd.js +24 -0
  647. package/dist/primitives/separator.d.ts +25 -0
  648. package/dist/primitives/separator.js +30 -0
  649. package/dist/primitives/skeleton.d.ts +20 -0
  650. package/dist/primitives/skeleton.js +27 -0
  651. package/dist/primitives/spinner.d.ts +26 -0
  652. package/dist/primitives/spinner.js +31 -0
  653. package/dist/primitives/status-dot.d.ts +51 -0
  654. package/dist/primitives/status-dot.js +57 -0
  655. package/dist/styles.css +97 -0
  656. package/dist/system/agent-skin.d.ts +27 -0
  657. package/dist/system/agent-skin.js +20 -0
  658. package/dist/system/density.d.ts +73 -0
  659. package/dist/system/density.js +111 -0
  660. package/dist/system/index.d.ts +12 -0
  661. package/dist/system/index.js +10 -0
  662. package/dist/system/overrides.d.ts +80 -0
  663. package/dist/system/overrides.js +277 -0
  664. package/dist/system/portal.d.ts +56 -0
  665. package/dist/system/portal.js +193 -0
  666. package/dist/system/prepaint.d.ts +134 -0
  667. package/dist/system/prepaint.js +120 -0
  668. package/dist/system/theme-provider.d.ts +290 -0
  669. package/dist/system/theme-provider.js +543 -0
  670. package/dist/system/theme-registry.d.ts +53 -0
  671. package/dist/system/theme-registry.js +66 -0
  672. package/dist/system/use-density.d.ts +50 -0
  673. package/dist/system/use-density.js +232 -0
  674. package/dist/system/use-isomorphic-layout-effect.js +33 -0
  675. package/dist/system/use-theme.d.ts +30 -0
  676. package/dist/system/use-theme.js +36 -0
  677. package/dist/system/vocabulary.d.ts +16 -0
  678. package/dist/system/vocabulary.js +125 -0
  679. package/dist/theming/contrast.d.ts +2 -0
  680. package/dist/theming/contrast.js +2 -0
  681. package/dist/theming/create-theme.d.ts +195 -0
  682. package/dist/theming/create-theme.js +524 -0
  683. package/dist/theming/index.d.ts +4 -0
  684. package/dist/theming/index.js +4 -0
  685. package/dist/theming/serialize.d.ts +167 -0
  686. package/dist/theming/serialize.js +241 -0
  687. package/manifest/components/accordion.json +173 -0
  688. package/manifest/components/activity-graph.json +104 -0
  689. package/manifest/components/agent-card.json +150 -0
  690. package/manifest/components/agent-handoff.json +104 -0
  691. package/manifest/components/agent-mode-badge.json +102 -0
  692. package/manifest/components/agent-pile.json +147 -0
  693. package/manifest/components/agent-plan.json +74 -0
  694. package/manifest/components/agent-status.json +87 -0
  695. package/manifest/components/agent-surface.json +93 -0
  696. package/manifest/components/alert-dialog.json +215 -0
  697. package/manifest/components/animated-number.json +75 -0
  698. package/manifest/components/app-bar.json +297 -0
  699. package/manifest/components/app-shell.json +526 -0
  700. package/manifest/components/app-window-frame.json +124 -0
  701. package/manifest/components/approval-card.json +136 -0
  702. package/manifest/components/artifact-card.json +93 -0
  703. package/manifest/components/ask-box.json +288 -0
  704. package/manifest/components/audience-icon.json +46 -0
  705. package/manifest/components/autocomplete.json +262 -0
  706. package/manifest/components/avatar-group.json +83 -0
  707. package/manifest/components/avatar.json +113 -0
  708. package/manifest/components/background-inbox.json +79 -0
  709. package/manifest/components/band.json +104 -0
  710. package/manifest/components/bento.json +306 -0
  711. package/manifest/components/branch-picker.json +146 -0
  712. package/manifest/components/breadcrumb.json +85 -0
  713. package/manifest/components/button-group.json +91 -0
  714. package/manifest/components/button.json +163 -0
  715. package/manifest/components/calendar.json +65 -0
  716. package/manifest/components/canvas-split-body.json +66 -0
  717. package/manifest/components/canvas-split-document.json +55 -0
  718. package/manifest/components/canvas-split-header.json +97 -0
  719. package/manifest/components/canvas-split-line.json +66 -0
  720. package/manifest/components/canvas-split-message.json +70 -0
  721. package/manifest/components/canvas-split-thread.json +55 -0
  722. package/manifest/components/canvas-split.json +61 -0
  723. package/manifest/components/card.json +152 -0
  724. package/manifest/components/carousel.json +242 -0
  725. package/manifest/components/catalogue-icon.json +46 -0
  726. package/manifest/components/channel-beta-icon.json +46 -0
  727. package/manifest/components/channel-matrix.json +239 -0
  728. package/manifest/components/channel-released-icon.json +46 -0
  729. package/manifest/components/chart-container.json +127 -0
  730. package/manifest/components/chart-ramp.json +82 -0
  731. package/manifest/components/chart-swatch.json +72 -0
  732. package/manifest/components/chart-tooltip-content.json +140 -0
  733. package/manifest/components/chart.json +117 -0
  734. package/manifest/components/chat-empty-state.json +55 -0
  735. package/manifest/components/chat-panel-assistant-message.json +52 -0
  736. package/manifest/components/chat-panel-composer.json +74 -0
  737. package/manifest/components/chat-panel-messages.json +52 -0
  738. package/manifest/components/chat-panel-typing.json +52 -0
  739. package/manifest/components/chat-panel-user-message.json +52 -0
  740. package/manifest/components/chat-panel.json +58 -0
  741. package/manifest/components/checkbox-group.json +70 -0
  742. package/manifest/components/checkbox.json +106 -0
  743. package/manifest/components/checkpoint-history.json +91 -0
  744. package/manifest/components/chip.json +174 -0
  745. package/manifest/components/clamp.json +125 -0
  746. package/manifest/components/cli-tool-icon.json +46 -0
  747. package/manifest/components/code-block.json +107 -0
  748. package/manifest/components/code-diff.json +104 -0
  749. package/manifest/components/code-runner.json +124 -0
  750. package/manifest/components/collapsible.json +133 -0
  751. package/manifest/components/color-area.json +62 -0
  752. package/manifest/components/color-field.json +91 -0
  753. package/manifest/components/color-picker.json +235 -0
  754. package/manifest/components/color-slider.json +84 -0
  755. package/manifest/components/color-swatch.json +79 -0
  756. package/manifest/components/colors-section.json +70 -0
  757. package/manifest/components/combobox.json +265 -0
  758. package/manifest/components/command-palette.json +222 -0
  759. package/manifest/components/compaction-row.json +128 -0
  760. package/manifest/components/comparison-card.json +98 -0
  761. package/manifest/components/composer-actions.json +65 -0
  762. package/manifest/components/composer-attach-button.json +65 -0
  763. package/manifest/components/composer-attachment-chip.json +83 -0
  764. package/manifest/components/composer-attachments.json +60 -0
  765. package/manifest/components/composer-bar.json +76 -0
  766. package/manifest/components/composer-command-item.json +85 -0
  767. package/manifest/components/composer-context.json +71 -0
  768. package/manifest/components/composer-input.json +77 -0
  769. package/manifest/components/composer-menu-item.json +75 -0
  770. package/manifest/components/composer-menu.json +89 -0
  771. package/manifest/components/composer-model-item.json +82 -0
  772. package/manifest/components/composer-model-trigger.json +81 -0
  773. package/manifest/components/composer-person-item.json +86 -0
  774. package/manifest/components/composer-send.json +86 -0
  775. package/manifest/components/composer-toolbar.json +65 -0
  776. package/manifest/components/composer-voice-button.json +71 -0
  777. package/manifest/components/composer-voice.json +81 -0
  778. package/manifest/components/composer.json +238 -0
  779. package/manifest/components/computer-use.json +98 -0
  780. package/manifest/components/confidence-marker.json +86 -0
  781. package/manifest/components/connection-state.json +103 -0
  782. package/manifest/components/container.json +75 -0
  783. package/manifest/components/context-breakdown.json +72 -0
  784. package/manifest/components/context-menu.json +134 -0
  785. package/manifest/components/context-usage.json +98 -0
  786. package/manifest/components/conversation-search.json +111 -0
  787. package/manifest/components/copy-button.json +118 -0
  788. package/manifest/components/cost-meter.json +84 -0
  789. package/manifest/components/cue-logotype.json +110 -0
  790. package/manifest/components/cue-mark.json +111 -0
  791. package/manifest/components/cue-portal-frame.json +65 -0
  792. package/manifest/components/data-row.json +222 -0
  793. package/manifest/components/data-table-pagination.json +97 -0
  794. package/manifest/components/data-table-toolbar.json +127 -0
  795. package/manifest/components/data-tree.json +185 -0
  796. package/manifest/components/date-field.json +93 -0
  797. package/manifest/components/date-picker.json +255 -0
  798. package/manifest/components/date-range-picker.json +255 -0
  799. package/manifest/components/day-separator.json +63 -0
  800. package/manifest/components/delegation-card.json +196 -0
  801. package/manifest/components/density.json +93 -0
  802. package/manifest/components/description-list.json +91 -0
  803. package/manifest/components/diagram.json +126 -0
  804. package/manifest/components/dialog.json +222 -0
  805. package/manifest/components/disclosure.json +134 -0
  806. package/manifest/components/dmx-bar.json +107 -0
  807. package/manifest/components/dmx-strip.json +117 -0
  808. package/manifest/components/document-reference.json +108 -0
  809. package/manifest/components/draft-restore.json +96 -0
  810. package/manifest/components/drawer.json +204 -0
  811. package/manifest/components/dropdown-menu.json +275 -0
  812. package/manifest/components/edit-message.json +131 -0
  813. package/manifest/components/elements-command-palette.json +122 -0
  814. package/manifest/components/elements-composer.json +71 -0
  815. package/manifest/components/elements-data-table.json +75 -0
  816. package/manifest/components/elements-timeline.json +77 -0
  817. package/manifest/components/elicitation-form.json +130 -0
  818. package/manifest/components/empty-state-composer.json +71 -0
  819. package/manifest/components/empty-state-greeting.json +49 -0
  820. package/manifest/components/empty-state-suggestion.json +60 -0
  821. package/manifest/components/empty-state-suggestions.json +49 -0
  822. package/manifest/components/empty-state.json +111 -0
  823. package/manifest/components/end-of-turn-summary.json +89 -0
  824. package/manifest/components/env-var-input.json +194 -0
  825. package/manifest/components/error-state.json +93 -0
  826. package/manifest/components/export-dialog.json +101 -0
  827. package/manifest/components/eyebrow.json +59 -0
  828. package/manifest/components/feedback-dialog.json +133 -0
  829. package/manifest/components/field-description.json +66 -0
  830. package/manifest/components/field-error.json +87 -0
  831. package/manifest/components/field-label.json +66 -0
  832. package/manifest/components/field.json +82 -0
  833. package/manifest/components/file-tree.json +96 -0
  834. package/manifest/components/file-upload.json +204 -0
  835. package/manifest/components/flow-background.json +50 -0
  836. package/manifest/components/flow-controls.json +50 -0
  837. package/manifest/components/flow-graph.json +86 -0
  838. package/manifest/components/folder-icon.json +46 -0
  839. package/manifest/components/footer.json +133 -0
  840. package/manifest/components/frac.json +68 -0
  841. package/manifest/components/frames.json +210 -0
  842. package/manifest/components/generation-loader.json +78 -0
  843. package/manifest/components/generative-ui.json +125 -0
  844. package/manifest/components/grid.json +132 -0
  845. package/manifest/components/group-bar.json +122 -0
  846. package/manifest/components/guardrail-notice.json +109 -0
  847. package/manifest/components/hover-card.json +189 -0
  848. package/manifest/components/icon-button.json +106 -0
  849. package/manifest/components/image-generation.json +73 -0
  850. package/manifest/components/info-tip.json +133 -0
  851. package/manifest/components/inline-citation.json +90 -0
  852. package/manifest/components/input-group.json +112 -0
  853. package/manifest/components/input.json +121 -0
  854. package/manifest/components/inspector.json +199 -0
  855. package/manifest/components/item.json +163 -0
  856. package/manifest/components/job-progress.json +116 -0
  857. package/manifest/components/kbd.json +52 -0
  858. package/manifest/components/launcher-bubble.json +130 -0
  859. package/manifest/components/ledger.json +330 -0
  860. package/manifest/components/link.json +94 -0
  861. package/manifest/components/live-region-announcer.json +95 -0
  862. package/manifest/components/log-viewer.json +172 -0
  863. package/manifest/components/map-answer.json +97 -0
  864. package/manifest/components/markdown-text.json +126 -0
  865. package/manifest/components/math-block.json +84 -0
  866. package/manifest/components/mcp-server-icon.json +46 -0
  867. package/manifest/components/mcp-server-panel.json +102 -0
  868. package/manifest/components/memory-chips.json +73 -0
  869. package/manifest/components/menubar.json +184 -0
  870. package/manifest/components/message-actions.json +125 -0
  871. package/manifest/components/message-attachments.json +71 -0
  872. package/manifest/components/message-branches.json +83 -0
  873. package/manifest/components/message-list.json +121 -0
  874. package/manifest/components/message-pair.json +107 -0
  875. package/manifest/components/message-queue.json +85 -0
  876. package/manifest/components/message-timing.json +69 -0
  877. package/manifest/components/message.json +149 -0
  878. package/manifest/components/meter.json +150 -0
  879. package/manifest/components/mobile-composer.json +163 -0
  880. package/manifest/components/model-picker.json +87 -0
  881. package/manifest/components/multi-select.json +255 -0
  882. package/manifest/components/musical-time-input.json +141 -0
  883. package/manifest/components/navigation-menu.json +269 -0
  884. package/manifest/components/node-card.json +144 -0
  885. package/manifest/components/node-handle.json +84 -0
  886. package/manifest/components/number-field.json +131 -0
  887. package/manifest/components/number-ticker.json +67 -0
  888. package/manifest/components/onboarding.json +100 -0
  889. package/manifest/components/otp-field.json +163 -0
  890. package/manifest/components/page-shell.json +129 -0
  891. package/manifest/components/pagination.json +108 -0
  892. package/manifest/components/panel-header.json +89 -0
  893. package/manifest/components/panel.json +71 -0
  894. package/manifest/components/password-input.json +171 -0
  895. package/manifest/components/permission-grant.json +115 -0
  896. package/manifest/components/permission-scopes.json +184 -0
  897. package/manifest/components/piano-keyboard.json +149 -0
  898. package/manifest/components/plussie.json +140 -0
  899. package/manifest/components/popover.json +231 -0
  900. package/manifest/components/preset-section.json +80 -0
  901. package/manifest/components/preview.json +294 -0
  902. package/manifest/components/progress.json +114 -0
  903. package/manifest/components/prompt-library.json +122 -0
  904. package/manifest/components/queue-dock.json +139 -0
  905. package/manifest/components/quota-banner.json +113 -0
  906. package/manifest/components/quote-reply.json +129 -0
  907. package/manifest/components/radio-group.json +83 -0
  908. package/manifest/components/radio.json +94 -0
  909. package/manifest/components/rating.json +188 -0
  910. package/manifest/components/read-aloud.json +139 -0
  911. package/manifest/components/reasoning-effort.json +95 -0
  912. package/manifest/components/reasoning-panel.json +135 -0
  913. package/manifest/components/recommendation-card.json +133 -0
  914. package/manifest/components/regenerate-menu.json +107 -0
  915. package/manifest/components/replay-player.json +124 -0
  916. package/manifest/components/research-report.json +87 -0
  917. package/manifest/components/resizable.json +91 -0
  918. package/manifest/components/retrieval-chunks.json +98 -0
  919. package/manifest/components/revert-dock.json +197 -0
  920. package/manifest/components/reviewable-diff.json +113 -0
  921. package/manifest/components/risk-badge.json +89 -0
  922. package/manifest/components/row.json +122 -0
  923. package/manifest/components/schedule-card.json +121 -0
  924. package/manifest/components/score-breakdown.json +108 -0
  925. package/manifest/components/scroll-anchor.json +84 -0
  926. package/manifest/components/scroll-area.json +114 -0
  927. package/manifest/components/scrollable-tabs-list.json +91 -0
  928. package/manifest/components/scrub-input.json +268 -0
  929. package/manifest/components/seam-cell.json +91 -0
  930. package/manifest/components/seam-grid.json +84 -0
  931. package/manifest/components/seam-list.json +56 -0
  932. package/manifest/components/search-input.json +195 -0
  933. package/manifest/components/section-header.json +140 -0
  934. package/manifest/components/segmented-control.json +178 -0
  935. package/manifest/components/select.json +253 -0
  936. package/manifest/components/separator.json +56 -0
  937. package/manifest/components/settings-panel.json +152 -0
  938. package/manifest/components/shape-section.json +70 -0
  939. package/manifest/components/shared-conversation.json +107 -0
  940. package/manifest/components/sheet.json +210 -0
  941. package/manifest/components/shimmer-label.json +61 -0
  942. package/manifest/components/sidebar.json +245 -0
  943. package/manifest/components/signal-edge.json +56 -0
  944. package/manifest/components/skeleton.json +46 -0
  945. package/manifest/components/skill-icon.json +46 -0
  946. package/manifest/components/slider.json +106 -0
  947. package/manifest/components/sources.json +97 -0
  948. package/manifest/components/sparkline.json +89 -0
  949. package/manifest/components/speaker-identity.json +66 -0
  950. package/manifest/components/spec-sheet.json +93 -0
  951. package/manifest/components/spectrum-visualizer.json +147 -0
  952. package/manifest/components/spinner.json +71 -0
  953. package/manifest/components/stack-icon.json +46 -0
  954. package/manifest/components/stack.json +143 -0
  955. package/manifest/components/stacks-matrix-icon.json +46 -0
  956. package/manifest/components/stat.json +111 -0
  957. package/manifest/components/status-bar.json +233 -0
  958. package/manifest/components/status-dot.json +97 -0
  959. package/manifest/components/stepper.json +107 -0
  960. package/manifest/components/stopped-run.json +97 -0
  961. package/manifest/components/streaming-text.json +82 -0
  962. package/manifest/components/sub.json +45 -0
  963. package/manifest/components/subagent-list.json +106 -0
  964. package/manifest/components/suggestions.json +106 -0
  965. package/manifest/components/sup.json +45 -0
  966. package/manifest/components/swap-label.json +86 -0
  967. package/manifest/components/switch.json +102 -0
  968. package/manifest/components/table-scroll-region.json +78 -0
  969. package/manifest/components/table.json +306 -0
  970. package/manifest/components/tabs.json +156 -0
  971. package/manifest/components/tags-input.json +255 -0
  972. package/manifest/components/tail-status.json +138 -0
  973. package/manifest/components/terminal-block.json +111 -0
  974. package/manifest/components/terminal-frame.json +146 -0
  975. package/manifest/components/textarea.json +104 -0
  976. package/manifest/components/theme-configurator.json +158 -0
  977. package/manifest/components/theme-provider.json +228 -0
  978. package/manifest/components/thinking-indicator.json +69 -0
  979. package/manifest/components/thread-list.json +87 -0
  980. package/manifest/components/thread-search.json +108 -0
  981. package/manifest/components/threshold-rail.json +223 -0
  982. package/manifest/components/time-boundary.json +68 -0
  983. package/manifest/components/time-field.json +93 -0
  984. package/manifest/components/timeline-ruler.json +178 -0
  985. package/manifest/components/timeline.json +131 -0
  986. package/manifest/components/title-bar.json +97 -0
  987. package/manifest/components/toast.json +140 -0
  988. package/manifest/components/todo-list.json +76 -0
  989. package/manifest/components/toggle-group.json +134 -0
  990. package/manifest/components/toggle.json +140 -0
  991. package/manifest/components/token-editor.json +106 -0
  992. package/manifest/components/tool-call-card.json +268 -0
  993. package/manifest/components/tool-call.json +147 -0
  994. package/manifest/components/tool-error.json +141 -0
  995. package/manifest/components/tool-group.json +97 -0
  996. package/manifest/components/tool-timeline.json +147 -0
  997. package/manifest/components/toolbar.json +192 -0
  998. package/manifest/components/tooltip.json +199 -0
  999. package/manifest/components/trace-waterfall.json +84 -0
  1000. package/manifest/components/tree-visibility-toggle.json +99 -0
  1001. package/manifest/components/tree.json +182 -0
  1002. package/manifest/components/turn-footer.json +133 -0
  1003. package/manifest/components/two-step-button.json +150 -0
  1004. package/manifest/components/typing-indicator.json +60 -0
  1005. package/manifest/components/universe-grid.json +155 -0
  1006. package/manifest/components/unread-divider.json +58 -0
  1007. package/manifest/components/usage-chart.json +162 -0
  1008. package/manifest/components/verdict-row.json +106 -0
  1009. package/manifest/components/voice-conversation.json +141 -0
  1010. package/manifest/components/web-preview.json +105 -0
  1011. package/manifest/components/web-search.json +108 -0
  1012. package/manifest/components/work-collapse.json +125 -0
  1013. package/manifest/fixtures.json +776 -0
  1014. package/manifest/manifest.json +5037 -0
  1015. package/manifest/tokens.json +288 -0
  1016. package/package.json +278 -0
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { take } from "./range.js";
4
+ import { useMemo } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/elements/streaming-text.tsx
7
+ /**
8
+ * Tokens arrive softly: the newest words land in blue and settle into ink.
9
+ *
10
+ * @example
11
+ * import { StreamingText } from "@cueplusplus/ui/elements";
12
+ *
13
+ * <StreamingText
14
+ * segments={[{ text: "Hello world" }, { text: "thread.tsx", mono: true }]}
15
+ * count={3}
16
+ * streaming
17
+ * />
18
+ */
19
+ function StreamingText({ segments, count, streaming, className, ...props }) {
20
+ const words = useMemo(() => segments.flatMap((segment) => segment.text.split(" ").map((word) => ({
21
+ word,
22
+ mono: segment.mono ?? false
23
+ }))), [segments]);
24
+ const shown = take(words, count);
25
+ return /* @__PURE__ */ jsxs("p", {
26
+ "data-slot": "streaming-text",
27
+ className: cn("min-h-[8.5rem] max-w-sm text-(length:--cue-text-body) leading-(--cue-leading-ui) text-pretty", className),
28
+ ...props,
29
+ children: [shown.map(({ word, mono: isMono }, i) => {
30
+ const fresh = streaming && shown.length - 1 - i < 2;
31
+ return /* @__PURE__ */ jsxs("span", {
32
+ className: "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both duration-500 motion-reduce:animate-none",
33
+ children: [/* @__PURE__ */ jsx("span", {
34
+ className: cn("transition-colors duration-700 motion-reduce:transition-none", fresh && "text-stream", isMono && "bg-surface-2 rounded-(--radius-control) px-1.5 py-0.5 font-mono text-[0.85em]"),
35
+ children: word
36
+ }), " "]
37
+ }, i);
38
+ }), streaming && shown.length > 0 && /* @__PURE__ */ jsx("span", {
39
+ "aria-hidden": true,
40
+ className: "-mb-0.5 ml-0.5 inline-block h-4 w-0.5 animate-pulse rounded-full bg-stream"
41
+ })]
42
+ });
43
+ }
44
+ //#endregion
45
+ export { StreamingText };
@@ -0,0 +1,37 @@
1
+ import { ComponentProps } from "react";
2
+ //#region src/elements/subagent-list.d.ts
3
+ /** One delegated agent: who it is and what it runs on. */
4
+ interface SubagentItem {
5
+ /** The subagent's name, as the transcript refers to it. */
6
+ name: string;
7
+ /** The model it runs on, shown in mono beside the name. */
8
+ model: string;
9
+ }
10
+ /**
11
+ * Parallel workers with their own progress, models, and completions.
12
+ *
13
+ * @example
14
+ * import { SubagentList } from "@cueplusplus/ui/elements";
15
+ *
16
+ * <SubagentList
17
+ * agents={[{ name: "Researcher", model: "Sonnet" }]}
18
+ * completedCount={0}
19
+ * progress={[40]}
20
+ * showSummary={false}
21
+ * summaryAgent={{ name: "Summarizer", model: "Haiku" }}
22
+ * />
23
+ */
24
+ declare function SubagentList({ agents, completedCount, progress, showSummary, summaryAgent, className, ...props }: Omit<ComponentProps<"div">, "children" | "agents" | "completedCount" | "progress" | "showSummary" | "summaryAgent"> & {
25
+ /** Parallel workers shown as cards with name and model. */
26
+ agents: readonly SubagentItem[];
27
+ /** How many agents from the start are marked complete. */
28
+ completedCount: number;
29
+ /** Per-agent progress widths used while a worker is still running. */
30
+ progress: readonly number[];
31
+ /** When true the summary agent card is revealed under the list. */
32
+ showSummary: boolean;
33
+ /** Agent shown in the summary card once showSummary is true. */
34
+ summaryAgent: SubagentItem;
35
+ }): import("react").JSX.Element;
36
+ //#endregion
37
+ export { SubagentItem, SubagentList };
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { mono, paper } from "./surfaces.js";
4
+ import { pct } from "./range.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { CheckIcon, Loader2Icon } from "lucide-react";
7
+ //#region src/elements/subagent-list.tsx
8
+ /**
9
+ * Parallel workers with their own progress, models, and completions.
10
+ *
11
+ * @example
12
+ * import { SubagentList } from "@cueplusplus/ui/elements";
13
+ *
14
+ * <SubagentList
15
+ * agents={[{ name: "Researcher", model: "Sonnet" }]}
16
+ * completedCount={0}
17
+ * progress={[40]}
18
+ * showSummary={false}
19
+ * summaryAgent={{ name: "Summarizer", model: "Haiku" }}
20
+ * />
21
+ */
22
+ function SubagentList({ agents, completedCount, progress, showSummary, summaryAgent, className, ...props }) {
23
+ return /* @__PURE__ */ jsxs("div", {
24
+ "data-slot": "subagent-list",
25
+ className: cn("flex min-h-[14.5rem] w-full max-w-xs flex-col gap-2", className),
26
+ ...props,
27
+ children: [agents.map((agent, index) => {
28
+ const done = index < completedCount;
29
+ const width = progress[index] ?? 0;
30
+ return /* @__PURE__ */ jsxs("div", {
31
+ className: cn(paper, "flex flex-col gap-2 rounded-(--radius-overlay) px-3.5 py-2.5"),
32
+ children: [/* @__PURE__ */ jsxs("div", {
33
+ className: "flex items-center gap-2",
34
+ children: [
35
+ done ? /* @__PURE__ */ jsx(CheckIcon, { className: "cue-elements-fade-in cue-elements-zoom-in-90 cue-elements-animate-in size-3.5 shrink-0 text-ok duration-200" }) : /* @__PURE__ */ jsx(Loader2Icon, { className: "text-fg-subtle size-3.5 shrink-0 animate-spin motion-reduce:animate-none" }),
36
+ /* @__PURE__ */ jsx("span", {
37
+ className: "flex-1 truncate text-(length:--cue-text-body)",
38
+ children: agent.name
39
+ }),
40
+ /* @__PURE__ */ jsx("span", {
41
+ className: cn(mono, "text-fg-subtle"),
42
+ children: agent.model
43
+ })
44
+ ]
45
+ }), /* @__PURE__ */ jsx("span", {
46
+ className: "bg-surface-2 h-[3px] w-full overflow-hidden rounded-full",
47
+ children: /* @__PURE__ */ jsx("span", {
48
+ className: cn("block h-full rounded-full transition-[width] duration-700", done ? "bg-ok/70" : "bg-accent"),
49
+ style: { width: `${pct(width, 100)}%` }
50
+ })
51
+ })]
52
+ }, agent.name);
53
+ }), showSummary && /* @__PURE__ */ jsxs("div", {
54
+ className: cn("bg-surface-1 border border-border", "cue-elements-fade-in cue-elements-slide-in-from-bottom-2 cue-elements-animate-in flex flex-col gap-2 rounded-(--radius-overlay) px-3.5 py-2.5 duration-300"),
55
+ children: [/* @__PURE__ */ jsxs("div", {
56
+ className: "flex items-center gap-2",
57
+ children: [
58
+ /* @__PURE__ */ jsx(Loader2Icon, { className: "text-fg-subtle size-3.5 shrink-0 animate-spin motion-reduce:animate-none" }),
59
+ /* @__PURE__ */ jsx("span", {
60
+ className: "flex-1 truncate text-(length:--cue-text-body)",
61
+ children: summaryAgent.name
62
+ }),
63
+ /* @__PURE__ */ jsx("span", {
64
+ className: cn("font-mono text-(length:--cue-text-label) tracking-tight", "text-fg-subtle"),
65
+ children: summaryAgent.model
66
+ })
67
+ ]
68
+ }), /* @__PURE__ */ jsx("span", {
69
+ className: "bg-surface-2 h-[3px] w-full overflow-hidden rounded-full",
70
+ children: /* @__PURE__ */ jsx("span", {
71
+ className: "bg-accent block h-full rounded-full transition-[width] duration-700",
72
+ style: { width: "42%" }
73
+ })
74
+ })]
75
+ })]
76
+ });
77
+ }
78
+ //#endregion
79
+ export { SubagentList };
@@ -0,0 +1,30 @@
1
+ import { ComponentProps } from "react";
2
+ //#region src/elements/suggestions.d.ts
3
+ interface SuggestionsProps extends Omit<ComponentProps<"div">, "children"> {
4
+ /** Follow-up prompt pills rendered in order. */
5
+ suggestions: readonly string[];
6
+ /** The pill currently pressed, or null when none is selected. */
7
+ selectedSuggestion: string | null;
8
+ /** Identity key that remounts the row so the stagger entrance can replay. */
9
+ cycle: number;
10
+ /** Called when a suggestion pill is pressed. */
11
+ onSuggestion: (suggestion: string) => void;
12
+ /** pills wraps suggestions into a centered row; list stacks them as full-width rows. */
13
+ variant?: "pills" | "list";
14
+ }
15
+ /**
16
+ * Prompt pills that stagger in after a reply and invite the next turn.
17
+ *
18
+ * @example
19
+ * import { Suggestions } from "@cueplusplus/ui/elements";
20
+ *
21
+ * <Suggestions
22
+ * suggestions={["Explain more", "Show an example"]}
23
+ * selectedSuggestion={null}
24
+ * cycle={0}
25
+ * onSuggestion={setSelected}
26
+ * />
27
+ */
28
+ declare function Suggestions({ suggestions, selectedSuggestion, cycle, onSuggestion, variant, className, ...props }: SuggestionsProps): import("react").JSX.Element;
29
+ //#endregion
30
+ export { Suggestions, SuggestionsProps };
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { paper } from "./surfaces.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/elements/suggestions.tsx
6
+ /**
7
+ * Prompt pills that stagger in after a reply and invite the next turn.
8
+ *
9
+ * @example
10
+ * import { Suggestions } from "@cueplusplus/ui/elements";
11
+ *
12
+ * <Suggestions
13
+ * suggestions={["Explain more", "Show an example"]}
14
+ * selectedSuggestion={null}
15
+ * cycle={0}
16
+ * onSuggestion={setSelected}
17
+ * />
18
+ */
19
+ function Suggestions({ suggestions, selectedSuggestion, cycle, onSuggestion, variant = "pills", className, ...props }) {
20
+ const list = variant === "list";
21
+ return /* @__PURE__ */ jsx("div", {
22
+ "data-slot": "suggestions",
23
+ className: cn(list ? "flex w-full max-w-sm flex-col gap-2" : "flex max-w-md flex-wrap justify-center gap-2", className),
24
+ ...props,
25
+ children: suggestions.map((suggestion, index) => /* @__PURE__ */ jsx("button", {
26
+ type: "button",
27
+ "aria-pressed": selectedSuggestion === suggestion,
28
+ onClick: () => onSuggestion(suggestion),
29
+ className: cn(paper, "cue-elements-fade-in cue-elements-slide-in-from-bottom-2 cue-elements-animate-in cue-elements-fill-mode-both flex cursor-pointer items-center text-(length:--cue-text-body) transition-transform duration-300 hover:-translate-y-px active:scale-[0.96] motion-reduce:animate-none", list ? "w-full rounded-(--radius-overlay) px-4 py-2.5 text-start" : "rounded-full px-4 py-2", selectedSuggestion === suggestion && "bg-accent text-accent-fg"),
30
+ style: { animationDelay: `${index * 70}ms` },
31
+ children: suggestion
32
+ }, suggestion))
33
+ }, cycle);
34
+ }
35
+ //#endregion
36
+ export { Suggestions };
@@ -0,0 +1,85 @@
1
+ import { ComponentProps, ReactNode } from "react";
2
+ //#region src/elements/surfaces.d.ts
3
+ /** A card's ground: the first raised surface, with the standard hairline. */
4
+ declare const paper = "bg-surface-1 border border-border";
5
+ /** The same card, one rung up, for anything that floats over the page. */
6
+ declare const floating = "bg-surface-2 border border-border-overlay";
7
+ /** The recessed fill: a request box, a code slab, a composer row. */
8
+ declare const field = "bg-fg/[0.06]";
9
+ /** {@link field} for something clickable. */
10
+ declare const fieldInteractive = "bg-fg/[0.06] transition-colors hover:bg-fg/[0.09]";
11
+ /** The press affordance: a 4% squash on pointer-down, stilled under reduced motion. */
12
+ declare const pressable = "transition-transform duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] active:scale-[0.96] motion-reduce:transition-none";
13
+ /** A round chromeless icon button, with the ring cue puts on everything focusable. */
14
+ declare const ghostButton = "flex items-center justify-center rounded-full text-fg-muted outline-none transition-[background-color,color,scale] duration-150 hover:bg-surface-2 hover:text-fg active:scale-[0.96] focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent motion-reduce:transition-none";
15
+ /** The inverse fill: accent ground, accent ink — the one loud button in a panel. */
16
+ declare const inkButton = "bg-accent text-accent-fg transition-[background-color,scale] duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] hover:bg-accent-hover active:scale-[0.96] motion-reduce:transition-none";
17
+ /** The stacked layer of an icon crossfade. Both layers share one grid cell. */
18
+ declare const iconSwap = "[grid-area:1/1] transition-[opacity,scale,filter] duration-200 ease-[cubic-bezier(0.2,0,0,1)] motion-reduce:transition-none";
19
+ /** The icon that is showing. */
20
+ declare const iconSwapIn = "scale-100 opacity-100 blur-none";
21
+ /** The icon that is leaving: shrunk, blurred and gone. */
22
+ declare const iconSwapOut = "scale-[0.25] opacity-0 blur-[4px]";
23
+ /** The stacked layer of a label crossfade, measured by {@link SwapLabel}. */
24
+ declare const labelSwap = "col-start-1 row-start-1 flex w-max items-center gap-1.5 leading-none transition-[opacity,filter] duration-300 ease-[cubic-bezier(0.23,1,0.32,1)] motion-reduce:transition-none";
25
+ /** The label that is showing. */
26
+ declare const labelSwapIn = "opacity-100 blur-none";
27
+ /** The label that is leaving, and which must not be selectable while it goes. */
28
+ declare const labelSwapOut = "pointer-events-none select-none opacity-0 blur-[2px]";
29
+ /**
30
+ * The disclosure panel's motion, written against Base UI's collapsible.
31
+ *
32
+ * `--collapsible-panel-height` and the starting/ending style attributes are Base
33
+ * UI's; Radix sets neither, which is why the four collapsible elements are
34
+ * wired to the peer this package already requires rather than to the one
35
+ * upstream's registry asks for.
36
+ */
37
+ declare const collapsePanel = "h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-200 ease-[cubic-bezier(0.32,0.72,0,1)] data-[ending-style]:h-0 data-[starting-style]:h-0 motion-reduce:transition-none";
38
+ /** The streaming hue: what is happening right now, rather than what has happened. */
39
+ declare const live = "text-stream";
40
+ /** The metadata typeface: mono, one rung down, tight. Used about a hundred times. */
41
+ declare const mono = "font-mono text-(length:--cue-text-label) tracking-tight";
42
+ /**
43
+ * Scroll region for content that keeps its own whitespace. `whitespace-pre` in
44
+ * a bounded box clips a long line with no way to reach it, so the rows scroll
45
+ * instead.
46
+ *
47
+ * `codeSurface` wraps all the rows as one block, and the rows are its children.
48
+ * It cannot go on each row: `min-width: 100%` resolves against the scroll
49
+ * container's visible width rather than its scroll width, so a per-row width
50
+ * leaves every row except the longest ending its background at the fold.
51
+ */
52
+ declare const codeScroll = "overflow-x-auto";
53
+ /** The block inside {@link codeScroll} that all the rows share. */
54
+ declare const codeSurface = "w-max min-w-full";
55
+ /**
56
+ * A label that sweeps while something is still happening.
57
+ *
58
+ * The sweep is `.cue-elements-shimmer`, declared with its keyframes in
59
+ * `@cueplusplus/ui/elements.css`; without that stylesheet the label simply
60
+ * sits still, which is also what it does under `prefers-reduced-motion`.
61
+ */
62
+ declare function ShimmerLabel({ active, className, ...props }: ComponentProps<"span"> & {
63
+ /** Whether the sweep is running. Defaults to `true`. */
64
+ active?: boolean;
65
+ }): import("react").JSX.Element;
66
+ /**
67
+ * Two labels stacked in one cell, with the box's width animating between them.
68
+ *
69
+ * A `ResizeObserver` measures the layer that is showing, because the crossfade
70
+ * is only half the effect — a "Searching…" that becomes "Searched" has to make
71
+ * the row shrink, and neither layer can size the box while both are in it.
72
+ *
73
+ * The layer that is leaving is `aria-hidden`, so the outgoing text is neither
74
+ * announced nor copied into a selection.
75
+ */
76
+ declare function SwapLabel({ active, children, className }: {
77
+ /** Which of the two children is showing. */
78
+ active: 0 | 1;
79
+ /** Exactly two labels: the resting one and the active one. */
80
+ children: [ReactNode, ReactNode];
81
+ /** Extra classes for the measured box. */
82
+ className?: string;
83
+ }): import("react").JSX.Element;
84
+ //#endregion
85
+ export { ShimmerLabel, SwapLabel, codeScroll, codeSurface, collapsePanel, field, fieldInteractive, floating, ghostButton, iconSwap, iconSwapIn, iconSwapOut, inkButton, labelSwap, labelSwapIn, labelSwapOut, live, mono, paper, pressable };
@@ -0,0 +1,108 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { useLayoutEffect, useRef, useState } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/elements/surfaces.tsx
6
+ /** A card's ground: the first raised surface, with the standard hairline. */
7
+ const paper = "bg-surface-1 border border-border";
8
+ /** The same card, one rung up, for anything that floats over the page. */
9
+ const floating = "bg-surface-2 border border-border-overlay";
10
+ /** The recessed fill: a request box, a code slab, a composer row. */
11
+ const field = "bg-fg/[0.06]";
12
+ /** {@link field} for something clickable. */
13
+ const fieldInteractive = "bg-fg/[0.06] transition-colors hover:bg-fg/[0.09]";
14
+ /** The press affordance: a 4% squash on pointer-down, stilled under reduced motion. */
15
+ const pressable = "transition-transform duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] active:scale-[0.96] motion-reduce:transition-none";
16
+ /** A round chromeless icon button, with the ring cue puts on everything focusable. */
17
+ const ghostButton = "flex items-center justify-center rounded-full text-fg-muted outline-none transition-[background-color,color,scale] duration-150 hover:bg-surface-2 hover:text-fg active:scale-[0.96] focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent motion-reduce:transition-none";
18
+ /** The inverse fill: accent ground, accent ink — the one loud button in a panel. */
19
+ const inkButton = "bg-accent text-accent-fg transition-[background-color,scale] duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] hover:bg-accent-hover active:scale-[0.96] motion-reduce:transition-none";
20
+ /** The stacked layer of an icon crossfade. Both layers share one grid cell. */
21
+ const iconSwap = "[grid-area:1/1] transition-[opacity,scale,filter] duration-200 ease-[cubic-bezier(0.2,0,0,1)] motion-reduce:transition-none";
22
+ /** The icon that is showing. */
23
+ const iconSwapIn = "scale-100 opacity-100 blur-none";
24
+ /** The icon that is leaving: shrunk, blurred and gone. */
25
+ const iconSwapOut = "scale-[0.25] opacity-0 blur-[4px]";
26
+ /** The stacked layer of a label crossfade, measured by {@link SwapLabel}. */
27
+ const labelSwap = "col-start-1 row-start-1 flex w-max items-center gap-1.5 leading-none transition-[opacity,filter] duration-300 ease-[cubic-bezier(0.23,1,0.32,1)] motion-reduce:transition-none";
28
+ /** The label that is showing. */
29
+ const labelSwapIn = "opacity-100 blur-none";
30
+ /** The label that is leaving, and which must not be selectable while it goes. */
31
+ const labelSwapOut = "pointer-events-none select-none opacity-0 blur-[2px]";
32
+ /**
33
+ * The disclosure panel's motion, written against Base UI's collapsible.
34
+ *
35
+ * `--collapsible-panel-height` and the starting/ending style attributes are Base
36
+ * UI's; Radix sets neither, which is why the four collapsible elements are
37
+ * wired to the peer this package already requires rather than to the one
38
+ * upstream's registry asks for.
39
+ */
40
+ const collapsePanel = "h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-200 ease-[cubic-bezier(0.32,0.72,0,1)] data-[ending-style]:h-0 data-[starting-style]:h-0 motion-reduce:transition-none";
41
+ /** The streaming hue: what is happening right now, rather than what has happened. */
42
+ const live = "text-stream";
43
+ /** The metadata typeface: mono, one rung down, tight. Used about a hundred times. */
44
+ const mono = "font-mono text-(length:--cue-text-label) tracking-tight";
45
+ /**
46
+ * Scroll region for content that keeps its own whitespace. `whitespace-pre` in
47
+ * a bounded box clips a long line with no way to reach it, so the rows scroll
48
+ * instead.
49
+ *
50
+ * `codeSurface` wraps all the rows as one block, and the rows are its children.
51
+ * It cannot go on each row: `min-width: 100%` resolves against the scroll
52
+ * container's visible width rather than its scroll width, so a per-row width
53
+ * leaves every row except the longest ending its background at the fold.
54
+ */
55
+ const codeScroll = "overflow-x-auto";
56
+ /** The block inside {@link codeScroll} that all the rows share. */
57
+ const codeSurface = "w-max min-w-full";
58
+ /**
59
+ * A label that sweeps while something is still happening.
60
+ *
61
+ * The sweep is `.cue-elements-shimmer`, declared with its keyframes in
62
+ * `@cueplusplus/ui/elements.css`; without that stylesheet the label simply
63
+ * sits still, which is also what it does under `prefers-reduced-motion`.
64
+ */
65
+ function ShimmerLabel({ active = true, className, ...props }) {
66
+ return /* @__PURE__ */ jsx("span", {
67
+ "data-slot": "shimmer-label",
68
+ className: cn(active && "cue-elements-shimmer motion-reduce:animate-none", className),
69
+ ...props
70
+ });
71
+ }
72
+ /**
73
+ * Two labels stacked in one cell, with the box's width animating between them.
74
+ *
75
+ * A `ResizeObserver` measures the layer that is showing, because the crossfade
76
+ * is only half the effect — a "Searching…" that becomes "Searched" has to make
77
+ * the row shrink, and neither layer can size the box while both are in it.
78
+ *
79
+ * The layer that is leaving is `aria-hidden`, so the outgoing text is neither
80
+ * announced nor copied into a selection.
81
+ */
82
+ function SwapLabel({ active, children, className }) {
83
+ const restingRef = useRef(null);
84
+ const activeRef = useRef(null);
85
+ const [width, setWidth] = useState(null);
86
+ useLayoutEffect(() => {
87
+ const target = (active === 0 ? restingRef : activeRef).current;
88
+ if (!target) return void 0;
89
+ const measure = () => setWidth(Math.ceil(target.getBoundingClientRect().width));
90
+ measure();
91
+ const observer = new ResizeObserver(measure);
92
+ observer.observe(target);
93
+ return () => observer.disconnect();
94
+ }, [active]);
95
+ return /* @__PURE__ */ jsx("span", {
96
+ "data-slot": "swap-label",
97
+ style: width === null ? void 0 : { width },
98
+ className: cn("grid overflow-x-clip transition-[width] duration-300 ease-[cubic-bezier(0.23,1,0.32,1)] motion-reduce:transition-none", className),
99
+ children: children.map((layer, index) => /* @__PURE__ */ jsx("span", {
100
+ ref: index === 0 ? restingRef : activeRef,
101
+ "aria-hidden": active !== index,
102
+ className: cn(labelSwap, active === index ? labelSwapIn : labelSwapOut),
103
+ children: layer
104
+ }, index))
105
+ });
106
+ }
107
+ //#endregion
108
+ export { ShimmerLabel, SwapLabel, codeScroll, codeSurface, collapsePanel, field, fieldInteractive, floating, ghostButton, iconSwap, iconSwapIn, iconSwapOut, inkButton, labelSwap, labelSwapIn, labelSwapOut, live, mono, paper, pressable };
@@ -0,0 +1,131 @@
1
+ import * as React from "react";
2
+ //#region src/elements/tail-status.d.ts
3
+ /**
4
+ * How loudly the foot of the transcript is speaking.
5
+ *
6
+ * The attribute is Cursor's — it stamps `data-priority` on this row and on no
7
+ * other — and the two values are cue's smallest honest reading of it: a row is
8
+ * either narration a reader may ignore, or a line they are meant to act on.
9
+ * Nothing else in this family paints from it, so a console that wants a third
10
+ * level can add one in CSS against the same attribute.
11
+ */
12
+ type TailPriority = "normal" | "attention";
13
+ interface TailStatusProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
14
+ /**
15
+ * What is happening, in two or three words: `Running commands`,
16
+ * `Searching the codebase`. `TAIL_ACTIONS` is the shipped vocabulary and this
17
+ * prop is a plain string, so a product with its own verbs is not stuck with
18
+ * these ten.
19
+ */
20
+ action: string;
21
+ /**
22
+ * The thing the action is happening to — a path, a query, a topic. Truncates
23
+ * on its own so the action never has to; a sidebar transcript is 280px wide
24
+ * and a status line that elides its verb has said nothing.
25
+ */
26
+ detail?: string;
27
+ /**
28
+ * Whether the action is still going. `true` by default, because this row is
29
+ * the live one; turn it off for `Idle`, `Interrupted` and `Aborted`, which
30
+ * stops the sweep and empties the spinner's slot without moving the text.
31
+ */
32
+ active?: boolean;
33
+ /**
34
+ * Whether a new `action` animates into the row that is already there, or
35
+ * simply replaces the text.
36
+ *
37
+ * Cursor's flag, and the reason it needs one: a narration line that changes
38
+ * every few hundred milliseconds should read as one row being updated, while
39
+ * a line that means something *different* should read as a new row. `true`
40
+ * (the default) keys the label on its own text so each new action fades in
41
+ * where the last one was; `false` leaves it unkeyed, and the words change
42
+ * with no motion at all. A reduced-motion reader gets the second behaviour
43
+ * either way.
44
+ */
45
+ updatesInPlace?: boolean;
46
+ /** How loudly this row is speaking. See {@link TailPriority}. */
47
+ priority?: TailPriority;
48
+ /**
49
+ * Stop the run. The inline control exists only when this is given — Cursor's
50
+ * rule, and the right one: a Cancel that cannot cancel is worse than no
51
+ * Cancel.
52
+ */
53
+ onCancel?: () => void;
54
+ /**
55
+ * What the stop control is called. `Cancel` is Cursor's word; opencode uses
56
+ * `Interrupt` and `Stop` for the same button.
57
+ */
58
+ cancelLabel?: string;
59
+ /**
60
+ * Whether this row is a live region — whether a screen reader is told each
61
+ * time the action changes.
62
+ *
63
+ * **Answers itself by default, and that default is the interesting part.**
64
+ * Left alone the row speaks when it is the only thing that can, and goes
65
+ * quiet the moment a {@link LiveRegionAnnouncer} is mounted anywhere on the
66
+ * page: the announcer's table covers the same transitions this row narrates,
67
+ * so a console with both — the ordinary composition — would otherwise have
68
+ * every state read out twice, out of step, because the two regions update at
69
+ * different moments.
70
+ *
71
+ * The row is the one that defers because the announcer is the better speaker:
72
+ * it is a queue, spaced and depth-limited and paused while the page is hidden
73
+ * or a modal has the reader, and it is mounted empty and left mounted, which
74
+ * is the only way a live region is reliably announced. This row changes
75
+ * several times a second and comes and goes with the run.
76
+ *
77
+ * Set it explicitly to overrule that — `true` for a console whose announcer
78
+ * is fed something other than these actions, `false` for one that narrates
79
+ * the foot of the transcript some other way. An explicit answer always wins.
80
+ */
81
+ announce?: boolean;
82
+ }
83
+ /**
84
+ * The live row at the foot of a transcript: what the run is doing, right now.
85
+ *
86
+ * The one row every shipping agent UI has and no component catalogue ships. It
87
+ * is not a spinner and not a toast — it is a transcript row with
88
+ * `role="status"`, which is what makes it the *only* element in this family a
89
+ * screen reader is told about without being asked. Everything else here is
90
+ * drawn and left alone; this one announces itself politely each time the action
91
+ * changes, which is exactly the behaviour a person who cannot see the spinner
92
+ * needs and exactly the behaviour that becomes unbearable if it is used for
93
+ * anything else. One per transcript, at the foot, and nowhere else.
94
+ *
95
+ * **Unless something better is speaking.** {@link LiveRegionAnnouncer} is this
96
+ * family's other live region, and its table of transitions covers what this row
97
+ * narrates; a console that mounts both would have the run read out twice. So
98
+ * mounting an announcer takes the speech away from this row automatically — the
99
+ * words stay on the screen, the `role="status"` goes, and `data-announces` says
100
+ * which of the two it is doing. {@link TailStatusProps.announce} overrules it in
101
+ * either direction.
102
+ *
103
+ * The action and the detail are separate props rather than one composed string
104
+ * because they truncate differently: the action is short and must survive, the
105
+ * detail is a path and must not push it off the row.
106
+ *
107
+ * State is a prop, as everywhere in this family. The row holds no timer, counts
108
+ * nothing, and does not know whether the run is healthy — `active` says whether
109
+ * the sweep runs, `action` says what it says, and the caller changes both.
110
+ *
111
+ * @example
112
+ * import { TailStatus, TAIL_ACTIONS } from "@cueplusplus/ui/elements";
113
+ *
114
+ * <TailStatus
115
+ * action={TAIL_ACTIONS.searchingCode}
116
+ * detail="composer.tsx"
117
+ * onCancel={stop}
118
+ * />
119
+ * @example
120
+ * // Settled: no sweep, no spinner, and the text changes without motion.
121
+ * <TailStatus action={TAIL_ACTIONS.interrupted} active={false} updatesInPlace={false} />
122
+ * @example
123
+ * // Composed with the announcer: this row draws the state, the queue speaks it.
124
+ * <>
125
+ * <TailStatus action={TAIL_ACTIONS.running} detail="pnpm test" />
126
+ * <LiveRegionAnnouncer messages={log} />
127
+ * </>
128
+ */
129
+ declare const TailStatus: React.ForwardRefExoticComponent<TailStatusProps & React.RefAttributes<HTMLDivElement>>;
130
+ //#endregion
131
+ export { TailPriority, TailStatus, TailStatusProps };
@@ -0,0 +1,94 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { ShimmerLabel, ghostButton, mono } from "./surfaces.js";
4
+ import { useAnnouncerPresent } from "./live-region-announcer.js";
5
+ import * as React from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { Loader2Icon } from "lucide-react";
8
+ //#region src/elements/tail-status.tsx
9
+ /**
10
+ * The live row at the foot of a transcript: what the run is doing, right now.
11
+ *
12
+ * The one row every shipping agent UI has and no component catalogue ships. It
13
+ * is not a spinner and not a toast — it is a transcript row with
14
+ * `role="status"`, which is what makes it the *only* element in this family a
15
+ * screen reader is told about without being asked. Everything else here is
16
+ * drawn and left alone; this one announces itself politely each time the action
17
+ * changes, which is exactly the behaviour a person who cannot see the spinner
18
+ * needs and exactly the behaviour that becomes unbearable if it is used for
19
+ * anything else. One per transcript, at the foot, and nowhere else.
20
+ *
21
+ * **Unless something better is speaking.** {@link LiveRegionAnnouncer} is this
22
+ * family's other live region, and its table of transitions covers what this row
23
+ * narrates; a console that mounts both would have the run read out twice. So
24
+ * mounting an announcer takes the speech away from this row automatically — the
25
+ * words stay on the screen, the `role="status"` goes, and `data-announces` says
26
+ * which of the two it is doing. {@link TailStatusProps.announce} overrules it in
27
+ * either direction.
28
+ *
29
+ * The action and the detail are separate props rather than one composed string
30
+ * because they truncate differently: the action is short and must survive, the
31
+ * detail is a path and must not push it off the row.
32
+ *
33
+ * State is a prop, as everywhere in this family. The row holds no timer, counts
34
+ * nothing, and does not know whether the run is healthy — `active` says whether
35
+ * the sweep runs, `action` says what it says, and the caller changes both.
36
+ *
37
+ * @example
38
+ * import { TailStatus, TAIL_ACTIONS } from "@cueplusplus/ui/elements";
39
+ *
40
+ * <TailStatus
41
+ * action={TAIL_ACTIONS.searchingCode}
42
+ * detail="composer.tsx"
43
+ * onCancel={stop}
44
+ * />
45
+ * @example
46
+ * // Settled: no sweep, no spinner, and the text changes without motion.
47
+ * <TailStatus action={TAIL_ACTIONS.interrupted} active={false} updatesInPlace={false} />
48
+ * @example
49
+ * // Composed with the announcer: this row draws the state, the queue speaks it.
50
+ * <>
51
+ * <TailStatus action={TAIL_ACTIONS.running} detail="pnpm test" />
52
+ * <LiveRegionAnnouncer messages={log} />
53
+ * </>
54
+ */
55
+ const TailStatus = React.forwardRef(function TailStatus({ action, detail, active = true, updatesInPlace = true, priority = "normal", onCancel, cancelLabel = "Cancel", announce, className, ...elementProps }, ref) {
56
+ const spokenFor = useAnnouncerPresent();
57
+ const announces = announce ?? !spokenFor;
58
+ return /* @__PURE__ */ jsxs("div", {
59
+ ref,
60
+ role: announces ? "status" : void 0,
61
+ "data-slot": "tail-status",
62
+ "data-announces": String(announces),
63
+ "data-priority": priority,
64
+ "data-updates-in-place": String(updatesInPlace),
65
+ className: cn("flex w-full items-center gap-2.5 py-1.5", className),
66
+ ...elementProps,
67
+ children: [
68
+ /* @__PURE__ */ jsx("span", {
69
+ "aria-hidden": true,
70
+ className: "flex size-3.5 shrink-0 items-center justify-center",
71
+ children: active ? /* @__PURE__ */ jsx(Loader2Icon, { className: "size-3.5 animate-spin text-stream motion-reduce:animate-none" }) : null
72
+ }),
73
+ /* @__PURE__ */ jsxs("span", {
74
+ className: cn("flex min-w-0 flex-1 items-baseline gap-1.5 text-(length:--cue-text-ui)", updatesInPlace && "cue-elements-fade-in cue-elements-animate-in duration-200 motion-reduce:animate-none"),
75
+ children: [/* @__PURE__ */ jsx(ShimmerLabel, {
76
+ active,
77
+ className: cn("shrink-0", priority === "attention" ? "text-fg" : "text-fg-muted"),
78
+ children: action
79
+ }), detail === void 0 ? null : /* @__PURE__ */ jsx("span", {
80
+ className: cn(mono, "text-fg-subtle min-w-0 truncate"),
81
+ children: detail
82
+ })]
83
+ }, updatesInPlace ? action : void 0),
84
+ onCancel === void 0 ? null : /* @__PURE__ */ jsx("button", {
85
+ type: "button",
86
+ onClick: onCancel,
87
+ className: cn(ghostButton, mono, "shrink-0 rounded-(--radius-control) px-2 py-1 uppercase"),
88
+ children: cancelLabel
89
+ })
90
+ ]
91
+ });
92
+ });
93
+ //#endregion
94
+ export { TailStatus };