@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
@@ -0,0 +1,26 @@
1
+ //#region src/system/_style-switch.ts
2
+ /**
3
+ * The switch's thumb (round 6, spec §11, lane R6.T: `style-switch-thumb`,
4
+ * `style-switch-disabled-thumb`).
5
+ *
6
+ * stripe.com's thumb is white in every state (`--hds-color-input-icon-onSolid`),
7
+ * and its disabled thumb is its quiet border ink (`--hds-color-input-icon-disabled`,
8
+ * #d4dee9). Ours was `fg-muted` at rest and `accent-fg` when checked. The one
9
+ * name serves both states, each falling back to what it drew (T146); the
10
+ * disabled thumb reads its own, falling back to the resting state's value.
11
+ *
12
+ * @internal Not part of the public API.
13
+ */
14
+ const SWITCH_THUMB = "bg-[color:var(--cue-style-switch-thumb,var(--cue-fg-muted))]";
15
+ /** The checked thumb: the same name, falling back to `accent-fg`. */
16
+ const SWITCH_THUMB_CHECKED = "data-[checked]:bg-[color:var(--cue-style-switch-thumb,var(--cue-accent-fg))]";
17
+ /** The disabled thumb, unchecked and checked, each falling back through the thumb's own name to what it drew. */
18
+ const SWITCH_THUMB_DISABLED = "data-[disabled]:bg-[color:var(--cue-style-switch-disabled-thumb,var(--cue-style-switch-thumb,var(--cue-fg-muted)))] data-[disabled]:data-[checked]:bg-[color:var(--cue-style-switch-disabled-thumb,var(--cue-style-switch-thumb,var(--cue-accent-fg)))]";
19
+ /**
20
+ * The switch track's rim (round 6, spec §11, lane R6.P: `style-switch-edge`),
21
+ * falling back to the `border` it drew at rest and the `border-strong` on hover.
22
+ * coss.com/ui's unchecked track draws no rim (P180.track-edge).
23
+ */
24
+ const SWITCH_EDGE = "border-[color:var(--cue-style-switch-edge,var(--cue-border))] hover:border-[color:var(--cue-style-switch-edge,var(--cue-border-strong))]";
25
+ //#endregion
26
+ export { SWITCH_EDGE, SWITCH_THUMB, SWITCH_THUMB_CHECKED, SWITCH_THUMB_DISABLED };
@@ -0,0 +1,15 @@
1
+ //#region src/system/_style-tab-hover.ts
2
+ /**
3
+ * An idle tab's hover ink (round 6, spec §11, lane R6.P: `style-tab-hover-ink`),
4
+ * falling back to the `fg` it drew. coss.com/ui's idle tabs keep their muted ink
5
+ * under the pointer (P182.hover).
6
+ *
7
+ * **Optional** (spec §3.0): each name is declared by `porcelain` alone and each
8
+ * reader falls back to what the component drew. Its own module for docgen's
9
+ * reason: one component's tokens per file.
10
+ *
11
+ * @internal Not part of the public API.
12
+ */
13
+ const TAB_HOVER_INK = "hover:text-[color:var(--cue-style-tab-hover-ink,var(--cue-fg))]";
14
+ //#endregion
15
+ export { TAB_HOVER_INK };
@@ -0,0 +1,71 @@
1
+ //#region src/system/_style-tab.ts
2
+ /**
3
+ * The `Tabs` list's rule and track, and the active tab: its underline, and its
4
+ * ground, ink, weight and shadow when a Look raises it as a segment.
5
+ *
6
+ * Spec 2026-09-26-looks-fidelity §3.8 (plan R4). The list hung its tabs off a
7
+ * 1px `border-b`, and the active tab laid an accent `::after` over it. A Look
8
+ * that draws its tabs as a segmented track (kiln, porcelain) has neither, and
9
+ * `style-tab-rule` and `style-tab-underline` take them away.
10
+ *
11
+ * **The fallbacks are the classes they replace**: `border-b` is 1px wide, and
12
+ * the underline was the accent, `var(--cue-accent)`. The width utility keeps
13
+ * `border-b`'s solid style, so it replaces it whole.
14
+ *
15
+ * **The list is the track.** `Tabs` has no frame, so the list reads
16
+ * `style-segment-track` and `style-segment-inset`, and falls back to what it
17
+ * had: no ground and no padding (`transparent`, `0px`). Its corners are
18
+ * square, and stay so: a radius on the list would curl the ends of its 1px
19
+ * rule under every set. A Look that draws its tabs on a track (kiln,
20
+ * porcelain) takes the rule away and owes the track its corners; spec §3.8
21
+ * leaves how to the Look lanes.
22
+ *
23
+ * **The active tab**, raised as a segment by a Look that draws its tabs on a
24
+ * track: its ground, ink, weight, edge and resting shade, read through the
25
+ * segment names (`_style-segment.ts` tells the family's story). The ink
26
+ * replaced `data-[active]:text-accent` and keeps that class's standing. The
27
+ * ground falls back to none (`transparent`, spec §3.8): a tab is marked by its
28
+ * underline. The ground, the weight (`400`, inherited and computed under every
29
+ * shipped set) and the shadow (a `transparent` inset edge and the paint axis's
30
+ * resting shade, one list written out for the reason
31
+ * `_style-segmented-control.ts` gives) are declarations the tab had in no
32
+ * state, so they are written `[:where(&[data-active])]:` — the active state at
33
+ * zero specificity — and a caller's `className="font-medium bg-surface-2
34
+ * shadow-sm"` still applies to the active tab as to the others.
35
+ *
36
+ * **Its own module**, for the docgen reason `_style-nav-voice.ts` gives:
37
+ * `SegmentedControl` shares `_style-segment.ts` with the tabs, and reads
38
+ * none of these.
39
+ *
40
+ * @internal Not part of the public API.
41
+ */
42
+ /** The list behind the tabs, which is the track: its ground and its inset. */
43
+ const TAB_TRACK = "bg-[color:var(--cue-style-segment-track,transparent)] p-[var(--cue-style-segment-inset,0px)] rounded-[var(--cue-style-tab-radius,0px)]";
44
+ /**
45
+ * A tab's corners and its resting weight (plan V.2, P41).
46
+ *
47
+ * Under a set that names `style-tab-radius` the list above is a rounded track
48
+ * and every tab a pill inside it, rounded on all four corners at the track's
49
+ * radius less the inset, as a pressed segment nests inside its frame. Under a
50
+ * set that does not, a tab keeps the `rounded-t-control` it drew: its top two
51
+ * corners at the control corner, its bottom two square on the list's rule.
52
+ * Both are one expression per edge, so neither needs a class the other lacks:
53
+ *
54
+ * - top: `tab-radius`, else the control corner **plus** the inset, less the
55
+ * inset — which is the control corner exactly, whether or not the set names
56
+ * an inset (Porcelain names one, 2px, before it names a tab radius);
57
+ * - bottom: `tab-radius`, else the inset, less the inset — `0px`.
58
+ *
59
+ * The weight is the segment weight on every tab, not only the active one —
60
+ * Porcelain's idle tabs are 500 too — falling back to 400. A caller's
61
+ * `font-*` class on a tab replaces it through `tailwind-merge`.
62
+ */
63
+ const TAB_SHAPE = "rounded-t-[calc(var(--cue-style-tab-radius,calc(var(--cue-radius-control)*var(--cue-radius-scale)+var(--cue-style-segment-inset,0px)))-var(--cue-style-segment-inset,0px))] rounded-b-[calc(var(--cue-style-tab-radius,var(--cue-style-segment-inset,0px))-var(--cue-style-segment-inset,0px))] font-[number:var(--cue-style-segment-weight,400)]";
64
+ /** The list's bottom rule, as a width. */
65
+ const TAB_RULE = "border-b-[length:var(--cue-style-tab-rule,1px)]";
66
+ /** The active tab's underline ink, on its `::after`. */
67
+ const TAB_UNDERLINE = "data-[active]:after:bg-[color:var(--cue-style-tab-underline,var(--cue-accent))]";
68
+ /** The `Tabs` active tab. Its ground falls back to none: a tab is marked by its underline. */
69
+ const TAB_ACTIVE = "[:where(&[data-active])]:bg-[color:var(--cue-style-segment-ground,transparent)] data-[active]:text-[color:var(--cue-style-segment-ink,var(--cue-accent))] [:where(&[data-active])]:font-[number:var(--cue-style-segment-weight,400)] [:where(&[data-active])]:shadow-[inset_0_0_0_var(--cue-border-width)_var(--cue-style-segment-edge,transparent),0_calc(2px*var(--cue-paint-shadow-scale))_calc(4px*var(--cue-paint-shadow-scale))_var(--cue-paint-rest-shade,transparent)]";
70
+ //#endregion
71
+ export { TAB_ACTIVE, TAB_RULE, TAB_SHAPE, TAB_TRACK, TAB_UNDERLINE };
@@ -0,0 +1,26 @@
1
+ import { FOCUS_RING_PAINT } from "./_focus-ring.js";
2
+ //#region src/system/_style-text-focus.ts
3
+ /**
4
+ * The focus ring of a text control — a link, and a disclosure's trigger —
5
+ * with its offset read from the style set (round 6, spec §11, lane R6.T:
6
+ * `style-text-focus-offset`).
7
+ *
8
+ * `_focus-ring.ts`'s fixed shapes are the ring every other site draws; these
9
+ * two compose its width and colour ({@link FOCUS_RING_PAINT}) with an offset
10
+ * a Look may move, as the button chassis does with `style-focus-offset`. Each
11
+ * falls back to the fixed shape it replaces: the disclosure's two pixels in
12
+ * (`FOCUS_RING_INSET_2`, because sections sit inside `overflow-hidden` panels)
13
+ * and the link's two pixels clear (`FOCUS_RING_OFFSET_2`). stripe.com draws
14
+ * both rings 3px clear (`--hds-focus-outline-offset` on `.hds-link` and on the
15
+ * accordion's summary), so tender sets `3px` (T128, T144).
16
+ *
17
+ * A name of its own, not `style-focus-offset`: the source draws its buttons'
18
+ * rings at another offset (`--hds-focus-outline-button-offset`, T50).
19
+ *
20
+ * @internal Not part of the public API.
21
+ */
22
+ const COLLAPSE_FOCUS_RING = `${FOCUS_RING_PAINT} focus-visible:outline-offset-[var(--cue-style-text-focus-offset,-2px)]`;
23
+ /** A link's focus ring: as {@link COLLAPSE_FOCUS_RING}, falling back to two pixels clear. */
24
+ const LINK_FOCUS_RING = `${FOCUS_RING_PAINT} focus-visible:outline-offset-[var(--cue-style-text-focus-offset,2px)]`;
25
+ //#endregion
26
+ export { COLLAPSE_FOCUS_RING, LINK_FOCUS_RING };
@@ -0,0 +1,21 @@
1
+ //#region src/system/_style-textarea.ts
2
+ /**
3
+ * A textarea's leading and block padding (plan V.2, P139):
4
+ * `style-input-leading`, falling back to the `leading-ui` it drew, and the
5
+ * `space-3` rung times `style-textarea-pad`, `1` under a set that has none.
6
+ * Porcelain's textarea sets 1.45 and 5.5px.
7
+ *
8
+ * The padding is a name of its own and not `style-control-pad`, the button's
9
+ * inline proportion: Tender, Zine and Kiln declare that one (1.5, 1.625,
10
+ * 0.75), and a textarea that read it would move in every one of them where
11
+ * no row measured it.
12
+ *
13
+ * **Optional** (spec §3.0). Its own module for docgen's reason.
14
+ *
15
+ * @internal Not part of the public API.
16
+ */
17
+ const TEXTAREA_LEADING = "leading-[var(--cue-style-input-leading,var(--cue-leading-ui))]";
18
+ /** @see TEXTAREA_LEADING */
19
+ const TEXTAREA_PAD_Y = "py-[calc(var(--cue-space-3)*var(--cue-style-textarea-pad,1))]";
20
+ //#endregion
21
+ export { TEXTAREA_LEADING, TEXTAREA_PAD_Y };
@@ -0,0 +1,37 @@
1
+ //#region src/system/_style-title.ts
2
+ /**
3
+ * The title voice: a `Card`, `Panel` or `Bento` tile's name — mono,
4
+ * `text-emphasis`, weight 500, in `fg`, until a style set says otherwise.
5
+ *
6
+ * Spec 2026-09-26-looks-fidelity §3.3 (and §3.1 for the ink and the variation),
7
+ * plan R1. `CardTitle`, `PanelHeader`'s title and `Bento.Tile`'s title each
8
+ * spelt `font-mono text-(length:--cue-text-emphasis) font-medium text-fg`, so a
9
+ * Look could not move a card's name without a per-call-site class — and every
10
+ * Look the fidelity round measured draws it differently (Tender 26px at 300,
11
+ * Kiln 32px at 400, Porcelain 16px at 700, three of the four in sans).
12
+ *
13
+ * | property | reads | fallback (the class it replaced) |
14
+ * |-------------------------|---------------------------|----------------------------------|
15
+ * | font-family | `style-title-face` | `var(--cue-font-mono)` (`font-mono`) |
16
+ * | font-size | `style-title-size` | `var(--cue-text-emphasis)` |
17
+ * | font-weight | `style-title-weight` | `500` (`font-medium`) |
18
+ * | letter-spacing | `style-title-tracking` | `normal` |
19
+ * | line-height | `style-title-leading` | `inherit` |
20
+ * | font-variation-settings | `style-display-variation` | `normal` |
21
+ * | color | `style-heading-ink` | `var(--cue-fg)` (`text-fg`) |
22
+ *
23
+ * **Every name is optional** (spec §3.0), declared on no `:root` and left at the
24
+ * shared `[data-style]` reset by every shipped set, so each `var()` resolves its
25
+ * fallback at the title — what the old classes computed there.
26
+ *
27
+ * An overlay's title shares the face, the weight, the ink and the variation but
28
+ * not the size, the tracking or the leading, so it is `_style-overlay-title.ts`
29
+ * and not an import of this: docgen would publish every name in this file as a
30
+ * token of every overlay. `_style-page-title.ts` says why the weight is
31
+ * `font-[number:…]` and why the size comes before the leading.
32
+ *
33
+ * @internal Not part of the public API.
34
+ */
35
+ const TITLE_VOICE = "font-[family-name:var(--cue-style-title-face,var(--cue-font-mono))] text-[length:var(--cue-style-title-size,var(--cue-text-emphasis))] font-[number:var(--cue-style-title-weight,500)] tracking-[var(--cue-style-title-tracking,normal)] leading-[var(--cue-style-title-leading,inherit)] [font-variation-settings:var(--cue-style-title-variation,var(--cue-style-display-variation,normal))] text-[color:var(--cue-style-heading-ink,var(--cue-fg))]";
36
+ //#endregion
37
+ export { TITLE_VOICE };
@@ -0,0 +1,22 @@
1
+ //#region src/system/_style-toast.ts
2
+ /**
3
+ * A toast's padding and width (round 6, spec §11, lane R6.P: `style-toast-pad-y`,
4
+ * `style-toast-pad-x`, `style-toast-width`), falling back to the `space-3` block
5
+ * and `space-4` inline-start padding and the 20rem viewport it drew; the
6
+ * inline-end padding keeps its room for the close button. coss.com/ui pads its
7
+ * toast 12px by 14px and sets it 360px wide (P184.pad, P184.pad-inline,
8
+ * P184.width).
9
+ *
10
+ * **Optional** (spec §3.0): each name is declared by `porcelain` alone and each
11
+ * reader falls back to what the component drew. Its own module for docgen's
12
+ * reason: one component's tokens per file.
13
+ *
14
+ * @internal Not part of the public API.
15
+ */
16
+ const TOAST_PAD_Y = "py-[var(--cue-style-toast-pad-y,var(--cue-space-3))]";
17
+ /** @see TOAST_PAD_Y */
18
+ const TOAST_PAD_X = "pl-[var(--cue-style-toast-pad-x,var(--cue-space-4))]";
19
+ /** @see TOAST_PAD_Y */
20
+ const TOAST_WIDTH = "w-[var(--cue-style-toast-width,20rem)]";
21
+ //#endregion
22
+ export { TOAST_PAD_X, TOAST_PAD_Y, TOAST_WIDTH };
@@ -0,0 +1,50 @@
1
+ //#region src/system/_style-toggle.ts
2
+ /**
3
+ * `Toggle` — and so `ToggleGroup`'s items — at rest and pressed (round 6, spec
4
+ * §11, lane R6.T: `style-toggle-edge`, `style-toggle-ink`,
5
+ * `style-toggle-pressed-ground`, `style-toggle-pressed-edge`).
6
+ *
7
+ * stripe.com's select tiles (`.hds-select-tile`, one of N options drawn as
8
+ * tiles) stand in its field edge at rest (`--hds-color-input-border-default`)
9
+ * with its field text ink (`--hds-color-input-text-solid`), and a selected
10
+ * tile fills with a 12% lilac and edges in its brand-400 (T155). Ours drew a
11
+ * transparent edge in `fg-muted`, and `accent-soft` with no edge when
12
+ * pressed. Each reader falls back to the class it replaced.
13
+ *
14
+ * @internal Not part of the public API.
15
+ */
16
+ const TOGGLE_EDGE = "border-[color:var(--cue-style-toggle-edge,transparent)]";
17
+ /** A toggle's resting ink. */
18
+ const TOGGLE_INK = "text-[color:var(--cue-style-toggle-ink,var(--cue-fg-muted))]";
19
+ /** A pressed toggle's ground. */
20
+ const TOGGLE_PRESSED_GROUND = "data-[pressed]:bg-[color:var(--cue-style-toggle-pressed-ground,var(--cue-accent-soft))]";
21
+ /** A pressed toggle's edge. */
22
+ const TOGGLE_PRESSED_EDGE = "data-[pressed]:border-[color:var(--cue-style-toggle-pressed-edge,transparent)]";
23
+ /**
24
+ * A pressed toggle's ink (round 6, spec §11, lane R6.K: `style-toggle-pressed-ink`),
25
+ * falling back to the `accent` it drew. replit.com's pressed filter pill is
26
+ * white on an ink fill (K148).
27
+ */
28
+ const TOGGLE_PRESSED_INK = "data-[pressed]:text-[color:var(--cue-style-toggle-pressed-ink,var(--cue-accent))]";
29
+ /**
30
+ * The hover state (lanes R6.T and R6.K: `style-toggle-hover-edge`, `-hover-ground`,
31
+ * `-hover-ink`). replit.com's filter pills hover by darkening their edge alone
32
+ * (#d8d5cf to #a8a49d), keeping a transparent ground and their resting ink,
33
+ * where ours filled `surface-2` and inked `fg` (K148). Each falls back to what
34
+ * the toggle drew under the pointer: its resting edge (through `style-toggle-edge`),
35
+ * `surface-2` and `fg`.
36
+ */
37
+ const TOGGLE_HOVER_EDGE = "hover:border-[color:var(--cue-style-toggle-hover-edge,var(--cue-style-toggle-edge,transparent))]";
38
+ /** @see TOGGLE_HOVER_EDGE */
39
+ const TOGGLE_HOVER_GROUND = "hover:bg-[color:var(--cue-style-toggle-hover-ground,var(--cue-surface-2))]";
40
+ /** @see TOGGLE_HOVER_EDGE */
41
+ const TOGGLE_HOVER_INK = "hover:text-[color:var(--cue-style-toggle-hover-ink,var(--cue-fg))]";
42
+ /**
43
+ * A disabled toggle's ink and edge, through the disabled names every control reads
44
+ * (`style-disabled-ink`, `style-disabled-edge`), each falling back to the toggle's own resting value;
45
+ * the fade reads `style-disabled-opacity` as the other controls' does. stripe.com's disabled tile
46
+ * pales its ink and draws its disabled border (T155.disabled, T155.disabled-edge).
47
+ */
48
+ const TOGGLE_DISABLED = "data-[disabled]:text-[color:var(--cue-style-disabled-ink,var(--cue-style-toggle-ink,var(--cue-fg-muted)))] data-[disabled]:border-[color:var(--cue-style-disabled-edge,var(--cue-style-toggle-edge,transparent))]";
49
+ //#endregion
50
+ export { TOGGLE_DISABLED, TOGGLE_EDGE, TOGGLE_HOVER_EDGE, TOGGLE_HOVER_GROUND, TOGGLE_HOVER_INK, TOGGLE_INK, TOGGLE_PRESSED_EDGE, TOGGLE_PRESSED_GROUND, TOGGLE_PRESSED_INK };
@@ -0,0 +1,23 @@
1
+ //#region src/system/_style-toolbar.ts
2
+ /**
3
+ * The toolbar as a framed bar (round 6, spec §11, lane R6.P): its rim on the sides
4
+ * it did not draw (`style-toolbar-rim`, a width, falling back to `0px`, so the
5
+ * bar keeps only its bottom rule) and the rim's ink (`style-toolbar-edge`,
6
+ * falling back to `border`); its corner, padding, height and gap
7
+ * (`style-toolbar-radius`, `-pad`, `-height`, `-gap`), falling back to the
8
+ * square, inline-padded, `chrome-toolbar`-tall strip it drew; and a separator's
9
+ * height (`style-toolbar-separator-height`), falling back to `60%`. coss.com/ui
10
+ * draws its toolbar as a 14px-rounded bar in a 1px rim, 4px in, its groups 8px
11
+ * apart and its separators 20px tall (P185).
12
+ *
13
+ * **Optional** (spec §3.0): each name is declared by `porcelain` alone and each
14
+ * reader falls back to what the component drew. Its own module for docgen's
15
+ * reason: one component's tokens per file.
16
+ *
17
+ * @internal Not part of the public API.
18
+ */
19
+ const TOOLBAR_FRAME = "border-t-[length:var(--cue-style-toolbar-rim,0px)] border-x-[length:var(--cue-style-toolbar-rim,0px)] border-[color:var(--cue-style-toolbar-edge,var(--cue-border))] rounded-[var(--cue-style-toolbar-radius,0px)] p-[var(--cue-style-toolbar-pad,0_var(--cue-pad-row-x))] h-[var(--cue-style-toolbar-height,var(--cue-chrome-toolbar))] gap-[var(--cue-style-toolbar-gap,var(--cue-space-2))]";
20
+ /** @see TOOLBAR_FRAME */
21
+ const TOOLBAR_SEPARATOR_HEIGHT = "data-[orientation=vertical]:h-[var(--cue-style-toolbar-separator-height,60%)]";
22
+ //#endregion
23
+ export { TOOLBAR_FRAME, TOOLBAR_SEPARATOR_HEIGHT };
@@ -0,0 +1,46 @@
1
+ //#region src/system/_style-tooltip.ts
2
+ /**
3
+ * A tooltip's size and padding (plan V.2, P129): the help size, falling back
4
+ * to the `text-label` rung the tooltip drew, and `style-tooltip-pad`, one or
5
+ * two rem lengths, falling back to the `space-2` block and `space-3` inline
6
+ * padding it drew. Porcelain's tooltip is 12px type, 4px by 8px in. Its
7
+ * leading is the body leading (`_style-body-leading.ts`).
8
+ *
9
+ * **Optional** (spec §3.0). Its own module for docgen's reason.
10
+ *
11
+ * @internal Not part of the public API.
12
+ */
13
+ const TOOLTIP_SIZE = "text-[length:var(--cue-style-help-size,var(--cue-text-label))]";
14
+ /** @see TOOLTIP_SIZE */
15
+ const TOOLTIP_PAD = "p-[var(--cue-style-tooltip-pad,var(--cue-space-2)_var(--cue-space-3))]";
16
+ /**
17
+ * The tooltip's tracking (round 6, spec §11, lane R6.T: `style-tooltip-tracking`),
18
+ * falling back to the `inherit` it drew (no tracking class of its own).
19
+ * stripe.com's tooltip sets 0.2px on its 15px text, 0.0133em (T131).
20
+ */
21
+ const TOOLTIP_TRACKING = "tracking-[var(--cue-style-tooltip-tracking,inherit)]";
22
+ /**
23
+ * The tooltip's corner (round 6, spec §11, lane R6.T: `style-tooltip-radius`), falling back to the
24
+ * overlay corner it drew. stripe.com's overlays take three corners — its dialog 16px, its select
25
+ * popover 4px (which `radius-overlay` follows), its tooltip 8px (T131.radius) — and the dialog already
26
+ * has `style-dialog-radius`. Scaled by `radius-scale` as the dialog's is: `rounded-overlay` is
27
+ * `calc(var(--cue-radius-overlay) * var(--cue-radius-scale))`, and a reader without the scale drew
28
+ * 6px where the tooltip drew 4.5px at ultra-compact (the closing pass's adversarial review).
29
+ */
30
+ const TOOLTIP_RADIUS = "rounded-[calc(var(--cue-style-tooltip-radius,var(--cue-radius-overlay))*var(--cue-radius-scale))]";
31
+ /**
32
+ * The tooltip's face (round 6, spec §11, lane R6.Z: `style-tooltip-face`),
33
+ * falling back through the control face to the mono it drew. greptile.com's
34
+ * seat tooltip is Space Mono beside its DM Sans buttons (Z115).
35
+ */
36
+ const TOOLTIP_FACE = "font-[family-name:var(--cue-style-tooltip-face,var(--cue-style-control-face,var(--cue-font-mono)))]";
37
+ /** The tooltip's ink (`style-tooltip-ink`), falling back to the `fg` it drew; greptile.com's is slate (Z115). */
38
+ const TOOLTIP_INK = "text-[color:var(--cue-style-tooltip-ink,var(--cue-fg))]";
39
+ /**
40
+ * The tooltip's leading (`style-tooltip-leading`), falling back through the
41
+ * body leading to the `leading-ui` it drew (`BODY_LEADING`). greptile.com's
42
+ * tooltip sets a 20px line on 10px type (Z115).
43
+ */
44
+ const TOOLTIP_LEADING = "leading-[var(--cue-style-tooltip-leading,var(--cue-style-body-leading,var(--cue-leading-ui)))]";
45
+ //#endregion
46
+ export { TOOLTIP_FACE, TOOLTIP_INK, TOOLTIP_LEADING, TOOLTIP_PAD, TOOLTIP_RADIUS, TOOLTIP_SIZE, TOOLTIP_TRACKING };
@@ -1,3 +1,4 @@
1
+ import "./published.js";
1
2
  import * as React from "react";
