@cueplusplus/ui 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1016) hide show
  1. package/CHANGELOG.md +4028 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE.md +34 -0
  4. package/README.md +237 -0
  5. package/dist/agent-runtime/_glyphs.js +43 -0
  6. package/dist/agent-runtime/branch-picker.d.ts +45 -0
  7. package/dist/agent-runtime/branch-picker.js +87 -0
  8. package/dist/agent-runtime/index.d.ts +4 -0
  9. package/dist/agent-runtime/index.js +4 -0
  10. package/dist/agent-runtime/tool-call-card.d.ts +69 -0
  11. package/dist/agent-runtime/tool-call-card.js +187 -0
  12. package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
  13. package/dist/agent-runtime/use-agent-thread.js +251 -0
  14. package/dist/brand/_chassis.d.ts +54 -0
  15. package/dist/brand/_chassis.js +81 -0
  16. package/dist/brand/_geometry.js +41 -0
  17. package/dist/brand/cue-logotype.d.ts +29 -0
  18. package/dist/brand/cue-logotype.js +60 -0
  19. package/dist/brand/cue-mark.d.ts +30 -0
  20. package/dist/brand/cue-mark.js +61 -0
  21. package/dist/brand/index.d.ts +5 -0
  22. package/dist/brand/plussie.d.ts +67 -0
  23. package/dist/brand/plussie.js +125 -0
  24. package/dist/charts/_token.js +39 -0
  25. package/dist/charts/container.d.ts +58 -0
  26. package/dist/charts/container.js +77 -0
  27. package/dist/charts/index.d.ts +5 -0
  28. package/dist/charts/index.js +5 -0
  29. package/dist/charts/ramps.d.ts +140 -0
  30. package/dist/charts/ramps.js +615 -0
  31. package/dist/charts/theme.d.ts +112 -0
  32. package/dist/charts/theme.js +165 -0
  33. package/dist/charts/tones.d.ts +111 -0
  34. package/dist/charts/tones.js +127 -0
  35. package/dist/chat/_glyphs.js +55 -0
  36. package/dist/chat/agent-color.d.ts +84 -0
  37. package/dist/chat/agent-color.js +101 -0
  38. package/dist/chat/agent-pile.d.ts +55 -0
  39. package/dist/chat/agent-pile.js +121 -0
  40. package/dist/chat/ask-box.d.ts +88 -0
  41. package/dist/chat/ask-box.js +341 -0
  42. package/dist/chat/composer.d.ts +66 -0
  43. package/dist/chat/composer.js +144 -0
  44. package/dist/chat/delegation-card.d.ts +60 -0
  45. package/dist/chat/delegation-card.js +129 -0
  46. package/dist/chat/index.d.ts +8 -0
  47. package/dist/chat/index.js +8 -0
  48. package/dist/chat/message-list.d.ts +45 -0
  49. package/dist/chat/message-list.js +141 -0
  50. package/dist/chat/message.d.ts +47 -0
  51. package/dist/chat/message.js +108 -0
  52. package/dist/chrome/_band.js +54 -0
  53. package/dist/chrome/_drag.js +59 -0
  54. package/dist/chrome/_edge-scroller.d.ts +45 -0
  55. package/dist/chrome/_edge-scroller.js +149 -0
  56. package/dist/chrome/_glyphs.js +119 -0
  57. package/dist/chrome/_status-bar-item.js +85 -0
  58. package/dist/chrome/_status-bar.d.ts +15 -0
  59. package/dist/chrome/_status-bar.js +171 -0
  60. package/dist/chrome/_tabs-scroll.d.ts +67 -0
  61. package/dist/chrome/_tabs-scroll.js +73 -0
  62. package/dist/chrome/_tree.d.ts +75 -0
  63. package/dist/chrome/_tree.js +49 -0
  64. package/dist/chrome/app-bar.d.ts +103 -0
  65. package/dist/chrome/app-bar.js +175 -0
  66. package/dist/chrome/app-shell.d.ts +243 -0
  67. package/dist/chrome/app-shell.js +266 -0
  68. package/dist/chrome/band.d.ts +106 -0
  69. package/dist/chrome/band.js +97 -0
  70. package/dist/chrome/empty-state.d.ts +37 -0
  71. package/dist/chrome/empty-state.js +57 -0
  72. package/dist/chrome/eyebrow.d.ts +29 -0
  73. package/dist/chrome/eyebrow.js +36 -0
  74. package/dist/chrome/footer.d.ts +88 -0
  75. package/dist/chrome/footer.js +83 -0
  76. package/dist/chrome/index.d.ts +24 -0
  77. package/dist/chrome/index.js +22 -0
  78. package/dist/chrome/inspector.d.ts +61 -0
  79. package/dist/chrome/inspector.js +121 -0
  80. package/dist/chrome/navigation-menu.d.ts +80 -0
  81. package/dist/chrome/navigation-menu.js +121 -0
  82. package/dist/chrome/page-shell.d.ts +38 -0
  83. package/dist/chrome/page-shell.js +76 -0
  84. package/dist/chrome/panel.d.ts +55 -0
  85. package/dist/chrome/panel.js +67 -0
  86. package/dist/chrome/row.d.ts +82 -0
  87. package/dist/chrome/row.js +106 -0
  88. package/dist/chrome/scroll-area.d.ts +39 -0
  89. package/dist/chrome/scroll-area.js +70 -0
  90. package/dist/chrome/section-header.d.ts +42 -0
  91. package/dist/chrome/section-header.js +79 -0
  92. package/dist/chrome/segmented-control.d.ts +77 -0
  93. package/dist/chrome/segmented-control.js +95 -0
  94. package/dist/chrome/status-bar.d.ts +129 -0
  95. package/dist/chrome/status-bar.js +120 -0
  96. package/dist/chrome/tabs.d.ts +80 -0
  97. package/dist/chrome/tabs.js +132 -0
  98. package/dist/chrome/title-bar.d.ts +47 -0
  99. package/dist/chrome/title-bar.js +43 -0
  100. package/dist/chrome/toolbar.d.ts +68 -0
  101. package/dist/chrome/toolbar.js +83 -0
  102. package/dist/chrome/tree.d.ts +98 -0
  103. package/dist/chrome/tree.js +248 -0
  104. package/dist/color/_checker.js +14 -0
  105. package/dist/color/_convert.d.ts +52 -0
  106. package/dist/color/_convert.js +66 -0
  107. package/dist/color/_glyphs.js +28 -0
  108. package/dist/color/_thumb.js +15 -0
  109. package/dist/color/_value.js +28 -0
  110. package/dist/color/color-area.d.ts +27 -0
  111. package/dist/color/color-area.js +40 -0
  112. package/dist/color/color-field.d.ts +32 -0
  113. package/dist/color/color-field.js +43 -0
  114. package/dist/color/color-picker.d.ts +71 -0
  115. package/dist/color/color-picker.js +178 -0
  116. package/dist/color/color-slider.d.ts +31 -0
  117. package/dist/color/color-slider.js +51 -0
  118. package/dist/color/color-swatch.d.ts +32 -0
  119. package/dist/color/color-swatch.js +44 -0
  120. package/dist/color/index.d.ts +7 -0
  121. package/dist/color/index.js +7 -0
  122. package/dist/configurator/_export.d.ts +78 -0
  123. package/dist/configurator/_export.js +302 -0
  124. package/dist/configurator/_glyphs.js +92 -0
  125. package/dist/configurator/_overrides.d.ts +266 -0
  126. package/dist/configurator/_overrides.js +541 -0
  127. package/dist/configurator/configurator.d.ts +71 -0
  128. package/dist/configurator/configurator.js +284 -0
  129. package/dist/configurator/export-dialog.d.ts +30 -0
  130. package/dist/configurator/export-dialog.js +121 -0
  131. package/dist/configurator/index.d.ts +8 -0
  132. package/dist/configurator/index.js +8 -0
  133. package/dist/configurator/panel-sections.d.ts +86 -0
  134. package/dist/configurator/panel-sections.js +352 -0
  135. package/dist/configurator/token-editor.d.ts +74 -0
  136. package/dist/configurator/token-editor.js +152 -0
  137. package/dist/configurator/use-zoom.d.ts +87 -0
  138. package/dist/configurator/use-zoom.js +113 -0
  139. package/dist/date/_glyphs.js +34 -0
  140. package/dist/date/_segments.js +101 -0
  141. package/dist/date/_trigger.js +31 -0
  142. package/dist/date/calendar.d.ts +25 -0
  143. package/dist/date/calendar.js +125 -0
  144. package/dist/date/date-field.d.ts +34 -0
  145. package/dist/date/date-field.js +41 -0
  146. package/dist/date/date-picker.d.ts +69 -0
  147. package/dist/date/date-picker.js +89 -0
  148. package/dist/date/date-range-picker.d.ts +65 -0
  149. package/dist/date/date-range-picker.js +92 -0
  150. package/dist/date/index.d.ts +6 -0
  151. package/dist/date/index.js +6 -0
  152. package/dist/date/time-field.d.ts +29 -0
  153. package/dist/date/time-field.js +36 -0
  154. package/dist/dmx/_ramp.d.ts +77 -0
  155. package/dist/dmx/_ramp.js +169 -0
  156. package/dist/dmx/_readout.js +53 -0
  157. package/dist/dmx/_universe.d.ts +105 -0
  158. package/dist/dmx/_universe.js +112 -0
  159. package/dist/dmx/channel-matrix.d.ts +81 -0
  160. package/dist/dmx/channel-matrix.js +285 -0
  161. package/dist/dmx/dmx-bar.d.ts +50 -0
  162. package/dist/dmx/dmx-bar.js +107 -0
  163. package/dist/dmx/dmx-strip.d.ts +41 -0
  164. package/dist/dmx/dmx-strip.js +196 -0
  165. package/dist/dmx/index.d.ts +7 -0
  166. package/dist/dmx/index.js +7 -0
  167. package/dist/dmx/universe-grid.d.ts +61 -0
  168. package/dist/dmx/universe-grid.js +182 -0
  169. package/dist/elements/activity-graph.d.ts +40 -0
  170. package/dist/elements/activity-graph.js +81 -0
  171. package/dist/elements/agent-card.d.ts +49 -0
  172. package/dist/elements/agent-card.js +91 -0
  173. package/dist/elements/agent-handoff.d.ts +24 -0
  174. package/dist/elements/agent-handoff.js +53 -0
  175. package/dist/elements/agent-mode-badge.d.ts +72 -0
  176. package/dist/elements/agent-mode-badge.js +110 -0
  177. package/dist/elements/agent-plan.d.ts +24 -0
  178. package/dist/elements/agent-plan.js +74 -0
  179. package/dist/elements/agent-status.d.ts +29 -0
  180. package/dist/elements/agent-status.js +46 -0
  181. package/dist/elements/agent-surface.d.ts +65 -0
  182. package/dist/elements/agent-surface.js +68 -0
  183. package/dist/elements/animated-number.d.ts +86 -0
  184. package/dist/elements/animated-number.js +118 -0
  185. package/dist/elements/approval-card.d.ts +40 -0
  186. package/dist/elements/approval-card.js +78 -0
  187. package/dist/elements/artifact-card.d.ts +30 -0
  188. package/dist/elements/artifact-card.js +58 -0
  189. package/dist/elements/background-inbox.d.ts +39 -0
  190. package/dist/elements/background-inbox.js +60 -0
  191. package/dist/elements/canvas-split.d.ts +77 -0
  192. package/dist/elements/canvas-split.js +138 -0
  193. package/dist/elements/chart.d.ts +41 -0
  194. package/dist/elements/chart.js +117 -0
  195. package/dist/elements/chat-panel.d.ts +46 -0
  196. package/dist/elements/chat-panel.js +104 -0
  197. package/dist/elements/checkpoint-history.d.ts +31 -0
  198. package/dist/elements/checkpoint-history.js +65 -0
  199. package/dist/elements/clamp.d.ts +90 -0
  200. package/dist/elements/clamp.js +109 -0
  201. package/dist/elements/code-diff.d.ts +42 -0
  202. package/dist/elements/code-diff.js +69 -0
  203. package/dist/elements/code-runner.d.ts +38 -0
  204. package/dist/elements/code-runner.js +84 -0
  205. package/dist/elements/command-palette.d.ts +48 -0
  206. package/dist/elements/command-palette.js +129 -0
  207. package/dist/elements/compaction-row.d.ts +63 -0
  208. package/dist/elements/compaction-row.js +110 -0
  209. package/dist/elements/comparison-card.d.ts +47 -0
  210. package/dist/elements/comparison-card.js +69 -0
  211. package/dist/elements/composer.d.ts +274 -0
  212. package/dist/elements/composer.js +505 -0
  213. package/dist/elements/computer-use.d.ts +40 -0
  214. package/dist/elements/computer-use.js +92 -0
  215. package/dist/elements/confidence-marker.d.ts +39 -0
  216. package/dist/elements/confidence-marker.js +64 -0
  217. package/dist/elements/connection-state.d.ts +29 -0
  218. package/dist/elements/connection-state.js +66 -0
  219. package/dist/elements/context-breakdown.d.ts +30 -0
  220. package/dist/elements/context-breakdown.js +86 -0
  221. package/dist/elements/context-usage.d.ts +99 -0
  222. package/dist/elements/context-usage.js +225 -0
  223. package/dist/elements/conversation-search.d.ts +48 -0
  224. package/dist/elements/conversation-search.js +88 -0
  225. package/dist/elements/cost-meter.d.ts +33 -0
  226. package/dist/elements/cost-meter.js +75 -0
  227. package/dist/elements/data-table.d.ts +31 -0
  228. package/dist/elements/data-table.js +67 -0
  229. package/dist/elements/day-separator.d.ts +34 -0
  230. package/dist/elements/day-separator.js +50 -0
  231. package/dist/elements/diagram.d.ts +34 -0
  232. package/dist/elements/diagram.js +75 -0
  233. package/dist/elements/document-reference.d.ts +37 -0
  234. package/dist/elements/document-reference.js +66 -0
  235. package/dist/elements/draft-restore.d.ts +27 -0
  236. package/dist/elements/draft-restore.js +54 -0
  237. package/dist/elements/edit-message.d.ts +36 -0
  238. package/dist/elements/edit-message.js +77 -0
  239. package/dist/elements/elements.css +459 -0
  240. package/dist/elements/elicitation-form.d.ts +48 -0
  241. package/dist/elements/elicitation-form.js +106 -0
  242. package/dist/elements/empty-state.d.ts +52 -0
  243. package/dist/elements/empty-state.js +98 -0
  244. package/dist/elements/end-of-turn-summary.d.ts +60 -0
  245. package/dist/elements/end-of-turn-summary.js +75 -0
  246. package/dist/elements/error-state.d.ts +29 -0
  247. package/dist/elements/error-state.js +55 -0
  248. package/dist/elements/feedback-dialog.d.ts +36 -0
  249. package/dist/elements/feedback-dialog.js +81 -0
  250. package/dist/elements/file-tree.d.ts +45 -0
  251. package/dist/elements/file-tree.js +84 -0
  252. package/dist/elements/flow-graph.d.ts +45 -0
  253. package/dist/elements/flow-graph.js +78 -0
  254. package/dist/elements/generative/chart.js +200 -0
  255. package/dist/elements/generative/faults.js +111 -0
  256. package/dist/elements/generative/icons.d.ts +41 -0
  257. package/dist/elements/generative/icons.js +190 -0
  258. package/dist/elements/generative/intrinsics.js +483 -0
  259. package/dist/elements/generative/spec.d.ts +110 -0
  260. package/dist/elements/generative/spec.js +366 -0
  261. package/dist/elements/generative.css +1145 -0
  262. package/dist/elements/generative.d.ts +144 -0
  263. package/dist/elements/generative.js +126 -0
  264. package/dist/elements/guardrail-notice.d.ts +29 -0
  265. package/dist/elements/guardrail-notice.js +63 -0
  266. package/dist/elements/image-generation.d.ts +18 -0
  267. package/dist/elements/image-generation.js +64 -0
  268. package/dist/elements/index.d.ts +116 -0
  269. package/dist/elements/index.js +115 -0
  270. package/dist/elements/inline-citation.d.ts +43 -0
  271. package/dist/elements/inline-citation.js +93 -0
  272. package/dist/elements/job-progress.d.ts +49 -0
  273. package/dist/elements/job-progress.js +74 -0
  274. package/dist/elements/launcher-bubble.d.ts +34 -0
  275. package/dist/elements/launcher-bubble.js +72 -0
  276. package/dist/elements/live-region-announcer.d.ts +130 -0
  277. package/dist/elements/live-region-announcer.js +230 -0
  278. package/dist/elements/loading-state.d.ts +27 -0
  279. package/dist/elements/loading-state.js +36 -0
  280. package/dist/elements/map-answer.d.ts +38 -0
  281. package/dist/elements/map-answer.js +93 -0
  282. package/dist/elements/markdown.d.ts +131 -0
  283. package/dist/elements/markdown.js +528 -0
  284. package/dist/elements/math-block.d.ts +51 -0
  285. package/dist/elements/math-block.js +70 -0
  286. package/dist/elements/mcp-server-panel.d.ts +41 -0
  287. package/dist/elements/mcp-server-panel.js +115 -0
  288. package/dist/elements/memory-chips.d.ts +30 -0
  289. package/dist/elements/memory-chips.js +43 -0
  290. package/dist/elements/message-actions.d.ts +38 -0
  291. package/dist/elements/message-actions.js +71 -0
  292. package/dist/elements/message-attachment.d.ts +48 -0
  293. package/dist/elements/message-attachment.js +63 -0
  294. package/dist/elements/message-branches.d.ts +25 -0
  295. package/dist/elements/message-branches.js +65 -0
  296. package/dist/elements/message-pair.d.ts +33 -0
  297. package/dist/elements/message-pair.js +65 -0
  298. package/dist/elements/message-queue.d.ts +31 -0
  299. package/dist/elements/message-queue.js +80 -0
  300. package/dist/elements/message-timing.d.ts +33 -0
  301. package/dist/elements/message-timing.js +37 -0
  302. package/dist/elements/mobile-composer.d.ts +44 -0
  303. package/dist/elements/mobile-composer.js +88 -0
  304. package/dist/elements/model-picker.d.ts +38 -0
  305. package/dist/elements/model-picker.js +69 -0
  306. package/dist/elements/number-ticker.d.ts +18 -0
  307. package/dist/elements/number-ticker.js +47 -0
  308. package/dist/elements/onboarding.d.ts +30 -0
  309. package/dist/elements/onboarding.js +75 -0
  310. package/dist/elements/permission-grant.d.ts +35 -0
  311. package/dist/elements/permission-grant.js +86 -0
  312. package/dist/elements/permission-scopes.d.ts +215 -0
  313. package/dist/elements/permission-scopes.js +249 -0
  314. package/dist/elements/prompt-library.d.ts +43 -0
  315. package/dist/elements/prompt-library.js +117 -0
  316. package/dist/elements/queue-dock.d.ts +101 -0
  317. package/dist/elements/queue-dock.js +132 -0
  318. package/dist/elements/quota-banner.d.ts +26 -0
  319. package/dist/elements/quota-banner.js +66 -0
  320. package/dist/elements/quote-reply.d.ts +44 -0
  321. package/dist/elements/quote-reply.js +79 -0
  322. package/dist/elements/range.d.ts +29 -0
  323. package/dist/elements/range.js +45 -0
  324. package/dist/elements/read-aloud.d.ts +45 -0
  325. package/dist/elements/read-aloud.js +75 -0
  326. package/dist/elements/reasoning-effort.d.ts +36 -0
  327. package/dist/elements/reasoning-effort.js +67 -0
  328. package/dist/elements/reasoning-panel.d.ts +46 -0
  329. package/dist/elements/reasoning-panel.js +75 -0
  330. package/dist/elements/recommendation-card.d.ts +45 -0
  331. package/dist/elements/recommendation-card.js +83 -0
  332. package/dist/elements/regenerate-menu.d.ts +45 -0
  333. package/dist/elements/regenerate-menu.js +51 -0
  334. package/dist/elements/replay.d.ts +217 -0
  335. package/dist/elements/replay.js +498 -0
  336. package/dist/elements/research-report.d.ts +38 -0
  337. package/dist/elements/research-report.js +69 -0
  338. package/dist/elements/retrieval-chunks.d.ts +43 -0
  339. package/dist/elements/retrieval-chunks.js +81 -0
  340. package/dist/elements/revert-dock.d.ts +159 -0
  341. package/dist/elements/revert-dock.js +327 -0
  342. package/dist/elements/reviewable-diff.d.ts +45 -0
  343. package/dist/elements/reviewable-diff.js +110 -0
  344. package/dist/elements/risk-badge.d.ts +52 -0
  345. package/dist/elements/risk-badge.js +91 -0
  346. package/dist/elements/schedule-card.d.ts +42 -0
  347. package/dist/elements/schedule-card.js +90 -0
  348. package/dist/elements/score-breakdown.d.ts +47 -0
  349. package/dist/elements/score-breakdown.js +82 -0
  350. package/dist/elements/scroll-anchor.d.ts +32 -0
  351. package/dist/elements/scroll-anchor.js +123 -0
  352. package/dist/elements/settings-panel.d.ts +52 -0
  353. package/dist/elements/settings-panel.js +107 -0
  354. package/dist/elements/shared-conversation.d.ts +39 -0
  355. package/dist/elements/shared-conversation.js +68 -0
  356. package/dist/elements/sources.d.ts +33 -0
  357. package/dist/elements/sources.js +61 -0
  358. package/dist/elements/speaker-identity.d.ts +32 -0
  359. package/dist/elements/speaker-identity.js +51 -0
  360. package/dist/elements/spec-sheet.d.ts +31 -0
  361. package/dist/elements/spec-sheet.js +45 -0
  362. package/dist/elements/stopped-run.d.ts +22 -0
  363. package/dist/elements/stopped-run.js +50 -0
  364. package/dist/elements/streaming-text.d.ts +31 -0
  365. package/dist/elements/streaming-text.js +45 -0
  366. package/dist/elements/subagent-list.d.ts +37 -0
  367. package/dist/elements/subagent-list.js +79 -0
  368. package/dist/elements/suggestions.d.ts +30 -0
  369. package/dist/elements/suggestions.js +36 -0
  370. package/dist/elements/surfaces.d.ts +85 -0
  371. package/dist/elements/surfaces.js +108 -0
  372. package/dist/elements/tail-status.d.ts +131 -0
  373. package/dist/elements/tail-status.js +94 -0
  374. package/dist/elements/terminal-block.d.ts +29 -0
  375. package/dist/elements/terminal-block.js +54 -0
  376. package/dist/elements/thinking-indicator.d.ts +18 -0
  377. package/dist/elements/thinking-indicator.js +36 -0
  378. package/dist/elements/thread-list.d.ts +35 -0
  379. package/dist/elements/thread-list.js +68 -0
  380. package/dist/elements/thread-search.d.ts +42 -0
  381. package/dist/elements/thread-search.js +99 -0
  382. package/dist/elements/timeline.d.ts +37 -0
  383. package/dist/elements/timeline.js +46 -0
  384. package/dist/elements/todo-list.d.ts +42 -0
  385. package/dist/elements/todo-list.js +59 -0
  386. package/dist/elements/tool-call.d.ts +41 -0
  387. package/dist/elements/tool-call.js +85 -0
  388. package/dist/elements/tool-error.d.ts +39 -0
  389. package/dist/elements/tool-error.js +76 -0
  390. package/dist/elements/tool-group.d.ts +45 -0
  391. package/dist/elements/tool-group.js +71 -0
  392. package/dist/elements/tool-timeline.d.ts +65 -0
  393. package/dist/elements/tool-timeline.js +88 -0
  394. package/dist/elements/trace-waterfall.d.ts +37 -0
  395. package/dist/elements/trace-waterfall.js +69 -0
  396. package/dist/elements/transcript-rules.d.ts +67 -0
  397. package/dist/elements/transcript-rules.js +95 -0
  398. package/dist/elements/turn-footer.d.ts +74 -0
  399. package/dist/elements/turn-footer.js +101 -0
  400. package/dist/elements/typing-indicator.d.ts +16 -0
  401. package/dist/elements/typing-indicator.js +51 -0
  402. package/dist/elements/verdict-row.d.ts +89 -0
  403. package/dist/elements/verdict-row.js +150 -0
  404. package/dist/elements/vocabulary.d.ts +612 -0
  405. package/dist/elements/vocabulary.js +611 -0
  406. package/dist/elements/voice-conversation.d.ts +49 -0
  407. package/dist/elements/voice-conversation.js +123 -0
  408. package/dist/elements/web-preview.d.ts +32 -0
  409. package/dist/elements/web-preview.js +66 -0
  410. package/dist/elements/web-search.d.ts +37 -0
  411. package/dist/elements/web-search.js +66 -0
  412. package/dist/elements/work-collapse.d.ts +103 -0
  413. package/dist/elements/work-collapse.js +131 -0
  414. package/dist/flow/_frame.d.ts +52 -0
  415. package/dist/flow/_frame.js +38 -0
  416. package/dist/flow/controls.d.ts +41 -0
  417. package/dist/flow/controls.js +53 -0
  418. package/dist/flow/flow.css +121 -0
  419. package/dist/flow/handles.d.ts +40 -0
  420. package/dist/flow/handles.js +61 -0
  421. package/dist/flow/index.d.ts +7 -0
  422. package/dist/flow/index.js +7 -0
  423. package/dist/flow/node-card.d.ts +71 -0
  424. package/dist/flow/node-card.js +102 -0
  425. package/dist/flow/signal-edge.d.ts +60 -0
  426. package/dist/flow/signal-edge.js +108 -0
  427. package/dist/flow/use-flow-theme.d.ts +69 -0
  428. package/dist/flow/use-flow-theme.js +109 -0
  429. package/dist/forms/_chassis.d.ts +164 -0
  430. package/dist/forms/_chassis.js +159 -0
  431. package/dist/forms/_glyphs.js +143 -0
  432. package/dist/forms/_listbox.js +55 -0
  433. package/dist/forms/autocomplete.d.ts +61 -0
  434. package/dist/forms/autocomplete.js +88 -0
  435. package/dist/forms/button-group.d.ts +47 -0
  436. package/dist/forms/button-group.js +52 -0
  437. package/dist/forms/checkbox.d.ts +51 -0
  438. package/dist/forms/checkbox.js +98 -0
  439. package/dist/forms/combobox.d.ts +73 -0
  440. package/dist/forms/combobox.js +108 -0
  441. package/dist/forms/env-var-input.d.ts +74 -0
  442. package/dist/forms/env-var-input.js +116 -0
  443. package/dist/forms/field.d.ts +89 -0
  444. package/dist/forms/field.js +102 -0
  445. package/dist/forms/file-upload.d.ts +113 -0
  446. package/dist/forms/file-upload.js +232 -0
  447. package/dist/forms/index.d.ts +26 -0
  448. package/dist/forms/index.js +26 -0
  449. package/dist/forms/input-group.d.ts +36 -0
  450. package/dist/forms/input-group.js +59 -0
  451. package/dist/forms/input.d.ts +45 -0
  452. package/dist/forms/input.js +36 -0
  453. package/dist/forms/multi-select.d.ts +62 -0
  454. package/dist/forms/multi-select.js +107 -0
  455. package/dist/forms/number-field.d.ts +39 -0
  456. package/dist/forms/number-field.js +65 -0
  457. package/dist/forms/otp-field.d.ts +54 -0
  458. package/dist/forms/otp-field.js +59 -0
  459. package/dist/forms/password-input.d.ts +46 -0
  460. package/dist/forms/password-input.js +62 -0
  461. package/dist/forms/radio-group.d.ts +50 -0
  462. package/dist/forms/radio-group.js +64 -0
  463. package/dist/forms/rating.d.ts +69 -0
  464. package/dist/forms/rating.js +103 -0
  465. package/dist/forms/scrub-input.d.ts +81 -0
  466. package/dist/forms/scrub-input.js +249 -0
  467. package/dist/forms/search-input.d.ts +54 -0
  468. package/dist/forms/search-input.js +112 -0
  469. package/dist/forms/select.d.ts +75 -0
  470. package/dist/forms/select.js +91 -0
  471. package/dist/forms/slider.d.ts +44 -0
  472. package/dist/forms/slider.js +65 -0
  473. package/dist/forms/switch.d.ts +36 -0
  474. package/dist/forms/switch.js +71 -0
  475. package/dist/forms/tags-input.d.ts +69 -0
  476. package/dist/forms/tags-input.js +148 -0
  477. package/dist/forms/textarea.d.ts +39 -0
  478. package/dist/forms/textarea.js +37 -0
  479. package/dist/forms/toggle-group.d.ts +41 -0
  480. package/dist/forms/toggle-group.js +56 -0
  481. package/dist/forms/toggle.d.ts +47 -0
  482. package/dist/forms/toggle.js +100 -0
  483. package/dist/icons/containers.d.ts +89 -0
  484. package/dist/icons/containers.js +295 -0
  485. package/dist/icons/index.d.ts +2 -0
  486. package/dist/index.d.ts +138 -0
  487. package/dist/index.js +124 -0
  488. package/dist/instruments/_ansi.js +116 -0
  489. package/dist/instruments/_data-row.d.ts +68 -0
  490. package/dist/instruments/_data-row.js +139 -0
  491. package/dist/instruments/_glyphs.js +90 -0
  492. package/dist/instruments/_ledger-disclosure.js +103 -0
  493. package/dist/instruments/_ledger.d.ts +21 -0
  494. package/dist/instruments/_ledger.js +5 -0
  495. package/dist/instruments/_motion.js +56 -0
  496. package/dist/instruments/_rem.js +21 -0
  497. package/dist/instruments/app-window-frame.d.ts +48 -0
  498. package/dist/instruments/app-window-frame.js +76 -0
  499. package/dist/instruments/code-block.d.ts +35 -0
  500. package/dist/instruments/code-block.js +173 -0
  501. package/dist/instruments/copy-button.d.ts +41 -0
  502. package/dist/instruments/copy-button.js +112 -0
  503. package/dist/instruments/data-row.d.ts +94 -0
  504. package/dist/instruments/data-row.js +151 -0
  505. package/dist/instruments/data-table.d.ts +168 -0
  506. package/dist/instruments/data-table.js +212 -0
  507. package/dist/instruments/data-tree.d.ts +126 -0
  508. package/dist/instruments/data-tree.js +303 -0
  509. package/dist/instruments/group-bar.d.ts +63 -0
  510. package/dist/instruments/group-bar.js +122 -0
  511. package/dist/instruments/index.d.ts +18 -0
  512. package/dist/instruments/index.js +18 -0
  513. package/dist/instruments/ledger.d.ts +204 -0
  514. package/dist/instruments/ledger.js +204 -0
  515. package/dist/instruments/log-viewer.d.ts +74 -0
  516. package/dist/instruments/log-viewer.js +215 -0
  517. package/dist/instruments/meter.d.ts +81 -0
  518. package/dist/instruments/meter.js +96 -0
  519. package/dist/instruments/progress.d.ts +61 -0
  520. package/dist/instruments/progress.js +79 -0
  521. package/dist/instruments/seam-grid.d.ts +66 -0
  522. package/dist/instruments/seam-grid.js +78 -0
  523. package/dist/instruments/sparkline.d.ts +39 -0
  524. package/dist/instruments/sparkline.js +85 -0
  525. package/dist/instruments/stat.d.ts +35 -0
  526. package/dist/instruments/stat.js +59 -0
  527. package/dist/instruments/table.d.ts +170 -0
  528. package/dist/instruments/table.js +237 -0
  529. package/dist/instruments/terminal-frame.d.ts +89 -0
  530. package/dist/instruments/terminal-frame.js +256 -0
  531. package/dist/instruments/two-step-button.d.ts +47 -0
  532. package/dist/instruments/two-step-button.js +166 -0
  533. package/dist/instruments/usage-chart.d.ts +55 -0
  534. package/dist/instruments/usage-chart.js +235 -0
  535. package/dist/layout/_collapse.js +46 -0
  536. package/dist/layout/_glyphs.js +45 -0
  537. package/dist/layout/_ground.d.ts +22 -0
  538. package/dist/layout/_ground.js +9 -0
  539. package/dist/layout/accordion.d.ts +52 -0
  540. package/dist/layout/accordion.js +81 -0
  541. package/dist/layout/bento.d.ts +144 -0
  542. package/dist/layout/bento.js +266 -0
  543. package/dist/layout/breadcrumb.d.ts +35 -0
  544. package/dist/layout/breadcrumb.js +67 -0
  545. package/dist/layout/card.d.ts +51 -0
  546. package/dist/layout/card.js +76 -0
  547. package/dist/layout/carousel.d.ts +96 -0
  548. package/dist/layout/carousel.js +211 -0
  549. package/dist/layout/collapsible.d.ts +74 -0
  550. package/dist/layout/collapsible.js +126 -0
  551. package/dist/layout/container.d.ts +27 -0
  552. package/dist/layout/container.js +43 -0
  553. package/dist/layout/description-list.d.ts +24 -0
  554. package/dist/layout/description-list.js +37 -0
  555. package/dist/layout/frames.d.ts +70 -0
  556. package/dist/layout/frames.js +298 -0
  557. package/dist/layout/grid.d.ts +40 -0
  558. package/dist/layout/grid.js +48 -0
  559. package/dist/layout/index.d.ts +19 -0
  560. package/dist/layout/index.js +18 -0
  561. package/dist/layout/item.d.ts +65 -0
  562. package/dist/layout/item.js +100 -0
  563. package/dist/layout/link.d.ts +48 -0
  564. package/dist/layout/link.js +63 -0
  565. package/dist/layout/pagination.d.ts +54 -0
  566. package/dist/layout/pagination.js +121 -0
  567. package/dist/layout/preview.d.ts +177 -0
  568. package/dist/layout/preview.js +628 -0
  569. package/dist/layout/resizable.d.ts +38 -0
  570. package/dist/layout/resizable.js +68 -0
  571. package/dist/layout/sidebar.d.ts +105 -0
  572. package/dist/layout/sidebar.js +158 -0
  573. package/dist/layout/stack.d.ts +46 -0
  574. package/dist/layout/stack.js +62 -0
  575. package/dist/layout/stepper.d.ts +49 -0
  576. package/dist/layout/stepper.js +81 -0
  577. package/dist/layout/timeline.d.ts +43 -0
  578. package/dist/layout/timeline.js +63 -0
  579. package/dist/lib/aria-class.js +24 -0
  580. package/dist/lib/cn.js +18 -0
  581. package/dist/lib/compose.js +38 -0
  582. package/dist/lib/cva.d.ts +18 -0
  583. package/dist/lib/cva.js +65 -0
  584. package/dist/midi/_notes.d.ts +101 -0
  585. package/dist/midi/_notes.js +183 -0
  586. package/dist/midi/_ruler.d.ts +100 -0
  587. package/dist/midi/_ruler.js +105 -0
  588. package/dist/midi/_time.d.ts +107 -0
  589. package/dist/midi/_time.js +130 -0
  590. package/dist/midi/index.d.ts +9 -0
  591. package/dist/midi/index.js +9 -0
  592. package/dist/midi/musical-time-input.d.ts +48 -0
  593. package/dist/midi/musical-time-input.js +154 -0
  594. package/dist/midi/piano-keyboard.d.ts +50 -0
  595. package/dist/midi/piano-keyboard.js +197 -0
  596. package/dist/midi/spectrum-visualizer.d.ts +65 -0
  597. package/dist/midi/spectrum-visualizer.js +213 -0
  598. package/dist/midi/threshold-rail.d.ts +72 -0
  599. package/dist/midi/threshold-rail.js +214 -0
  600. package/dist/midi/timeline-ruler.d.ts +83 -0
  601. package/dist/midi/timeline-ruler.js +152 -0
  602. package/dist/overlays/_debounce.js +34 -0
  603. package/dist/overlays/_glyphs.js +59 -0
  604. package/dist/overlays/_surface.d.ts +70 -0
  605. package/dist/overlays/_surface.js +70 -0
  606. package/dist/overlays/_wheel.js +42 -0
  607. package/dist/overlays/alert-dialog.d.ts +67 -0
  608. package/dist/overlays/alert-dialog.js +117 -0
  609. package/dist/overlays/command-palette.d.ts +93 -0
  610. package/dist/overlays/command-palette.js +193 -0
  611. package/dist/overlays/context-menu.d.ts +64 -0
  612. package/dist/overlays/context-menu.js +78 -0
  613. package/dist/overlays/dialog.d.ts +72 -0
  614. package/dist/overlays/dialog.js +124 -0
  615. package/dist/overlays/drawer.d.ts +75 -0
  616. package/dist/overlays/drawer.js +151 -0
  617. package/dist/overlays/dropdown-menu.d.ts +79 -0
  618. package/dist/overlays/dropdown-menu.js +156 -0
  619. package/dist/overlays/hover-card.d.ts +58 -0
  620. package/dist/overlays/hover-card.js +91 -0
  621. package/dist/overlays/index.d.ts +15 -0
  622. package/dist/overlays/index.js +15 -0
  623. package/dist/overlays/info-tip.d.ts +41 -0
  624. package/dist/overlays/info-tip.js +45 -0
  625. package/dist/overlays/menubar.d.ts +72 -0
  626. package/dist/overlays/menubar.js +100 -0
  627. package/dist/overlays/popover.d.ts +66 -0
  628. package/dist/overlays/popover.js +114 -0
  629. package/dist/overlays/sheet.d.ts +78 -0
  630. package/dist/overlays/sheet.js +131 -0
  631. package/dist/overlays/toast.d.ts +106 -0
  632. package/dist/overlays/toast.js +146 -0
  633. package/dist/overlays/tooltip.d.ts +57 -0
  634. package/dist/overlays/tooltip.js +95 -0
  635. package/dist/primitives/avatar.d.ts +51 -0
  636. package/dist/primitives/avatar.js +93 -0
  637. package/dist/primitives/button.d.ts +58 -0
  638. package/dist/primitives/button.js +104 -0
  639. package/dist/primitives/chip.d.ts +73 -0
  640. package/dist/primitives/chip.js +238 -0
  641. package/dist/primitives/icon-button.d.ts +41 -0
  642. package/dist/primitives/icon-button.js +59 -0
  643. package/dist/primitives/index.d.ts +10 -0
  644. package/dist/primitives/index.js +10 -0
  645. package/dist/primitives/kbd.d.ts +17 -0
  646. package/dist/primitives/kbd.js +24 -0
  647. package/dist/primitives/separator.d.ts +25 -0
  648. package/dist/primitives/separator.js +30 -0
  649. package/dist/primitives/skeleton.d.ts +20 -0
  650. package/dist/primitives/skeleton.js +27 -0
  651. package/dist/primitives/spinner.d.ts +26 -0
  652. package/dist/primitives/spinner.js +31 -0
  653. package/dist/primitives/status-dot.d.ts +51 -0
  654. package/dist/primitives/status-dot.js +57 -0
  655. package/dist/styles.css +97 -0
  656. package/dist/system/agent-skin.d.ts +27 -0
  657. package/dist/system/agent-skin.js +20 -0
  658. package/dist/system/density.d.ts +73 -0
  659. package/dist/system/density.js +111 -0
  660. package/dist/system/index.d.ts +12 -0
  661. package/dist/system/index.js +10 -0
  662. package/dist/system/overrides.d.ts +80 -0
  663. package/dist/system/overrides.js +277 -0
  664. package/dist/system/portal.d.ts +56 -0
  665. package/dist/system/portal.js +193 -0
  666. package/dist/system/prepaint.d.ts +134 -0
  667. package/dist/system/prepaint.js +120 -0
  668. package/dist/system/theme-provider.d.ts +290 -0
  669. package/dist/system/theme-provider.js +543 -0
  670. package/dist/system/theme-registry.d.ts +53 -0
  671. package/dist/system/theme-registry.js +66 -0
  672. package/dist/system/use-density.d.ts +50 -0
  673. package/dist/system/use-density.js +232 -0
  674. package/dist/system/use-isomorphic-layout-effect.js +33 -0
  675. package/dist/system/use-theme.d.ts +30 -0
  676. package/dist/system/use-theme.js +36 -0
  677. package/dist/system/vocabulary.d.ts +16 -0
  678. package/dist/system/vocabulary.js +125 -0
  679. package/dist/theming/contrast.d.ts +2 -0
  680. package/dist/theming/contrast.js +2 -0
  681. package/dist/theming/create-theme.d.ts +195 -0
  682. package/dist/theming/create-theme.js +524 -0
  683. package/dist/theming/index.d.ts +4 -0
  684. package/dist/theming/index.js +4 -0
  685. package/dist/theming/serialize.d.ts +167 -0
  686. package/dist/theming/serialize.js +241 -0
  687. package/manifest/components/accordion.json +173 -0
  688. package/manifest/components/activity-graph.json +104 -0
  689. package/manifest/components/agent-card.json +150 -0
  690. package/manifest/components/agent-handoff.json +104 -0
  691. package/manifest/components/agent-mode-badge.json +102 -0
  692. package/manifest/components/agent-pile.json +147 -0
  693. package/manifest/components/agent-plan.json +74 -0
  694. package/manifest/components/agent-status.json +87 -0
  695. package/manifest/components/agent-surface.json +93 -0
  696. package/manifest/components/alert-dialog.json +215 -0
  697. package/manifest/components/animated-number.json +75 -0
  698. package/manifest/components/app-bar.json +297 -0
  699. package/manifest/components/app-shell.json +526 -0
  700. package/manifest/components/app-window-frame.json +124 -0
  701. package/manifest/components/approval-card.json +136 -0
  702. package/manifest/components/artifact-card.json +93 -0
  703. package/manifest/components/ask-box.json +288 -0
  704. package/manifest/components/audience-icon.json +46 -0
  705. package/manifest/components/autocomplete.json +262 -0
  706. package/manifest/components/avatar-group.json +83 -0
  707. package/manifest/components/avatar.json +113 -0
  708. package/manifest/components/background-inbox.json +79 -0
  709. package/manifest/components/band.json +104 -0
  710. package/manifest/components/bento.json +306 -0
  711. package/manifest/components/branch-picker.json +146 -0
  712. package/manifest/components/breadcrumb.json +85 -0
  713. package/manifest/components/button-group.json +91 -0
  714. package/manifest/components/button.json +163 -0
  715. package/manifest/components/calendar.json +65 -0
  716. package/manifest/components/canvas-split-body.json +66 -0
  717. package/manifest/components/canvas-split-document.json +55 -0
  718. package/manifest/components/canvas-split-header.json +97 -0
  719. package/manifest/components/canvas-split-line.json +66 -0
  720. package/manifest/components/canvas-split-message.json +70 -0
  721. package/manifest/components/canvas-split-thread.json +55 -0
  722. package/manifest/components/canvas-split.json +61 -0
  723. package/manifest/components/card.json +152 -0
  724. package/manifest/components/carousel.json +242 -0
  725. package/manifest/components/catalogue-icon.json +46 -0
  726. package/manifest/components/channel-beta-icon.json +46 -0
  727. package/manifest/components/channel-matrix.json +239 -0
  728. package/manifest/components/channel-released-icon.json +46 -0
  729. package/manifest/components/chart-container.json +127 -0
  730. package/manifest/components/chart-ramp.json +82 -0
  731. package/manifest/components/chart-swatch.json +72 -0
  732. package/manifest/components/chart-tooltip-content.json +140 -0
  733. package/manifest/components/chart.json +117 -0
  734. package/manifest/components/chat-empty-state.json +55 -0
  735. package/manifest/components/chat-panel-assistant-message.json +52 -0
  736. package/manifest/components/chat-panel-composer.json +74 -0
  737. package/manifest/components/chat-panel-messages.json +52 -0
  738. package/manifest/components/chat-panel-typing.json +52 -0
  739. package/manifest/components/chat-panel-user-message.json +52 -0
  740. package/manifest/components/chat-panel.json +58 -0
  741. package/manifest/components/checkbox-group.json +70 -0
  742. package/manifest/components/checkbox.json +106 -0
  743. package/manifest/components/checkpoint-history.json +91 -0
  744. package/manifest/components/chip.json +174 -0
  745. package/manifest/components/clamp.json +125 -0
  746. package/manifest/components/cli-tool-icon.json +46 -0
  747. package/manifest/components/code-block.json +107 -0
  748. package/manifest/components/code-diff.json +104 -0
  749. package/manifest/components/code-runner.json +124 -0
  750. package/manifest/components/collapsible.json +133 -0
  751. package/manifest/components/color-area.json +62 -0
  752. package/manifest/components/color-field.json +91 -0
  753. package/manifest/components/color-picker.json +235 -0
  754. package/manifest/components/color-slider.json +84 -0
  755. package/manifest/components/color-swatch.json +79 -0
  756. package/manifest/components/colors-section.json +70 -0
  757. package/manifest/components/combobox.json +265 -0
  758. package/manifest/components/command-palette.json +222 -0
  759. package/manifest/components/compaction-row.json +128 -0
  760. package/manifest/components/comparison-card.json +98 -0
  761. package/manifest/components/composer-actions.json +65 -0
  762. package/manifest/components/composer-attach-button.json +65 -0
  763. package/manifest/components/composer-attachment-chip.json +83 -0
  764. package/manifest/components/composer-attachments.json +60 -0
  765. package/manifest/components/composer-bar.json +76 -0
  766. package/manifest/components/composer-command-item.json +85 -0
  767. package/manifest/components/composer-context.json +71 -0
  768. package/manifest/components/composer-input.json +77 -0
  769. package/manifest/components/composer-menu-item.json +75 -0
  770. package/manifest/components/composer-menu.json +89 -0
  771. package/manifest/components/composer-model-item.json +82 -0
  772. package/manifest/components/composer-model-trigger.json +81 -0
  773. package/manifest/components/composer-person-item.json +86 -0
  774. package/manifest/components/composer-send.json +86 -0
  775. package/manifest/components/composer-toolbar.json +65 -0
  776. package/manifest/components/composer-voice-button.json +71 -0
  777. package/manifest/components/composer-voice.json +81 -0
  778. package/manifest/components/composer.json +238 -0
  779. package/manifest/components/computer-use.json +98 -0
  780. package/manifest/components/confidence-marker.json +86 -0
  781. package/manifest/components/connection-state.json +103 -0
  782. package/manifest/components/container.json +75 -0
  783. package/manifest/components/context-breakdown.json +72 -0
  784. package/manifest/components/context-menu.json +134 -0
  785. package/manifest/components/context-usage.json +98 -0
  786. package/manifest/components/conversation-search.json +111 -0
  787. package/manifest/components/copy-button.json +118 -0
  788. package/manifest/components/cost-meter.json +84 -0
  789. package/manifest/components/cue-logotype.json +110 -0
  790. package/manifest/components/cue-mark.json +111 -0
  791. package/manifest/components/cue-portal-frame.json +65 -0
  792. package/manifest/components/data-row.json +222 -0
  793. package/manifest/components/data-table-pagination.json +97 -0
  794. package/manifest/components/data-table-toolbar.json +127 -0
  795. package/manifest/components/data-tree.json +185 -0
  796. package/manifest/components/date-field.json +93 -0
  797. package/manifest/components/date-picker.json +255 -0
  798. package/manifest/components/date-range-picker.json +255 -0
  799. package/manifest/components/day-separator.json +63 -0
  800. package/manifest/components/delegation-card.json +196 -0
  801. package/manifest/components/density.json +93 -0
  802. package/manifest/components/description-list.json +91 -0
  803. package/manifest/components/diagram.json +126 -0
  804. package/manifest/components/dialog.json +222 -0
  805. package/manifest/components/disclosure.json +134 -0
  806. package/manifest/components/dmx-bar.json +107 -0
  807. package/manifest/components/dmx-strip.json +117 -0
  808. package/manifest/components/document-reference.json +108 -0
  809. package/manifest/components/draft-restore.json +96 -0
  810. package/manifest/components/drawer.json +204 -0
  811. package/manifest/components/dropdown-menu.json +275 -0
  812. package/manifest/components/edit-message.json +131 -0
  813. package/manifest/components/elements-command-palette.json +122 -0
  814. package/manifest/components/elements-composer.json +71 -0
  815. package/manifest/components/elements-data-table.json +75 -0
  816. package/manifest/components/elements-timeline.json +77 -0
  817. package/manifest/components/elicitation-form.json +130 -0
  818. package/manifest/components/empty-state-composer.json +71 -0
  819. package/manifest/components/empty-state-greeting.json +49 -0
  820. package/manifest/components/empty-state-suggestion.json +60 -0
  821. package/manifest/components/empty-state-suggestions.json +49 -0
  822. package/manifest/components/empty-state.json +111 -0
  823. package/manifest/components/end-of-turn-summary.json +89 -0
  824. package/manifest/components/env-var-input.json +194 -0
  825. package/manifest/components/error-state.json +93 -0
  826. package/manifest/components/export-dialog.json +101 -0
  827. package/manifest/components/eyebrow.json +59 -0
  828. package/manifest/components/feedback-dialog.json +133 -0
  829. package/manifest/components/field-description.json +66 -0
  830. package/manifest/components/field-error.json +87 -0
  831. package/manifest/components/field-label.json +66 -0
  832. package/manifest/components/field.json +82 -0
  833. package/manifest/components/file-tree.json +96 -0
  834. package/manifest/components/file-upload.json +204 -0
  835. package/manifest/components/flow-background.json +50 -0
  836. package/manifest/components/flow-controls.json +50 -0
  837. package/manifest/components/flow-graph.json +86 -0
  838. package/manifest/components/folder-icon.json +46 -0
  839. package/manifest/components/footer.json +133 -0
  840. package/manifest/components/frac.json +68 -0
  841. package/manifest/components/frames.json +210 -0
  842. package/manifest/components/generation-loader.json +78 -0
  843. package/manifest/components/generative-ui.json +125 -0
  844. package/manifest/components/grid.json +132 -0
  845. package/manifest/components/group-bar.json +122 -0
  846. package/manifest/components/guardrail-notice.json +109 -0
  847. package/manifest/components/hover-card.json +189 -0
  848. package/manifest/components/icon-button.json +106 -0
  849. package/manifest/components/image-generation.json +73 -0
  850. package/manifest/components/info-tip.json +133 -0
  851. package/manifest/components/inline-citation.json +90 -0
  852. package/manifest/components/input-group.json +112 -0
  853. package/manifest/components/input.json +121 -0
  854. package/manifest/components/inspector.json +199 -0
  855. package/manifest/components/item.json +163 -0
  856. package/manifest/components/job-progress.json +116 -0
  857. package/manifest/components/kbd.json +52 -0
  858. package/manifest/components/launcher-bubble.json +130 -0
  859. package/manifest/components/ledger.json +330 -0
  860. package/manifest/components/link.json +94 -0
  861. package/manifest/components/live-region-announcer.json +95 -0
  862. package/manifest/components/log-viewer.json +172 -0
  863. package/manifest/components/map-answer.json +97 -0
  864. package/manifest/components/markdown-text.json +126 -0
  865. package/manifest/components/math-block.json +84 -0
  866. package/manifest/components/mcp-server-icon.json +46 -0
  867. package/manifest/components/mcp-server-panel.json +102 -0
  868. package/manifest/components/memory-chips.json +73 -0
  869. package/manifest/components/menubar.json +184 -0
  870. package/manifest/components/message-actions.json +125 -0
  871. package/manifest/components/message-attachments.json +71 -0
  872. package/manifest/components/message-branches.json +83 -0
  873. package/manifest/components/message-list.json +121 -0
  874. package/manifest/components/message-pair.json +107 -0
  875. package/manifest/components/message-queue.json +85 -0
  876. package/manifest/components/message-timing.json +69 -0
  877. package/manifest/components/message.json +149 -0
  878. package/manifest/components/meter.json +150 -0
  879. package/manifest/components/mobile-composer.json +163 -0
  880. package/manifest/components/model-picker.json +87 -0
  881. package/manifest/components/multi-select.json +255 -0
  882. package/manifest/components/musical-time-input.json +141 -0
  883. package/manifest/components/navigation-menu.json +269 -0
  884. package/manifest/components/node-card.json +144 -0
  885. package/manifest/components/node-handle.json +84 -0
  886. package/manifest/components/number-field.json +131 -0
  887. package/manifest/components/number-ticker.json +67 -0
  888. package/manifest/components/onboarding.json +100 -0
  889. package/manifest/components/otp-field.json +163 -0
  890. package/manifest/components/page-shell.json +129 -0
  891. package/manifest/components/pagination.json +108 -0
  892. package/manifest/components/panel-header.json +89 -0
  893. package/manifest/components/panel.json +71 -0
  894. package/manifest/components/password-input.json +171 -0
  895. package/manifest/components/permission-grant.json +115 -0
  896. package/manifest/components/permission-scopes.json +184 -0
  897. package/manifest/components/piano-keyboard.json +149 -0
  898. package/manifest/components/plussie.json +140 -0
  899. package/manifest/components/popover.json +231 -0
  900. package/manifest/components/preset-section.json +80 -0
  901. package/manifest/components/preview.json +294 -0
  902. package/manifest/components/progress.json +114 -0
  903. package/manifest/components/prompt-library.json +122 -0
  904. package/manifest/components/queue-dock.json +139 -0
  905. package/manifest/components/quota-banner.json +113 -0
  906. package/manifest/components/quote-reply.json +129 -0
  907. package/manifest/components/radio-group.json +83 -0
  908. package/manifest/components/radio.json +94 -0
  909. package/manifest/components/rating.json +188 -0
  910. package/manifest/components/read-aloud.json +139 -0
  911. package/manifest/components/reasoning-effort.json +95 -0
  912. package/manifest/components/reasoning-panel.json +135 -0
  913. package/manifest/components/recommendation-card.json +133 -0
  914. package/manifest/components/regenerate-menu.json +107 -0
  915. package/manifest/components/replay-player.json +124 -0
  916. package/manifest/components/research-report.json +87 -0
  917. package/manifest/components/resizable.json +91 -0
  918. package/manifest/components/retrieval-chunks.json +98 -0
  919. package/manifest/components/revert-dock.json +197 -0
  920. package/manifest/components/reviewable-diff.json +113 -0
  921. package/manifest/components/risk-badge.json +89 -0
  922. package/manifest/components/row.json +122 -0
  923. package/manifest/components/schedule-card.json +121 -0
  924. package/manifest/components/score-breakdown.json +108 -0
  925. package/manifest/components/scroll-anchor.json +84 -0
  926. package/manifest/components/scroll-area.json +114 -0
  927. package/manifest/components/scrollable-tabs-list.json +91 -0
  928. package/manifest/components/scrub-input.json +268 -0
  929. package/manifest/components/seam-cell.json +91 -0
  930. package/manifest/components/seam-grid.json +84 -0
  931. package/manifest/components/seam-list.json +56 -0
  932. package/manifest/components/search-input.json +195 -0
  933. package/manifest/components/section-header.json +140 -0
  934. package/manifest/components/segmented-control.json +178 -0
  935. package/manifest/components/select.json +253 -0
  936. package/manifest/components/separator.json +56 -0
  937. package/manifest/components/settings-panel.json +152 -0
  938. package/manifest/components/shape-section.json +70 -0
  939. package/manifest/components/shared-conversation.json +107 -0
  940. package/manifest/components/sheet.json +210 -0
  941. package/manifest/components/shimmer-label.json +61 -0
  942. package/manifest/components/sidebar.json +245 -0
  943. package/manifest/components/signal-edge.json +56 -0
  944. package/manifest/components/skeleton.json +46 -0
  945. package/manifest/components/skill-icon.json +46 -0
  946. package/manifest/components/slider.json +106 -0
  947. package/manifest/components/sources.json +97 -0
  948. package/manifest/components/sparkline.json +89 -0
  949. package/manifest/components/speaker-identity.json +66 -0
  950. package/manifest/components/spec-sheet.json +93 -0
  951. package/manifest/components/spectrum-visualizer.json +147 -0
  952. package/manifest/components/spinner.json +71 -0
  953. package/manifest/components/stack-icon.json +46 -0
  954. package/manifest/components/stack.json +143 -0
  955. package/manifest/components/stacks-matrix-icon.json +46 -0
  956. package/manifest/components/stat.json +111 -0
  957. package/manifest/components/status-bar.json +233 -0
  958. package/manifest/components/status-dot.json +97 -0
  959. package/manifest/components/stepper.json +107 -0
  960. package/manifest/components/stopped-run.json +97 -0
  961. package/manifest/components/streaming-text.json +82 -0
  962. package/manifest/components/sub.json +45 -0
  963. package/manifest/components/subagent-list.json +106 -0
  964. package/manifest/components/suggestions.json +106 -0
  965. package/manifest/components/sup.json +45 -0
  966. package/manifest/components/swap-label.json +86 -0
  967. package/manifest/components/switch.json +102 -0
  968. package/manifest/components/table-scroll-region.json +78 -0
  969. package/manifest/components/table.json +306 -0
  970. package/manifest/components/tabs.json +156 -0
  971. package/manifest/components/tags-input.json +255 -0
  972. package/manifest/components/tail-status.json +138 -0
  973. package/manifest/components/terminal-block.json +111 -0
  974. package/manifest/components/terminal-frame.json +146 -0
  975. package/manifest/components/textarea.json +104 -0
  976. package/manifest/components/theme-configurator.json +158 -0
  977. package/manifest/components/theme-provider.json +228 -0
  978. package/manifest/components/thinking-indicator.json +69 -0
  979. package/manifest/components/thread-list.json +87 -0
  980. package/manifest/components/thread-search.json +108 -0
  981. package/manifest/components/threshold-rail.json +223 -0
  982. package/manifest/components/time-boundary.json +68 -0
  983. package/manifest/components/time-field.json +93 -0
  984. package/manifest/components/timeline-ruler.json +178 -0
  985. package/manifest/components/timeline.json +131 -0
  986. package/manifest/components/title-bar.json +97 -0
  987. package/manifest/components/toast.json +140 -0
  988. package/manifest/components/todo-list.json +76 -0
  989. package/manifest/components/toggle-group.json +134 -0
  990. package/manifest/components/toggle.json +140 -0
  991. package/manifest/components/token-editor.json +106 -0
  992. package/manifest/components/tool-call-card.json +268 -0
  993. package/manifest/components/tool-call.json +147 -0
  994. package/manifest/components/tool-error.json +141 -0
  995. package/manifest/components/tool-group.json +97 -0
  996. package/manifest/components/tool-timeline.json +147 -0
  997. package/manifest/components/toolbar.json +192 -0
  998. package/manifest/components/tooltip.json +199 -0
  999. package/manifest/components/trace-waterfall.json +84 -0
  1000. package/manifest/components/tree-visibility-toggle.json +99 -0
  1001. package/manifest/components/tree.json +182 -0
  1002. package/manifest/components/turn-footer.json +133 -0
  1003. package/manifest/components/two-step-button.json +150 -0
  1004. package/manifest/components/typing-indicator.json +60 -0
  1005. package/manifest/components/universe-grid.json +155 -0
  1006. package/manifest/components/unread-divider.json +58 -0
  1007. package/manifest/components/usage-chart.json +162 -0
  1008. package/manifest/components/verdict-row.json +106 -0
  1009. package/manifest/components/voice-conversation.json +141 -0
  1010. package/manifest/components/web-preview.json +105 -0
  1011. package/manifest/components/web-search.json +108 -0
  1012. package/manifest/components/work-collapse.json +125 -0
  1013. package/manifest/fixtures.json +776 -0
  1014. package/manifest/manifest.json +5037 -0
  1015. package/manifest/tokens.json +288 -0
  1016. package/package.json +278 -0
