@cueplusplus/ui 0.15.0 → 0.17.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 (508) hide show
  1. package/CHANGELOG.md +1083 -0
  2. package/README.md +26 -0
  3. package/dist/agent-runtime/tool-call-card.js +7 -3
  4. package/dist/brand/_chassis.d.ts +1 -1
  5. package/dist/brand/cue-mark.d.ts +1 -1
  6. package/dist/brand/cue-mark.js +1 -1
  7. package/dist/charts/ramps.js +1 -1
  8. package/dist/chat/agent-pile.js +2 -1
  9. package/dist/chat/ask-box.js +4 -3
  10. package/dist/chat/delegation-card.js +3 -2
  11. package/dist/chat/message-list.js +4 -2
  12. package/dist/chat/message.js +17 -7
  13. package/dist/chrome/_edge-scroller.js +2 -1
  14. package/dist/chrome/_status-bar.js +9 -3
  15. package/dist/chrome/_tabs-scroll.d.ts +17 -1
  16. package/dist/chrome/_tabs-scroll.js +20 -3
  17. package/dist/chrome/app-bar.js +10 -3
  18. package/dist/chrome/app-shell.js +2 -1
  19. package/dist/chrome/band.d.ts +18 -12
  20. package/dist/chrome/band.js +19 -31
  21. package/dist/chrome/eyebrow.d.ts +13 -5
  22. package/dist/chrome/eyebrow.js +18 -7
  23. package/dist/chrome/footer.d.ts +5 -0
  24. package/dist/chrome/footer.js +14 -3
  25. package/dist/chrome/navigation-menu.js +4 -2
  26. package/dist/chrome/page-shell.js +8 -5
  27. package/dist/chrome/panel.d.ts +5 -2
  28. package/dist/chrome/panel.js +9 -4
  29. package/dist/chrome/row.js +6 -3
  30. package/dist/chrome/scroll-area.js +2 -1
  31. package/dist/chrome/section-header.js +13 -4
  32. package/dist/chrome/segmented-control.js +12 -3
  33. package/dist/chrome/status-bar.js +2 -1
  34. package/dist/chrome/tabs.js +11 -3
  35. package/dist/chrome/toolbar.js +2 -1
  36. package/dist/chrome/tree.js +3 -2
  37. package/dist/color/_thumb.js +9 -3
  38. package/dist/color/color-area.js +1 -1
  39. package/dist/color/color-field.d.ts +2 -1
  40. package/dist/color/color-picker.d.ts +2 -1
  41. package/dist/color/color-swatch.js +1 -1
  42. package/dist/configurator/_overrides.js +13 -4
  43. package/dist/configurator/configurator.js +4 -1
  44. package/dist/configurator/export-dialog.js +5 -2
  45. package/dist/configurator/panel-sections.js +6 -2
  46. package/dist/configurator/token-editor.js +4 -1
  47. package/dist/date/calendar.js +12 -8
  48. package/dist/date/date-field.d.ts +2 -1
  49. package/dist/date/date-picker.d.ts +2 -1
  50. package/dist/date/date-range-picker.d.ts +2 -1
  51. package/dist/date/time-field.d.ts +2 -1
  52. package/dist/dmx/channel-matrix.js +3 -2
  53. package/dist/dmx/dmx-bar.js +1 -1
  54. package/dist/dmx/dmx-strip.js +1 -1
  55. package/dist/dmx/universe-grid.js +3 -2
  56. package/dist/elements/activity-graph.js +3 -3
  57. package/dist/elements/agent-card.js +3 -3
  58. package/dist/elements/approval-card.js +3 -3
  59. package/dist/elements/artifact-card.js +2 -2
  60. package/dist/elements/background-inbox.js +2 -2
  61. package/dist/elements/canvas-split.js +2 -2
  62. package/dist/elements/chart.js +1 -1
  63. package/dist/elements/chat-panel.js +2 -2
  64. package/dist/elements/checkpoint-history.js +2 -2
  65. package/dist/elements/clamp.js +2 -1
  66. package/dist/elements/code-diff.js +1 -1
  67. package/dist/elements/code-runner.js +1 -1
  68. package/dist/elements/command-palette.js +6 -5
  69. package/dist/elements/comparison-card.js +2 -2
  70. package/dist/elements/composer.js +9 -8
  71. package/dist/elements/computer-use.js +1 -1
  72. package/dist/elements/confidence-marker.js +2 -1
  73. package/dist/elements/connection-state.js +1 -1
  74. package/dist/elements/context-breakdown.js +1 -1
  75. package/dist/elements/context-usage.js +1 -1
  76. package/dist/elements/conversation-search.js +4 -3
  77. package/dist/elements/cost-meter.js +1 -1
  78. package/dist/elements/data-table.js +2 -2
  79. package/dist/elements/day-separator.js +1 -1
  80. package/dist/elements/diagram.js +1 -1
  81. package/dist/elements/document-reference.js +3 -3
  82. package/dist/elements/draft-restore.js +1 -1
  83. package/dist/elements/edit-message.js +4 -3
  84. package/dist/elements/elements.css +26 -5
  85. package/dist/elements/elicitation-form.js +3 -3
  86. package/dist/elements/empty-state.js +2 -1
  87. package/dist/elements/error-state.js +1 -1
  88. package/dist/elements/feedback-dialog.js +4 -3
  89. package/dist/elements/file-tree.js +2 -2
  90. package/dist/elements/flow-graph.js +2 -2
  91. package/dist/elements/guardrail-notice.js +3 -3
  92. package/dist/elements/image-generation.js +1 -1
  93. package/dist/elements/inline-citation.js +3 -3
  94. package/dist/elements/job-progress.js +3 -3
  95. package/dist/elements/launcher-bubble.js +2 -2
  96. package/dist/elements/loading-state.js +1 -1
  97. package/dist/elements/map-answer.js +3 -2
  98. package/dist/elements/markdown.js +5 -4
  99. package/dist/elements/math-block.js +1 -1
  100. package/dist/elements/mcp-server-panel.js +3 -3
  101. package/dist/elements/message-attachment.js +4 -4
  102. package/dist/elements/message-pair.js +1 -1
  103. package/dist/elements/message-queue.js +2 -2
  104. package/dist/elements/mobile-composer.js +4 -3
  105. package/dist/elements/model-picker.js +3 -3
  106. package/dist/elements/onboarding.js +2 -2
  107. package/dist/elements/permission-grant.js +2 -2
  108. package/dist/elements/permission-scopes.js +5 -4
  109. package/dist/elements/prompt-library.js +7 -6
  110. package/dist/elements/queue-dock.js +4 -3
  111. package/dist/elements/quota-banner.js +1 -1
  112. package/dist/elements/quote-reply.js +1 -1
  113. package/dist/elements/read-aloud.js +2 -2
  114. package/dist/elements/reasoning-panel.js +2 -1
  115. package/dist/elements/recommendation-card.d.ts +1 -1
  116. package/dist/elements/recommendation-card.js +2 -2
  117. package/dist/elements/regenerate-menu.js +2 -2
  118. package/dist/elements/research-report.js +1 -1
  119. package/dist/elements/retrieval-chunks.js +1 -1
  120. package/dist/elements/revert-dock.js +5 -4
  121. package/dist/elements/reviewable-diff.js +1 -1
  122. package/dist/elements/schedule-card.js +3 -3
  123. package/dist/elements/score-breakdown.js +1 -1
  124. package/dist/elements/scroll-anchor.js +2 -2
  125. package/dist/elements/settings-panel.js +3 -2
  126. package/dist/elements/shared-conversation.js +2 -2
  127. package/dist/elements/sources.js +4 -3
  128. package/dist/elements/speaker-identity.js +1 -1
  129. package/dist/elements/spec-sheet.js +1 -1
  130. package/dist/elements/streaming-text.js +1 -1
  131. package/dist/elements/subagent-list.js +2 -2
  132. package/dist/elements/suggestions.js +1 -1
  133. package/dist/elements/surfaces.d.ts +1 -1
  134. package/dist/elements/surfaces.js +2 -1
  135. package/dist/elements/tail-status.js +1 -1
  136. package/dist/elements/terminal-block.js +1 -1
  137. package/dist/elements/thread-list.js +1 -1
  138. package/dist/elements/thread-search.js +5 -4
  139. package/dist/elements/timeline.js +1 -1
  140. package/dist/elements/todo-list.js +2 -2
  141. package/dist/elements/tool-call.js +4 -3
  142. package/dist/elements/tool-error.js +2 -2
  143. package/dist/elements/tool-group.js +1 -1
  144. package/dist/elements/tool-timeline.js +4 -3
  145. package/dist/elements/trace-waterfall.js +1 -1
  146. package/dist/elements/verdict-row.js +2 -2
  147. package/dist/elements/voice-conversation.js +3 -2
  148. package/dist/elements/web-preview.js +1 -1
  149. package/dist/elements/web-search.js +2 -2
  150. package/dist/elements/work-collapse.js +2 -1
  151. package/dist/flow/node-card.js +3 -2
  152. package/dist/flow/use-flow-theme.js +2 -1
  153. package/dist/forms/_chassis-size.d.ts +22 -0
  154. package/dist/forms/_chassis.d.ts +28 -15
  155. package/dist/forms/_chassis.js +34 -8
  156. package/dist/forms/_listbox.js +8 -5
  157. package/dist/forms/autocomplete.d.ts +2 -1
  158. package/dist/forms/checkbox.js +8 -2
  159. package/dist/forms/combobox.d.ts +2 -1
  160. package/dist/forms/env-var-input.d.ts +2 -1
  161. package/dist/forms/env-var-input.js +3 -2
  162. package/dist/forms/field.d.ts +2 -1
  163. package/dist/forms/field.js +15 -4
  164. package/dist/forms/file-upload.js +3 -2
  165. package/dist/forms/index.d.ts +2 -1
  166. package/dist/forms/input-group.d.ts +2 -1
  167. package/dist/forms/input.d.ts +2 -1
  168. package/dist/forms/multi-select.d.ts +2 -1
  169. package/dist/forms/number-field.js +2 -1
  170. package/dist/forms/otp-field.d.ts +2 -1
  171. package/dist/forms/password-input.d.ts +2 -1
  172. package/dist/forms/password-input.js +4 -2
  173. package/dist/forms/radio-group.js +6 -2
  174. package/dist/forms/rating.js +2 -1
  175. package/dist/forms/scrub-input.d.ts +2 -1
  176. package/dist/forms/scrub-input.js +2 -1
  177. package/dist/forms/search-input.d.ts +2 -1
  178. package/dist/forms/search-input.js +2 -1
  179. package/dist/forms/select.d.ts +2 -1
  180. package/dist/forms/select.js +6 -2
  181. package/dist/forms/slider.js +6 -2
  182. package/dist/forms/switch.js +6 -2
  183. package/dist/forms/tags-input.d.ts +2 -1
  184. package/dist/forms/textarea.js +2 -1
  185. package/dist/forms/toggle-group.d.ts +1 -1
  186. package/dist/forms/toggle.d.ts +1 -1
  187. package/dist/forms/toggle.js +3 -1
  188. package/dist/index.d.ts +4 -3
  189. package/dist/index.js +2 -2
  190. package/dist/instruments/_data-row.js +2 -1
  191. package/dist/instruments/app-window-frame.js +1 -1
  192. package/dist/instruments/code-block.js +8 -2
  193. package/dist/instruments/group-bar.js +1 -1
  194. package/dist/instruments/ledger.js +6 -2
  195. package/dist/instruments/log-viewer.js +5 -3
  196. package/dist/instruments/progress.js +5 -2
  197. package/dist/instruments/seam-grid.js +5 -3
  198. package/dist/instruments/stat.js +10 -3
  199. package/dist/instruments/table.js +28 -10
  200. package/dist/instruments/terminal-frame.js +4 -2
  201. package/dist/instruments/usage-chart.js +1 -1
  202. package/dist/layout/_collapse.js +6 -1
  203. package/dist/layout/bento.js +7 -4
  204. package/dist/layout/breadcrumb.js +7 -3
  205. package/dist/layout/card.js +14 -6
  206. package/dist/layout/carousel.js +3 -2
  207. package/dist/layout/collapsible.js +5 -1
  208. package/dist/layout/container.js +2 -1
  209. package/dist/layout/description-list.js +4 -1
  210. package/dist/layout/frames.js +11 -5
  211. package/dist/layout/item.js +3 -2
  212. package/dist/layout/link.d.ts +16 -0
  213. package/dist/layout/link.js +22 -3
  214. package/dist/layout/pagination.js +2 -1
  215. package/dist/layout/preview.d.ts +32 -12
  216. package/dist/layout/preview.js +149 -40
  217. package/dist/layout/resizable.js +2 -1
  218. package/dist/layout/sidebar.js +11 -3
  219. package/dist/layout/stepper.js +6 -2
  220. package/dist/lib/cn.js +29 -2
  221. package/dist/midi/musical-time-input.d.ts +2 -1
  222. package/dist/midi/piano-keyboard.js +3 -2
  223. package/dist/midi/spectrum-visualizer.js +1 -1
  224. package/dist/midi/threshold-rail.js +2 -1
  225. package/dist/midi/timeline-ruler.js +1 -1
  226. package/dist/overlays/_surface.d.ts +72 -12
  227. package/dist/overlays/_surface.js +86 -12
  228. package/dist/overlays/command-palette.js +9 -5
  229. package/dist/overlays/dialog.d.ts +5 -0
  230. package/dist/overlays/dialog.js +6 -1
  231. package/dist/overlays/info-tip.js +2 -1
  232. package/dist/overlays/menubar.js +3 -1
  233. package/dist/overlays/popover.js +2 -1
  234. package/dist/overlays/toast.js +6 -2
  235. package/dist/overlays/tooltip.js +4 -1
  236. package/dist/primitives/button.d.ts +15 -0
  237. package/dist/primitives/button.js +40 -10
  238. package/dist/primitives/chip.d.ts +20 -2
  239. package/dist/primitives/chip.js +39 -17
  240. package/dist/primitives/kbd.d.ts +6 -0
  241. package/dist/primitives/kbd.js +10 -1
  242. package/dist/primitives/skeleton.js +1 -1
  243. package/dist/system/_focus-ring-field.js +29 -0
  244. package/dist/system/_focus-ring.js +125 -0
  245. package/dist/system/_paint-elevation.js +9 -0
  246. package/dist/system/_paint-glass.js +46 -0
  247. package/dist/system/_paint-glow.js +51 -0
  248. package/dist/system/_paint-ground-pattern.js +30 -0
  249. package/dist/system/_paint-rest-shade.js +32 -0
  250. package/dist/system/_paint-rim.js +59 -0
  251. package/dist/system/_paint-stroke-sunken.js +19 -0
  252. package/dist/system/_paint-stroke-surface-1.js +19 -0
  253. package/dist/system/_paint-stroke-surface-2.js +40 -0
  254. package/dist/system/_paint-texture.js +56 -0
  255. package/dist/system/_style-app-bar.js +65 -0
  256. package/dist/system/_style-band.js +57 -0
  257. package/dist/system/_style-body-leading.js +21 -0
  258. package/dist/system/_style-body-size.js +30 -0
  259. package/dist/system/_style-body-weight.js +24 -0
  260. package/dist/system/_style-body.js +27 -0
  261. package/dist/system/_style-caption.js +19 -0
  262. package/dist/system/_style-card-pad.js +43 -0
  263. package/dist/system/_style-check.js +33 -0
  264. package/dist/system/_style-chip.js +103 -0
  265. package/dist/system/_style-code.js +13 -0
  266. package/dist/system/_style-collapse.js +14 -0
  267. package/dist/system/_style-control-face.js +29 -0
  268. package/dist/system/_style-control-label.js +22 -0
  269. package/dist/system/_style-control-step.js +22 -0
  270. package/dist/system/_style-control.js +76 -0
  271. package/dist/system/_style-data-face.js +28 -0
  272. package/dist/system/_style-description.js +23 -0
  273. package/dist/system/_style-eyebrow.js +43 -0
  274. package/dist/system/_style-footer-rule.js +47 -0
  275. package/dist/system/_style-gutter.js +17 -0
  276. package/dist/system/_style-help-ink.js +14 -0
  277. package/dist/system/_style-help.js +29 -0
  278. package/dist/system/_style-input-face.js +34 -0
  279. package/dist/system/_style-kbd.js +46 -0
  280. package/dist/system/_style-label-case.js +36 -0
  281. package/dist/system/_style-label-face.js +32 -0
  282. package/dist/system/_style-label-ink.js +29 -0
  283. package/dist/system/_style-label-leading.js +14 -0
  284. package/dist/system/_style-label-size.js +36 -0
  285. package/dist/system/_style-label-tracking.js +45 -0
  286. package/dist/system/_style-label-weight.js +40 -0
  287. package/dist/system/_style-lede.js +49 -0
  288. package/dist/system/_style-link.js +46 -0
  289. package/dist/system/_style-menu.js +30 -0
  290. package/dist/system/_style-nav-item.js +41 -0
  291. package/dist/system/_style-nav-voice.js +43 -0
  292. package/dist/system/_style-option.js +42 -0
  293. package/dist/system/_style-overlay-title.js +35 -0
  294. package/dist/system/_style-page-title.js +48 -0
  295. package/dist/system/_style-popover-pad.js +13 -0
  296. package/dist/system/_style-quiet-ink.js +13 -0
  297. package/dist/system/_style-row-pad.js +13 -0
  298. package/dist/system/_style-seam.js +43 -0
  299. package/dist/system/_style-section-rule.js +26 -0
  300. package/dist/system/_style-segment.js +30 -0
  301. package/dist/system/_style-segmented-control.js +86 -0
  302. package/dist/system/_style-selected.js +36 -0
  303. package/dist/system/_style-stage-marks.js +26 -0
  304. package/dist/system/_style-tab.js +71 -0
  305. package/dist/system/_style-textarea.js +21 -0
  306. package/dist/system/_style-title.js +37 -0
  307. package/dist/system/_style-tooltip.js +17 -0
  308. package/dist/system/density.d.ts +15 -5
  309. package/dist/system/density.js +188 -25
  310. package/dist/system/index.d.ts +2 -2
  311. package/dist/system/index.js +2 -2
  312. package/dist/system/overrides.d.ts +1 -0
  313. package/dist/system/overrides.js +151 -3
  314. package/dist/system/portal.d.ts +3 -2
  315. package/dist/system/portal.js +22 -10
  316. package/dist/system/prepaint.d.ts +21 -5
  317. package/dist/system/prepaint.js +3 -1
  318. package/dist/system/published.d.ts +1 -0
  319. package/dist/system/published.js +131 -0
  320. package/dist/system/theme-provider.d.ts +168 -60
  321. package/dist/system/theme-provider.js +375 -79
  322. package/dist/system/theme-registry.d.ts +2 -1
  323. package/dist/system/theme-registry.js +27 -10
  324. package/dist/system/use-density.js +4 -3
  325. package/dist/system/use-theme.d.ts +5 -2
  326. package/dist/system/use-theme.js +7 -4
  327. package/dist/system/vocabulary.js +2 -2
  328. package/dist/theming/create-theme.js +12 -6
  329. package/dist/theming/serialize.d.ts +34 -2
  330. package/dist/theming/serialize.js +86 -4
  331. package/manifest/components/accordion.json +7 -1
  332. package/manifest/components/agent-pile.json +3 -0
  333. package/manifest/components/alert-dialog.json +38 -1
  334. package/manifest/components/app-bar.json +23 -2
  335. package/manifest/components/app-shell.json +5 -0
  336. package/manifest/components/ask-box.json +3 -1
  337. package/manifest/components/autocomplete.json +49 -1
  338. package/manifest/components/band.json +14 -3
  339. package/manifest/components/bento.json +12 -1
  340. package/manifest/components/breadcrumb.json +8 -1
  341. package/manifest/components/button.json +31 -3
  342. package/manifest/components/calendar.json +7 -0
  343. package/manifest/components/card.json +28 -1
  344. package/manifest/components/carousel.json +4 -1
  345. package/manifest/components/channel-matrix.json +40 -1
  346. package/manifest/components/chart-tooltip-content.json +38 -1
  347. package/manifest/components/chat-empty-state.json +3 -1
  348. package/manifest/components/checkbox-group.json +14 -0
  349. package/manifest/components/checkbox.json +14 -0
  350. package/manifest/components/chip.json +16 -1
  351. package/manifest/components/clamp.json +3 -1
  352. package/manifest/components/code-block.json +10 -1
  353. package/manifest/components/collapsible.json +13 -2
  354. package/manifest/components/color-area.json +4 -2
  355. package/manifest/components/color-field.json +14 -0
  356. package/manifest/components/color-picker.json +14 -0
  357. package/manifest/components/color-slider.json +3 -1
  358. package/manifest/components/colors-section.json +9 -1
  359. package/manifest/components/combobox.json +49 -1
  360. package/manifest/components/command-palette.json +37 -1
  361. package/manifest/components/composer-actions.json +3 -0
  362. package/manifest/components/composer-attach-button.json +3 -0
  363. package/manifest/components/composer-attachment-chip.json +3 -0
  364. package/manifest/components/composer-attachments.json +3 -0
  365. package/manifest/components/composer-bar.json +3 -0
  366. package/manifest/components/composer-command-item.json +3 -0
  367. package/manifest/components/composer-context.json +3 -0
  368. package/manifest/components/composer-input.json +3 -0
  369. package/manifest/components/composer-menu-item.json +3 -0
  370. package/manifest/components/composer-menu.json +3 -0
  371. package/manifest/components/composer-model-item.json +3 -0
  372. package/manifest/components/composer-model-trigger.json +3 -0
  373. package/manifest/components/composer-person-item.json +3 -0
  374. package/manifest/components/composer-send.json +3 -0
  375. package/manifest/components/composer-toolbar.json +3 -0
  376. package/manifest/components/composer-voice-button.json +3 -0
  377. package/manifest/components/composer-voice.json +3 -0
  378. package/manifest/components/composer.json +14 -0
  379. package/manifest/components/confidence-marker.json +3 -1
  380. package/manifest/components/container.json +2 -1
  381. package/manifest/components/context-menu.json +38 -1
  382. package/manifest/components/conversation-search.json +3 -1
  383. package/manifest/components/cue-mark.json +2 -2
  384. package/manifest/components/cue-portal-frame.json +1 -1
  385. package/manifest/components/data-row.json +3 -1
  386. package/manifest/components/data-tree.json +3 -1
  387. package/manifest/components/date-field.json +14 -0
  388. package/manifest/components/date-picker.json +14 -0
  389. package/manifest/components/date-range-picker.json +14 -0
  390. package/manifest/components/delegation-card.json +3 -1
  391. package/manifest/components/density.json +21 -7
  392. package/manifest/components/description-list.json +6 -1
  393. package/manifest/components/dialog.json +39 -1
  394. package/manifest/components/disclosure.json +13 -2
  395. package/manifest/components/dmx-bar.json +37 -1
  396. package/manifest/components/dmx-strip.json +37 -1
  397. package/manifest/components/drawer.json +38 -1
  398. package/manifest/components/dropdown-menu.json +38 -1
  399. package/manifest/components/edit-message.json +3 -1
  400. package/manifest/components/elements-command-palette.json +3 -1
  401. package/manifest/components/elements-composer.json +3 -0
  402. package/manifest/components/empty-state-composer.json +3 -1
  403. package/manifest/components/empty-state-greeting.json +3 -1
  404. package/manifest/components/empty-state-suggestion.json +3 -1
  405. package/manifest/components/empty-state-suggestions.json +3 -1
  406. package/manifest/components/env-var-input.json +14 -1
  407. package/manifest/components/export-dialog.json +6 -1
  408. package/manifest/components/eyebrow.json +13 -2
  409. package/manifest/components/feedback-dialog.json +3 -0
  410. package/manifest/components/field-description.json +14 -0
  411. package/manifest/components/field-error.json +14 -0
  412. package/manifest/components/field-label.json +15 -1
  413. package/manifest/components/field.json +14 -0
  414. package/manifest/components/file-upload.json +3 -0
  415. package/manifest/components/footer.json +14 -1
  416. package/manifest/components/frames.json +14 -1
  417. package/manifest/components/hover-card.json +38 -1
  418. package/manifest/components/info-tip.json +3 -0
  419. package/manifest/components/input-group.json +14 -0
  420. package/manifest/components/input.json +14 -0
  421. package/manifest/components/item.json +3 -1
  422. package/manifest/components/kbd.json +10 -1
  423. package/manifest/components/ledger.json +9 -2
  424. package/manifest/components/link.json +10 -0
  425. package/manifest/components/log-viewer.json +10 -0
  426. package/manifest/components/map-answer.json +3 -1
  427. package/manifest/components/markdown-text.json +3 -0
  428. package/manifest/components/menubar.json +41 -2
  429. package/manifest/components/message-list.json +10 -0
  430. package/manifest/components/message.json +6 -1
  431. package/manifest/components/mobile-composer.json +3 -1
  432. package/manifest/components/multi-select.json +49 -1
  433. package/manifest/components/musical-time-input.json +14 -0
  434. package/manifest/components/navigation-menu.json +41 -1
  435. package/manifest/components/node-card.json +3 -0
  436. package/manifest/components/number-field.json +14 -1
  437. package/manifest/components/otp-field.json +13 -0
  438. package/manifest/components/page-shell.json +14 -0
  439. package/manifest/components/pagination.json +3 -0
  440. package/manifest/components/panel-header.json +12 -0
  441. package/manifest/components/panel.json +13 -1
  442. package/manifest/components/password-input.json +14 -1
  443. package/manifest/components/permission-scopes.json +3 -1
  444. package/manifest/components/piano-keyboard.json +3 -0
  445. package/manifest/components/popover.json +39 -1
  446. package/manifest/components/preset-section.json +9 -1
  447. package/manifest/components/preview.json +30 -10
  448. package/manifest/components/progress.json +6 -1
  449. package/manifest/components/prompt-library.json +3 -1
  450. package/manifest/components/queue-dock.json +3 -1
  451. package/manifest/components/radio-group.json +8 -0
  452. package/manifest/components/radio.json +8 -0
  453. package/manifest/components/rating.json +4 -1
  454. package/manifest/components/reasoning-panel.json +3 -1
  455. package/manifest/components/recommendation-card.json +1 -1
  456. package/manifest/components/resizable.json +4 -1
  457. package/manifest/components/revert-dock.json +3 -1
  458. package/manifest/components/row.json +5 -1
  459. package/manifest/components/scroll-area.json +4 -2
  460. package/manifest/components/scrollable-tabs-list.json +19 -0
  461. package/manifest/components/scrub-input.json +14 -1
  462. package/manifest/components/seam-cell.json +1 -0
  463. package/manifest/components/seam-grid.json +1 -0
  464. package/manifest/components/seam-list.json +5 -1
  465. package/manifest/components/search-input.json +14 -1
  466. package/manifest/components/section-header.json +15 -2
  467. package/manifest/components/segmented-control.json +17 -0
  468. package/manifest/components/select.json +28 -0
  469. package/manifest/components/settings-panel.json +3 -0
  470. package/manifest/components/shape-section.json +9 -1
  471. package/manifest/components/sheet.json +38 -1
  472. package/manifest/components/shimmer-label.json +3 -0
  473. package/manifest/components/sidebar.json +19 -2
  474. package/manifest/components/slider.json +8 -0
  475. package/manifest/components/sources.json +3 -1
  476. package/manifest/components/stat.json +9 -0
  477. package/manifest/components/status-bar.json +4 -0
  478. package/manifest/components/stepper.json +8 -0
  479. package/manifest/components/swap-label.json +3 -0
  480. package/manifest/components/switch.json +8 -0
  481. package/manifest/components/table-scroll-region.json +20 -2
  482. package/manifest/components/table.json +20 -2
  483. package/manifest/components/tabs.json +20 -1
  484. package/manifest/components/tags-input.json +49 -1
  485. package/manifest/components/terminal-frame.json +3 -0
  486. package/manifest/components/textarea.json +16 -0
  487. package/manifest/components/theme-configurator.json +38 -1
  488. package/manifest/components/theme-provider.json +37 -19
  489. package/manifest/components/thread-search.json +3 -1
  490. package/manifest/components/threshold-rail.json +3 -0
  491. package/manifest/components/time-field.json +14 -0
  492. package/manifest/components/toast.json +39 -0
  493. package/manifest/components/toggle-group.json +1 -19
  494. package/manifest/components/toggle.json +3 -5
  495. package/manifest/components/token-editor.json +6 -1
  496. package/manifest/components/tool-call-card.json +9 -2
  497. package/manifest/components/tool-call.json +3 -1
  498. package/manifest/components/tool-timeline.json +3 -1
  499. package/manifest/components/toolbar.json +4 -1
  500. package/manifest/components/tooltip.json +40 -1
  501. package/manifest/components/tree-visibility-toggle.json +3 -0
  502. package/manifest/components/tree.json +3 -0
  503. package/manifest/components/universe-grid.json +3 -0
  504. package/manifest/components/voice-conversation.json +3 -0
  505. package/manifest/components/work-collapse.json +3 -1
  506. package/manifest/manifest.json +205 -185
  507. package/manifest/tokens.json +260 -4
  508. package/package.json +6 -6
