@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,237 @@
1
+ import { cn } from "../lib/cn.js";
2
+ import * as React from "react";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/instruments/table.tsx
5
+ /**
6
+ * A named horizontal viewport for a table wider than its container.
7
+ *
8
+ * The region is independently keyboard-focusable so keyboard users can reach
9
+ * native horizontal scrolling. It adds no table semantics of its own; place a
10
+ * compound {@link Table} inside it and keep the table's caption.
11
+ */
12
+ const TableScrollRegion = React.forwardRef(function TableScrollRegion({ className, ...elementProps }, ref) {
13
+ return /* @__PURE__ */ jsx("div", {
14
+ ref,
15
+ ...elementProps,
16
+ role: "region",
17
+ tabIndex: 0,
18
+ "data-slot": "table-scroll-region",
19
+ className: cn("overflow-x-auto outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent", className)
20
+ });
21
+ });
22
+ /**
23
+ * The table frame. Owns the type, the collapse and the numeric alignment rule.
24
+ *
25
+ * `data-numeric` is the contract, not a prop: the alignment and
26
+ * `tabular-nums` live in one descendant selector here, so a hand-written
27
+ * `<td data-numeric>` inside a data-driven body lines up exactly like a
28
+ * `<Table.Cell numeric>`. Figures that do not share a column width are
29
+ * unreadable as a column, which is the whole point of a table.
30
+ */
31
+ const TableRoot = React.forwardRef(function TableRoot({ className, ...elementProps }, ref) {
32
+ return /* @__PURE__ */ jsx("table", {
33
+ ref,
34
+ "data-slot": "table",
35
+ className: cn("w-full border-collapse font-mono text-(length:--cue-text-ui) text-fg", "[&_[data-numeric]]:text-right [&_[data-numeric]]:tabular-nums", className),
36
+ ...elementProps
37
+ });
38
+ });
39
+ /** The header band. Sticky-able by the caller; sized by the row padding tokens. */
40
+ const TableHeader = React.forwardRef(function TableHeader({ className, ...elementProps }, ref) {
41
+ return /* @__PURE__ */ jsx("thead", {
42
+ ref,
43
+ "data-slot": "table-header",
44
+ className,
45
+ ...elementProps
46
+ });
47
+ });
48
+ /** The data band. */
49
+ const TableBody = React.forwardRef(function TableBody({ className, ...elementProps }, ref) {
50
+ return /* @__PURE__ */ jsx("tbody", {
51
+ ref,
52
+ "data-slot": "table-body",
53
+ className,
54
+ ...elementProps
55
+ });
56
+ });
57
+ /**
58
+ * One row, separated by a hairline underneath — dropped on the last row so the
59
+ * table never draws a rule against the panel rim it sits in. In a `<thead>` the
60
+ * "last row" is the header row itself, so the header's own bottom border (on
61
+ * the cells) is the only rule there and the two can never stack into 2px.
62
+ *
63
+ * Every row carries the `group/data-row` name unconditionally. It paints
64
+ * nothing by itself, and it is what lets a `DataRow.Actions` cluster inside a
65
+ * `Table.Cell` reveal on hover, on focus and on selection with no second
66
+ * implementation of that idiom for the table — the whole point of the three
67
+ * idioms sharing one row anatomy.
68
+ *
69
+ * **The focus half of that reveal is the caller's to supply here.** A `<tr>` is
70
+ * not focusable and this component does not make it one — a tab stop on every
71
+ * row of a long table is a tab stop a keyboard user has to walk past hundreds
72
+ * of times, which is the reason `Ledger` rows opt in individually. So the
73
+ * reveal-on-focus only happens if the row *contains* something focusable
74
+ * outside the hidden track: a link on the row's name, a checkbox in the leading
75
+ * cell, any real control. Without one, `:focus-within` can never fire — content
76
+ * inside a `visibility: hidden` subtree cannot be focused, so the track cannot
77
+ * bootstrap its own reveal — and a hidden action cluster is then reachable by
78
+ * pointer only, which is a WCAG 2.1.1 failure the screen gives no sign of. A
79
+ * table whose only per-row controls live in a hidden track wants either a
80
+ * focusable cell beside it or an always-visible cluster.
81
+ *
82
+ * A caller who instead makes the *row* focusable — a `tabIndex` plus
83
+ * {@link activateRowFromClick} and {@link activateRowFromKeyDown}, which is the
84
+ * shape a row that opens a drawer takes — gets the focus ring from
85
+ * {@link TableRowProps.interactive} and needs to draw nothing of its own.
86
+ *
87
+ * The selected tint is the row's, not the cell's: a `background` on the `<tr>`
88
+ * shows through every cell in it, so the fill cannot end up ragged where one
89
+ * cell sets a ground of its own.
90
+ */
91
+ const TableRow = React.forwardRef(function TableRow({ className, interactive = false, selected = false, ...elementProps }, ref) {
92
+ return /* @__PURE__ */ jsx("tr", {
93
+ ref,
94
+ "data-slot": "table-row",
95
+ "data-selected": selected ? "" : void 0,
96
+ className: cn("group/data-row border-b border-border last:border-b-0 data-[selected]:bg-accent-soft", interactive ? "cursor-pointer outline-none hover:bg-(--cue-row-hover) focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent" : null, className),
97
+ ...elementProps
98
+ });
99
+ });
100
+ /**
101
+ * A column heading: the same mono uppercase label as `SectionHeader` and
102
+ * `Eyebrow`, on the raised surface so the band reads as chrome rather than as
103
+ * the first row of data.
104
+ *
105
+ * **Sticky swaps the bottom border for an inset shadow.** `Table.Root` collapses
106
+ * its borders, and a collapsed border belongs to the table's shared grid rather
107
+ * than to the cell — so when a cell detaches to stay at the top of the scroll
108
+ * container, its rule stays behind with the rows and the stuck band appears to
109
+ * lose its edge. An inset `box-shadow` is a paint effect on the cell itself, so
110
+ * it travels with it. The alternative — putting the whole table on
111
+ * `border-separate` — would change the geometry of every table in the library
112
+ * to fix one that scrolls.
113
+ *
114
+ * The opaque `bg-surface-1` is not decoration either: a transparent sticky cell
115
+ * is a sticky cell you read the rows through. A caller who wants the header on
116
+ * the page's own ground can pass `className="bg-bg"` — what it must not pass is
117
+ * nothing.
118
+ */
119
+ const TableHead = React.forwardRef(function TableHead({ className, numeric = false, sticky = false, scope = "col", ...elementProps }, ref) {
120
+ return /* @__PURE__ */ jsx("th", {
121
+ ref,
122
+ scope,
123
+ "data-slot": "table-head",
124
+ "data-numeric": numeric ? "" : void 0,
125
+ className: cn("border-b border-border bg-surface-1 px-(--cue-pad-row-x) py-(--cue-pad-row-y) text-left font-mono text-(length:--cue-text-label) font-normal tracking-[0.15em] whitespace-nowrap text-fg-subtle uppercase", sticky ? "sticky top-0 z-3 border-b-0 shadow-[inset_0_-1px_0_var(--cue-hair-strong)]" : null, className),
126
+ ...elementProps
127
+ });
128
+ });
129
+ /** `headingLevel` as a tag name, so the outline is real elements, not roles. */
130
+ const headingTag = (level) => `h${level}`;
131
+ /**
132
+ * The label slot's own treatment, worn by the `<span>` and by every heading
133
+ * level alike — which is the point: the two forms have to be indistinguishable.
134
+ *
135
+ * Everything here is a no-op on a `<span>` and a correction on a heading, and
136
+ * each of the four exists because a UA stylesheet sets it on `<h2>`–`<h6>`:
137
+ *
138
+ * - `inline` — headings are `display: block`, and a block label would push the
139
+ * count onto a second line. This is the one that breaks the layout outright.
140
+ * - `text-[length:inherit]` — `<h2>` is `1.5em` and `<h6>` is `0.67em`, so
141
+ * without this the divider's type would change with the level it was given,
142
+ * which is a heading level leaking into the visual design.
143
+ * - `font-normal` — headings come bold, and a bold micro-label in a dense list
144
+ * reads as a second kind of emphasis (the same ruling as `Ledger`'s heading).
145
+ * - `m-0` — headings carry a block margin that would thicken the divider row.
146
+ *
147
+ * Preflight already does the middle two for consumers who import it, but the
148
+ * library does not assume the consumer's reset: the divider has to look the
149
+ * same either way. Tracking, case and colour are *not* restated — no UA rule
150
+ * touches them, so they inherit from the `<th>` that owns the recipe, and a
151
+ * second copy of a treatment is exactly how two surfaces drift apart.
152
+ */
153
+ const TABLE_GROUP_LABEL = "m-0 inline text-[length:inherit] font-normal";
154
+ /**
155
+ * The canonical console table: hairlines, mono figures, no zebra striping.
156
+ *
157
+ * Semantic `<table>` markup throughout — a grid of divs loses row/column
158
+ * announcement, and a console table is exactly the place a screen reader user
159
+ * needs it. Zebra rows are deliberately absent: at console density the stripes
160
+ * are thicker than the data.
161
+ *
162
+ * Static markup — no `"use client"`. Compose it with `Panel` for the rim.
163
+ * Use {@link TableScrollRegion} only when the table can exceed its container.
164
+ *
165
+ * For a grouped list, the table stays *one* table: `Table.Head sticky` docks the
166
+ * column names, and one `Table.Body` per group opens with a `Table.GroupRow`
167
+ * divider — so the columns are named once and scan straight through every group
168
+ * boundary. Rows may hold `DataRow` slots, and `DataRow.Actions` reveals inside
169
+ * a cell on hover and on selection exactly as it does in a `Ledger` row — on
170
+ * focus too, once the row holds something focusable outside the track, which a
171
+ * `<tr>` never is by itself. See {@link TableRowProps.interactive}.
172
+ *
173
+ * @example
174
+ * <Table.Root>
175
+ * <Table.Header>
176
+ * <Table.Row>
177
+ * <Table.Head>Fixture</Table.Head>
178
+ * <Table.Head numeric>Address</Table.Head>
179
+ * </Table.Row>
180
+ * </Table.Header>
181
+ * <Table.Body>
182
+ * <Table.Row>
183
+ * <Table.Cell>Par 64</Table.Cell>
184
+ * <Table.Cell numeric>001</Table.Cell>
185
+ * </Table.Row>
186
+ * </Table.Body>
187
+ * </Table.Root>
188
+ */
189
+ const Table = {
190
+ Root: TableRoot,
191
+ Header: TableHeader,
192
+ Body: TableBody,
193
+ Row: TableRow,
194
+ GroupRow: React.forwardRef(function TableGroupRow({ className, span, label, count, headingLevel, sticky = false, ...elementProps }, ref) {
195
+ const Label = headingLevel === void 0 ? "span" : headingTag(headingLevel);
196
+ return /* @__PURE__ */ jsx("tr", {
197
+ ref,
198
+ "data-slot": "table-group-row",
199
+ ...elementProps,
200
+ children: /* @__PURE__ */ jsxs("th", {
201
+ colSpan: span,
202
+ scope: "rowgroup",
203
+ "data-slot": "table-group-cell",
204
+ className: cn("bg-bg px-(--cue-pad-row-x) py-(--cue-pad-row-y) text-left font-mono text-(length:--cue-text-label) font-normal tracking-[0.15em] whitespace-nowrap text-fg-subtle uppercase", sticky ? "sticky z-2 [top:var(--cue-table-group-top,0px)]" : null, className),
205
+ children: [/* @__PURE__ */ jsx(Label, {
206
+ "data-slot": "table-group-label",
207
+ className: TABLE_GROUP_LABEL,
208
+ children: label
209
+ }), count === void 0 ? null : /* @__PURE__ */ jsx("span", {
210
+ "data-slot": "table-group-count",
211
+ className: "ml-(--cue-space-2) tabular-nums",
212
+ children: count
213
+ })]
214
+ })
215
+ });
216
+ }),
217
+ Head: TableHead,
218
+ Cell: React.forwardRef(function TableCell({ className, numeric = false, ...elementProps }, ref) {
219
+ return /* @__PURE__ */ jsx("td", {
220
+ ref,
221
+ "data-slot": "table-cell",
222
+ "data-numeric": numeric ? "" : void 0,
223
+ className: cn("px-(--cue-pad-row-x) py-(--cue-pad-row-y) align-middle", className),
224
+ ...elementProps
225
+ });
226
+ }),
227
+ Caption: React.forwardRef(function TableCaption({ className, ...elementProps }, ref) {
228
+ return /* @__PURE__ */ jsx("caption", {
229
+ ref,
230
+ "data-slot": "table-caption",
231
+ className: cn("caption-bottom pt-(--cue-space-3) text-left font-mono text-(length:--cue-text-label) text-fg-subtle", className),
232
+ ...elementProps
233
+ });
234
+ })
235
+ };
236
+ //#endregion
237
+ export { Table, TableScrollRegion };
@@ -0,0 +1,89 @@
1
+ import * as React from "react";
2
+ //#region src/instruments/terminal-frame.d.ts
3
+ /** Ink for one transcript line, in the shared status vocabulary. */
4
+ type TerminalLineTone = "neutral" | "accent" | "ok" | "warn" | "danger" | "info";
5
+ /** One line of a transcript. A bare string is output; `command` makes it a prompt line. */
6
+ interface TerminalLine {
7
+ /** The text of the line, verbatim. */
8
+ text: string;
9
+ /** Prefix it with the prompt glyph — this line is something the user typed. */
10
+ command?: boolean;
11
+ /** Ink for the line. Defaults to `"neutral"`. */
12
+ tone?: TerminalLineTone;
13
+ }
14
+ /** Shorthand: a bare string is an output line with no tone. */
15
+ type TerminalFrameLine = string | TerminalLine;
16
+ /** One beat of a simulated session: type a command, spin, print the result. */
17
+ interface TerminalStep {
18
+ /** Typed one character at a time at the prompt. */
19
+ command?: string;
20
+ /** Label shown next to a spinner once the command "runs". */
21
+ pending?: string;
22
+ /** How long the spinner runs, in ms. Defaults to `900`. */
23
+ pendingMs?: number;
24
+ /** Printed all at once when the step finishes. */
25
+ output?: readonly TerminalFrameLine[];
26
+ }
27
+ /** A scripted session for {@link TerminalFrameProps.simulate}. */
28
+ interface TerminalScript {
29
+ /** The beats, in order. */
30
+ steps: readonly TerminalStep[];
31
+ /** Nominal ms per keystroke, jittered 0.6×–1.6×. Defaults to `55`. */
32
+ keystrokeMs?: number;
33
+ /** Seed for the keystroke jitter. The same seed always plays the same way. Defaults to `1`. */
34
+ seed?: number;
35
+ /** Pause after a command lands and after its output prints, in ms. Defaults to `600`. */
36
+ holdMs?: number;
37
+ }
38
+ interface TerminalFrameProps extends Omit<React.ComponentPropsWithoutRef<"div">, "title" | "children"> {
39
+ /** Name above the transcript — a log file, a host, a task. */
40
+ title?: React.ReactNode;
41
+ /** Static transcript. Rendered as a preamble when `simulate` is also set. */
42
+ lines?: readonly TerminalFrameLine[];
43
+ /** The prompt glyph in front of a command line. Defaults to `"$"`. */
44
+ prompt?: string;
45
+ /** Show a `CopyButton` in the title bar for the commands in the transcript. */
46
+ copy?: boolean;
47
+ /** What the copy button puts on the clipboard. Defaults to the command lines, one per line. */
48
+ copyValue?: string;
49
+ /**
50
+ * Play the transcript out as a typed session.
51
+ *
52
+ * Pass a stable reference (a module constant, or memoised) — the player
53
+ * restarts whenever this prop changes identity. Under
54
+ * `prefers-reduced-motion` the finished transcript renders instantly and no
55
+ * timer is ever scheduled.
56
+ */
57
+ simulate?: TerminalScript;
58
+ /** Fixed body height in px at the 16px root. Leave unset to grow with the content. */
59
+ height?: number;
60
+ /** Extra content under the transcript — an input row, a hint strip. */
61
+ children?: React.ReactNode;
62
+ }
63
+ /**
64
+ * A recessed terminal: mono, `$`-prefixed commands, optional typed playback.
65
+ *
66
+ * Recessed rather than raised — `bg-sunken` sits the transcript *into* the page
67
+ * the way a real console does (the snuffle convention, where the terminal
68
+ * surface is the only thing darker than the background).
69
+ *
70
+ * The `simulate` player is deliberately not a GIF or a video: it is text, so it
71
+ * copies, it scales with the type ramp, it re-themes, and it costs nothing to
72
+ * load. Keystrokes are jittered from a seed so a marketing screenshot is
73
+ * reproducible, and the whole animation is replaced by its final frame under
74
+ * `prefers-reduced-motion` — with no timers scheduled at all, rather than an
75
+ * animation that runs invisibly.
76
+ *
77
+ * @example
78
+ * <TerminalFrame
79
+ * title="install"
80
+ * copy
81
+ * lines={[{ text: "pnpm add @cueplusplus/ui", command: true }, "+ 1 package"]}
82
+ * />
83
+ * @example
84
+ * const SCRIPT = { steps: [{ command: "cue build", pending: "compiling", output: ["12 cues"] }] };
85
+ * <TerminalFrame simulate={SCRIPT} />
86
+ */
87
+ declare const TerminalFrame: React.ForwardRefExoticComponent<TerminalFrameProps & React.RefAttributes<HTMLDivElement>>;
88
+ //#endregion
89
+ export { TerminalFrame, TerminalFrameLine, TerminalFrameProps, TerminalLine, TerminalLineTone, TerminalScript, TerminalStep };
@@ -0,0 +1,256 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { CopyButton } from "./copy-button.js";
4
+ import { toRem } from "./_rem.js";
5
+ import { mulberry32, usePrefersReducedMotion } from "./_motion.js";
6
+ import * as React from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/instruments/terminal-frame.tsx
9
+ const LINE_TONES = {
10
+ neutral: "text-fg-muted",
11
+ accent: "text-accent",
12
+ ok: "text-ok",
13
+ warn: "text-warn",
14
+ danger: "text-danger",
15
+ info: "text-info"
16
+ };
17
+ /** The braille spinner every CLI in the portfolio uses. */
18
+ const SPINNER_GLYPHS = [
19
+ "⠋",
20
+ "⠙",
21
+ "⠹",
22
+ "⠸",
23
+ "⠼",
24
+ "⠴",
25
+ "⠦",
26
+ "⠧",
27
+ "⠇",
28
+ "⠏"
29
+ ];
30
+ const SPINNER_MS = 80;
31
+ const DEFAULT_KEYSTROKE_MS = 55;
32
+ const DEFAULT_HOLD_MS = 600;
33
+ const DEFAULT_PENDING_MS = 900;
34
+ const DEFAULT_SEED = 1;
35
+ const IDLE = {
36
+ lines: [],
37
+ typing: null,
38
+ spinner: null,
39
+ done: true
40
+ };
41
+ /** Normalise the shorthand so the renderer only ever sees one shape. */
42
+ function toLine(line) {
43
+ return typeof line === "string" ? { text: line } : line;
44
+ }
45
+ /** Every line a script ends on — what reduced motion renders straight away. */
46
+ function finalLines(script) {
47
+ return script.steps.flatMap((step) => [...step.command === void 0 ? [] : [{
48
+ text: step.command,
49
+ command: true
50
+ }], ...(step.output ?? []).map(toLine)]);
51
+ }
52
+ /**
53
+ * A recessed terminal: mono, `$`-prefixed commands, optional typed playback.
54
+ *
55
+ * Recessed rather than raised — `bg-sunken` sits the transcript *into* the page
56
+ * the way a real console does (the snuffle convention, where the terminal
57
+ * surface is the only thing darker than the background).
58
+ *
59
+ * The `simulate` player is deliberately not a GIF or a video: it is text, so it
60
+ * copies, it scales with the type ramp, it re-themes, and it costs nothing to
61
+ * load. Keystrokes are jittered from a seed so a marketing screenshot is
62
+ * reproducible, and the whole animation is replaced by its final frame under
63
+ * `prefers-reduced-motion` — with no timers scheduled at all, rather than an
64
+ * animation that runs invisibly.
65
+ *
66
+ * @example
67
+ * <TerminalFrame
68
+ * title="install"
69
+ * copy
70
+ * lines={[{ text: "pnpm add @cueplusplus/ui", command: true }, "+ 1 package"]}
71
+ * />
72
+ * @example
73
+ * const SCRIPT = { steps: [{ command: "cue build", pending: "compiling", output: ["12 cues"] }] };
74
+ * <TerminalFrame simulate={SCRIPT} />
75
+ */
76
+ const TerminalFrame = React.forwardRef(function TerminalFrame({ className, title, lines, prompt = "$", copy = false, copyValue, simulate, height, children, ...elementProps }, ref) {
77
+ const reduced = usePrefersReducedMotion();
78
+ const [transcript, setTranscript] = React.useState(IDLE);
79
+ React.useEffect(() => {
80
+ if (simulate === void 0) {
81
+ setTranscript(IDLE);
82
+ return;
83
+ }
84
+ if (reduced) {
85
+ setTranscript({
86
+ lines: finalLines(simulate),
87
+ typing: null,
88
+ spinner: null,
89
+ done: true
90
+ });
91
+ return;
92
+ }
93
+ let cancelled = false;
94
+ let timer;
95
+ const sleep = (ms) => new Promise((resolve) => {
96
+ timer = setTimeout(resolve, ms);
97
+ });
98
+ const random = mulberry32(simulate.seed ?? DEFAULT_SEED);
99
+ const keystrokeMs = simulate.keystrokeMs ?? DEFAULT_KEYSTROKE_MS;
100
+ const holdMs = simulate.holdMs ?? DEFAULT_HOLD_MS;
101
+ const printed = [];
102
+ setTranscript({
103
+ lines: [],
104
+ typing: null,
105
+ spinner: null,
106
+ done: false
107
+ });
108
+ (async () => {
109
+ for (const step of simulate.steps) {
110
+ if (step.command !== void 0) {
111
+ for (let index = 1; index <= step.command.length; index += 1) {
112
+ await sleep(keystrokeMs * (.6 + random()));
113
+ if (cancelled) return;
114
+ setTranscript({
115
+ lines: [...printed],
116
+ typing: step.command.slice(0, index),
117
+ spinner: null,
118
+ done: false
119
+ });
120
+ }
121
+ await sleep(holdMs);
122
+ if (cancelled) return;
123
+ printed.push({
124
+ text: step.command,
125
+ command: true
126
+ });
127
+ setTranscript({
128
+ lines: [...printed],
129
+ typing: null,
130
+ spinner: null,
131
+ done: false
132
+ });
133
+ }
134
+ if (step.pending !== void 0) {
135
+ const frames = Math.max(1, Math.round((step.pendingMs ?? DEFAULT_PENDING_MS) / SPINNER_MS));
136
+ for (let index = 0; index < frames; index += 1) {
137
+ setTranscript({
138
+ lines: [...printed],
139
+ typing: null,
140
+ spinner: {
141
+ label: step.pending,
142
+ index
143
+ },
144
+ done: false
145
+ });
146
+ await sleep(SPINNER_MS);
147
+ if (cancelled) return;
148
+ }
149
+ }
150
+ for (const line of step.output ?? []) printed.push(toLine(line));
151
+ setTranscript({
152
+ lines: [...printed],
153
+ typing: null,
154
+ spinner: null,
155
+ done: false
156
+ });
157
+ await sleep(holdMs);
158
+ if (cancelled) return;
159
+ }
160
+ setTranscript({
161
+ lines: [...printed],
162
+ typing: null,
163
+ spinner: null,
164
+ done: true
165
+ });
166
+ })();
167
+ return () => {
168
+ cancelled = true;
169
+ if (timer !== void 0) clearTimeout(timer);
170
+ };
171
+ }, [reduced, simulate]);
172
+ const preamble = (lines ?? []).map(toLine);
173
+ const rendered = [...preamble, ...transcript.lines];
174
+ const commands = [...preamble, ...simulate === void 0 ? [] : finalLines(simulate)].filter((line) => line.command === true);
175
+ const clipboard = copyValue ?? commands.map((line) => line.text).join("\n");
176
+ const simulating = simulate !== void 0 && !transcript.done;
177
+ const promptGlyph = /* @__PURE__ */ jsx("span", {
178
+ "aria-hidden": "true",
179
+ "data-slot": "terminal-frame-prompt",
180
+ className: "mr-(--cue-space-3) shrink-0 text-accent select-none",
181
+ children: prompt
182
+ });
183
+ return /* @__PURE__ */ jsxs("div", {
184
+ ref,
185
+ "data-slot": "terminal-frame",
186
+ "data-simulating": simulate === void 0 ? void 0 : String(simulating),
187
+ className: cn("flex min-w-0 flex-col overflow-hidden rounded-(--radius-surface) border border-border bg-sunken font-mono text-(length:--cue-text-ui) text-fg-muted", className),
188
+ ...elementProps,
189
+ children: [title === void 0 && !copy ? null : /* @__PURE__ */ jsxs("div", {
190
+ "data-slot": "terminal-frame-bar",
191
+ className: "flex h-control-md shrink-0 items-center justify-between gap-(--cue-space-3) border-b border-border px-(--cue-pad-row-x)",
192
+ children: [/* @__PURE__ */ jsx("span", {
193
+ "data-slot": "terminal-frame-title",
194
+ className: "min-w-0 truncate text-(length:--cue-text-label) tracking-[0.15em] text-fg-subtle uppercase",
195
+ children: title
196
+ }), copy ? /* @__PURE__ */ jsx("span", {
197
+ "data-slot": "terminal-frame-copy",
198
+ "data-value": clipboard,
199
+ className: "shrink-0",
200
+ children: /* @__PURE__ */ jsx(CopyButton, {
201
+ value: clipboard,
202
+ variant: "ghost",
203
+ size: "sm"
204
+ })
205
+ }) : null]
206
+ }), /* @__PURE__ */ jsxs("div", {
207
+ "data-slot": "terminal-frame-body",
208
+ className: "min-w-0 flex-1 overflow-auto p-(--cue-space-5) leading-(--cue-leading-ui) whitespace-pre-wrap",
209
+ style: height === void 0 ? void 0 : { height: toRem(height) },
210
+ children: [
211
+ rendered.map((line, index) => /* @__PURE__ */ jsxs("div", {
212
+ "data-slot": "terminal-frame-line",
213
+ "data-command": line.command === true ? "" : void 0,
214
+ className: cn("flex min-w-0", LINE_TONES[line.tone ?? "neutral"]),
215
+ children: [line.command === true ? promptGlyph : null, /* @__PURE__ */ jsx("span", {
216
+ className: "min-w-0 break-all",
217
+ children: line.text
218
+ })]
219
+ }, index)),
220
+ transcript.typing === null ? null : /* @__PURE__ */ jsxs("div", {
221
+ "data-slot": "terminal-frame-line",
222
+ "data-typing": "",
223
+ className: "flex min-w-0 text-fg",
224
+ children: [
225
+ promptGlyph,
226
+ /* @__PURE__ */ jsx("span", {
227
+ className: "min-w-0 break-all",
228
+ children: transcript.typing
229
+ }),
230
+ /* @__PURE__ */ jsx("span", {
231
+ "aria-hidden": "true",
232
+ className: "animate-pulse motion-reduce:animate-none",
233
+ children: "▍"
234
+ })
235
+ ]
236
+ }),
237
+ transcript.spinner === null ? null : /* @__PURE__ */ jsxs("div", {
238
+ "data-slot": "terminal-frame-line",
239
+ "data-pending": "",
240
+ className: "flex min-w-0 text-fg-subtle",
241
+ children: [/* @__PURE__ */ jsx("span", {
242
+ "aria-hidden": "true",
243
+ className: "mr-(--cue-space-3) shrink-0 text-accent",
244
+ children: SPINNER_GLYPHS[transcript.spinner.index % SPINNER_GLYPHS.length]
245
+ }), /* @__PURE__ */ jsx("span", {
246
+ className: "min-w-0 break-all",
247
+ children: transcript.spinner.label
248
+ })]
249
+ }),
250
+ children
251
+ ]
252
+ })]
253
+ });
254
+ });
255
+ //#endregion
256
+ export { TerminalFrame };
@@ -0,0 +1,47 @@
1
+ import { ButtonProps } from "../primitives/button.js";
2
+ import * as React from "react";
3
+ //#region src/instruments/two-step-button.d.ts
4
+ /** Which end of the warning scale this action sits at. */
5
+ type TwoStepTone = "danger" | "warn";
6
+ interface TwoStepButtonProps extends Omit<ButtonProps, "onClick" | "variant" | "onConfirm" | "children"> {
7
+ /** Fired once, when the *second* press lands. */
8
+ onConfirm: () => void;
9
+ /** The idle label — name the action, not the button ("Delete rig", not "Delete"). */
10
+ children: React.ReactNode;
11
+ /** Label on the armed half. Defaults to `"Confirm"`. */
12
+ confirmLabel?: React.ReactNode;
13
+ /** Label on the escape hatch. Defaults to `"Cancel"`. */
14
+ cancelLabel?: React.ReactNode;
15
+ /** How severe this is. Defaults to `"danger"`. */
16
+ tone?: TwoStepTone;
17
+ /** ms before an untouched armed state disarms itself. `0` disables. Defaults to `4000`. */
18
+ timeout?: number;
19
+ /** Called with the new armed state on every arm and disarm. */
20
+ onArmedChange?: (armed: boolean) => void;
21
+ }
22
+ /**
23
+ * Arm, then confirm: a destructive action that takes two deliberate presses.
24
+ *
25
+ * The most-reused interaction in the portfolio (fifteen call sites, three
26
+ * hand-rolled implementations) and the right shape for a destructive action
27
+ * that is *routine* — deleting a cue, clearing a patch. A modal
28
+ * `AlertDialog` is the right shape for a rare and expensive one; putting a
29
+ * dialog in front of an action people take twenty times an hour just teaches
30
+ * them to dismiss dialogs.
31
+ *
32
+ * Four ways out, because an armed button left lying around is a trap: Cancel,
33
+ * Escape, moving focus away, and a timeout. Focus lands on **Cancel** when the
34
+ * pair arms, never on the destructive half — the same ruling as a destructive
35
+ * dialog's default button, and it means a stuck Enter key cannot walk through
36
+ * both steps.
37
+ *
38
+ * @example
39
+ * <TwoStepButton onConfirm={() => deleteRig(id)}>Delete rig</TwoStepButton>
40
+ * @example
41
+ * <TwoStepButton tone="warn" timeout={0} confirmLabel="Reset it" onConfirm={reset}>
42
+ * Reset patch
43
+ * </TwoStepButton>
44
+ */
45
+ declare const TwoStepButton: React.ForwardRefExoticComponent<TwoStepButtonProps & React.RefAttributes<HTMLButtonElement>>;
46
+ //#endregion
47
+ export { TwoStepButton, TwoStepButtonProps, TwoStepTone };