@@ -0,0 +1,81 @@
1
+ import { FormControlSize } from "./_chassis.js";
2
+ import * as React from "react";
3
+ //#region src/forms/scrub-input.d.ts
4
+ interface ScrubInputProps extends Omit<React.ComponentPropsWithoutRef<"div">, "onChange" | "defaultValue" | "onDragStart" | "onDragEnd"> {
5
+ /** The value. Always controlled — a scrub is a stream of edits, not a state to lose. */
6
+ value: number;
7
+ /**
8
+ * Called with every new value: each drag frame, each arrow-key step, and the
9
+ * committed result of a typed edit. Not a DOM change event.
10
+ */
11
+ onChange: (value: number) => void;
12
+ /** Called only for values produced by a drag, for hosts that throttle live writes. */
13
+ onLiveDrag?: (value: number) => void;
14
+ /** Called once when a drag actually begins — after the click threshold, not on press. */
15
+ onDragStart?: () => void;
16
+ /** Called once when a drag ends. */
17
+ onDragEnd?: () => void;
18
+ /**
19
+ * Called once per finished gesture: pointer-up after a drag, each key step, a
20
+ * committed typed value. Hang undo entries, network writes and persistence
21
+ * here — `onChange` fires dozens of times per drag.
22
+ */
23
+ onCommit?: (value: number) => void;
24
+ /** Lower bound. Defaults to `-Infinity`. */
25
+ min?: number;
26
+ /** Upper bound. Defaults to `Infinity`. */
27
+ max?: number;
28
+ /** Grid the value snaps to. Defaults to `1`. */
29
+ step?: number;
30
+ /** Decimal places shown. Defaults to whatever `step` implies. */
31
+ precision?: number;
32
+ /** Suffix drawn after the number — `%`, `s`, `dB`. */
33
+ unit?: string;
34
+ /**
35
+ * The units this value can be expressed in. With more than one the suffix
36
+ * becomes a button that cycles through them and reports via `onUnitChange`.
37
+ */
38
+ units?: readonly string[];
39
+ /** Called with the next unit when the suffix is clicked. */
40
+ onUnitChange?: (unit: string) => void;
41
+ /** Rung of the control ladder. Defaults to `"md"`. */
42
+ size?: FormControlSize;
43
+ /** Refuse dragging, typing and keyboard steps. */
44
+ disabled?: boolean;
45
+ /** Accessible name for the control. */
46
+ "aria-label"?: string;
47
+ /** Id of the element naming the control. */
48
+ "aria-labelledby"?: string;
49
+ /** Extra classes for the control. */
50
+ className?: string;
51
+ }
52
+ /**
53
+ * A number you scrub: drag up to raise it, down to lower it, click to type it.
54
+ *
55
+ * The console's answer to `<input type="number">`. Native spinners are two 4px
56
+ * arrows that only appear on hover — unusable at this density and invisible on
57
+ * touch — while a slider costs 200px of width to say one number. Dragging on the
58
+ * number itself costs nothing and is the interaction every audio and lighting
59
+ * tool has converged on: pointer capture so the cursor may leave the box, Shift
60
+ * for fine adjustment, `cursor-ns-resize` to advertise the axis.
61
+ *
62
+ * Click-to-type is not a fallback, it is the other half of the control: a
63
+ * gesture is for *approximately*, typing is for *exactly*, and a value you can
64
+ * only reach by dragging is a value you cannot enter from a cue sheet.
65
+ *
66
+ * `role="spinbutton"` is what makes any of this reachable without a pointer —
67
+ * arrow keys step, Page keys jump ten, Home/End go to the bounds — and it is why
68
+ * the resting element is not an `<input>`: a spinbutton announces its value,
69
+ * where a text box would announce its editable string on every drag frame.
70
+ *
71
+ * The `onChange`/`onCommit` split is the same undo-coalescing contract as
72
+ * {@link Slider}: one drag is one undo entry, not two hundred.
73
+ *
74
+ * @example
75
+ * <ScrubInput aria-label="Intensity" value={level} onChange={setLevel} onCommit={pushUndo} />
76
+ * @example
77
+ * <ScrubInput aria-label="Fade" value={fade} onChange={setFade} step={0.1} unit="s" min={0} />
78
+ */
79
+ declare const ScrubInput: React.ForwardRefExoticComponent<ScrubInputProps & React.RefAttributes<HTMLDivElement>>;
80
+ //#endregion
81
+ export { ScrubInput, ScrubInputProps };
@@ -0,0 +1,249 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { bareControlClasses, controlGroupFocusClasses, controlVariants } from "./_chassis.js";
4
+ import * as React from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/forms/scrub-input.tsx
7
+ /**
8
+ * Pixels of vertical travel per step. Two pixels per step is the Ableton/Live
9
+ * feel the audit called out: fast enough to cross a 0–100 range in a flick,
10
+ * slow enough that a single value is reachable without the fine modifier.
11
+ */
12
+ const PIXELS_PER_STEP = 2;
13
+ /**
14
+ * How much Shift slows a drag. Quarter speed — same value grid, four times the
15
+ * travel per step, which is precision of *control* rather than sub-step values
16
+ * the caller never asked for.
17
+ */
18
+ const FINE_FACTOR = .25;
19
+ /** Travel, in px, before a press counts as a drag rather than a click. */
20
+ const DRAG_THRESHOLD_PX = 3;
21
+ /** Arrow keys move one step; Page keys move ten. */
22
+ const PAGE_FACTOR = 10;
23
+ /** Snap to the step grid, clamp to the bounds, and drop float noise. */
24
+ function quantise(raw, { min, max, step, precision }) {
25
+ const snapped = Math.round(raw / step) * step;
26
+ const clamped = Math.min(max, Math.max(min, snapped));
27
+ const factor = 10 ** precision;
28
+ return Math.round(clamped * factor) / factor;
29
+ }
30
+ /** Decimal places implied by a step, when the caller did not say. */
31
+ function precisionOf(step) {
32
+ const text = String(step);
33
+ const dot = text.indexOf(".");
34
+ return dot === -1 ? 0 : Math.min(6, text.length - dot - 1);
35
+ }
36
+ /**
37
+ * A number you scrub: drag up to raise it, down to lower it, click to type it.
38
+ *
39
+ * The console's answer to `<input type="number">`. Native spinners are two 4px
40
+ * arrows that only appear on hover — unusable at this density and invisible on
41
+ * touch — while a slider costs 200px of width to say one number. Dragging on the
42
+ * number itself costs nothing and is the interaction every audio and lighting
43
+ * tool has converged on: pointer capture so the cursor may leave the box, Shift
44
+ * for fine adjustment, `cursor-ns-resize` to advertise the axis.
45
+ *
46
+ * Click-to-type is not a fallback, it is the other half of the control: a
47
+ * gesture is for *approximately*, typing is for *exactly*, and a value you can
48
+ * only reach by dragging is a value you cannot enter from a cue sheet.
49
+ *
50
+ * `role="spinbutton"` is what makes any of this reachable without a pointer —
51
+ * arrow keys step, Page keys jump ten, Home/End go to the bounds — and it is why
52
+ * the resting element is not an `<input>`: a spinbutton announces its value,
53
+ * where a text box would announce its editable string on every drag frame.
54
+ *
55
+ * The `onChange`/`onCommit` split is the same undo-coalescing contract as
56
+ * {@link Slider}: one drag is one undo entry, not two hundred.
57
+ *
58
+ * @example
59
+ * <ScrubInput aria-label="Intensity" value={level} onChange={setLevel} onCommit={pushUndo} />
60
+ * @example
61
+ * <ScrubInput aria-label="Fade" value={fade} onChange={setFade} step={0.1} unit="s" min={0} />
62
+ */
63
+ const ScrubInput = React.forwardRef(function ScrubInput({ className, value, onChange, onLiveDrag, onDragStart, onDragEnd, onCommit, min = Number.NEGATIVE_INFINITY, max = Number.POSITIVE_INFINITY, step = 1, precision, unit, units, onUnitChange, size = "md", disabled = false, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ...elementProps }, ref) {
64
+ const decimals = precision ?? precisionOf(step);
65
+ const bounds = React.useMemo(() => ({
66
+ min,
67
+ max,
68
+ step,
69
+ precision: decimals
70
+ }), [
71
+ decimals,
72
+ max,
73
+ min,
74
+ step
75
+ ]);
76
+ const [editing, setEditing] = React.useState(false);
77
+ const [draft, setDraft] = React.useState("");
78
+ const editorRef = React.useRef(null);
79
+ /** Escape has already discarded this edit; a trailing blur must not undo that. */
80
+ const abandoned = React.useRef(false);
81
+ /** Live gesture state. A ref, not state: a drag must not re-render to track itself. */
82
+ const gesture = React.useRef(null);
83
+ const display = value.toFixed(decimals);
84
+ const valueText = unit === void 0 ? display : `${display} ${unit}`;
85
+ const emit = React.useCallback((next, fromDrag) => {
86
+ if (next === value) return false;
87
+ onChange(next);
88
+ if (fromDrag) onLiveDrag?.(next);
89
+ return true;
90
+ }, [
91
+ onChange,
92
+ onLiveDrag,
93
+ value
94
+ ]);
95
+ const beginEditing = React.useCallback(() => {
96
+ abandoned.current = false;
97
+ setDraft(value.toFixed(decimals));
98
+ setEditing(true);
99
+ }, [decimals, value]);
100
+ const handlePointerDown = (event) => {
101
+ if (disabled || editing || event.button !== 0) return;
102
+ gesture.current = {
103
+ pointerId: event.pointerId,
104
+ startY: event.clientY,
105
+ startValue: value,
106
+ dragging: false,
107
+ last: value
108
+ };
109
+ event.currentTarget.setPointerCapture?.(event.pointerId);
110
+ };
111
+ const handlePointerMove = (event) => {
112
+ const active = gesture.current;
113
+ if (active === null || active.pointerId !== event.pointerId) return;
114
+ const travel = active.startY - event.clientY;
115
+ if (!active.dragging) {
116
+ if (Math.abs(travel) < DRAG_THRESHOLD_PX) return;
117
+ active.dragging = true;
118
+ onDragStart?.();
119
+ }
120
+ const scale = event.shiftKey ? FINE_FACTOR : 1;
121
+ const next = quantise(active.startValue + travel / PIXELS_PER_STEP * step * scale, bounds);
122
+ if (next === active.last) return;
123
+ active.last = next;
124
+ emit(next, true);
125
+ };
126
+ const endGesture = (event) => {
127
+ const active = gesture.current;
128
+ if (active === null || active.pointerId !== event.pointerId) return;
129
+ gesture.current = null;
130
+ event.currentTarget.releasePointerCapture?.(event.pointerId);
131
+ if (!active.dragging) {
132
+ if (!disabled) beginEditing();
133
+ return;
134
+ }
135
+ onDragEnd?.();
136
+ onCommit?.(active.last);
137
+ };
138
+ React.useEffect(() => {
139
+ if (editing) editorRef.current?.select();
140
+ }, [editing]);
141
+ const commitDraft = React.useCallback(() => {
142
+ setEditing(false);
143
+ if (abandoned.current) return;
144
+ const parsed = Number.parseFloat(draft);
145
+ if (Number.isNaN(parsed)) return;
146
+ const next = quantise(parsed, bounds);
147
+ if (emit(next, false)) onCommit?.(next);
148
+ }, [
149
+ bounds,
150
+ draft,
151
+ emit,
152
+ onCommit
153
+ ]);
154
+ const handleKeyDown = (event) => {
155
+ if (disabled) return;
156
+ let next = null;
157
+ if (event.key === "ArrowUp") next = value + step;
158
+ else if (event.key === "ArrowDown") next = value - step;
159
+ else if (event.key === "PageUp") next = value + step * PAGE_FACTOR;
160
+ else if (event.key === "PageDown") next = value - step * PAGE_FACTOR;
161
+ else if (event.key === "Home" && Number.isFinite(min)) next = min;
162
+ else if (event.key === "End" && Number.isFinite(max)) next = max;
163
+ else if (event.key === "Enter") {
164
+ event.preventDefault();
165
+ beginEditing();
166
+ return;
167
+ }
168
+ if (next === null) return;
169
+ event.preventDefault();
170
+ const quantised = quantise(next, bounds);
171
+ if (emit(quantised, false)) onCommit?.(quantised);
172
+ };
173
+ const cycleUnit = () => {
174
+ if (units === void 0 || units.length === 0) return;
175
+ const index = unit === void 0 ? -1 : units.indexOf(unit);
176
+ onUnitChange?.(units[(index + 1) % units.length]);
177
+ };
178
+ if (editing) return /* @__PURE__ */ jsxs("div", {
179
+ ...elementProps,
180
+ ref,
181
+ "data-slot": "scrub-input-editor",
182
+ className: cn(controlVariants({ size }), "flex items-center gap-(--cue-space-2)", controlGroupFocusClasses, className),
183
+ children: [/* @__PURE__ */ jsx("input", {
184
+ ref: editorRef,
185
+ type: "text",
186
+ inputMode: "decimal",
187
+ "aria-label": ariaLabel,
188
+ "aria-labelledby": ariaLabelledBy,
189
+ value: draft,
190
+ autoFocus: true,
191
+ onChange: (event) => setDraft(event.currentTarget.value),
192
+ onBlur: commitDraft,
193
+ onKeyDown: (event) => {
194
+ if (event.key === "Enter") {
195
+ event.preventDefault();
196
+ commitDraft();
197
+ } else if (event.key === "Escape") {
198
+ event.preventDefault();
199
+ abandoned.current = true;
200
+ setEditing(false);
201
+ }
202
+ },
203
+ className: cn(bareControlClasses, "text-right tabular-nums", "[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none")
204
+ }), unit === void 0 ? null : /* @__PURE__ */ jsx("span", {
205
+ className: "shrink-0 text-fg-subtle select-none",
206
+ children: unit
207
+ })]
208
+ });
209
+ return /* @__PURE__ */ jsxs("div", {
210
+ ...elementProps,
211
+ ref,
212
+ role: "spinbutton",
213
+ "data-slot": "scrub-input",
214
+ tabIndex: disabled ? -1 : 0,
215
+ "aria-label": ariaLabel,
216
+ "aria-labelledby": ariaLabelledBy,
217
+ "aria-valuenow": value,
218
+ "aria-valuemin": Number.isFinite(min) ? min : void 0,
219
+ "aria-valuemax": Number.isFinite(max) ? max : void 0,
220
+ "aria-valuetext": valueText,
221
+ "aria-disabled": disabled ? true : void 0,
222
+ onPointerDown: handlePointerDown,
223
+ onPointerMove: handlePointerMove,
224
+ onPointerUp: endGesture,
225
+ onPointerCancel: endGesture,
226
+ onKeyDown: handleKeyDown,
227
+ className: cn(controlVariants({ size }), "flex touch-none items-center justify-between gap-(--cue-space-2) select-none", disabled ? "cursor-default opacity-40" : "cursor-ns-resize", className),
228
+ children: [/* @__PURE__ */ jsx("span", {
229
+ "data-slot": "scrub-input-value",
230
+ className: "truncate tabular-nums",
231
+ children: display
232
+ }), unit === void 0 ? null : units === void 0 || units.length < 2 ? /* @__PURE__ */ jsx("span", {
233
+ "data-slot": "scrub-input-unit",
234
+ className: "shrink-0 text-fg-subtle",
235
+ children: unit
236
+ }) : /* @__PURE__ */ jsx("button", {
237
+ type: "button",
238
+ "data-slot": "scrub-input-unit",
239
+ "aria-label": `Unit: ${unit}`,
240
+ disabled,
241
+ onPointerDown: (event) => event.stopPropagation(),
242
+ onClick: cycleUnit,
243
+ className: "shrink-0 cursor-pointer rounded-(--radius-control) border-0 bg-transparent p-0 font-mono text-[length:inherit] text-fg-subtle outline-none transition-colors hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent disabled:pointer-events-none",
244
+ children: unit
245
+ })]
246
+ });
247
+ });
248
+ //#endregion
249
+ export { ScrubInput };
@@ -0,0 +1,54 @@
1
+ import { FormControlSize } from "./_chassis.js";
2
+ import { InputProps } from "./input.js";
3
+ import * as React from "react";
4
+ //#region src/forms/search-input.d.ts
5
+ interface SearchInputProps extends Omit<InputProps, "type" | "size" | "value" | "defaultValue" | "onValueChange" | "children"> {
6
+ /** Current query. Supply it with `onValueChange` for a controlled input. */
7
+ value?: string;
8
+ /** Initial query for an uncontrolled input. */
9
+ defaultValue?: string;
10
+ /** Fired on every keystroke, and with `""` when the query is cleared. */
11
+ onValueChange?: (value: string) => void;
12
+ /**
13
+ * Quiet period in ms before {@link SearchInputProps.onDebouncedChange} fires.
14
+ * Defaults to `250`. `0` fires it synchronously with every keystroke.
15
+ */
16
+ debounce?: number;
17
+ /**
18
+ * Fired once the user stops typing for `debounce` ms — the callback to hang a
19
+ * query or a filter recomputation on. Clearing flushes it immediately, because
20
+ * "show me everything again" should never wait.
21
+ */
22
+ onDebouncedChange?: (value: string) => void;
23
+ /** Fired when the query is cleared, by Escape or by the clear button. */
24
+ onClear?: () => void;
25
+ /** Leading glyph component. Defaults to a magnifier. */
26
+ icon?: React.ElementType;
27
+ /** Accessible name for the clear button. Defaults to `"Clear search"`. */
28
+ clearLabel?: string;
29
+ /** Rung of the control ladder. Defaults to `"md"`. */
30
+ size?: FormControlSize;
31
+ /** Extra classes for the group that wraps the icon, the input and the clear button. */
32
+ className?: string;
33
+ }
34
+ /**
35
+ * A filter box: leading magnifier, Escape to clear, and a debounced change
36
+ * callback for whatever the query drives.
37
+ *
38
+ * Escape-to-clear is the reason this is a component and not a recipe. It is the
39
+ * behaviour every console filter needs and the one every hand-rolled search box
40
+ * forgets, and getting it right means also stopping the key from bubbling into a
41
+ * dialog that would otherwise close underneath the user.
42
+ *
43
+ * Debouncing is deliberately separate from `onValueChange`: the input stays
44
+ * responsive on every keystroke while the expensive work waits for the typing to
45
+ * stop. Clearing flushes the debounce rather than scheduling it.
46
+ *
47
+ * @example
48
+ * <SearchInput aria-label="Filter cues" onDebouncedChange={setQuery} />
49
+ * @example
50
+ * <SearchInput value={q} onValueChange={setQ} debounce={0} size="sm" />
51
+ */
52
+ declare const SearchInput: React.ForwardRefExoticComponent<Omit<SearchInputProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
53
+ //#endregion
54
+ export { SearchInput, SearchInputProps };
@@ -0,0 +1,112 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { InputGroup } from "./input-group.js";
4
+ import { Input } from "./input.js";
5
+ import { CrossGlyph, SearchGlyph } from "./_glyphs.js";
6
+ import * as React from "react";
7
+ import { jsx } from "react/jsx-runtime";
8
+ //#region src/forms/search-input.tsx
9
+ const DEFAULT_DEBOUNCE_MS = 250;
10
+ /**
11
+ * A filter box: leading magnifier, Escape to clear, and a debounced change
12
+ * callback for whatever the query drives.
13
+ *
14
+ * Escape-to-clear is the reason this is a component and not a recipe. It is the
15
+ * behaviour every console filter needs and the one every hand-rolled search box
16
+ * forgets, and getting it right means also stopping the key from bubbling into a
17
+ * dialog that would otherwise close underneath the user.
18
+ *
19
+ * Debouncing is deliberately separate from `onValueChange`: the input stays
20
+ * responsive on every keystroke while the expensive work waits for the typing to
21
+ * stop. Clearing flushes the debounce rather than scheduling it.
22
+ *
23
+ * @example
24
+ * <SearchInput aria-label="Filter cues" onDebouncedChange={setQuery} />
25
+ * @example
26
+ * <SearchInput value={q} onValueChange={setQ} debounce={0} size="sm" />
27
+ */
28
+ const SearchInput = React.forwardRef(function SearchInput({ className, value, defaultValue, onValueChange, onChange, onKeyDown, debounce = DEFAULT_DEBOUNCE_MS, onDebouncedChange, onClear, icon: Icon = SearchGlyph, clearLabel = "Clear search", size, ...elementProps }, ref) {
29
+ const isControlled = value !== void 0;
30
+ const [internal, setInternal] = React.useState(defaultValue ?? "");
31
+ const current = isControlled ? value : internal;
32
+ const innerRef = React.useRef(null);
33
+ const setRefs = React.useCallback((node) => {
34
+ innerRef.current = node;
35
+ if (typeof ref === "function") ref(node);
36
+ else if (ref !== null) ref.current = node;
37
+ }, [ref]);
38
+ const debouncedRef = React.useRef(onDebouncedChange);
39
+ React.useEffect(() => {
40
+ debouncedRef.current = onDebouncedChange;
41
+ }, [onDebouncedChange]);
42
+ const lastNotified = React.useRef(current);
43
+ React.useEffect(() => {
44
+ const notify = debouncedRef.current;
45
+ if (notify === void 0 || current === lastNotified.current) return;
46
+ if (debounce <= 0) {
47
+ lastNotified.current = current;
48
+ notify(current);
49
+ return;
50
+ }
51
+ const timer = setTimeout(() => {
52
+ lastNotified.current = current;
53
+ notify(current);
54
+ }, debounce);
55
+ return () => clearTimeout(timer);
56
+ }, [current, debounce]);
57
+ const commit = React.useCallback((next) => {
58
+ if (!isControlled) setInternal(next);
59
+ onValueChange?.(next);
60
+ }, [isControlled, onValueChange]);
61
+ const clear = React.useCallback(() => {
62
+ commit("");
63
+ lastNotified.current = "";
64
+ debouncedRef.current?.("");
65
+ onClear?.();
66
+ innerRef.current?.focus();
67
+ }, [commit, onClear]);
68
+ const handleChange = React.useCallback((event) => {
69
+ onChange?.(event);
70
+ commit(event.currentTarget.value);
71
+ }, [commit, onChange]);
72
+ const handleKeyDown = React.useCallback((event) => {
73
+ onKeyDown?.(event);
74
+ if (event.defaultPrevented || event.key !== "Escape") return;
75
+ if (current === "") return;
76
+ event.preventDefault();
77
+ event.stopPropagation();
78
+ clear();
79
+ }, [
80
+ clear,
81
+ current,
82
+ onKeyDown
83
+ ]);
84
+ return /* @__PURE__ */ jsx(InputGroup, {
85
+ size,
86
+ className,
87
+ leading: /* @__PURE__ */ jsx(Icon, {
88
+ "data-slot": "search-icon",
89
+ "aria-hidden": "true",
90
+ className: "size-icon-md"
91
+ }),
92
+ trailing: current === "" ? void 0 : /* @__PURE__ */ jsx("button", {
93
+ type: "button",
94
+ "aria-label": clearLabel,
95
+ onClick: clear,
96
+ className: "flex shrink-0 cursor-pointer items-center justify-center rounded-(--radius-control) text-fg-subtle outline-none transition-colors hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent",
97
+ children: /* @__PURE__ */ jsx(CrossGlyph, { className: "size-icon-sm" })
98
+ }),
99
+ children: /* @__PURE__ */ jsx(Input, {
100
+ ref: setRefs,
101
+ type: "search",
102
+ "data-slot": "search-input",
103
+ value: current,
104
+ onChange: handleChange,
105
+ onKeyDown: handleKeyDown,
106
+ className: cn("[&::-webkit-search-cancel-button]:appearance-none"),
107
+ ...elementProps
108
+ })
109
+ });
110
+ });
111
+ //#endregion
112
+ export { SearchInput };
@@ -0,0 +1,75 @@
1
+ import { FormControlSize } from "./_chassis.js";
2
+ import * as React from "react";
3
+ //#region src/forms/select.d.ts
4
+ /** One row in a {@link Select}. */
5
+ interface SelectOption {
6
+ /** Submitted value and identity of the row. */
7
+ value: string;
8
+ /** What the user reads, in the trigger as well as the list. */
9
+ label: React.ReactNode;
10
+ /** Grey the row out and skip it during keyboard navigation. */
11
+ disabled?: boolean;
12
+ }
13
+ interface SelectProps {
14
+ /** The rows, in display order. */
15
+ items: readonly SelectOption[];
16
+ /** Selected value. Use with `onValueChange` for a controlled select. */
17
+ value?: string | null;
18
+ /** Initially selected value for an uncontrolled select. */
19
+ defaultValue?: string | null;
20
+ /** Called with the newly selected value (`null` when cleared). */
21
+ onValueChange?: (value: string | null) => void;
22
+ /** Shown in the trigger while nothing is selected. */
23
+ placeholder?: React.ReactNode;
24
+ /** Rung of the control ladder for the trigger. Defaults to `"md"`. */
25
+ size?: FormControlSize;
26
+ /** Prevent opening and grey the trigger out. */
27
+ disabled?: boolean;
28
+ /** Require a value before the owning form submits. */
29
+ required?: boolean;
30
+ /** Name for the hidden input, when the select is part of a form. */
31
+ name?: string;
32
+ /** Id forwarded to the select's hidden input. */
33
+ id?: string;
34
+ /** Accessible name for the trigger, when no {@link FieldLabel} names it. */
35
+ "aria-label"?: string;
36
+ /** Id of the element naming the trigger. */
37
+ "aria-labelledby"?: string;
38
+ /**
39
+ * Lock interaction to the popup while it is open. Defaults to `true`, matching
40
+ * Base UI; set `false` inside a canvas or a drag surface that must keep
41
+ * receiving pointer events.
42
+ */
43
+ modal?: boolean;
44
+ /** Extra classes for the trigger. */
45
+ className?: string;
46
+ /** Extra classes for the popup surface. */
47
+ popupClassName?: string;
48
+ /** Distance in px between the trigger and the popup. Defaults to `4`. */
49
+ sideOffset?: number;
50
+ }
51
+ /**
52
+ * A dropdown for choosing one of a known set of values.
53
+ *
54
+ * The trigger rides the recessed control chassis so a select lines up with the
55
+ * {@link Input}s beside it; the popup wears the overlay surface
56
+ * (`surface-2` + `border-overlay` + the overlay radius) that every floating
57
+ * element in this system shares. Rows are one `control-sm` tall — the list is
58
+ * meant to show a dozen options without scrolling.
59
+ *
60
+ * The popup is portalled through {@link useCuePortalProps}, so it carries the
61
+ * caller's `data-theme` / `data-density` / `data-mode` even though it mounts at
62
+ * the end of `<body>`. Without that a select opened inside an ultra-compact
63
+ * island would render at the page's density.
64
+ *
65
+ * @example
66
+ * <Select
67
+ * aria-label="Blend mode"
68
+ * items={[{ value: "htp", label: "HTP" }, { value: "ltp", label: "LTP" }]}
69
+ * value={mode}
70
+ * onValueChange={setMode}
71
+ * />
72
+ */
73
+ declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>>;
74
+ //#endregion
75
+ export { Select, SelectOption, SelectProps };
@@ -0,0 +1,91 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { controlVariants } from "./_chassis.js";
4
+ import { useCuePortalProps } from "../system/portal.js";
5
+ import { CaretGlyph, TickGlyph } from "./_glyphs.js";
6
+ import * as React from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { Select } from "@base-ui/react/select";
9
+ //#region src/forms/select.tsx
10
+ /**
11
+ * A dropdown for choosing one of a known set of values.
12
+ *
13
+ * The trigger rides the recessed control chassis so a select lines up with the
14
+ * {@link Input}s beside it; the popup wears the overlay surface
15
+ * (`surface-2` + `border-overlay` + the overlay radius) that every floating
16
+ * element in this system shares. Rows are one `control-sm` tall — the list is
17
+ * meant to show a dozen options without scrolling.
18
+ *
19
+ * The popup is portalled through {@link useCuePortalProps}, so it carries the
20
+ * caller's `data-theme` / `data-density` / `data-mode` even though it mounts at
21
+ * the end of `<body>`. Without that a select opened inside an ultra-compact
22
+ * island would render at the page's density.
23
+ *
24
+ * @example
25
+ * <Select
26
+ * aria-label="Blend mode"
27
+ * items={[{ value: "htp", label: "HTP" }, { value: "ltp", label: "LTP" }]}
28
+ * value={mode}
29
+ * onValueChange={setMode}
30
+ * />
31
+ */
32
+ const Select$1 = React.forwardRef(function Select$2({ items, value, defaultValue, onValueChange, placeholder, size, disabled, required, name, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, modal, className, popupClassName, sideOffset = 4 }, ref) {
33
+ const portalProps = useCuePortalProps();
34
+ const handleValueChange = React.useCallback((next) => {
35
+ onValueChange?.(next ?? null);
36
+ }, [onValueChange]);
37
+ return /* @__PURE__ */ jsxs(Select.Root, {
38
+ items,
39
+ value,
40
+ defaultValue,
41
+ onValueChange: onValueChange === void 0 ? void 0 : handleValueChange,
42
+ disabled,
43
+ required,
44
+ name,
45
+ id,
46
+ modal,
47
+ children: [/* @__PURE__ */ jsxs(Select.Trigger, {
48
+ ref,
49
+ "data-slot": "select-trigger",
50
+ "aria-label": ariaLabel,
51
+ "aria-labelledby": ariaLabelledBy,
52
+ className: cn(controlVariants({ size }), "flex cursor-default items-center justify-between gap-(--cue-space-3) text-left", "hover:not-data-disabled:border-border-strong", className),
53
+ children: [/* @__PURE__ */ jsx(Select.Value, {
54
+ className: "truncate data-[placeholder]:text-fg-subtle",
55
+ placeholder
56
+ }), /* @__PURE__ */ jsx(Select.Icon, {
57
+ className: "flex shrink-0 items-center text-fg-subtle",
58
+ children: /* @__PURE__ */ jsx(CaretGlyph, { className: "size-icon-md" })
59
+ })]
60
+ }), /* @__PURE__ */ jsx(Select.Portal, {
61
+ ...portalProps,
62
+ children: /* @__PURE__ */ jsx(Select.Positioner, {
63
+ className: "z-50 outline-none",
64
+ sideOffset,
65
+ alignItemWithTrigger: false,
66
+ children: /* @__PURE__ */ jsx(Select.Popup, {
67
+ "data-slot": "select-popup",
68
+ className: cn("min-w-(--anchor-width) origin-(--transform-origin) overflow-hidden rounded-(--radius-overlay) border border-border-overlay bg-surface-2 py-(--cue-space-1) shadow-[0_8px_24px_rgba(0,0,0,0.4)] outline-none", "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", popupClassName),
69
+ children: /* @__PURE__ */ jsx(Select.List, {
70
+ className: "max-h-(--available-height) overflow-y-auto",
71
+ children: items.map((item) => /* @__PURE__ */ jsxs(Select.Item, {
72
+ value: item.value,
73
+ disabled: item.disabled,
74
+ "data-slot": "select-item",
75
+ className: "flex h-control-sm cursor-default items-center gap-(--cue-space-2) 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-[selected]:text-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-40",
76
+ children: [/* @__PURE__ */ jsx("span", {
77
+ className: "flex size-icon-sm shrink-0 items-center justify-center",
78
+ children: /* @__PURE__ */ jsx(Select.ItemIndicator, { children: /* @__PURE__ */ jsx(TickGlyph, { className: "size-icon-sm" }) })
79
+ }), /* @__PURE__ */ jsx(Select.ItemText, {
80
+ className: "truncate",
81
+ children: item.label
82
+ })]
83
+ }, item.value))
84
+ })
85
+ })
86
+ })
87
+ })]
88
+ });
89
+ });
90
+ //#endregion
91
+ export { Select$1 as Select };