@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,81 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { ShimmerLabel, field, mono, paper } from "./surfaces.js";
4
+ import { pct, take } from "./range.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { DatabaseIcon } from "lucide-react";
7
+ //#region src/elements/retrieval-chunks.tsx
8
+ /**
9
+ * The passages a retrieval answer stands on, scored, before the answer itself arrives.
10
+ *
11
+ * @example
12
+ * import { RetrievalChunks } from "@cueplusplus/ui/elements";
13
+ *
14
+ * <RetrievalChunks
15
+ * query="how does draft restore work"
16
+ * chunks={chunks}
17
+ * visibleCount={3}
18
+ * searching={false}
19
+ * />
20
+ */
21
+ function RetrievalChunks({ query, chunks, visibleCount, searching, className, ...props }) {
22
+ return /* @__PURE__ */ jsxs("div", {
23
+ "data-slot": "retrieval-chunks",
24
+ className: cn("flex w-full max-w-sm flex-col gap-2.5", className),
25
+ ...props,
26
+ children: [
27
+ /* @__PURE__ */ jsxs("span", {
28
+ className: cn(field, "text-fg-muted inline-flex w-fit items-center gap-1.5 rounded-full px-3.5 py-2 text-(length:--cue-text-ui)"),
29
+ children: [/* @__PURE__ */ jsx(DatabaseIcon, { className: "text-fg-subtle size-3" }), query]
30
+ }),
31
+ /* @__PURE__ */ jsx("div", {
32
+ className: "text-fg-muted text-(length:--cue-text-ui)",
33
+ children: searching ? /* @__PURE__ */ jsx(ShimmerLabel, {
34
+ className: "relative inline-block leading-none",
35
+ children: "Retrieving"
36
+ }) : /* @__PURE__ */ jsxs("span", {
37
+ className: "cue-elements-fade-in cue-elements-animate-in duration-300",
38
+ children: [chunks.length, " passages above threshold"]
39
+ })
40
+ }),
41
+ /* @__PURE__ */ jsx("div", {
42
+ className: "flex min-h-[7rem] flex-col gap-1.5",
43
+ children: take(chunks, visibleCount).map((chunk) => /* @__PURE__ */ jsxs("div", {
44
+ className: cn(paper, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in cue-elements-fill-mode-both flex flex-col gap-1.5 rounded-(--radius-overlay) px-3.5 py-2.5 duration-300"),
45
+ children: [
46
+ /* @__PURE__ */ jsxs("div", {
47
+ className: "flex items-baseline gap-2",
48
+ children: [
49
+ /* @__PURE__ */ jsx("span", {
50
+ className: "text-fg min-w-0 flex-1 truncate text-(length:--cue-text-body) font-medium",
51
+ children: chunk.source
52
+ }),
53
+ /* @__PURE__ */ jsx("span", {
54
+ className: cn(mono, "text-fg-subtle shrink-0"),
55
+ children: chunk.locator
56
+ }),
57
+ /* @__PURE__ */ jsx("span", {
58
+ className: cn(mono, "shrink-0 tabular-nums", chunk.score >= .8 ? "text-ok" : "text-fg-subtle"),
59
+ children: chunk.score.toFixed(2)
60
+ })
61
+ ]
62
+ }),
63
+ /* @__PURE__ */ jsx("p", {
64
+ className: "text-fg-muted line-clamp-2 text-(length:--cue-text-ui) leading-(--cue-leading-ui)",
65
+ children: chunk.text
66
+ }),
67
+ /* @__PURE__ */ jsx("span", {
68
+ className: "bg-surface-2 h-[2px] w-full overflow-hidden rounded-full",
69
+ children: /* @__PURE__ */ jsx("span", {
70
+ className: "block h-full rounded-full bg-stream/70 transition-[width] duration-500",
71
+ style: { width: `${pct(chunk.score, 1)}%` }
72
+ })
73
+ })
74
+ ]
75
+ }, chunk.id))
76
+ })
77
+ ]
78
+ });
79
+ }
80
+ //#endregion
81
+ export { RetrievalChunks };
@@ -0,0 +1,159 @@
1
+ import { RevertLabels, RevertScope } from "./vocabulary.js";
2
+ import * as React from "react";
3
+ //#region src/elements/revert-dock.d.ts
4
+ /** How far back a restore from this point would reach. */
5
+ interface RevertReach {
6
+ /** Files changed since the point. Omit when it is not counted. */
7
+ files?: number;
8
+ /** Messages written since the point. Omit when it is not counted. */
9
+ messages?: number;
10
+ }
11
+ /**
12
+ * What a restore would undo, in one line: `6 files · 12 messages since this point`.
13
+ *
14
+ * The number that makes the decision. "Restore" on its own asks a person to
15
+ * agree to something whose size they cannot see, and the two counts are exactly
16
+ * the two axes the scopes act on — which is why they are formatted together
17
+ * here and drawn on the summary line a collapsed dock shows.
18
+ *
19
+ * @example
20
+ * formatRevertSummary({ files: 6, messages: 12 }); // "6 files · 12 messages since this point"
21
+ * formatRevertSummary({ files: 1 }); // "1 file since this point"
22
+ * formatRevertSummary({}); // "Nothing since this point"
23
+ */
24
+ declare function formatRevertSummary({ files, messages }: RevertReach): string;
25
+ interface RevertDockProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
26
+ /** What the point is called: `Six fixtures addressed`, `Before the patch`. */
27
+ label?: string;
28
+ /** Files changed since the point. Omit when it is not counted. */
29
+ files?: number;
30
+ /** Messages written since the point. Omit when it is not counted. */
31
+ messages?: number;
32
+ /**
33
+ * The summary line, replacing the one {@link formatRevertSummary} would
34
+ * build.
35
+ */
36
+ summary?: string;
37
+ /**
38
+ * Which axes this product can actually restore, in the order they are
39
+ * offered. `REVERT_SCOPES` (all three) by default; Roo and Cline each ship
40
+ * two, and a runtime with no workspace to put back ships `["conversation"]`.
41
+ */
42
+ scopes?: readonly RevertScope[];
43
+ /** Whether the scopes are showing, or only the summary line. */
44
+ open: boolean;
45
+ /** Called when the dock is expanded or collapsed. */
46
+ onOpenChange?: (open: boolean) => void;
47
+ /**
48
+ * The scope waiting to be confirmed, or `null` for the step before that.
49
+ *
50
+ * The gate. Pressing a scope reports it here and nothing else happens; the
51
+ * restore itself is a second, separate press. Keeping it a prop rather than
52
+ * internal state is what lets a test — or a replay — sit in the armed state
53
+ * and look at it.
54
+ */
55
+ confirming?: RevertScope | null;
56
+ /**
57
+ * Called when a scope is armed, and again with `null` every way the dock
58
+ * leaves the armed state: `Keep everything`, `Escape`, folding the dock away,
59
+ * and the restore itself.
60
+ */
61
+ onConfirmingChange?: (scope: RevertScope | null) => void;
62
+ /**
63
+ * Do it. Called **only** from the confirm control, never from the control
64
+ * that picks a scope, and at most once per arm.
65
+ */
66
+ onRestore?: (scope: RevertScope) => void;
67
+ /**
68
+ * Copy for the dock's own six strings, merged over `REVERT_LABELS` —
69
+ * including `warning`, the sentence this element refuses to render without.
70
+ */
71
+ labels?: Partial<RevertLabels>;
72
+ /** What each scope is called, merged over `REVERT_SCOPE_LABELS`. */
73
+ scopeLabels?: Partial<Record<RevertScope, string>>;
74
+ /** What each scope does, merged over `REVERT_SCOPE_DESCRIPTIONS`. */
75
+ scopeDescriptions?: Partial<Record<RevertScope, string>>;
76
+ }
77
+ /**
78
+ * Put it back — and say, in the interface, that this cannot be taken back.
79
+ *
80
+ * The second of the two docks nobody ships, and the only destructive control in
81
+ * this family. Four things make it that rather than a button called Restore.
82
+ *
83
+ * The **axis**: a run changes the files and the conversation about them, and
84
+ * putting one back is not putting the other back. Every product in the study
85
+ * that has checkpoints has this axis, and every one of them names it in its
86
+ * copy — `Restore Files` against `Restore Files & Task`, `Reset Code` against
87
+ * `Reset Chat`. So the scopes are the controls: each one says what it does and
88
+ * what it costs, and the two sentences come from `REVERT_SCOPE_LABELS` and
89
+ * `REVERT_SCOPE_DESCRIPTIONS`, which a console can extend.
90
+ *
91
+ * The **gate**: `onRestore` fires from one control only, the one that answers
92
+ * "Discard all changes up to this checkpoint?". Picking a scope arms the dock
93
+ * and does nothing else. `This action cannot be undone.` is on the screen the
94
+ * whole time the dock is open, above both steps — an irreversibility that lives
95
+ * only in a props table is an irreversibility somebody meets for the first time
96
+ * afterwards.
97
+ *
98
+ * The **geometry**, which is the half a gate cannot do on its own: arming must
99
+ * not put the destructive control where the hand already is. This dock used to
100
+ * swap the scope list for the confirm inside the same box, and measured in
101
+ * Chromium at the bench's own 448 px the whole of `Discard and restore`
102
+ * (x13–170, y131–161) landed inside `Restore conversation` (x13–435,
103
+ * y121–175) — true at 280, 320, 360, 448, 520, 640 and 800 px and at all five
104
+ * densities, so a double click on a scope armed the dock with its first press
105
+ * and destroyed the work with its second. Now nothing above the confirm moves:
106
+ * the scope list stays exactly where it was, dimmed and `disabled` — so the
107
+ * coordinates that armed the dock hold a control that no longer answers a
108
+ * click — and the question is *appended under* it, a hairline and two lines of
109
+ * copy below the last scope. Three defences, not one: the arming control stops
110
+ * taking presses, the destructive control is somewhere else, and it refuses
111
+ * presses for {@link SETTLE_MS} after it arrives. It fires once per arm.
112
+ *
113
+ * And the **way out**, which is `TwoStepButton`'s ruling rather than a second
114
+ * one: focus lands on `Keep everything` when the dock arms, never on the
115
+ * destructive half — so a stuck Enter cannot walk through both steps, and a
116
+ * reader whose button was just unmounted is not left on `<body>`; `Keep
117
+ * everything` hands focus back to the scope that armed it; `Escape` disarms
118
+ * from inside the panel and stops there, so an armed dock inside a dialog does
119
+ * not also close the dialog, *and* from the document while the dock is armed,
120
+ * because a press on a disabled control drops focus to `<body>` and an exit
121
+ * that only listens to its own subtree is no exit at all after a double click;
122
+ * and folding the dock away disarms it, because an armed state nobody can see
123
+ * is one somebody re-opens into. Focus moves on the *transition* into the armed
124
+ * state only — a page that renders three of these as stills steals nothing.
125
+ *
126
+ * Two of that button's four exits are deliberately not taken. There is no
127
+ * **timeout**: an inline two-step's armed state is two words, and four seconds
128
+ * is longer than reading them, while this one is a question, a scope, what it
129
+ * costs and a sentence about irreversibility — a panel that disarms itself
130
+ * while it is being read teaches people to hurry past exactly the copy that
131
+ * matters. And there is no **blur exit**: `confirming` is the caller's state,
132
+ * so leaving would rewrite a prop the caller owns on a gesture as ordinary as
133
+ * tabbing into the transcript, and an armed dock is a labelled panel in the
134
+ * page rather than a button lying in wait.
135
+ *
136
+ * State is a prop, as everywhere here: `open` and `confirming` are the caller's,
137
+ * which is what lets the armed state be benched, tested and replayed instead of
138
+ * being a thing that only exists between two clicks.
139
+ *
140
+ * @example
141
+ * import { RevertDock } from "@cueplusplus/ui/elements";
142
+ *
143
+ * <RevertDock
144
+ * label="Six fixtures addressed"
145
+ * files={6}
146
+ * messages={12}
147
+ * open={open}
148
+ * onOpenChange={setOpen}
149
+ * confirming={armed}
150
+ * onConfirmingChange={setArmed}
151
+ * onRestore={(scope) => restore(scope)}
152
+ * />
153
+ * @example
154
+ * // A runtime with no workspace to put back: one axis, and it says so.
155
+ * <RevertDock label="Before the plan" messages={9} scopes={["conversation"]} open />
156
+ */
157
+ declare const RevertDock: React.ForwardRefExoticComponent<RevertDockProps & React.RefAttributes<HTMLDivElement>>;
158
+ //#endregion
159
+ export { RevertDock, RevertDockProps, RevertReach, formatRevertSummary };
@@ -0,0 +1,327 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { field, fieldInteractive, ghostButton, mono, paper } from "./surfaces.js";
4
+ import { REVERT_LABELS, REVERT_SCOPES, REVERT_SCOPE_DESCRIPTIONS, REVERT_SCOPE_LABELS } from "./vocabulary.js";
5
+ import * as React from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { HistoryIcon, RotateCcwIcon, TriangleAlertIcon } from "lucide-react";
8
+ //#region src/elements/revert-dock.tsx
9
+ /**
10
+ * ms the confirm refuses a press for after the dock arms.
11
+ *
12
+ * The third defence, and the smallest: long enough to outlast the 200–400 ms
13
+ * between the two halves of a double click, short enough to read as the panel
14
+ * arriving rather than as a control that is broken.
15
+ *
16
+ * It runs on the *transition* into the armed state only. A dock that mounts
17
+ * already armed — a specimen still, a replay parked on this step, a test that
18
+ * renders `confirming="both"` — has nobody's second click in flight, and
19
+ * disabling its confirm for the first frames of a page would be a lie about
20
+ * why.
21
+ */
22
+ const SETTLE_MS = 400;
23
+ /**
24
+ * What a restore would undo, in one line: `6 files · 12 messages since this point`.
25
+ *
26
+ * The number that makes the decision. "Restore" on its own asks a person to
27
+ * agree to something whose size they cannot see, and the two counts are exactly
28
+ * the two axes the scopes act on — which is why they are formatted together
29
+ * here and drawn on the summary line a collapsed dock shows.
30
+ *
31
+ * @example
32
+ * formatRevertSummary({ files: 6, messages: 12 }); // "6 files · 12 messages since this point"
33
+ * formatRevertSummary({ files: 1 }); // "1 file since this point"
34
+ * formatRevertSummary({}); // "Nothing since this point"
35
+ */
36
+ function formatRevertSummary({ files, messages }) {
37
+ const parts = [];
38
+ if (files !== void 0) parts.push(`${files} file${files === 1 ? "" : "s"}`);
39
+ if (messages !== void 0) parts.push(`${messages} message${messages === 1 ? "" : "s"}`);
40
+ if (parts.length === 0) return "Nothing since this point";
41
+ return `${parts.join(" · ")} since this point`;
42
+ }
43
+ /**
44
+ * Put it back — and say, in the interface, that this cannot be taken back.
45
+ *
46
+ * The second of the two docks nobody ships, and the only destructive control in
47
+ * this family. Four things make it that rather than a button called Restore.
48
+ *
49
+ * The **axis**: a run changes the files and the conversation about them, and
50
+ * putting one back is not putting the other back. Every product in the study
51
+ * that has checkpoints has this axis, and every one of them names it in its
52
+ * copy — `Restore Files` against `Restore Files & Task`, `Reset Code` against
53
+ * `Reset Chat`. So the scopes are the controls: each one says what it does and
54
+ * what it costs, and the two sentences come from `REVERT_SCOPE_LABELS` and
55
+ * `REVERT_SCOPE_DESCRIPTIONS`, which a console can extend.
56
+ *
57
+ * The **gate**: `onRestore` fires from one control only, the one that answers
58
+ * "Discard all changes up to this checkpoint?". Picking a scope arms the dock
59
+ * and does nothing else. `This action cannot be undone.` is on the screen the
60
+ * whole time the dock is open, above both steps — an irreversibility that lives
61
+ * only in a props table is an irreversibility somebody meets for the first time
62
+ * afterwards.
63
+ *
64
+ * The **geometry**, which is the half a gate cannot do on its own: arming must
65
+ * not put the destructive control where the hand already is. This dock used to
66
+ * swap the scope list for the confirm inside the same box, and measured in
67
+ * Chromium at the bench's own 448 px the whole of `Discard and restore`
68
+ * (x13–170, y131–161) landed inside `Restore conversation` (x13–435,
69
+ * y121–175) — true at 280, 320, 360, 448, 520, 640 and 800 px and at all five
70
+ * densities, so a double click on a scope armed the dock with its first press
71
+ * and destroyed the work with its second. Now nothing above the confirm moves:
72
+ * the scope list stays exactly where it was, dimmed and `disabled` — so the
73
+ * coordinates that armed the dock hold a control that no longer answers a
74
+ * click — and the question is *appended under* it, a hairline and two lines of
75
+ * copy below the last scope. Three defences, not one: the arming control stops
76
+ * taking presses, the destructive control is somewhere else, and it refuses
77
+ * presses for {@link SETTLE_MS} after it arrives. It fires once per arm.
78
+ *
79
+ * And the **way out**, which is `TwoStepButton`'s ruling rather than a second
80
+ * one: focus lands on `Keep everything` when the dock arms, never on the
81
+ * destructive half — so a stuck Enter cannot walk through both steps, and a
82
+ * reader whose button was just unmounted is not left on `<body>`; `Keep
83
+ * everything` hands focus back to the scope that armed it; `Escape` disarms
84
+ * from inside the panel and stops there, so an armed dock inside a dialog does
85
+ * not also close the dialog, *and* from the document while the dock is armed,
86
+ * because a press on a disabled control drops focus to `<body>` and an exit
87
+ * that only listens to its own subtree is no exit at all after a double click;
88
+ * and folding the dock away disarms it, because an armed state nobody can see
89
+ * is one somebody re-opens into. Focus moves on the *transition* into the armed
90
+ * state only — a page that renders three of these as stills steals nothing.
91
+ *
92
+ * Two of that button's four exits are deliberately not taken. There is no
93
+ * **timeout**: an inline two-step's armed state is two words, and four seconds
94
+ * is longer than reading them, while this one is a question, a scope, what it
95
+ * costs and a sentence about irreversibility — a panel that disarms itself
96
+ * while it is being read teaches people to hurry past exactly the copy that
97
+ * matters. And there is no **blur exit**: `confirming` is the caller's state,
98
+ * so leaving would rewrite a prop the caller owns on a gesture as ordinary as
99
+ * tabbing into the transcript, and an armed dock is a labelled panel in the
100
+ * page rather than a button lying in wait.
101
+ *
102
+ * State is a prop, as everywhere here: `open` and `confirming` are the caller's,
103
+ * which is what lets the armed state be benched, tested and replayed instead of
104
+ * being a thing that only exists between two clicks.
105
+ *
106
+ * @example
107
+ * import { RevertDock } from "@cueplusplus/ui/elements";
108
+ *
109
+ * <RevertDock
110
+ * label="Six fixtures addressed"
111
+ * files={6}
112
+ * messages={12}
113
+ * open={open}
114
+ * onOpenChange={setOpen}
115
+ * confirming={armed}
116
+ * onConfirmingChange={setArmed}
117
+ * onRestore={(scope) => restore(scope)}
118
+ * />
119
+ * @example
120
+ * // A runtime with no workspace to put back: one axis, and it says so.
121
+ * <RevertDock label="Before the plan" messages={9} scopes={["conversation"]} open />
122
+ */
123
+ const RevertDock = React.forwardRef(function RevertDock({ label = "Revert to this point", files, messages, summary, scopes = REVERT_SCOPES, open, onOpenChange, confirming = null, onConfirmingChange, onRestore, labels, scopeLabels, scopeDescriptions, className, onKeyDown, ...elementProps }, ref) {
124
+ const copy = {
125
+ ...REVERT_LABELS,
126
+ ...labels
127
+ };
128
+ const scopeCopy = {
129
+ ...REVERT_SCOPE_LABELS,
130
+ ...scopeLabels
131
+ };
132
+ const scopeWhat = {
133
+ ...REVERT_SCOPE_DESCRIPTIONS,
134
+ ...scopeDescriptions
135
+ };
136
+ const said = summary ?? formatRevertSummary({
137
+ files,
138
+ messages
139
+ });
140
+ const ids = React.useId();
141
+ const warningId = `${ids}warning`;
142
+ const questionId = `${ids}question`;
143
+ const scopeId = `${ids}scope`;
144
+ const dock = React.useRef(null);
145
+ const cancel = React.useRef(null);
146
+ const scopeButtons = React.useRef(/* @__PURE__ */ new Map());
147
+ const armedBefore = React.useRef(confirming);
148
+ const restored = React.useRef(false);
149
+ const settledAt = React.useRef(0);
150
+ const [settling, setSettling] = React.useState(false);
151
+ const setDock = React.useCallback((element) => {
152
+ dock.current = element;
153
+ if (typeof ref === "function") ref(element);
154
+ else if (ref !== null) ref.current = element;
155
+ }, [ref]);
156
+ /**
157
+ * Whether this dock is still the place focus belongs.
158
+ *
159
+ * `<body>` counts: a button that has just been disabled or unmounted hands
160
+ * the document back its default, which is precisely the state finding 2 was
161
+ * about. Anything else is somewhere a person chose, and moving them out of it
162
+ * would be the trap rather than the fix.
163
+ */
164
+ const holdsFocus = React.useCallback(() => {
165
+ const element = dock.current;
166
+ if (element === null) return false;
167
+ const active = element.ownerDocument.activeElement;
168
+ return active === null || active === element.ownerDocument.body || element.contains(active);
169
+ }, []);
170
+ React.useEffect(() => {
171
+ const before = armedBefore.current;
172
+ armedBefore.current = confirming;
173
+ if (before === confirming) return void 0;
174
+ restored.current = false;
175
+ if (confirming === null) {
176
+ settledAt.current = 0;
177
+ setSettling(false);
178
+ if (before !== null && holdsFocus()) scopeButtons.current.get(before)?.focus();
179
+ return;
180
+ }
181
+ settledAt.current = Date.now() + SETTLE_MS;
182
+ setSettling(true);
183
+ if (holdsFocus()) cancel.current?.focus();
184
+ const timer = setTimeout(() => {
185
+ settledAt.current = 0;
186
+ setSettling(false);
187
+ }, SETTLE_MS);
188
+ return () => clearTimeout(timer);
189
+ }, [confirming, holdsFocus]);
190
+ React.useEffect(() => {
191
+ if (confirming === null) return void 0;
192
+ const owner = dock.current?.ownerDocument ?? globalThis.document;
193
+ const disarm = (event) => {
194
+ if (event.key !== "Escape" || event.defaultPrevented) return;
195
+ onConfirmingChange?.(null);
196
+ };
197
+ owner.addEventListener("keydown", disarm);
198
+ return () => owner.removeEventListener("keydown", disarm);
199
+ }, [confirming, onConfirmingChange]);
200
+ React.useEffect(() => {
201
+ if (open || confirming === null) return;
202
+ onConfirmingChange?.(null);
203
+ }, [
204
+ confirming,
205
+ onConfirmingChange,
206
+ open
207
+ ]);
208
+ return /* @__PURE__ */ jsxs("div", {
209
+ ref: setDock,
210
+ "data-slot": "revert-dock",
211
+ "data-open": String(open),
212
+ "data-confirming": confirming ?? "none",
213
+ className: cn(paper, "flex w-full flex-col rounded-(--radius-overlay)", className),
214
+ onKeyDown: (event) => {
215
+ onKeyDown?.(event);
216
+ if (event.key !== "Escape" || confirming === null) return;
217
+ event.stopPropagation();
218
+ onConfirmingChange?.(null);
219
+ },
220
+ ...elementProps,
221
+ children: [/* @__PURE__ */ jsxs("button", {
222
+ type: "button",
223
+ "aria-expanded": open,
224
+ title: open ? copy.collapse : copy.expand,
225
+ onClick: () => {
226
+ if (open && confirming !== null) onConfirmingChange?.(null);
227
+ onOpenChange?.(!open);
228
+ },
229
+ className: "hover:bg-surface-2 flex items-center gap-2.5 rounded-(--radius-overlay) px-3 py-2 text-start transition-colors focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent motion-reduce:transition-none",
230
+ children: [
231
+ /* @__PURE__ */ jsx(HistoryIcon, {
232
+ "aria-hidden": true,
233
+ className: "text-fg-subtle size-3.5 shrink-0"
234
+ }),
235
+ /* @__PURE__ */ jsx("span", {
236
+ className: "text-fg min-w-0 flex-1 truncate text-(length:--cue-text-ui)",
237
+ children: label
238
+ }),
239
+ /* @__PURE__ */ jsx("span", {
240
+ "data-slot": "revert-summary",
241
+ className: cn(mono, "text-fg-subtle shrink-0"),
242
+ children: said
243
+ })
244
+ ]
245
+ }), open ? /* @__PURE__ */ jsxs("div", {
246
+ className: "flex flex-col gap-2 px-3 pb-3",
247
+ children: [
248
+ /* @__PURE__ */ jsxs("p", {
249
+ "data-slot": "revert-warning",
250
+ id: warningId,
251
+ className: "text-warn flex items-center gap-1.5 text-(length:--cue-text-ui)",
252
+ children: [/* @__PURE__ */ jsx(TriangleAlertIcon, {
253
+ "aria-hidden": true,
254
+ className: "size-3.5 shrink-0"
255
+ }), copy.warning]
256
+ }),
257
+ /* @__PURE__ */ jsx("div", {
258
+ "data-slot": "revert-scopes",
259
+ className: "flex flex-col gap-1.5",
260
+ children: scopes.map((scope) => {
261
+ const armed = confirming === scope;
262
+ return /* @__PURE__ */ jsxs("button", {
263
+ ref: (element) => {
264
+ if (element === null) scopeButtons.current.delete(scope);
265
+ else scopeButtons.current.set(scope, element);
266
+ },
267
+ type: "button",
268
+ "data-scope": scope,
269
+ "data-armed": String(armed),
270
+ disabled: confirming !== null,
271
+ id: armed ? scopeId : void 0,
272
+ onClick: () => onConfirmingChange?.(scope),
273
+ className: cn(confirming === null ? fieldInteractive : armed ? "bg-danger/10" : cn(field, "opacity-60"), "flex flex-col items-start gap-0.5 rounded-(--radius-control) px-3 py-2 text-start outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent"),
274
+ children: [/* @__PURE__ */ jsx("span", {
275
+ className: "text-fg text-(length:--cue-text-ui) font-medium",
276
+ children: scopeCopy[scope]
277
+ }), /* @__PURE__ */ jsx("span", {
278
+ className: "text-fg-subtle text-(length:--cue-text-ui)",
279
+ children: scopeWhat[scope]
280
+ })]
281
+ }, scope);
282
+ })
283
+ }),
284
+ confirming === null ? null : /* @__PURE__ */ jsxs("div", {
285
+ "data-slot": "revert-confirm",
286
+ role: "group",
287
+ "aria-labelledby": questionId,
288
+ className: "border-border flex flex-col gap-2 border-t pt-2",
289
+ children: [/* @__PURE__ */ jsx("p", {
290
+ id: questionId,
291
+ className: "text-fg text-(length:--cue-text-ui)",
292
+ children: copy.question
293
+ }), /* @__PURE__ */ jsxs("div", {
294
+ className: "flex items-center gap-2",
295
+ children: [/* @__PURE__ */ jsx("button", {
296
+ ref: cancel,
297
+ type: "button",
298
+ "data-slot": "revert-cancel",
299
+ onClick: () => onConfirmingChange?.(null),
300
+ className: cn(ghostButton, "h-7 px-3 text-(length:--cue-text-ui) font-medium"),
301
+ children: copy.cancel
302
+ }), /* @__PURE__ */ jsxs("button", {
303
+ type: "button",
304
+ "data-slot": "revert-restore",
305
+ "data-settling": String(settling),
306
+ disabled: settling,
307
+ "aria-describedby": scopes.includes(confirming) ? `${scopeId} ${warningId}` : warningId,
308
+ onClick: () => {
309
+ if (Date.now() < settledAt.current || restored.current) return;
310
+ restored.current = true;
311
+ onConfirmingChange?.(null);
312
+ onRestore?.(confirming);
313
+ },
314
+ className: "bg-danger text-danger-fg flex items-center gap-1.5 rounded-(--radius-control) px-3 py-1.5 text-(length:--cue-text-ui) font-medium outline-none transition-[opacity,scale] duration-150 enabled:hover:opacity-90 enabled:active:scale-[0.96] disabled:opacity-60 focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent motion-reduce:transition-none",
315
+ children: [/* @__PURE__ */ jsx(RotateCcwIcon, {
316
+ "aria-hidden": true,
317
+ className: "size-3.5"
318
+ }), copy.confirm]
319
+ })]
320
+ })]
321
+ })
322
+ ]
323
+ }) : null]
324
+ });
325
+ });
326
+ //#endregion
327
+ export { RevertDock, formatRevertSummary };
@@ -0,0 +1,45 @@
1
+ import { DiffLine } from "./code-diff.js";
2
+ import { ComponentProps } from "react";
3
+ //#region src/elements/reviewable-diff.d.ts
4
+ /** What the reviewer has decided about one hunk, `pending` until they act. */
5
+ type HunkDecision = "pending" | "kept" | "discarded";
6
+ /** One reviewable block of a diff: its range, its rows, and the decision standing on it. */
7
+ interface DiffHunk {
8
+ /** Stable identity, reported back by onKeep and onDiscard. */
9
+ id: string;
10
+ /** Unified-diff range header, shown in mono. */
11
+ range: string;
12
+ /** Discarded hunks stay visible at reduced opacity so the review reads as a whole. */
13
+ decision: HunkDecision;
14
+ /** Reuses the DiffLine shape from the code diff element. */
15
+ lines: readonly DiffLine[];
16
+ }
17
+ /**
18
+ * The same diff, but each hunk is a decision: keep it, discard it, apply what
19
+ * survived.
20
+ *
21
+ * @example
22
+ * import { ReviewableDiff } from "@cueplusplus/ui/elements";
23
+ *
24
+ * <ReviewableDiff
25
+ * filename="composer.tsx"
26
+ * hunks={hunks}
27
+ * onKeep={(id) => decide(id, "kept")}
28
+ * onDiscard={(id) => decide(id, "discarded")}
29
+ * onApply={commit}
30
+ * />
31
+ */
32
+ declare function ReviewableDiff({ filename, hunks, onKeep, onDiscard, onApply, className, ...props }: Omit<ComponentProps<"div">, "children" | "filename" | "hunks" | "onKeep" | "onDiscard" | "onApply"> & {
33
+ /** File the hunks belong to. */
34
+ filename: string;
35
+ /** Each hunk carries its own decision. Apply stays disabled until none are pending. */
36
+ hunks: readonly DiffHunk[];
37
+ /** Called when a hunk is accepted. */
38
+ onKeep?: (id: string) => void;
39
+ /** Called when a hunk is rejected. */
40
+ onDiscard?: (id: string) => void;
41
+ /** Called when the reviewed set is committed. Only kept hunks should be written. */
42
+ onApply?: () => void;
43
+ }): import("react").JSX.Element;
44
+ //#endregion
45
+ export { DiffHunk, HunkDecision, ReviewableDiff };