@@ -1,8 +1,11 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
3
  import { Button } from "../primitives/button.js";
4
+ import { LABEL_FACE } from "../system/_style-label-face.js";
4
5
  import { Chip } from "../primitives/chip.js";
5
6
  import { useIsomorphicLayoutEffect } from "../system/use-isomorphic-layout-effect.js";
7
+ import { LABEL_CASE } from "../system/_style-label-case.js";
8
+ import { LABEL_TRACKING } from "../system/_style-label-tracking.js";
6
9
  import { overlaySurfaceClasses } from "../overlays/_surface.js";
7
10
  import { IconButton } from "../primitives/icon-button.js";
8
11
  import { TwoStepButton } from "../instruments/two-step-button.js";
@@ -221,7 +224,7 @@ function ThemeConfigurator({ position: positionProp, defaultPosition = "floating
221
224
  }),
222
225
  /* @__PURE__ */ jsx("span", {
223
226
  id: titleId,
224
- className: "flex-1 truncate font-mono text-(length:--cue-text-label) tracking-(--cue-tracking-caps) text-fg-muted uppercase",
227
+ className: cn("flex-1 truncate text-(length:--cue-text-label) text-fg-muted", LABEL_FACE, LABEL_TRACKING, LABEL_CASE),
225
228
  children: title
226
229
  }),
