@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,541 @@
1
+ import { THEME_NAME_PATTERN as THEME_NAME_PATTERN$1, assertCssValue, serializeSystemModeAliases, serializeThemeBlock, tokenProperty } from "../theming/serialize.js";
2
+ import { DEFAULT_DENSITY_LEVEL, DENSITY_RADIUS_SCALE, THEME_COLOR_TOKENS } from "../theming/create-theme.js";
3
+ import { resolve } from "@cueplusplus/theme-base";
4
+ //#region src/configurator/_overrides.ts
5
+ /**
6
+ * The override model behind the theme configurator: what a user may move, where
7
+ * the declaration has to land for it to win, and how the whole thing survives a
8
+ * reload.
9
+ *
10
+ * Everything here is a pure function of an immutable `ThemeOverrides` value,
11
+ * apart from the three functions at the bottom that talk to the document and to
12
+ * `localStorage`. That split is deliberate — the panel is a view over this
13
+ * model, the export dialog is a second view over the same model, and neither is
14
+ * allowed a private opinion about what the tokens are.
15
+ *
16
+ * ## Why the scoping is this fussy
17
+ *
18
+ * The token layer declares its values under *attribute* selectors on two
19
+ * disjoint axes (`[data-theme]` for colour, `[data-density]` for geometry), and
20
+ * both axes are re-declared at every element that carries the attribute — the
21
+ * `<html>` element, the provider root, a `<Density>` island, a portal container.
22
+ * An override is therefore not "set the variable on `:root`": that loses in
23
+ * three separate ways.
24
+ *
25
+ * - A colour written under a bare `[data-theme="x"]` (0,1,0) is outranked by the
26
+ * shipped `[data-theme="x"][data-mode="light"]` block (0,2,0), so the moment
27
+ * the user switches to light the override vanishes. Colours are therefore
28
+ * written **crossed with the mode**, which is also honest: a theme's two modes
29
+ * are two palettes, and editing one should not silently edit the other.
30
+ * - A geometry multiplier written flat outranks the density block that set it,
31
+ * freezing `ultra-compact`'s 0.75 radius scale at 1 — the same trap
32
+ * `createTheme()` documents. Multipliers are therefore **crossed with the
33
+ * density ladder**, one rule per level, with the level's own value folded in.
34
+ * - `--cue-font-scale` is published by `<ThemeProvider>` as an *inline* custom
35
+ * property, and no stylesheet outranks an inline declaration. It is the one
36
+ * token here that needs `!important`, and it gets its own rule so that the
37
+ * flag never spreads to anything that does not need it.
38
+ *
39
+ * @internal Not part of the public API; `./configurator` re-exports what a host
40
+ * app needs.
41
+ */
42
+ /** The one style element the configurator writes into. */
43
+ const OVERRIDE_STYLE_ID = "cue-configurator-overrides";
44
+ /** Default `localStorage` key for the persisted snapshot. */
45
+ const DEFAULT_CONFIGURATOR_STORAGE_KEY = "cue-configurator";
46
+ /**
47
+ * Schema version of the persisted snapshot.
48
+ *
49
+ * A blob from another version is discarded rather than migrated: the payload is
50
+ * a design preference a user can rebuild in a minute, and a wrong migration
51
+ * would paint a page with values nobody chose.
52
+ */
53
+ const CONFIGURATOR_VERSION = 1;
54
+ /** Banner printed at the top of the applied — and exported — stylesheet. */
55
+ const OVERRIDE_BANNER = "@cueplusplus/ui — theme configurator overrides";
56
+ /**
57
+ * The unitless density multiplier each level publishes.
58
+ *
59
+ * A copy of `packages/tokens/src/density/*.tokens.json`: the tokens package
60
+ * emits CSS, and a value this module has to *multiply* cannot be read out of a
61
+ * stylesheet. `test/configurator/overrides.test.ts` re-reads the DTCG sources
62
+ * and fails on the first number that has drifted.
63
+ */
64
+ const DENSITY_FACTOR = {
65
+ "ultra-compact": .85,
66
+ "compact": 1,
67
+ "normal": 1.3,
68
+ "large": 1.6,
69
+ "ultra-large": 1.9
70
+ };
71
+ /** The authored label tracking, and the value the "reset" arrow returns to. */
72
+ const BASE_TRACKING_LABEL = "0.12em";
73
+ /** The colour tokens the panel edits — the same list a theme block declares. */
74
+ const COLOR_TOKENS = THEME_COLOR_TOKENS;
75
+ /** The type stacks the panel edits. Mode-independent: a typeface is not a palette. */
76
+ const FONT_TOKENS = [
77
+ "font-sans",
78
+ "font-mono",
79
+ "font-display"
80
+ ];
81
+ /**
82
+ * The multipliers that have to be crossed with the density ladder, and the
83
+ * per-level values they are crossed with.
84
+ */
85
+ const SCALED_TOKENS = {
86
+ "radius-scale": DENSITY_RADIUS_SCALE,
87
+ "density": DENSITY_FACTOR
88
+ };
89
+ /** Axis-free tokens: one declaration covers every level. */
90
+ const FLAT_TOKENS = ["tracking-label"];
91
+ /** Tokens the provider publishes inline, which a stylesheet can only reach with `!important`. */
92
+ const INLINE_TOKENS = ["font-scale"];
93
+ /** Every token the configurator is allowed to write, as `--cue-*` properties, in contract order. */
94
+ const MANAGED_TOKENS = [
95
+ ...COLOR_TOKENS,
96
+ ...FONT_TOKENS,
97
+ ...Object.keys(SCALED_TOKENS),
98
+ ...FLAT_TOKENS,
99
+ ...INLINE_TOKENS
100
+ ].map(tokenProperty);
101
+ const KINDS = Object.fromEntries([
102
+ ...COLOR_TOKENS.map((token) => [tokenProperty(token), "color"]),
103
+ ...FONT_TOKENS.map((token) => [tokenProperty(token), "font"]),
104
+ ...Object.keys(SCALED_TOKENS).map((token) => [tokenProperty(token), "scaled"]),
105
+ ...FLAT_TOKENS.map((token) => [tokenProperty(token), "flat"]),
106
+ ...INLINE_TOKENS.map((token) => [tokenProperty(token), "inline"])
107
+ ]);
108
+ /** The density levels, default first — the order the crossed rules are emitted in. */
109
+ const DENSITY_LEVELS = [DEFAULT_DENSITY_LEVEL, ...Object.keys(DENSITY_FACTOR).filter((level) => level !== DEFAULT_DENSITY_LEVEL)];
110
+ /** The nothing-has-moved state. Frozen: it is shared by every caller. */
111
+ const EMPTY_OVERRIDES = Object.freeze({
112
+ themes: Object.freeze({}),
113
+ global: Object.freeze({})
114
+ });
115
+ /** Which of the five buckets a token belongs to, or `null` if it is not ours to write. */
116
+ function tokenKind(token) {
117
+ return KINDS[tokenProperty(token)] ?? null;
118
+ }
119
+ /** The key a theme+mode pair is stored under. */
120
+ function scopeKey(scope) {
121
+ return `${scope.theme}/${scope.mode}`;
122
+ }
123
+ /**
124
+ * The inverse of {@link scopeKey}, rejecting anything that would not be safe in
125
+ * a selector.
126
+ *
127
+ * A bare `{ theme, mode }` rather than a {@link ThemeScope}: a storage key
128
+ * carries a *name*, and this module has no registry to look a manifest up in.
129
+ * Both callers below want only the selector halves. A caller that needs the
130
+ * manifest attaches it from the registry it holds.
131
+ */
132
+ function parseScopeKey(key) {
133
+ const slash = key.lastIndexOf("/");
134
+ if (slash === -1) return null;
135
+ const theme = key.slice(0, slash);
136
+ const mode = key.slice(slash + 1);
137
+ if (!THEME_NAME_PATTERN$1.test(theme)) return null;
138
+ if (mode !== "dark" && mode !== "light") return null;
139
+ return {
140
+ theme,
141
+ mode
142
+ };
143
+ }
144
+ /**
145
+ * Whether a value can be printed into a declaration without escaping it.
146
+ *
147
+ * Colours arrive from the picker already re-formatted, but a font stack is free
148
+ * text a user typed, and it ends up inside a stylesheet. This is the same check
149
+ * `theming/serialize.ts` makes — asked as a question instead of thrown as an
150
+ * error, so a field can mark itself invalid while the user is still typing.
151
+ *
152
+ * @param value - The proposed declaration value.
153
+ * @returns `true` when it stays inside its declaration.
154
+ * @example
155
+ * isSafeCssValue("Iosevka, monospace"); // → true
156
+ */
157
+ function isSafeCssValue(value) {
158
+ try {
159
+ assertCssValue("value", value);
160
+ return true;
161
+ } catch {
162
+ return false;
163
+ }
164
+ }
165
+ /**
166
+ * The value a token has before the user touches anything.
167
+ *
168
+ * Everything a theme actually declares comes from `theme-base`'s `resolve()`,
169
+ * which is the one implementation of the layering rule — the theme's block for
170
+ * this mode, the theme's own font override under the base stack — so the panel
171
+ * and the runtime cannot disagree about what "shipped" means. A `null` manifest
172
+ * is the blank base, which resolves to the neutral ramp rather than to nothing:
173
+ * every scope answers, including one naming a theme no manifest was passed for.
174
+ * The multipliers are 1 by definition, because what the panel edits is the
175
+ * multiplier and not the ladder underneath it.
176
+ *
177
+ * @param scope - Theme, mode and manifest being edited.
178
+ * @param token - A bare token name or a `--cue-*` property.
179
+ * @returns The shipped value, as a CSS string.
180
+ * @example
181
+ * baseValue({ theme: "terminal", mode: "dark", manifest: terminal }, "accent");
182
+ * // → "hsl(180 100% 50%)"
183
+ */
184
+ function baseValue(scope, token) {
185
+ const property = tokenProperty(token);
186
+ const name = property.slice(6);
187
+ switch (tokenKind(property)) {
188
+ case "color": return resolve(scope.manifest, { mode: scope.mode }).colors[name] ?? "";
189
+ case "font": return resolve(scope.manifest, { mode: scope.mode }).fonts[name] ?? "";
190
+ case "scaled":
191
+ case "inline": return "1";
192
+ case "flat": return BASE_TRACKING_LABEL;
193
+ default: return "";
194
+ }
195
+ }
196
+ /** The scope keys a token's declaration is stored under: both modes for a font, else one. */
197
+ function storageScopes(scope, kind) {
198
+ if (kind === "font") return [scopeKey({
199
+ ...scope,
200
+ mode: "dark"
201
+ }), scopeKey({
202
+ ...scope,
203
+ mode: "light"
204
+ })];
205
+ return [scopeKey(scope)];
206
+ }
207
+ /** A shallow clone deep enough to edit one scope without aliasing the rest. */
208
+ function cloneOverrides(overrides) {
209
+ const themes = {};
210
+ for (const [key, entries] of Object.entries(overrides.themes)) themes[key] = { ...entries };
211
+ return {
212
+ themes,
213
+ global: { ...overrides.global }
214
+ };
215
+ }
216
+ /** Drop scopes that no longer hold anything, so `serializeOverrideCss` emits no empty rules. */
217
+ function prune(overrides) {
218
+ for (const [key, entries] of Object.entries(overrides.themes)) if (Object.keys(entries).length === 0) delete overrides.themes[key];
219
+ return overrides;
220
+ }
221
+ /**
222
+ * Move a token, returning a new state.
223
+ *
224
+ * Setting a token back to the value the preset ships is a *reset*, not an
225
+ * override — otherwise "I put it back" would still export a declaration and the
226
+ * user would carry a no-op forever.
227
+ *
228
+ * @param overrides - Current state. Never mutated.
229
+ * @param scope - Theme and mode being edited.
230
+ * @param token - A bare token name or a `--cue-*` property.
231
+ * @param value - The new CSS value.
232
+ * @returns The new state.
233
+ * @throws TypeError if the token is not one the configurator manages, or the
234
+ * value could break out of its declaration.
235
+ * @example
236
+ * setOverride(overrides, { theme: "terminal", mode: "dark" }, "accent", "#ff8800");
237
+ */
238
+ function setOverride(overrides, scope, token, value) {
239
+ const property = tokenProperty(token);
240
+ const kind = tokenKind(property);
241
+ if (kind === null) throw new TypeError(`${property} is not a token the configurator manages`);
242
+ assertCssValue(property, value);
243
+ if (value === baseValue(scope, property)) return clearOverride(overrides, scope, property);
244
+ const next = cloneOverrides(overrides);
245
+ if (kind === "color" || kind === "font") for (const key of storageScopes(scope, kind)) next.themes[key] = {
246
+ ...next.themes[key],
247
+ [property]: value
248
+ };
249
+ else next.global[property] = value;
250
+ return prune(next);
251
+ }
252
+ /**
253
+ * Put a token back to its shipped value, returning a new state.
254
+ *
255
+ * @param overrides - Current state. Never mutated.
256
+ * @param scope - Theme and mode being edited.
257
+ * @param token - A bare token name or a `--cue-*` property.
258
+ * @returns The new state.
259
+ * @example
260
+ * clearOverride(overrides, scope, "--cue-accent");
261
+ */
262
+ function clearOverride(overrides, scope, token) {
263
+ const property = tokenProperty(token);
264
+ const kind = tokenKind(property);
265
+ if (kind === null) return overrides;
266
+ const next = cloneOverrides(overrides);
267
+ if (kind === "color" || kind === "font") for (const key of storageScopes(scope, kind)) delete next.themes[key]?.[property];
268
+ else delete next.global[property];
269
+ return prune(next);
270
+ }
271
+ /** Whether a token currently carries an override in this scope. */
272
+ function isOverridden(overrides, scope, token) {
273
+ const property = tokenProperty(token);
274
+ const kind = tokenKind(property);
275
+ if (kind === null) return false;
276
+ if (kind === "color" || kind === "font") return overrides.themes[scopeKey(scope)]?.[property] !== void 0;
277
+ return overrides.global[property] !== void 0;
278
+ }
279
+ /**
280
+ * How many declarations the user has made.
281
+ *
282
+ * Counted as declarations rather than as decisions: a font family is one choice
283
+ * that produces two declarations, one per mode, and the number in the panel is
284
+ * the number that will appear in the export.
285
+ */
286
+ function overrideCount(overrides) {
287
+ let total = Object.keys(overrides.global).length;
288
+ for (const entries of Object.values(overrides.themes)) total += Object.keys(entries).length;
289
+ return total;
290
+ }
291
+ /** The value a token has right now: the override if there is one, else the shipped value. */
292
+ function resolveValue(overrides, scope, token) {
293
+ const property = tokenProperty(token);
294
+ const kind = tokenKind(property);
295
+ if (kind === null) return "";
296
+ return (kind === "color" || kind === "font" ? overrides.themes[scopeKey(scope)]?.[property] : overrides.global[property]) ?? baseValue(scope, property);
297
+ }
298
+ /**
299
+ * Every token the configurator manages, resolved for one scope.
300
+ *
301
+ * This is what `onChange` hands a host app and what the registry export writes:
302
+ * a complete picture, not a diff, so a consumer never has to know which preset
303
+ * the values came from.
304
+ *
305
+ * @param overrides - Current state.
306
+ * @param scope - Theme and mode to resolve for.
307
+ * @returns `--cue-*` property → CSS value.
308
+ */
309
+ function resolvedTokens(overrides, scope) {
310
+ return Object.fromEntries(MANAGED_TOKENS.map((property) => [property, resolveValue(overrides, scope, property)]));
311
+ }
312
+ /** Declarations of one scope, ordered by the token contract rather than by edit order. */
313
+ function orderedDeclarations(entries) {
314
+ return MANAGED_TOKENS.filter((property) => entries[property] !== void 0).map((property) => [property, entries[property]]);
315
+ }
316
+ /**
317
+ * The selector a theme-scoped declaration lands under.
318
+ *
319
+ * Not `themeSelector()` from the theming group, which emits the *authoring*
320
+ * form: a bare `[data-theme="x"]` for dark, because that is the block a
321
+ * stylesheet writes first. An override has to beat that block **and** the light
322
+ * block above it, so it always names the mode.
323
+ */
324
+ function overrideSelector(theme, mode) {
325
+ return `[data-theme="${theme}"][data-mode="${mode}"]`;
326
+ }
327
+ /** Round a product of two scales to something a stylesheet can print. */
328
+ const scaled = (a, b) => String(Number((a * b).toFixed(4)));
329
+ /** A multiplier, crossed with one density level's own value. */
330
+ function crossed(property, value, level) {
331
+ const ladder = SCALED_TOKENS[property.slice(6)];
332
+ const factor = Number(value);
333
+ if (ladder === void 0 || !Number.isFinite(factor)) return value;
334
+ return scaled(factor, ladder[level]);
335
+ }
336
+ const THEME_COMMENT = "the mode is named so the override outranks the shipped light block";
337
+ const CROSSED_COMMENT = "crossed with the density ladder — flat would freeze ultra-compact's 0.75";
338
+ const INLINE_COMMENT = "the provider inlines this one; !important is the only lever left";
339
+ /**
340
+ * Print the overrides as a stylesheet.
341
+ *
342
+ * Returns `""` when nothing has moved — an empty stylesheet is not a stylesheet
343
+ * with an empty rule in it, and the runtime uses the empty string as its signal
344
+ * to remove the style element entirely.
345
+ *
346
+ * @param overrides - Current state.
347
+ * @param options - Banner text.
348
+ * @returns The stylesheet, newline-terminated, or `""`.
349
+ * @example
350
+ * serializeOverrideCss(overrides, { banner: OVERRIDE_BANNER });
351
+ */
352
+ function serializeOverrideCss(overrides, options = {}) {
353
+ const blocks = [];
354
+ const aliases = /* @__PURE__ */ new Map();
355
+ for (const key of Object.keys(overrides.themes).toSorted()) {
356
+ const scope = parseScopeKey(key);
357
+ const declarations = orderedDeclarations(overrides.themes[key] ?? {});
358
+ if (scope === null || declarations.length === 0) continue;
359
+ const sections = [{
360
+ comment: blocks.length === 0 ? THEME_COMMENT : void 0,
361
+ declarations
362
+ }];
363
+ blocks.push({
364
+ selector: overrideSelector(scope.theme, scope.mode),
365
+ sections
366
+ });
367
+ aliases.set(scope.theme, [...aliases.get(scope.theme) ?? [], {
368
+ mode: scope.mode,
369
+ sections
370
+ }]);
371
+ }
372
+ const global = orderedDeclarations(overrides.global);
373
+ const scaledDeclarations = global.filter(([property]) => tokenKind(property) === "scaled");
374
+ const flatDeclarations = global.filter(([property]) => tokenKind(property) === "flat");
375
+ const inlineDeclarations = global.filter(([property]) => tokenKind(property) === "inline");
376
+ if (scaledDeclarations.length > 0) for (const level of DENSITY_LEVELS) {
377
+ const isDefault = level === DEFAULT_DENSITY_LEVEL;
378
+ blocks.push({
379
+ selector: isDefault ? `:root,\n[data-density="${level}"]` : `[data-density="${level}"]`,
380
+ sections: [{
381
+ comment: isDefault ? CROSSED_COMMENT : void 0,
382
+ declarations: scaledDeclarations.map(([property, value]) => [property, crossed(property, value, level)])
383
+ }]
384
+ });
385
+ }
386
+ if (flatDeclarations.length > 0) blocks.push({
387
+ selector: ":root,\n[data-density]",
388
+ sections: [{ declarations: flatDeclarations }]
389
+ });
390
+ if (inlineDeclarations.length > 0) blocks.push({
391
+ selector: ":root,\n[data-cue-root],\n[data-cue-portal]",
392
+ sections: [{
393
+ comment: INLINE_COMMENT,
394
+ declarations: inlineDeclarations.map(([property, value]) => [property, `${value} !important`])
395
+ }]
396
+ });
397
+ if (blocks.length === 0) return "";
398
+ const banner = options.banner === void 0 ? [] : [`/*! ${options.banner}\n * Written by <ThemeConfigurator>. Paste it, do not edit it.\n */`];
399
+ const systemAliases = [...aliases.entries()].map(([theme, modes]) => serializeSystemModeAliases(theme, modes));
400
+ return `${[
401
+ ...banner,
402
+ ...blocks.map(serializeThemeBlock),
403
+ ...systemAliases
404
+ ].join("\n\n")}\n`;
405
+ }
406
+ /**
407
+ * The stylesheet the panel applies — and, byte for byte, the one its CSS export
408
+ * hands you. One function so the two can never drift.
409
+ *
410
+ * @param overrides - Current state.
411
+ * @returns The banner-topped stylesheet, or `""` when nothing has moved.
412
+ */
413
+ function configuratorCss(overrides) {
414
+ return serializeOverrideCss(overrides, { banner: OVERRIDE_BANNER });
415
+ }
416
+ /**
417
+ * Put the stylesheet into the document, creating the style element if needed.
418
+ *
419
+ * One element, identified by {@link OVERRIDE_STYLE_ID}, appended to `<head>`
420
+ * after everything else — later in the cascade is half of how these overrides
421
+ * win. An empty stylesheet removes the element instead of leaving an empty one
422
+ * behind, so "reset all" leaves the document exactly as it found it.
423
+ *
424
+ * @param css - The stylesheet, from {@link configuratorCss}.
425
+ * @param doc - Document to write into. Defaults to the ambient one.
426
+ * @returns The style element, or `null` when there was nothing to apply.
427
+ */
428
+ function applyOverrideCss(css, doc = globalThis.document) {
429
+ if (doc === void 0) return null;
430
+ if (css === "") {
431
+ removeOverrideStyles(doc);
432
+ return null;
433
+ }
434
+ let element = doc.getElementById(OVERRIDE_STYLE_ID);
435
+ if (element === null) {
436
+ element = doc.createElement("style");
437
+ element.id = OVERRIDE_STYLE_ID;
438
+ doc.head.appendChild(element);
439
+ }
440
+ if (element.textContent !== css) element.textContent = css;
441
+ return element;
442
+ }
443
+ /** Take the override stylesheet back out of the document. */
444
+ function removeOverrideStyles(doc = globalThis.document) {
445
+ doc?.getElementById(OVERRIDE_STYLE_ID)?.remove();
446
+ }
447
+ /** Keep only the entries this module is willing to print into a stylesheet. */
448
+ function sanitizeEntries(input) {
449
+ const entries = {};
450
+ if (input === null || typeof input !== "object") return entries;
451
+ for (const [property, value] of Object.entries(input)) {
452
+ if (typeof value !== "string") continue;
453
+ if (!MANAGED_TOKENS.includes(property)) continue;
454
+ if (!isSafeCssValue(value)) continue;
455
+ entries[property] = value;
456
+ }
457
+ return entries;
458
+ }
459
+ /** The persisted blob, read defensively — it is user-editable text that becomes CSS. */
460
+ function sanitizeOverrides(input) {
461
+ const overrides = {
462
+ themes: {},
463
+ global: {}
464
+ };
465
+ if (input === null || typeof input !== "object") return overrides;
466
+ const source = input;
467
+ if (source.themes !== null && typeof source.themes === "object") for (const [key, entries] of Object.entries(source.themes)) {
468
+ if (parseScopeKey(key) === null) continue;
469
+ const clean = sanitizeEntries(entries);
470
+ if (Object.keys(clean).length > 0) overrides.themes[key] = clean;
471
+ }
472
+ overrides.global = sanitizeEntries(source.global);
473
+ return overrides;
474
+ }
475
+ /** The snapshot a first-time visitor gets. */
476
+ function defaultSnapshot() {
477
+ return {
478
+ version: 1,
479
+ overrides: EMPTY_OVERRIDES,
480
+ zoom: 1,
481
+ panel: {
482
+ position: "floating",
483
+ x: 24,
484
+ y: 24,
485
+ collapsed: false
486
+ }
487
+ };
488
+ }
489
+ /**
490
+ * Read the persisted snapshot.
491
+ *
492
+ * Every field is validated, and anything that fails validation is dropped
493
+ * rather than repaired — the blob is text a user can edit in devtools, and its
494
+ * values are printed straight into a stylesheet.
495
+ *
496
+ * @param storageKey - The `localStorage` key.
497
+ * @returns The snapshot, or `null` when there is nothing usable stored.
498
+ */
499
+ function readSnapshot(storageKey) {
500
+ if (typeof localStorage === "undefined") return null;
501
+ let parsed;
502
+ try {
503
+ const raw = localStorage.getItem(storageKey);
504
+ if (raw === null) return null;
505
+ parsed = JSON.parse(raw);
506
+ } catch {
507
+ return null;
508
+ }
509
+ if (parsed === null || typeof parsed !== "object") return null;
510
+ const stored = parsed;
511
+ if (stored.version !== 1) return null;
512
+ const fallback = defaultSnapshot();
513
+ const panel = stored.panel ?? {};
514
+ const number = (value, or) => typeof value === "number" && Number.isFinite(value) ? value : or;
515
+ return {
516
+ version: 1,
517
+ overrides: sanitizeOverrides(stored.overrides),
518
+ zoom: number(stored.zoom, fallback.zoom),
519
+ panel: {
520
+ position: panel["position"] === "docked-right" ? "docked-right" : "floating",
521
+ x: number(panel["x"], fallback.panel.x),
522
+ y: number(panel["y"], fallback.panel.y),
523
+ collapsed: panel["collapsed"] === true
524
+ }
525
+ };
526
+ }
527
+ /**
528
+ * Persist the snapshot. A full quota or a private-mode failure is swallowed —
529
+ * a preference is a nicety, never a hard failure.
530
+ *
531
+ * @param storageKey - The `localStorage` key.
532
+ * @param snapshot - What to store.
533
+ */
534
+ function writeSnapshot(storageKey, snapshot) {
535
+ if (typeof localStorage === "undefined") return;
536
+ try {
537
+ localStorage.setItem(storageKey, JSON.stringify(snapshot));
538
+ } catch {}
539
+ }
540
+ //#endregion
541
+ export { BASE_TRACKING_LABEL, COLOR_TOKENS, CONFIGURATOR_VERSION, DEFAULT_CONFIGURATOR_STORAGE_KEY, DENSITY_FACTOR, EMPTY_OVERRIDES, FLAT_TOKENS, FONT_TOKENS, INLINE_TOKENS, MANAGED_TOKENS, OVERRIDE_BANNER, OVERRIDE_STYLE_ID, SCALED_TOKENS, applyOverrideCss, baseValue, clearOverride, configuratorCss, defaultSnapshot, isOverridden, isSafeCssValue, overrideCount, readSnapshot, removeOverrideStyles, resolveValue, resolvedTokens, scopeKey, serializeOverrideCss, setOverride, tokenKind, writeSnapshot };
@@ -0,0 +1,71 @@
1
+ import { ConfiguratorPosition } from "./_overrides.js";
2
+ import * as React from "react";
3
+ //#region src/configurator/configurator.d.ts
4
+ interface ThemeConfiguratorProps {
5
+ /** Placement, controlled. Pair with `onPositionChange`. */
6
+ position?: ConfiguratorPosition;
7
+ /** Initial placement. A stored one wins. Defaults to `"floating"`. */
8
+ defaultPosition?: ConfiguratorPosition;
9
+ /** Called when the user docks or floats the panel. */
10
+ onPositionChange?: (position: ConfiguratorPosition) => void;
11
+ /** Start furled to the title bar. A stored value wins. Defaults to `false`. */
12
+ defaultCollapsed?: boolean;
13
+ /**
14
+ * `localStorage` key holding the overrides, the placement and the zoom.
15
+ * Defaults to `"cue-configurator"`.
16
+ */
17
+ storageKey?: string;
18
+ /**
19
+ * Called with the full resolved `--cue-*` map — never a diff — whenever the
20
+ * overrides, the theme or the mode change, and once on mount.
21
+ */
22
+ onChange?: (tokens: Record<string, string>) => void;
23
+ /** Bind ⌘/Ctrl with `+`, `-` and `0` to the zoom valve. Defaults to `true`. */
24
+ zoomShortcuts?: boolean;
25
+ /** Panel heading. Defaults to `"Theme"`. */
26
+ title?: React.ReactNode;
27
+ /** Extra classes for the panel. */
28
+ className?: string;
29
+ }
30
+ /**
31
+ * The floating theme configurator: the panel that edits the design system it is
32
+ * drawn with.
33
+ *
34
+ * It is a **component**, not a devtool bolted onto the kitchensink — mount it in
35
+ * any app behind a flag and a designer can retune that app's theme in place. The
36
+ * whole thing rests on one rule, and the rule is what keeps it from being a toy:
37
+ * *everything it does is a `--cue-*` declaration in one stylesheet.* No inline
38
+ * styles on the root, no parallel token vocabulary, no runtime theme engine. The
39
+ * CSS it exports is byte for byte the CSS the page is wearing, which is the only
40
+ * reason the export dialog can promise a round trip at all.
41
+ *
42
+ * What it owns:
43
+ *
44
+ * - **Preset, mode and density** are the provider's, driven through `useTheme()`
45
+ * so a switch restamps `<html>`, every portal, and the persisted preference.
46
+ * - **Colour, type and geometry overrides** go into
47
+ * `<style id="cue-configurator-overrides">`, scoped so they win where they
48
+ * have to and lose where they should — the cascade reasoning is in
49
+ * `_overrides.ts`, and it is the interesting part of this group.
50
+ * - **Text scale and root zoom**, the two relief valves the density ladder is
51
+ * paired with.
52
+ * - **Its own placement**, furled state and every override, in `localStorage`
53
+ * under one key.
54
+ *
55
+ * Renders in place as a `position: fixed` region, so mount it inside the
56
+ * provider — it needs the theme context — but outside any transformed ancestor,
57
+ * which would turn `fixed` into `absolute` and take the panel with the page.
58
+ *
59
+ * @throws If rendered outside a `<ThemeProvider>`: there is no theme to
60
+ * configure, which is a wiring bug rather than a fallback situation.
61
+ * @example
62
+ * <ThemeProvider>
63
+ * <App />
64
+ * {devMode ? <ThemeConfigurator /> : null}
65
+ * </ThemeProvider>
66
+ * @example
67
+ * <ThemeConfigurator position="docked-right" onChange={(tokens) => report(tokens)} />
68
+ */
69
+ declare function ThemeConfigurator({ position: positionProp, defaultPosition, onPositionChange, defaultCollapsed, storageKey, onChange, zoomShortcuts, title, className }: ThemeConfiguratorProps): React.JSX.Element;
70
+ //#endregion
71
+ export { ThemeConfigurator, ThemeConfiguratorProps };