@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,5 @@
1
+ //#region src/instruments/_ledger.ts
2
+ /** `headingLevel` as a tag name, so the outline is real elements, not roles. */
3
+ const headingTag = (level) => level === 2 ? "h2" : level === 3 ? "h3" : "h4";
4
+ //#endregion
5
+ export { headingTag };
@@ -0,0 +1,56 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ //#region src/instruments/_motion.ts
4
+ /**
5
+ * The JS half of the reduced-motion contract.
6
+ *
7
+ * Almost everything in this system stills itself in CSS with
8
+ * `motion-reduce:*`, which is both cheaper and impossible to forget on a
9
+ * re-render. This hook exists only for the cases CSS cannot reach: an animation
10
+ * driven by a timer, where honouring the preference means *not scheduling the
11
+ * work at all* rather than painting it without a transition.
12
+ *
13
+ * @internal Not part of the public API.
14
+ */
15
+ const QUERY = "(prefers-reduced-motion: reduce)";
16
+ /**
17
+ * Whether the user has asked for reduced motion, tracked live.
18
+ *
19
+ * Starts `false` on the server and on the first client render so hydration
20
+ * matches, then corrects itself in a layout effect before paint.
21
+ */
22
+ function usePrefersReducedMotion() {
23
+ const [reduced, setReduced] = React.useState(false);
24
+ React.useEffect(() => {
25
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
26
+ const query = window.matchMedia(QUERY);
27
+ setReduced(query.matches);
28
+ const onChange = (event) => setReduced(event.matches);
29
+ query.addEventListener("change", onChange);
30
+ return () => query.removeEventListener("change", onChange);
31
+ }, []);
32
+ return reduced;
33
+ }
34
+ /**
35
+ * mulberry32 — 32 bits of state, uniform enough for jitter and fast enough to
36
+ * call per keystroke.
37
+ *
38
+ * Seeded rather than `Math.random()` so a simulated terminal plays the same way
39
+ * on every render, in every screenshot and in every test (the Phase 1 rule
40
+ * against unseeded randomness).
41
+ *
42
+ * @param seed - Any integer. The same seed always yields the same sequence.
43
+ * @returns A generator of numbers in `[0, 1)`.
44
+ */
45
+ function mulberry32(seed) {
46
+ let state = seed >>> 0;
47
+ return () => {
48
+ state = state + 1831565813 >>> 0;
49
+ let t = state;
50
+ t = Math.imul(t ^ t >>> 15, t | 1);
51
+ t ^= t + Math.imul(t ^ t >>> 7, t | 61);
52
+ return ((t ^ t >>> 14) >>> 0) / 4294967296;
53
+ };
54
+ }
55
+ //#endregion
56
+ export { mulberry32, usePrefersReducedMotion };
@@ -0,0 +1,21 @@
1
+ //#region src/instruments/_rem.ts
2
+ /**
3
+ * Instruments are the one group that takes raw pixel numbers as props — a
4
+ * meter is 4px tall, a sparkline is 72×14, a progress track is 5px — because
5
+ * those are the numbers a data designer thinks in, and there is no density
6
+ * token for "the height of a bar".
7
+ *
8
+ * They are still emitted as `rem` so the instrument scales with browser zoom
9
+ * and the user's root font size like everything else in the system. This is the
10
+ * same conversion `StatusDot` does for its diameter.
11
+ *
12
+ * @internal Not part of the public API.
13
+ */
14
+ /** The reference root font size the px props are quoted against. */
15
+ const ROOT_PX = 16;
16
+ /** Convert a px number quoted at the 16px root into a `rem` length. */
17
+ function toRem(px) {
18
+ return `${px / ROOT_PX}rem`;
19
+ }
20
+ //#endregion
21
+ export { toRem };
@@ -0,0 +1,48 @@
1
+ import * as React from "react";
2
+ //#region src/instruments/app-window-frame.d.ts
3
+ interface AppWindowFrameProps extends Omit<React.ComponentPropsWithoutRef<"div">, "title"> {
4
+ /** The document name, centred in the title bar. */
5
+ title?: React.ReactNode;
6
+ /** Draw the three window lights. Defaults to `true`. */
7
+ traffic?: boolean;
8
+ /** Contents of the toolbar row under the title bar. Omit for no toolbar. */
9
+ toolbar?: React.ReactNode;
10
+ /** Contents of the status bar along the bottom. Omit for no status bar. */
11
+ statusBar?: React.ReactNode;
12
+ /**
13
+ * Float the frame off the page with a drop shadow. Defaults to `true`.
14
+ *
15
+ * This is the one flat-design exception in the kit, and it is not really an
16
+ * exception: the component *depicts a floating window*, which is exactly the
17
+ * case the overlay shadow rule already carves out. Set it `false` when the
18
+ * frame is inlined into a page that is already a window.
19
+ */
20
+ elevated?: boolean;
21
+ /** What is inside the window. */
22
+ children?: React.ReactNode;
23
+ }
24
+ /**
25
+ * A screenshot of your own app, built out of your own components.
26
+ *
27
+ * The marketing device: title bar, optional toolbar, canvas, status bar — the
28
+ * shape of a desktop window, wrapped around real markup. Because the contents
29
+ * are components rather than a PNG, the hero image re-themes with the site, is
30
+ * legible at any zoom, and cannot go stale the week after a redesign.
31
+ *
32
+ * Built from the real `TitleBar` and `StatusBar`, so the depiction and the
33
+ * product share one set of geometry tokens and can never drift apart.
34
+ *
35
+ * Static markup — no `"use client"`.
36
+ *
37
+ * @example
38
+ * <AppWindowFrame
39
+ * title="main-stage.cue"
40
+ * toolbar={<><Chip>File</Chip><Chip tone="ok">Live</Chip></>}
41
+ * statusBar={<><StatusBar.Item tone="ok">LIVE</StatusBar.Item><StatusBar.Item>30 pps</StatusBar.Item></>}
42
+ * >
43
+ * <SeamGrid columns={3}>{cells}</SeamGrid>
44
+ * </AppWindowFrame>
45
+ */
46
+ declare const AppWindowFrame: React.ForwardRefExoticComponent<AppWindowFrameProps & React.RefAttributes<HTMLDivElement>>;
47
+ //#endregion
48
+ export { AppWindowFrame, AppWindowFrameProps };
@@ -0,0 +1,76 @@
1
+ import { cn } from "../lib/cn.js";
2
+ import { StatusBar } from "../chrome/status-bar.js";
3
+ import { TitleBar } from "../chrome/title-bar.js";
4
+ import * as React from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/instruments/app-window-frame.tsx
7
+ /**
8
+ * The three lights, in the shared status vocabulary rather than in macOS hexes.
9
+ *
10
+ * `#ff5f57 / #febc2e / #28c840` are the colours of *one* operating system's
11
+ * chrome; on a themed page they read as three imported stickers. The status
12
+ * tokens are the same three hues, they re-tint per theme, and they are already
13
+ * the colours the rest of the console uses for stop / caution / go.
14
+ */
15
+ const LIGHT_TONES = [
16
+ "bg-danger",
17
+ "bg-warn",
18
+ "bg-ok"
19
+ ];
20
+ /**
21
+ * A screenshot of your own app, built out of your own components.
22
+ *
23
+ * The marketing device: title bar, optional toolbar, canvas, status bar — the
24
+ * shape of a desktop window, wrapped around real markup. Because the contents
25
+ * are components rather than a PNG, the hero image re-themes with the site, is
26
+ * legible at any zoom, and cannot go stale the week after a redesign.
27
+ *
28
+ * Built from the real `TitleBar` and `StatusBar`, so the depiction and the
29
+ * product share one set of geometry tokens and can never drift apart.
30
+ *
31
+ * Static markup — no `"use client"`.
32
+ *
33
+ * @example
34
+ * <AppWindowFrame
35
+ * title="main-stage.cue"
36
+ * toolbar={<><Chip>File</Chip><Chip tone="ok">Live</Chip></>}
37
+ * statusBar={<><StatusBar.Item tone="ok">LIVE</StatusBar.Item><StatusBar.Item>30 pps</StatusBar.Item></>}
38
+ * >
39
+ * <SeamGrid columns={3}>{cells}</SeamGrid>
40
+ * </AppWindowFrame>
41
+ */
42
+ const AppWindowFrame = React.forwardRef(function AppWindowFrame({ className, title, traffic = true, toolbar, statusBar, elevated = true, children, ...elementProps }, ref) {
43
+ return /* @__PURE__ */ jsxs("div", {
44
+ ref,
45
+ "data-slot": "app-window-frame",
46
+ className: cn("flex min-w-0 flex-col overflow-hidden rounded-(--radius-surface) border border-border bg-bg", elevated ? "shadow-[0_40px_120px_-40px_rgba(0,0,0,0.9)]" : null, className),
47
+ ...elementProps,
48
+ children: [
49
+ /* @__PURE__ */ jsx(TitleBar, {
50
+ center: title,
51
+ children: traffic ? /* @__PURE__ */ jsx("span", {
52
+ "aria-hidden": "true",
53
+ "data-slot": "app-window-lights",
54
+ className: "flex items-center gap-(--cue-space-3)",
55
+ children: LIGHT_TONES.map((tone) => /* @__PURE__ */ jsx("span", {
56
+ "data-slot": "app-window-light",
57
+ className: cn("size-[0.5rem] rounded-full opacity-80", tone)
58
+ }, tone))
59
+ }) : null
60
+ }),
61
+ toolbar === void 0 ? null : /* @__PURE__ */ jsx("div", {
62
+ "data-slot": "app-window-toolbar",
63
+ className: "flex h-(--cue-chrome-toolbar) shrink-0 items-center gap-(--cue-space-2) border-b border-border bg-surface-1 px-(--cue-pad-row-x) font-mono text-(length:--cue-text-label) text-fg-muted",
64
+ children: toolbar
65
+ }),
66
+ /* @__PURE__ */ jsx("div", {
67
+ "data-slot": "app-window-canvas",
68
+ className: "min-h-0 min-w-0 flex-1 p-(--cue-space-6)",
69
+ children
70
+ }),
71
+ statusBar === void 0 ? null : /* @__PURE__ */ jsx(StatusBar, { children: statusBar })
72
+ ]
73
+ });
74
+ });
75
+ //#endregion
76
+ export { AppWindowFrame };
@@ -0,0 +1,35 @@
1
+ import * as React from "react";
2
+ //#region src/instruments/code-block.d.ts
3
+ interface CodeBlockProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
4
+ /** The code. Printed verbatim, already dedented by whoever produced it; the copy button copies exactly this. */
5
+ code: string;
6
+ /** What the block is, in the caption strip: a filename, an example's title. Defaults to the language. */
7
+ label?: string;
8
+ /**
9
+ * The fence language, on the `<pre>` as `data-language`. Defaults to `"tsx"`.
10
+ * `"jsx"` turns on emphasis: tag names, attribute names and punctuation in
11
+ * three inks the theme already has. Every other value prints plain.
12
+ */
13
+ language?: string;
14
+ }
15
+ /**
16
+ * A block of code with a copy button and no syntax-highlighter palette.
17
+ *
18
+ * Every colour a token-driven site paints has to come from the token layer, and
19
+ * a highlighter theme is a second palette that would need porting to every
20
+ * preset before it could sit beside them — so there is none. What `language="jsx"`
21
+ * adds is emphasis in three inks the theme already has: tag names in `--cue-fg`,
22
+ * attribute names in `--cue-fg-muted`, punctuation in `--cue-fg-subtle`. Mono
23
+ * type, the sunken ground every input uses, and a copy button that works.
24
+ *
25
+ * No directive: the copy button is the only client code, and a server page can
26
+ * draw the rest.
27
+ *
28
+ * @example
29
+ * <CodeBlock label="install" code="pnpm add @cueplusplus/ui" language="sh" />
30
+ * @example
31
+ * <CodeBlock label="JSX" language="jsx" code={'<Button variant="primary">Take cue</Button>'} />
32
+ */
33
+ declare const CodeBlock: React.ForwardRefExoticComponent<CodeBlockProps & React.RefAttributes<HTMLDivElement>>;
34
+ //#endregion
35
+ export { CodeBlock, CodeBlockProps };
@@ -0,0 +1,173 @@
1
+ import { cn } from "../lib/cn.js";
2
+ import { Panel } from "../chrome/panel.js";
3
+ import { CopyButton } from "./copy-button.js";
4
+ import * as React from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/instruments/code-block.tsx
7
+ /** The three inks, and nothing else: a highlighter theme would be a second palette. */
8
+ const INK = {
9
+ tag: "text-fg",
10
+ attr: "text-fg-muted",
11
+ punct: "text-fg-subtle"
12
+ };
13
+ /**
14
+ * The end of a `{…}` expression starting at `start`, braces balanced; the
15
+ * code's end if unclosed.
16
+ *
17
+ * A JS string literal inside the expression (`"…"`, `'…'`, `` `…` ``,
18
+ * backslash escapes honoured) is skipped whole rather than scanned for
19
+ * braces: `{"a { b"}` has a real `{` and a stray one sitting inside a string,
20
+ * and only the first is the expression's own. Treating the string as opaque
21
+ * is also what keeps `{"<b>hi</b>"}` a single span for the caller that uses
22
+ * this to find where a JSX child expression ends — the `<b>` inside never
23
+ * gets a chance to look like a tag.
24
+ */
25
+ function expressionEnd(code, start) {
26
+ let depth = 0;
27
+ let index = start;
28
+ while (index < code.length) {
29
+ const ch = code[index];
30
+ if (ch === "\"" || ch === "'" || ch === "`") {
31
+ const quote = ch;
32
+ index += 1;
33
+ while (index < code.length && code[index] !== quote) index += code[index] === "\\" ? 2 : 1;
34
+ index += 1;
35
+ continue;
36
+ }
37
+ if (ch === "{") depth += 1;
38
+ else if (ch === "}") {
39
+ depth -= 1;
40
+ if (depth === 0) return index + 1;
41
+ }
42
+ index += 1;
43
+ }
44
+ return code.length;
45
+ }
46
+ /**
47
+ * JSX, cut into the four kinds this block paints.
48
+ *
49
+ * A tag opens at `<` or `</` followed by a letter — so `a < b` is text — and
50
+ * runs to `>` or `/>`. Inside it, a name is an attribute, `=` is punctuation,
51
+ * and a quoted string or a balanced `{…}` is text. Outside a tag everything is
52
+ * text, comments included — and a `{…}` expression child (`{"<b>hi</b>"}`, the
53
+ * shape `JSON.stringify` produces) stays opaque too, found with the same
54
+ * brace-and-string-aware scan as an attribute's expression value, so a `<`
55
+ * sitting inside its string can never be mistaken for a tag opening. The
56
+ * pieces concatenate back to the input exactly, which the suite asserts and
57
+ * the copy button depends on.
58
+ */
59
+ function jsxTokens(code) {
60
+ const tokens = [];
61
+ const push = (kind, from, to) => {
62
+ if (to <= from) return;
63
+ const last = tokens.at(-1);
64
+ if (kind === "text" && last?.kind === "text") last.text += code.slice(from, to);
65
+ else tokens.push({
66
+ kind,
67
+ text: code.slice(from, to),
68
+ at: from
69
+ });
70
+ };
71
+ let index = 0;
72
+ while (index < code.length) {
73
+ const open = /^<\/?(?=[A-Za-z])/.exec(code.slice(index));
74
+ if (open === null) {
75
+ let cursor = code[index] === "{" ? expressionEnd(code, index) : index + 1;
76
+ while (cursor < code.length) {
77
+ const ch = code[cursor];
78
+ if (ch === "{") {
79
+ cursor = expressionEnd(code, cursor);
80
+ continue;
81
+ }
82
+ if (ch === "<") break;
83
+ cursor += 1;
84
+ }
85
+ push("text", index, cursor);
86
+ index = cursor;
87
+ continue;
88
+ }
89
+ push("punct", index, index + open[0].length);
90
+ index += open[0].length;
91
+ const name = /^[A-Za-z][\w.]*/.exec(code.slice(index))[0];
92
+ push("tag", index, index + name.length);
93
+ index += name.length;
94
+ while (index < code.length) {
95
+ const rest = code.slice(index);
96
+ const space = /^\s+/.exec(rest);
97
+ const close = /^\/?>/.exec(rest);
98
+ const attribute = /^[^\s=>/"{]+/.exec(rest);
99
+ if (space !== null) {
100
+ push("text", index, index + space[0].length);
101
+ index += space[0].length;
102
+ } else if (close !== null) {
103
+ push("punct", index, index + close[0].length);
104
+ index += close[0].length;
105
+ break;
106
+ } else if (rest.startsWith("=")) {
107
+ push("punct", index, index + 1);
108
+ index += 1;
109
+ } else if (rest.startsWith("\"")) {
110
+ const quote = code.indexOf("\"", index + 1);
111
+ const end = quote === -1 ? code.length : quote + 1;
112
+ push("text", index, end);
113
+ index = end;
114
+ } else if (rest.startsWith("{")) {
115
+ const end = expressionEnd(code, index);
116
+ push("text", index, end);
117
+ index = end;
118
+ } else if (attribute !== null) {
119
+ push("attr", index, index + attribute[0].length);
120
+ index += attribute[0].length;
121
+ } else {
122
+ push("text", index, index + 1);
123
+ index += 1;
124
+ }
125
+ }
126
+ }
127
+ return tokens;
128
+ }
129
+ /**
130
+ * A block of code with a copy button and no syntax-highlighter palette.
131
+ *
132
+ * Every colour a token-driven site paints has to come from the token layer, and
133
+ * a highlighter theme is a second palette that would need porting to every
134
+ * preset before it could sit beside them — so there is none. What `language="jsx"`
135
+ * adds is emphasis in three inks the theme already has: tag names in `--cue-fg`,
136
+ * attribute names in `--cue-fg-muted`, punctuation in `--cue-fg-subtle`. Mono
137
+ * type, the sunken ground every input uses, and a copy button that works.
138
+ *
139
+ * No directive: the copy button is the only client code, and a server page can
140
+ * draw the rest.
141
+ *
142
+ * @example
143
+ * <CodeBlock label="install" code="pnpm add @cueplusplus/ui" language="sh" />
144
+ * @example
145
+ * <CodeBlock label="JSX" language="jsx" code={'<Button variant="primary">Take cue</Button>'} />
146
+ */
147
+ const CodeBlock = React.forwardRef(function CodeBlock({ code, label, language = "tsx", className, ...elementProps }, ref) {
148
+ const body = language === "jsx" ? jsxTokens(code).map((token) => token.kind === "text" ? token.text : /* @__PURE__ */ jsx("span", {
149
+ "data-token": token.kind,
150
+ className: INK[token.kind],
151
+ children: token.text
152
+ }, token.at)) : code;
153
+ return /* @__PURE__ */ jsxs(Panel, {
154
+ ...elementProps,
155
+ ref,
156
+ "data-slot": "code-block",
157
+ className: cn("bg-sunken", className),
158
+ children: [/* @__PURE__ */ jsxs("div", {
159
+ className: "flex items-center justify-between gap-(--cue-space-4) border-b border-border px-(--cue-pad-row-x) py-(--cue-pad-row-y)",
160
+ children: [/* @__PURE__ */ jsx("span", {
161
+ "data-slot": "code-block-label",
162
+ className: "font-mono text-(length:--cue-text-micro) tracking-[0.15em] text-fg-subtle uppercase",
163
+ children: label ?? language
164
+ }), /* @__PURE__ */ jsx(CopyButton, { value: code })]
165
+ }), /* @__PURE__ */ jsx("pre", {
166
+ "data-language": language,
167
+ className: "overflow-x-auto p-(--cue-space-4) font-mono text-(length:--cue-text-ui) leading-(--cue-leading-ui) text-fg",
168
+ children: /* @__PURE__ */ jsx("code", { children: body })
169
+ })]
170
+ });
171
+ });
172
+ //#endregion
173
+ export { CodeBlock };
@@ -0,0 +1,41 @@
1
+ import { ButtonProps } from "../primitives/button.js";
2
+ import * as React from "react";
3
+ //#region src/instruments/copy-button.d.ts
4
+ interface CopyButtonProps extends Omit<ButtonProps, "icon" | "children" | "onCopy"> {
5
+ /** The text to put on the clipboard. */
6
+ value: string;
7
+ /** ms the confirmation stays up before reverting. Defaults to `1200`. */
8
+ timeout?: number;
9
+ /** The idle label. Defaults to `"Copy"`. */
10
+ children?: React.ReactNode;
11
+ /** The confirmation label. Defaults to `"Copied"`. */
12
+ copiedLabel?: React.ReactNode;
13
+ /**
14
+ * Called with `value` once it is actually on the clipboard. Replaces the
15
+ * native `onCopy` clipboard-event handler, which is meaningless on a button.
16
+ */
17
+ onCopy?: (value: string) => void;
18
+ /** Called with whatever the clipboard threw. Nothing is claimed on failure. */
19
+ onCopyError?: (error: unknown) => void;
20
+ }
21
+ /**
22
+ * Copy one string, and say so.
23
+ *
24
+ * The confirmation is a label swap rather than a colour change or a toast: at
25
+ * console density a toast for "copied an id" is heavier than the action, and
26
+ * colour alone would not be announced. The label lives in an `aria-live`
27
+ * region, so screen-reader users hear the state change too (WCAG 1.4.1).
28
+ *
29
+ * Failure is never dressed up as success — if both the async clipboard and the
30
+ * `execCommand` fallback fail, the label stays put and `onCopyError` fires.
31
+ *
32
+ * @example
33
+ * <CopyButton value={fixture.id} />
34
+ * @example
35
+ * <CopyButton value={dsn} variant="ghost" size="sm" copiedLabel="On the clipboard">
36
+ * Copy DSN
37
+ * </CopyButton>
38
+ */
39
+ declare const CopyButton: React.ForwardRefExoticComponent<CopyButtonProps & React.RefAttributes<HTMLButtonElement>>;
40
+ //#endregion
41
+ export { CopyButton, CopyButtonProps };
@@ -0,0 +1,112 @@
1
+ "use client";
2
+ import { Button } from "../primitives/button.js";
3
+ import { CheckGlyph, CopyGlyph } from "./_glyphs.js";
4
+ import * as React from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/instruments/copy-button.tsx
7
+ /** How long the confirmation stays up, in ms. */
8
+ const DEFAULT_TIMEOUT_MS = 1200;
9
+ /**
10
+ * The synchronous fallback for browsers (and insecure origins) with no async
11
+ * clipboard: select a scratch textarea and let `execCommand` copy it.
12
+ *
13
+ * Returns `false` rather than throwing so the caller can re-raise whatever the
14
+ * real failure was — the fallback failing is never the interesting error.
15
+ */
16
+ function copyWithExecCommand(value) {
17
+ if (typeof document === "undefined" || typeof document.execCommand !== "function") return false;
18
+ const scratch = document.createElement("textarea");
19
+ scratch.value = value;
20
+ scratch.setAttribute("readonly", "");
21
+ scratch.setAttribute("aria-hidden", "true");
22
+ scratch.style.position = "fixed";
23
+ scratch.style.top = "0";
24
+ scratch.style.left = "-9999px";
25
+ document.body.appendChild(scratch);
26
+ const selection = document.getSelection();
27
+ const previous = selection !== null && selection.rangeCount > 0 ? selection.getRangeAt(0) : null;
28
+ let copied = false;
29
+ try {
30
+ scratch.select();
31
+ copied = document.execCommand("copy");
32
+ } catch {
33
+ copied = false;
34
+ } finally {
35
+ scratch.remove();
36
+ if (previous !== null && selection !== null) {
37
+ selection.removeAllRanges();
38
+ selection.addRange(previous);
39
+ }
40
+ }
41
+ return copied;
42
+ }
43
+ /** Write to the clipboard, preferring the async API and never claiming success. */
44
+ async function writeToClipboard(value) {
45
+ const clipboard = typeof navigator === "undefined" ? void 0 : navigator.clipboard;
46
+ if (clipboard !== void 0 && typeof clipboard.writeText === "function") try {
47
+ await clipboard.writeText(value);
48
+ return;
49
+ } catch (error) {
50
+ if (copyWithExecCommand(value)) return;
51
+ throw error;
52
+ }
53
+ if (copyWithExecCommand(value)) return;
54
+ throw new Error("Clipboard unavailable");
55
+ }
56
+ /**
57
+ * Copy one string, and say so.
58
+ *
59
+ * The confirmation is a label swap rather than a colour change or a toast: at
60
+ * console density a toast for "copied an id" is heavier than the action, and
61
+ * colour alone would not be announced. The label lives in an `aria-live`
62
+ * region, so screen-reader users hear the state change too (WCAG 1.4.1).
63
+ *
64
+ * Failure is never dressed up as success — if both the async clipboard and the
65
+ * `execCommand` fallback fail, the label stays put and `onCopyError` fires.
66
+ *
67
+ * @example
68
+ * <CopyButton value={fixture.id} />
69
+ * @example
70
+ * <CopyButton value={dsn} variant="ghost" size="sm" copiedLabel="On the clipboard">
71
+ * Copy DSN
72
+ * </CopyButton>
73
+ */
74
+ const CopyButton = React.forwardRef(function CopyButton({ value, timeout = DEFAULT_TIMEOUT_MS, children = "Copy", copiedLabel = "Copied", onCopy, onCopyError, onClick, ...buttonProps }, ref) {
75
+ const [copied, setCopied] = React.useState(false);
76
+ const timerRef = React.useRef(void 0);
77
+ React.useEffect(() => () => {
78
+ if (timerRef.current !== void 0) clearTimeout(timerRef.current);
79
+ }, []);
80
+ const handleClick = (event) => {
81
+ onClick?.(event);
82
+ if (event.defaultPrevented) return;
83
+ (async () => {
84
+ try {
85
+ await writeToClipboard(value);
86
+ } catch (error) {
87
+ onCopyError?.(error);
88
+ return;
89
+ }
90
+ onCopy?.(value);
91
+ setCopied(true);
92
+ if (timerRef.current !== void 0) clearTimeout(timerRef.current);
93
+ timerRef.current = setTimeout(() => {
94
+ timerRef.current = void 0;
95
+ setCopied(false);
96
+ }, timeout);
97
+ })();
98
+ };
99
+ return /* @__PURE__ */ jsx(Button, {
100
+ ref,
101
+ icon: copied ? CheckGlyph : CopyGlyph,
102
+ "data-copied": copied ? "true" : void 0,
103
+ onClick: handleClick,
104
+ ...buttonProps,
105
+ children: /* @__PURE__ */ jsx("span", {
106
+ "aria-live": "polite",
107
+ children: copied ? copiedLabel : children
108
+ })
109
+ });
110
+ });
111
+ //#endregion
112
+ export { CopyButton };
@@ -0,0 +1,94 @@
1
+ import * as React from "react";
2
+ //#region src/instruments/data-row.d.ts
3
+ /** What an interactive row discloses, when it discloses something. */
4
+ interface DataRowDisclosure {
5
+ /** Whether the surface this row opens is currently showing. */
6
+ expanded: boolean;
7
+ /**
8
+ * The `id` of the element the row opens, when that element is in the DOM.
9
+ *
10
+ * Omit it while the surface is closed and unrendered: `aria-controls`
11
+ * pointing at an id that does not exist is worse than no `aria-controls`.
12
+ */
13
+ controls?: string;
14
+ }
15
+ interface DataRowRootProps extends React.ComponentPropsWithoutRef<"div"> {
16
+ /**
17
+ * The row responds to a pointer and to the keyboard: hover wash, `cursor`,
18
+ * an inset focus ring and a tab stop. Defaults to `false`.
19
+ */
20
+ interactive?: boolean;
21
+ /**
22
+ * Draw the row as picked out of the list. Defaults to `false`.
23
+ *
24
+ * Sets `data-selected`, which is also what the hover-revealed action track and
25
+ * the accent tint key off — so a `<tr data-selected>` in the table idiom gets
26
+ * exactly the same treatment without going through this component.
27
+ */
28
+ selected?: boolean;
29
+ /** Grey the row out and stop it responding to anything. Defaults to `false`. */
30
+ disabled?: boolean;
31
+ /** What "open this row" means — a drawer, a detail pane, a route. */
32
+ onActivate?: () => void;
33
+ /**
34
+ * Expose the row as a disclosure: `data-expanded` always, `aria-expanded`
35
+ * when the row has a `role` that can carry it, and `aria-controls` when the
36
+ * disclosed element is on the page.
37
+ *
38
+ * **`aria-expanded` is gated on the role, because on a bare `<div>` it is
39
+ * worse than nothing.** A role-less div maps to `generic`, which supports
40
+ * only the global attributes — so the state is dropped outright by Blink,
41
+ * WebKit and Gecko alike (verified through Chromium's own accessibility
42
+ * tree), announces nothing, and adds a critical `aria-allowed-attr` finding
43
+ * to any axe run over the console that used it. `role` passes straight
44
+ * through as a div prop, so a row that genuinely is a disclosure says which
45
+ * kind it is — `role="button"` for a row that opens a drawer, `role="row"`
46
+ * inside a grid — and gets the attribute with it. Everything else gets
47
+ * `data-expanded`, which styles and tests exactly as well and promises
48
+ * nothing to a screen reader.
49
+ *
50
+ * The row is still not given a widget role on its own account: a
51
+ * `role="button"` row could not legally hold the buttons and links these rows
52
+ * exist to contain, and that judgement belongs to the caller who knows what
53
+ * their row does. Where the disclosure has to be bulletproof for assistive
54
+ * technology, reach for `DataTree` (real `treeitem` expansion) or a
55
+ * `Table.GroupRow` with a real toggle button in it.
56
+ */
57
+ disclosure?: DataRowDisclosure;
58
+ }
59
+ /** The native `<span>` surface every row slot shares, plus `className`. */
60
+ type DataRowSlotProps = React.ComponentPropsWithoutRef<"span">;
61
+ /**
62
+ * The dense interactive row, as one anatomy three surfaces share.
63
+ *
64
+ * `Ledger`, a grouped `Table` and `DataTree` are three drawings of the same row
65
+ * model, and this is the model: a marker, a label, a description, tags, a
66
+ * figure, and a trailing action cluster that is only there when you are looking
67
+ * at the row. Composing them yourself — rather than passing a `columns` array —
68
+ * is what keeps the primitive domain-neutral: a corpus of skills and a rig of
69
+ * fixtures need the same six slots and completely different columns.
70
+ *
71
+ * The slots are thin: each is a `<span>` with a `data-slot`, the type and
72
+ * truncation rule for its column, and nothing else. They may be used inside a
73
+ * `DataTree` row and inside a `Table.Cell` too — `Table.Row` carries the same
74
+ * `group/data-row` name, so `DataRow.Actions` reveals in the table idiom
75
+ * without a second implementation.
76
+ *
77
+ * @example
78
+ * <DataRow.Root interactive onActivate={() => open(skill)}>
79
+ * <DataRow.Marker><StatusDot tone="ok" /></DataRow.Marker>
80
+ * <DataRow.Label>{skill.name}</DataRow.Label>
81
+ * <DataRow.Meta>{skill.installs}</DataRow.Meta>
82
+ * </DataRow.Root>
83
+ */
84
+ declare const DataRow: {
85
+ Root: React.ForwardRefExoticComponent<DataRowRootProps & React.RefAttributes<HTMLDivElement>>;
86
+ Marker: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
87
+ Label: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
88
+ Description: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
89
+ Tags: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
90
+ Meta: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
91
+ Actions: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
92
+ };
93
+ //#endregion
94
+ export { DataRow, DataRowDisclosure, DataRowRootProps, DataRowSlotProps };