@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,108 @@
1
+ import { cn } from "../lib/cn.js";
2
+ import { AGENT_ROOT_COLOR, agentColor } from "./agent-color.js";
3
+ import * as React from "react";
4
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/chat/message.tsx
6
+ /**
7
+ * The bubble's asymmetric radii — `10 10 2 10` for the user, mirrored for the
8
+ * agent.
9
+ *
10
+ * The tight corner is the tail, and it points at whoever is speaking: bottom
11
+ * right for the right-aligned user turn, bottom left for the agent's. Written
12
+ * against the radius tokens rather than literal pixels, so the whole family
13
+ * tightens with `--cue-radius-scale` at ultra-compact density instead of
14
+ * staying a fixed 10px blob next to 2px controls.
15
+ */
16
+ const ROLE_RADII = {
17
+ user: "[border-radius:var(--radius-overlay)_var(--radius-overlay)_var(--radius-control)_var(--radius-overlay)]",
18
+ agent: "[border-radius:var(--radius-overlay)_var(--radius-overlay)_var(--radius-overlay)_var(--radius-control)]",
19
+ system: "rounded-(--radius-control)"
20
+ };
21
+ /**
22
+ * Fill per role.
23
+ *
24
+ * The user's own turn is the one place in this system a solid accent fill is
25
+ * right: it is the reader's own voice, it appears at most every other row, and
26
+ * `--cue-accent-fg` exists precisely as "legible ink on the accent" (the same
27
+ * pair `Button` uses for `primary`). Agent turns stay on the flat surface
28
+ * ladder with a hairline, and a system notice is chromeless — it is chrome, not
29
+ * conversation.
30
+ */
31
+ const ROLE_SURFACES = {
32
+ user: "ms-auto border border-transparent bg-accent text-accent-fg",
33
+ agent: "me-auto border border-border bg-surface-1 text-fg",
34
+ system: "mx-auto border border-dashed border-border bg-transparent text-fg-subtle"
35
+ };
36
+ /** How wide a bubble may get before the line length stops being readable. */
37
+ const MEASURE = "max-w-[min(44rem,90%)]";
38
+ /**
39
+ * One turn in a conversation.
40
+ *
41
+ * Content is rendered as React nodes, verbatim: there is no markdown or HTML
42
+ * path here on purpose. Model output is untrusted text, and a component that
43
+ * quietly parsed it would make every consumer of this library one prompt away
44
+ * from an injection. Callers that want rich text pass their own renderer as
45
+ * children and own that decision.
46
+ *
47
+ * The author line is mono micro and inked in the agent's own colour, so a
48
+ * multi-agent thread is scannable by hue before it is readable by name.
49
+ *
50
+ * Static markup — no `"use client"`; a transcript renders on the server.
51
+ *
52
+ * @example
53
+ * <Message agent="researcher" timestamp="14:02">Found three references.</Message>
54
+ * @example
55
+ * <Message role="user">Patch universe 3.</Message>
56
+ */
57
+ const Message = React.forwardRef(function Message({ className, role = "agent", agent, rootAgent, author, timestamp, pending = false, footer, children, style, ...elementProps }, ref) {
58
+ const color = agent === void 0 ? AGENT_ROOT_COLOR : agentColor(agent, { root: rootAgent });
59
+ const name = author ?? (role === "user" ? "You" : agent);
60
+ const hasHeader = name !== void 0 || timestamp !== void 0;
61
+ return /* @__PURE__ */ jsxs("div", {
62
+ ref,
63
+ "data-slot": "message",
64
+ "data-role": role,
65
+ "data-pending": pending ? "" : void 0,
66
+ className: cn("flex min-w-0 flex-col gap-(--cue-space-2) px-(--cue-space-4) py-(--cue-space-3)", MEASURE, ROLE_SURFACES[role], ROLE_RADII[role], className),
67
+ style: {
68
+ "--agent-color": color,
69
+ ...style
70
+ },
71
+ ...elementProps,
72
+ children: [
73
+ hasHeader ? /* @__PURE__ */ jsxs("div", {
74
+ "data-slot": "message-header",
75
+ className: "flex min-w-0 items-baseline justify-between gap-(--cue-space-3) font-mono text-(length:--cue-text-micro) tracking-[0.15em] uppercase",
76
+ children: [name === void 0 ? null : /* @__PURE__ */ jsx("span", {
77
+ "data-slot": "message-author",
78
+ className: cn("min-w-0 truncate", role === "user" ? "text-accent-fg opacity-70" : "text-(--agent-color)"),
79
+ children: name
80
+ }), timestamp === void 0 ? null : /* @__PURE__ */ jsx("span", {
81
+ "data-slot": "message-timestamp",
82
+ className: cn("shrink-0 tabular-nums", role === "user" ? "text-accent-fg opacity-60" : "text-fg-subtle"),
83
+ children: timestamp
84
+ })]
85
+ }) : null,
86
+ /* @__PURE__ */ jsxs("div", {
87
+ "data-slot": "message-body",
88
+ className: "relative min-w-0 text-(length:--cue-text-body) leading-(--cue-leading-ui) break-words whitespace-pre-wrap",
89
+ children: [children, pending ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
90
+ "data-slot": "message-caret",
91
+ "aria-hidden": "true",
92
+ className: "ms-[0.15em] animate-pulse motion-reduce:animate-none",
93
+ children: "▍"
94
+ }), /* @__PURE__ */ jsx("span", {
95
+ className: "sr-only",
96
+ children: "still writing"
97
+ })] }) : null]
98
+ }),
99
+ footer === void 0 ? null : /* @__PURE__ */ jsx("div", {
100
+ "data-slot": "message-footer",
101
+ className: "flex min-w-0 flex-wrap items-center gap-(--cue-space-2)",
102
+ children: footer
103
+ })
104
+ ]
105
+ });
106
+ });
107
+ //#endregion
108
+ export { Message };
@@ -0,0 +1,54 @@
1
+ import { cn } from "../lib/cn.js";
2
+ //#region src/chrome/_band.ts
3
+ /**
4
+ * The rule a band draws at its top edge.
5
+ *
6
+ * Spelt as `border-t-(length:--cue-band-rule)` and not as
7
+ * `border-t-(--cue-band-rule)`. Both compile. The second sets
8
+ * `border-top-color`, which would give every band a 1px rule in the token's own
9
+ * text as a colour — a rule that is always drawn and never right. The `length:`
10
+ * hint is what makes Tailwind emit `border-top-width`. It does not carry
11
+ * `border-border` — the element that spends this adds that itself, so both
12
+ * `Band` and `Footer` say in their own class list what colours their rule,
13
+ * rather than one of the two inheriting it silently from the other.
14
+ */
15
+ const RULE = "border-t-(length:--cue-band-rule)";
16
+ /**
17
+ * The band recipe as class strings, for the one other element in this library
18
+ * that is a band and cannot be a `<section>`.
19
+ *
20
+ * `Footer` is the `contentinfo` landmark: it has to render a `<footer>`, and
21
+ * this library has exactly one polymorphic escape hatch (`ThemeProvider`'s
22
+ * `asChild`) whose own documentation calls it the one place. So rather than
23
+ * give `Band` a second one, or let `Footer` keep a second copy of the recipe
24
+ * — which is the thing spec Decision 4 refuses by name — the strings live here
25
+ * and both elements spend them.
26
+ *
27
+ * It lives in an underscore-prefixed chassis file rather than in `band.tsx` on
28
+ * purpose: `packages/docgen`'s token scanner only follows a component's imports
29
+ * into files whose basename starts with `_`, and `Footer` spends this recipe
30
+ * without rendering `<Band>` itself. Keeping the strings on `band.tsx` left
31
+ * `footer.json`'s published `tokensUsed` silently missing the two tokens this
32
+ * function spends — the rhythm and the rule — because the scanner had no reason
33
+ * to open a public component file it was not asked to document. This file is
34
+ * that reason.
35
+ *
36
+ * **Exactly those two names live here, and that is the second half of the same
37
+ * mechanism.** The scanner reads a chassis file whole; it does not know which
38
+ * branch a call takes, so every `--cue-*` written in this file is published as
39
+ * a token *both* elements render with. `Footer` calls this with the literal
40
+ * `"rule"` and types its own `width` as `ContainerWidth`, so `Band`'s other two
41
+ * spends — `bg-(--cue-band-ground)` for `separation="ground"` and
42
+ * `max-w-(--cue-measure-prose)` for `width="prose"` — are unreachable from a
43
+ * `<footer>` and are written in `band.tsx`, beside the prop that selects them.
44
+ * Moving them here would make `footer.json` claim two tokens the component
45
+ * cannot paint, which is the same defect as the omission this file was written
46
+ * to fix, pointing the other way.
47
+ *
48
+ * It is not exported from the package. A caller who wants a band uses `Band`.
49
+ */
50
+ function bandClasses(separation) {
51
+ return cn("w-full py-(--cue-band-y)", separation === "rule" ? RULE : null);
52
+ }
53
+ //#endregion
54
+ export { bandClasses };
@@ -0,0 +1,59 @@
1
+ //#region src/chrome/_drag.ts
2
+ /**
3
+ * The desktop drag contract, in one place because two bars now emit it.
4
+ *
5
+ * A window has exactly one way to be dragged by its chrome, and this library
6
+ * ships into two shells that disagree about what that way is:
7
+ *
8
+ * - **Tauri** listens for `mousedown` and walks the event's `composedPath()`,
9
+ * looking for `data-tauri-drag-region`. The bare form of the attribute means
10
+ * *this element and only this element* — the innermost element under the
11
+ * cursor has to be the attributed one — so a container carrying it does not
12
+ * hand the behaviour to its children. It also excludes anything that reads as
13
+ * a control (`a`, `button`, `input`, `select`, `textarea`, `label`,
14
+ * `summary`, `[contenteditable]`, `[tabindex]`, and the button/link/menuitem
15
+ * ARIA roles) for free, without being asked.
16
+ * - **Electron and Chromium** read the `app-region` CSS property and build a
17
+ * *geometric* hit-test mask from it, below the DOM's pointer-event model
18
+ * entirely: every painted pixel of a `drag` box drags, minus the pixels a
19
+ * `no-drag` box covers. It knows nothing about ancestry and excludes nothing
20
+ * on its own — every interactive descendant has to opt out by name.
21
+ *
22
+ * The two mechanisms fail in opposite directions, so the contract a shared
23
+ * component can honour is the union of both: **attribute every structural
24
+ * surface, carve every interactive cluster.** A bar that only attributes its
25
+ * root is undraggable in Tauri wherever a cell covers the root; a bar that only
26
+ * drags and never carves is a bar whose buttons move the window in Electron.
27
+ *
28
+ * Both spellings of the CSS property are emitted. `app-region` is the current
29
+ * canonical name in Electron's own documentation; `-webkit-app-region` is the
30
+ * legacy alias older Chromium builds still want, and neither shell minds
31
+ * reading a property it already understands twice.
32
+ *
33
+ * These are class strings rather than a `<div>` of their own on purpose: the
34
+ * surfaces that have to carry them — {@link TitleBar}'s root,
35
+ * `AppShell.Bar`'s root, its brand cell, its rest cell — already exist for
36
+ * layout reasons, and wrapping each one in a drag element would put a box in
37
+ * the flex arithmetic that is there for nothing but a CSS property.
38
+ */
39
+ /**
40
+ * Make a painted surface a window drag handle.
41
+ *
42
+ * Pair it with a bare `data-tauri-drag-region` attribute on the same element —
43
+ * the CSS half is Electron's and the attribute half is Tauri's, and an element
44
+ * with only one of them is draggable in only one shell.
45
+ */
46
+ const DRAG_CLASSES = "[app-region:drag] [-webkit-app-region:drag]";
47
+ /**
48
+ * Carve an interactive cluster back out of the surrounding drag region.
49
+ *
50
+ * Required for Electron, where a button that merely overlaps a drag box stops
51
+ * receiving clicks at all; harmless in Tauri, which had already excluded a
52
+ * real `<button>` on its own. Anything custom enough that Tauri's tag/role
53
+ * heuristic would miss it — an icon "button" built from a `<div>`, a bespoke
54
+ * menu trigger — additionally wants `data-tauri-drag-region="false"`, which is
55
+ * the caller's to add on the control itself.
56
+ */
57
+ const NO_DRAG_CLASSES = "[app-region:no-drag] [-webkit-app-region:no-drag]";
58
+ //#endregion
59
+ export { DRAG_CLASSES, NO_DRAG_CLASSES };
@@ -0,0 +1,45 @@
1
+ import "react";
2
+ //#region src/chrome/_edge-scroller.d.ts
3
+ /**
4
+ * The library's one answer to "this strip is wider than the space it has".
5
+ *
6
+ * A bar full of controls has three possible behaviours when it runs out of
7
+ * room: wrap, scroll, or move the surplus into a menu. This system picks
8
+ * **scroll**, once, and every bar that can overflow uses this module.
9
+ *
10
+ * - **Wrapping is out** because every bar here is one rung of the chrome
11
+ * ladder tall (`--cue-chrome-toolbar`) and sits in a layout that has already
12
+ * subtracted that height — `AppShell` gives the toolbar `shrink-0` beside a
13
+ * `min-h-0` scroller. A bar that silently becomes two rows tall steals the
14
+ * work area's height, and the same argument applies to a `SegmentedControl`
15
+ * in a page header's actions slot.
16
+ * - **A "more" menu is out** because it cannot be built from the children a
17
+ * bar actually takes. `Toolbar` accepts arbitrary nodes — buttons, groups,
18
+ * separators, a `Select` — and there is no honest conversion from one of
19
+ * those into a menu item; it would need a parallel `items` data model, a
20
+ * per-item measuring pass on every resize, and it would lift the surplus
21
+ * controls out of Base UI's roving-focus group, so the same button would be
22
+ * reachable by arrow key at one width and by a popover at another.
23
+ * - **Scrolling is what the library already does** — `ScrollableTabsList` has
24
+ * shipped this affordance since the tab strip was written, and its geometry
25
+ * was factored out into `./_tabs-scroll` for exactly this reuse. Nothing is
26
+ * hidden, nothing is re-parented, the roving-focus group stays intact, and
27
+ * the arrow keys still walk the whole bar because a focused control is
28
+ * scrolled into view by the browser.
29
+ *
30
+ * The affordance is two things and needs both: {@link useEdgeScroll} produces
31
+ * the fade mask that softens the cut, and {@link EdgeChevrons} draws the
32
+ * buttons that are the visible half — what sits at an overflowing edge is
33
+ * usually the gap *between* two controls, and fading empty space produces
34
+ * nothing anyone can see.
35
+ */
36
+ /**
37
+ * What a bar does when its contents are wider than the space it has.
38
+ *
39
+ * One vocabulary, shared by every bar that can overflow, because there is one
40
+ * behaviour: `"scroll"` is the affordance this module implements, `"clip"` is
41
+ * the escape hatch for a bar already inside something that scrolls.
42
+ */
43
+ type BarOverflow = "scroll" | "clip";
44
+ //#endregion
45
+ export { BarOverflow };
@@ -0,0 +1,149 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { computeScrollEdges, edgeFadeMask } from "./_tabs-scroll.js";
4
+ import { useComposedRefs } from "../lib/compose.js";
5
+ import { ChevronLeftGlyph, ChevronRightGlyph } from "./_glyphs.js";
6
+ import * as React from "react";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/chrome/_edge-scroller.tsx
9
+ /** Page the strip by most of a screenful, keeping a sliver of context. */
10
+ const NUDGE_FRACTION = .7;
11
+ /**
12
+ * What an overflowing element wears: the scroll axis, the fade, and no
13
+ * scrollbar.
14
+ *
15
+ * A literal rather than a computed string, because Tailwind scans source text —
16
+ * and the mask travels as a custom property so the prefixed and unprefixed
17
+ * properties are written once here instead of twice per render.
18
+ *
19
+ * The property is always set, `none` when nothing overflows, and that word is
20
+ * load-bearing: custom properties **inherit**. Leaving it unset on a strip that
21
+ * fits does not mean "no mask", it means "whatever an ancestor said" — and a
22
+ * `SegmentedControl` inside an overflowing `Toolbar` then wears the bar's fade
23
+ * and loses its own last segment to it. Measured in a real browser at 320px
24
+ * before it was written down. `none` is the initial value either way, so the
25
+ * common case still creates no compositing layer.
26
+ */
27
+ const EDGE_SCROLLER_CLASSES = "overflow-x-auto [mask-image:var(--cue-edge-fade)] [-webkit-mask-image:var(--cue-edge-fade)] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden";
28
+ /**
29
+ * Track which edges of a horizontal scroller still hide content, and hand back
30
+ * the mask and the pager that go with it.
31
+ *
32
+ * @param enabled False to keep the hook mounted but inert — a component whose
33
+ * overflow behaviour is switched off must still call the same hooks in the same
34
+ * order.
35
+ */
36
+ function useEdgeScroll(enabled = true) {
37
+ const ref = React.useRef(null);
38
+ const [edges, setEdges] = React.useState({
39
+ start: false,
40
+ end: false
41
+ });
42
+ const sync = React.useCallback(() => {
43
+ const el = ref.current;
44
+ if (el === null) return;
45
+ setEdges(computeScrollEdges(el.scrollLeft, el.scrollWidth, el.clientWidth));
46
+ }, []);
47
+ React.useEffect(() => {
48
+ if (!enabled) return;
49
+ const el = ref.current;
50
+ if (el === null) return;
51
+ sync();
52
+ el.addEventListener("scroll", sync, { passive: true });
53
+ const observer = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(() => sync());
54
+ observer?.observe(el);
55
+ let observedChildren = /* @__PURE__ */ new Set();
56
+ const syncObservedChildren = () => {
57
+ const nextChildren = new Set(el.children);
58
+ for (const child of observedChildren) if (!nextChildren.has(child)) observer?.unobserve(child);
59
+ for (const child of nextChildren) if (!observedChildren.has(child)) observer?.observe(child);
60
+ observedChildren = nextChildren;
61
+ sync();
62
+ };
63
+ syncObservedChildren();
64
+ const mutations = typeof MutationObserver === "undefined" ? null : new MutationObserver(() => syncObservedChildren());
65
+ mutations?.observe(el, { childList: true });
66
+ return () => {
67
+ el.removeEventListener("scroll", sync);
68
+ mutations?.disconnect();
69
+ observer?.disconnect();
70
+ };
71
+ }, [enabled, sync]);
72
+ const nudge = React.useCallback((direction) => {
73
+ const el = ref.current;
74
+ el?.scrollBy?.({
75
+ left: direction * el.clientWidth * NUDGE_FRACTION,
76
+ behavior: "smooth"
77
+ });
78
+ }, []);
79
+ const mask = enabled ? edgeFadeMask(edges) : void 0;
80
+ return {
81
+ ref,
82
+ edges: enabled ? edges : {
83
+ start: false,
84
+ end: false
85
+ },
86
+ style: enabled ? { "--cue-edge-fade": mask ?? "none" } : void 0,
87
+ nudge
88
+ };
89
+ }
90
+ /**
91
+ * The pager buttons over an overflowing strip, drawn only for the edges that
92
+ * actually hide something.
93
+ *
94
+ * Absolutely positioned, so the element they sit over must be inside a
95
+ * `relative` frame.
96
+ */
97
+ function EdgeChevrons({ edges, onNudge, previousLabel, nextLabel, className }) {
98
+ const base = "absolute inset-y-0 z-10 flex w-(--cue-space-5) cursor-pointer items-center justify-center text-fg-muted outline-none hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent";
99
+ return /* @__PURE__ */ jsxs(Fragment, { children: [edges.start ? /* @__PURE__ */ jsx("button", {
100
+ type: "button",
101
+ "data-slot": "edge-scroll-previous",
102
+ "aria-label": previousLabel,
103
+ onClick: () => onNudge(-1),
104
+ className: cn(base, "left-0", className),
105
+ children: /* @__PURE__ */ jsx(ChevronLeftGlyph, { className: "size-icon-sm" })
106
+ }) : null, edges.end ? /* @__PURE__ */ jsx("button", {
107
+ type: "button",
108
+ "data-slot": "edge-scroll-next",
109
+ "aria-label": nextLabel,
110
+ onClick: () => onNudge(1),
111
+ className: cn(base, "right-0", className),
112
+ children: /* @__PURE__ */ jsx(ChevronRightGlyph, { className: "size-icon-sm" })
113
+ }) : null] });
114
+ }
115
+ /**
116
+ * A `<nav>` that scrolls its links, wrapped in the frame the chevrons need.
117
+ *
118
+ * A component rather than the hook that `Toolbar` and `SegmentedControl` use
119
+ * directly, and for one specific reason: `AppBar` has to be renderable from a
120
+ * **server component** — it is a site header, and the site header is where a
121
+ * framework reads its data — so `app-bar.tsx` carries no `"use client"`
122
+ * directive and cannot call a hook. The client boundary is here instead, around
123
+ * the one part of a bar that has state.
124
+ */
125
+ const EdgeScrollNav = React.forwardRef(function EdgeScrollNav({ className, frameClassName, scrolls = true, previousLabel, nextLabel, style, ...elementProps }, ref) {
126
+ const scroll = useEdgeScroll(scrolls);
127
+ const navRef = useComposedRefs(ref, scroll.ref);
128
+ return /* @__PURE__ */ jsxs("div", {
129
+ "data-slot": "app-bar-nav-frame",
130
+ className: cn("relative flex", frameClassName),
131
+ children: [/* @__PURE__ */ jsx("nav", {
132
+ ref: navRef,
133
+ className: cn(scrolls ? EDGE_SCROLLER_CLASSES : null, className),
134
+ ...elementProps,
135
+ style: {
136
+ ...style,
137
+ ...scroll.style
138
+ }
139
+ }), /* @__PURE__ */ jsx(EdgeChevrons, {
140
+ edges: scroll.edges,
141
+ onNudge: scroll.nudge,
142
+ previousLabel,
143
+ nextLabel,
144
+ className: "bg-surface-1"
145
+ })]
146
+ });
147
+ });
148
+ //#endregion
149
+ export { EDGE_SCROLLER_CLASSES, EdgeChevrons, EdgeScrollNav, useEdgeScroll };
@@ -0,0 +1,119 @@
1
+ import "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ //#region src/chrome/_glyphs.tsx
4
+ /**
5
+ * Shared chrome glyphs.
6
+ *
7
+ * Drawn inline rather than pulled from `lucide-react` for the same reason as
8
+ * `overlays/_glyphs.tsx`: a disclosure triangle and a pair of chevrons should
9
+ * not put an icon dependency on the render path of every collapsible section,
10
+ * and hand-set strokes stay hairline-thin at the 8–12px sizes console density
11
+ * asks for. `currentColor` everywhere — the tone comes from the parent.
12
+ *
13
+ * @internal Not part of the public API.
14
+ */
15
+ /** A right-pointing chevron. Rotate it 90° to point down. */
16
+ function ChevronRightGlyph(props) {
17
+ return /* @__PURE__ */ jsx("svg", {
18
+ viewBox: "0 0 16 16",
19
+ fill: "none",
20
+ stroke: "currentColor",
21
+ strokeWidth: "2",
22
+ strokeLinecap: "round",
23
+ strokeLinejoin: "round",
24
+ "aria-hidden": "true",
25
+ ...props,
26
+ children: /* @__PURE__ */ jsx("path", { d: "m6 3 5 5-5 5" })
27
+ });
28
+ }
29
+ /** A left-pointing chevron. */
30
+ function ChevronLeftGlyph(props) {
31
+ return /* @__PURE__ */ jsx("svg", {
32
+ viewBox: "0 0 16 16",
33
+ fill: "none",
34
+ stroke: "currentColor",
35
+ strokeWidth: "2",
36
+ strokeLinecap: "round",
37
+ strokeLinejoin: "round",
38
+ "aria-hidden": "true",
39
+ ...props,
40
+ children: /* @__PURE__ */ jsx("path", { d: "m10 3-5 5 5 5" })
41
+ });
42
+ }
43
+ /** A solid down caret — the "this opens a panel" mark on a navigation trigger. */
44
+ function CaretDownGlyph(props) {
45
+ return /* @__PURE__ */ jsx("svg", {
46
+ viewBox: "0 0 16 16",
47
+ fill: "currentColor",
48
+ "aria-hidden": "true",
49
+ ...props,
50
+ children: /* @__PURE__ */ jsx("path", { d: "M11.5 6.5h-7L8 11z" })
51
+ });
52
+ }
53
+ /** An open eye: the node is drawn normally. */
54
+ function EyeGlyph(props) {
55
+ return /* @__PURE__ */ jsxs("svg", {
56
+ viewBox: "0 0 16 16",
57
+ fill: "none",
58
+ stroke: "currentColor",
59
+ strokeWidth: "1.5",
60
+ strokeLinecap: "round",
61
+ strokeLinejoin: "round",
62
+ "aria-hidden": "true",
63
+ ...props,
64
+ children: [/* @__PURE__ */ jsx("path", { d: "M1.5 8S4 3.5 8 3.5 14.5 8 14.5 8 12 12.5 8 12.5 1.5 8 1.5 8Z" }), /* @__PURE__ */ jsx("circle", {
65
+ cx: "8",
66
+ cy: "8",
67
+ r: "2"
68
+ })]
69
+ });
70
+ }
71
+ /** A dashed outline: the node is drawn, but ghosted and out of the way. */
72
+ function GhostGlyph(props) {
73
+ return /* @__PURE__ */ jsx("svg", {
74
+ viewBox: "0 0 16 16",
75
+ fill: "none",
76
+ stroke: "currentColor",
77
+ strokeWidth: "1.5",
78
+ strokeLinecap: "round",
79
+ strokeLinejoin: "round",
80
+ strokeDasharray: "2 2",
81
+ "aria-hidden": "true",
82
+ ...props,
83
+ children: /* @__PURE__ */ jsx("path", { d: "M4 13V6.5a4 4 0 0 1 8 0V13l-2-1.25L8 13l-2-1.25z" })
84
+ });
85
+ }
86
+ /** The eye with a stroke through it: the node is not drawn at all. */
87
+ function EyeOffGlyph(props) {
88
+ return /* @__PURE__ */ jsxs("svg", {
89
+ viewBox: "0 0 16 16",
90
+ fill: "none",
91
+ stroke: "currentColor",
92
+ strokeWidth: "1.5",
93
+ strokeLinecap: "round",
94
+ strokeLinejoin: "round",
95
+ "aria-hidden": "true",
96
+ ...props,
97
+ children: [/* @__PURE__ */ jsx("path", { d: "M6.2 4A6.5 6.5 0 0 1 8 3.5C12 3.5 14.5 8 14.5 8a12 12 0 0 1-2.3 2.7M9.8 12a6.5 6.5 0 0 1-1.8.5C4 12.5 1.5 8 1.5 8A12 12 0 0 1 4.4 4.8" }), /* @__PURE__ */ jsx("path", { d: "m2.5 2.5 11 11" })]
98
+ });
99
+ }
100
+ /**
101
+ * Three stacked strokes — the navigation trigger's mark.
102
+ *
103
+ * Only ever drawn below the shell's one breakpoint, where the navigation column
104
+ * has become a drawer and the bar needs something to open it with.
105
+ */
106
+ function MenuGlyph(props) {
107
+ return /* @__PURE__ */ jsx("svg", {
108
+ viewBox: "0 0 16 16",
109
+ fill: "none",
110
+ stroke: "currentColor",
111
+ strokeWidth: "1.75",
112
+ strokeLinecap: "round",
113
+ "aria-hidden": "true",
114
+ ...props,
115
+ children: /* @__PURE__ */ jsx("path", { d: "M2.5 4h11M2.5 8h11M2.5 12h11" })
116
+ });
117
+ }
118
+ //#endregion
119
+ export { CaretDownGlyph, ChevronLeftGlyph, ChevronRightGlyph, EyeGlyph, EyeOffGlyph, GhostGlyph, MenuGlyph };
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { statusBarItemClasses } from "./_status-bar.js";
4
+ import * as React from "react";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { useRender } from "@base-ui/react/use-render";
7
+ //#region src/chrome/_status-bar-item.tsx
8
+ /**
9
+ * The elements for which `disabled` is a real HTML attribute.
10
+ *
11
+ * Everything else — an anchor above all — has to be told it is inert some other
12
+ * way. Setting `disabled` on an `<a>` produces a stray attribute the parser
13
+ * keeps and nothing reads: not a validity error, but not a disabled link
14
+ * either, because there is no such thing.
15
+ */
16
+ const DISABLEABLE_TAGS = /* @__PURE__ */ new Set([
17
+ "button",
18
+ "input",
19
+ "select",
20
+ "textarea",
21
+ "fieldset",
22
+ "optgroup"
23
+ ]);
24
+ /**
25
+ * Whether `disabled` can be handed to whatever this renders as.
26
+ *
27
+ * A `render` that is a component rather than an intrinsic tag decides for
28
+ * itself — Base UI's own triggers take a `disabled` prop, and refusing to pass
29
+ * it would break the composition this prop exists for — so only a string tag
30
+ * outside the set above is refused.
31
+ */
32
+ function takesDisabledAttribute(render) {
33
+ if (render === void 0) return true;
34
+ if (!React.isValidElement(render)) return true;
35
+ return typeof render.type !== "string" || DISABLEABLE_TAGS.has(render.type);
36
+ }
37
+ /**
38
+ * A status-bar item that is a real control: a `<button>`, or whatever `render`
39
+ * replaces it with.
40
+ *
41
+ * `type="button"` is supplied only when this renders its own `<button>`. A
42
+ * `render={<a href="…" />}` must not be handed a `type`, which on an anchor is
43
+ * a MIME hint and not a submit-behaviour switch — the same rule
44
+ * {@link IconButton} follows, and for the same reason.
45
+ *
46
+ * `disabled` is honoured on every interactive shape, by two routes. The
47
+ * attribute itself goes only where it means something ({@link DISABLEABLE_TAGS},
48
+ * plus any component `render`, which takes its own `disabled` prop); the state
49
+ * is stated everywhere with `aria-disabled` and `data-disabled`, which is what
50
+ * an anchor gets instead. `data-disabled` is not decoration — it is what greys
51
+ * the item out and lifts it out of the pointer's reach in `_status-bar.ts`,
52
+ * since `:disabled` never matches an `<a>`. The gap this closes was a
53
+ * `render={<button/>} disabled` that shipped enabled, clickable and undimmed.
54
+ */
55
+ const StatusBarInteractiveItem = React.forwardRef(function StatusBarInteractiveItem({ tone, prominence, className, push, icon: Icon, render, disabled, children, elementProps }, ref) {
56
+ const tagProps = {
57
+ ...render === void 0 ? { type: "button" } : {},
58
+ ...disabled === true && takesDisabledAttribute(render) ? { disabled: true } : {},
59
+ ...disabled === true ? {
60
+ "aria-disabled": true,
61
+ "data-disabled": ""
62
+ } : {}
63
+ };
64
+ return useRender({
65
+ render,
66
+ ref,
67
+ defaultTagName: "button",
68
+ props: {
69
+ "data-slot": "status-bar-item",
70
+ ...tagProps,
71
+ ...elementProps,
72
+ className: cn(statusBarItemClasses({
73
+ tone,
74
+ interactive: true,
75
+ prominence
76
+ }), push ? "ml-auto" : void 0, className),
77
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [Icon === void 0 ? null : /* @__PURE__ */ jsx(Icon, {
78
+ "aria-hidden": "true",
79
+ className: "size-icon-sm shrink-0"
80
+ }), children] })
81
+ }
82
+ });
83
+ });
84
+ //#endregion
85
+ export { StatusBarInteractiveItem };
@@ -0,0 +1,15 @@
1
+ import "./status-bar.js";
2
+ //#region src/chrome/_status-bar.d.ts
3
+ /**
4
+ * How loudly a status-bar item states itself.
5
+ *
6
+ * `quiet` is a reading — tone-coloured ink on the bar's own ground, which is
7
+ * what a status bar is for. `filled` is a chip: a full-height tone wash behind
8
+ * tone ink, for the handful of states VS Code reserves its coloured categories
9
+ * for (a warning, an error, the remote you are attached to). It is loud on
10
+ * purpose and it is meant to be rare; a bar of five filled items is a bar
11
+ * nobody reads.
12
+ */
13
+ type StatusBarProminence = "quiet" | "filled";
14
+ //#endregion
15
+ export { StatusBarProminence };