@cueplusplus/ui 0.2.0 → 0.5.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 (628) hide show
  1. package/CHANGELOG.md +2250 -0
  2. package/dist/agent-runtime/_glyphs.js +43 -0
  3. package/dist/agent-runtime/branch-picker.d.ts +45 -0
  4. package/dist/agent-runtime/branch-picker.js +87 -0
  5. package/dist/agent-runtime/index.d.ts +4 -0
  6. package/dist/agent-runtime/index.js +4 -0
  7. package/dist/agent-runtime/tool-call-card.d.ts +69 -0
  8. package/dist/agent-runtime/tool-call-card.js +187 -0
  9. package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
  10. package/dist/agent-runtime/use-agent-thread.js +251 -0
  11. package/dist/brand/_chassis.d.ts +1 -1
  12. package/dist/brand/cue-mark.d.ts +1 -1
  13. package/dist/brand/cue-mark.js +1 -1
  14. package/dist/chat/index.d.ts +2 -2
  15. package/dist/chat/message-list.d.ts +6 -0
  16. package/dist/chat/message-list.js +35 -0
  17. package/dist/chrome/_edge-scroller.js +12 -1
  18. package/dist/chrome/_tabs-scroll.d.ts +1 -1
  19. package/dist/chrome/_tabs-scroll.js +1 -1
  20. package/dist/chrome/app-shell.d.ts +52 -2
  21. package/dist/chrome/app-shell.js +80 -8
  22. package/dist/chrome/index.d.ts +2 -2
  23. package/dist/configurator/_export.js +3 -2
  24. package/dist/configurator/_overrides.d.ts +1 -1
  25. package/dist/configurator/_overrides.js +18 -6
  26. package/dist/configurator/token-editor.js +4 -1
  27. package/dist/date/_segments.js +37 -2
  28. package/dist/elements/activity-graph.d.ts +40 -0
  29. package/dist/elements/activity-graph.js +81 -0
  30. package/dist/elements/agent-card.d.ts +49 -0
  31. package/dist/elements/agent-card.js +91 -0
  32. package/dist/elements/agent-handoff.d.ts +24 -0
  33. package/dist/elements/agent-handoff.js +53 -0
  34. package/dist/elements/agent-mode-badge.d.ts +72 -0
  35. package/dist/elements/agent-mode-badge.js +110 -0
  36. package/dist/elements/agent-plan.d.ts +24 -0
  37. package/dist/elements/agent-plan.js +74 -0
  38. package/dist/elements/agent-status.d.ts +29 -0
  39. package/dist/elements/agent-status.js +46 -0
  40. package/dist/elements/agent-surface.d.ts +65 -0
  41. package/dist/elements/agent-surface.js +68 -0
  42. package/dist/elements/animated-number.d.ts +86 -0
  43. package/dist/elements/animated-number.js +118 -0
  44. package/dist/elements/approval-card.d.ts +40 -0
  45. package/dist/elements/approval-card.js +78 -0
  46. package/dist/elements/artifact-card.d.ts +30 -0
  47. package/dist/elements/artifact-card.js +58 -0
  48. package/dist/elements/background-inbox.d.ts +39 -0
  49. package/dist/elements/background-inbox.js +60 -0
  50. package/dist/elements/canvas-split.d.ts +77 -0
  51. package/dist/elements/canvas-split.js +138 -0
  52. package/dist/elements/chart.d.ts +41 -0
  53. package/dist/elements/chart.js +117 -0
  54. package/dist/elements/chat-panel.d.ts +46 -0
  55. package/dist/elements/chat-panel.js +104 -0
  56. package/dist/elements/checkpoint-history.d.ts +31 -0
  57. package/dist/elements/checkpoint-history.js +65 -0
  58. package/dist/elements/clamp.d.ts +90 -0
  59. package/dist/elements/clamp.js +109 -0
  60. package/dist/elements/code-diff.d.ts +42 -0
  61. package/dist/elements/code-diff.js +69 -0
  62. package/dist/elements/code-runner.d.ts +38 -0
  63. package/dist/elements/code-runner.js +84 -0
  64. package/dist/elements/command-palette.d.ts +48 -0
  65. package/dist/elements/command-palette.js +129 -0
  66. package/dist/elements/compaction-row.d.ts +63 -0
  67. package/dist/elements/compaction-row.js +110 -0
  68. package/dist/elements/comparison-card.d.ts +47 -0
  69. package/dist/elements/comparison-card.js +69 -0
  70. package/dist/elements/composer.d.ts +274 -0
  71. package/dist/elements/composer.js +505 -0
  72. package/dist/elements/computer-use.d.ts +40 -0
  73. package/dist/elements/computer-use.js +92 -0
  74. package/dist/elements/confidence-marker.d.ts +39 -0
  75. package/dist/elements/confidence-marker.js +64 -0
  76. package/dist/elements/connection-state.d.ts +29 -0
  77. package/dist/elements/connection-state.js +66 -0
  78. package/dist/elements/context-breakdown.d.ts +30 -0
  79. package/dist/elements/context-breakdown.js +86 -0
  80. package/dist/elements/context-usage.d.ts +99 -0
  81. package/dist/elements/context-usage.js +225 -0
  82. package/dist/elements/conversation-search.d.ts +48 -0
  83. package/dist/elements/conversation-search.js +88 -0
  84. package/dist/elements/cost-meter.d.ts +33 -0
  85. package/dist/elements/cost-meter.js +75 -0
  86. package/dist/elements/data-table.d.ts +31 -0
  87. package/dist/elements/data-table.js +67 -0
  88. package/dist/elements/day-separator.d.ts +34 -0
  89. package/dist/elements/day-separator.js +50 -0
  90. package/dist/elements/diagram.d.ts +34 -0
  91. package/dist/elements/diagram.js +75 -0
  92. package/dist/elements/document-reference.d.ts +37 -0
  93. package/dist/elements/document-reference.js +66 -0
  94. package/dist/elements/draft-restore.d.ts +27 -0
  95. package/dist/elements/draft-restore.js +54 -0
  96. package/dist/elements/edit-message.d.ts +36 -0
  97. package/dist/elements/edit-message.js +77 -0
  98. package/dist/elements/elements.css +459 -0
  99. package/dist/elements/elicitation-form.d.ts +48 -0
  100. package/dist/elements/elicitation-form.js +106 -0
  101. package/dist/elements/empty-state.d.ts +52 -0
  102. package/dist/elements/empty-state.js +98 -0
  103. package/dist/elements/end-of-turn-summary.d.ts +60 -0
  104. package/dist/elements/end-of-turn-summary.js +75 -0
  105. package/dist/elements/error-state.d.ts +29 -0
  106. package/dist/elements/error-state.js +55 -0
  107. package/dist/elements/feedback-dialog.d.ts +36 -0
  108. package/dist/elements/feedback-dialog.js +81 -0
  109. package/dist/elements/file-tree.d.ts +45 -0
  110. package/dist/elements/file-tree.js +84 -0
  111. package/dist/elements/flow-graph.d.ts +45 -0
  112. package/dist/elements/flow-graph.js +78 -0
  113. package/dist/elements/generative/chart.js +200 -0
  114. package/dist/elements/generative/faults.js +111 -0
  115. package/dist/elements/generative/icons.d.ts +41 -0
  116. package/dist/elements/generative/icons.js +190 -0
  117. package/dist/elements/generative/intrinsics.js +483 -0
  118. package/dist/elements/generative/spec.d.ts +110 -0
  119. package/dist/elements/generative/spec.js +366 -0
  120. package/dist/elements/generative.css +1145 -0
  121. package/dist/elements/generative.d.ts +144 -0
  122. package/dist/elements/generative.js +126 -0
  123. package/dist/elements/guardrail-notice.d.ts +29 -0
  124. package/dist/elements/guardrail-notice.js +63 -0
  125. package/dist/elements/image-generation.d.ts +18 -0
  126. package/dist/elements/image-generation.js +64 -0
  127. package/dist/elements/index.d.ts +116 -0
  128. package/dist/elements/index.js +115 -0
  129. package/dist/elements/inline-citation.d.ts +43 -0
  130. package/dist/elements/inline-citation.js +93 -0
  131. package/dist/elements/job-progress.d.ts +49 -0
  132. package/dist/elements/job-progress.js +74 -0
  133. package/dist/elements/launcher-bubble.d.ts +34 -0
  134. package/dist/elements/launcher-bubble.js +72 -0
  135. package/dist/elements/live-region-announcer.d.ts +130 -0
  136. package/dist/elements/live-region-announcer.js +230 -0
  137. package/dist/elements/loading-state.d.ts +27 -0
  138. package/dist/elements/loading-state.js +36 -0
  139. package/dist/elements/map-answer.d.ts +38 -0
  140. package/dist/elements/map-answer.js +93 -0
  141. package/dist/elements/markdown.d.ts +131 -0
  142. package/dist/elements/markdown.js +528 -0
  143. package/dist/elements/math-block.d.ts +51 -0
  144. package/dist/elements/math-block.js +70 -0
  145. package/dist/elements/mcp-server-panel.d.ts +41 -0
  146. package/dist/elements/mcp-server-panel.js +115 -0
  147. package/dist/elements/memory-chips.d.ts +30 -0
  148. package/dist/elements/memory-chips.js +43 -0
  149. package/dist/elements/message-actions.d.ts +38 -0
  150. package/dist/elements/message-actions.js +71 -0
  151. package/dist/elements/message-attachment.d.ts +48 -0
  152. package/dist/elements/message-attachment.js +63 -0
  153. package/dist/elements/message-branches.d.ts +25 -0
  154. package/dist/elements/message-branches.js +65 -0
  155. package/dist/elements/message-pair.d.ts +33 -0
  156. package/dist/elements/message-pair.js +65 -0
  157. package/dist/elements/message-queue.d.ts +31 -0
  158. package/dist/elements/message-queue.js +80 -0
  159. package/dist/elements/message-timing.d.ts +33 -0
  160. package/dist/elements/message-timing.js +37 -0
  161. package/dist/elements/mobile-composer.d.ts +44 -0
  162. package/dist/elements/mobile-composer.js +88 -0
  163. package/dist/elements/model-picker.d.ts +38 -0
  164. package/dist/elements/model-picker.js +69 -0
  165. package/dist/elements/number-ticker.d.ts +18 -0
  166. package/dist/elements/number-ticker.js +47 -0
  167. package/dist/elements/onboarding.d.ts +30 -0
  168. package/dist/elements/onboarding.js +75 -0
  169. package/dist/elements/permission-grant.d.ts +35 -0
  170. package/dist/elements/permission-grant.js +86 -0
  171. package/dist/elements/permission-scopes.d.ts +215 -0
  172. package/dist/elements/permission-scopes.js +249 -0
  173. package/dist/elements/prompt-library.d.ts +43 -0
  174. package/dist/elements/prompt-library.js +117 -0
  175. package/dist/elements/queue-dock.d.ts +101 -0
  176. package/dist/elements/queue-dock.js +132 -0
  177. package/dist/elements/quota-banner.d.ts +26 -0
  178. package/dist/elements/quota-banner.js +66 -0
  179. package/dist/elements/quote-reply.d.ts +44 -0
  180. package/dist/elements/quote-reply.js +79 -0
  181. package/dist/elements/range.d.ts +29 -0
  182. package/dist/elements/range.js +45 -0
  183. package/dist/elements/read-aloud.d.ts +45 -0
  184. package/dist/elements/read-aloud.js +75 -0
  185. package/dist/elements/reasoning-effort.d.ts +36 -0
  186. package/dist/elements/reasoning-effort.js +67 -0
  187. package/dist/elements/reasoning-panel.d.ts +46 -0
  188. package/dist/elements/reasoning-panel.js +75 -0
  189. package/dist/elements/recommendation-card.d.ts +45 -0
  190. package/dist/elements/recommendation-card.js +83 -0
  191. package/dist/elements/regenerate-menu.d.ts +45 -0
  192. package/dist/elements/regenerate-menu.js +51 -0
  193. package/dist/elements/replay.d.ts +217 -0
  194. package/dist/elements/replay.js +498 -0
  195. package/dist/elements/research-report.d.ts +38 -0
  196. package/dist/elements/research-report.js +69 -0
  197. package/dist/elements/retrieval-chunks.d.ts +43 -0
  198. package/dist/elements/retrieval-chunks.js +81 -0
  199. package/dist/elements/revert-dock.d.ts +159 -0
  200. package/dist/elements/revert-dock.js +327 -0
  201. package/dist/elements/reviewable-diff.d.ts +45 -0
  202. package/dist/elements/reviewable-diff.js +110 -0
  203. package/dist/elements/risk-badge.d.ts +52 -0
  204. package/dist/elements/risk-badge.js +91 -0
  205. package/dist/elements/schedule-card.d.ts +42 -0
  206. package/dist/elements/schedule-card.js +90 -0
  207. package/dist/elements/score-breakdown.d.ts +47 -0
  208. package/dist/elements/score-breakdown.js +82 -0
  209. package/dist/elements/scroll-anchor.d.ts +32 -0
  210. package/dist/elements/scroll-anchor.js +121 -0
  211. package/dist/elements/settings-panel.d.ts +52 -0
  212. package/dist/elements/settings-panel.js +107 -0
  213. package/dist/elements/shared-conversation.d.ts +39 -0
  214. package/dist/elements/shared-conversation.js +68 -0
  215. package/dist/elements/sources.d.ts +33 -0
  216. package/dist/elements/sources.js +61 -0
  217. package/dist/elements/speaker-identity.d.ts +32 -0
  218. package/dist/elements/speaker-identity.js +51 -0
  219. package/dist/elements/spec-sheet.d.ts +31 -0
  220. package/dist/elements/spec-sheet.js +45 -0
  221. package/dist/elements/stopped-run.d.ts +22 -0
  222. package/dist/elements/stopped-run.js +50 -0
  223. package/dist/elements/streaming-text.d.ts +31 -0
  224. package/dist/elements/streaming-text.js +45 -0
  225. package/dist/elements/subagent-list.d.ts +37 -0
  226. package/dist/elements/subagent-list.js +79 -0
  227. package/dist/elements/suggestions.d.ts +30 -0
  228. package/dist/elements/suggestions.js +36 -0
  229. package/dist/elements/surfaces.d.ts +85 -0
  230. package/dist/elements/surfaces.js +107 -0
  231. package/dist/elements/tail-status.d.ts +131 -0
  232. package/dist/elements/tail-status.js +94 -0
  233. package/dist/elements/terminal-block.d.ts +29 -0
  234. package/dist/elements/terminal-block.js +54 -0
  235. package/dist/elements/thinking-indicator.d.ts +18 -0
  236. package/dist/elements/thinking-indicator.js +36 -0
  237. package/dist/elements/thread-list.d.ts +35 -0
  238. package/dist/elements/thread-list.js +68 -0
  239. package/dist/elements/thread-search.d.ts +42 -0
  240. package/dist/elements/thread-search.js +99 -0
  241. package/dist/elements/timeline.d.ts +37 -0
  242. package/dist/elements/timeline.js +46 -0
  243. package/dist/elements/todo-list.d.ts +42 -0
  244. package/dist/elements/todo-list.js +59 -0
  245. package/dist/elements/tool-call.d.ts +41 -0
  246. package/dist/elements/tool-call.js +85 -0
  247. package/dist/elements/tool-error.d.ts +39 -0
  248. package/dist/elements/tool-error.js +76 -0
  249. package/dist/elements/tool-group.d.ts +45 -0
  250. package/dist/elements/tool-group.js +71 -0
  251. package/dist/elements/tool-timeline.d.ts +65 -0
  252. package/dist/elements/tool-timeline.js +88 -0
  253. package/dist/elements/trace-waterfall.d.ts +37 -0
  254. package/dist/elements/trace-waterfall.js +69 -0
  255. package/dist/elements/transcript-rules.d.ts +67 -0
  256. package/dist/elements/transcript-rules.js +95 -0
  257. package/dist/elements/turn-footer.d.ts +74 -0
  258. package/dist/elements/turn-footer.js +101 -0
  259. package/dist/elements/typing-indicator.d.ts +16 -0
  260. package/dist/elements/typing-indicator.js +51 -0
  261. package/dist/elements/verdict-row.d.ts +89 -0
  262. package/dist/elements/verdict-row.js +150 -0
  263. package/dist/elements/vocabulary.d.ts +612 -0
  264. package/dist/elements/vocabulary.js +611 -0
  265. package/dist/elements/voice-conversation.d.ts +49 -0
  266. package/dist/elements/voice-conversation.js +123 -0
  267. package/dist/elements/web-preview.d.ts +32 -0
  268. package/dist/elements/web-preview.js +66 -0
  269. package/dist/elements/web-search.d.ts +37 -0
  270. package/dist/elements/web-search.js +66 -0
  271. package/dist/elements/work-collapse.d.ts +103 -0
  272. package/dist/elements/work-collapse.js +131 -0
  273. package/dist/icons/containers.d.ts +89 -0
  274. package/dist/icons/containers.js +295 -0
  275. package/dist/icons/index.d.ts +2 -0
  276. package/dist/index.d.ts +9 -7
  277. package/dist/index.js +3 -2
  278. package/dist/instruments/index.d.ts +2 -2
  279. package/dist/instruments/index.js +2 -2
  280. package/dist/instruments/table.d.ts +14 -1
  281. package/dist/instruments/table.js +20 -1
  282. package/dist/instruments/two-step-button.js +25 -6
  283. package/dist/layout/sidebar.d.ts +19 -1
  284. package/dist/layout/sidebar.js +19 -1
  285. package/dist/primitives/button.js +11 -1
  286. package/dist/primitives/chip.d.ts +34 -8
  287. package/dist/primitives/chip.js +97 -11
  288. package/dist/styles.css +11 -1
  289. package/dist/system/agent-skin.d.ts +27 -0
  290. package/dist/system/agent-skin.js +20 -0
  291. package/dist/system/index.d.ts +3 -3
  292. package/dist/system/portal.d.ts +5 -3
  293. package/dist/system/portal.js +36 -8
  294. package/dist/system/prepaint.d.ts +20 -2
  295. package/dist/system/prepaint.js +39 -33
  296. package/dist/system/theme-provider.d.ts +13 -2
  297. package/dist/system/theme-provider.js +107 -26
  298. package/dist/system/use-density.d.ts +9 -0
  299. package/dist/system/use-density.js +9 -0
  300. package/dist/system/use-isomorphic-layout-effect.js +19 -1
  301. package/dist/theming/_presets.d.ts +1 -1
  302. package/dist/theming/_presets.js +124 -8
  303. package/dist/theming/contrast.d.ts +16 -4
  304. package/dist/theming/contrast.js +33 -6
  305. package/dist/theming/create-theme.d.ts +8 -4
  306. package/dist/theming/create-theme.js +56 -20
  307. package/dist/theming/serialize.d.ts +11 -2
  308. package/dist/theming/serialize.js +87 -9
  309. package/manifest/components/accordion.json +154 -0
  310. package/manifest/components/activity-graph.json +88 -0
  311. package/manifest/components/agent-card.json +120 -0
  312. package/manifest/components/agent-handoff.json +87 -0
  313. package/manifest/components/agent-mode-badge.json +84 -0
  314. package/manifest/components/agent-pile.json +116 -0
  315. package/manifest/components/agent-plan.json +67 -0
  316. package/manifest/components/agent-status.json +73 -0
  317. package/manifest/components/agent-surface.json +78 -0
  318. package/manifest/components/alert-dialog.json +190 -0
  319. package/manifest/components/animated-number.json +67 -0
  320. package/manifest/components/app-bar.json +244 -0
  321. package/manifest/components/app-shell.json +383 -0
  322. package/manifest/components/app-window-frame.json +102 -0
  323. package/manifest/components/approval-card.json +106 -0
  324. package/manifest/components/artifact-card.json +81 -0
  325. package/manifest/components/ask-box.json +209 -0
  326. package/manifest/components/audience-icon.json +52 -0
  327. package/manifest/components/autocomplete.json +197 -0
  328. package/manifest/components/avatar-group.json +72 -0
  329. package/manifest/components/avatar.json +95 -0
  330. package/manifest/components/background-inbox.json +71 -0
  331. package/manifest/components/branch-picker.json +124 -0
  332. package/manifest/components/breadcrumb.json +74 -0
  333. package/manifest/components/button-group.json +74 -0
  334. package/manifest/components/button.json +126 -0
  335. package/manifest/components/calendar.json +65 -0
  336. package/manifest/components/canvas-split-body.json +62 -0
  337. package/manifest/components/canvas-split-document.json +54 -0
  338. package/manifest/components/canvas-split-header.json +83 -0
  339. package/manifest/components/canvas-split-line.json +62 -0
  340. package/manifest/components/canvas-split-message.json +62 -0
  341. package/manifest/components/canvas-split-thread.json +54 -0
  342. package/manifest/components/canvas-split.json +60 -0
  343. package/manifest/components/card.json +140 -0
  344. package/manifest/components/carousel.json +200 -0
  345. package/manifest/components/catalogue-icon.json +52 -0
  346. package/manifest/components/channel-beta-icon.json +52 -0
  347. package/manifest/components/channel-matrix.json +173 -0
  348. package/manifest/components/channel-released-icon.json +52 -0
  349. package/manifest/components/chart-container.json +111 -0
  350. package/manifest/components/chart-ramp.json +72 -0
  351. package/manifest/components/chart-swatch.json +65 -0
  352. package/manifest/components/chart-tooltip-content.json +114 -0
  353. package/manifest/components/chart.json +93 -0
  354. package/manifest/components/chat-empty-state.json +55 -0
  355. package/manifest/components/chat-panel-assistant-message.json +51 -0
  356. package/manifest/components/chat-panel-composer.json +66 -0
  357. package/manifest/components/chat-panel-messages.json +51 -0
  358. package/manifest/components/chat-panel-typing.json +51 -0
  359. package/manifest/components/chat-panel-user-message.json +51 -0
  360. package/manifest/components/chat-panel.json +57 -0
  361. package/manifest/components/checkbox-group.json +68 -0
  362. package/manifest/components/checkbox.json +93 -0
  363. package/manifest/components/checkpoint-history.json +80 -0
  364. package/manifest/components/chip.json +144 -0
  365. package/manifest/components/clamp.json +102 -0
  366. package/manifest/components/cli-tool-icon.json +52 -0
  367. package/manifest/components/code-diff.json +87 -0
  368. package/manifest/components/code-runner.json +97 -0
  369. package/manifest/components/collapsible.json +120 -0
  370. package/manifest/components/color-area.json +59 -0
  371. package/manifest/components/color-field.json +79 -0
  372. package/manifest/components/color-picker.json +175 -0
  373. package/manifest/components/color-slider.json +75 -0
  374. package/manifest/components/color-swatch.json +68 -0
  375. package/manifest/components/colors-section.json +66 -0
  376. package/manifest/components/combobox.json +198 -0
  377. package/manifest/components/command-palette.json +177 -0
  378. package/manifest/components/compaction-row.json +100 -0
  379. package/manifest/components/comparison-card.json +83 -0
  380. package/manifest/components/composer-actions.json +65 -0
  381. package/manifest/components/composer-attach-button.json +65 -0
  382. package/manifest/components/composer-attachment-chip.json +75 -0
  383. package/manifest/components/composer-attachments.json +60 -0
  384. package/manifest/components/composer-bar.json +73 -0
  385. package/manifest/components/composer-command-item.json +79 -0
  386. package/manifest/components/composer-context.json +67 -0
  387. package/manifest/components/composer-input.json +73 -0
  388. package/manifest/components/composer-menu-item.json +72 -0
  389. package/manifest/components/composer-menu.json +79 -0
  390. package/manifest/components/composer-model-item.json +75 -0
  391. package/manifest/components/composer-model-trigger.json +75 -0
  392. package/manifest/components/composer-person-item.json +79 -0
  393. package/manifest/components/composer-send.json +80 -0
  394. package/manifest/components/composer-toolbar.json +65 -0
  395. package/manifest/components/composer-voice-button.json +68 -0
  396. package/manifest/components/composer-voice.json +75 -0
  397. package/manifest/components/composer.json +176 -0
  398. package/manifest/components/computer-use.json +84 -0
  399. package/manifest/components/confidence-marker.json +74 -0
  400. package/manifest/components/connection-state.json +84 -0
  401. package/manifest/components/container.json +60 -0
  402. package/manifest/components/context-breakdown.json +65 -0
  403. package/manifest/components/context-menu.json +121 -0
  404. package/manifest/components/context-usage.json +85 -0
  405. package/manifest/components/conversation-search.json +92 -0
  406. package/manifest/components/copy-button.json +93 -0
  407. package/manifest/components/cost-meter.json +74 -0
  408. package/manifest/components/cue-logotype.json +96 -0
  409. package/manifest/components/cue-mark.json +97 -0
  410. package/manifest/components/cue-portal-frame.json +55 -0
  411. package/manifest/components/data-table-pagination.json +83 -0
  412. package/manifest/components/data-table-toolbar.json +104 -0
  413. package/manifest/components/date-field.json +80 -0
  414. package/manifest/components/date-picker.json +191 -0
  415. package/manifest/components/date-range-picker.json +191 -0
  416. package/manifest/components/day-separator.json +58 -0
  417. package/manifest/components/delegation-card.json +144 -0
  418. package/manifest/components/density.json +58 -0
  419. package/manifest/components/description-list.json +84 -0
  420. package/manifest/components/diagram.json +100 -0
  421. package/manifest/components/dialog.json +198 -0
  422. package/manifest/components/disclosure.json +109 -0
  423. package/manifest/components/dmx-bar.json +94 -0
  424. package/manifest/components/dmx-strip.json +101 -0
  425. package/manifest/components/document-reference.json +90 -0
  426. package/manifest/components/draft-restore.json +82 -0
  427. package/manifest/components/drawer.json +179 -0
  428. package/manifest/components/dropdown-menu.json +229 -0
  429. package/manifest/components/edit-message.json +105 -0
  430. package/manifest/components/elements-command-palette.json +100 -0
  431. package/manifest/components/elements-composer.json +71 -0
  432. package/manifest/components/elements-data-table.json +68 -0
  433. package/manifest/components/elements-timeline.json +69 -0
  434. package/manifest/components/elicitation-form.json +103 -0
  435. package/manifest/components/empty-state-composer.json +64 -0
  436. package/manifest/components/empty-state-greeting.json +49 -0
  437. package/manifest/components/empty-state-suggestion.json +57 -0
  438. package/manifest/components/empty-state-suggestions.json +49 -0
  439. package/manifest/components/empty-state.json +90 -0
  440. package/manifest/components/end-of-turn-summary.json +77 -0
  441. package/manifest/components/env-var-input.json +150 -0
  442. package/manifest/components/error-state.json +80 -0
  443. package/manifest/components/export-dialog.json +84 -0
  444. package/manifest/components/eyebrow.json +56 -0
  445. package/manifest/components/feedback-dialog.json +107 -0
  446. package/manifest/components/field-description.json +63 -0
  447. package/manifest/components/field-error.json +77 -0
  448. package/manifest/components/field-label.json +63 -0
  449. package/manifest/components/field.json +79 -0
  450. package/manifest/components/file-tree.json +83 -0
  451. package/manifest/components/file-upload.json +159 -0
  452. package/manifest/components/flow-background.json +50 -0
  453. package/manifest/components/flow-controls.json +50 -0
  454. package/manifest/components/flow-graph.json +75 -0
  455. package/manifest/components/folder-icon.json +52 -0
  456. package/manifest/components/footer.json +112 -0
  457. package/manifest/components/frac.json +59 -0
  458. package/manifest/components/generation-loader.json +64 -0
  459. package/manifest/components/generative-ui.json +93 -0
  460. package/manifest/components/grid.json +81 -0
  461. package/manifest/components/group-bar.json +102 -0
  462. package/manifest/components/guardrail-notice.json +91 -0
  463. package/manifest/components/hover-card.json +151 -0
  464. package/manifest/components/icon-button.json +88 -0
  465. package/manifest/components/image-generation.json +67 -0
  466. package/manifest/components/info-tip.json +98 -0
  467. package/manifest/components/inline-citation.json +77 -0
  468. package/manifest/components/input-group.json +91 -0
  469. package/manifest/components/input.json +89 -0
  470. package/manifest/components/item.json +129 -0
  471. package/manifest/components/job-progress.json +96 -0
  472. package/manifest/components/kbd.json +52 -0
  473. package/manifest/components/launcher-bubble.json +105 -0
  474. package/manifest/components/link.json +81 -0
  475. package/manifest/components/live-region-announcer.json +79 -0
  476. package/manifest/components/log-viewer.json +139 -0
  477. package/manifest/components/map-answer.json +83 -0
  478. package/manifest/components/markdown-text.json +94 -0
  479. package/manifest/components/math-block.json +74 -0
  480. package/manifest/components/mcp-server-icon.json +52 -0
  481. package/manifest/components/mcp-server-panel.json +87 -0
  482. package/manifest/components/memory-chips.json +65 -0
  483. package/manifest/components/menubar.json +157 -0
  484. package/manifest/components/message-actions.json +99 -0
  485. package/manifest/components/message-attachments.json +63 -0
  486. package/manifest/components/message-branches.json +71 -0
  487. package/manifest/components/message-list.json +100 -0
  488. package/manifest/components/message-pair.json +86 -0
  489. package/manifest/components/message-queue.json +74 -0
  490. package/manifest/components/message-timing.json +62 -0
  491. package/manifest/components/message.json +116 -0
  492. package/manifest/components/meter.json +114 -0
  493. package/manifest/components/mobile-composer.json +126 -0
  494. package/manifest/components/model-picker.json +76 -0
  495. package/manifest/components/multi-select.json +190 -0
  496. package/manifest/components/musical-time-input.json +113 -0
  497. package/manifest/components/navigation-menu.json +226 -0
  498. package/manifest/components/node-card.json +109 -0
  499. package/manifest/components/node-handle.json +69 -0
  500. package/manifest/components/number-field.json +107 -0
  501. package/manifest/components/number-ticker.json +61 -0
  502. package/manifest/components/onboarding.json +84 -0
  503. package/manifest/components/otp-field.json +128 -0
  504. package/manifest/components/page-shell.json +96 -0
  505. package/manifest/components/pagination.json +92 -0
  506. package/manifest/components/panel-header.json +77 -0
  507. package/manifest/components/panel.json +71 -0
  508. package/manifest/components/password-input.json +119 -0
  509. package/manifest/components/permission-grant.json +92 -0
  510. package/manifest/components/permission-scopes.json +139 -0
  511. package/manifest/components/piano-keyboard.json +120 -0
  512. package/manifest/components/plussie.json +111 -0
  513. package/manifest/components/popover.json +193 -0
  514. package/manifest/components/preset-section.json +73 -0
  515. package/manifest/components/progress.json +95 -0
  516. package/manifest/components/prompt-library.json +99 -0
  517. package/manifest/components/queue-dock.json +110 -0
  518. package/manifest/components/quota-banner.json +94 -0
  519. package/manifest/components/quote-reply.json +105 -0
  520. package/manifest/components/radio-group.json +73 -0
  521. package/manifest/components/radio.json +80 -0
  522. package/manifest/components/rating.json +141 -0
  523. package/manifest/components/read-aloud.json +111 -0
  524. package/manifest/components/reasoning-effort.json +81 -0
  525. package/manifest/components/reasoning-panel.json +108 -0
  526. package/manifest/components/recommendation-card.json +107 -0
  527. package/manifest/components/regenerate-menu.json +89 -0
  528. package/manifest/components/replay-player.json +102 -0
  529. package/manifest/components/research-report.json +76 -0
  530. package/manifest/components/resizable.json +88 -0
  531. package/manifest/components/retrieval-chunks.json +84 -0
  532. package/manifest/components/revert-dock.json +150 -0
  533. package/manifest/components/reviewable-diff.json +93 -0
  534. package/manifest/components/risk-badge.json +74 -0
  535. package/manifest/components/row.json +109 -0
  536. package/manifest/components/schedule-card.json +101 -0
  537. package/manifest/components/score-breakdown.json +91 -0
  538. package/manifest/components/scroll-anchor.json +72 -0
  539. package/manifest/components/scroll-area.json +91 -0
  540. package/manifest/components/scrollable-tabs-list.json +83 -0
  541. package/manifest/components/scrub-input.json +200 -0
  542. package/manifest/components/seam-cell.json +75 -0
  543. package/manifest/components/seam-grid.json +75 -0
  544. package/manifest/components/seam-list.json +56 -0
  545. package/manifest/components/search-input.json +134 -0
  546. package/manifest/components/section-header.json +112 -0
  547. package/manifest/components/segmented-control.json +138 -0
  548. package/manifest/components/select.json +194 -0
  549. package/manifest/components/separator.json +53 -0
  550. package/manifest/components/settings-panel.json +118 -0
  551. package/manifest/components/shape-section.json +66 -0
  552. package/manifest/components/shared-conversation.json +89 -0
  553. package/manifest/components/sheet.json +186 -0
  554. package/manifest/components/shimmer-label.json +59 -0
  555. package/manifest/components/sidebar.json +198 -0
  556. package/manifest/components/signal-edge.json +56 -0
  557. package/manifest/components/skeleton.json +46 -0
  558. package/manifest/components/skill-icon.json +52 -0
  559. package/manifest/components/slider.json +89 -0
  560. package/manifest/components/sources.json +83 -0
  561. package/manifest/components/sparkline.json +76 -0
  562. package/manifest/components/speaker-identity.json +61 -0
  563. package/manifest/components/spec-sheet.json +80 -0
  564. package/manifest/components/spectrum-visualizer.json +115 -0
  565. package/manifest/components/spinner.json +61 -0
  566. package/manifest/components/stack-icon.json +52 -0
  567. package/manifest/components/stack.json +96 -0
  568. package/manifest/components/stacks-matrix-icon.json +52 -0
  569. package/manifest/components/stat.json +87 -0
  570. package/manifest/components/status-bar.json +58 -0
  571. package/manifest/components/status-dot.json +78 -0
  572. package/manifest/components/stepper.json +89 -0
  573. package/manifest/components/stopped-run.json +81 -0
  574. package/manifest/components/streaming-text.json +71 -0
  575. package/manifest/components/sub.json +44 -0
  576. package/manifest/components/subagent-list.json +88 -0
  577. package/manifest/components/suggestions.json +84 -0
  578. package/manifest/components/sup.json +44 -0
  579. package/manifest/components/swap-label.json +71 -0
  580. package/manifest/components/switch.json +87 -0
  581. package/manifest/components/table-scroll-region.json +69 -0
  582. package/manifest/components/table.json +155 -0
  583. package/manifest/components/tabs.json +145 -0
  584. package/manifest/components/tags-input.json +190 -0
  585. package/manifest/components/tail-status.json +109 -0
  586. package/manifest/components/terminal-block.json +91 -0
  587. package/manifest/components/terminal-frame.json +119 -0
  588. package/manifest/components/textarea.json +76 -0
  589. package/manifest/components/theme-configurator.json +124 -0
  590. package/manifest/components/theme-provider.json +134 -0
  591. package/manifest/components/thinking-indicator.json +63 -0
  592. package/manifest/components/thread-list.json +76 -0
  593. package/manifest/components/thread-search.json +90 -0
  594. package/manifest/components/threshold-rail.json +160 -0
  595. package/manifest/components/time-boundary.json +62 -0
  596. package/manifest/components/time-field.json +80 -0
  597. package/manifest/components/timeline-ruler.json +139 -0
  598. package/manifest/components/timeline.json +115 -0
  599. package/manifest/components/title-bar.json +82 -0
  600. package/manifest/components/toast.json +130 -0
  601. package/manifest/components/todo-list.json +69 -0
  602. package/manifest/components/toggle-group.json +106 -0
  603. package/manifest/components/toggle.json +109 -0
  604. package/manifest/components/token-editor.json +90 -0
  605. package/manifest/components/tool-call-card.json +200 -0
  606. package/manifest/components/tool-call.json +119 -0
  607. package/manifest/components/tool-error.json +114 -0
  608. package/manifest/components/tool-group.json +83 -0
  609. package/manifest/components/tool-timeline.json +119 -0
  610. package/manifest/components/toolbar.json +163 -0
  611. package/manifest/components/tooltip.json +164 -0
  612. package/manifest/components/trace-waterfall.json +74 -0
  613. package/manifest/components/tree-visibility-toggle.json +84 -0
  614. package/manifest/components/tree.json +140 -0
  615. package/manifest/components/turn-footer.json +105 -0
  616. package/manifest/components/two-step-button.json +113 -0
  617. package/manifest/components/typing-indicator.json +53 -0
  618. package/manifest/components/universe-grid.json +127 -0
  619. package/manifest/components/unread-divider.json +55 -0
  620. package/manifest/components/usage-chart.json +124 -0
  621. package/manifest/components/verdict-row.json +91 -0
  622. package/manifest/components/voice-conversation.json +109 -0
  623. package/manifest/components/web-preview.json +87 -0
  624. package/manifest/components/web-search.json +92 -0
  625. package/manifest/components/work-collapse.json +102 -0
  626. package/manifest/manifest.json +4779 -0
  627. package/manifest/tokens.json +159 -0
  628. package/package.json +54 -5
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "SwapLabel",
3
+ "slug": "swap-label",
4
+ "group": "elements",
5
+ "importPath": "@cueplusplus/ui/elements",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "Two labels stacked in one cell, with the box's width animating between them.\n\nA `ResizeObserver` measures the layer that is showing, because the crossfade\nis only half the effect — a \"Searching…\" that becomes \"Searched\" has to make\nthe row shrink, and neither layer can size the box while both are in it.\n\nThe layer that is leaving is `aria-hidden`, so the outgoing text is neither\nannounced nor copied into a selection.",
9
+ "props": [
10
+ {
11
+ "name": "active",
12
+ "type": "0 | 1",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "Which of the two children is showing."
16
+ },
17
+ {
18
+ "name": "children",
19
+ "type": "[ReactNode, ReactNode]",
20
+ "required": true,
21
+ "defaultValue": null,
22
+ "description": "Exactly two labels: the resting one and the active one."
23
+ },
24
+ {
25
+ "name": "className",
26
+ "type": "string",
27
+ "required": false,
28
+ "defaultValue": null,
29
+ "description": "Extra classes for the measured box."
30
+ }
31
+ ],
32
+ "typeReferences": [],
33
+ "subcomponents": [],
34
+ "parts": [],
35
+ "variants": {},
36
+ "defaultVariants": {},
37
+ "tokensUsed": [
38
+ "--cue-accent",
39
+ "--cue-accent-fg",
40
+ "--cue-accent-hover",
41
+ "--cue-border",
42
+ "--cue-border-overlay",
43
+ "--cue-fg",
44
+ "--cue-fg-muted",
45
+ "--cue-font-mono",
46
+ "--cue-stream",
47
+ "--cue-sunken",
48
+ "--cue-surface-1",
49
+ "--cue-surface-2",
50
+ "--cue-text-label"
51
+ ],
52
+ "summary": "Two labels stacked in one cell, with the box's width animating between them.",
53
+ "examples": [],
54
+ "status": "todo-docs",
55
+ "url": "/docs/components/swap-label",
56
+ "mdUrl": "/docs/components/swap-label.md",
57
+ "jsonUrl": "/r/components/swap-label.json",
58
+ "specimens": [
59
+ {
60
+ "title": "SwapLabel",
61
+ "group": "elements",
62
+ "components": [
63
+ "SwapLabel"
64
+ ],
65
+ "code": "<Specimens>\n <Specimen label={swapped === 0 ? \"active 0\" : \"active 1\"}>\n <span className=\"flex items-center gap-(--cue-space-3)\">\n <SwapLabel active={swapped}>\n <ShimmerLabel className=\"relative inline-block leading-none\">\n Patching universe 3\n </ShimmerLabel>\n <>Patched</>\n </SwapLabel>\n <Button size=\"sm\" onClick={() => setSwapped((current) => (current === 0 ? 1 : 0))}>\n Swap\n </Button>\n </span>\n </Specimen>\n</Specimens>",
66
+ "note": "Two labels in one cell, crossfading, with the box measuring itself to whichever is showing. The width is half the effect: 'Patching universe 3' becoming 'Patched' has to make the row shrink, and the outgoing layer is aria-hidden so it is neither announced nor copied.",
67
+ "interaction": "swap it and watch the box, not the text. Everything after the label on that row moves with it."
68
+ }
69
+ ],
70
+ "todo": true
71
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "Switch",
3
+ "slug": "switch",
4
+ "group": "forms",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "A binary on/off control — `role=\"switch\"`, not a checkbox.\n\nThe distinction matters to assistive tech: a switch takes effect immediately,\na checkbox is a value you submit later. Use this for \"live\" state (blackout,\nmute, follow) and {@link Checkbox } for form values.\n\nShips in three sizes down to a 22×12 track, because a dense console cannot\nspare the height a stock switch demands. The thumb slides on a transform and\nstills entirely under `prefers-reduced-motion`.",
9
+ "props": [
10
+ {
11
+ "name": "label",
12
+ "type": "ReactNode",
13
+ "required": false,
14
+ "defaultValue": null,
15
+ "description": "Inline label rendered beside the track and wrapped with it in a `<label>`,\nso the text is both the accessible name and part of the hit target."
16
+ },
17
+ {
18
+ "name": "className",
19
+ "type": "string",
20
+ "required": false,
21
+ "defaultValue": null,
22
+ "description": "Extra classes, merged over the track defaults."
23
+ },
24
+ {
25
+ "name": "size",
26
+ "type": "\"sm\" | \"md\" | \"lg\"",
27
+ "required": false,
28
+ "defaultValue": "md",
29
+ "description": "Track size. Defaults to `\"md\"` (28×14). `sm` exists because a console packs\nswitches into 20px rows where a stock 44px switch simply does not fit."
30
+ }
31
+ ],
32
+ "typeReferences": [
33
+ "Omit<BaseSwitch.Root.Props, \"className\">"
34
+ ],
35
+ "subcomponents": [],
36
+ "parts": [],
37
+ "variants": {},
38
+ "defaultVariants": {},
39
+ "tokensUsed": [
40
+ "--cue-accent",
41
+ "--cue-accent-fg",
42
+ "--cue-border",
43
+ "--cue-border-strong",
44
+ "--cue-danger",
45
+ "--cue-fg-muted",
46
+ "--cue-font-mono",
47
+ "--cue-space-3",
48
+ "--cue-surface-3",
49
+ "--cue-text-ui"
50
+ ],
51
+ "summary": "A binary control that takes effect the moment it moves.",
52
+ "examples": [
53
+ {
54
+ "title": "Usage",
55
+ "code": "<Switch label=\"Blackout\" checked={blackout} onCheckedChange={setBlackout} />\n<Switch aria-label=\"Mute channel\" size=\"sm\" />",
56
+ "language": "tsx"
57
+ }
58
+ ],
59
+ "status": "stable",
60
+ "url": "/docs/components/switch",
61
+ "mdUrl": "/docs/components/switch.md",
62
+ "jsonUrl": "/r/components/switch.json",
63
+ "whenToUse": [
64
+ "Live state: blackout, mute, follow, a feature flag that applies at once.",
65
+ "Dense rows. The `sm` track is 22x12, which fits a status bar without crowding it."
66
+ ],
67
+ "whenNotToUse": [
68
+ "A value a form submits later. Use `Checkbox`, which is what assistive tech expects there.",
69
+ "One choice out of several. Use `RadioGroup` or `SegmentedControl`."
70
+ ],
71
+ "commonMistakes": [
72
+ "Putting a Save button next to it. A switch has already taken effect.",
73
+ "Shipping it with no label and no `aria-label`, which leaves an unnamed toggle."
74
+ ],
75
+ "specimens": [
76
+ {
77
+ "title": "Switch",
78
+ "group": "forms",
79
+ "components": [
80
+ "Switch"
81
+ ],
82
+ "code": "<Specimens>\n {([\"sm\", \"md\", \"lg\"] as const).map((size) => (\n <Specimen key={size} label={size}>\n <Switch size={size} label=\"Blackout\" defaultChecked />\n </Specimen>\n ))}\n <Specimen label=\"off\">\n <Switch label=\"Follow\" />\n </Specimen>\n <Specimen label=\"disabled\">\n <Switch label=\"Locked\" disabled defaultChecked />\n </Specimen>\n <Specimen label=\"no label\">\n <Switch aria-label=\"Highlight\" />\n </Specimen>\n</Specimens>",
83
+ "note": "Three sizes, because a console row cannot afford the marketing-page switch.",
84
+ "interaction": "the whole label is the hit target; Space toggles."
85
+ }
86
+ ]
87
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "TableScrollRegion",
3
+ "slug": "table-scroll-region",
4
+ "group": "instruments",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": false,
8
+ "description": "A named horizontal viewport for a table wider than its container.\n\nThe region is independently keyboard-focusable so keyboard users can reach\nnative horizontal scrolling. It adds no table semantics of its own; place a\ncompound {@link Table} inside it and keep the table's caption.",
9
+ "props": [
10
+ {
11
+ "name": "aria-label",
12
+ "type": "string",
13
+ "required": true,
14
+ "defaultValue": null,
15
+ "description": "Accessible name announced for the keyboard-focusable scrolling region."
16
+ }
17
+ ],
18
+ "typeReferences": [
19
+ "Omit<React.ComponentPropsWithoutRef<\"div\">, \"aria-label\" | \"role\" | \"tabIndex\">"
20
+ ],
21
+ "subcomponents": [],
22
+ "parts": [],
23
+ "variants": {},
24
+ "defaultVariants": {},
25
+ "tokensUsed": [
26
+ "--cue-accent",
27
+ "--cue-border",
28
+ "--cue-fg",
29
+ "--cue-fg-subtle",
30
+ "--cue-font-mono",
31
+ "--cue-pad-row-x",
32
+ "--cue-pad-row-y",
33
+ "--cue-space-3",
34
+ "--cue-surface-1",
35
+ "--cue-text-label",
36
+ "--cue-text-ui"
37
+ ],
38
+ "summary": "A named keyboard-focusable horizontal viewport for wide semantic tables.",
39
+ "examples": [],
40
+ "status": "stable",
41
+ "url": "/docs/components/table-scroll-region",
42
+ "mdUrl": "/docs/components/table-scroll-region.md",
43
+ "jsonUrl": "/r/components/table-scroll-region.json",
44
+ "whenToUse": [
45
+ "A semantic table can be wider than its panel or mobile viewport.",
46
+ "Keyboard users need a reachable region for native horizontal scrolling."
47
+ ],
48
+ "whenNotToUse": [
49
+ "The table already fits its container. Render `Table.Root` directly.",
50
+ "Non-tabular content. Use `ScrollArea` for a general scrolling viewport."
51
+ ],
52
+ "commonMistakes": [
53
+ "Omitting `aria-label`; the scrolling region requires its own accessible name.",
54
+ "Using the region instead of `Table.Caption`; the region and table each keep their own name."
55
+ ],
56
+ "specimens": [
57
+ {
58
+ "title": "Table",
59
+ "group": "instruments",
60
+ "components": [
61
+ "Table",
62
+ "TableScrollRegion"
63
+ ],
64
+ "code": "<Panel className=\"w-full\">\n <TableScrollRegion aria-label=\"Cue list table\">\n <Table.Root>\n <Table.Caption>Cue list</Table.Caption>\n <Table.Header>\n <Table.Row>\n <Table.Head numeric>#</Table.Head>\n <Table.Head>Label</Table.Head>\n <Table.Head numeric>Fade</Table.Head>\n <Table.Head>Follow</Table.Head>\n <Table.Head numeric>Level</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {CUES.map((cue) => (\n <Table.Row key={cue.id}>\n <Table.Cell numeric>{cue.id}</Table.Cell>\n <Table.Cell>{cue.label}</Table.Cell>\n <Table.Cell numeric>{cue.time}</Table.Cell>\n <Table.Cell>{cue.follow}</Table.Cell>\n <Table.Cell numeric>{cue.level}%</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Root>\n </TableScrollRegion>\n</Panel>",
65
+ "note": "The canonical console table inside its named horizontal scroll region: hairline rows, mono headers, and `numeric` cells that are right-aligned and tabular.",
66
+ "interaction": "the scroll region is keyboard-focusable. Sorting, filtering and paging come from the DataTable recipe below."
67
+ }
68
+ ]
69
+ }
@@ -0,0 +1,155 @@
1
+ {
2
+ "name": "Table",
3
+ "slug": "table",
4
+ "group": "instruments",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": false,
8
+ "description": "The canonical console table: hairlines, mono figures, no zebra striping.\n\nSemantic `<table>` markup throughout — a grid of divs loses row/column\nannouncement, and a console table is exactly the place a screen reader user\nneeds it. Zebra rows are deliberately absent: at console density the stripes\nare thicker than the data.\n\nStatic markup — no `\"use client\"`. Compose it with `Panel` for the rim.\nUse {@link TableScrollRegion} only when the table can exceed its container.",
9
+ "props": [],
10
+ "typeReferences": [],
11
+ "subcomponents": [
12
+ "Root",
13
+ "Header",
14
+ "Body",
15
+ "Row",
16
+ "Head",
17
+ "Cell",
18
+ "Caption"
19
+ ],
20
+ "parts": [
21
+ {
22
+ "name": "Root",
23
+ "usage": "Table.Root",
24
+ "description": "The table frame. Owns the type, the collapse and the numeric alignment rule.\n\n`data-numeric` is the contract, not a prop: the alignment and\n`tabular-nums` live in one descendant selector here, so a hand-written\n`<td data-numeric>` inside a data-driven body lines up exactly like a\n`<Table.Cell numeric>`. Figures that do not share a column width are\nunreadable as a column, which is the whole point of a table.",
25
+ "props": [],
26
+ "typeReferences": [
27
+ "React.ComponentPropsWithoutRef<\"table\">"
28
+ ]
29
+ },
30
+ {
31
+ "name": "Header",
32
+ "usage": "Table.Header",
33
+ "description": "The header band. Sticky-able by the caller; sized by the row padding tokens.",
34
+ "props": [],
35
+ "typeReferences": [
36
+ "React.ComponentPropsWithoutRef<\"tbody\">"
37
+ ]
38
+ },
39
+ {
40
+ "name": "Body",
41
+ "usage": "Table.Body",
42
+ "description": "The data band.",
43
+ "props": [],
44
+ "typeReferences": [
45
+ "React.ComponentPropsWithoutRef<\"tbody\">"
46
+ ]
47
+ },
48
+ {
49
+ "name": "Row",
50
+ "usage": "Table.Row",
51
+ "description": "One row, separated by a hairline underneath — dropped on the last row so the\ntable never draws a rule against the panel rim it sits in. In a `<thead>` the\n\"last row\" is the header row itself, so the header's own bottom border (on\nthe cells) is the only rule there and the two can never stack into 2px.",
52
+ "props": [],
53
+ "typeReferences": [
54
+ "React.ComponentPropsWithoutRef<\"tr\">"
55
+ ]
56
+ },
57
+ {
58
+ "name": "Head",
59
+ "usage": "Table.Head",
60
+ "description": "A column heading: the same mono uppercase label as `SectionHeader` and\n`Eyebrow`, on the raised surface so the band reads as chrome rather than as\nthe first row of data.",
61
+ "props": [
62
+ {
63
+ "name": "numeric",
64
+ "type": "boolean",
65
+ "required": false,
66
+ "defaultValue": "false",
67
+ "description": "Right-align this column and set it in tabular figures."
68
+ }
69
+ ],
70
+ "typeReferences": [
71
+ "React.ComponentPropsWithoutRef<\"th\">"
72
+ ]
73
+ },
74
+ {
75
+ "name": "Cell",
76
+ "usage": "Table.Cell",
77
+ "description": "One data cell, padded on the density row tokens like every other list row.",
78
+ "props": [
79
+ {
80
+ "name": "numeric",
81
+ "type": "boolean",
82
+ "required": false,
83
+ "defaultValue": "false",
84
+ "description": "Right-align this cell and set it in tabular figures."
85
+ }
86
+ ],
87
+ "typeReferences": [
88
+ "React.ComponentPropsWithoutRef<\"td\">"
89
+ ]
90
+ },
91
+ {
92
+ "name": "Caption",
93
+ "usage": "Table.Caption",
94
+ "description": "The table's name. Sits under the data (`caption-bottom`) because in a console\nthe heading above a table is a `SectionHeader` or a `PanelHeader`; a caption\nhere is the footnote — the source, the window, the count.",
95
+ "props": [],
96
+ "typeReferences": [
97
+ "React.ComponentPropsWithoutRef<\"caption\">"
98
+ ]
99
+ }
100
+ ],
101
+ "variants": {},
102
+ "defaultVariants": {},
103
+ "tokensUsed": [
104
+ "--cue-accent",
105
+ "--cue-border",
106
+ "--cue-fg",
107
+ "--cue-fg-subtle",
108
+ "--cue-font-mono",
109
+ "--cue-pad-row-x",
110
+ "--cue-pad-row-y",
111
+ "--cue-space-3",
112
+ "--cue-surface-1",
113
+ "--cue-text-label",
114
+ "--cue-text-ui"
115
+ ],
116
+ "summary": "The semantic table: mono uppercase headers, hairline rows, tabular numerals.",
117
+ "examples": [
118
+ {
119
+ "title": "Usage",
120
+ "code": "<Table.Root>\n <Table.Header>\n <Table.Row>\n <Table.Head>Fixture</Table.Head>\n <Table.Head numeric>Address</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n <Table.Row>\n <Table.Cell>Par 64</Table.Cell>\n <Table.Cell numeric>001</Table.Cell>\n </Table.Row>\n </Table.Body>\n</Table.Root>",
121
+ "language": "tsx"
122
+ }
123
+ ],
124
+ "status": "stable",
125
+ "url": "/docs/components/table",
126
+ "mdUrl": "/docs/components/table.md",
127
+ "jsonUrl": "/r/components/table.json",
128
+ "whenToUse": [
129
+ "Rows that share columns and are meant to be compared down a column.",
130
+ "Numeric cells. Mark them `data-numeric` so the figures line up.",
131
+ "Wrap a wide table in `TableScrollRegion`; render the table directly when it fits."
132
+ ],
133
+ "whenNotToUse": [
134
+ "One object's fields. Use `DescriptionList`.",
135
+ "Layout. A table is for data that has columns.",
136
+ "Sorting, filtering and paging over thousands of rows on its own. Compose it with `useCueTable` from `@cueplusplus/ui/instruments/data-table`."
137
+ ],
138
+ "commonMistakes": [
139
+ "Leaving out `Table.Caption`, which is what names the table for a screen reader.",
140
+ "Wrapping cells in a `Row`. The table has its own row part."
141
+ ],
142
+ "specimens": [
143
+ {
144
+ "title": "Table",
145
+ "group": "instruments",
146
+ "components": [
147
+ "Table",
148
+ "TableScrollRegion"
149
+ ],
150
+ "code": "<Panel className=\"w-full\">\n <TableScrollRegion aria-label=\"Cue list table\">\n <Table.Root>\n <Table.Caption>Cue list</Table.Caption>\n <Table.Header>\n <Table.Row>\n <Table.Head numeric>#</Table.Head>\n <Table.Head>Label</Table.Head>\n <Table.Head numeric>Fade</Table.Head>\n <Table.Head>Follow</Table.Head>\n <Table.Head numeric>Level</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {CUES.map((cue) => (\n <Table.Row key={cue.id}>\n <Table.Cell numeric>{cue.id}</Table.Cell>\n <Table.Cell>{cue.label}</Table.Cell>\n <Table.Cell numeric>{cue.time}</Table.Cell>\n <Table.Cell>{cue.follow}</Table.Cell>\n <Table.Cell numeric>{cue.level}%</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Root>\n </TableScrollRegion>\n</Panel>",
151
+ "note": "The canonical console table inside its named horizontal scroll region: hairline rows, mono headers, and `numeric` cells that are right-aligned and tabular.",
152
+ "interaction": "the scroll region is keyboard-focusable. Sorting, filtering and paging come from the DataTable recipe below."
153
+ }
154
+ ]
155
+ }
@@ -0,0 +1,145 @@
1
+ {
2
+ "name": "Tabs",
3
+ "slug": "tabs",
4
+ "group": "chrome",
5
+ "importPath": "@cueplusplus/ui",
6
+ "peerDependencies": [],
7
+ "clientOnly": true,
8
+ "description": "One surface, several views.\n\nWraps Base UI's `Tabs`, so roving focus, `aria-controls` wiring and\nactivation semantics are the primitive's. This layer adds the console skin:\na hairline strip, mono labels and an accent underline for the active tab.\n\nReach for {@link ScrollableTabsList} instead of `Tabs.List` when the number of\ntabs is data-driven and can outgrow its container.",
9
+ "props": [],
10
+ "typeReferences": [],
11
+ "subcomponents": [
12
+ "Root",
13
+ "List",
14
+ "Tab",
15
+ "Panel"
16
+ ],
17
+ "parts": [
18
+ {
19
+ "name": "Root",
20
+ "usage": "Tabs.Root",
21
+ "description": "Groups a tab list with its panels and owns the selected value.",
22
+ "props": [
23
+ {
24
+ "name": "className",
25
+ "type": "string",
26
+ "required": false,
27
+ "defaultValue": null,
28
+ "description": "Extra classes for the tabs frame."
29
+ }
30
+ ],
31
+ "typeReferences": [
32
+ "Omit<BaseTabs.Root.Props, \"className\">"
33
+ ]
34
+ },
35
+ {
36
+ "name": "List",
37
+ "usage": "Tabs.List",
38
+ "description": "The strip of tabs, hung off a hairline.\n\nThe rule belongs to the list rather than to the active tab so it spans the\nfull width even when the tabs do not — which is what makes the selected tab's\naccent underline read as a mark *on* a rule rather than as a floating dash.",
39
+ "props": [
40
+ {
41
+ "name": "className",
42
+ "type": "string",
43
+ "required": false,
44
+ "defaultValue": null,
45
+ "description": "Extra classes for the strip."
46
+ }
47
+ ],
48
+ "typeReferences": [
49
+ "Omit<BaseTabs.List.Props, \"className\">"
50
+ ]
51
+ },
52
+ {
53
+ "name": "Tab",
54
+ "usage": "Tabs.Tab",
55
+ "description": "One tab. Selected state is an accent underline sitting on the list's rule —\nnever a filled pill, which at console density turns a row of four tabs into a\nrow of four buttons and loses the \"one surface, several views\" reading.",
56
+ "props": [
57
+ {
58
+ "name": "className",
59
+ "type": "string",
60
+ "required": false,
61
+ "defaultValue": null,
62
+ "description": "Extra classes for the tab button."
63
+ }
64
+ ],
65
+ "typeReferences": [
66
+ "Omit<BaseTabs.Tab.Props, \"className\">"
67
+ ]
68
+ },
69
+ {
70
+ "name": "Panel",
71
+ "usage": "Tabs.Panel",
72
+ "description": "The body shown for the matching tab. Focusable, so keyboard users land in it.",
73
+ "props": [
74
+ {
75
+ "name": "className",
76
+ "type": "string",
77
+ "required": false,
78
+ "defaultValue": null,
79
+ "description": "Extra classes for the panel."
80
+ }
81
+ ],
82
+ "typeReferences": [
83
+ "Omit<BaseTabs.Panel.Props, \"className\">"
84
+ ]
85
+ }
86
+ ],
87
+ "variants": {},
88
+ "defaultVariants": {},
89
+ "tokensUsed": [
90
+ "--cue-accent",
91
+ "--cue-border",
92
+ "--cue-chrome-toolbar",
93
+ "--cue-control-md",
94
+ "--cue-edge-fade",
95
+ "--cue-fg",
96
+ "--cue-fg-muted",
97
+ "--cue-font-mono",
98
+ "--cue-icon-sm",
99
+ "--cue-radius-control",
100
+ "--cue-space-1",
101
+ "--cue-space-2",
102
+ "--cue-space-4",
103
+ "--cue-space-5",
104
+ "--cue-surface-1",
105
+ "--cue-surface-2",
106
+ "--cue-text-ui"
107
+ ],
108
+ "summary": "One surface, several views, with the roving focus wired for you.",
109
+ "examples": [
110
+ {
111
+ "title": "Usage",
112
+ "code": "<Tabs.Root defaultValue=\"patch\">\n <Tabs.List>\n <Tabs.Tab value=\"patch\">Patch</Tabs.Tab>\n <Tabs.Tab value=\"cues\">Cues</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"patch\">…</Tabs.Panel>\n <Tabs.Panel value=\"cues\">…</Tabs.Panel>\n</Tabs.Root>",
113
+ "language": "tsx"
114
+ }
115
+ ],
116
+ "status": "stable",
117
+ "url": "/docs/components/tabs",
118
+ "mdUrl": "/docs/components/tabs.md",
119
+ "jsonUrl": "/r/components/tabs.json",
120
+ "whenToUse": [
121
+ "Two to seven views of the same object, where only one is needed at a time.",
122
+ "A tab strip that may outgrow its container. Use `ScrollableTabsList`, which fades its edges and scrolls the active tab into view."
123
+ ],
124
+ "whenNotToUse": [
125
+ "Steps in a sequence the user works through. Use `Stepper`.",
126
+ "Sections a reader may want open at once. Use `Accordion`.",
127
+ "Navigation between pages. Use the app shell: `Sidebar` or `NavigationMenu`."
128
+ ],
129
+ "commonMistakes": [
130
+ "Hiding a panel with CSS instead of letting `Tabs.Panel` unmount it, which leaves the hidden content in the tab order.",
131
+ "Filling the selected tab with a solid block. The selected state here is the accent underline sitting on the list's rule."
132
+ ],
133
+ "specimens": [
134
+ {
135
+ "title": "Tabs",
136
+ "group": "chrome",
137
+ "components": [
138
+ "Tabs"
139
+ ],
140
+ "code": "<Tabs.Root value={tab} onValueChange={setTab} className=\"w-full max-w-[36rem]\">\n <Tabs.List>\n <Tabs.Tab value=\"patch\">Patch</Tabs.Tab>\n <Tabs.Tab value=\"cues\">Cues</Tabs.Tab>\n <Tabs.Tab value=\"setup\" disabled>\n Setup\n </Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"patch\">48 fixtures across 4 universes.</Tabs.Panel>\n <Tabs.Panel value=\"cues\">12 cues, last edited 4 minutes ago.</Tabs.Panel>\n <Tabs.Panel value=\"setup\">Setup.</Tabs.Panel>\n</Tabs.Root>",
141
+ "note": "Selection is an underline, never a filled block.",
142
+ "interaction": "hover lifts the inactive label; arrow keys move the active tab, and the panel follows."
143
+ }
144
+ ]
145
+ }