@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,214 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import * as React from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/midi/threshold-rail.tsx
6
+ const ZONE_TONES = {
7
+ accent: "bg-accent-soft",
8
+ ok: "bg-(--cue-ok-soft)",
9
+ busy: "bg-(--cue-busy-soft)",
10
+ warn: "bg-(--cue-warn-soft)",
11
+ danger: "bg-(--cue-danger-soft)",
12
+ info: "bg-(--cue-info-soft)"
13
+ };
14
+ const HANDLE_TONES = {
15
+ accent: "border-accent",
16
+ ok: "border-ok",
17
+ busy: "border-busy",
18
+ warn: "border-warn",
19
+ danger: "border-danger",
20
+ info: "border-info"
21
+ };
22
+ /** Grid the handles snap to, as a fraction of full scale. */
23
+ const DEFAULT_STEP = .01;
24
+ /** Closest the two handles may get, as a fraction of full scale. */
25
+ const DEFAULT_MIN_GAP = .01;
26
+ /** How many steps a page key jumps. */
27
+ const PAGE_FACTOR = 10;
28
+ /**
29
+ * The trigger level, set by dragging it along the signal it triggers on.
30
+ *
31
+ * A threshold is a number, and a number field would hold it perfectly well —
32
+ * but a threshold is only ever chosen *relative to a signal*, and this control
33
+ * is the one place both are visible at once: the live level fills the rail, the
34
+ * peak-hold needle marks how far it got, and the handle sits where the trigger
35
+ * fires. Unified from ableton-sync's three near-identical threshold editors.
36
+ *
37
+ * Two thresholds make it a window rather than a floor: supply `lower` and the
38
+ * rail arms *between* the handles, which is how a band-triggered cue avoids
39
+ * firing on a peak it was never meant to catch.
40
+ *
41
+ * What the ports did not have is a keyboard. Their handles moved on `mousedown`
42
+ * plus a document listener, so a threshold could not be set by anyone not using
43
+ * a mouse, and no screen reader was ever told what the number was. Here each
44
+ * handle is a `role="slider"` announcing a percentage, arrow keys step, page
45
+ * keys jump, and Home/End go to the limits — the drag is the fast path, not the
46
+ * only path.
47
+ *
48
+ * The `onChange`/`onCommit` split is the same undo-coalescing contract as
49
+ * `Slider` and `ScrubInput`: one drag is one undo entry.
50
+ *
51
+ * @example
52
+ * <ThresholdRail value={threshold} onChange={setThreshold} level={rms} peak={peak} />
53
+ * @example
54
+ * <ThresholdRail value={high} lower={low} onChange={setHigh} onLowerChange={setLow} />
55
+ */
56
+ const ThresholdRail = React.forwardRef(function ThresholdRail({ className, value, onChange, lower, onLowerChange, onCommit, level, peak, step = DEFAULT_STEP, minGap = DEFAULT_MIN_GAP, belowTone = "danger", aboveTone = "ok", disabled = false, label = "Threshold", formatValue = (fraction) => `${Math.round(fraction * 100)}%`, ...elementProps }, ref) {
57
+ const trackRef = React.useRef(null);
58
+ const [drag, setDrag] = React.useState(null);
59
+ const dual = lower !== void 0;
60
+ /** What each handle may not pass: the other one, plus the gap. */
61
+ const bounds = (edge) => edge === "upper" ? {
62
+ min: dual ? lower + minGap : 0,
63
+ max: 1
64
+ } : {
65
+ min: 0,
66
+ max: value - minGap
67
+ };
68
+ const emit = (edge, next, commit) => {
69
+ const { min, max } = bounds(edge);
70
+ const settled = quantise(next, min, max, step);
71
+ if (settled !== (edge === "upper" ? value : lower)) {
72
+ if (edge === "upper") onChange(settled);
73
+ else onLowerChange?.(settled);
74
+ }
75
+ if (!commit) return;
76
+ onCommit?.(edge === "upper" ? {
77
+ upper: settled,
78
+ lower
79
+ } : {
80
+ upper: value,
81
+ lower: settled
82
+ });
83
+ };
84
+ const onPointerDown = (edge) => (event) => {
85
+ if (disabled || event.button !== 0) return;
86
+ event.preventDefault();
87
+ event.currentTarget.setPointerCapture?.(event.pointerId);
88
+ setDrag({
89
+ edge,
90
+ pointerId: event.pointerId
91
+ });
92
+ };
93
+ const onPointerMove = (event) => {
94
+ if (disabled || drag === null || drag.pointerId !== event.pointerId) return;
95
+ const box = trackRef.current?.getBoundingClientRect();
96
+ if (box === void 0 || box.width === 0) return;
97
+ emit(drag.edge, (event.clientX - box.left) / box.width, false);
98
+ };
99
+ const endDrag = (event) => {
100
+ if (drag === null || drag.pointerId !== event.pointerId) return;
101
+ event.currentTarget.releasePointerCapture?.(event.pointerId);
102
+ setDrag(null);
103
+ const settled = drag.edge === "upper" ? value : lower;
104
+ emit(drag.edge, settled, true);
105
+ };
106
+ const onKeyDown = (edge) => (event) => {
107
+ if (disabled) return;
108
+ const current = edge === "upper" ? value : lower;
109
+ const { min, max } = bounds(edge);
110
+ let next = null;
111
+ if (event.key === "ArrowRight" || event.key === "ArrowUp") next = current + step;
112
+ else if (event.key === "ArrowLeft" || event.key === "ArrowDown") next = current - step;
113
+ else if (event.key === "PageUp") next = current + step * PAGE_FACTOR;
114
+ else if (event.key === "PageDown") next = current - step * PAGE_FACTOR;
115
+ else if (event.key === "Home") next = min;
116
+ else if (event.key === "End") next = max;
117
+ if (next === null) return;
118
+ event.preventDefault();
119
+ emit(edge, next, true);
120
+ };
121
+ const armedStart = dual ? lower : value;
122
+ const edges = dual ? ["lower", "upper"] : ["upper"];
123
+ return /* @__PURE__ */ jsx("div", {
124
+ ref,
125
+ role: "group",
126
+ "aria-label": label,
127
+ "data-slot": "threshold-rail",
128
+ className: cn("flex h-control-sm w-full items-center", disabled && "opacity-40", className),
129
+ ...elementProps,
130
+ children: /* @__PURE__ */ jsxs("div", {
131
+ ref: trackRef,
132
+ "data-slot": "threshold-rail-track",
133
+ className: "relative h-2 w-full rounded-full border border-border bg-sunken",
134
+ children: [
135
+ /* @__PURE__ */ jsx("div", {
136
+ "data-slot": "threshold-rail-zone",
137
+ "data-zone": "below",
138
+ className: cn("pointer-events-none absolute inset-y-0 left-0 rounded-l-full", ZONE_TONES[belowTone]),
139
+ style: { width: percent(armedStart) }
140
+ }),
141
+ /* @__PURE__ */ jsx("div", {
142
+ "data-slot": "threshold-rail-zone",
143
+ "data-zone": "armed",
144
+ className: cn("pointer-events-none absolute inset-y-0", dual ? null : "rounded-r-full", ZONE_TONES[aboveTone]),
145
+ style: {
146
+ left: percent(armedStart),
147
+ width: percent((dual ? value : 1) - armedStart)
148
+ }
149
+ }),
150
+ dual ? /* @__PURE__ */ jsx("div", {
151
+ "data-slot": "threshold-rail-zone",
152
+ "data-zone": "above",
153
+ className: cn("pointer-events-none absolute inset-y-0 right-0 rounded-r-full", ZONE_TONES[belowTone]),
154
+ style: {
155
+ left: percent(value),
156
+ width: percent(1 - value)
157
+ }
158
+ }) : null,
159
+ typeof level === "number" ? /* @__PURE__ */ jsx("div", {
160
+ "data-slot": "threshold-rail-level",
161
+ className: "pointer-events-none absolute inset-y-0 left-0 rounded-l-full bg-fg/55",
162
+ style: { width: percent(level) }
163
+ }) : null,
164
+ typeof peak === "number" ? /* @__PURE__ */ jsx("div", {
165
+ "data-slot": "threshold-rail-peak",
166
+ className: "pointer-events-none absolute inset-y-0 w-px bg-warn",
167
+ style: { left: percent(peak) }
168
+ }) : null,
169
+ edges.map((edge) => {
170
+ const current = edge === "upper" ? value : lower;
171
+ const { min, max } = bounds(edge);
172
+ return /* @__PURE__ */ jsx("div", {
173
+ role: "slider",
174
+ "data-slot": "threshold-rail-handle",
175
+ "data-edge": edge,
176
+ "data-dragging": String(drag?.edge === edge),
177
+ tabIndex: disabled ? -1 : 0,
178
+ "aria-label": dual ? `${label} ${edge}` : label,
179
+ "aria-valuenow": Math.round(current * 100),
180
+ "aria-valuemin": Math.round(min * 100),
181
+ "aria-valuemax": Math.round(max * 100),
182
+ "aria-valuetext": formatValue(current),
183
+ "aria-orientation": "horizontal",
184
+ "aria-disabled": disabled ? true : void 0,
185
+ onPointerDown: onPointerDown(edge),
186
+ onPointerMove,
187
+ onPointerUp: endDrag,
188
+ onPointerCancel: endDrag,
189
+ onKeyDown: onKeyDown(edge),
190
+ className: cn("absolute top-1/2 z-10 size-3 -translate-x-1/2 -translate-y-1/2 touch-none rounded-full border-2 bg-bg outline-none transition-transform", "motion-reduce:transition-none data-[dragging=true]:scale-125", "focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-accent", edge === "upper" ? HANDLE_TONES[aboveTone] : HANDLE_TONES[belowTone], disabled ? "cursor-default" : drag?.edge === edge ? "cursor-grabbing" : "cursor-grab hover:scale-110"),
191
+ style: { left: percent(current) }
192
+ }, edge);
193
+ })
194
+ ]
195
+ })
196
+ });
197
+ });
198
+ /**
199
+ * A fraction as a CSS percentage, clamped to the rail.
200
+ *
201
+ * Rounded, because `0.62 * 100` is `62.00000000000001` and a style attribute
202
+ * carrying that is a diff nobody wants to read.
203
+ */
204
+ function percent(fraction) {
205
+ return `${Math.min(100, Math.max(0, Math.round(fraction * 1e6) / 1e4))}%`;
206
+ }
207
+ /** Snap to the step grid, clamp to the bounds, and drop the float noise. */
208
+ function quantise(raw, min, max, step) {
209
+ if (!Number.isFinite(raw)) return min;
210
+ const snapped = Math.round(raw / step) * step;
211
+ return Math.round(Math.min(max, Math.max(min, snapped)) * 1e6) / 1e6;
212
+ }
213
+ //#endregion
214
+ export { ThresholdRail };
@@ -0,0 +1,83 @@
1
+ import { TimeSignature } from "./_time.js";
2
+ import { RulerViewport } from "./_ruler.js";
3
+ import * as React from "react";
4
+ //#region src/midi/timeline-ruler.d.ts
5
+ /** A named position in the song: a cue point, a section start. */
6
+ interface RulerMarker {
7
+ /** Stable key. Defaults to the label plus its beat. */
8
+ id?: string;
9
+ /** Position in quarter-note beats. */
10
+ beat: number;
11
+ /** What to print. */
12
+ label: string;
13
+ }
14
+ /** The transport's loop bracket. */
15
+ interface LoopRegion {
16
+ /** Where the loop starts, in quarter-note beats. */
17
+ start: number;
18
+ /** How long it is, in quarter-note beats. */
19
+ length: number;
20
+ /** Whether looping is armed. Defaults to `true`; `false` draws nothing. */
21
+ enabled?: boolean;
22
+ }
23
+ interface TimelineRulerProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
24
+ /** Length of the song, in quarter-note beats. */
25
+ totalBeats: number;
26
+ /** Zoom, in px per quarter-note beat. Defaults to `20`. */
27
+ pxPerBeat?: number;
28
+ /**
29
+ * What is on screen, in the same pixel coordinates.
30
+ *
31
+ * Supply it when the host already tracks its own scroll — a timeline usually
32
+ * does, and one source of truth scrolls in step. Omitted, the ruler watches
33
+ * its own scroll parent instead.
34
+ */
35
+ viewport?: RulerViewport;
36
+ /** The signature the bars are counted in. Defaults to 4/4. */
37
+ timeSignature?: TimeSignature;
38
+ /** Tempo in BPM. Only used for the readout and the accessible name. */
39
+ tempo?: number | null;
40
+ /** Transport position in quarter-note beats. `null` or absent draws no playhead. */
41
+ playhead?: number | null;
42
+ /** The loop bracket, if there is one. */
43
+ loop?: LoopRegion | null;
44
+ /** Cue points to pin along the ruler. */
45
+ markers?: readonly RulerMarker[];
46
+ /** Ruler height in px at the 16px root, emitted as `rem`. Defaults to `40`. */
47
+ height?: number;
48
+ /** Pixel spacing the ticks aim for. Defaults to one centimetre. */
49
+ targetPx?: number;
50
+ /** How far past the viewport to keep ruling, in px. Defaults to `120`. */
51
+ bufferPx?: number;
52
+ /** What this timeline is. Defaults to `"Timeline"`. */
53
+ label?: string;
54
+ }
55
+ /**
56
+ * The bar ruler over an arrangement: zoom-adaptive, culled, and deliberately
57
+ * faint.
58
+ *
59
+ * Ported from ableton-sync's arrangement view, with its two performance
60
+ * problems fixed. The first is density: the original picked from a ladder of
61
+ * musical intervals and then multiplied by four, so its ruler was four times
62
+ * sparser than the one centimetre it aimed for. The second is culling: it kept
63
+ * fifty *beats* of margin either side of the viewport, which at a tight zoom is
64
+ * a thousand pixels of hidden DOM and at a loose zoom is nothing. Both now live
65
+ * in `_ruler.ts`, are pure, and are tested without a DOM.
66
+ *
67
+ * **The horizontal axis is in CSS pixels, not `rem`** — the one place in this
68
+ * system that is true. `pxPerBeat` is not a size, it is a coordinate system the
69
+ * ruler shares with whatever the caller draws underneath it: clips, automation,
70
+ * a playhead overlay. Converting it to `rem` here would silently shear the
71
+ * ruler away from the tracks at any root font size other than 16. The ruler's
72
+ * *height* is a size, and is in `rem` like everything else.
73
+ *
74
+ * The ticks are painted at 10–15% opacity on purpose. A ruler is read by
75
+ * glancing, and the material under it — the clips — is what the eye is actually
76
+ * on; a ruler drawn at full contrast becomes a fence across the arrangement.
77
+ *
78
+ * @example
79
+ * <TimelineRuler totalBeats={512} pxPerBeat={zoom} viewport={viewport} playhead={position} />
80
+ */
81
+ declare const TimelineRuler: React.ForwardRefExoticComponent<TimelineRulerProps & React.RefAttributes<HTMLDivElement>>;
82
+ //#endregion
83
+ export { LoopRegion, RulerMarker, TimelineRuler, TimelineRulerProps };
@@ -0,0 +1,152 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { useComposedRefs } from "../lib/compose.js";
4
+ import { toRem } from "../instruments/_rem.js";
5
+ import { DEFAULT_TIME_SIGNATURE, barBeats, beatsToMusical, formatMusicalTime } from "./_time.js";
6
+ import { rulerTicks } from "./_ruler.js";
7
+ import * as React from "react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ //#region src/midi/timeline-ruler.tsx
10
+ /** Default zoom: twenty pixels to the beat, the ported arrangement default. */
11
+ const DEFAULT_PX_PER_BEAT = 20;
12
+ /** Default ruler height in px at the 16px root. */
13
+ const DEFAULT_HEIGHT_PX = 40;
14
+ /**
15
+ * The bar ruler over an arrangement: zoom-adaptive, culled, and deliberately
16
+ * faint.
17
+ *
18
+ * Ported from ableton-sync's arrangement view, with its two performance
19
+ * problems fixed. The first is density: the original picked from a ladder of
20
+ * musical intervals and then multiplied by four, so its ruler was four times
21
+ * sparser than the one centimetre it aimed for. The second is culling: it kept
22
+ * fifty *beats* of margin either side of the viewport, which at a tight zoom is
23
+ * a thousand pixels of hidden DOM and at a loose zoom is nothing. Both now live
24
+ * in `_ruler.ts`, are pure, and are tested without a DOM.
25
+ *
26
+ * **The horizontal axis is in CSS pixels, not `rem`** — the one place in this
27
+ * system that is true. `pxPerBeat` is not a size, it is a coordinate system the
28
+ * ruler shares with whatever the caller draws underneath it: clips, automation,
29
+ * a playhead overlay. Converting it to `rem` here would silently shear the
30
+ * ruler away from the tracks at any root font size other than 16. The ruler's
31
+ * *height* is a size, and is in `rem` like everything else.
32
+ *
33
+ * The ticks are painted at 10–15% opacity on purpose. A ruler is read by
34
+ * glancing, and the material under it — the clips — is what the eye is actually
35
+ * on; a ruler drawn at full contrast becomes a fence across the arrangement.
36
+ *
37
+ * @example
38
+ * <TimelineRuler totalBeats={512} pxPerBeat={zoom} viewport={viewport} playhead={position} />
39
+ */
40
+ const TimelineRuler = React.forwardRef(function TimelineRuler({ className, totalBeats, pxPerBeat = DEFAULT_PX_PER_BEAT, viewport: viewportProp, timeSignature = DEFAULT_TIME_SIGNATURE, tempo, playhead, loop, markers, height = DEFAULT_HEIGHT_PX, targetPx, bufferPx, label = "Timeline", ...elementProps }, forwardedRef) {
41
+ const rootRef = React.useRef(null);
42
+ const ref = useComposedRefs(forwardedRef, rootRef);
43
+ const [measured, setMeasured] = React.useState(null);
44
+ React.useEffect(() => {
45
+ if (viewportProp !== void 0) return;
46
+ const scroller = rootRef.current?.parentElement;
47
+ if (!scroller || typeof requestAnimationFrame !== "function") return;
48
+ let frame = null;
49
+ const read = () => setMeasured({
50
+ offset: scroller.scrollLeft,
51
+ width: scroller.clientWidth
52
+ });
53
+ const onScroll = () => {
54
+ if (frame !== null) return;
55
+ frame = requestAnimationFrame(() => {
56
+ frame = null;
57
+ read();
58
+ });
59
+ };
60
+ read();
61
+ scroller.addEventListener("scroll", onScroll);
62
+ globalThis.addEventListener?.("resize", read);
63
+ return () => {
64
+ if (frame !== null) cancelAnimationFrame(frame);
65
+ scroller.removeEventListener("scroll", onScroll);
66
+ globalThis.removeEventListener?.("resize", read);
67
+ };
68
+ }, [viewportProp]);
69
+ const viewport = viewportProp ?? (measured !== null && measured.width > 0 ? measured : void 0);
70
+ const bar = barBeats(timeSignature);
71
+ const { interval, width, ticks } = rulerTicks({
72
+ totalBeats,
73
+ pxPerBeat,
74
+ viewport,
75
+ timeSignature,
76
+ targetPx,
77
+ bufferPx
78
+ });
79
+ const bars = Math.max(1, Math.ceil(totalBeats / bar));
80
+ const signature = `${timeSignature.numerator}/${timeSignature.denominator}`;
81
+ const summary = [
82
+ `${label}: ${bars} bars at ${signature}`,
83
+ typeof tempo === "number" ? `${tempo} BPM` : null,
84
+ typeof playhead === "number" ? `playhead at ${formatMusicalTime(beatsToMusical(playhead, timeSignature))}` : null
85
+ ].filter((part) => part !== null).join(", ");
86
+ const loopVisible = loop != null && loop.enabled !== false && loop.length > 0;
87
+ return /* @__PURE__ */ jsxs("div", {
88
+ ref,
89
+ role: "img",
90
+ "aria-label": summary,
91
+ "data-slot": "timeline-ruler",
92
+ className: cn("relative bg-surface-1 select-none", className),
93
+ style: { height: toRem(height) },
94
+ ...elementProps,
95
+ children: [/* @__PURE__ */ jsxs("div", {
96
+ "data-slot": "timeline-ruler-track",
97
+ className: "relative h-full",
98
+ style: {
99
+ width: `${width}px`,
100
+ minWidth: "100%"
101
+ },
102
+ children: [
103
+ loopVisible ? /* @__PURE__ */ jsx("div", {
104
+ "data-slot": "timeline-ruler-loop",
105
+ className: "absolute inset-y-0 border-x border-warn/40 bg-warn/10",
106
+ style: {
107
+ left: `${loop.start * pxPerBeat}px`,
108
+ width: `${loop.length * pxPerBeat}px`
109
+ }
110
+ }) : null,
111
+ ticks.map((tick) => /* @__PURE__ */ jsxs("div", {
112
+ "data-slot": "timeline-ruler-tick",
113
+ "data-bar": String(tick.barStart),
114
+ className: "absolute inset-y-0 flex flex-col justify-end",
115
+ style: { left: `${tick.left}px` },
116
+ children: [tick.barStart || interval >= bar ? /* @__PURE__ */ jsx("span", {
117
+ "data-slot": "timeline-ruler-label",
118
+ className: cn("absolute top-0 left-[2px] font-mono text-(length:--cue-text-micro) whitespace-nowrap tabular-nums", tick.barStart ? "text-fg-muted" : "text-fg-subtle"),
119
+ children: tick.label
120
+ }) : null, /* @__PURE__ */ jsx("span", {
121
+ "data-slot": "timeline-ruler-line",
122
+ className: cn("w-px", tick.barStart ? "h-3/5 bg-fg/15" : "h-1/4 bg-fg-subtle/10")
123
+ })]
124
+ }, tick.beat)),
125
+ (markers ?? []).map((marker) => /* @__PURE__ */ jsxs("div", {
126
+ "data-slot": "timeline-ruler-marker",
127
+ className: "absolute top-1/2 flex items-center gap-[2px] font-mono text-(length:--cue-text-micro) whitespace-nowrap text-fg",
128
+ style: { left: `${marker.beat * pxPerBeat}px` },
129
+ children: [/* @__PURE__ */ jsx("span", {
130
+ "aria-hidden": "true",
131
+ className: "h-0 w-0 border-y-[3px] border-l-[4px] border-y-transparent border-l-fg"
132
+ }), marker.label]
133
+ }, marker.id ?? `${marker.label}@${marker.beat}`)),
134
+ typeof playhead === "number" ? /* @__PURE__ */ jsx("div", {
135
+ "data-slot": "timeline-ruler-playhead",
136
+ className: "absolute inset-y-0 z-10 w-px bg-accent",
137
+ style: { left: `${playhead * pxPerBeat}px` },
138
+ children: /* @__PURE__ */ jsx("span", {
139
+ "aria-hidden": "true",
140
+ className: "absolute -top-px -left-[3px] size-[7px] rotate-45 bg-accent"
141
+ })
142
+ }) : null
143
+ ]
144
+ }), typeof tempo === "number" ? /* @__PURE__ */ jsx("div", {
145
+ "data-slot": "timeline-ruler-readout",
146
+ className: "pointer-events-none absolute top-px right-px rounded-(--radius-control) bg-surface-1/80 px-(--cue-space-1) font-mono text-(length:--cue-text-micro) text-fg-subtle tabular-nums",
147
+ children: `${tempo.toFixed(1)} BPM · ${signature}`
148
+ }) : null]
149
+ });
150
+ });
151
+ //#endregion
152
+ export { TimelineRuler };
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ //#region src/overlays/_debounce.ts
4
+ /**
5
+ * Trail a fast-changing value by a quiet period.
6
+ *
7
+ * The command palette types at one keystroke per frame but refilters a command
8
+ * list on every change; letting the list recompute per keystroke is what makes a
9
+ * palette feel heavy on a 400-command app. Holding the *query* back rather than
10
+ * the input keeps the field responsive — the character appears immediately, the
11
+ * work waits.
12
+ *
13
+ * `delay <= 0` returns the value unchanged with no timer at all, so a caller can
14
+ * switch debouncing off (and a test can) without a branch at the call site.
15
+ *
16
+ * @param value The value to trail.
17
+ * @param delay Quiet period in ms before the trailing value catches up.
18
+ * @returns The value as it was `delay` ms after it last changed.
19
+ * @internal Not part of the public API; used by `CommandPalette`.
20
+ */
21
+ function useDebouncedValue(value, delay) {
22
+ const [settled, setSettled] = React.useState(value);
23
+ React.useEffect(() => {
24
+ if (delay <= 0) {
25
+ setSettled(value);
26
+ return;
27
+ }
28
+ const timer = setTimeout(() => setSettled(value), delay);
29
+ return () => clearTimeout(timer);
30
+ }, [value, delay]);
31
+ return delay <= 0 ? value : settled;
32
+ }
33
+ //#endregion
34
+ export { useDebouncedValue };
@@ -0,0 +1,59 @@
1
+ import "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ //#region src/overlays/_glyphs.tsx
4
+ /**
5
+ * Shared overlay glyphs.
6
+ *
7
+ * Drawn inline rather than pulled from `lucide-react` so that closing a dialog
8
+ * or ticking a menu row costs no icon dependency at runtime, and so the strokes
9
+ * stay hairline-thin at the 10–12px sizes console density asks for. `currentColor`
10
+ * everywhere: the tone comes from the surrounding component.
11
+ *
12
+ * @internal Not part of the public API.
13
+ */
14
+ /** A cross for close affordances — two strokes, so it stays square at 8px. */
15
+ function CrossGlyph(props) {
16
+ return /* @__PURE__ */ jsx("svg", {
17
+ viewBox: "0 0 16 16",
18
+ fill: "none",
19
+ stroke: "currentColor",
20
+ strokeWidth: "1.75",
21
+ strokeLinecap: "round",
22
+ "aria-hidden": "true",
23
+ ...props,
24
+ children: /* @__PURE__ */ jsx("path", { d: "m4 4 8 8M12 4l-8 8" })
25
+ });
26
+ }
27
+ /** A magnifier at hairline weight — the command palette's leading mark. */
28
+ function SearchGlyph(props) {
29
+ return /* @__PURE__ */ jsxs("svg", {
30
+ viewBox: "0 0 16 16",
31
+ fill: "none",
32
+ stroke: "currentColor",
33
+ strokeWidth: "1.75",
34
+ strokeLinecap: "round",
35
+ "aria-hidden": "true",
36
+ ...props,
37
+ children: [/* @__PURE__ */ jsx("circle", {
38
+ cx: "7",
39
+ cy: "7",
40
+ r: "4.5"
41
+ }), /* @__PURE__ */ jsx("path", { d: "m10.5 10.5 3 3" })]
42
+ });
43
+ }
44
+ /** The tick marking a checked menu row. */
45
+ function TickGlyph(props) {
46
+ return /* @__PURE__ */ jsx("svg", {
47
+ viewBox: "0 0 16 16",
48
+ fill: "none",
49
+ stroke: "currentColor",
50
+ strokeWidth: "2.5",
51
+ strokeLinecap: "round",
52
+ strokeLinejoin: "round",
53
+ "aria-hidden": "true",
54
+ ...props,
55
+ children: /* @__PURE__ */ jsx("path", { d: "m3 8.5 3.5 3.5L13 4.5" })
56
+ });
57
+ }
58
+ //#endregion
59
+ export { CrossGlyph, SearchGlyph, TickGlyph };
@@ -0,0 +1,70 @@
1
+ //#region src/overlays/_surface.d.ts
2
+ /**
3
+ * The conventions every floating surface in this system shares.
4
+ *
5
+ * Overlays are the one place the portfolio allows a shadow: a dialog, a menu or
6
+ * a toast genuinely floats above the page, so it gets `surface-2` fill, the
7
+ * `border-overlay` rim (which some themes — venu — deliberately match to the
8
+ * surface so the rim vanishes) and one soft drop shadow. Everything flat stays
9
+ * flat and separates with hairlines instead.
10
+ *
11
+ * Encoded here once rather than repeated per component so a change to the
12
+ * overlay language is a one-line change, and so the tests can assert the same
13
+ * recipe on every overlay in the group.
14
+ */
15
+ /**
16
+ * Fill, rim, radius and shadow for any floating content surface.
17
+ *
18
+ * @example
19
+ * <Popover.Popup className={cn(overlaySurfaceClasses, className)} />
20
+ */
21
+ declare const overlaySurfaceClasses = "border border-border-overlay bg-surface-2 rounded-(--radius-overlay) shadow-[0_8px_24px_rgba(0,0,0,0.4)]";
22
+ /**
23
+ * The full-viewport dim behind a modal surface. `--cue-scrim` is theme-owned —
24
+ * dusk and hivehub tune their own — so the value is never hard-coded here.
25
+ */
26
+ declare const scrimClasses = "fixed inset-0 z-50 bg-(--cue-scrim) transition-opacity duration-150 ease-out motion-reduce:transition-none data-[starting-style]:opacity-0 data-[ending-style]:opacity-0";
27
+ /**
28
+ * What a Base UI `Positioner` needs and nothing more: it is a layout box, not a
29
+ * painted one. The stacking context lives here so the popup itself can stay
30
+ * `position: static` inside it.
31
+ */
32
+ declare const overlayPositionerClasses = "z-50 outline-none";
33
+ /**
34
+ * Enter/exit for an anchored popup, driven entirely by Base UI's
35
+ * `data-starting-style` / `data-ending-style` attributes and plain CSS
36
+ * transitions — no animation library, and nothing to run on the main thread
37
+ * when the user has asked for reduced motion.
38
+ */
39
+ declare const overlayPopupTransitionClasses = "origin-(--transform-origin) transition-[opacity,scale] duration-100 ease-out motion-reduce:transition-none data-[starting-style]:scale-[0.98] data-[starting-style]:opacity-0 data-[ending-style]:scale-[0.98] data-[ending-style]:opacity-0";
40
+ /**
41
+ * Enter/exit for a centred modal surface. Split from
42
+ * {@link overlayPopupTransitionClasses} because a dialog is centred with a
43
+ * translate, and animating `scale` alongside a static `translate` needs the
44
+ * transition property list to name both.
45
+ */
46
+ declare const overlayModalTransitionClasses = "transition-[opacity,scale] duration-150 ease-out motion-reduce:transition-none data-[starting-style]:scale-[0.98] data-[starting-style]:opacity-0 data-[ending-style]:scale-[0.98] data-[ending-style]:opacity-0";
47
+ /** Body copy inside an overlay: mono, one rung under the panel's own text. */
48
+ declare const overlayTextClasses = "font-mono text-(length:--cue-text-ui) text-fg";
49
+ /** The heading line of a dialog, an alert dialog or a popover. */
50
+ declare const overlayTitleClasses = "font-mono text-(length:--cue-text-emphasis) font-medium text-fg";
51
+ /** The supporting line under an overlay title. */
52
+ declare const overlayDescriptionClasses = "font-mono text-(length:--cue-text-ui) leading-(--cue-leading-ui) text-fg-muted";
53
+ /** The action strip at the foot of a modal surface. */
54
+ declare const overlayFooterClasses = "flex items-center justify-end gap-(--cue-space-3) pt-(--cue-space-2)";
55
+ /**
56
+ * One row of a menu: the short rung of the density control ladder, highlighted
57
+ * with `accent-soft` rather than a solid fill (the luma defect ruling — a solid
58
+ * accent bar on a hovered row is too loud at console density).
59
+ */
60
+ declare const menuItemClasses = "flex h-control-sm cursor-default items-center gap-(--cue-space-2) rounded-(--radius-control) px-(--cue-space-3) font-mono text-(length:--cue-text-ui) text-fg-muted outline-none select-none data-[highlighted]:bg-accent-soft data-[highlighted]:text-fg data-[disabled]:pointer-events-none data-[disabled]:opacity-40";
61
+ /** The uppercase mono caption over a group of menu rows. */
62
+ declare const menuLabelClasses = "flex h-control-sm items-center px-(--cue-space-3) font-mono text-(length:--cue-text-label) tracking-[0.15em] text-fg-subtle uppercase select-none";
63
+ /** The hairline between menu groups. */
64
+ declare const menuSeparatorClasses = "my-(--cue-space-1) h-px bg-border";
65
+ /** Padding of a menu popup — a single space unit so rows reach the rim. */
66
+ declare const menuPopupClasses = "min-w-[10rem] p-(--cue-space-1)";
67
+ /** Default gap in px between an anchored popup and its trigger. */
68
+ declare const OVERLAY_SIDE_OFFSET = 4;
69
+ //#endregion
70
+ export { OVERLAY_SIDE_OFFSET, menuItemClasses, menuLabelClasses, menuPopupClasses, menuSeparatorClasses, overlayDescriptionClasses, overlayFooterClasses, overlayModalTransitionClasses, overlayPopupTransitionClasses, overlayPositionerClasses, overlaySurfaceClasses, overlayTextClasses, overlayTitleClasses, scrimClasses };