@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,21 @@
1
+ //#region src/system/_style-disclosure.ts
2
+ /**
3
+ * The inline disclosure toggle's ink, hover ink and weight (round 6, spec §11,
4
+ * lane R6.Z: `style-disclosure-ink`, `style-disclosure-hover-ink`,
5
+ * `style-disclosure-weight`), each falling back to what `Disclosure` drew:
6
+ * `fg-subtle`, `fg-muted` under the pointer, and the weight it inherited.
7
+ * greptile.com's phone contents box is a `details` whose summary is 500 in
8
+ * `fg` and stays so under the pointer (Z137).
9
+ *
10
+ * **Optional** (spec §3.0). Its own module for docgen's reason: the accordion
11
+ * and collapsible triggers ride `_style-collapse.ts` and read none of these.
12
+ *
13
+ * @internal Not part of the public API.
14
+ */
15
+ const DISCLOSURE_INK = "text-[color:var(--cue-style-disclosure-ink,var(--cue-fg-subtle))]";
16
+ /** @see DISCLOSURE_INK */
17
+ const DISCLOSURE_HOVER_INK = "hover:text-[color:var(--cue-style-disclosure-hover-ink,var(--cue-fg-muted))]";
18
+ /** @see DISCLOSURE_INK */
19
+ const DISCLOSURE_WEIGHT = "font-[number:var(--cue-style-disclosure-weight,inherit)]";
20
+ //#endregion
21
+ export { DISCLOSURE_HOVER_INK, DISCLOSURE_INK, DISCLOSURE_WEIGHT };
@@ -0,0 +1,42 @@
1
+ //#region src/system/_style-empty-state.ts
2
+ /**
3
+ * The empty state's own voice (round 6, spec §11, lane R6.P): its title's face,
4
+ * size, weight and leading (`style-empty-title-face`, `-size`, `-weight`,
5
+ * `-leading`), falling back to the inherited face, the `text-emphasis` rung and
6
+ * the inherited weight and leading; its icon's size (`style-empty-icon-size`),
7
+ * falling back to `space-7`; the gap between its parts (`style-empty-gap`),
8
+ * falling back to `space-3`; and its block padding (`style-empty-pad`), falling
9
+ * back to `space-7`. coss.com/ui's Empty sets a 20px, 600-weight heading-face
10
+ * title on a 1.4 line, an 18px icon, 24px between its parts and 80px (48px on a
11
+ * phone) above and below (P156).
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 EMPTY_TITLE_FACE = "font-[family-name:var(--cue-style-empty-title-face,inherit)]";
20
+ /**
21
+ * The hint's face and weight: the body names (`style-body-face`,
22
+ * `style-body-weight`), each falling back to the `inherit` the hint drew — it
23
+ * set neither, so a caller's face on the root reached it. The shared
24
+ * `BODY_VOICE` falls back to mono, which is what the sites it replaced drew; the
25
+ * title's face above falls back to `inherit` for the same reason (the closing
26
+ * pass's adversarial review).
27
+ */
28
+ const EMPTY_HINT_VOICE = "font-[family-name:var(--cue-style-body-face,inherit)] font-[number:var(--cue-style-body-weight,inherit)]";
29
+ /** @see EMPTY_TITLE_FACE */
30
+ const EMPTY_TITLE_SIZE = "text-[length:var(--cue-style-empty-title-size,var(--cue-text-emphasis))]";
31
+ /** @see EMPTY_TITLE_FACE */
32
+ const EMPTY_TITLE_WEIGHT = "font-[number:var(--cue-style-empty-title-weight,inherit)]";
33
+ /** @see EMPTY_TITLE_FACE */
34
+ const EMPTY_TITLE_LEADING = "leading-[var(--cue-style-empty-title-leading,inherit)]";
35
+ /** @see EMPTY_TITLE_FACE */
36
+ const EMPTY_ICON_SIZE = "size-[var(--cue-style-empty-icon-size,var(--cue-space-7))]";
37
+ /** @see EMPTY_TITLE_FACE */
38
+ const EMPTY_GAP = "gap-[var(--cue-style-empty-gap,var(--cue-space-3))]";
39
+ /** @see EMPTY_TITLE_FACE */
40
+ const EMPTY_PAD = "py-[var(--cue-style-empty-pad,var(--cue-space-7))]";
41
+ //#endregion
42
+ export { EMPTY_GAP, EMPTY_HINT_VOICE, EMPTY_ICON_SIZE, EMPTY_PAD, EMPTY_TITLE_FACE, EMPTY_TITLE_LEADING, EMPTY_TITLE_SIZE, EMPTY_TITLE_WEIGHT };
@@ -0,0 +1,43 @@
1
+ //#region src/system/_style-eyebrow.ts
2
+ /**
3
+ * The eyebrow's voice: its face, size, ink, weight and whether it prints the
4
+ * `//` glyph — the console's by default, the style set's choice inside one.
5
+ *
6
+ * Spec 2026-09-26-looks-fidelity §3.6 (R2). `Eyebrow` is the one caption the
7
+ * four measured Looks each draw differently from the rest of their labels:
8
+ * zine's is a 1–1.125rem kicker, kiln's a mono 0.8125rem at weight 500 in a
9
+ * softened heading ink, tender's is in the body ink, and none of the four
10
+ * prints the slashes. So it has names of its own rather than riding the label
11
+ * names — but it falls back THROUGH them, so a set that restyles its labels
12
+ * and says nothing about its eyebrow gets an eyebrow that matches its labels.
13
+ *
14
+ * Every name is optional (spec §3.0, F-3), emitted as `initial` on the shared
15
+ * `[data-style]` reset, so under no set, `console` and every set that declines
16
+ * them each reader resolves to exactly what the class it replaced resolved to:
17
+ *
18
+ * - face: `LABEL_FACE`'s own chain, `var(--cue-style-label-face, var(--cue-font-mono))`;
19
+ * - size: `var(--cue-style-label-size, var(--cue-text-label))`, the label size's chain;
20
+ * - ink: `var(--cue-accent)`, what `text-accent` compiled to;
21
+ * - weight: `inherit` — the eyebrow declared none (see `_style-label-weight.ts`
22
+ * on why a literal `400` would not be a no-op, and on the `font-[number:…]`
23
+ * spelling);
24
+ * - glyph: `inline`, the slashes' own display. A flex item is blockified either
25
+ * way, so under no set it computes what it computed before; `none` removes it.
26
+ *
27
+ * **One module for the five**, because `Eyebrow` is their only reader:
28
+ * `@repo/docgen` attributes a token by the file its class string lives in, and
29
+ * every importer of this file reads every name in it.
30
+ *
31
+ * @internal Not part of the public API.
32
+ */
33
+ const EYEBROW_FACE = "font-[family-name:var(--cue-style-eyebrow-face,var(--cue-style-label-face,var(--cue-font-mono)))]";
34
+ /** @see EYEBROW_FACE — the eyebrow's size, falling back through the label size. */
35
+ const EYEBROW_SIZE = "text-[length:var(--cue-style-eyebrow-size,var(--cue-style-label-size,var(--cue-text-label)))]";
36
+ /** @see EYEBROW_FACE — the eyebrow's ink; the accent by default. */
37
+ const EYEBROW_INK = "text-[color:var(--cue-style-eyebrow-ink,var(--cue-accent))]";
38
+ /** @see EYEBROW_FACE — the eyebrow's weight; inherited by default. */
39
+ const EYEBROW_WEIGHT = "font-[number:var(--cue-style-eyebrow-weight,inherit)]";
40
+ /** @see EYEBROW_FACE — the `//` glyph's display: `inline` by default, `none` to drop it. */
41
+ const EYEBROW_GLYPH = "[display:var(--cue-style-eyebrow-glyph,inline)]";
42
+ //#endregion
43
+ export { EYEBROW_FACE, EYEBROW_GLYPH, EYEBROW_INK, EYEBROW_SIZE, EYEBROW_WEIGHT };
@@ -0,0 +1,38 @@
1
+ //#region src/system/_style-field-chassis.ts
2
+ /**
3
+ * The field chassis's inline padding and hover edge (round 6, spec §11, lane
4
+ * R6.T: `style-field-pad`, `style-field-hover-edge`), and its invalid edge.
5
+ *
6
+ * stripe.com pads its text field, textarea and select trigger 16px
7
+ * (`--hds-space-core-200`) where ours pad 12px (`space-4` at normal), so the
8
+ * padding is the rung times a set's multiplier (T132, T148); it draws a
9
+ * lavender edge under the pointer (`--hds-color-input-border-hoverSubdued`,
10
+ * T132, T148, T153). An invalid field's resting edge there is a pale red
11
+ * (`--hds-color-input-border-errorBlur`, T147), which Tender refuses (spec
12
+ * §6.2), so no set spends a name for it and the edge is plain `danger`.
13
+ *
14
+ * **The fallbacks are the classes they replace**: each rung's `px-(--cue-space-*)`
15
+ * times 1, the `transparent` the chassis's border already is (so a pointer
16
+ * over a field under a set that declines the name changes nothing: Tailwind
17
+ * emits `hover:` before `focus:` and `data-[invalid]:`, so a focused or
18
+ * invalid field keeps its own edge).
19
+ *
20
+ * @internal Not part of the public API.
21
+ */
22
+ const FIELD_PAD_SM = "px-[calc(var(--cue-space-3)*var(--cue-style-field-pad,1))]";
23
+ /** The `md` rung's inline padding, and the textarea's. */
24
+ const FIELD_PAD_MD = "px-[calc(var(--cue-space-4)*var(--cue-style-field-pad,1))]";
25
+ /** The `lg` rung's inline padding. */
26
+ const FIELD_PAD_LG = "px-[calc(var(--cue-space-5)*var(--cue-style-field-pad,1))]";
27
+ /** The edge under a pointer that can hover. */
28
+ const FIELD_HOVER_EDGE = "hover:border-[color:var(--cue-style-field-hover-edge,transparent)]";
29
+ /** An invalid field's edge: `danger`, the class the chassis drew before round 6. */
30
+ const INVALID_EDGE = "data-[invalid]:border-danger";
31
+ /**
32
+ * The select trigger's own hover edge: it draws `border-strong` under the
33
+ * pointer where the rest of the chassis draws nothing, so its reader falls
34
+ * back to that, and a set's field hover edge reaches it too.
35
+ */
36
+ const SELECT_HOVER_EDGE = "hover:not-data-disabled:border-[color:var(--cue-style-field-hover-edge,var(--cue-border-strong))]";
37
+ //#endregion
38
+ export { FIELD_HOVER_EDGE, FIELD_PAD_LG, FIELD_PAD_MD, FIELD_PAD_SM, INVALID_EDGE, SELECT_HOVER_EDGE };
@@ -0,0 +1,12 @@
1
+ //#region src/system/_style-field-gap.ts
2
+ /**
3
+ * The gap between a field's label, its control and its help line (round 6,
4
+ * spec §11, lane R6.T: `style-field-gap`, MULT), falling back to the `space-2`
5
+ * it drew times 1. stripe.com leaves 8px under a label
6
+ * (`.hds-field__label-layout`'s margin) where ours leaves 6px at normal (T147).
7
+ *
8
+ * @internal Not part of the public API.
9
+ */
10
+ const FIELD_GAP = "gap-[calc(var(--cue-space-2)*var(--cue-style-field-gap,1))]";
11
+ //#endregion
12
+ export { FIELD_GAP };
@@ -0,0 +1,47 @@
1
+ //#region src/system/_style-footer-rule.ts
2
+ /**
3
+ * The width of the rule across the top of `Footer`, and the line style of
4
+ * both of its rules.
5
+ *
6
+ * Spec 2026-09-26-looks-fidelity §3.11 (plan R4). `Footer` spends `Band`'s
7
+ * recipe, whose rule is `--cue-band-rule` wide, and a Look whose bands carry
8
+ * no rule but whose footer does (kiln) needs the footer's width on its own.
9
+ * `--cue-style-footer-rule` is that width, and this reads it.
10
+ *
11
+ * **The fallback is the class it replaces**: `bandClasses("rule")`'s
12
+ * `border-t-(length:--cue-band-rule)`, which compiles to
13
+ * `var(--cue-band-rule)`. Composed after it, so `tailwind-merge` drops the
14
+ * recipe's own width and keeps this one; `Band` is untouched.
15
+ *
16
+ * **The line style fills Tailwind's own slot** (`style-footer-rule-style`,
17
+ * round 5 of plan V.2: `tender` dashes both rules, T120 and T121). Both of
18
+ * the footer's rules are written by width utilities — the band rule by
19
+ * `border-t-[length:…]` above, the fine print's by `border-t` — and each
20
+ * writes `border-top-style: var(--tw-border-style)`, a slot Tailwind
21
+ * registers as `@property` with `inherits: false` and `initial-value: solid`,
22
+ * which is the solid rule the footer always drew. So `Footer` spends
23
+ * {@link FOOTER_RULE_STYLE} on both elements, as `_style-app-bar.ts` fills the
24
+ * same slot for the bar's rule: one declaration each, rather than a raw
25
+ * `[border-top-style:…]` that Tailwind would emit after `border-dotted` and
26
+ * that would beat a caller's own style class. Through the slot, a caller's
27
+ * `className="border-dotted"` still wins on the landmark, because a style
28
+ * utility writes `border-style` itself and is emitted after the width
29
+ * utilities. The slot does not inherit, so filling it on the landmark reaches
30
+ * no descendant's border, which is why the fine-print row fills it too.
31
+ *
32
+ * Its own name rather than `style-chrome-rule-style`, the bar's: the sources
33
+ * style the two ends of a page apart. Tender's dashes its footer's rules and
34
+ * draws the rule under its header solid; zine's dashes its header rule.
35
+ *
36
+ * **Its own module, and not in `_band.ts`**, whose docblock says why: docgen
37
+ * publishes every `--cue-*` in that file as a token both `Band` and `Footer`
38
+ * paint, and `Band` reads neither name here. A band's rule keeps its solid
39
+ * under every set.
40
+ *
41
+ * @internal Not part of the public API.
42
+ */
43
+ const FOOTER_RULE = "border-t-[length:var(--cue-style-footer-rule,var(--cue-band-rule))]";
44
+ /** Both footer rules' line style, filling the slot their `border-t` utilities read. */
45
+ const FOOTER_RULE_STYLE = "[--tw-border-style:var(--cue-style-footer-rule-style,solid)]";
46
+ //#endregion
47
+ export { FOOTER_RULE, FOOTER_RULE_STYLE };
@@ -0,0 +1,20 @@
1
+ //#region src/system/_style-glyph-ink.ts
2
+ /**
3
+ * A control's glyph ink (round 6, spec §11, lane R6.P: `style-glyph-ink`): the
4
+ * chevron on a select and a filterable field, a number field's steppers, the
5
+ * date trigger's calendar mark, a calendar's month arrows, pagination's
6
+ * ellipsis and an empty state's icon. Each falls back to the `fg-subtle` or
7
+ * `fg-muted` it drew. coss.com/ui draws all of them in `fg` (P151.chevron-ink,
8
+ * P174.chevron-ink, P165.stepper-ink, P167.ellipsis, P189.nav-ink,
9
+ * P156.icon-ink).
10
+ *
11
+ * **Optional** (spec §3.0). Its own module for docgen's reason: one token per
12
+ * file, so only the components that read it are credited with it.
13
+ *
14
+ * @internal Not part of the public API.
15
+ */
16
+ const GLYPH_INK_SUBTLE = "text-[color:var(--cue-style-glyph-ink,var(--cue-fg-subtle))]";
17
+ /** @see GLYPH_INK_SUBTLE */
18
+ const GLYPH_INK_MUTED = "text-[color:var(--cue-style-glyph-ink,var(--cue-fg-muted))]";
19
+ //#endregion
20
+ export { GLYPH_INK_MUTED, GLYPH_INK_SUBTLE };
@@ -0,0 +1,20 @@
1
+ //#region src/system/_style-glyph-opacity.ts
2
+ /**
3
+ * An affordance glyph's opacity (round 6, spec §11, lane R6.P:
4
+ * `style-glyph-opacity`): the chevron on a select and a filterable field, the
5
+ * date trigger's calendar mark, a calendar's month arrows, and a glyph in an
6
+ * input group's gutters. Each falls back to `1`, the opacity it drew.
7
+ * coss.com/ui paints all of them in `fg` at 80% (P151, P153, P161, P174,
8
+ * P189), and its number-field steppers, pagination ellipsis and empty-state
9
+ * icon at full strength, so those read `style-glyph-ink` alone.
10
+ *
11
+ * **Optional** (spec §3.0). Its own module for docgen's reason: one token per
12
+ * file, so only the components that read it are credited with it.
13
+ *
14
+ * @internal Not part of the public API.
15
+ */
16
+ const GLYPH_OPACITY = "opacity-[var(--cue-style-glyph-opacity,1)]";
17
+ /** @see GLYPH_OPACITY — on the glyphs inside a wrapper, so a focus ring on the wrapper keeps its strength. */
18
+ const GLYPH_OPACITY_SVG = "[&_svg]:opacity-[var(--cue-style-glyph-opacity,1)]";
19
+ //#endregion
20
+ export { GLYPH_OPACITY, GLYPH_OPACITY_SVG };
@@ -0,0 +1,21 @@
1
+ //#region src/system/_style-glyph-size.ts
2
+ /**
3
+ * A control's glyph size (round 6, spec §11, lane R6.P: `style-glyph-size`): the
4
+ * date trigger's calendar mark and a number field's stepper glyphs, falling
5
+ * back to the `icon-sm` they drew. coss.com/ui draws both 16px (P153.icon,
6
+ * P165.stepper-glyph).
7
+ *
8
+ * **Optional** (spec §3.0). Its own module for docgen's reason: one token per
9
+ * file, so only the components that read it are credited with it.
10
+ *
11
+ * @internal Not part of the public API.
12
+ */
13
+ const GLYPH_SIZE = "size-[var(--cue-style-glyph-size,var(--cue-icon-sm))]";
14
+ /**
15
+ * The same size for a glyph set as type: a number field's − and +, which fall
16
+ * back to the size they inherited. coss.com/ui's stepper glyphs are 16px
17
+ * (P165.stepper-glyph).
18
+ */
19
+ const GLYPH_TEXT_SIZE = "text-[length:var(--cue-style-glyph-size,inherit)]";
20
+ //#endregion
21
+ export { GLYPH_SIZE, GLYPH_TEXT_SIZE };
@@ -0,0 +1,15 @@
1
+ //#region src/system/_style-group-gap.ts
2
+ /**
3
+ * The gap between the items of a group control (round 6, spec §11, lane R6.P:
4
+ * `style-group-gap`): a ToggleGroup's toggles and a tab list's tabs, falling
5
+ * back to the `space-1` both drew. coss.com/ui sets both 2px apart (P141,
6
+ * P182.gap).
7
+ *
8
+ * **Optional** (spec §3.0). Its own module for docgen's reason: one token per
9
+ * file, so only the components that read it are credited with it.
10
+ *
11
+ * @internal Not part of the public API.
12
+ */
13
+ const GROUP_GAP = "gap-[var(--cue-style-group-gap,var(--cue-space-1))]";
14
+ //#endregion
15
+ export { GROUP_GAP };
@@ -0,0 +1,14 @@
1
+ //#region src/system/_style-group-label-pad.ts
2
+ /**
3
+ * A menu group label's block padding (round 6, spec §11, lane R6.P:
4
+ * `style-group-label-pad`), falling back to the `0px` it drew inside its fixed
5
+ * row height. coss.com/ui pads its labels 6px (P163.label-pad).
6
+ *
7
+ * **Optional** (spec §3.0). Its own module for docgen's reason: one token per
8
+ * file, so only the components that read it are credited with it.
9
+ *
10
+ * @internal Not part of the public API.
11
+ */
12
+ const GROUP_LABEL_PAD = "py-[var(--cue-style-group-label-pad,0px)]";
13
+ //#endregion
14
+ export { GROUP_LABEL_PAD };
@@ -0,0 +1,24 @@
1
+ //#region src/system/_style-group-label.ts
2
+ /**
3
+ * A caption over a group of rows (round 6, spec §11, lane R6.P:
4
+ * `style-group-label-size`, `style-group-label-ink`): a menu's and a command
5
+ * palette's group labels. A menu's falls back through `style-label-size` and
6
+ * `style-label-ink` to the rung and ink it drew; the palette's, which read no
7
+ * label name, to its `text-micro` and `fg-subtle`. coss.com/ui sets both at
8
+ * 12px in `fg-muted` (P163.label-size, P152.group-label, P152.group-label-ink),
9
+ * where its field labels are 14px `fg`.
10
+ *
11
+ * **Optional** (spec §3.0). Its own module for docgen's reason: one token per
12
+ * file, so only the components that read it are credited with it.
13
+ *
14
+ * @internal Not part of the public API.
15
+ */
16
+ const GROUP_LABEL_SIZE = "text-[length:var(--cue-style-group-label-size,var(--cue-style-label-size,var(--cue-text-label)))]";
17
+ /** @see GROUP_LABEL_SIZE */
18
+ const GROUP_LABEL_INK = "text-[color:var(--cue-style-group-label-ink,var(--cue-style-label-ink,var(--cue-fg-subtle)))]";
19
+ /** @see GROUP_LABEL_SIZE — the palette's, which read no label name. */
20
+ const GROUP_LABEL_SIZE_MICRO = "text-[length:var(--cue-style-group-label-size,var(--cue-text-micro))]";
21
+ /** @see GROUP_LABEL_SIZE */
22
+ const GROUP_LABEL_INK_SUBTLE = "text-[color:var(--cue-style-group-label-ink,var(--cue-fg-subtle))]";
23
+ //#endregion
24
+ export { GROUP_LABEL_INK, GROUP_LABEL_INK_SUBTLE, GROUP_LABEL_SIZE, GROUP_LABEL_SIZE_MICRO };
@@ -0,0 +1,17 @@
1
+ //#region src/system/_style-gutter.ts
2
+ /**
3
+ * A padded `Container`'s gutter (plan V.2, T119): `style-gutter`, falling back
4
+ * to the `space-6` it drew. Tender's page column is 16px in from the viewport
5
+ * on a phone and its band column is 1232px wide at 1440, where `space-6` is
6
+ * 24px. A proportion of the rung (RUNG(`space-6`)), so it follows density.
7
+ *
8
+ * Spec §3.11 withdrew a `style-gutter` in round 1 because no row needed it;
9
+ * T38 and T119 are the rows.
10
+ *
11
+ * **Optional** (spec §3.0). Its own module for docgen's reason.
12
+ *
13
+ * @internal Not part of the public API.
14
+ */
15
+ const GUTTER = "px-[var(--cue-style-gutter,var(--cue-space-6))]";
16
+ //#endregion
17
+ export { GUTTER };
@@ -0,0 +1,14 @@
1
+ //#region src/system/_style-help-ink.ts
2
+ /**
3
+ * The help ink, for a site that reads it without the help size: a table's
4
+ * caption and the breadcrumb's separator (plan V.2, P122, P128) —
5
+ * `style-help-ink`, falling back to the `fg-subtle` both drew. The same class
6
+ * `_style-help.ts`'s `HELP_INK` spells for a field's description, restated in
7
+ * a module of its own so docgen does not publish `style-help-size` as a
8
+ * token of a table or a breadcrumb.
9
+ *
10
+ * @internal Not part of the public API.
11
+ */
12
+ const HELP_INK = "text-[color:var(--cue-style-help-ink,var(--cue-fg-subtle))]";
13
+ //#endregion
14
+ export { HELP_INK };
@@ -0,0 +1,38 @@
1
+ //#region src/system/_style-help.ts
2
+ /**
3
+ * The size and ink of a field's helper text: the micro rung in `fg-subtle`,
4
+ * until a style set says otherwise.
5
+ *
6
+ * Spec 2026-09-26-looks-fidelity §3.5, plan R1. `FieldDescription` and
7
+ * `FieldError` each spelt `font-mono text-(length:--cue-text-micro)`, the
8
+ * description in `fg-subtle` and the error in `danger`. Tender and Porcelain set
9
+ * helper text a rung larger and a step darker (T55, P48), in the Look's label
10
+ * face — so both lines now wear `LABEL_FACE` and read the size here, and the
11
+ * description reads the ink. The error keeps `danger`: a Look's helper ink is
12
+ * not a reason to quieten a validation message.
13
+ *
14
+ * | property | reads | fallback |
15
+ * |-----------|-------------------|---------------------------|
16
+ * | font-size | `style-help-size` | `var(--cue-text-micro)` |
17
+ * | color | `style-help-ink` | `var(--cue-fg-subtle)` |
18
+ *
19
+ * **Both names are optional** (spec §3.0), declared on no `:root` and left at the
20
+ * shared `[data-style]` reset by every shipped set, so each reader computes the
21
+ * old class's value at the element.
22
+ *
23
+ * @internal Not part of the public API.
24
+ */
25
+ const HELP_SIZE = "text-[length:var(--cue-style-help-size,var(--cue-text-micro))]";
26
+ /** @see HELP_SIZE — the description's ink; `FieldError` keeps `text-danger`. */
27
+ const HELP_INK = "text-[color:var(--cue-style-help-ink,var(--cue-fg-subtle))]";
28
+ /**
29
+ * The help line's leading (round 6, spec §11, lane R6.T: `style-help-leading`),
30
+ * falling back to the body leading `FieldDescription` read. stripe.com sets
31
+ * its field description and its field error on one line height
32
+ * (`--hds-font-input-description-lineHeight`, 18.2px on 14px: 1.3, T147).
33
+ */
34
+ const HELP_LEADING = "leading-[var(--cue-style-help-leading,var(--cue-style-body-leading,inherit))]";
35
+ /** The error line's leading: the same name, falling back to the `inherit` `FieldError` drew (no leading class). */
36
+ const HELP_LEADING_ERROR = "leading-[var(--cue-style-help-leading,inherit)]";
37
+ //#endregion
38
+ export { HELP_INK, HELP_LEADING, HELP_LEADING_ERROR, HELP_SIZE };
@@ -0,0 +1,15 @@
1
+ //#region src/system/_style-hover-card-width.ts
2
+ /**
3
+ * A hover card's width (round 6, spec §11, lane R6.P: `style-hover-card-width`),
4
+ * falling back to the 20rem it drew, under the same viewport cap. coss.com/ui's
5
+ * preview card is 256px (`w-64`, P169.width).
6
+ *
7
+ * **Optional** (spec §3.0): declared by `porcelain` alone, and the reader falls
8
+ * back to what the component drew. Its own module for docgen's reason: one
9
+ * component's tokens per file.
10
+ *
11
+ * @internal Not part of the public API.
12
+ */
13
+ const HOVER_CARD_WIDTH = "w-[min(var(--cue-style-hover-card-width,20rem),calc(100vw-2rem))]";
14
+ //#endregion
15
+ export { HOVER_CARD_WIDTH };
@@ -0,0 +1,34 @@
1
+ //#region src/system/_style-input-face.ts
2
+ /**
3
+ * The face a typing surface wears: mono by default, the style set's choice
4
+ * inside one.
5
+ *
6
+ * Spec 2026-09-26 (the label-voice brief). `forms/_chassis.ts`'s
7
+ * `controlSurface` and `bareControlClasses` — the shared recessed-control
8
+ * chassis a text field, a textarea, a number field, a combobox, a select
9
+ * trigger and everything else a person types into all ride — spoke
10
+ * `font-mono` before this existed, the same fact `_style-control-face.ts`
11
+ * records for `Button`. What was missing was a way for a sans-voiced Look to
12
+ * change the ONE surface that is neither a control nor a caption: text a
13
+ * person types, which a face chosen per call site would not follow. So the
14
+ * style set says it, through `--cue-style-input-face`, and this reads it.
15
+ *
16
+ * **The fallback is the old class, spelt out**, for the identical reason
17
+ * `_style-control-face.ts` gives: `font-mono` compiles to
18
+ * `font-family: var(--cue-font-mono)`, and `--cue-style-input-face` is
19
+ * declared on no `:root`, so under no set this resolves to exactly what
20
+ * `font-mono` resolved to, at the control itself. A call site that
21
+ * deliberately keeps a typed value in mono regardless of the set — a hex
22
+ * colour code, a DMX value, anything code-shaped rather than prose — restates
23
+ * `font-mono` directly instead of importing this, exactly as `color-picker.tsx`
24
+ * already did for its hex field before this axis existed.
25
+ *
26
+ * **Its own module**, for the reason `_style-control-face.ts` gives: one
27
+ * reader per file, so `@repo/docgen` attributes exactly this token to exactly
28
+ * the components that import it.
29
+ *
30
+ * @internal Not part of the public API.
31
+ */
32
+ const INPUT_FACE = "font-[family-name:var(--cue-style-input-face,var(--cue-font-mono))]";
33
+ //#endregion
34
+ export { INPUT_FACE };
@@ -0,0 +1,58 @@
1
+ //#region src/system/_style-kbd.ts
2
+ /**
3
+ * A key cap's rim and size: the box edge and the micro rung by default, the
4
+ * style set's choice inside one.
5
+ *
6
+ * Spec 2026-09-26-looks-fidelity §3.6 (R2), F-16. `Kbd` spent `border-border`
7
+ * and `text-(length:--cue-text-micro)`. Porcelain's `MenuShortcut` key caps
8
+ * have no rim at all and sit at 0.75rem (coss.md, P55), which a set says as
9
+ * `--cue-style-kbd-edge: transparent` and `--cue-style-chip-size: 0.75rem` —
10
+ * the chip's size name, because `Kbd` is sized off `h-chip` to sit on a chip's
11
+ * row, and a Look that retunes one retunes both. The border's width stays, so
12
+ * a key cap keeps its box and its baseline in every Look.
13
+ *
14
+ * Both names are optional (spec §3.0, F-3): under no set, `console` and every
15
+ * set that declines them each reader resolves to exactly what the class it
16
+ * replaced resolved to, at the key cap itself.
17
+ *
18
+ * **Put {@link KBD_SIZE} before `leading-none` in the same `cn()`**, as
19
+ * `_style-label-size.ts` explains: `tailwind-merge` drops a `leading-*` that a
20
+ * later font-size follows.
21
+ *
22
+ * **Its own module**, apart from `_style-chip.ts` though it reads one of the
23
+ * chip's names, because `@repo/docgen` credits every importer with every token
24
+ * in a file, and `Kbd` reads none of the chip's other names.
25
+ *
26
+ * @internal Not part of the public API.
27
+ */
28
+ const KBD_EDGE = "border-[color:var(--cue-style-kbd-edge,var(--cue-border))]";
29
+ /** @see KBD_EDGE — the key cap's size: the chip's size name, the micro rung by default. */
30
+ const KBD_SIZE = "text-[length:var(--cue-style-kbd-size,var(--cue-style-chip-size,var(--cue-text-micro)))]";
31
+ /**
32
+ * The key cap's own box (plan V.2, P55, P111): its height and minimum width
33
+ * (`style-kbd-height`, the `chip-h` it shared with the chip), its inline
34
+ * padding (`style-kbd-pad`, `space-2`) and its corner (`style-kbd-radius`, the
35
+ * `rounded-control` corner). Porcelain's key caps are 20px, 4px in and
36
+ * rounded at 0.4 of its control corner, while its chips are a phone-to-desktop
37
+ * clamp — so the cap stopped riding the chip's `h-chip`.
38
+ *
39
+ * The size above reads `style-kbd-size` first for the same reason (P14):
40
+ * Porcelain's chip text ramps from 14px on a phone to 12px on a desktop,
41
+ * where its key caps stay 12px. It falls back through the chip's size, so a
42
+ * Look that names only the chip's keeps its key caps beside it.
43
+ */
44
+ const KBD_BOX = "h-[var(--cue-style-kbd-height,var(--cue-chip-h))] min-w-[var(--cue-style-kbd-height,var(--cue-chip-h))] px-[var(--cue-style-kbd-pad,var(--cue-space-2))] rounded-[var(--cue-style-kbd-radius,calc(var(--cue-radius-control)*var(--cue-radius-scale)))]";
45
+ /**
46
+ * A key's leading (round 6, spec §11, lane R6.P: `style-kbd-leading`), falling
47
+ * back to the `leading-none` it drew. coss.com/ui's keys set 12px on a 16px line
48
+ * (P162.leading).
49
+ */
50
+ const KBD_LEADING = "leading-[var(--cue-style-kbd-leading,1)]";
51
+ /**
52
+ * A key's fill (round 6, spec §11, lane R6.G: `style-kbd-fill`), falling back
53
+ * to the `surface-2` it drew. agent-native.com's header key sits on
54
+ * `bg-elevated`, #f4f3ef in light and #2e2e2e in dark (G141.fill).
55
+ */
56
+ const KBD_FILL = "bg-[color:var(--cue-style-kbd-fill,var(--cue-surface-2))]";
57
+ //#endregion
58
+ export { KBD_BOX, KBD_EDGE, KBD_FILL, KBD_LEADING, KBD_SIZE };
@@ -0,0 +1,36 @@
1
+ //#region src/system/_style-label-case.ts
2
+ /**
3
+ * The `text-transform` a chassis caption wears: `uppercase` by default, the
4
+ * style set's choice inside one.
5
+ *
6
+ * Spec 2026-09-26 (the label-voice brief). Every mono-uppercase chassis
7
+ * caption spent a literal `uppercase` utility before this existed, and a face
8
+ * changed to sans through {@link LABEL_FACE} alone still shouts — a sentence-
9
+ * case label rendered in a sans face and still transformed to caps is a sans
10
+ * label wearing the console's voice, not the source site's. So the two travel
11
+ * together at every call site.
12
+ *
13
+ * **The fallback is the old class, spelt out.** `uppercase` compiles to
14
+ * `text-transform: uppercase`, and `--cue-style-label-case` is declared on no
15
+ * `:root` — deliberately, for the identical reason `_style-control-face.ts`
16
+ * gives for its own name: a `:root` declaration would freeze the page's
17
+ * choice into every nested font or theme island. So under no set this
18
+ * resolves to exactly what `uppercase` resolved to, at the label itself; and
19
+ * every shipped set but a sans-voiced one restates `uppercase`, which
20
+ * `@cueplusplus/tokens` refuses to build otherwise for `console`.
21
+ *
22
+ * Written as a bare arbitrary property (`[text-transform:…]`) rather than a
23
+ * named Tailwind utility because none of Tailwind's `uppercase` / `lowercase`
24
+ * / `capitalize` / `normal-case` utilities take a dynamic value — the same
25
+ * reason `_paint-*` readers reach for `[mask-image:…]` and `[background-*:…]`
26
+ * instead of a utility that does not exist for a `var()`-driven keyword.
27
+ *
28
+ * **Its own module**, for the reason `_style-control-face.ts` gives: one
29
+ * reader per file, so `@repo/docgen` attributes exactly this token to exactly
30
+ * the components that import it.
31
+ *
32
+ * @internal Not part of the public API.
33
+ */
34
+ const LABEL_CASE = "[text-transform:var(--cue-style-label-case,uppercase)]";
35
+ //#endregion
36
+ export { LABEL_CASE };
@@ -0,0 +1,32 @@
1
+ //#region src/system/_style-label-face.ts
2
+ /**
3
+ * The face a chassis caption wears: mono by default, the style set's choice inside one.
4
+ *
5
+ * Spec 2026-09-26 (the label-voice brief). `FieldLabel`, `Eyebrow`, a table head,
6
+ * a `Stat` label, a group or section heading and a dozen more chassis sites all
7
+ * spoke `font-mono … uppercase` before this existed — the same fact
8
+ * `_style-control-face.ts` records for `Button` and the `Tabs` trigger, one
9
+ * layer over. What was missing was a way for a sans-voiced Look (stripe's,
10
+ * replit's, coss's) to change a LABEL's face rather than only a control's, and
11
+ * a face chosen per call site would not follow the Look. So the style set says
12
+ * it, through `--cue-style-label-face`, and this reads it.
13
+ *
14
+ * Always paired with {@link LABEL_CASE}: a sans face still shouting in caps is
15
+ * still the console's voice, not the source site's, so the two travel
16
+ * together at every call site.
17
+ *
18
+ * **The fallback is the old class, spelt out**, for the identical reason
19
+ * `_style-control-face.ts` gives: `font-mono` compiles to
20
+ * `font-family: var(--cue-font-mono)`, and `--cue-style-label-face` is
21
+ * declared on no `:root`, so under no set this resolves to exactly what
22
+ * `font-mono` resolved to, at the label itself.
23
+ *
24
+ * **Its own module**, because `@repo/docgen` attributes a token to a component
25
+ * by the file its class string lives in, following only `_`-prefixed imports.
26
+ * One reader per file — see `_style-control-face.ts`'s note.
27
+ *
28
+ * @internal Not part of the public API.
29
+ */
30
+ const LABEL_FACE = "font-[family-name:var(--cue-style-label-face,var(--cue-font-mono))]";
31
+ //#endregion
32
+ export { LABEL_FACE };
@@ -0,0 +1,29 @@
1
+ //#region src/system/_style-label-ink.ts
2
+ /**
3
+ * A chassis caption's ink: its own historic role by default, one shared ink
4
+ * inside a style set that declares `--cue-style-label-ink`.
5
+ *
6
+ * Spec 2026-09-26-looks-fidelity §3.6 (R2). Two inks, both already on the
7
+ * page: `FieldLabel`, a `SectionHeader` label and the `Checkbox` and `Switch`
8
+ * labels spent `text-fg-muted`; a table head and a group row, a
9
+ * `Sidebar.Section` label, a `Stat` label and a menu group label spent the
10
+ * quieter `text-fg-subtle`. Tender and porcelain draw every caption in the
11
+ * body ink (`var(--cue-fg)`), kiln in the muted one — one value a set says
12
+ * once, which is why the name exists.
13
+ *
14
+ * **Optional, so each reader keeps its own fallback** (spec §3.0, F-3): under
15
+ * no set, `console` and every set that declines the name this resolves to
16
+ * exactly what `text-fg-muted` or `text-fg-subtle` resolved to, at the label
17
+ * itself — so a nested theme island still repaints it.
18
+ *
19
+ * **Its own module**, for the reason `_style-control-face.ts` gives: one
20
+ * token per file, so `@repo/docgen` credits exactly the components that read
21
+ * the label ink with it.
22
+ *
23
+ * @internal Not part of the public API.
24
+ */
25
+ const LABEL_INK = "text-[color:var(--cue-style-label-ink,var(--cue-fg-muted))]";
26
+ /** @see LABEL_INK — for a reader that spent `text-fg-subtle` before this existed. */
27
+ const LABEL_INK_SUBTLE = "text-[color:var(--cue-style-label-ink,var(--cue-fg-subtle))]";
28
+ //#endregion
29
+ export { LABEL_INK, LABEL_INK_SUBTLE };
@@ -0,0 +1,14 @@
1
+ //#region src/system/_style-label-leading.ts
2
+ /**
3
+ * A field label's leading (plan V.2, P10): `style-label-leading`, falling back
4
+ * to the `leading-none` (`1`) the label drew. Porcelain's field label is 16px
5
+ * on 14px type, a 1.143 leading.
6
+ *
7
+ * **Optional** (spec §3.0). Its own module because docgen attributes a token
8
+ * to a component by the file its class string lives in.
9
+ *
10
+ * @internal Not part of the public API.
11
+ */
12
+ const LABEL_LEADING = "leading-[var(--cue-style-label-leading,1)]";
13
+ //#endregion
14
+ export { LABEL_LEADING };