@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
@@ -5,7 +5,7 @@
5
5
  "importPath": "@cueplusplus/ui",
6
6
  "peerDependencies": [],
7
7
  "clientOnly": true,
8
- "description": "Root of the theme system: stamps `data-theme`, `data-density` and `data-mode`\nso the token layer resolves, puts `data-font` on `<html>`, publishes\n`--cue-font-scale`, owns the persisted user preference, and publishes the\nregistry the three axis hooks read.\n\nRendering: `<div data-cue-root data-theme data-density data-mode style={{ colorScheme, --cue-font-scale }}>`\n(or the single child when `asChild`), plus `data-style` when — and only when —\na style set is in force. The `theme`/`density`/`font`/`mode`/`styleSet` props are\n*initial* values — the provider holds the state so `setTheme` and friends can\ndrive it — but a changed prop is adopted after mount, so a controlling parent\nstill works.\n\nThe font pairing is the one axis that never lands on this element: it has no\nisland form, `<html>` is its only home, and restating it here would shadow the\npre-paint stamp for the whole page on the first frame. See the `stamp` object\nbelow.\n\nPersistence and the pre-paint contract: setters write\n`{ theme, density, font, mode }` to `localStorage[storageKey]`, plus a `style`\nkey holding the style set when there is one — omitted entirely when there is\nnot, so an application that never touches that axis writes the same four-key\nobject it always wrote. That is exactly what\n{@link prepaintScript } reads to stamp `<html>` before the first paint. The\noutermost provider keeps `<html>` in sync while the app runs (and restores the\nprevious stamp on unmount) so the page ground, UA scrollbars and form controls\nfollow the theme; nested providers never touch `<html>`, and never own the\nfont pairing — `useTheme().font` and `setFont` inside one are the root's.",
8
+ "description": "Root of the theme system: stamps `data-theme`, `data-density` and `data-mode`\nso the token layer resolves, puts `data-font` on `<html>`, publishes\n`--cue-font-scale`, owns the persisted user preference, and publishes the\nregistry the three axis hooks read.\n\nRendering: `<div data-cue-root data-theme data-density data-mode style={{ colorScheme, --cue-font-scale }}>`\n(or the single child when `asChild`), plus `data-style` when — and only when —\na style set is in force, and `data-paint` on the same terms for a pack. The\n`theme`/`density`/`font`/`mode`/`styleSet`/`paint` props are\n*initial* values — the provider holds the state so `setTheme` and friends can\ndrive it — but a changed prop is adopted after mount, so a controlling parent\nstill works.\n\nA **nested** provider stamps only what it names. One that names no theme,\nrung, mode, set or pack follows each of them from around it, live — a\npreference the root restores after mount, or a setter called at the root,\nreaches it, its `useTheme()` and its portals — and restates none of them on\nits element, so inheritance carries the outer attributes through. Naming a\ntheme or a mode stamps theme, rung and mode together (a theme's light block\nand its rung rules are compound selectors), and restates the set and the pack\nin force beside them, so their blocks — whose values read the theme — resolve\nagainst this element's theme rather than the page's; naming only a rung\nstamps it as a `<Density>` island does.\n\nThe font pairing is the one axis that never lands on this element: it has no\nisland form, `<html>` is its only home, and restating it here would shadow the\npre-paint stamp for the whole page on the first frame. See the `stamp` object\nbelow.\n\nThe other axes wait for the same reason at a root that persists: its server\nmarkup, and its first client render, carry `data-cue-root` and no axis\nattribute or `color-scheme`, so the page inherits the visitor's stored axes\nfrom the pre-paint stamp on `<html>`. The restore lands before the first\npaint, and the element then states what it restored. Read the document's\naxes off `<html>`, not off this element, before hydration.\n\nPersistence and the pre-paint contract: setters write\n`{ theme, density, font, mode }` to `localStorage[storageKey]`, plus a `style`\nkey holding the style set when there is one and a `paint` key holding the pack\nwhen there is one — each omitted entirely when there is not, so an application\nthat never touches either axis writes the same four-key object it always\nwrote. That is exactly what\n{@link prepaintScript } reads to stamp `<html>` before the first paint. The\noutermost provider keeps `<html>` in sync while the app runs (and restores the\nprevious stamp on unmount) so the page ground, UA scrollbars and form controls\nfollow the theme; nested providers never touch `<html>`, and never own the\nfont pairing — `useTheme().font` and `setFont` inside one are the root's.",
9
9
  "props": [
10
10
  {
11
11
  "name": "themes",
@@ -22,7 +22,7 @@
22
22
  "type": "string",
23
23
  "required": false,
24
24
  "defaultValue": null,
25
- "description": "Initial theme preset. Defaults to the first registered manifest's name, or\n`\"cue\"` with nothing registered. Changing it after mount adopts the new value.",
25
+ "description": "Initial theme preset. Defaults to the first registered manifest's name, or\n`\"cue\"` with nothing registered. Changing it after mount adopts the new value.\n\nA nested provider that names **none** holds none: it stamps no\n`data-theme`, so the theme around it inherits through its element, and\n`useTheme().theme` inside it — and every portal opened inside it — follows\nthat theme **live**, a theme the root restores from storage after mount\nincluded. Naming one makes it this provider's, stamped with the rung and\nmode in force beside it, whatever the root does.",
26
26
  "control": {
27
27
  "kind": "string"
28
28
  }
@@ -32,7 +32,7 @@
32
32
  "type": "\"normal\" | \"large\" | \"compact\" | \"ultra-compact\" | \"ultra-large\"",
33
33
  "required": false,
34
34
  "defaultValue": null,
35
- "description": "Initial density level.\n\nDefaults to the rung the active theme's manifest names in\n`densities.default`, and to `\"compact\"` when it names none — spec §5's\nrule, and the same one `resolve()` applies when no rung is wanted, so a\ntheme opens on the rung it prefers whether it is read from JS or painted\nby its own stylesheet. Naming a rung here overrides that for every theme:\na consumer who named one named it deliberately.\n\nChanging it after mount adopts the new value; dropping it does not — a\nparent that stops naming a rung is not asking to move back to the theme's.",
35
+ "description": "Initial density level.\n\nDefaults to the rung the active theme's manifest names in\n`densities.default`, and to `\"compact\"` when it names none — spec §5's\nrule, and the same one `resolve()` applies when no rung is wanted, so a\ntheme opens on the rung it prefers whether it is read from JS or painted\nby its own stylesheet. Naming a rung here overrides that for every theme:\na consumer who named one named it deliberately.\n\nChanging it after mount adopts the new value; dropping it does not — a\nparent that stops naming a rung is not asking to move back to the theme's.\n\nA nested provider that names **none** follows the rung stamped around it\nlive — the outer provider's, or a `<Density>` island's between them — and\nstamps none unless it re-themes or re-modes, in which case it restates the\nrung it follows. Naming one stamps it as a `<Density>` island would.",
36
36
  "control": {
37
37
  "kind": "enum",
38
38
  "members": [
@@ -48,8 +48,8 @@
48
48
  "name": "mode",
49
49
  "type": "\"system\" | \"dark\" | \"light\"",
50
50
  "required": false,
51
- "defaultValue": "dark",
52
- "description": "Initial mode. Defaults to `\"dark\"`; `\"system\"` tracks `prefers-color-scheme`.",
51
+ "defaultValue": null,
52
+ "description": "Initial mode. Defaults to `\"dark\"` at the root; `\"system\"` tracks\n`prefers-color-scheme`.\n\nA nested provider that names **none** follows the mode around it live and\nstamps no `data-mode` or `color-scheme` of its own; `useTheme().mode` and\n`resolvedMode` inside it report the ambient pair. Naming one stamps it\nbeside the theme in force, because a theme's light block is the compound\n`[data-theme][data-mode]`.",
53
53
  "control": {
54
54
  "kind": "enum",
55
55
  "members": [
@@ -61,49 +61,67 @@
61
61
  },
62
62
  {
63
63
  "name": "font",
64
- "type": "\"source\" | \"system\" | \"geist\" | \"inter\" | \"plex\" | \"roboto\" | \"apple\" | \"office\"",
64
+ "type": "\"source\" | \"system\" | \"geist\" | \"geist-mono\" | \"inter\" | \"plex\" | \"roboto\" | \"apple\" | \"office\" | \"inter-source\" | \"dm\" | \"calsans\"",
65
65
  "required": false,
66
66
  "defaultValue": null,
67
- "description": "Initial font pairing.\n\nDefaults to the pairing the active theme's manifest names in\n`fontPairings.default` — §5's rule, the density prop's rule one axis over\n— and to `\"system\"` when it names none: the platform's own faces, nothing\ndownloaded, and the theme keeps whatever monospace it authored.\n\nA pairing that needs delivering is a set of *names*: this library ships no\nfont files, and a pairing nobody delivers falls through its stack to the\nplatform rather than failing. See `FONT_PAIRINGS[font].faces` for the\ncustom properties an app assigns to make one resolve.\n\n**Root-level only.** There is no font island: a nested provider forwards\nthis axis to the root, ignores this prop, and its `setFont` drives the root.\nA page that changed face halfway down is a page with a bug, and a specimen\nthat genuinely wants one — a picker row, a docs page showing all eight —\nneeds nothing from this library but `data-font` on a `<div>`.",
67
+ "description": "Initial font pairing.\n\nDefaults to the pairing the active theme's manifest names in\n`fontPairings.default` — §5's rule, the density prop's rule one axis over\n— and to `\"system\"` when it names none: the platform's own faces, nothing\ndownloaded, and the theme keeps whatever monospace it authored.\n\nA pairing that needs delivering is a set of *names*: this library ships no\nfont files, and a pairing nobody delivers falls through its stack to the\nplatform rather than failing. See `FONT_PAIRINGS[font].faces` for the\ncustom properties an app assigns to make one resolve.\n\n**Root-level only.** There is no font island: a nested provider forwards\nthis axis to the root, ignores this prop, and its `setFont` drives the root.\nA page that changed face halfway down is a page with a bug, and a specimen\nthat genuinely wants one — a picker row, a docs page showing all twelve —\nneeds nothing from this library but `data-font` on a `<div>`.",
68
68
  "control": {
69
69
  "kind": "enum",
70
70
  "members": [
71
71
  "source",
72
72
  "system",
73
73
  "geist",
74
+ "geist-mono",
74
75
  "inter",
75
76
  "plex",
76
77
  "roboto",
77
78
  "apple",
78
- "office"
79
+ "office",
80
+ "inter-source",
81
+ "dm",
82
+ "calsans"
79
83
  ]
80
84
  }
81
85
  },
82
86
  {
83
87
  "name": "styleSet",
84
- "type": "\"console\" | \"editorial\" | \"marketing\"",
88
+ "type": "\"console\" | \"editorial\" | \"marketing\" | \"graphite\" | \"tender\" | \"zine\" | \"kiln\" | \"porcelain\"",
85
89
  "required": false,
86
90
  "defaultValue": null,
87
- "description": "Page composition for this subtree: `console`, `editorial` or `marketing`.\n\n**`styleSet`, not `style`.** This interface already has a\n`style?: React.CSSProperties` a few lines below, applied to the provider\nroot, and a second meaning for that name would be the one collision every\nconsumer of this component would have to think about. The DOM attribute is\n`data-style`, matching the four public axes — `data-cue-*` is this tree's\nprefix for *internal* attributes (`data-cue-theme`, `data-cue-fidelity`), and\na public axis wearing the internal prefix would be the more confusing of the\ntwo mistakes.\n\nUnset, **no attribute is stamped at all**, and that is the promise: an\napplication that has never heard of this axis renders the markup it rendered\nbefore it existed and stores the preference object it stored before it\nexisted. A style set is opt-in page composition, not a fourth thing every\npage has.\n\nLike the other three axes this is an *initial* value the provider then holds\nas state, so `setStyleSet` can drive it; a changed prop is adopted after\nmount. Unlike the font pairing it has an island form, so a nested provider\nholds its own rather than handing the axis up to the root.",
91
+ "description": "Page composition for this subtree: `console`, `editorial`, `marketing` or\n`graphite`.\n\n**`styleSet`, not `style`.** This interface already has a\n`style?: React.CSSProperties` a few lines below, applied to the provider\nroot, and a second meaning for that name would be the one collision every\nconsumer of this component would have to think about. The DOM attribute is\n`data-style`, matching the four public axes — `data-cue-*` is this tree's\nprefix for *internal* attributes (`data-cue-theme`, `data-cue-fidelity`), and\na public axis wearing the internal prefix would be the more confusing of the\ntwo mistakes.\n\nUnset, **no attribute is stamped at all**, and that is the promise: an\napplication that has never heard of this axis renders the markup it rendered\nbefore it existed and stores the preference object it stored before it\nexisted. A style set is opt-in page composition, not a fourth thing every\npage has.\n\nLike the other three axes this is an *initial* value the provider then holds\nas state, so `setStyleSet` can drive it; a changed prop is adopted after\nmount. Unlike the font pairing it has an island form, so a nested provider\nthat names a set holds its own rather than handing the axis up to the root.\n\nA nested provider that names **none** holds none: the set around it\ninherits through its element, and `useTheme().styleSet` inside it reports\nthat set **live** — a stored set the root restores after mount, or a later\n`setStyleSet` at the root, reaches it and its portals. If it names a\n`theme` or a `mode`, it also restates that set as `data-style` on its\nelement — still the page's set, followed live, never its own — because a\nset's block declares values that read the theme (a band's rule and\nground), and a custom property resolves where it is declared: restated,\nthey resolve against this island's theme instead of the page's.",
88
92
  "control": {
89
93
  "kind": "enum",
90
94
  "members": [
91
95
  "console",
92
96
  "editorial",
93
- "marketing"
97
+ "marketing",
98
+ "graphite",
99
+ "tender",
100
+ "zine",
101
+ "kiln",
102
+ "porcelain"
94
103
  ]
95
104
  }
96
105
  },
97
106
  {
98
107
  "name": "paint",
99
- "type": "\"none\"",
108
+ "type": "\"none\" | \"bevel\" | \"halo\" | \"hatch\" | \"lift\" | \"frost\" | \"grain\" | \"plume\" | \"matte\" | \"glaze\"",
100
109
  "required": false,
101
110
  "defaultValue": null,
102
- "description": "A look pack for this subtree. Opt-in: a provider that names none stamps no\n`data-paint`, and a nested one inherits the pack stamped around it.",
111
+ "description": "A paint pack for this subtree. Opt-in: a provider that names none stamps no\n`data-paint` of its own. A nested one that names none follows the pack\nstamped around it **live**, through inheritance in the DOM and through\n`useTheme().paint` and its portals in React — and, if it names a `theme` or\na `mode`, restates that pack as `data-paint` on its element, so the pack's\nstrokes and inks (mixes of the theme's colours) resolve against this\nisland's theme rather than the page's. One that names a pack keeps it\nwhatever the root does.",
103
112
  "control": {
104
113
  "kind": "enum",
105
114
  "members": [
106
- "none"
115
+ "none",
116
+ "bevel",
117
+ "halo",
118
+ "hatch",
119
+ "lift",
120
+ "frost",
121
+ "grain",
122
+ "plume",
123
+ "matte",
124
+ "glaze"
107
125
  ]
108
126
  }
109
127
  },
@@ -112,7 +130,7 @@
112
130
  "type": "number",
113
131
  "required": false,
114
132
  "defaultValue": "1",
115
- "description": "Multiplier on every text token, published as `--cue-font-scale`. Defaults to `1`.",
133
+ "description": "Multiplier on every text token, published as `--cue-font-scale`. Defaults to `1`.\n\nAt a root that persists, pass the same number to\n`prepaintScript({ fontScale })`: until the root has restored the visitor's\npreferences, the type tokens the page reads are declared on `<html>`, and\nthe script is what puts the scale there for the first frame. The root keeps\nit on `<html>` after that.",
116
134
  "control": {
117
135
  "kind": "number"
118
136
  }
@@ -132,7 +150,7 @@
132
150
  "type": "TokenOverrides",
133
151
  "required": false,
134
152
  "defaultValue": null,
135
- "description": "Typed token edits layered over the active theme: colours per mode, geometry\nper rung, and the three font stacks.\n\nFor the band of edits that sit below \"publish a theme package\": one accent\nfor a tenant, a stack the app already loads, a rung with two more pixels in\na touch build. Anything larger belongs in a `@cueplusplus/theme-<name>`\npackage, where a build measures it; anything smaller than this is a\n`!important` in a stray stylesheet, which outranks the token layer\neverywhere at once.\n\n**Colours and fonts are inline on this element**, so they inherit down the\nsubtree, beat every stylesheet without `!important`, and are re-stamped\nonto portal containers — which mount on `<body>` and inherit nothing from\nhere. They do not leak *out* of this provider: a nested provider's colour\nedit is scoped to its own subtree, and to portals opened from inside it.\n\n**Densities are one document-scoped `<style>` element**, because a rung is\nselected by attribute rather than inherited, and because\n`useControlHeight()`'s measuring probe hangs off `document.body`, where\na subtree-scoped rule would not reach it — leaving the measured height and\nthe painted control disagreeing by exactly the override. The consequence is\nworth knowing before you nest one: a nested provider's `densities` edit\nreaches the whole page, exactly as a theme's own rung rules do. Colours and\nfonts in the same object do not.\n\nAnd it cuts the other way as well, which is the half that surprises: two\nproviders editing the same rung produce two document-scoped rules of equal\nspecificity, so the **later** one in document order wins everywhere — and\nthe later one is the outer provider's, because a nested provider renders\ninside it. A nested `densities` edit does not merely leak out; an ancestor\nthat edits the same rung overrules it *inside the nested subtree too*. If\nan island needs geometry of its own, it needs a rung of its own — a name no\nancestor is editing — not the same rung with different numbers.\n\nIts rules are `[data-density=\"x\"][data-density=\"x\"]` — (0,2,0), tying a\ntheme's own `[data-theme=\"t\"] [data-density=\"x\"]` and winning on source\norder — so the precedence is: **`overrides`, then the configurator's\npersisted snapshot, then the theme, then base.**\n\n**A font override shadows the pairing for this subtree.** `data-font` is\nthe document's axis and this element deliberately never restates it (see\nthe note by `stamp` below), but `overrides.fonts` writes the resolved\n`--cue-font-*` properties directly, which is a stronger claim than the\nattribute and is the point: this is how an app says \"this product's face,\nwhatever pairing the visitor picked\".\n\nIn development the resulting palette is measured, and any required contrast\npair the edit broke — or made worse — is named on the console.",
153
+ "description": "Typed token edits layered over the active theme: colours per mode, geometry\nper rung, and the three font stacks.\n\nFor the band of edits that sit below \"publish a theme package\": one accent\nfor a tenant, a stack the app already loads, a rung with two more pixels in\na touch build. Anything larger belongs in a `@cueplusplus/theme-<name>`\npackage, where a build measures it; anything smaller than this is a\n`!important` in a stray stylesheet, which outranks the token layer\neverywhere at once.\n\n**Colours and fonts are inline on this element**, so they inherit down the\nsubtree, beat every stylesheet without `!important`, and are re-stamped\nonto portal containers — which mount on `<body>` and inherit nothing from\nhere. They do not leak *out* of this provider: a nested provider's colour\nedit is scoped to its own subtree, and to portals opened from inside it.\nUnder a root that persists, the server cannot know the visitor's mode, so\nuntil a root has restored, and until a nested provider whose mode is the\nroot's has mounted, the colours are instead one small `<style>` beside this\nelement, keyed on it and on `<html>`'s mode (and on `<html>`'s theme,\nwhere that decides the mode): the first frame is the visitor's mode with\nthat mode's edit, never the other mode's. It carries `nonce`; refused by a\npolicy, the edit waits for the mount.\n\n**Densities are one document-scoped `<style>` element**, because a rung is\nselected by attribute rather than inherited, and because\n`useControlHeight()`'s measuring probe hangs off `document.body`, where\na subtree-scoped rule would not reach it — leaving the measured height and\nthe painted control disagreeing by exactly the override. The consequence is\nworth knowing before you nest one: a nested provider's `densities` edit\nreaches the whole page, exactly as a theme's own rung rules do. Colours and\nfonts in the same object do not.\n\nAnd it cuts the other way as well, which is the half that surprises: two\nproviders editing the same rung produce two document-scoped rules of equal\nspecificity, so the **later** one in document order wins everywhere — and\nthe later one is the outer provider's, because a nested provider renders\ninside it. A nested `densities` edit does not merely leak out; an ancestor\nthat edits the same rung overrules it *inside the nested subtree too*. If\nan island needs geometry of its own, it needs a rung of its own — a name no\nancestor is editing — not the same rung with different numbers.\n\nIts rules are `[data-density=\"x\"][data-density=\"x\"]` — (0,2,0), tying a\ntheme's own `[data-theme=\"t\"] [data-density=\"x\"]` and winning on source\norder — so the precedence is: **`overrides`, then the configurator's\npersisted snapshot, then the theme, then base.**\n\n**A font override shadows the pairing for this subtree.** `data-font` is\nthe document's axis and this element deliberately never restates it (see\nthe note by `stamp` below), but `overrides.fonts` writes the resolved\n`--cue-font-*` properties directly, which is a stronger claim than the\nattribute and is the point: this is how an app says \"this product's face,\nwhatever pairing the visitor picked\".\n\nIn development the resulting palette is measured, and any required contrast\npair the edit broke — or made worse — is named on the console.",
136
154
  "control": {
137
155
  "kind": "opaque"
138
156
  }
@@ -142,7 +160,7 @@
142
160
  "type": "string",
143
161
  "required": false,
144
162
  "defaultValue": "cue-ui",
145
- "description": "localStorage key holding `{ theme, density, font, mode }`. Defaults to `\"cue-ui\"`.\nOnly the outermost provider reads or writes it — a nested provider is an\nisland whose explicit props are the point, not a second preference store.",
163
+ "description": "localStorage key holding `{ theme, density, font, mode }`, plus `style` when a\nstyle set has been chosen and `paint` when a pack has — each omitted, never\nstored as `null`, when none has. Defaults to `\"cue-ui\"`.\nOnly the outermost provider reads or writes it — a nested provider is an\nisland whose explicit props are the point, not a second preference store.",
146
164
  "control": {
147
165
  "kind": "string"
148
166
  }
@@ -162,7 +180,7 @@
162
180
  "type": "string",
163
181
  "required": false,
164
182
  "defaultValue": null,
165
- "description": "The Content-Security-Policy nonce for every `<style>` element this tree\nrenders — this library's and Base UI's.\n\nWhen `overrides.densities` is set this provider emits one `<style>`\nelement (see {@link ThemeProviderProps.overrides}). Under a policy of\n`style-src-elem 'self' 'nonce-<per-request>'` the browser refuses that\nelement on every page load, because an element React renders on the client\ncannot pick up a server nonce by itself. Pass the request's nonce here and\nit is set on the element.\n\nIt also reaches **Base UI**. Given a nonce, this provider renders\n`@base-ui/react`'s own `CSPProvider` around the tree, so the hoisted\n`<style>` that `ScrollAreaRoot` and `SelectPopup` emit carries it too.\nWithout that, a strict policy refuses it by content hash on every page\nrendering a Select, a Popover or a ScrollArea — and a consumer has no way\nto guess the remedy lives in a peer dependency's provider. An outer\n`CSPProvider` a consumer renders itself is left alone: no nonce here means\nno provider here, rather than one that overwrites theirs with `undefined`.\n\n`prepaintScript()` returns a *string* the application renders in a\n`<script>` of its own — so the application already controls that element's\nnonce, and between it and this prop a strict policy needs nothing else\nfrom here.\n\n**Pass this OR render your own `CSPProvider` — not both.** Base UI's\ncontext carries a second value beside the nonce, `disableStyleElements`,\nand its provider is the only public way to set either: the package exports\n`CSPProvider` and no hook, so a provider rendered here *replaces* an outer\none rather than extending it. Given a nonce this provider therefore sets\n`disableStyleElements` back to its default, and a consumer who had turned\nit on outside loses it silently — Base UI resumes emitting the very style\nelement they suppressed. An application already rendering its own\n`CSPProvider` needs nothing from this prop: leave it unset and the outer\ncontext survives untouched, which is the case\n`base-ui-nonce-outer-provider.test.tsx` pins.\n\n**A nonce cannot rescue a style ATTRIBUTE**, and this provider always sets\none on its root: `color-scheme` and `--cue-font-scale`, plus the font\nfamilies and overrides where they are given. CSP has no nonce form for\n`style-src-attr` — it is `'unsafe-inline'` or `'none'` — so an application\nserving `style-src-attr 'none'` loses those declarations, silently. That is\na policy decision rather than something this prop can change.",
183
+ "description": "The Content-Security-Policy nonce this provider hands on: to its own\ndensity-layer `<style>`, and — through Base UI's `CSPProvider` — to Base\nUI's scrollbar `<style>` and to the pre-hydration `<script>` a\n`<Slider thumbAlignment=\"edge\">` renders. List it in `script-src`, and in\nwhichever directive governs style elements: `style-src-elem` if the policy\nhas one, otherwise `style-src`. It does not reach `ThemeConfigurator`'s\n`<style>` or the application's pre-paint `<script>`.\n\nThe density layer — one `<style data-cue-overrides>` when\n`overrides.densities` yields a valid declaration (see\n{@link ThemeProviderProps.overrides}) — takes its nonce **from this prop\nalone**: not from an outer `CSPProvider`, and not from an outer\n`ThemeProvider`. A nested provider that sets its own `overrides.densities`\nneeds its own `nonce`. So does the colour layer — one `<style\ndata-cue-colors-for>` while `overrides.colors` waits on a mode that is\n`<html>`'s (see {@link ThemeProviderProps.overrides}); refused, the edit\napplies from the restore or the mount instead of the first frame.\n\nBase UI's scrollbar rule gets the nonce wherever React creates it in the\nbrowser. **It does not get it in server-rendered HTML** under a framework\nthat hands React a script-only nonce, which includes Next.js 16: React's\nserver renderer (19.2, and the canary Next.js 16 bundles) writes a\n`precedence` style's nonce only from its render option `nonce: { style }`.\nAllow that rule by hash, or turn on Base\nUI's `disableStyleElements` and ship the rule yourself;\n`docs/CONSUMING.md` §4.5 has both, with the hash.\n\n`prepaintScript()` returns a *string* the application renders in a\n`<script>` of its own, so put the same nonce on that element yourself.\n\n**An outer `CSPProvider` that sets `disableStyleElements` is switched off\ninside this provider once a nonce is given.** Base UI's `CSPProvider`\nbuilds its context from its own props alone, so the one rendered here\n*replaces* an outer one rather than extending it. Either leave this prop\nunset — only when no `overrides.densities` needs it and, wherever a\n`<Slider thumbAlignment=\"edge\">` renders, the outer provider carries the\nnonce — or render\n`<CSPProvider nonce={nonce} disableStyleElements>` again inside this\nprovider's children (with the nonce, or Base UI's pre-hydration script\nthere loses it), and again inside any nested provider given a nonce. An\napplication already rendering its own `CSPProvider` can leave this prop\nunset: Base UI's pre-hydration script takes the outer nonce, and so does\nits scrollbar rule wherever React creates it in the browser — the case\n`base-ui-nonce-outer-provider.test.tsx` pins — but the density layer then\nhas none.\n\n**A nonce cannot rescue a style ATTRIBUTE.** This provider's root always\ncarries one — `color-scheme` and `--cue-font-scale`, plus `fontFamilies`,\n`overrides.colors`, `overrides.fonts` and `style` where given — and many\ncomponents, and Base UI's form roots, render their own. A policy whose\n`style-src` (or, without one, `default-src`) does not allow all inline\nstyle — a nonce or a hash in it, or no `'unsafe-inline'` — therefore needs\nan explicit `style-src-attr 'unsafe-inline'`: a nonce or hash in the\ngoverning list makes the browser ignore `'unsafe-inline'`. The browser\nreports a refused attribute as a CSP violation; this library adds no\nwarning of its own.",
166
184
  "control": {
167
185
  "kind": "string"
168
186
  }
@@ -172,7 +190,7 @@
172
190
  "type": "boolean",
173
191
  "required": false,
174
192
  "defaultValue": "false",
175
- "description": "Stamp the single child element instead of rendering a wrapper `<div>`.",
193
+ "description": "Stamp the single child element instead of rendering a wrapper `<div>`.\n\nA nested provider over a host element (`<section>`, `<main>`) behaves as\nits `<div>` would. Over a component it follows nothing from a persisting\nroot before it mounts: it stamps the root's theme, mode and density from\nthe server's first render, because the re-render that would correct them\nrenders the component again, and a `<Suspense>` boundary the component\ncreates would lose its streamed server HTML to it.",
176
194
  "control": {
177
195
  "kind": "boolean"
178
196
  }
@@ -71,11 +71,13 @@
71
71
  "variants": {},
72
72
  "defaultVariants": {},
73
73
  "tokensUsed": [
74
- "--cue-accent",
75
74
  "--cue-fg-muted",
76
75
  "--cue-fg-subtle",
76
+ "--cue-focus",
77
+ "--cue-focus-ring",
77
78
  "--cue-radius-overlay",
78
79
  "--cue-radius-surface",
80
+ "--cue-style-focus-width",
79
81
  "--cue-surface-1",
80
82
  "--cue-text-body",
81
83
  "--cue-text-ui"
@@ -187,10 +187,13 @@
187
187
  "--cue-danger",
188
188
  "--cue-danger-soft",
189
189
  "--cue-fg",
190
+ "--cue-focus",
191
+ "--cue-focus-ring",
190
192
  "--cue-info",
191
193
  "--cue-info-soft",
192
194
  "--cue-ok",
193
195
  "--cue-ok-soft",
196
+ "--cue-style-focus-width",
194
197
  "--cue-sunken",
195
198
  "--cue-warn",
196
199
  "--cue-warn-soft"
@@ -54,14 +54,28 @@
54
54
  "--cue-fg",
55
55
  "--cue-fg-subtle",
56
56
  "--cue-focus",
57
+ "--cue-focus-ring",
57
58
  "--cue-font-mono",
59
+ "--cue-paint-rest-shade",
60
+ "--cue-paint-shadow-scale",
61
+ "--cue-paint-stroke-angle",
62
+ "--cue-paint-stroke-from",
63
+ "--cue-paint-stroke-to",
64
+ "--cue-paint-stroke-width",
58
65
  "--cue-radius-control",
59
66
  "--cue-space-1",
60
67
  "--cue-space-3",
61
68
  "--cue-space-4",
62
69
  "--cue-space-5",
70
+ "--cue-style-body-weight",
71
+ "--cue-style-control-step-size",
72
+ "--cue-style-field-focus-offset",
73
+ "--cue-style-focus-edge",
74
+ "--cue-style-focus-width",
75
+ "--cue-style-input-face",
63
76
  "--cue-sunken",
64
77
  "--cue-text-body",
78
+ "--cue-text-emphasis",
65
79
  "--cue-text-label",
66
80
  "--cue-text-ui"
67
81
  ],
@@ -75,25 +75,64 @@
75
75
  "--cue-fg",
76
76
  "--cue-fg-muted",
77
77
  "--cue-fg-subtle",
78
+ "--cue-focus",
79
+ "--cue-focus-ring",
78
80
  "--cue-font-mono",
79
81
  "--cue-icon-md",
80
82
  "--cue-icon-sm",
81
83
  "--cue-info",
82
84
  "--cue-leading-ui",
83
85
  "--cue-ok",
86
+ "--cue-paint-rim-width",
87
+ "--cue-paint-scrim-filter",
88
+ "--cue-paint-shade-far",
89
+ "--cue-paint-shade-hairline",
90
+ "--cue-paint-shade-near",
91
+ "--cue-paint-shadow-scale",
92
+ "--cue-paint-shadow-spread",
93
+ "--cue-paint-sheen-ink",
94
+ "--cue-paint-stroke-angle",
95
+ "--cue-paint-stroke-overlay-from",
96
+ "--cue-paint-stroke-overlay-to",
97
+ "--cue-paint-stroke-width",
84
98
  "--cue-radius-control",
85
99
  "--cue-radius-overlay",
100
+ "--cue-radius-scale",
86
101
  "--cue-scrim",
87
102
  "--cue-space-1",
88
103
  "--cue-space-2",
89
104
  "--cue-space-3",
90
105
  "--cue-space-4",
91
106
  "--cue-space-6",
107
+ "--cue-style-body-face",
108
+ "--cue-style-body-leading",
109
+ "--cue-style-body-size",
110
+ "--cue-style-body-weight",
111
+ "--cue-style-control-face",
112
+ "--cue-style-display-variation",
113
+ "--cue-style-focus-width",
114
+ "--cue-style-heading-ink",
115
+ "--cue-style-label-case",
116
+ "--cue-style-label-face",
117
+ "--cue-style-label-ink",
118
+ "--cue-style-label-size",
119
+ "--cue-style-label-tracking",
120
+ "--cue-style-label-weight",
121
+ "--cue-style-menu-highlight",
122
+ "--cue-style-menu-item-radius",
123
+ "--cue-style-overlay-ground",
124
+ "--cue-style-overlay-title-leading",
125
+ "--cue-style-overlay-title-size",
126
+ "--cue-style-quiet-ink",
127
+ "--cue-style-title-face",
128
+ "--cue-style-title-weight",
92
129
  "--cue-surface-2",
93
130
  "--cue-text-emphasis",
94
131
  "--cue-text-label",
132
+ "--cue-text-micro",
95
133
  "--cue-text-ui",
96
134
  "--cue-tracking-caps",
135
+ "--cue-tracking-caps-loose",
97
136
  "--cue-tracking-caps-tight",
98
137
  "--cue-warn"
99
138
  ],
@@ -85,25 +85,7 @@
85
85
  "variants": {},
86
86
  "defaultVariants": {},
87
87
  "tokensUsed": [
88
- "--cue-border",
89
- "--cue-border-strong",
90
- "--cue-control-lg",
91
- "--cue-control-md",
92
- "--cue-control-sm",
93
- "--cue-danger",
94
- "--cue-fg",
95
- "--cue-fg-subtle",
96
- "--cue-focus",
97
- "--cue-font-mono",
98
- "--cue-radius-control",
99
- "--cue-space-1",
100
- "--cue-space-3",
101
- "--cue-space-4",
102
- "--cue-space-5",
103
- "--cue-sunken",
104
- "--cue-text-body",
105
- "--cue-text-label",
106
- "--cue-text-ui"
88
+ "--cue-space-1"
107
89
  ],
108
90
  "summary": "A cluster of toggles sharing one pressed state — and it may be empty.",
109
91
  "examples": [
@@ -88,16 +88,13 @@
88
88
  "tokensUsed": [
89
89
  "--cue-accent",
90
90
  "--cue-accent-soft",
91
- "--cue-border",
92
- "--cue-border-strong",
93
91
  "--cue-control-lg",
94
92
  "--cue-control-md",
95
93
  "--cue-control-sm",
96
- "--cue-danger",
97
94
  "--cue-fg",
98
95
  "--cue-fg-muted",
99
- "--cue-fg-subtle",
100
96
  "--cue-focus",
97
+ "--cue-focus-ring",
101
98
  "--cue-font-mono",
102
99
  "--cue-icon-md",
103
100
  "--cue-icon-sm",
@@ -105,7 +102,8 @@
105
102
  "--cue-space-3",
106
103
  "--cue-space-4",
107
104
  "--cue-space-5",
108
- "--cue-sunken",
105
+ "--cue-style-control-face",
106
+ "--cue-style-focus-width",
109
107
  "--cue-surface-2",
110
108
  "--cue-text-body",
111
109
  "--cue-text-label",
@@ -87,9 +87,14 @@
87
87
  "--cue-font-sans",
88
88
  "--cue-space-2",
89
89
  "--cue-space-4",
90
+ "--cue-style-label-case",
91
+ "--cue-style-label-face",
92
+ "--cue-style-label-tracking",
90
93
  "--cue-text-label",
91
94
  "--cue-text-micro",
92
- "--cue-tracking-caps"
95
+ "--cue-tracking-caps",
96
+ "--cue-tracking-caps-loose",
97
+ "--cue-tracking-caps-tight"
93
98
  ],
94
99
  "summary": "The grouped colour rows — stateless by design.",
95
100
  "examples": [
@@ -195,12 +195,13 @@
195
195
  "variants": {},
196
196
  "defaultVariants": {},
197
197
  "tokensUsed": [
198
- "--cue-accent",
199
198
  "--cue-border",
200
199
  "--cue-danger",
201
200
  "--cue-fg",
202
201
  "--cue-fg-muted",
203
202
  "--cue-fg-subtle",
203
+ "--cue-focus",
204
+ "--cue-focus-ring",
204
205
  "--cue-font-mono",
205
206
  "--cue-icon-sm",
206
207
  "--cue-leading-ui",
@@ -210,9 +211,15 @@
210
211
  "--cue-space-3",
211
212
  "--cue-space-4",
212
213
  "--cue-space-5",
214
+ "--cue-style-focus-width",
215
+ "--cue-style-label-case",
216
+ "--cue-style-label-face",
217
+ "--cue-style-label-tracking",
213
218
  "--cue-text-micro",
214
219
  "--cue-text-ui",
215
- "--cue-tracking-caps"
220
+ "--cue-tracking-caps",
221
+ "--cue-tracking-caps-loose",
222
+ "--cue-tracking-caps-tight"
216
223
  ],
217
224
  "summary": "The model's own tool call: name, risk chip, status in words, and the arguments and result behind a disclosure.",
218
225
  "examples": [
@@ -107,14 +107,16 @@
107
107
  "variants": {},
108
108
  "defaultVariants": {},
109
109
  "tokensUsed": [
110
- "--cue-accent",
111
110
  "--cue-fg",
112
111
  "--cue-fg-muted",
113
112
  "--cue-fg-subtle",
113
+ "--cue-focus",
114
+ "--cue-focus-ring",
114
115
  "--cue-font-mono",
115
116
  "--cue-ok",
116
117
  "--cue-radius-control",
117
118
  "--cue-radius-overlay",
119
+ "--cue-style-focus-width",
118
120
  "--cue-surface-2",
119
121
  "--cue-text-body",
120
122
  "--cue-text-ui"
@@ -107,14 +107,16 @@
107
107
  "variants": {},
108
108
  "defaultVariants": {},
109
109
  "tokensUsed": [
110
- "--cue-accent",
111
110
  "--cue-danger",
112
111
  "--cue-fg",
113
112
  "--cue-fg-muted",
114
113
  "--cue-fg-subtle",
114
+ "--cue-focus",
115
+ "--cue-focus-ring",
115
116
  "--cue-font-mono",
116
117
  "--cue-ok",
117
118
  "--cue-radius-control",
119
+ "--cue-style-focus-width",
118
120
  "--cue-surface-2",
119
121
  "--cue-text-body",
120
122
  "--cue-text-label"
@@ -144,22 +144,25 @@
144
144
  "variants": {},
145
145
  "defaultVariants": {},
146
146
  "tokensUsed": [
147
- "--cue-accent",
148
147
  "--cue-border",
149
148
  "--cue-chrome-toolbar",
150
149
  "--cue-control-md",
151
150
  "--cue-edge-fade",
152
151
  "--cue-fg",
153
152
  "--cue-fg-muted",
153
+ "--cue-focus",
154
+ "--cue-focus-ring",
154
155
  "--cue-font-mono",
155
156
  "--cue-icon-md",
156
157
  "--cue-icon-sm",
157
158
  "--cue-pad-row-x",
159
+ "--cue-paint-fade-length",
158
160
  "--cue-radius-control",
159
161
  "--cue-space-1",
160
162
  "--cue-space-2",
161
163
  "--cue-space-3",
162
164
  "--cue-space-5",
165
+ "--cue-style-focus-width",
163
166
  "--cue-surface-1",
164
167
  "--cue-surface-2",
165
168
  "--cue-text-ui"
@@ -148,17 +148,56 @@
148
148
  "--cue-fg-subtle",
149
149
  "--cue-font-mono",
150
150
  "--cue-leading-ui",
151
+ "--cue-paint-rim-width",
152
+ "--cue-paint-scrim-filter",
153
+ "--cue-paint-shade-far",
154
+ "--cue-paint-shade-hairline",
155
+ "--cue-paint-shade-near",
156
+ "--cue-paint-shadow-scale",
157
+ "--cue-paint-shadow-spread",
158
+ "--cue-paint-sheen-ink",
159
+ "--cue-paint-stroke-angle",
160
+ "--cue-paint-stroke-overlay-from",
161
+ "--cue-paint-stroke-overlay-to",
162
+ "--cue-paint-stroke-width",
151
163
  "--cue-radius-control",
152
164
  "--cue-radius-overlay",
165
+ "--cue-radius-scale",
153
166
  "--cue-scrim",
154
167
  "--cue-space-1",
155
168
  "--cue-space-2",
156
169
  "--cue-space-3",
170
+ "--cue-style-body-face",
171
+ "--cue-style-body-leading",
172
+ "--cue-style-body-size",
173
+ "--cue-style-body-weight",
174
+ "--cue-style-control-face",
175
+ "--cue-style-display-variation",
176
+ "--cue-style-heading-ink",
177
+ "--cue-style-help-size",
178
+ "--cue-style-label-case",
179
+ "--cue-style-label-face",
180
+ "--cue-style-label-ink",
181
+ "--cue-style-label-size",
182
+ "--cue-style-label-tracking",
183
+ "--cue-style-label-weight",
184
+ "--cue-style-menu-highlight",
185
+ "--cue-style-menu-item-radius",
186
+ "--cue-style-overlay-ground",
187
+ "--cue-style-overlay-title-leading",
188
+ "--cue-style-overlay-title-size",
189
+ "--cue-style-quiet-ink",
190
+ "--cue-style-title-face",
191
+ "--cue-style-title-weight",
192
+ "--cue-style-tooltip-pad",
157
193
  "--cue-surface-2",
158
194
  "--cue-text-emphasis",
159
195
  "--cue-text-label",
196
+ "--cue-text-micro",
160
197
  "--cue-text-ui",
161
- "--cue-tracking-caps"
198
+ "--cue-tracking-caps",
199
+ "--cue-tracking-caps-loose",
200
+ "--cue-tracking-caps-tight"
162
201
  ],
163
202
  "summary": "A short description of the control under the pointer or the focus ring.",
164
203
  "examples": [
@@ -58,6 +58,8 @@
58
58
  "--cue-fg",
59
59
  "--cue-fg-muted",
60
60
  "--cue-fg-subtle",
61
+ "--cue-focus",
62
+ "--cue-focus-ring",
61
63
  "--cue-font-mono",
62
64
  "--cue-icon-md",
63
65
  "--cue-icon-sm",
@@ -66,6 +68,7 @@
66
68
  "--cue-space-1",
67
69
  "--cue-space-2",
68
70
  "--cue-space-4",
71
+ "--cue-style-focus-width",
69
72
  "--cue-surface-2",
70
73
  "--cue-text-ui",
71
74
  "--cue-warn"
@@ -141,6 +141,8 @@
141
141
  "--cue-fg",
142
142
  "--cue-fg-muted",
143
143
  "--cue-fg-subtle",
144
+ "--cue-focus",
145
+ "--cue-focus-ring",
144
146
  "--cue-font-mono",
145
147
  "--cue-icon-md",
146
148
  "--cue-icon-sm",
@@ -149,6 +151,7 @@
149
151
  "--cue-space-1",
150
152
  "--cue-space-2",
151
153
  "--cue-space-4",
154
+ "--cue-style-focus-width",
152
155
  "--cue-surface-2",
153
156
  "--cue-text-ui",
154
157
  "--cue-warn"
@@ -115,6 +115,8 @@
115
115
  "--cue-danger-soft",
116
116
  "--cue-fg-muted",
117
117
  "--cue-fg-subtle",
118
+ "--cue-focus",
119
+ "--cue-focus-ring",
118
120
  "--cue-font-mono",
119
121
  "--cue-info",
120
122
  "--cue-ok",
@@ -122,6 +124,7 @@
122
124
  "--cue-space-2",
123
125
  "--cue-space-4",
124
126
  "--cue-space-5",
127
+ "--cue-style-focus-width",
125
128
  "--cue-sunken",
126
129
  "--cue-text-label",
127
130
  "--cue-text-micro",
@@ -104,9 +104,12 @@
104
104
  "--cue-fg",
105
105
  "--cue-fg-muted",
106
106
  "--cue-fg-subtle",
107
+ "--cue-focus",
108
+ "--cue-focus-ring",
107
109
  "--cue-leading-ui",
108
110
  "--cue-radius-overlay",
109
111
  "--cue-stream",
112
+ "--cue-style-focus-width",
110
113
  "--cue-surface-1",
111
114
  "--cue-surface-2",
112
115
  "--cue-surface-3",