@cueplusplus/ui 0.16.0 → 0.18.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 (548) hide show
  1. package/CHANGELOG.md +901 -0
  2. package/README.md +1 -1
  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 +3 -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 +1 -1
  16. package/dist/chrome/_tabs-scroll.js +1 -1
  17. package/dist/chrome/app-bar.js +9 -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 +18 -32
  21. package/dist/chrome/empty-state.js +8 -4
  22. package/dist/chrome/eyebrow.d.ts +13 -5
  23. package/dist/chrome/eyebrow.js +18 -7
  24. package/dist/chrome/footer.d.ts +5 -0
  25. package/dist/chrome/footer.js +14 -3
  26. package/dist/chrome/navigation-menu.js +6 -3
  27. package/dist/chrome/page-shell.js +8 -5
  28. package/dist/chrome/panel.d.ts +5 -2
  29. package/dist/chrome/panel.js +10 -5
  30. package/dist/chrome/row.js +9 -5
  31. package/dist/chrome/scroll-area.js +6 -4
  32. package/dist/chrome/section-header.js +13 -4
  33. package/dist/chrome/segmented-control.js +14 -4
  34. package/dist/chrome/status-bar.js +2 -1
  35. package/dist/chrome/tabs.js +14 -3
  36. package/dist/chrome/toolbar.js +6 -3
  37. package/dist/chrome/tree.js +3 -2
  38. package/dist/color/_thumb.js +9 -3
  39. package/dist/color/color-area.js +1 -1
  40. package/dist/color/color-swatch.js +1 -1
  41. package/dist/configurator/_overrides.js +13 -4
  42. package/dist/configurator/configurator.js +4 -1
  43. package/dist/configurator/export-dialog.js +5 -2
  44. package/dist/configurator/panel-sections.js +6 -2
  45. package/dist/configurator/token-editor.js +4 -1
  46. package/dist/date/_trigger.js +4 -1
  47. package/dist/date/calendar.js +22 -12
  48. package/dist/dmx/channel-matrix.js +3 -2
  49. package/dist/dmx/dmx-bar.js +1 -1
  50. package/dist/dmx/dmx-strip.js +1 -1
  51. package/dist/dmx/universe-grid.js +3 -2
  52. package/dist/elements/activity-graph.js +3 -3
  53. package/dist/elements/agent-card.js +3 -3
  54. package/dist/elements/approval-card.js +3 -3
  55. package/dist/elements/artifact-card.js +2 -2
  56. package/dist/elements/background-inbox.js +2 -2
  57. package/dist/elements/canvas-split.js +2 -2
  58. package/dist/elements/chart.js +1 -1
  59. package/dist/elements/chat-panel.js +2 -2
  60. package/dist/elements/checkpoint-history.js +2 -2
  61. package/dist/elements/clamp.js +2 -1
  62. package/dist/elements/code-diff.js +1 -1
  63. package/dist/elements/code-runner.js +1 -1
  64. package/dist/elements/command-palette.js +6 -5
  65. package/dist/elements/comparison-card.js +2 -2
  66. package/dist/elements/composer.js +9 -8
  67. package/dist/elements/computer-use.js +1 -1
  68. package/dist/elements/confidence-marker.js +2 -1
  69. package/dist/elements/connection-state.js +1 -1
  70. package/dist/elements/context-breakdown.js +1 -1
  71. package/dist/elements/context-usage.js +1 -1
  72. package/dist/elements/conversation-search.js +4 -3
  73. package/dist/elements/cost-meter.js +1 -1
  74. package/dist/elements/data-table.js +2 -2
  75. package/dist/elements/day-separator.js +1 -1
  76. package/dist/elements/diagram.js +1 -1
  77. package/dist/elements/document-reference.js +3 -3
  78. package/dist/elements/draft-restore.js +1 -1
  79. package/dist/elements/edit-message.js +4 -3
  80. package/dist/elements/elements.css +26 -5
  81. package/dist/elements/elicitation-form.js +3 -3
  82. package/dist/elements/empty-state.js +2 -1
  83. package/dist/elements/error-state.js +1 -1
  84. package/dist/elements/feedback-dialog.js +4 -3
  85. package/dist/elements/file-tree.js +2 -2
  86. package/dist/elements/flow-graph.js +2 -2
  87. package/dist/elements/guardrail-notice.js +3 -3
  88. package/dist/elements/image-generation.js +1 -1
  89. package/dist/elements/inline-citation.js +3 -3
  90. package/dist/elements/job-progress.js +3 -3
  91. package/dist/elements/launcher-bubble.js +2 -2
  92. package/dist/elements/loading-state.js +1 -1
  93. package/dist/elements/map-answer.js +3 -2
  94. package/dist/elements/markdown.js +5 -4
  95. package/dist/elements/math-block.js +1 -1
  96. package/dist/elements/mcp-server-panel.js +3 -3
  97. package/dist/elements/message-attachment.js +4 -4
  98. package/dist/elements/message-pair.js +1 -1
  99. package/dist/elements/message-queue.js +2 -2
  100. package/dist/elements/mobile-composer.js +4 -3
  101. package/dist/elements/model-picker.js +3 -3
  102. package/dist/elements/onboarding.js +2 -2
  103. package/dist/elements/permission-grant.js +2 -2
  104. package/dist/elements/permission-scopes.js +5 -4
  105. package/dist/elements/prompt-library.js +7 -6
  106. package/dist/elements/queue-dock.js +4 -3
  107. package/dist/elements/quota-banner.js +1 -1
  108. package/dist/elements/quote-reply.js +1 -1
  109. package/dist/elements/read-aloud.js +2 -2
  110. package/dist/elements/reasoning-panel.js +2 -1
  111. package/dist/elements/recommendation-card.d.ts +1 -1
  112. package/dist/elements/recommendation-card.js +2 -2
  113. package/dist/elements/regenerate-menu.js +2 -2
  114. package/dist/elements/research-report.js +1 -1
  115. package/dist/elements/retrieval-chunks.js +1 -1
  116. package/dist/elements/revert-dock.js +5 -4
  117. package/dist/elements/reviewable-diff.js +1 -1
  118. package/dist/elements/schedule-card.js +3 -3
  119. package/dist/elements/score-breakdown.js +1 -1
  120. package/dist/elements/scroll-anchor.js +2 -2
  121. package/dist/elements/settings-panel.js +3 -2
  122. package/dist/elements/shared-conversation.js +2 -2
  123. package/dist/elements/sources.js +4 -3
  124. package/dist/elements/speaker-identity.js +1 -1
  125. package/dist/elements/spec-sheet.js +1 -1
  126. package/dist/elements/streaming-text.js +1 -1
  127. package/dist/elements/subagent-list.js +2 -2
  128. package/dist/elements/suggestions.js +1 -1
  129. package/dist/elements/surfaces.d.ts +1 -1
  130. package/dist/elements/surfaces.js +2 -1
  131. package/dist/elements/tail-status.js +1 -1
  132. package/dist/elements/terminal-block.js +1 -1
  133. package/dist/elements/thread-list.js +1 -1
  134. package/dist/elements/thread-search.js +5 -4
  135. package/dist/elements/timeline.js +1 -1
  136. package/dist/elements/todo-list.js +2 -2
  137. package/dist/elements/tool-call.js +4 -3
  138. package/dist/elements/tool-error.js +2 -2
  139. package/dist/elements/tool-group.js +1 -1
  140. package/dist/elements/tool-timeline.js +4 -3
  141. package/dist/elements/trace-waterfall.js +1 -1
  142. package/dist/elements/verdict-row.js +2 -2
  143. package/dist/elements/voice-conversation.js +3 -2
  144. package/dist/elements/web-preview.js +1 -1
  145. package/dist/elements/web-search.js +2 -2
  146. package/dist/elements/work-collapse.js +2 -1
  147. package/dist/flow/node-card.js +3 -2
  148. package/dist/flow/use-flow-theme.js +2 -1
  149. package/dist/forms/_chassis.d.ts +34 -6
  150. package/dist/forms/_chassis.js +44 -9
  151. package/dist/forms/_listbox.js +22 -14
  152. package/dist/forms/checkbox.js +13 -4
  153. package/dist/forms/env-var-input.js +3 -2
  154. package/dist/forms/field.d.ts +2 -1
  155. package/dist/forms/field.js +16 -5
  156. package/dist/forms/file-upload.js +3 -2
  157. package/dist/forms/input-group.js +11 -2
  158. package/dist/forms/multi-select.js +4 -3
  159. package/dist/forms/number-field.js +7 -3
  160. package/dist/forms/otp-field.js +15 -6
  161. package/dist/forms/password-input.js +4 -2
  162. package/dist/forms/radio-group.js +10 -4
  163. package/dist/forms/rating.js +2 -1
  164. package/dist/forms/scrub-input.js +2 -1
  165. package/dist/forms/search-input.js +2 -1
  166. package/dist/forms/select.js +10 -4
  167. package/dist/forms/slider.js +9 -3
  168. package/dist/forms/switch.js +9 -3
  169. package/dist/forms/tags-input.js +4 -3
  170. package/dist/forms/textarea.js +3 -1
  171. package/dist/forms/toggle-group.js +2 -1
  172. package/dist/forms/toggle.js +5 -1
  173. package/dist/index.d.ts +2 -2
  174. package/dist/index.js +2 -2
  175. package/dist/instruments/_data-row.js +2 -1
  176. package/dist/instruments/app-window-frame.js +1 -1
  177. package/dist/instruments/code-block.js +8 -2
  178. package/dist/instruments/group-bar.js +1 -1
  179. package/dist/instruments/ledger.js +6 -2
  180. package/dist/instruments/log-viewer.js +4 -3
  181. package/dist/instruments/meter.js +2 -1
  182. package/dist/instruments/progress.js +9 -3
  183. package/dist/instruments/seam-grid.js +5 -3
  184. package/dist/instruments/stat.js +13 -4
  185. package/dist/instruments/table.js +29 -10
  186. package/dist/instruments/terminal-frame.js +4 -2
  187. package/dist/instruments/usage-chart.js +1 -1
  188. package/dist/layout/_collapse.js +26 -5
  189. package/dist/layout/accordion.js +2 -1
  190. package/dist/layout/bento.js +7 -4
  191. package/dist/layout/breadcrumb.js +10 -5
  192. package/dist/layout/card.js +14 -7
  193. package/dist/layout/carousel.js +3 -2
  194. package/dist/layout/collapsible.js +6 -1
  195. package/dist/layout/container.js +2 -1
  196. package/dist/layout/description-list.js +4 -1
  197. package/dist/layout/frames.js +11 -5
  198. package/dist/layout/item.js +3 -2
  199. package/dist/layout/link.d.ts +30 -0
  200. package/dist/layout/link.js +22 -3
  201. package/dist/layout/pagination.js +8 -8
  202. package/dist/layout/preview.d.ts +32 -12
  203. package/dist/layout/preview.js +149 -40
  204. package/dist/layout/resizable.js +2 -1
  205. package/dist/layout/sidebar.js +11 -3
  206. package/dist/layout/stepper.js +6 -2
  207. package/dist/lib/cn.js +29 -2
  208. package/dist/midi/piano-keyboard.js +3 -2
  209. package/dist/midi/spectrum-visualizer.js +1 -1
  210. package/dist/midi/threshold-rail.js +2 -1
  211. package/dist/midi/timeline-ruler.js +1 -1
  212. package/dist/overlays/_surface.d.ts +74 -14
  213. package/dist/overlays/_surface.js +87 -14
  214. package/dist/overlays/alert-dialog.js +1 -1
  215. package/dist/overlays/command-palette.js +28 -9
  216. package/dist/overlays/dialog.d.ts +5 -0
  217. package/dist/overlays/dialog.js +6 -1
  218. package/dist/overlays/drawer.js +8 -1
  219. package/dist/overlays/hover-card.js +3 -1
  220. package/dist/overlays/info-tip.js +2 -1
  221. package/dist/overlays/menubar.js +3 -1
  222. package/dist/overlays/popover.js +3 -1
  223. package/dist/overlays/toast.js +14 -6
  224. package/dist/overlays/tooltip.js +3 -1
  225. package/dist/primitives/avatar.js +6 -2
  226. package/dist/primitives/button.d.ts +16 -1
  227. package/dist/primitives/button.js +44 -12
  228. package/dist/primitives/chip.d.ts +11 -29
  229. package/dist/primitives/chip.js +40 -50
  230. package/dist/primitives/icon-button.d.ts +1 -1
  231. package/dist/primitives/kbd.d.ts +6 -0
  232. package/dist/primitives/kbd.js +10 -1
  233. package/dist/primitives/skeleton.js +2 -1
  234. package/dist/system/_focus-ring-field.js +29 -0
  235. package/dist/system/_focus-ring.js +125 -0
  236. package/dist/system/_paint-glow.js +22 -3
  237. package/dist/system/_paint-rest-shade.js +32 -0
  238. package/dist/system/_paint-rim.js +22 -4
  239. package/dist/system/_paint-stroke-surface-1.js +1 -1
  240. package/dist/system/_paint-stroke-surface-2.js +14 -1
  241. package/dist/system/_paint-texture.js +5 -2
  242. package/dist/system/_style-accordion-rule.js +32 -0
  243. package/dist/system/_style-app-bar.js +65 -0
  244. package/dist/system/_style-avatar.js +20 -0
  245. package/dist/system/_style-band.js +57 -0
  246. package/dist/system/_style-body-leading.js +19 -0
  247. package/dist/system/_style-body-size.js +30 -0
  248. package/dist/system/_style-body-weight.js +24 -0
  249. package/dist/system/_style-body.js +32 -0
  250. package/dist/system/_style-caption-ink.js +17 -0
  251. package/dist/system/_style-caption-size.js +19 -0
  252. package/dist/system/_style-caption-weight.js +18 -0
  253. package/dist/system/_style-caption.js +19 -0
  254. package/dist/system/_style-card-gap.js +14 -0
  255. package/dist/system/_style-card-pad.js +43 -0
  256. package/dist/system/_style-cell.js +18 -0
  257. package/dist/system/_style-check-glyph.js +14 -0
  258. package/dist/system/_style-check.js +40 -0
  259. package/dist/system/_style-chip.js +143 -0
  260. package/dist/system/_style-choice-gap.js +15 -0
  261. package/dist/system/_style-code.js +13 -0
  262. package/dist/system/_style-collapse.js +94 -0
  263. package/dist/system/_style-control-face.js +29 -0
  264. package/dist/system/_style-control-gap.js +14 -0
  265. package/dist/system/_style-control-label.js +29 -0
  266. package/dist/system/_style-control-step.js +22 -0
  267. package/dist/system/_style-control.js +76 -0
  268. package/dist/system/_style-crumb.js +44 -0
  269. package/dist/system/_style-data-face.js +28 -0
  270. package/dist/system/_style-day.js +25 -0
  271. package/dist/system/_style-description.js +23 -0
  272. package/dist/system/_style-disabled.js +70 -0
  273. package/dist/system/_style-disclosure.js +21 -0
  274. package/dist/system/_style-empty-state.js +42 -0
  275. package/dist/system/_style-eyebrow.js +43 -0
  276. package/dist/system/_style-field-chassis.js +38 -0
  277. package/dist/system/_style-field-gap.js +12 -0
  278. package/dist/system/_style-footer-rule.js +47 -0
  279. package/dist/system/_style-glyph-ink.js +20 -0
  280. package/dist/system/_style-glyph-opacity.js +20 -0
  281. package/dist/system/_style-glyph-size.js +21 -0
  282. package/dist/system/_style-group-gap.js +15 -0
  283. package/dist/system/_style-group-label-pad.js +14 -0
  284. package/dist/system/_style-group-label.js +24 -0
  285. package/dist/system/_style-gutter.js +17 -0
  286. package/dist/system/_style-help-ink.js +14 -0
  287. package/dist/system/_style-help.js +38 -0
  288. package/dist/system/_style-hover-card-width.js +15 -0
  289. package/dist/system/_style-input-face.js +34 -0
  290. package/dist/system/_style-kbd.js +58 -0
  291. package/dist/system/_style-label-case.js +36 -0
  292. package/dist/system/_style-label-face.js +32 -0
  293. package/dist/system/_style-label-ink.js +29 -0
  294. package/dist/system/_style-label-leading.js +14 -0
  295. package/dist/system/_style-label-size.js +36 -0
  296. package/dist/system/_style-label-tracking.js +45 -0
  297. package/dist/system/_style-label-weight.js +40 -0
  298. package/dist/system/_style-lede.js +49 -0
  299. package/dist/system/_style-link.js +58 -0
  300. package/dist/system/_style-menu.js +43 -0
  301. package/dist/system/_style-meter.js +15 -0
  302. package/dist/system/_style-nav-item.js +41 -0
  303. package/dist/system/_style-nav-menu.js +48 -0
  304. package/dist/system/_style-nav-voice.js +43 -0
  305. package/dist/system/_style-option.js +99 -0
  306. package/dist/system/_style-otp.js +15 -0
  307. package/dist/system/_style-outline-hover.js +18 -0
  308. package/dist/system/_style-overlay-title.js +35 -0
  309. package/dist/system/_style-page-title.js +48 -0
  310. package/dist/system/_style-page.js +17 -0
  311. package/dist/system/_style-palette.js +18 -0
  312. package/dist/system/_style-panel.js +21 -0
  313. package/dist/system/_style-popover-pad.js +13 -0
  314. package/dist/system/_style-popover-width.js +15 -0
  315. package/dist/system/_style-quiet-ink.js +13 -0
  316. package/dist/system/_style-radio.js +19 -0
  317. package/dist/system/_style-row-disabled.js +17 -0
  318. package/dist/system/_style-row-pad.js +13 -0
  319. package/dist/system/_style-row.js +30 -0
  320. package/dist/system/_style-scrollbar.js +19 -0
  321. package/dist/system/_style-seam.js +43 -0
  322. package/dist/system/_style-section-rule.js +26 -0
  323. package/dist/system/_style-segment-pad.js +15 -0
  324. package/dist/system/_style-segment.js +30 -0
  325. package/dist/system/_style-segmented-control.js +86 -0
  326. package/dist/system/_style-selected.js +36 -0
  327. package/dist/system/_style-skeleton.js +15 -0
  328. package/dist/system/_style-slider.js +26 -0
  329. package/dist/system/_style-stage-marks.js +26 -0
  330. package/dist/system/_style-stat.js +31 -0
  331. package/dist/system/_style-stepper.js +16 -0
  332. package/dist/system/_style-switch.js +26 -0
  333. package/dist/system/_style-tab-hover.js +15 -0
  334. package/dist/system/_style-tab.js +71 -0
  335. package/dist/system/_style-text-focus.js +26 -0
  336. package/dist/system/_style-textarea.js +21 -0
  337. package/dist/system/_style-title.js +37 -0
  338. package/dist/system/_style-toast.js +22 -0
  339. package/dist/system/_style-toggle.js +50 -0
  340. package/dist/system/_style-toolbar.js +23 -0
  341. package/dist/system/_style-tooltip.js +46 -0
  342. package/dist/system/density.d.ts +15 -5
  343. package/dist/system/density.js +188 -25
  344. package/dist/system/index.d.ts +2 -2
  345. package/dist/system/index.js +2 -2
  346. package/dist/system/overrides.d.ts +1 -0
  347. package/dist/system/overrides.js +151 -3
  348. package/dist/system/portal.d.ts +3 -2
  349. package/dist/system/portal.js +22 -10
  350. package/dist/system/prepaint.d.ts +21 -5
  351. package/dist/system/prepaint.js +3 -1
  352. package/dist/system/published.d.ts +1 -0
  353. package/dist/system/published.js +131 -0
  354. package/dist/system/theme-provider.d.ts +118 -21
  355. package/dist/system/theme-provider.js +362 -73
  356. package/dist/system/theme-registry.d.ts +2 -1
  357. package/dist/system/theme-registry.js +27 -10
  358. package/dist/system/use-density.js +4 -3
  359. package/dist/system/use-theme.d.ts +5 -2
  360. package/dist/system/use-theme.js +7 -4
  361. package/dist/system/vocabulary.js +2 -2
  362. package/dist/theming/create-theme.js +12 -6
  363. package/dist/theming/serialize.d.ts +34 -2
  364. package/dist/theming/serialize.js +86 -4
  365. package/manifest/components/accordion.json +29 -2
  366. package/manifest/components/agent-pile.json +3 -0
  367. package/manifest/components/alert-dialog.json +36 -3
  368. package/manifest/components/app-bar.json +61 -2
  369. package/manifest/components/app-shell.json +5 -0
  370. package/manifest/components/ask-box.json +3 -1
  371. package/manifest/components/autocomplete.json +85 -1
  372. package/manifest/components/avatar-group.json +7 -0
  373. package/manifest/components/avatar.json +7 -0
  374. package/manifest/components/band.json +7 -3
  375. package/manifest/components/bento.json +12 -1
  376. package/manifest/components/breadcrumb.json +12 -0
  377. package/manifest/components/button.json +43 -4
  378. package/manifest/components/calendar.json +13 -0
  379. package/manifest/components/card.json +23 -1
  380. package/manifest/components/carousel.json +4 -1
  381. package/manifest/components/channel-matrix.json +37 -3
  382. package/manifest/components/chart-tooltip-content.json +35 -3
  383. package/manifest/components/chat-empty-state.json +3 -1
  384. package/manifest/components/checkbox-group.json +36 -1
  385. package/manifest/components/checkbox.json +36 -1
  386. package/manifest/components/chip.json +22 -1
  387. package/manifest/components/clamp.json +3 -1
  388. package/manifest/components/code-block.json +10 -1
  389. package/manifest/components/collapsible.json +35 -2
  390. package/manifest/components/color-area.json +4 -2
  391. package/manifest/components/color-field.json +29 -0
  392. package/manifest/components/color-picker.json +29 -0
  393. package/manifest/components/color-slider.json +3 -1
  394. package/manifest/components/colors-section.json +9 -1
  395. package/manifest/components/combobox.json +85 -1
  396. package/manifest/components/command-palette.json +39 -3
  397. package/manifest/components/composer-actions.json +3 -0
  398. package/manifest/components/composer-attach-button.json +3 -0
  399. package/manifest/components/composer-attachment-chip.json +3 -0
  400. package/manifest/components/composer-attachments.json +3 -0
  401. package/manifest/components/composer-bar.json +3 -0
  402. package/manifest/components/composer-command-item.json +3 -0
  403. package/manifest/components/composer-context.json +3 -0
  404. package/manifest/components/composer-input.json +3 -0
  405. package/manifest/components/composer-menu-item.json +3 -0
  406. package/manifest/components/composer-menu.json +3 -0
  407. package/manifest/components/composer-model-item.json +3 -0
  408. package/manifest/components/composer-model-trigger.json +3 -0
  409. package/manifest/components/composer-person-item.json +3 -0
  410. package/manifest/components/composer-send.json +3 -0
  411. package/manifest/components/composer-toolbar.json +3 -0
  412. package/manifest/components/composer-voice-button.json +3 -0
  413. package/manifest/components/composer-voice.json +3 -0
  414. package/manifest/components/composer.json +29 -0
  415. package/manifest/components/confidence-marker.json +3 -1
  416. package/manifest/components/container.json +2 -1
  417. package/manifest/components/context-menu.json +35 -3
  418. package/manifest/components/conversation-search.json +3 -1
  419. package/manifest/components/cue-mark.json +2 -2
  420. package/manifest/components/cue-portal-frame.json +1 -1
  421. package/manifest/components/data-row.json +3 -1
  422. package/manifest/components/data-tree.json +3 -1
  423. package/manifest/components/date-field.json +28 -0
  424. package/manifest/components/date-picker.json +32 -0
  425. package/manifest/components/date-range-picker.json +32 -0
  426. package/manifest/components/delegation-card.json +3 -1
  427. package/manifest/components/density.json +15 -7
  428. package/manifest/components/description-list.json +6 -1
  429. package/manifest/components/dialog.json +37 -3
  430. package/manifest/components/disclosure.json +35 -2
  431. package/manifest/components/dmx-bar.json +34 -3
  432. package/manifest/components/dmx-strip.json +34 -3
  433. package/manifest/components/drawer.json +36 -3
  434. package/manifest/components/dropdown-menu.json +35 -3
  435. package/manifest/components/edit-message.json +3 -1
  436. package/manifest/components/elements-command-palette.json +3 -1
  437. package/manifest/components/elements-composer.json +3 -0
  438. package/manifest/components/empty-state-composer.json +3 -1
  439. package/manifest/components/empty-state-greeting.json +3 -1
  440. package/manifest/components/empty-state-suggestion.json +3 -1
  441. package/manifest/components/empty-state-suggestions.json +3 -1
  442. package/manifest/components/empty-state.json +13 -0
  443. package/manifest/components/env-var-input.json +28 -0
  444. package/manifest/components/export-dialog.json +6 -1
  445. package/manifest/components/eyebrow.json +13 -2
  446. package/manifest/components/feedback-dialog.json +3 -0
  447. package/manifest/components/field-description.json +15 -0
  448. package/manifest/components/field-error.json +15 -0
  449. package/manifest/components/field-label.json +16 -1
  450. package/manifest/components/field.json +15 -0
  451. package/manifest/components/file-upload.json +3 -0
  452. package/manifest/components/footer.json +14 -1
  453. package/manifest/components/frames.json +14 -1
  454. package/manifest/components/hover-card.json +37 -3
  455. package/manifest/components/info-tip.json +3 -0
  456. package/manifest/components/input-group.json +31 -0
  457. package/manifest/components/input.json +29 -0
  458. package/manifest/components/item.json +3 -1
  459. package/manifest/components/kbd.json +12 -1
  460. package/manifest/components/ledger.json +9 -2
  461. package/manifest/components/link.json +33 -0
  462. package/manifest/components/log-viewer.json +3 -0
  463. package/manifest/components/map-answer.json +3 -1
  464. package/manifest/components/markdown-text.json +3 -0
  465. package/manifest/components/menubar.json +38 -4
  466. package/manifest/components/message-list.json +3 -0
  467. package/manifest/components/message.json +6 -1
  468. package/manifest/components/meter.json +1 -0
  469. package/manifest/components/mobile-composer.json +3 -1
  470. package/manifest/components/multi-select.json +86 -1
  471. package/manifest/components/musical-time-input.json +29 -0
  472. package/manifest/components/navigation-menu.json +48 -3
  473. package/manifest/components/node-card.json +3 -0
  474. package/manifest/components/number-field.json +30 -0
  475. package/manifest/components/otp-field.json +29 -0
  476. package/manifest/components/page-shell.json +14 -0
  477. package/manifest/components/pagination.json +22 -0
  478. package/manifest/components/panel-header.json +13 -0
  479. package/manifest/components/panel.json +14 -1
  480. package/manifest/components/password-input.json +28 -0
  481. package/manifest/components/permission-scopes.json +3 -1
  482. package/manifest/components/piano-keyboard.json +3 -0
  483. package/manifest/components/popover.json +37 -3
  484. package/manifest/components/preset-section.json +9 -1
  485. package/manifest/components/preview.json +24 -10
  486. package/manifest/components/progress.json +10 -1
  487. package/manifest/components/prompt-library.json +3 -1
  488. package/manifest/components/queue-dock.json +3 -1
  489. package/manifest/components/radio-group.json +14 -0
  490. package/manifest/components/radio.json +14 -0
  491. package/manifest/components/rating.json +4 -1
  492. package/manifest/components/reasoning-panel.json +3 -1
  493. package/manifest/components/recommendation-card.json +1 -1
  494. package/manifest/components/resizable.json +4 -1
  495. package/manifest/components/revert-dock.json +3 -1
  496. package/manifest/components/row.json +8 -1
  497. package/manifest/components/scroll-area.json +6 -2
  498. package/manifest/components/scrollable-tabs-list.json +21 -0
  499. package/manifest/components/scrub-input.json +28 -0
  500. package/manifest/components/seam-cell.json +1 -0
  501. package/manifest/components/seam-grid.json +1 -0
  502. package/manifest/components/seam-list.json +8 -1
  503. package/manifest/components/search-input.json +28 -0
  504. package/manifest/components/section-header.json +15 -2
  505. package/manifest/components/segmented-control.json +17 -0
  506. package/manifest/components/select.json +42 -0
  507. package/manifest/components/settings-panel.json +3 -0
  508. package/manifest/components/shape-section.json +9 -1
  509. package/manifest/components/sheet.json +35 -3
  510. package/manifest/components/shimmer-label.json +3 -0
  511. package/manifest/components/sidebar.json +19 -2
  512. package/manifest/components/skeleton.json +2 -0
  513. package/manifest/components/slider.json +16 -0
  514. package/manifest/components/sources.json +3 -1
  515. package/manifest/components/stat.json +17 -0
  516. package/manifest/components/status-bar.json +4 -0
  517. package/manifest/components/stepper.json +8 -0
  518. package/manifest/components/swap-label.json +3 -0
  519. package/manifest/components/switch.json +30 -0
  520. package/manifest/components/table-scroll-region.json +22 -2
  521. package/manifest/components/table.json +22 -2
  522. package/manifest/components/tabs.json +22 -1
  523. package/manifest/components/tags-input.json +86 -1
  524. package/manifest/components/terminal-frame.json +3 -0
  525. package/manifest/components/textarea.json +31 -0
  526. package/manifest/components/theme-configurator.json +35 -3
  527. package/manifest/components/theme-provider.json +31 -19
  528. package/manifest/components/thread-search.json +3 -1
  529. package/manifest/components/threshold-rail.json +3 -0
  530. package/manifest/components/time-field.json +28 -0
  531. package/manifest/components/toast.json +39 -2
  532. package/manifest/components/toggle-group.json +2 -1
  533. package/manifest/components/toggle.json +32 -0
  534. package/manifest/components/token-editor.json +6 -1
  535. package/manifest/components/tool-call-card.json +9 -2
  536. package/manifest/components/tool-call.json +3 -1
  537. package/manifest/components/tool-timeline.json +3 -1
  538. package/manifest/components/toolbar.json +22 -1
  539. package/manifest/components/tooltip.json +42 -3
  540. package/manifest/components/tree-visibility-toggle.json +3 -0
  541. package/manifest/components/tree.json +3 -0
  542. package/manifest/components/universe-grid.json +3 -0
  543. package/manifest/components/voice-conversation.json +3 -0
  544. package/manifest/components/work-collapse.json +3 -1
  545. package/manifest/fixtures.json +15 -0
  546. package/manifest/manifest.json +210 -190
  547. package/manifest/tokens.json +395 -4
  548. package/package.json +6 -6
