@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,215 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { Chip } from "../primitives/chip.js";
4
+ import { useIsomorphicLayoutEffect } from "../system/use-isomorphic-layout-effect.js";
5
+ import { toRem } from "./_rem.js";
6
+ import { useControlHeight } from "../system/use-density.js";
7
+ import { ansiSpans } from "./_ansi.js";
8
+ import * as React from "react";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ import { useVirtualizer } from "@tanstack/react-virtual";
11
+ //#region src/instruments/log-viewer.tsx
12
+ /** Canonical order for the filter strip — quietest first, loudest last. */
13
+ const LEVEL_ORDER = [
14
+ "debug",
15
+ "info",
16
+ "warn",
17
+ "error"
18
+ ];
19
+ const LEVEL_TONES = {
20
+ debug: "text-fg-subtle",
21
+ info: "text-fg-muted",
22
+ warn: "text-warn",
23
+ error: "text-danger"
24
+ };
25
+ const LEVEL_CHIP_TONES = {
26
+ debug: "neutral",
27
+ info: "info",
28
+ warn: "warn",
29
+ error: "danger"
30
+ };
31
+ /** How many lines are kept before the head is dropped. */
32
+ const DEFAULT_MAX_LINES = 5e3;
33
+ /** Rows rendered beyond the viewport, so a fast scroll never shows white. */
34
+ const OVERSCAN = 8;
35
+ /** Slack, in px, for "close enough to the bottom to count as pinned". */
36
+ const BOTTOM_TOLERANCE = 4;
37
+ /** Local wall-clock, seconds resolution — the only part of a log timestamp a reader scans. */
38
+ function defaultTimestamp(ts) {
39
+ return new Date(ts).toLocaleTimeString(void 0, {
40
+ hour: "2-digit",
41
+ minute: "2-digit",
42
+ second: "2-digit",
43
+ hour12: false
44
+ });
45
+ }
46
+ /**
47
+ * A virtualised log tail: ANSI colour, level filters, and stick-to-bottom.
48
+ *
49
+ * The four things a log pane has to get right, and the reasons each one is not
50
+ * optional:
51
+ *
52
+ * - **Virtualised.** Five thousand DOM rows is a frozen tab. Rows are fixed at
53
+ * the short control rung so the virtualiser never has to measure, which is
54
+ * also what keeps the scrollbar honest while lines stream in.
55
+ * - **ANSI as data, never as HTML.** `anser` will happily hand back a markup
56
+ * string, and the moment that reaches `dangerouslySetInnerHTML` any process
57
+ * that prints a `<script>` owns the console watching it. Colour arrives here
58
+ * as spans of *text* with resolved token colours (see `_ansi.ts`).
59
+ * - **Following is a mode, not a scroll.** While pinned to the bottom the view
60
+ * follows; scroll up and it stops and starts counting, so reading something
61
+ * is never fought by the stream. The count comes back as a pill, not as a
62
+ * jump.
63
+ * - **A cap.** An unbounded buffer is a memory leak with a progress bar. The
64
+ * head is dropped past `maxLines`.
65
+ *
66
+ * Ships from `@cueplusplus/ui/instruments/log-viewer`: it needs
67
+ * `@tanstack/react-virtual` and `anser`, both optional peers, and neither
68
+ * belongs in the bundle of an app that renders no logs.
69
+ *
70
+ * @example
71
+ * <LogViewer aria-label="Build output" height={320} lines={lines} />
72
+ * @example
73
+ * <LogViewer aria-label="Worker" height={200} follow={false} filters={["warn", "error"]} lines={lines} />
74
+ */
75
+ const LogViewer = React.forwardRef(function LogViewer({ className, lines, follow = true, filters, height, rowHeight, maxLines = DEFAULT_MAX_LINES, formatTimestamp = defaultTimestamp, emptyLabel = "No output", newLinesLabel = (count) => `${count} new line${count === 1 ? "" : "s"}`, "aria-label": ariaLabel, ...elementProps }, ref) {
76
+ const measuredRow = useControlHeight("sm");
77
+ const row = rowHeight ?? measuredRow;
78
+ const scrollerRef = React.useRef(null);
79
+ const [muted, setMuted] = React.useState([]);
80
+ const [pinned, setPinned] = React.useState(true);
81
+ const [pending, setPending] = React.useState(0);
82
+ const capped = React.useMemo(() => lines.length > maxLines ? lines.slice(lines.length - maxLines) : lines, [lines, maxLines]);
83
+ const chips = React.useMemo(() => {
84
+ if (filters === false) return [];
85
+ if (filters !== void 0) return filters;
86
+ const present = new Set(capped.map((line) => line.level).filter(Boolean));
87
+ return LEVEL_ORDER.filter((level) => present.has(level));
88
+ }, [capped, filters]);
89
+ const hidden = React.useMemo(() => muted.filter((level) => chips.includes(level)), [chips, muted]);
90
+ const visible = React.useMemo(() => hidden.length === 0 ? capped : capped.filter((line) => line.level === void 0 || !hidden.includes(line.level)), [capped, hidden]);
91
+ const virtualizer = useVirtualizer({
92
+ count: visible.length,
93
+ getScrollElement: () => scrollerRef.current,
94
+ estimateSize: () => row,
95
+ getItemKey: (index) => visible[index].id,
96
+ overscan: OVERSCAN
97
+ });
98
+ const jumpToBottom = React.useCallback(() => {
99
+ const element = scrollerRef.current;
100
+ if (element === null) return;
101
+ element.scrollTop = element.scrollHeight;
102
+ setPinned(true);
103
+ setPending(0);
104
+ }, []);
105
+ const previousCountRef = React.useRef(visible.length);
106
+ useIsomorphicLayoutEffect(() => {
107
+ const element = scrollerRef.current;
108
+ const added = visible.length - previousCountRef.current;
109
+ previousCountRef.current = visible.length;
110
+ if (element === null) return;
111
+ if (follow && pinned) {
112
+ element.scrollTop = element.scrollHeight;
113
+ setPending(0);
114
+ return;
115
+ }
116
+ if (added > 0) setPending((current) => current + added);
117
+ }, [
118
+ follow,
119
+ pinned,
120
+ visible.length
121
+ ]);
122
+ const onScroll = React.useCallback(() => {
123
+ const element = scrollerRef.current;
124
+ if (element === null) return;
125
+ const atBottom = element.scrollHeight - element.scrollTop - element.clientHeight <= BOTTOM_TOLERANCE;
126
+ setPinned(atBottom);
127
+ if (atBottom) setPending(0);
128
+ }, []);
129
+ const items = virtualizer.getVirtualItems();
130
+ return /* @__PURE__ */ jsxs("div", {
131
+ ref,
132
+ "data-slot": "log-viewer",
133
+ className: cn("relative flex min-w-0 flex-col overflow-hidden rounded-(--radius-surface) border border-border bg-sunken", className),
134
+ style: { height: toRem(height) },
135
+ ...elementProps,
136
+ children: [
137
+ chips.length === 0 ? null : /* @__PURE__ */ jsx("div", {
138
+ "data-slot": "log-viewer-filters",
139
+ className: "flex shrink-0 items-center gap-(--cue-space-2) border-b border-border bg-surface-1 px-(--cue-pad-row-x) py-(--cue-space-2)",
140
+ children: chips.map((level) => {
141
+ const active = !muted.includes(level);
142
+ return /* @__PURE__ */ jsx(Chip, {
143
+ interactive: true,
144
+ "aria-pressed": active,
145
+ "data-level": level,
146
+ tone: LEVEL_CHIP_TONES[level],
147
+ variant: active ? "tinted" : "outline",
148
+ className: active ? void 0 : "opacity-50",
149
+ onClick: () => setMuted((current) => current.includes(level) ? current.filter((entry) => entry !== level) : [...current, level]),
150
+ children: level
151
+ }, level);
152
+ })
153
+ }),
154
+ /* @__PURE__ */ jsx("div", {
155
+ ref: scrollerRef,
156
+ role: "log",
157
+ "aria-label": ariaLabel,
158
+ tabIndex: 0,
159
+ "data-slot": "log-viewer-scroller",
160
+ className: "min-h-0 flex-1 overflow-auto font-mono text-(length:--cue-text-label) leading-none outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent",
161
+ onScroll,
162
+ children: visible.length === 0 ? /* @__PURE__ */ jsx("div", {
163
+ "data-slot": "log-viewer-empty",
164
+ className: "flex h-full items-center justify-center text-fg-subtle",
165
+ children: emptyLabel
166
+ }) : /* @__PURE__ */ jsx("div", {
167
+ "data-slot": "log-viewer-canvas",
168
+ className: "relative w-full",
169
+ style: { height: `${virtualizer.getTotalSize()}px` },
170
+ children: items.map((item) => {
171
+ const line = visible[item.index];
172
+ return /* @__PURE__ */ jsxs("div", {
173
+ "data-slot": "log-viewer-row",
174
+ "data-level": line.level,
175
+ className: cn("absolute top-0 left-0 flex w-full items-center gap-(--cue-space-3) overflow-hidden px-(--cue-pad-row-x) whitespace-pre", LEVEL_TONES[line.level ?? "info"]),
176
+ style: {
177
+ height: `${item.size}px`,
178
+ transform: `translateY(${item.start}px)`
179
+ },
180
+ children: [line.ts === void 0 ? null : /* @__PURE__ */ jsx("span", {
181
+ "data-slot": "log-viewer-ts",
182
+ className: "shrink-0 tabular-nums text-fg-subtle",
183
+ children: formatTimestamp(line.ts)
184
+ }), /* @__PURE__ */ jsx("span", {
185
+ "data-slot": "log-viewer-text",
186
+ className: "min-w-0 flex-1 overflow-hidden",
187
+ children: line.ansi === true ? ansiSpans(line.text).map((span, index) => /* @__PURE__ */ jsx("span", {
188
+ "data-slot": "log-viewer-span",
189
+ style: {
190
+ color: span.color,
191
+ backgroundColor: span.background,
192
+ fontWeight: span.bold ? 600 : void 0,
193
+ fontStyle: span.italic ? "italic" : void 0,
194
+ opacity: span.dim ? .6 : void 0,
195
+ textDecoration: span.underline ? "underline" : span.strikethrough ? "line-through" : void 0
196
+ },
197
+ children: span.text
198
+ }, index)) : line.text
199
+ })]
200
+ }, item.key);
201
+ })
202
+ })
203
+ }),
204
+ pending > 0 ? /* @__PURE__ */ jsx("button", {
205
+ type: "button",
206
+ "data-slot": "log-viewer-jump",
207
+ className: "absolute bottom-(--cue-space-4) left-1/2 -translate-x-1/2 cursor-pointer rounded-(--radius-control) border border-border-overlay bg-surface-2 px-(--cue-space-4) py-(--cue-space-2) font-mono text-(length:--cue-text-label) text-fg shadow-[0_8px_24px_rgba(0,0,0,0.4)] outline-none hover:border-accent hover:text-accent focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent",
208
+ onClick: jumpToBottom,
209
+ children: newLinesLabel(pending)
210
+ }) : null
211
+ ]
212
+ });
213
+ });
214
+ //#endregion
215
+ export { LogViewer };
@@ -0,0 +1,81 @@
1
+ import * as React from "react";
2
+ //#region src/instruments/meter.d.ts
3
+ /**
4
+ * The shared status vocabulary, minus the two tones a fill level cannot mean:
5
+ * `info` (a meter is never advisory) and `neutral` (a level always has a
6
+ * reading). Same tokens as `Chip`, `StatusDot` and `Toast`.
7
+ */
8
+ type MeterTone = "ok" | "busy" | "warn" | "danger";
9
+ /**
10
+ * Where the ceiling came from — the meter's honesty dial.
11
+ *
12
+ * - `vendor` — the provider stated the limit. Plain fill; full authority.
13
+ * - `estimated` — somebody typed the limit. Hatched, so an estimate never
14
+ * wears the authority of a reported number.
15
+ * - `unbounded` — there is no denominator, so no percentage exists. Drawn as a
16
+ * wash with no value at all: an empty bar would read as "0% used" and a full
17
+ * one as "exhausted", and both are inventions.
18
+ * - `none` — provenance not stated. Plain, and says nothing it cannot back up.
19
+ */
20
+ type MeterProvenance = "vendor" | "estimated" | "unbounded" | "none";
21
+ interface MeterProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
22
+ /**
23
+ * How full, 0–100. Clamped; a non-finite value reads as 0.
24
+ * @min 0
25
+ * @max 100
26
+ */
27
+ percent: number;
28
+ /** Status colour for the fill. Defaults to `"ok"`. */
29
+ tone?: MeterTone;
30
+ /**
31
+ * How far through the window we are *by time*, 0–1. Drawn as a 1px rule
32
+ * across the bar so the fill can be read against its pace: fill ahead of the
33
+ * tick means burning faster than the window refills. Pass `null` when there
34
+ * is no window.
35
+ */
36
+ paceTick?: number | null;
37
+ /** Render the striped "no data" treatment instead of a level. */
38
+ empty?: boolean;
39
+ /** Where the ceiling came from. Defaults to `"vendor"`. */
40
+ provenance?: MeterProvenance;
41
+ /** Bar height in px at the 16px root, emitted as `rem`. Defaults to `4`. */
42
+ height?: number;
43
+ /**
44
+ * The accessible name. A meter is nearly always a usage readout, so that is
45
+ * the default; override it for anything else. When there is no level to
46
+ * report (`empty`, or an unbounded ceiling) the state is appended to it, as
47
+ * in `"Usage: No data"`.
48
+ */
49
+ label?: string;
50
+ }
51
+ /**
52
+ * A quota bar that shows **pace**, not just fill.
53
+ *
54
+ * A bare percentage answers "how much is gone" but not the question that
55
+ * actually matters: *will it last*. 93% used is fine in the last hour of a
56
+ * weekly window and an emergency on the first day. So the meter carries a
57
+ * second mark — how far through the window we are in time — and reads the two
58
+ * together: fill ahead of the tick is burning faster than the window refills.
59
+ *
60
+ * The tick is deliberately quiet: a 1px rule, not a second bar. It annotates
61
+ * the fill and stays ignorable when someone only wants the number.
62
+ *
63
+ * Severity is never invented here — `tone` comes from whoever owns the
64
+ * thresholds. Likewise `provenance`: the bar changes its own texture rather
65
+ * than letting an estimate or a missing denominator look like a measurement.
66
+ *
67
+ * The over-pace pulse stills under `prefers-reduced-motion`; the state stays
68
+ * readable as `data-over-pace`.
69
+ *
70
+ * Static markup — no `"use client"`.
71
+ *
72
+ * @example
73
+ * <Meter percent={72} tone="warn" paceTick={0.5} />
74
+ * @example
75
+ * <Meter percent={0} empty label="Requests this month" />
76
+ * @example
77
+ * <Meter percent={40} provenance="estimated" />
78
+ */
79
+ declare const Meter: React.ForwardRefExoticComponent<MeterProps & React.RefAttributes<HTMLDivElement>>;
80
+ //#endregion
81
+ export { Meter, MeterProps, MeterProvenance, MeterTone };
@@ -0,0 +1,96 @@
1
+ import { cn } from "../lib/cn.js";
2
+ import { toRem } from "./_rem.js";
3
+ import * as React from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/instruments/meter.tsx
6
+ const TONE_CLASSES = {
7
+ ok: "text-ok",
8
+ busy: "text-busy",
9
+ warn: "text-warn",
10
+ danger: "text-danger"
11
+ };
12
+ /** No-data stripes, drawn in the border colour so they read as "not a level". */
13
+ const EMPTY_STRIPES = "repeating-linear-gradient(135deg, var(--cue-border) 0 2px, transparent 2px 6px)";
14
+ /**
15
+ * The hatch over an estimated fill: cut in the page ground rather than a fixed
16
+ * black, so it reads the same way in light themes.
17
+ */
18
+ const ESTIMATED_HATCH = "repeating-linear-gradient(135deg, transparent 0 2px, color-mix(in oklch, var(--cue-bg) 65%, transparent) 2px 4px)";
19
+ /** An unbounded meter fades out instead of ending: there is no end. */
20
+ const UNBOUNDED_WASH = "linear-gradient(to right, color-mix(in oklch, currentColor 45%, transparent), transparent)";
21
+ /** How far past the pace tick the fill must run before the bar calls it out. */
22
+ const OVER_PACE_MARGIN = .1;
23
+ /** Default bar height in px at the 16px root — a rule, not a trough. */
24
+ const DEFAULT_HEIGHT_PX = 4;
25
+ /**
26
+ * A quota bar that shows **pace**, not just fill.
27
+ *
28
+ * A bare percentage answers "how much is gone" but not the question that
29
+ * actually matters: *will it last*. 93% used is fine in the last hour of a
30
+ * weekly window and an emergency on the first day. So the meter carries a
31
+ * second mark — how far through the window we are in time — and reads the two
32
+ * together: fill ahead of the tick is burning faster than the window refills.
33
+ *
34
+ * The tick is deliberately quiet: a 1px rule, not a second bar. It annotates
35
+ * the fill and stays ignorable when someone only wants the number.
36
+ *
37
+ * Severity is never invented here — `tone` comes from whoever owns the
38
+ * thresholds. Likewise `provenance`: the bar changes its own texture rather
39
+ * than letting an estimate or a missing denominator look like a measurement.
40
+ *
41
+ * The over-pace pulse stills under `prefers-reduced-motion`; the state stays
42
+ * readable as `data-over-pace`.
43
+ *
44
+ * Static markup — no `"use client"`.
45
+ *
46
+ * @example
47
+ * <Meter percent={72} tone="warn" paceTick={0.5} />
48
+ * @example
49
+ * <Meter percent={0} empty label="Requests this month" />
50
+ * @example
51
+ * <Meter percent={40} provenance="estimated" />
52
+ */
53
+ const Meter = React.forwardRef(function Meter({ className, percent, tone = "ok", paceTick, empty = false, provenance = "vendor", height = DEFAULT_HEIGHT_PX, label = "Usage", style, ...elementProps }, ref) {
54
+ const unbounded = provenance === "unbounded";
55
+ const pct = Math.min(100, Math.max(0, Number.isFinite(percent) ? percent : 0));
56
+ const hasLevel = !unbounded && !empty;
57
+ const stateText = unbounded ? "Unbounded" : empty ? "No data" : null;
58
+ const showTick = !unbounded && typeof paceTick === "number" && paceTick > .02 && paceTick < .98;
59
+ const overPace = hasLevel && showTick && pct / 100 > paceTick + OVER_PACE_MARGIN;
60
+ const trackImage = unbounded ? UNBOUNDED_WASH : empty ? EMPTY_STRIPES : void 0;
61
+ return /* @__PURE__ */ jsxs("div", {
62
+ ref,
63
+ role: hasLevel ? "meter" : "img",
64
+ "aria-label": stateText === null ? label : `${label}: ${stateText}`,
65
+ "aria-valuemin": hasLevel ? 0 : void 0,
66
+ "aria-valuemax": hasLevel ? 100 : void 0,
67
+ "aria-valuenow": hasLevel ? Math.round(pct) : void 0,
68
+ "data-slot": "meter",
69
+ "data-tone": tone,
70
+ "data-provenance": provenance,
71
+ "data-empty": empty ? "true" : void 0,
72
+ "data-over-pace": overPace ? "true" : void 0,
73
+ className: cn("relative w-full overflow-hidden rounded-full bg-surface-3", TONE_CLASSES[tone], className),
74
+ style: {
75
+ height: toRem(height),
76
+ backgroundImage: trackImage,
77
+ ...style
78
+ },
79
+ ...elementProps,
80
+ children: [hasLevel ? /* @__PURE__ */ jsx("div", {
81
+ "data-slot": "meter-fill",
82
+ className: cn("absolute inset-y-0 left-0 bg-current transition-[width] duration-150 ease-out motion-reduce:transition-none", overPace ? "animate-pulse motion-reduce:animate-none" : null),
83
+ style: {
84
+ width: `${pct}%`,
85
+ backgroundImage: provenance === "estimated" ? ESTIMATED_HATCH : void 0
86
+ }
87
+ }) : null, showTick ? /* @__PURE__ */ jsx("div", {
88
+ "data-slot": "meter-tick",
89
+ "aria-hidden": "true",
90
+ className: "absolute inset-y-0 w-px bg-fg/55",
91
+ style: { left: `${paceTick * 100}%` }
92
+ }) : null]
93
+ });
94
+ });
95
+ //#endregion
96
+ export { Meter };
@@ -0,0 +1,61 @@
1
+ import * as React from "react";
2
+ import { Progress } from "@base-ui/react/progress";
3
+ //#region src/instruments/progress.d.ts
4
+ interface ProgressProps extends Omit<Progress.Root.Props, "className"> {
5
+ /** Extra classes for the frame that holds the header and the track. */
6
+ className?: string;
7
+ /** Extra classes for the track. */
8
+ trackClassName?: string;
9
+ /** Extra classes for the fill. */
10
+ indicatorClassName?: string;
11
+ /**
12
+ * Caption above the bar, and the bar's accessible name: this layer points the
13
+ * `role="progressbar"` at it with `aria-labelledby` **at render**, so the name
14
+ * is in the markup a server sends. Pass one, or an `aria-label` — a root that
15
+ * already carries `aria-label` or `aria-labelledby` keeps the name it was
16
+ * given.
17
+ */
18
+ label?: React.ReactNode;
19
+ /** Show the formatted value opposite the label. Defaults to `false`. */
20
+ showValue?: boolean;
21
+ /** Track height in px at the 16px root, emitted as `rem`. Defaults to `5`. */
22
+ height?: number;
23
+ }
24
+ /**
25
+ * Determinate work, drawn as a filling rule.
26
+ *
27
+ * Wraps Base UI's `Progress`, so `role="progressbar"`, the value formatting and
28
+ * the completion status are the primitive's; this layer adds the console skin:
29
+ * a sunk `surface-3` track, an accent fill and a 120ms linear width transition
30
+ * — linear because a progress bar that eases is lying about its rate.
31
+ *
32
+ * Passing `value={null}` makes it indeterminate: the fill collapses and the
33
+ * track pulses instead, which says "working, size unknown" without inventing a
34
+ * number. The pulse stills under `prefers-reduced-motion`.
35
+ *
36
+ * Use `Meter` instead for a *level* (how full something is); a progress bar is
37
+ * for a *task* (how far along something is).
38
+ *
39
+ * **Named in the markup, not on hydration.** Base UI names the bar from the
40
+ * caption by having `Progress.Label` report its id to the root, and it reports
41
+ * it from a `useIsoLayoutEffect` (`@base-ui/react/utils/useRegisteredLabelId`),
42
+ * which the root keeps in `useState`. A render that runs no effects — SSR
43
+ * before hydration, `renderToStaticMarkup`, a page that never hydrates — emitted
44
+ * the caption with its id and a `role="progressbar"` that pointed at nothing, so
45
+ * the delivered HTML had a progressbar with no accessible name. Both ends are
46
+ * given the same `useId` here instead, so the first render is already correct
47
+ * and Base UI's effect later resolves the label to the id it was handed.
48
+ *
49
+ * Static markup — no `"use client"`. `useId` is the one hook it calls, and it
50
+ * is one a Server Component may call: React's Flight server implements `useId`
51
+ * in its hooks dispatcher, where the hooks a Server Component may not call are
52
+ * `unsupportedHook`.
53
+ *
54
+ * @example
55
+ * <Progress value={40} label="Rendering" showValue />
56
+ * @example
57
+ * <Progress value={null} aria-label="Connecting" />
58
+ */
59
+ declare const Progress$1: React.ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
60
+ //#endregion
61
+ export { Progress$1 as Progress, ProgressProps };
@@ -0,0 +1,79 @@
1
+ import { cn } from "../lib/cn.js";
2
+ import { toRem } from "./_rem.js";
3
+ import * as React from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Progress } from "@base-ui/react/progress";
6
+ //#region src/instruments/progress.tsx
7
+ /** Default track height in px at the 16px root. */
8
+ const DEFAULT_HEIGHT_PX = 5;
9
+ /**
10
+ * Determinate work, drawn as a filling rule.
11
+ *
12
+ * Wraps Base UI's `Progress`, so `role="progressbar"`, the value formatting and
13
+ * the completion status are the primitive's; this layer adds the console skin:
14
+ * a sunk `surface-3` track, an accent fill and a 120ms linear width transition
15
+ * — linear because a progress bar that eases is lying about its rate.
16
+ *
17
+ * Passing `value={null}` makes it indeterminate: the fill collapses and the
18
+ * track pulses instead, which says "working, size unknown" without inventing a
19
+ * number. The pulse stills under `prefers-reduced-motion`.
20
+ *
21
+ * Use `Meter` instead for a *level* (how full something is); a progress bar is
22
+ * for a *task* (how far along something is).
23
+ *
24
+ * **Named in the markup, not on hydration.** Base UI names the bar from the
25
+ * caption by having `Progress.Label` report its id to the root, and it reports
26
+ * it from a `useIsoLayoutEffect` (`@base-ui/react/utils/useRegisteredLabelId`),
27
+ * which the root keeps in `useState`. A render that runs no effects — SSR
28
+ * before hydration, `renderToStaticMarkup`, a page that never hydrates — emitted
29
+ * the caption with its id and a `role="progressbar"` that pointed at nothing, so
30
+ * the delivered HTML had a progressbar with no accessible name. Both ends are
31
+ * given the same `useId` here instead, so the first render is already correct
32
+ * and Base UI's effect later resolves the label to the id it was handed.
33
+ *
34
+ * Static markup — no `"use client"`. `useId` is the one hook it calls, and it
35
+ * is one a Server Component may call: React's Flight server implements `useId`
36
+ * in its hooks dispatcher, where the hooks a Server Component may not call are
37
+ * `unsupportedHook`.
38
+ *
39
+ * @example
40
+ * <Progress value={40} label="Rendering" showValue />
41
+ * @example
42
+ * <Progress value={null} aria-label="Connecting" />
43
+ */
44
+ const Progress$1 = React.forwardRef(function Progress$2({ className, trackClassName, indicatorClassName, label, showValue = false, height = DEFAULT_HEIGHT_PX, ...rootProps }, ref) {
45
+ const hasHeader = label !== void 0 || showValue;
46
+ const captionId = React.useId();
47
+ const namedByCaller = rootProps["aria-label"] !== void 0 || rootProps["aria-labelledby"] !== void 0;
48
+ const namedByCaption = label !== void 0 && !namedByCaller;
49
+ return /* @__PURE__ */ jsxs(Progress.Root, {
50
+ ref,
51
+ "data-slot": "progress",
52
+ "aria-labelledby": namedByCaption ? captionId : void 0,
53
+ className: cn("flex w-full flex-col gap-(--cue-space-2)", className),
54
+ ...rootProps,
55
+ children: [hasHeader ? /* @__PURE__ */ jsxs("div", {
56
+ "data-slot": "progress-header",
57
+ className: "flex items-baseline gap-(--cue-space-3) font-mono text-(length:--cue-text-label)",
58
+ children: [label === void 0 ? null : /* @__PURE__ */ jsx(Progress.Label, {
59
+ id: namedByCaption ? captionId : void 0,
60
+ "data-slot": "progress-label",
61
+ className: "truncate tracking-[0.15em] text-fg-subtle uppercase",
62
+ children: label
63
+ }), showValue ? /* @__PURE__ */ jsx(Progress.Value, {
64
+ "data-slot": "progress-value",
65
+ className: "ml-auto shrink-0 tabular-nums text-fg-muted"
66
+ }) : null]
67
+ }) : null, /* @__PURE__ */ jsx(Progress.Track, {
68
+ "data-slot": "progress-track",
69
+ className: cn("relative w-full overflow-hidden rounded-full bg-surface-3 data-[indeterminate]:animate-pulse motion-reduce:animate-none", trackClassName),
70
+ style: { height: toRem(height) },
71
+ children: /* @__PURE__ */ jsx(Progress.Indicator, {
72
+ "data-slot": "progress-indicator",
73
+ className: cn("bg-accent transition-[width] duration-[120ms] ease-linear motion-reduce:transition-none", indicatorClassName)
74
+ })
75
+ })]
76
+ });
77
+ });
78
+ //#endregion
79
+ export { Progress$1 as Progress };
@@ -0,0 +1,66 @@
1
+ import * as React from "react";
2
+ //#region src/instruments/seam-grid.d.ts
3
+ /**
4
+ * The surface a seam cell can be filled with.
5
+ *
6
+ * Anything from the elevation ladder works; what matters is that the *cell* is
7
+ * filled and the *container* is not, because the container's colour is what
8
+ * shows through the gap and becomes the seam.
9
+ */
10
+ type SeamGround = "bg" | "sunken" | "surface-1" | "surface-2" | "surface-3";
11
+ interface SeamGridProps extends React.ComponentPropsWithoutRef<"div"> {
12
+ /** Fixed column count. Ignored when {@link SeamGridProps.min} is set. */
13
+ columns?: number;
14
+ /**
15
+ * Minimum cell width in px at the 16px root. Switches the track to
16
+ * `auto-fit`, so the grid reflows without a media query.
17
+ */
18
+ min?: number;
19
+ /** Draw a hairline rim around the whole grid as well as between the cells. */
20
+ bordered?: boolean;
21
+ }
22
+ /**
23
+ * The seam idiom as a component: cells separated by hairlines, no borders.
24
+ *
25
+ * A grid whose `gap` is 1px over the border colour. Every cell paints its own
26
+ * ground, so the only place the container shows through is the gap — which
27
+ * reads as a hairline between neighbours, aligns perfectly at every corner, and
28
+ * never doubles up. This is snuffle's signature primitive; it was inlined at
29
+ * eighteen call sites before it was a component.
30
+ *
31
+ * Static markup — no `"use client"`.
32
+ *
33
+ * @example
34
+ * <SeamGrid columns={3}>
35
+ * <SeamCell>001</SeamCell>
36
+ * <SeamCell>002</SeamCell>
37
+ * <SeamCell>003</SeamCell>
38
+ * </SeamGrid>
39
+ * @example
40
+ * // Reflowing, no media query:
41
+ * <SeamGrid min={180} bordered>{cells}</SeamGrid>
42
+ */
43
+ declare const SeamGrid: React.ForwardRefExoticComponent<SeamGridProps & React.RefAttributes<HTMLDivElement>>;
44
+ interface SeamCellProps extends React.ComponentPropsWithoutRef<"div"> {
45
+ /** Which rung of the elevation ladder to fill with. Defaults to `"surface-1"`. */
46
+ ground?: SeamGround;
47
+ /** Add the hover feedback of a clickable cell. Put the control inside it. */
48
+ interactive?: boolean;
49
+ /** Drop the built-in padding — for a cell that holds a chart or a canvas. */
50
+ flush?: boolean;
51
+ }
52
+ /**
53
+ * One filled cell of a {@link SeamGrid} — or of the Phase 1 `SeamList`.
54
+ *
55
+ * The fill is the load-bearing part: an unfilled cell lets the container's
56
+ * border colour through everywhere, not just at the gap, and the seam
57
+ * disappears into a solid block.
58
+ *
59
+ * Static markup — no `"use client"`.
60
+ *
61
+ * @example
62
+ * <SeamCell ground="sunken" flush><Sparkline values={series} /></SeamCell>
63
+ */
64
+ declare const SeamCell: React.ForwardRefExoticComponent<SeamCellProps & React.RefAttributes<HTMLDivElement>>;
65
+ //#endregion
66
+ export { SeamCell, SeamCellProps, SeamGrid, SeamGridProps, SeamGround };