2
3
  import { Paint, StyleSet } from "@cueplusplus/tokens";
3
4
  import { Density as Density$1 } from "@cueplusplus/theme-base";
@@ -9,7 +10,7 @@ interface DensityProps {
9
10
  */
10
11
  density: Density$1;
11
12
  /**
12
- * A look pack for this subtree.
13
+ * A paint pack for this subtree.
13
14
  *
14
15
  * Optional, and **absent means inherit**, exactly as `styleSet` is: an island
15
16
  * that names none stamps no `data-paint` and passes the ambient pack straight
@@ -18,7 +19,8 @@ interface DensityProps {
18
19
  */
19
20
  paint?: Paint;
20
21
  /**
21
- * A style set for this subtree: `console`, `editorial` or `marketing`.
22
+ * A style set for this subtree: `console`, `editorial`, `marketing` or
23
+ * `graphite`.
22
24
  *
23
25
  * Optional, and **absent means inherit** — an island that names none stamps no
24
26
  * `data-style` and passes the ambient set straight through, exactly as a bare
@@ -27,7 +29,7 @@ interface DensityProps {
27
29
  *
28
30
  * - `console` inside a page that is not console. That is the whole job of the
29
31
  * default set: it restates the `:root` defaults, so a subtree stamped with
30
- * it renders the ordinary look inside an editorial or marketing page.
32
+ * it renders the ordinary look inside a page under any other set.
31
33
  * - Moving the band rhythm with the rung. `--cue-band-y` is
32
34
  * `calc(var(--cue-space-7) * 2)` declared on the `[data-style]` element, and
33
35
  * a custom property's `var()` references are substituted where they are
@@ -35,6 +37,13 @@ interface DensityProps {
35
37
  * the rhythm already resolved above it. Restating the set here re-resolves
36
38
  * it against this island's rung, which is how a denser island gets a
37
39
  * proportionally tighter band instead of the outer one's.
40
+ *
41
+ * The library restates the set for you where an island changes what a set's
42
+ * values read besides the rung — the theme's inks, the pairing's faces: a
43
+ * nested `ThemeProvider` that names a theme or a mode, and a `Preview` stage
44
+ * with a theme, a mode or a pairing, stamp the set and the pack in force
45
+ * beside it. This island changes only the rung, so it does not, and the
46
+ * rhythm above stays the opt-in the second bullet describes.
38
47
  */
39
48
  styleSet?: StyleSet;
40
49
  /** Subtree that should render at `density`. */
@@ -58,7 +67,7 @@ interface DensityProps {
58
67
  * omitted where there is none. It is read by nothing this island does —
59
68
  * theme and mode are deliberately *not* re-scoped here; density was for a long
60
69
  * time the only axis an island could override (spec §6), and a named
61
- * `styleSet` is the second and last — it exists so a theme's own
70
+ * `styleSet` and a named `paint` are the other two — it exists so a theme's own
62
71
  * generated CSS can address exactly this island regardless of how many
63
72
  * *other* themed providers sit between it and the one it belongs to. A CSS
64
73
  * ancestor selector can only ask "does some ancestor carry theme `x`", never
@@ -70,7 +79,8 @@ interface DensityProps {
70
79
  * is how the axis inherits: custom properties inherit down the DOM, so an island
71
80
  * that stamped the ambient set would be restating an answer it already had, and
72
81
  * an island that stamped a *default* set would silently re-point the rhythm of
73
- * every page that nested one.
82
+ * every page that nested one. `data-paint` joins them on exactly those terms
83
+ * when a `paint` is named.
74
84
  *
75
85
  * @example
76
86
  * <Density density="ultra-compact">