@@ -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, mono, paper } from "./surfaces.js";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/elements/map-answer.tsx
@@ -15,7 +16,7 @@ function MapAnswer({ pins, activeId, route, onSelect, className, ...props }) {
15
16
  const path = pins.map((pin) => `${pin.x},${pin.y}`).join(" ");
16
17
  return /* @__PURE__ */ jsxs("div", {
17
18
  "data-slot": "map-answer",
18
- className: cn(paper, "flex w-full max-w-sm flex-col overflow-hidden rounded-(--radius-overlay)", className),
19
+ className: cn(paper, "flex w-full max-w-sm flex-col overflow-hidden rounded-overlay", className),
19
20
  ...props,
20
21
  children: [/* @__PURE__ */ jsxs("div", {
21
22
  className: cn(field, "relative h-40"),
@@ -64,7 +65,7 @@ function MapAnswer({ pins, activeId, route, onSelect, className, ...props }) {
64
65
  "aria-label": pin.label,
65
66
  "aria-current": pin.id === activeId || void 0,
66
67
  onClick: () => onSelect?.(pin.id),
67
- className: "focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent absolute flex size-6 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full outline-none",
68
+ className: `${FOCUS_RING} absolute flex size-6 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full outline-none`,
68
69
  style: {
69
70
  left: `${pin.x}%`,
70
71
  top: `${pin.y}%`
@@ -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 { codeScroll, codeSurface, field, mono } from "./surfaces.js";
4
5
  import * as React from "react";
5
6
  import { jsx } from "react/jsx-runtime";
@@ -452,7 +453,7 @@ function markdownComponents(options) {
452
453
  title,
453
454
  target,
454
455
  rel: "noopener noreferrer nofollow",
455
- className: "text-accent underline underline-offset-2 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-solid focus-visible:outline-accent",
456
+ className: `text-accent underline underline-offset-2 ${FOCUS_RING}`,
456
457
  children
457
458
  }),
458
459
  strong: ({ children }) => /* @__PURE__ */ jsx("strong", {
@@ -503,11 +504,11 @@ function markdownComponents(options) {
503
504
  loading: "lazy",
504
505
  decoding: "async",
505
506
  referrerPolicy: "no-referrer",
506
- className: "max-w-full rounded-(--radius-control) border border-border"
507
+ className: "max-w-full rounded-control border border-border"
507
508
  }),
508
509
  code: ({ children, className: codeClass }) => /* @__PURE__ */ jsx("code", {
509
510
  "data-slot": "markdown-code",
510
- className: cn(mono, "rounded-(--radius-control) [pre_&]:rounded-none [pre_&]:bg-transparent [pre_&]:px-0 [pre_&]:py-0", field, "px-[0.35em] py-[0.1em]", codeClass),
511
+ className: cn(mono, "rounded-control [pre_&]:rounded-none [pre_&]:bg-transparent [pre_&]:px-0 [pre_&]:py-0", field, "px-[0.35em] py-[0.1em]", codeClass),
511
512
  children
512
513
  }),
513
514
  pre: ({ children, node }) => {
@@ -515,7 +516,7 @@ function markdownComponents(options) {
515
516
  return /* @__PURE__ */ jsx("pre", {
516
517
  "data-slot": "markdown-code-block",
517
518
  "data-language": block.language,
518
- className: cn("m-0 rounded-(--radius-control) border border-border p-(--cue-space-3)", field, codeScroll),
519
+ className: cn("m-0 rounded-control border border-border p-(--cue-space-3)", field, codeScroll),
519
520
  children: renderCodeBlock === void 0 ? children : /* @__PURE__ */ jsx("span", {
520
521
  className: codeSurface,
521
522
  children: renderCodeBlock(block)
@@ -15,7 +15,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
15
15
  function MathBlock({ label, steps, visibleSteps, className, ...props }) {
16
16
  return /* @__PURE__ */ jsxs("div", {
17
17
  "data-slot": "math-block",
18
- className: cn(paper, "flex w-full max-w-sm flex-col gap-2.5 rounded-(--radius-overlay) p-4", className),
18
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-2.5 rounded-overlay p-4", className),
19
19
  ...props,
20
20
  children: [label && /* @__PURE__ */ jsx("span", {
21
21
  className: cn("font-mono text-(length:--cue-text-label) tracking-tight", "text-fg-subtle"),
@@ -34,7 +34,7 @@ function McpServerPanel({ servers, expandedId, onToggle, onAuthorize, className,
34
34
  const connected = servers.filter((server) => server.status === "connected").length;
35
35
  return /* @__PURE__ */ jsxs("div", {
36
36
  "data-slot": "mcp-server-panel",
37
- className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-(--radius-overlay) p-3", className),
37
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-overlay p-3", className),
38
38
  ...props,
39
39
  children: [/* @__PURE__ */ jsxs("div", {
40
40
  className: "flex items-baseline justify-between px-1 pb-1",
@@ -58,7 +58,7 @@ function McpServerPanel({ servers, expandedId, onToggle, onAuthorize, className,
58
58
  type: "button",
59
59
  "aria-expanded": expanded,
60
60
  onClick: () => onToggle?.(server.id),
61
- className: "hover:bg-surface-1 flex items-center gap-2.5 rounded-(--radius-surface) px-1.5 py-2 text-start transition-colors",
61
+ className: "hover:bg-surface-1 flex items-center gap-2.5 rounded-surface px-1.5 py-2 text-start transition-colors",
62
62
  children: [
63
63
  /* @__PURE__ */ jsx(ChevronRightIcon, { className: cn("text-fg-subtle size-3 shrink-0 transition-transform duration-200 motion-reduce:transition-none", expanded && "rotate-90") }),
64
64
  /* @__PURE__ */ jsx(PlugIcon, { className: "text-fg-subtle size-3.5 shrink-0" }),
@@ -102,7 +102,7 @@ function McpServerPanel({ servers, expandedId, onToggle, onAuthorize, className,
102
102
  }), /* @__PURE__ */ jsx("div", {
103
103
  className: "flex flex-wrap gap-1",
104
104
  children: server.tools.map((tool) => /* @__PURE__ */ jsx("span", {
105
- className: cn("bg-fg/[0.06]", "font-mono text-(length:--cue-text-label) tracking-tight", "text-fg-muted rounded-(--radius-control) px-1.5 py-0.5"),
105
+ className: cn("bg-fg/[0.06]", "font-mono text-(length:--cue-text-label) tracking-tight", "text-fg-muted rounded-control px-1.5 py-0.5"),
106
106
  children: tool
107
107
  }, tool))
108
108
  })]
@@ -17,11 +17,11 @@ function MessageAttachments({ attachments, onOpen, className, ...props }) {
17
17
  children: attachments.map((item) => item.kind === "image" ? /* @__PURE__ */ jsxs("button", {
18
18
  type: "button",
19
19
  onClick: () => onOpen?.(item.id),
20
- className: cn(paper, "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both group flex w-full items-center gap-3 overflow-hidden rounded-(--radius-overlay) p-2 text-start duration-300"),
20
+ className: cn(paper, "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both group flex w-full items-center gap-3 overflow-hidden rounded-overlay p-2 text-start duration-300"),
21
21
  children: [
22
22
  /* @__PURE__ */ jsx("span", {
23
23
  "aria-hidden": true,
24
- className: "size-12 shrink-0 rounded-(--radius-surface) bg-cover bg-center transition-transform duration-300 group-hover:scale-[1.04] motion-reduce:transition-none",
24
+ className: "size-12 shrink-0 rounded-surface bg-cover bg-center transition-transform duration-300 group-hover:scale-[1.04] motion-reduce:transition-none",
25
25
  style: {
26
26
  backgroundImage: item.swatch,
27
27
  backgroundColor: "var(--cue-fg)"
@@ -42,9 +42,9 @@ function MessageAttachments({ attachments, onOpen, className, ...props }) {
42
42
  }, item.id) : /* @__PURE__ */ jsxs("button", {
43
43
  type: "button",
44
44
  onClick: () => onOpen?.(item.id),
45
- className: cn(field, "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both hover:bg-surface-2 flex w-full items-center gap-2.5 rounded-(--radius-overlay) px-3 py-2.5 text-start transition-colors duration-300"),
45
+ className: cn(field, "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both hover:bg-surface-2 flex w-full items-center gap-2.5 rounded-overlay px-3 py-2.5 text-start transition-colors duration-300"),
46
46
  children: [/* @__PURE__ */ jsx("span", {
47
- className: "bg-bg text-fg-muted flex size-8 shrink-0 items-center justify-center rounded-(--radius-surface)",
47
+ className: "bg-bg text-fg-muted flex size-8 shrink-0 items-center justify-center rounded-surface",
48
48
  children: item.kind === "document" ? /* @__PURE__ */ jsx(FileTextIcon, { className: "size-3.5" }) : /* @__PURE__ */ jsx(PaperclipIcon, { className: "size-3.5" })
49
49
  }), /* @__PURE__ */ jsxs("span", {
50
50
  className: "flex min-w-0 flex-1 flex-col gap-0.5",
@@ -25,7 +25,7 @@ function MessagePair({ userMessage, words, visibleWords, streaming, variant = "b
25
25
  className: cn("flex w-full max-w-sm flex-col gap-5", className),
26
26
  ...props,
27
27
  children: [/* @__PURE__ */ jsx("p", {
28
- className: cn("max-w-[85%] self-end text-(length:--cue-text-body)", variant === "bubble" ? cn(paper, "rounded-(--radius-overlay) px-3.5 py-2") : "text-fg text-end"),
28
+ className: cn("max-w-[85%] self-end text-(length:--cue-text-body)", variant === "bubble" ? cn(paper, "rounded-overlay px-3.5 py-2") : "text-fg text-end"),
29
29
  children: userMessage
30
30
  }), /* @__PURE__ */ jsxs("div", {
31
31
  className: "group/message flex flex-col items-start",
@@ -23,7 +23,7 @@ function MessageQueue({ running, queued, onCancel, className, ...props }) {
23
23
  ...props,
24
24
  children: [
25
25
  /* @__PURE__ */ jsxs("div", {
26
- className: cn(paper, "flex items-center gap-2.5 rounded-(--radius-overlay) p-3"),
26
+ className: cn(paper, "flex items-center gap-2.5 rounded-overlay p-3"),
27
27
  children: [
28
28
  /* @__PURE__ */ jsxs("span", {
29
29
  className: "relative flex size-2 shrink-0",
@@ -52,7 +52,7 @@ function MessageQueue({ running, queued, onCancel, className, ...props }) {
52
52
  /* @__PURE__ */ jsx("ul", {
53
53
  className: "flex flex-col gap-1.5",
54
54
  children: queued.map((message, index) => /* @__PURE__ */ jsxs("li", {
55
- className: cn(field, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in cue-elements-fill-mode-both flex items-center gap-2.5 rounded-(--radius-overlay) py-2 pr-2 pl-3 duration-300"),
55
+ className: cn(field, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in cue-elements-fill-mode-both flex items-center gap-2.5 rounded-overlay py-2 pr-2 pl-3 duration-300"),
56
56
  children: [
57
57
  /* @__PURE__ */ jsx("span", {
58
58
  className: cn(mono, "text-fg-subtle w-3 shrink-0 tabular-nums"),
@@ -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, ghostButton, inkButton } from "./surfaces.js";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  import { ArrowUpIcon, MicIcon, PlusIcon, SquareIcon } from "lucide-react";
@@ -22,7 +23,7 @@ import { ArrowUpIcon, MicIcon, PlusIcon, SquareIcon } from "lucide-react";
22
23
  function MobileComposer({ value, keyboardOpen, running, actions, onAction, onAttach, onValueChange, onSend, onStop, onFocus, className, ...props }) {
23
24
  return /* @__PURE__ */ jsxs("div", {
24
25
  "data-slot": "mobile-composer",
25
- className: cn("bg-bg border-border flex w-full max-w-[19rem] flex-col gap-2.5 rounded-t-(--radius-overlay) border-t px-3 pt-3", keyboardOpen ? "pb-3" : "pb-6", className),
26
+ className: cn("bg-bg border-border flex w-full max-w-[19rem] flex-col gap-2.5 rounded-t-overlay border-t px-3 pt-3", keyboardOpen ? "pb-3" : "pb-6", className),
26
27
  ...props,
27
28
  children: [
28
29
  !keyboardOpen && /* @__PURE__ */ jsx("div", {
@@ -47,7 +48,7 @@ function MobileComposer({ value, keyboardOpen, running, actions, onAction, onAtt
47
48
  children: /* @__PURE__ */ jsx(PlusIcon, { className: "size-4" })
48
49
  }),
49
50
  /* @__PURE__ */ jsxs("div", {
50
- className: cn(field, "flex min-w-0 flex-1 items-center gap-2 rounded-(--radius-overlay) px-3 py-2"),
51
+ className: cn(field, "flex min-w-0 flex-1 items-center gap-2 rounded-overlay px-3 py-2"),
51
52
  children: [/* @__PURE__ */ jsx("input", {
52
53
  value,
53
54
  onChange: (event) => onValueChange?.(event.target.value),
@@ -60,7 +61,7 @@ function MobileComposer({ value, keyboardOpen, running, actions, onAction, onAtt
60
61
  },
61
62
  placeholder: "Message",
62
63
  "aria-label": "Message",
63
- className: "text-fg-muted placeholder:text-fg-subtle min-w-0 flex-1 bg-transparent text-(length:--cue-text-emphasis) outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent"
64
+ className: `text-fg-muted placeholder:text-fg-subtle min-w-0 flex-1 bg-transparent text-(length:--cue-text-emphasis) outline-none ${FOCUS_RING}`
64
65
  }), value === "" && /* @__PURE__ */ jsx(MicIcon, { className: "text-fg-subtle size-4 shrink-0" })]
65
66
  }),
66
67
  /* @__PURE__ */ jsx("button", {
@@ -17,7 +17,7 @@ function ModelPicker({ models, selectedId, onSelect, className, ...props }) {
17
17
  const families = [...new Set(models.map((model) => model.family))];
18
18
  return /* @__PURE__ */ jsx("div", {
19
19
  "data-slot": "model-picker",
20
- className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-(--radius-overlay) p-2", className),
20
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-overlay p-2", className),
21
21
  ...props,
22
22
  children: families.map((family) => /* @__PURE__ */ jsxs("div", {
23
23
  className: "flex flex-col",
@@ -30,7 +30,7 @@ function ModelPicker({ models, selectedId, onSelect, className, ...props }) {
30
30
  type: "button",
31
31
  "aria-pressed": selected,
32
32
  onClick: () => onSelect?.(model.id),
33
- className: cn("flex items-center gap-2.5 rounded-(--radius-surface) px-2 py-2 text-start transition-colors", selected ? "bg-surface-2" : "hover:bg-surface-1"),
33
+ className: cn("flex items-center gap-2.5 rounded-surface px-2 py-2 text-start transition-colors", selected ? "bg-surface-2" : "hover:bg-surface-1"),
34
34
  children: [
35
35
  /* @__PURE__ */ jsx("span", {
36
36
  className: "flex size-3.5 shrink-0 items-center justify-center",
@@ -44,7 +44,7 @@ function ModelPicker({ models, selectedId, onSelect, className, ...props }) {
44
44
  }), /* @__PURE__ */ jsx("span", {
45
45
  className: "flex flex-wrap gap-1",
46
46
  children: model.capabilities.map((capability) => /* @__PURE__ */ jsx("span", {
47
- className: cn(field, mono, "text-fg-muted rounded-(--radius-control) px-1 py-px"),
47
+ className: cn(field, mono, "text-fg-muted rounded-control px-1 py-px"),
48
48
  children: capability
49
49
  }, capability))
50
50
  })]
@@ -19,7 +19,7 @@ function Onboarding({ steps, index, onNext, onSkip, className, ...props }) {
19
19
  const last = current >= steps.length - 1;
20
20
  return /* @__PURE__ */ jsxs("div", {
21
21
  "data-slot": "onboarding",
22
- className: cn(paper, "flex w-full max-w-sm flex-col gap-4 rounded-(--radius-overlay) p-5", className),
22
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-4 rounded-overlay p-5", className),
23
23
  ...props,
24
24
  children: [/* @__PURE__ */ jsxs("div", {
25
25
  className: "cue-elements-fade-in cue-elements-animate-in flex flex-col gap-2 duration-300",
@@ -41,7 +41,7 @@ function Onboarding({ steps, index, onNext, onSkip, className, ...props }) {
41
41
  children: step.body
42
42
  }),
43
43
  /* @__PURE__ */ jsx("span", {
44
- className: cn(field, "text-fg-muted rounded-(--radius-surface) px-3 py-2 text-(length:--cue-text-body) leading-(--cue-leading-ui)"),
44
+ className: cn(field, "text-fg-muted rounded-surface px-3 py-2 text-(length:--cue-text-body) leading-(--cue-leading-ui)"),
45
45
  children: step.example
46
46
  })
47
47
  ]
@@ -21,13 +21,13 @@ import { KeyRoundIcon } from "lucide-react";
21
21
  function PermissionGrant({ capability, requester, reach, scope, onGrant, className, ...props }) {
22
22
  return /* @__PURE__ */ jsxs("div", {
23
23
  "data-slot": "permission-grant",
24
- className: cn(paper, "flex w-full max-w-sm flex-col gap-3.5 rounded-(--radius-overlay) p-4", className),
24
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3.5 rounded-overlay p-4", className),
25
25
  ...props,
26
26
  children: [
27
27
  /* @__PURE__ */ jsxs("div", {
28
28
  className: "flex items-center gap-2.5",
29
29
  children: [/* @__PURE__ */ jsx("span", {
30
- className: "bg-surface-1 text-fg-muted flex size-7 shrink-0 items-center justify-center rounded-(--radius-surface)",
30
+ className: "bg-surface-1 text-fg-muted flex size-7 shrink-0 items-center justify-center rounded-surface",
31
31
  children: /* @__PURE__ */ jsx(KeyRoundIcon, { className: "size-3.5" })
32
32
  }), /* @__PURE__ */ jsxs("div", {
33
33
  className: "flex min-w-0 flex-1 flex-col",
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { FOCUS_RING_INSET_2, FOCUS_RING_OFFSET_2 } from "../system/_focus-ring.js";
3
4
  import { field, fieldInteractive, mono, paper } from "./surfaces.js";
4
5
  import { PERMISSION_LABELS } from "./vocabulary.js";
5
6
  import * as React from "react";
@@ -170,7 +171,7 @@ const PermissionScopes = React.forwardRef(function PermissionScopes({ question,
170
171
  event.preventDefault();
171
172
  answer.run();
172
173
  },
173
- className: cn(paper, "flex w-full max-w-md flex-col gap-2.5 rounded-(--radius-overlay) p-3", className),
174
+ className: cn(paper, "flex w-full max-w-md flex-col gap-2.5 rounded-overlay p-3", className),
174
175
  ...elementProps,
175
176
  children: [
176
177
  /* @__PURE__ */ jsxs("p", {
@@ -183,7 +184,7 @@ const PermissionScopes = React.forwardRef(function PermissionScopes({ question,
183
184
  }),
184
185
  input === void 0 ? null : /* @__PURE__ */ jsx("pre", {
185
186
  "data-slot": "permission-scopes-input",
186
- className: cn(field, mono, "text-fg-muted max-h-40 overflow-auto rounded-(--radius-control) px-2.5 py-2 whitespace-pre-wrap"),
187
+ className: cn(field, mono, "text-fg-muted max-h-40 overflow-auto rounded-control px-2.5 py-2 whitespace-pre-wrap"),
187
188
  children: input
188
189
  }),
189
190
  /* @__PURE__ */ jsx("ul", {
@@ -195,7 +196,7 @@ const PermissionScopes = React.forwardRef(function PermissionScopes({ question,
195
196
  type: "button",
196
197
  "data-answer": answer.id,
197
198
  onClick: answer.run,
198
- className: cn(answer.id === "always" ? fieldInteractive : "hover:bg-surface-2", "flex w-full items-baseline gap-1 rounded-(--radius-control) px-2 py-1.5 text-start text-(length:--cue-text-ui) outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent", answer.id === "deny" ? "text-fg-muted" : "text-fg"),
199
+ className: cn(answer.id === "always" ? fieldInteractive : "hover:bg-surface-2", `flex w-full items-baseline gap-1 rounded-control px-2 py-1.5 text-start text-(length:--cue-text-ui) outline-none ${FOCUS_RING_INSET_2}`, answer.id === "deny" ? "text-fg-muted" : "text-fg"),
199
200
  children: [/* @__PURE__ */ jsx("span", {
200
201
  className: cn(mono, "shrink-0 opacity-60"),
201
202
  children: index + 1
@@ -211,7 +212,7 @@ const PermissionScopes = React.forwardRef(function PermissionScopes({ question,
211
212
  onClick: () => {
212
213
  onScopeChange(scopes[(scopes.indexOf(chosen) + 1) % scopes.length].id);
213
214
  },
214
- className: "text-fg-subtle ms-6 self-start rounded-(--radius-control) text-start text-(length:--cue-text-ui) wrap-anywhere underline decoration-dotted underline-offset-2 outline-none hover:decoration-solid focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-accent",
215
+ className: `text-fg-subtle ms-6 self-start rounded-control text-start text-(length:--cue-text-ui) wrap-anywhere underline decoration-dotted underline-offset-2 outline-none hover:decoration-solid ${FOCUS_RING_OFFSET_2}`,
215
216
  children: chosen.writes
216
217
  }) : /* @__PURE__ */ jsx("span", {
217
218
  "data-slot": "permission-scopes-destination",
@@ -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, paper } from "./surfaces.js";
4
5
  import { useId } from "react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -46,11 +47,11 @@ function PromptLibrary({ prompts, query, selectedId, onQueryChange, onSelect, on
46
47
  };
47
48
  return /* @__PURE__ */ jsxs("div", {
48
49
  "data-slot": "prompt-library",
49
- className: cn(paper, "flex w-full max-w-sm flex-col gap-2 rounded-(--radius-overlay) p-3", className),
50
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-2 rounded-overlay p-3", className),
50
51
  ...props,
51
52
  children: [
52
53
  /* @__PURE__ */ jsxs("div", {
53
- className: cn(field, "flex items-center gap-2 rounded-(--radius-surface) px-2.5 py-1.5"),
54
+ className: cn(field, "flex items-center gap-2 rounded-surface px-2.5 py-1.5"),
54
55
  children: [/* @__PURE__ */ jsx(BookmarkIcon, { className: "text-fg-subtle size-3.5 shrink-0" }), /* @__PURE__ */ jsx("input", {
55
56
  value: query,
56
57
  onChange: (event) => onQueryChange?.(event.target.value),
@@ -62,7 +63,7 @@ function PromptLibrary({ prompts, query, selectedId, onQueryChange, onSelect, on
62
63
  "aria-controls": listId,
63
64
  "aria-autocomplete": "list",
64
65
  "aria-activedescendant": selected ? optionId(selected.id) : void 0,
65
- 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"
66
+ className: `text-fg-muted placeholder:text-fg-subtle min-w-0 flex-1 bg-transparent text-(length:--cue-text-body) outline-none ${FOCUS_RING}`
66
67
  })]
67
68
  }),
68
69
  /* @__PURE__ */ jsx("div", {
@@ -79,7 +80,7 @@ function PromptLibrary({ prompts, query, selectedId, onQueryChange, onSelect, on
79
80
  onMouseDown: (event) => event.preventDefault(),
80
81
  onClick: () => onSelect?.(prompt.id),
81
82
  onDoubleClick: () => onInsert?.(prompt.id),
82
- className: cn("flex items-center gap-2 rounded-(--radius-surface) px-2 py-1.5 text-start transition-colors", prompt.id === selectedId ? "bg-surface-1" : "hover:bg-surface-1"),
83
+ className: cn("flex items-center gap-2 rounded-surface px-2 py-1.5 text-start transition-colors", prompt.id === selectedId ? "bg-surface-1" : "hover:bg-surface-1"),
83
84
  children: [/* @__PURE__ */ jsx("span", {
84
85
  className: "min-w-0 flex-1 truncate text-(length:--cue-text-body)",
85
86
  children: prompt.name
@@ -98,14 +99,14 @@ function PromptLibrary({ prompts, query, selectedId, onQueryChange, onSelect, on
98
99
  ]
99
100
  }),
100
101
  selected && /* @__PURE__ */ jsxs("div", {
101
- className: cn("bg-fg/[0.06]", "cue-elements-fade-in cue-elements-animate-in flex flex-col gap-2 rounded-(--radius-surface) p-2.5 duration-200"),
102
+ className: cn("bg-fg/[0.06]", "cue-elements-fade-in cue-elements-animate-in flex flex-col gap-2 rounded-surface p-2.5 duration-200"),
102
103
  children: [/* @__PURE__ */ jsx("p", {
103
104
  className: "text-fg-muted text-(length:--cue-text-ui) leading-(--cue-leading-ui) break-words",
104
105
  children: selected.body
105
106
  }), selected.variables.length > 0 && /* @__PURE__ */ jsx("div", {
106
107
  className: "flex flex-wrap gap-1",
107
108
  children: selected.variables.map((variable) => /* @__PURE__ */ jsx("span", {
108
- className: cn("font-mono text-(length:--cue-text-label) tracking-tight", "bg-bg text-fg-muted rounded-(--radius-control) px-1.5 py-0.5"),
109
+ className: cn("font-mono text-(length:--cue-text-label) tracking-tight", "bg-bg text-fg-muted rounded-control px-1.5 py-0.5"),
109
110
  children: `{${variable}}`
110
111
  }, variable))
111
112
  })]
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { FOCUS_RING_INSET_2 } from "../system/_focus-ring.js";
3
4
  import { field, ghostButton, mono, paper } from "./surfaces.js";
4
5
  import { QUEUE_LABELS } from "./vocabulary.js";
5
6
  import * as React from "react";
@@ -73,14 +74,14 @@ const QueueDock = React.forwardRef(function QueueDock({ messages, open, onOpenCh
73
74
  ref,
74
75
  "data-slot": "queue-dock",
75
76
  "data-open": String(open),
76
- className: cn(paper, "flex w-full flex-col rounded-(--radius-overlay)", className),
77
+ className: cn(paper, "flex w-full flex-col rounded-overlay", className),
77
78
  ...elementProps,
78
79
  children: [/* @__PURE__ */ jsxs("button", {
79
80
  type: "button",
80
81
  "aria-expanded": open,
81
82
  title: open ? copy.collapse : copy.expand,
82
83
  onClick: () => onOpenChange?.(!open),
83
- className: "hover:bg-surface-2 flex items-center gap-2.5 rounded-(--radius-overlay) px-3 py-2 text-start transition-colors focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent motion-reduce:transition-none",
84
+ className: `hover:bg-surface-2 flex items-center gap-2.5 rounded-overlay px-3 py-2 text-start transition-colors ${FOCUS_RING_INSET_2} motion-reduce:transition-none`,
84
85
  children: [/* @__PURE__ */ jsx(ChevronRightIcon, {
85
86
  "aria-hidden": true,
86
87
  className: cn("text-fg-subtle size-3 shrink-0 transition-transform duration-200 motion-reduce:transition-none", open && "rotate-90")
@@ -92,7 +93,7 @@ const QueueDock = React.forwardRef(function QueueDock({ messages, open, onOpenCh
92
93
  "data-slot": "queue-dock-entries",
93
94
  className: "flex flex-col gap-1 px-2 pb-2",
94
95
  children: messages.map((message, index) => /* @__PURE__ */ jsxs("li", {
95
- className: cn(field, "flex items-center gap-2 rounded-(--radius-control) py-1.5 pe-1.5 ps-2.5"),
96
+ className: cn(field, "flex items-center gap-2 rounded-control py-1.5 pe-1.5 ps-2.5"),
96
97
  children: [
97
98
  /* @__PURE__ */ jsx("span", {
98
99
  className: cn(mono, "text-fg-subtle w-3 shrink-0 tabular-nums"),
@@ -17,7 +17,7 @@ function QuotaBanner({ used, limit, unit, resetsIn, upgradeLabel, onUpgrade, cla
17
17
  const tight = (limit === 0 ? 0 : used / limit) >= .9;
18
18
  return /* @__PURE__ */ jsxs("div", {
19
19
  "data-slot": "quota-banner",
20
- className: cn(paper, "flex w-full max-w-sm flex-col gap-2.5 rounded-(--radius-overlay) p-3.5", className),
20
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-2.5 rounded-overlay p-3.5", className),
21
21
  ...props,
22
22
  children: [
23
23
  /* @__PURE__ */ jsxs("div", {
@@ -38,7 +38,7 @@ function QuoteReply({ before, selection, after, actions, toolbarVisible, quoted,
38
38
  children: before
39
39
  }),
40
40
  /* @__PURE__ */ jsx("span", {
41
- className: "text-fg rounded-(--radius-control) bg-stream/25 px-0.5",
41
+ className: "text-fg rounded-control bg-stream/25 px-0.5",
42
42
  children: selection
43
43
  }),
44
44
  /* @__PURE__ */ jsx("span", {
@@ -26,12 +26,12 @@ function ReadAloud({ words, spokenIndex, playing, rate, elapsed, duration, onTog
26
26
  const progress = pct(spokenIndex, words.length);
27
27
  return /* @__PURE__ */ jsxs("div", {
28
28
  "data-slot": "read-aloud",
29
- className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-(--radius-overlay) p-3.5", className),
29
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-3.5", className),
30
30
  ...props,
31
31
  children: [/* @__PURE__ */ jsx("p", {
32
32
  className: "text-(length:--cue-text-body) leading-(--cue-leading-ui)",
33
33
  children: words.map((word, i) => /* @__PURE__ */ jsxs("span", {
34
- className: cn("transition-colors duration-200 motion-reduce:transition-none", i < spokenIndex ? "text-fg-subtle" : i === spokenIndex ? "text-fg rounded-(--radius-control) bg-stream/15" : "text-fg-muted"),
34
+ className: cn("transition-colors duration-200 motion-reduce:transition-none", i < spokenIndex ? "text-fg-subtle" : i === spokenIndex ? "text-fg rounded-control bg-stream/15" : "text-fg-muted"),
35
35
  children: [word, " "]
36
36
  }, `${i}-${word}`))
37
37
  }), /* @__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 { ShimmerLabel, SwapLabel, collapsePanel } from "./surfaces.js";
4
5
  import { take } from "./range.js";
5
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -31,7 +32,7 @@ function ReasoningPanel({ steps, visibleSteps, streaming, open, onOpenChange, re
31
32
  onOpenChange,
32
33
  className: cn("w-full max-w-sm", className),
33
34
  children: [/* @__PURE__ */ jsxs(Collapsible.Trigger, {
34
- className: "group/trigger text-fg-muted hover:text-fg flex items-center gap-1.5 py-1 text-(length:--cue-text-body) transition-[color,scale] outline-none active:scale-[0.98] focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent",
35
+ className: `group/trigger text-fg-muted hover:text-fg flex items-center gap-1.5 py-1 text-(length:--cue-text-body) transition-[color,scale] outline-none active:scale-[0.98] ${FOCUS_RING}`,
35
36
  children: [/* @__PURE__ */ jsxs(SwapLabel, {
36
37
  active: streaming ? 0 : 1,
37
38
  className: "text-start",
@@ -19,7 +19,7 @@ type RecommendationState = "idle" | "accepted";
19
19
  * onAccept={() => accept()}
20
20
  * >
21
21
  * Wire{" "}
22
- * <span className="bg-surface-2 text-fg-muted rounded-(--radius-control) px-1.5 py-0.5 font-mono text-(length:--cue-text-label)">
22
+ * <span className="bg-surface-2 text-fg-muted rounded-control px-1.5 py-0.5 font-mono text-(length:--cue-text-label)">
23
23
  * runtime.drafts
24
24
  * </span>{" "}
25
25
  * with three lines.
@@ -23,7 +23,7 @@ const CONFIDENCE_BARS = [
23
23
  * onAccept={() => accept()}
24
24
  * >
25
25
  * Wire{" "}
26
- * <span className="bg-surface-2 text-fg-muted rounded-(--radius-control) px-1.5 py-0.5 font-mono text-(length:--cue-text-label)">
26
+ * <span className="bg-surface-2 text-fg-muted rounded-control px-1.5 py-0.5 font-mono text-(length:--cue-text-label)">
27
27
  * runtime.drafts
28
28
  * </span>{" "}
29
29
  * with three lines.
@@ -32,7 +32,7 @@ const CONFIDENCE_BARS = [
32
32
  function RecommendationCard({ state, question, children, confidenceLabel, acceptedLabel, onAccept, onAlternatives, className, ...props }) {
33
33
  return /* @__PURE__ */ jsxs("div", {
34
34
  "data-slot": "recommendation-card",
35
- className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-(--radius-overlay) p-4", className),
35
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-4", className),
36
36
  ...props,
37
37
  children: [
38
38
  /* @__PURE__ */ jsx("p", {
@@ -31,11 +31,11 @@ function RegenerateMenu({ options, open, currentId, onOpenChange, onPick, classN
31
31
  className: cn(ghostButton, "size-7 self-start", open && "bg-surface-2 text-fg"),
32
32
  children: /* @__PURE__ */ jsx(RefreshCwIcon, { className: "size-3.5" })
33
33
  }), open && /* @__PURE__ */ jsx("div", {
34
- className: cn("bg-surface-2 border border-border-overlay", "cue-elements-fade-in cue-elements-zoom-in-95 cue-elements-slide-in-from-top-1 cue-elements-animate-in flex flex-col gap-0.5 rounded-(--radius-overlay) p-1.5 duration-200"),
34
+ className: cn("bg-surface-2 border border-border-overlay", "cue-elements-fade-in cue-elements-zoom-in-95 cue-elements-slide-in-from-top-1 cue-elements-animate-in flex flex-col gap-0.5 rounded-overlay p-1.5 duration-200"),
35
35
  children: options.map((option) => /* @__PURE__ */ jsxs("button", {
36
36
  type: "button",
37
37
  onClick: () => onPick?.(option.id),
38
- className: "hover:bg-surface-1 flex items-baseline gap-2 rounded-(--radius-surface) px-2.5 py-1.5 text-start transition-colors",
38
+ className: "hover:bg-surface-1 flex items-baseline gap-2 rounded-surface px-2.5 py-1.5 text-start transition-colors",
39
39
  children: [/* @__PURE__ */ jsx("span", {
40
40
  className: "min-w-0 flex-1 truncate text-(length:--cue-text-body)",
41
41
  children: option.label
@@ -16,7 +16,7 @@ function ResearchReport({ title, sections, sourcesRead, className, ...props }) {
16
16
  const done = sections.filter((section) => section.state === "done").length;
17
17
  return /* @__PURE__ */ jsxs("div", {
18
18
  "data-slot": "research-report",
19
- className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-(--radius-overlay) p-4", className),
19
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-4", className),
20
20
  ...props,
21
21
  children: [/* @__PURE__ */ jsxs("div", {
22
22
  className: "flex flex-col gap-1",
@@ -41,7 +41,7 @@ function RetrievalChunks({ query, chunks, visibleCount, searching, className, ..
41
41
  /* @__PURE__ */ jsx("div", {
42
42
  className: "flex min-h-[7rem] flex-col gap-1.5",
43
43
  children: take(chunks, visibleCount).map((chunk) => /* @__PURE__ */ jsxs("div", {
44
- className: cn(paper, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in cue-elements-fill-mode-both flex flex-col gap-1.5 rounded-(--radius-overlay) px-3.5 py-2.5 duration-300"),
44
+ className: cn(paper, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in cue-elements-fill-mode-both flex flex-col gap-1.5 rounded-overlay px-3.5 py-2.5 duration-300"),
45
45
  children: [
46
46
  /* @__PURE__ */ jsxs("div", {
47
47
  className: "flex items-baseline gap-2",
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { FOCUS_RING, FOCUS_RING_INSET_2 } from "../system/_focus-ring.js";
3
4
  import { field, fieldInteractive, ghostButton, mono, paper } from "./surfaces.js";
4
5
  import { REVERT_LABELS, REVERT_SCOPES, REVERT_SCOPE_DESCRIPTIONS, REVERT_SCOPE_LABELS } from "./vocabulary.js";
5
6
  import * as React from "react";
@@ -210,7 +211,7 @@ const RevertDock = React.forwardRef(function RevertDock({ label = "Revert to thi
210
211
  "data-slot": "revert-dock",
211
212
  "data-open": String(open),
212
213
  "data-confirming": confirming ?? "none",
213
- className: cn(paper, "flex w-full flex-col rounded-(--radius-overlay)", className),
214
+ className: cn(paper, "flex w-full flex-col rounded-overlay", className),
214
215
  onKeyDown: (event) => {
215
216
  onKeyDown?.(event);
216
217
  if (event.key !== "Escape" || confirming === null) return;
@@ -226,7 +227,7 @@ const RevertDock = React.forwardRef(function RevertDock({ label = "Revert to thi
226
227
  if (open && confirming !== null) onConfirmingChange?.(null);
227
228
  onOpenChange?.(!open);
228
229
  },
229
- className: "hover:bg-surface-2 flex items-center gap-2.5 rounded-(--radius-overlay) px-3 py-2 text-start transition-colors focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent motion-reduce:transition-none",
230
+ className: `hover:bg-surface-2 flex items-center gap-2.5 rounded-overlay px-3 py-2 text-start transition-colors ${FOCUS_RING_INSET_2} motion-reduce:transition-none`,
230
231
  children: [
231
232
  /* @__PURE__ */ jsx(HistoryIcon, {
232
233
  "aria-hidden": true,
@@ -270,7 +271,7 @@ const RevertDock = React.forwardRef(function RevertDock({ label = "Revert to thi
270
271
  disabled: confirming !== null,
271
272
  id: armed ? scopeId : void 0,
272
273
  onClick: () => onConfirmingChange?.(scope),
273
- className: cn(confirming === null ? fieldInteractive : armed ? "bg-danger/10" : cn(field, "opacity-60"), "flex flex-col items-start gap-0.5 rounded-(--radius-control) px-3 py-2 text-start outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent"),
274
+ className: cn(confirming === null ? fieldInteractive : armed ? "bg-danger/10" : cn(field, "opacity-60"), `flex flex-col items-start gap-0.5 rounded-control px-3 py-2 text-start outline-none ${FOCUS_RING_INSET_2}`),
274
275
  children: [/* @__PURE__ */ jsx("span", {
275
276
  className: "text-fg text-(length:--cue-text-ui) font-medium",
276
277
  children: scopeCopy[scope]
@@ -311,7 +312,7 @@ const RevertDock = React.forwardRef(function RevertDock({ label = "Revert to thi
311
312
  onConfirmingChange?.(null);
312
313
  onRestore?.(confirming);
313
314
  },
314
- className: "bg-danger text-danger-fg flex items-center gap-1.5 rounded-(--radius-control) px-3 py-1.5 text-(length:--cue-text-ui) font-medium outline-none transition-[opacity,scale] duration-150 enabled:hover:opacity-90 enabled:active:scale-[0.96] disabled:opacity-60 focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent motion-reduce:transition-none",
315
+ className: `bg-danger text-danger-fg flex items-center gap-1.5 rounded-control px-3 py-1.5 text-(length:--cue-text-ui) font-medium outline-none transition-[opacity,scale] duration-150 enabled:hover:opacity-90 enabled:active:scale-[0.96] disabled:opacity-60 ${FOCUS_RING} motion-reduce:transition-none`,
315
316
  children: [/* @__PURE__ */ jsx(RotateCcwIcon, {
316
317
  "aria-hidden": true,
317
318
  className: "size-3.5"
@@ -29,7 +29,7 @@ function ReviewableDiff({ filename, hunks, onKeep, onDiscard, onApply, className
29
29
  const pending = hunks.filter((hunk) => hunk.decision === "pending").length;
30
30
  return /* @__PURE__ */ jsxs("div", {
31
31
  "data-slot": "reviewable-diff",
32
- className: cn(paper, "flex w-full max-w-md flex-col overflow-hidden rounded-(--radius-overlay)", className),
32
+ className: cn(paper, "flex w-full max-w-md flex-col overflow-hidden rounded-overlay", className),
33
33
  ...props,
34
34
  children: [
35
35
  /* @__PURE__ */ jsxs("div", {
@@ -22,14 +22,14 @@ import { CheckIcon, ClockIcon, XIcon } from "lucide-react";
22
22
  function ScheduleCard({ name, cadence, nextRun, enabled, history, onToggle, className, ...props }) {
23
23
  return /* @__PURE__ */ jsxs("div", {
24
24
  "data-slot": "schedule-card",
25
- className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-(--radius-overlay) p-4", className),
25
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-4", className),
26
26
  ...props,
27
27
  children: [
28
28
  /* @__PURE__ */ jsxs("div", {
29
29
  className: "flex items-center gap-2.5",
30
30
  children: [
31
31
  /* @__PURE__ */ jsx("span", {
32
- className: "bg-surface-1 text-fg-muted flex size-7 shrink-0 items-center justify-center rounded-(--radius-surface)",
32
+ className: "bg-surface-1 text-fg-muted flex size-7 shrink-0 items-center justify-center rounded-surface",
33
33
  children: /* @__PURE__ */ jsx(ClockIcon, { className: "size-3.5" })
34
34
  }),
35
35
  /* @__PURE__ */ jsxs("div", {
@@ -54,7 +54,7 @@ function ScheduleCard({ name, cadence, nextRun, enabled, history, onToggle, clas
54
54
  ]
55
55
  }),
56
56
  /* @__PURE__ */ jsxs("div", {
57
- className: cn(field, "flex items-baseline gap-2 rounded-(--radius-surface) px-3 py-2", !enabled && "opacity-45"),
57
+ className: cn(field, "flex items-baseline gap-2 rounded-surface px-3 py-2", !enabled && "opacity-45"),
58
58
  children: [/* @__PURE__ */ jsx("span", {
59
59
  className: cn(mono, "text-fg-subtle"),
60
60
  children: "next"
@@ -22,7 +22,7 @@ function ScoreBreakdown({ verdict, total, outOf, criteria, visibleCount, classNa
22
22
  const ratio = outOf === 0 ? 0 : total / outOf;
23
23
  return /* @__PURE__ */ jsxs("div", {
24
24
  "data-slot": "score-breakdown",
25
- className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-(--radius-overlay) p-4", className),
25
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-4", className),
26
26
  ...props,
27
27
  children: [/* @__PURE__ */ jsxs("div", {
28
28
  className: "flex items-baseline gap-2",