227
230
  moved === 0 ? null : /* @__PURE__ */ jsx(Chip, {
@@ -1,6 +1,9 @@
1
1
  "use client";
2
2
  import { Input } from "../forms/input.js";
3
3
  import { Button } from "../primitives/button.js";
4
+ import { LABEL_FACE } from "../system/_style-label-face.js";
5
+ import { LABEL_CASE } from "../system/_style-label-case.js";
6
+ import { LABEL_TRACKING } from "../system/_style-label-tracking.js";
4
7
  import { Tabs } from "../chrome/tabs.js";
5
8
  import { Field, FieldLabel } from "../forms/field.js";
6
9
  import { CopyButton } from "../instruments/copy-button.js";
@@ -70,7 +73,7 @@ function ExportDialog({ open, onOpenChange, overrides, scope, defaultFormat = "c
70
73
  /* @__PURE__ */ jsxs(Field, {
71
74
  className: "gap-(--cue-space-1)",
72
75
  children: [/* @__PURE__ */ jsx(FieldLabel, {
73
- className: "font-mono text-(length:--cue-text-micro) tracking-(--cue-tracking-caps) uppercase",
76
+ className: `${LABEL_FACE} text-(length:--cue-text-micro) ${LABEL_TRACKING} ${LABEL_CASE}`,
74
77
  children: "Theme name"
75
78
  }), /* @__PURE__ */ jsx(Input, {
76
79
  size: "sm",
@@ -96,7 +99,7 @@ function ExportDialog({ open, onOpenChange, overrides, scope, defaultFormat = "c
96
99
  }), /* @__PURE__ */ jsx("pre", {
97
100
  "data-testid": "configurator-export-text",
98
101
  "data-slot": "configurator-export-text",
99
- className: "max-h-[38vh] overflow-auto rounded-(--radius-control) border border-border bg-sunken p-(--cue-space-3) font-mono text-(length:--cue-text-label) leading-(--cue-leading-ui) whitespace-pre text-fg",
102
+ className: "max-h-[38vh] overflow-auto rounded-control border border-border bg-sunken p-(--cue-space-3) font-mono text-(length:--cue-text-label) leading-(--cue-leading-ui) whitespace-pre text-fg",
100
103
  children: entry.text
101
104
  })]
102
105
  }, entry.id))]
@@ -1,6 +1,10 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { FOCUS_RING } from "../system/_focus-ring.js";
3
4
  import { Input } from "../forms/input.js";
5
+ import { LABEL_FACE } from "../system/_style-label-face.js";
6
+ import { LABEL_CASE } from "../system/_style-label-case.js";
7
+ import { LABEL_TRACKING } from "../system/_style-label-tracking.js";
4
8
  import { useDensities, useThemes } from "../system/theme-registry.js";
5
9
  import { SectionHeader } from "../chrome/section-header.js";
6
10
  import { SegmentedControl } from "../chrome/segmented-control.js";
@@ -133,7 +137,7 @@ function TextTokenField({ label, token, edits, placeholder }) {
133
137
  return /* @__PURE__ */ jsxs(Field, {
134
138
  className: "gap-(--cue-space-1)",
135
139
  children: [/* @__PURE__ */ jsx(FieldLabel, {
136
- className: "font-mono text-(length:--cue-text-micro) tracking-(--cue-tracking-caps) uppercase",
140
+ className: `${LABEL_FACE} text-(length:--cue-text-micro) ${LABEL_TRACKING} ${LABEL_CASE}`,
137
141
  children: label
138
142
  }), /* @__PURE__ */ jsx(Input, {
139
143
  size: "sm",
@@ -193,7 +197,7 @@ function PresetSection({ edits, zoom, className }) {
193
197
  "aria-pressed": active,
194
198
  "data-slot": "configurator-preset",
195
199
  onClick: () => setTheme(name),
196
- className: cn("flex cursor-pointer flex-col gap-(--cue-space-2) rounded-(--radius-control) border p-(--cue-space-2) text-left outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent", active ? "border-accent text-accent" : "border-border text-fg-muted hover:border-border-strong hover:text-fg"),
200
+ className: cn(`flex cursor-pointer flex-col gap-(--cue-space-2) rounded-control border p-(--cue-space-2) text-left outline-none ${FOCUS_RING}`, active ? "border-accent text-accent" : "border-border text-fg-muted hover:border-border-strong hover:text-fg"),
197
201
  children: [/* @__PURE__ */ jsx("span", {
198
202
  className: "truncate font-mono text-(length:--cue-text-label)",
199
203
  children: name
@@ -1,5 +1,8 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { LABEL_FACE } from "../system/_style-label-face.js";
4
+ import { LABEL_CASE } from "../system/_style-label-case.js";
5
+ import { LABEL_TRACKING } from "../system/_style-label-tracking.js";
3
6
  import { IconButton } from "../primitives/icon-button.js";
4
7
  import { tokenProperty } from "../theming/serialize.js";
5
8
  import { ColorPicker } from "../color/color-picker.js";
@@ -133,7 +136,7 @@ function TokenEditor({ values, overridden, onTokenChange, onTokenReset, groups =
133
136
  "data-slot": "configurator-token-group",
134
137
  className: "flex flex-col gap-(--cue-space-2)",
135
138
  children: [/* @__PURE__ */ jsx("span", {
136
- className: "font-mono text-(length:--cue-text-micro) tracking-(--cue-tracking-caps) text-fg-subtle uppercase",
139
+ className: cn("text-(length:--cue-text-micro) text-fg-subtle", LABEL_FACE, LABEL_TRACKING, LABEL_CASE),
137
140
  children: group.label
138
141
  }), group.tokens.map((token) => {
139
142
  const property = tokenProperty(token);
@@ -1,5 +1,9 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { FOCUS_RING } from "../system/_focus-ring.js";
4
+ import { LABEL_FACE } from "../system/_style-label-face.js";
5
+ import { LABEL_CASE } from "../system/_style-label-case.js";
6
+ import { LABEL_TRACKING, LABEL_TRACKING_TIGHT } from "../system/_style-label-tracking.js";
3
7
  import "react";
4
8
  import { jsx } from "react/jsx-runtime";
5
9
  import { DayPicker } from "react-day-picker";
@@ -23,29 +27,29 @@ const CALENDAR_CLASSES = {
23
27
  months: "relative flex flex-wrap items-start gap-(--cue-space-5)",
24
28
  month: "flex flex-col gap-(--cue-space-2)",
25
29
  month_caption: "flex h-control-sm items-center justify-center",
26
- caption_label: "font-mono text-(length:--cue-text-label) tracking-(--cue-tracking-caps) text-fg-subtle uppercase",
30
+ caption_label: `${LABEL_FACE} text-(length:--cue-text-label) ${LABEL_TRACKING} text-fg-subtle ${LABEL_CASE}`,
27
31
  nav: "absolute inset-x-0 top-0 flex h-control-sm items-center justify-between",
28
- button_previous: "flex size-control-sm cursor-pointer items-center justify-center rounded-(--radius-control) border-0 bg-transparent p-0 text-fg-subtle outline-none transition-colors duration-150 hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent disabled:pointer-events-none disabled:opacity-30 motion-reduce:transition-none",
29
- button_next: "flex size-control-sm cursor-pointer items-center justify-center rounded-(--radius-control) border-0 bg-transparent p-0 text-fg-subtle outline-none transition-colors duration-150 hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent disabled:pointer-events-none disabled:opacity-30 motion-reduce:transition-none",
32
+ button_previous: `flex size-control-sm cursor-pointer items-center justify-center rounded-control border-0 bg-transparent p-0 text-fg-subtle outline-none transition-colors duration-150 hover:text-fg ${FOCUS_RING} disabled:pointer-events-none disabled:opacity-30 motion-reduce:transition-none`,
33
+ button_next: `flex size-control-sm cursor-pointer items-center justify-center rounded-control border-0 bg-transparent p-0 text-fg-subtle outline-none transition-colors duration-150 hover:text-fg ${FOCUS_RING} disabled:pointer-events-none disabled:opacity-30 motion-reduce:transition-none`,
30
34
  chevron: "size-icon-sm fill-current",
31
35
  month_grid: "border-collapse border-spacing-0",
32
36
  weekdays: "",
33
- weekday: "size-control-sm p-0 text-center align-middle font-mono text-(length:--cue-text-micro) font-normal tracking-(--cue-tracking-caps-tight) text-fg-subtle uppercase",
37
+ weekday: `size-control-sm p-0 text-center align-middle ${LABEL_FACE} text-(length:--cue-text-micro) font-normal ${LABEL_TRACKING_TIGHT} text-fg-subtle ${LABEL_CASE}`,
34
38
  week: "",
35
39
  day: "p-0 text-center align-middle",
36
- day_button: "size-control-sm cursor-pointer rounded-(--radius-control) border-0 bg-transparent p-0 font-mono text-(length:--cue-text-ui) tabular-nums text-fg-muted outline-none transition-colors duration-150 hover:bg-surface-3 hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent disabled:pointer-events-none disabled:opacity-30 motion-reduce:transition-none",
40
+ day_button: `size-control-sm cursor-pointer rounded-control border-0 bg-transparent p-0 font-mono text-(length:--cue-text-ui) tabular-nums text-fg-muted outline-none transition-colors duration-150 hover:bg-surface-3 hover:text-fg ${FOCUS_RING} disabled:pointer-events-none disabled:opacity-30 motion-reduce:transition-none`,
37
41
  today: "[&_button]:font-medium [&_button]:ring-1 [&_button]:ring-inset [&_button]:ring-accent/60",
38
42
  outside: "[&_button]:text-fg-subtle [&_button]:opacity-50",
39
43
  disabled: "opacity-40",
40
44
  hidden: "invisible",
41
45
  selected: "bg-accent text-accent-fg [&_button]:bg-accent [&_button]:text-accent-fg [&_button]:hover:bg-accent-hover",
42
- range_start: "rounded-l-(--radius-control)",
43
- range_end: "rounded-r-(--radius-control)",
46
+ range_start: "rounded-l-control",
47
+ range_end: "rounded-r-control",
44
48
  range_middle: "rounded-none bg-accent-soft text-fg [&_button]:rounded-none [&_button]:bg-transparent [&_button]:text-fg",
45
49
  footer: "pt-(--cue-space-2) font-mono text-(length:--cue-text-label) text-fg-muted",
46
50
  dropdowns: "flex items-center gap-(--cue-space-2)",
47
51
  dropdown_root: "relative inline-flex items-center",
48
- dropdown: "h-control-sm cursor-pointer rounded-(--radius-control) border border-border bg-sunken px-(--cue-space-2) font-mono text-(length:--cue-text-label) text-fg outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent",
52
+ dropdown: `h-control-sm cursor-pointer rounded-control border border-border bg-sunken px-(--cue-space-2) font-mono text-(length:--cue-text-label) text-fg outline-none ${FOCUS_RING}`,
49
53
  week_number: "size-control-sm text-center align-middle font-mono text-(length:--cue-text-micro) tabular-nums text-fg-subtle",
50
54
  week_number_header: "size-control-sm text-center align-middle font-mono text-(length:--cue-text-micro) text-fg-subtle"
51
55
  };
@@ -1,4 +1,5 @@
1
- import { FormControlSize } from "../forms/_chassis.js";
1
+ import { FormControlSize } from "../forms/_chassis-size.js";
2
+ import "../forms/_chassis.js";
2
3
  import * as React from "react";
3
4
  import { DateFieldProps, DateInputProps, DateValue } from "react-aria-components";
4
5
  //#region src/date/date-field.d.ts
@@ -1,4 +1,5 @@
1
- import { FormControlSize } from "../forms/_chassis.js";
1
+ import { FormControlSize } from "../forms/_chassis-size.js";
2
+ import "../forms/_chassis.js";
2
3
  import { CalendarProps } from "./calendar.js";
3
4
  import * as React from "react";
4
5
  //#region src/date/date-picker.d.ts
@@ -1,4 +1,5 @@
1
- import { FormControlSize } from "../forms/_chassis.js";
1
+ import { FormControlSize } from "../forms/_chassis-size.js";
2
+ import "../forms/_chassis.js";
2
3
  import { CalendarProps } from "./calendar.js";
3
4
  import * as React from "react";
4
5
  import { DateRange } from "react-day-picker";
@@ -1,4 +1,5 @@
1
- import { FormControlSize } from "../forms/_chassis.js";
1
+ import { FormControlSize } from "../forms/_chassis-size.js";
2
+ import "../forms/_chassis.js";
2
3
  import * as React from "react";
3
4
  import { DateInputProps, TimeFieldProps, TimeValue } from "react-aria-components";
4
5
  //#region src/date/time-field.d.ts
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { FOCUS_RING } from "../system/_focus-ring.js";
3
4
  import { useIsomorphicLayoutEffect } from "../system/use-isomorphic-layout-effect.js";
4
5
  import { useComposedRefs } from "../lib/compose.js";
5
6
  import { useCuePortalProps } from "../system/portal.js";
@@ -237,7 +238,7 @@ const ChannelMatrix = React.forwardRef(function ChannelMatrix({ className, data,
237
238
  selectUniverse(index);
238
239
  selectMode("detail");
239
240
  },
240
- className: "flex cursor-pointer flex-col gap-(--cue-space-2) rounded-(--radius-control) border border-border bg-surface-1 p-(--cue-space-2) text-left outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent data-[selected=true]:border-accent",
241
+ className: `flex cursor-pointer flex-col gap-(--cue-space-2) rounded-control border border-border bg-surface-1 p-(--cue-space-2) text-left outline-none ${FOCUS_RING} data-[selected=true]:border-accent`,
241
242
  children: [/* @__PURE__ */ jsxs("span", {
242
243
  className: "font-mono text-(length:--cue-text-micro) tabular-nums text-fg-muted",
243
244
  children: ["U", String(index).padStart(2, "0")]
@@ -277,7 +278,7 @@ function ControlButton({ pressed, onClick, children }) {
277
278
  type: "button",
278
279
  "aria-pressed": pressed,
279
280
  onClick,
280
- className: "flex h-control-sm cursor-pointer items-center rounded-(--radius-control) px-(--cue-space-3) font-mono text-(length:--cue-text-label) text-fg-muted outline-none transition-colors duration-150 hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent aria-pressed:bg-accent-soft aria-pressed:text-accent motion-reduce:transition-none",
281
+ className: `flex h-control-sm cursor-pointer items-center rounded-control px-(--cue-space-3) font-mono text-(length:--cue-text-label) text-fg-muted outline-none transition-colors duration-150 hover:text-fg ${FOCUS_RING} aria-pressed:bg-accent-soft aria-pressed:text-accent motion-reduce:transition-none`,
281
282
  children
282
283
  });
283
284
  }
@@ -84,7 +84,7 @@ const DmxBar = React.forwardRef(function DmxBar({ className, data, height = DEFA
84
84
  "aria-label": summary,
85
85
  "data-slot": "dmx-bar-canvas",
86
86
  "data-live": String(live),
87
- className: "block w-full cursor-crosshair rounded-(--radius-control) border border-border bg-(--cue-data-ground) [image-rendering:pixelated] data-[live=false]:opacity-45",
87
+ className: "block w-full cursor-crosshair rounded-control border border-border bg-(--cue-data-ground) [image-rendering:pixelated] data-[live=false]:opacity-45",
88
88
  style: { height: toRem(height) }
89
89
  }),
90
90
  hover === null ? null : /* @__PURE__ */ jsx("span", {
@@ -172,7 +172,7 @@ const DmxStrip = React.forwardRef(function DmxStrip({ className, cells = DEFAULT
172
172
  role: "img",
173
173
  "aria-label": label ?? "Simulated DMX activity",
174
174
  "data-slot": "dmx-strip-canvas",
175
- className: "block w-full cursor-crosshair rounded-(--radius-control) border border-border bg-(--cue-data-ground) [image-rendering:pixelated]",
175
+ className: "block w-full cursor-crosshair rounded-control border border-border bg-(--cue-data-ground) [image-rendering:pixelated]",
176
176
  style: { height: toRem(height) }
177
177
  }),
178
178
  hover === null ? null : /* @__PURE__ */ jsx("span", {
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { FOCUS_RING } from "../system/_focus-ring.js";
3
4
  import { toRem } from "../instruments/_rem.js";
4
5
  import "./_ramp.js";
5
6
  import { UNIVERSE_TICKS, channelPercent, universeLayout } from "./_universe.js";
@@ -85,7 +86,7 @@ const UniverseGrid = React.forwardRef(function UniverseGrid({ className, allocat
85
86
  role: interactive ? "group" : "img",
86
87
  "aria-label": interactive ? label ?? "Universe" : label === void 0 ? summary : `${label}: ${summary}`,
87
88
  "data-slot": "universe-grid-track",
88
- className: "relative w-full overflow-hidden rounded-(--radius-control) border border-border bg-sunken",
89
+ className: "relative w-full overflow-hidden rounded-control border border-border bg-sunken",
89
90
  style: { height: toRem(height) },
90
91
  children: [
91
92
  GRIDLINES.filter((channel) => channel <= slots).map((channel) => /* @__PURE__ */ jsx("span", {
@@ -110,7 +111,7 @@ const UniverseGrid = React.forwardRef(function UniverseGrid({ className, allocat
110
111
  "data-conflict": block.conflict ? "true" : void 0,
111
112
  "aria-label": `${block.label}: channels ${block.start} to ${block.end}`,
112
113
  onClick: () => onSelect(block.allocation),
113
- className: cn("absolute inset-y-0 min-w-[2px] cursor-pointer rounded-[2px] outline-none transition-opacity duration-150 hover:opacity-85 focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent motion-reduce:transition-none", BLOCK_TONES[block.tone], block.conflict ? "z-10 ring-1 ring-danger" : void 0),
114
+ className: cn(`absolute inset-y-0 min-w-[2px] cursor-pointer rounded-[2px] outline-none transition-opacity duration-150 hover:opacity-85 ${FOCUS_RING} motion-reduce:transition-none`, BLOCK_TONES[block.tone], block.conflict ? "z-10 ring-1 ring-danger" : void 0),
114
115
  style: {
115
116
  left: `${block.left}%`,
116
117
  width: `${block.width}%`
@@ -28,7 +28,7 @@ const LEVEL_TINT = [
28
28
  function ActivityGraph({ data, start, end, title, total, className, ...props }) {
29
29
  return /* @__PURE__ */ jsxs("div", {
30
30
  "data-slot": "activity-graph",
31
- className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-(--radius-overlay) p-4", className),
31
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-4", className),
32
32
  ...props,
33
33
  children: [/* @__PURE__ */ jsxs("div", {
34
34
  className: "flex items-baseline justify-between",
@@ -55,7 +55,7 @@ function ActivityGraph({ data, start, end, title, total, className, ...props })
55
55
  }) })
56
56
  }), /* @__PURE__ */ jsx(HeatGraph.Grid, {
57
57
  className: "gap-[3px]",
58
- children: ({ cell }) => /* @__PURE__ */ jsx(HeatGraph.Cell, { className: cn("size-[9px] rounded-(--radius-control)", LEVEL_TINT[cell.level] ?? LEVEL_TINT[0]) })
58
+ children: ({ cell }) => /* @__PURE__ */ jsx(HeatGraph.Cell, { className: cn("size-[9px] rounded-control", LEVEL_TINT[cell.level] ?? LEVEL_TINT[0]) })
59
59
  })]
60
60
  }), /* @__PURE__ */ jsxs("div", {
61
61
  className: "flex items-center gap-1.5 self-end",
@@ -66,7 +66,7 @@ function ActivityGraph({ data, start, end, title, total, className, ...props })
66
66
  }),
67
67
  LEVEL_TINT.map((tint, level) => /* @__PURE__ */ jsx("span", {
68
68
  "aria-hidden": true,
69
- className: cn("size-[9px] rounded-(--radius-control)", tint)
69
+ className: cn("size-[9px] rounded-control", tint)
70
70
  }, level)),
71
71
  /* @__PURE__ */ jsx("span", {
72
72
  className: cn(mono, "text-fg-subtle"),
@@ -25,13 +25,13 @@ import { BotIcon, CheckIcon } from "lucide-react";
25
25
  function AgentCard({ name, description, provider, version, model, endpoint, skills, connected, onConnect, className, ...props }) {
26
26
  return /* @__PURE__ */ jsxs("div", {
27
27
  "data-slot": "agent-card",
28
- className: cn(paper, "flex w-full max-w-sm flex-col gap-3.5 rounded-(--radius-overlay) p-4", className),
28
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3.5 rounded-overlay p-4", className),
29
29
  ...props,
30
30
  children: [
31
31
  /* @__PURE__ */ jsxs("div", {
32
32
  className: "flex items-start gap-3",
33
33
  children: [/* @__PURE__ */ jsx("span", {
34
- className: "bg-surface-1 text-fg-muted flex size-9 shrink-0 items-center justify-center rounded-(--radius-surface)",
34
+ className: "bg-surface-1 text-fg-muted flex size-9 shrink-0 items-center justify-center rounded-surface",
35
35
  children: /* @__PURE__ */ jsx(BotIcon, { className: "size-4" })
36
36
  }), /* @__PURE__ */ jsxs("div", {
37
37
  className: "flex min-w-0 flex-1 flex-col",
@@ -59,7 +59,7 @@ function AgentCard({ name, description, provider, version, model, endpoint, skil
59
59
  children: skills.map((skill) => /* @__PURE__ */ jsxs("div", {
60
60
  className: "flex items-baseline gap-2",
61
61
  children: [/* @__PURE__ */ jsx("span", {
62
- className: cn(field, mono, "text-fg-muted shrink-0 rounded-(--radius-control) px-1.5 py-0.5"),
62
+ className: cn(field, mono, "text-fg-muted shrink-0 rounded-control px-1.5 py-0.5"),
63
63
  children: skill.name
64
64
  }), /* @__PURE__ */ jsx("span", {
65
65
  className: "text-fg-muted min-w-0 flex-1 truncate text-(length:--cue-text-ui)",
@@ -22,13 +22,13 @@ import { CheckIcon, Loader2Icon, TerminalIcon, XIcon } from "lucide-react";
22
22
  function ApprovalCard({ state, command, title, subtitle, onAllowOnce, onAlwaysAllow, onDeny, className, ...props }) {
23
23
  return /* @__PURE__ */ jsxs("div", {
24
24
  "data-slot": "approval-card",
25
- className: cn(paper, "flex w-full max-w-sm flex-col gap-3.5 rounded-(--radius-overlay) p-4", className),
25
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3.5 rounded-overlay p-4", className),
26
26
  ...props,
27
27
  children: [
28
28
  /* @__PURE__ */ jsxs("div", {
29
29
  className: "flex items-center gap-3",
30
30
  children: [/* @__PURE__ */ jsx("span", {
31
- className: "bg-surface-1 text-fg-muted flex size-9 shrink-0 items-center justify-center rounded-(--radius-surface)",
31
+ className: "bg-surface-1 text-fg-muted flex size-9 shrink-0 items-center justify-center rounded-surface",
32
32
  children: /* @__PURE__ */ jsx(TerminalIcon, { className: "size-4" })
33
33
  }), /* @__PURE__ */ jsxs("div", {
34
34
  className: "flex flex-col",
@@ -42,7 +42,7 @@ function ApprovalCard({ state, command, title, subtitle, onAllowOnce, onAlwaysAl
42
42
  })]
43
43
  }),
44
44
  /* @__PURE__ */ jsx("div", {
45
- className: cn(field, "text-fg-muted rounded-(--radius-surface) px-3.5 py-2.5 font-mono text-(length:--cue-text-ui)"),
45
+ className: cn(field, "text-fg-muted rounded-surface px-3.5 py-2.5 font-mono text-(length:--cue-text-ui)"),
46
46
  children: command
47
47
  }),
48
48
  /* @__PURE__ */ jsx("div", {
@@ -20,11 +20,11 @@ import { ArrowUpRightIcon, FileTextIcon } from "lucide-react";
20
20
  function ArtifactCard({ title, meta, generating = false, words = 0, className, ...props }) {
21
21
  return /* @__PURE__ */ jsxs("div", {
22
22
  "data-slot": "artifact-card",
23
- className: cn(paper, "group flex w-full max-w-xs cursor-pointer items-center gap-3 rounded-(--radius-overlay) p-3.5 transition-transform duration-150 hover:-translate-y-px active:scale-[0.98]", className),
23
+ className: cn(paper, "group flex w-full max-w-xs cursor-pointer items-center gap-3 rounded-overlay p-3.5 transition-transform duration-150 hover:-translate-y-px active:scale-[0.98]", className),
24
24
  ...props,
25
25
  children: [
26
26
  /* @__PURE__ */ jsx("span", {
27
- className: "bg-surface-1 text-fg-muted flex size-9 shrink-0 items-center justify-center rounded-(--radius-surface)",
27
+ className: "bg-surface-1 text-fg-muted flex size-9 shrink-0 items-center justify-center rounded-surface",
28
28
  children: /* @__PURE__ */ jsx(FileTextIcon, { className: cn("size-4", generating && "animate-pulse motion-reduce:animate-none") })
29
29
  }),
30
30
  /* @__PURE__ */ jsxs("div", {
@@ -17,7 +17,7 @@ function BackgroundInbox({ runs, onCollect, className, ...props }) {
17
17
  const running = runs.filter((run) => run.state === "running").length;
18
18
  return /* @__PURE__ */ jsxs("div", {
19
19
  "data-slot": "background-inbox",
20
- className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-(--radius-overlay) p-3", className),
20
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-overlay p-3", className),
21
21
  ...props,
22
22
  children: [/* @__PURE__ */ jsxs("div", {
23
23
  className: "flex items-baseline justify-between px-1 pb-1",
@@ -32,7 +32,7 @@ function BackgroundInbox({ runs, onCollect, className, ...props }) {
32
32
  type: "button",
33
33
  disabled: run.state === "running",
34
34
  onClick: () => onCollect?.(run.id),
35
- className: cn("flex items-center gap-2.5 rounded-(--radius-surface) px-1.5 py-2 text-start transition-colors", run.state === "running" ? "cursor-default" : "hover:bg-surface-1"),
35
+ className: cn("flex items-center gap-2.5 rounded-surface px-1.5 py-2 text-start transition-colors", run.state === "running" ? "cursor-default" : "hover:bg-surface-1"),
36
36
  children: [
37
37
  /* @__PURE__ */ jsx("span", {
38
38
  className: "flex size-3.5 shrink-0 items-center justify-center",
@@ -34,7 +34,7 @@ import { CheckIcon, CopyIcon, FileTextIcon, XIcon } from "lucide-react";
34
34
  function CanvasSplit({ className, ...props }) {
35
35
  return /* @__PURE__ */ jsx("div", {
36
36
  "data-slot": "canvas-split",
37
- className: cn(paper, "flex w-full max-w-3xl flex-col overflow-hidden rounded-(--radius-overlay) md:h-80 md:flex-row", className),
37
+ className: cn(paper, "flex w-full max-w-3xl flex-col overflow-hidden rounded-overlay md:h-80 md:flex-row", className),
38
38
  ...props
39
39
  });
40
40
  }
@@ -54,7 +54,7 @@ function CanvasSplitMessage({ speaker, className, ...props }) {
54
54
  return /* @__PURE__ */ jsx("div", {
55
55
  "data-slot": "canvas-split-message",
56
56
  "data-speaker": speaker,
57
- className: cn("cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both text-(length:--cue-text-body) leading-(--cue-leading-ui) duration-300", speaker === "user" ? cn(field, "text-fg-muted ms-auto rounded-(--radius-overlay) px-3 py-2") : "text-fg-muted", className),
57
+ className: cn("cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both text-(length:--cue-text-body) leading-(--cue-leading-ui) duration-300", speaker === "user" ? cn(field, "text-fg-muted ms-auto rounded-overlay px-3 py-2") : "text-fg-muted", className),
58
58
  ...props
59
59
  });
60
60
  }
@@ -45,7 +45,7 @@ function Chart({ label, value, delta, points, visibleCount, variant = "area", cl
45
45
  const rising = delta !== void 0 && !falling;
46
46
  return /* @__PURE__ */ jsxs("div", {
47
47
  "data-slot": "chart",
48
- className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-(--radius-overlay) p-4", className),
48
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-4", className),
49
49
  ...props,
50
50
  children: [
51
51
  /* @__PURE__ */ jsxs("div", {
@@ -27,7 +27,7 @@ import { ArrowUpIcon } from "lucide-react";
27
27
  function ChatPanel({ className, ...props }) {
28
28
  return /* @__PURE__ */ jsx("div", {
29
29
  "data-slot": "chat-panel",
30
- className: cn(paper, "flex h-[270px] w-full max-w-md flex-col overflow-hidden rounded-(--radius-overlay)", className),
30
+ className: cn(paper, "flex h-[270px] w-full max-w-md flex-col overflow-hidden rounded-overlay", className),
31
31
  ...props
32
32
  });
33
33
  }
@@ -46,7 +46,7 @@ function ChatPanelMessages({ className, ...props }) {
46
46
  function ChatPanelUserMessage({ className, ...props }) {
47
47
  return /* @__PURE__ */ jsx("div", {
48
48
  "data-slot": "chat-panel-user-message",
49
- className: cn(field, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in self-end rounded-(--radius-overlay) px-3 py-1.5 text-(length:--cue-text-ui) duration-300", className),
49
+ className: cn(field, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in self-end rounded-overlay px-3 py-1.5 text-(length:--cue-text-ui) duration-300", className),
50
50
  ...props
51
51
  });
52
52
  }
@@ -16,7 +16,7 @@ function CheckpointHistory({ checkpoints, currentId, onRestore, className, ...pr
16
16
  const currentIndex = checkpoints.findIndex((checkpoint) => checkpoint.id === currentId);
17
17
  return /* @__PURE__ */ jsxs("div", {
18
18
  "data-slot": "checkpoint-history",
19
- className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-(--radius-overlay) p-3", className),
19
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-overlay p-3", className),
20
20
  ...props,
21
21
  children: [/* @__PURE__ */ jsx("span", {
22
22
  className: "px-1.5 pb-1 text-(length:--cue-text-body) font-medium",
@@ -25,7 +25,7 @@ function CheckpointHistory({ checkpoints, currentId, onRestore, className, ...pr
25
25
  const ahead = currentIndex >= 0 && i > currentIndex;
26
26
  const current = checkpoint.id === currentId;
27
27
  return /* @__PURE__ */ jsxs("div", {
28
- className: cn("group flex items-center gap-2.5 rounded-(--radius-surface) px-1.5 py-1.5 transition-colors", current ? "bg-surface-1" : "hover:bg-surface-1", ahead && "opacity-40"),
28
+ className: cn("group flex items-center gap-2.5 rounded-surface px-1.5 py-1.5 transition-colors", current ? "bg-surface-1" : "hover:bg-surface-1", ahead && "opacity-40"),
29
29
  children: [
30
30
  /* @__PURE__ */ jsx("span", {
31
31
  "aria-hidden": true,
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { FOCUS_RING } from "../system/_focus-ring.js";
3
4
  import { useIsomorphicLayoutEffect } from "../system/use-isomorphic-layout-effect.js";
4
5
  import { CLAMP_LABELS } from "./vocabulary.js";
5
6
  import * as React from "react";
@@ -100,7 +101,7 @@ const Clamp = React.forwardRef(function Clamp({ height = 250, fade = 50, open, o
100
101
  "data-slot": "clamp-reveal",
101
102
  "aria-expanded": open,
102
103
  onClick: () => onOpenChange?.(!open),
103
- className: cn("text-fg-muted hover:text-fg self-start rounded-(--radius-control) py-0.5 text-(length:--cue-text-ui) transition-opacity focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent motion-reduce:transition-none", !open && "opacity-60 group-hover/clamp:opacity-100 focus-visible:opacity-100"),
104
+ className: cn(`text-fg-muted hover:text-fg self-start rounded-control py-0.5 text-(length:--cue-text-ui) transition-opacity ${FOCUS_RING} motion-reduce:transition-none`, !open && "opacity-60 group-hover/clamp:opacity-100 focus-visible:opacity-100"),
104
105
  children: open ? said.less : said.more
105
106
  }) : null]
106
107
  });
@@ -28,7 +28,7 @@ const GUTTER = {
28
28
  function CodeDiff({ filename, additions, deletions, lines, cycle, className, ...props }) {
29
29
  return /* @__PURE__ */ jsxs("div", {
30
30
  "data-slot": "code-diff",
31
- className: cn(paper, "w-full max-w-md overflow-hidden rounded-(--radius-overlay) font-mono text-(length:--cue-text-ui)", className),
31
+ className: cn(paper, "w-full max-w-md overflow-hidden rounded-overlay font-mono text-(length:--cue-text-ui)", className),
32
32
  ...props,
33
33
  children: [/* @__PURE__ */ jsxs("div", {
34
34
  className: "flex items-center justify-between px-4 pt-3 pb-2",
@@ -22,7 +22,7 @@ import { Loader2Icon, PlayIcon } from "lucide-react";
22
22
  function CodeRunner({ language, code, state, output, durationMs, onRun, className, ...props }) {
23
23
  return /* @__PURE__ */ jsxs("div", {
24
24
  "data-slot": "code-runner",
25
- className: cn(paper, "flex w-full max-w-md flex-col overflow-hidden rounded-(--radius-overlay)", className),
25
+ className: cn(paper, "flex w-full max-w-md flex-col overflow-hidden rounded-overlay", className),
26
26
  ...props,
27
27
  children: [
28
28
  /* @__PURE__ */ jsxs("div", {
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { FOCUS_RING } from "../system/_focus-ring.js";
3
4
  import { field, floating, mono } from "./surfaces.js";
4
5
  import { useEffect, useId } from "react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -50,7 +51,7 @@ function ElementsCommandPalette({ commands, query, activeId, onQueryChange, onAc
50
51
  };
51
52
  return /* @__PURE__ */ jsxs("div", {
52
53
  "data-slot": "command-palette",
53
- className: cn(floating, "flex w-full max-w-sm flex-col overflow-hidden rounded-(--radius-overlay)", className),
54
+ className: cn(floating, "flex w-full max-w-sm flex-col overflow-hidden rounded-overlay", className),
54
55
  ...props,
55
56
  children: [
56
57
  /* @__PURE__ */ jsxs("div", {
@@ -68,10 +69,10 @@ function ElementsCommandPalette({ commands, query, activeId, onQueryChange, onAc
68
69
  "aria-controls": listId,
69
70
  "aria-autocomplete": "list",
70
71
  "aria-activedescendant": ordered.some((command) => command.id === activeId) ? optionId(activeId) : void 0,
71
- className: "text-fg-muted placeholder:text-fg-subtle min-w-0 flex-1 bg-transparent text-(length:--cue-text-body) outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent"
72
+ className: `text-fg-muted placeholder:text-fg-subtle min-w-0 flex-1 bg-transparent text-(length:--cue-text-body) outline-none ${FOCUS_RING}`
72
73
  }),
73
74
  /* @__PURE__ */ jsx("span", {
74
- className: cn(field, mono, "text-fg-subtle rounded-(--radius-control) px-1.5 py-0.5"),
75
+ className: cn(field, mono, "text-fg-subtle rounded-control px-1.5 py-0.5"),
75
76
  children: "esc"
76
77
  })
77
78
  ]
@@ -97,14 +98,14 @@ function ElementsCommandPalette({ commands, query, activeId, onQueryChange, onAc
97
98
  "aria-selected": command.id === activeId,
98
99
  onMouseDown: (event) => event.preventDefault(),
99
100
  onClick: () => onRun?.(command.id),
100
- className: cn("flex items-center gap-2 rounded-(--radius-surface) px-2 py-1.5 text-start transition-colors", command.id === activeId ? "bg-surface-2" : "hover:bg-surface-1"),
101
+ className: cn("flex items-center gap-2 rounded-surface px-2 py-1.5 text-start transition-colors", command.id === activeId ? "bg-surface-2" : "hover:bg-surface-1"),
101
102
  children: [/* @__PURE__ */ jsx("span", {
102
103
  className: "min-w-0 flex-1 truncate text-(length:--cue-text-body)",
103
104
  children: command.label
104
105
  }), /* @__PURE__ */ jsx("span", {
105
106
  className: "flex shrink-0 gap-1",
106
107
  children: command.keys.map((key) => /* @__PURE__ */ jsx("span", {
107
- className: cn(field, mono, "text-fg-subtle rounded-(--radius-control) px-1.5 py-0.5"),
108
+ className: cn(field, mono, "text-fg-subtle rounded-control px-1.5 py-0.5"),
108
109
  children: key
109
110
  }, key))
110
111
  })]
@@ -20,14 +20,14 @@ import { CheckIcon, MinusIcon } from "lucide-react";
20
20
  function ComparisonCard({ traitLabels, options, recommendedId, reason, className, ...props }) {
21
21
  return /* @__PURE__ */ jsxs("div", {
22
22
  "data-slot": "comparison-card",
23
- className: cn(paper, "flex w-full max-w-md flex-col gap-3 rounded-(--radius-overlay) p-4", className),
23
+ className: cn(paper, "flex w-full max-w-md flex-col gap-3 rounded-overlay p-4", className),
24
24
  ...props,
25
25
  children: [/* @__PURE__ */ jsx("div", {
26
26
  className: "flex gap-2",
27
27
  children: options.map((option) => {
28
28
  const recommended = option.id === recommendedId;
29
29
  return /* @__PURE__ */ jsxs("div", {
30
- className: cn("flex min-w-0 flex-1 flex-col gap-2 rounded-(--radius-surface) p-3 transition-colors", recommended ? "bg-stream/10" : field),
30
+ className: cn("flex min-w-0 flex-1 flex-col gap-2 rounded-surface p-3 transition-colors", recommended ? "bg-stream/10" : field),
31
31
  children: [/* @__PURE__ */ jsxs("div", {
32
32
  className: "flex flex-col gap-0.5",
33
33
  children: [/* @__PURE__ */ jsxs("span", {