@cueplusplus/ui 0.13.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 (1016) hide show
  1. package/CHANGELOG.md +4028 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE.md +34 -0
  4. package/README.md +237 -0
  5. package/dist/agent-runtime/_glyphs.js +43 -0
  6. package/dist/agent-runtime/branch-picker.d.ts +45 -0
  7. package/dist/agent-runtime/branch-picker.js +87 -0
  8. package/dist/agent-runtime/index.d.ts +4 -0
  9. package/dist/agent-runtime/index.js +4 -0
  10. package/dist/agent-runtime/tool-call-card.d.ts +69 -0
  11. package/dist/agent-runtime/tool-call-card.js +187 -0
  12. package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
  13. package/dist/agent-runtime/use-agent-thread.js +251 -0
  14. package/dist/brand/_chassis.d.ts +54 -0
  15. package/dist/brand/_chassis.js +81 -0
  16. package/dist/brand/_geometry.js +41 -0
  17. package/dist/brand/cue-logotype.d.ts +29 -0
  18. package/dist/brand/cue-logotype.js +60 -0
  19. package/dist/brand/cue-mark.d.ts +30 -0
  20. package/dist/brand/cue-mark.js +61 -0
  21. package/dist/brand/index.d.ts +5 -0
  22. package/dist/brand/plussie.d.ts +67 -0
  23. package/dist/brand/plussie.js +125 -0
  24. package/dist/charts/_token.js +39 -0
  25. package/dist/charts/container.d.ts +58 -0
  26. package/dist/charts/container.js +77 -0
  27. package/dist/charts/index.d.ts +5 -0
  28. package/dist/charts/index.js +5 -0
  29. package/dist/charts/ramps.d.ts +140 -0
  30. package/dist/charts/ramps.js +615 -0
  31. package/dist/charts/theme.d.ts +112 -0
  32. package/dist/charts/theme.js +165 -0
  33. package/dist/charts/tones.d.ts +111 -0
  34. package/dist/charts/tones.js +127 -0
  35. package/dist/chat/_glyphs.js +55 -0
  36. package/dist/chat/agent-color.d.ts +84 -0
  37. package/dist/chat/agent-color.js +101 -0
  38. package/dist/chat/agent-pile.d.ts +55 -0
  39. package/dist/chat/agent-pile.js +121 -0
  40. package/dist/chat/ask-box.d.ts +88 -0
  41. package/dist/chat/ask-box.js +341 -0
  42. package/dist/chat/composer.d.ts +66 -0
  43. package/dist/chat/composer.js +144 -0
  44. package/dist/chat/delegation-card.d.ts +60 -0
  45. package/dist/chat/delegation-card.js +129 -0
  46. package/dist/chat/index.d.ts +8 -0
  47. package/dist/chat/index.js +8 -0
  48. package/dist/chat/message-list.d.ts +45 -0
  49. package/dist/chat/message-list.js +141 -0
  50. package/dist/chat/message.d.ts +47 -0
  51. package/dist/chat/message.js +108 -0
  52. package/dist/chrome/_band.js +54 -0
  53. package/dist/chrome/_drag.js +59 -0
  54. package/dist/chrome/_edge-scroller.d.ts +45 -0
  55. package/dist/chrome/_edge-scroller.js +149 -0
  56. package/dist/chrome/_glyphs.js +119 -0
  57. package/dist/chrome/_status-bar-item.js +85 -0
  58. package/dist/chrome/_status-bar.d.ts +15 -0
  59. package/dist/chrome/_status-bar.js +171 -0
  60. package/dist/chrome/_tabs-scroll.d.ts +67 -0
  61. package/dist/chrome/_tabs-scroll.js +73 -0
  62. package/dist/chrome/_tree.d.ts +75 -0
  63. package/dist/chrome/_tree.js +49 -0
  64. package/dist/chrome/app-bar.d.ts +103 -0
  65. package/dist/chrome/app-bar.js +175 -0
  66. package/dist/chrome/app-shell.d.ts +243 -0
  67. package/dist/chrome/app-shell.js +266 -0
  68. package/dist/chrome/band.d.ts +106 -0
  69. package/dist/chrome/band.js +97 -0
  70. package/dist/chrome/empty-state.d.ts +37 -0
  71. package/dist/chrome/empty-state.js +57 -0
  72. package/dist/chrome/eyebrow.d.ts +29 -0
  73. package/dist/chrome/eyebrow.js +36 -0
  74. package/dist/chrome/footer.d.ts +88 -0
  75. package/dist/chrome/footer.js +83 -0
  76. package/dist/chrome/index.d.ts +24 -0
  77. package/dist/chrome/index.js +22 -0
  78. package/dist/chrome/inspector.d.ts +61 -0
  79. package/dist/chrome/inspector.js +121 -0
  80. package/dist/chrome/navigation-menu.d.ts +80 -0
  81. package/dist/chrome/navigation-menu.js +121 -0
  82. package/dist/chrome/page-shell.d.ts +38 -0
  83. package/dist/chrome/page-shell.js +76 -0
  84. package/dist/chrome/panel.d.ts +55 -0
  85. package/dist/chrome/panel.js +67 -0
  86. package/dist/chrome/row.d.ts +82 -0
  87. package/dist/chrome/row.js +106 -0
  88. package/dist/chrome/scroll-area.d.ts +39 -0
  89. package/dist/chrome/scroll-area.js +70 -0
  90. package/dist/chrome/section-header.d.ts +42 -0
  91. package/dist/chrome/section-header.js +79 -0
  92. package/dist/chrome/segmented-control.d.ts +77 -0
  93. package/dist/chrome/segmented-control.js +95 -0
  94. package/dist/chrome/status-bar.d.ts +129 -0
  95. package/dist/chrome/status-bar.js +120 -0
  96. package/dist/chrome/tabs.d.ts +80 -0
  97. package/dist/chrome/tabs.js +132 -0
  98. package/dist/chrome/title-bar.d.ts +47 -0
  99. package/dist/chrome/title-bar.js +43 -0
  100. package/dist/chrome/toolbar.d.ts +68 -0
  101. package/dist/chrome/toolbar.js +83 -0
  102. package/dist/chrome/tree.d.ts +98 -0
  103. package/dist/chrome/tree.js +248 -0
  104. package/dist/color/_checker.js +14 -0
  105. package/dist/color/_convert.d.ts +52 -0
  106. package/dist/color/_convert.js +66 -0
  107. package/dist/color/_glyphs.js +28 -0
  108. package/dist/color/_thumb.js +15 -0
  109. package/dist/color/_value.js +28 -0
  110. package/dist/color/color-area.d.ts +27 -0
  111. package/dist/color/color-area.js +40 -0
  112. package/dist/color/color-field.d.ts +32 -0
  113. package/dist/color/color-field.js +43 -0
  114. package/dist/color/color-picker.d.ts +71 -0
  115. package/dist/color/color-picker.js +178 -0
  116. package/dist/color/color-slider.d.ts +31 -0
  117. package/dist/color/color-slider.js +51 -0
  118. package/dist/color/color-swatch.d.ts +32 -0
  119. package/dist/color/color-swatch.js +44 -0
  120. package/dist/color/index.d.ts +7 -0
  121. package/dist/color/index.js +7 -0
  122. package/dist/configurator/_export.d.ts +78 -0
  123. package/dist/configurator/_export.js +302 -0
  124. package/dist/configurator/_glyphs.js +92 -0
  125. package/dist/configurator/_overrides.d.ts +266 -0
  126. package/dist/configurator/_overrides.js +541 -0
  127. package/dist/configurator/configurator.d.ts +71 -0
  128. package/dist/configurator/configurator.js +284 -0
  129. package/dist/configurator/export-dialog.d.ts +30 -0
  130. package/dist/configurator/export-dialog.js +121 -0
  131. package/dist/configurator/index.d.ts +8 -0
  132. package/dist/configurator/index.js +8 -0
  133. package/dist/configurator/panel-sections.d.ts +86 -0
  134. package/dist/configurator/panel-sections.js +352 -0
  135. package/dist/configurator/token-editor.d.ts +74 -0
  136. package/dist/configurator/token-editor.js +152 -0
  137. package/dist/configurator/use-zoom.d.ts +87 -0
  138. package/dist/configurator/use-zoom.js +113 -0
  139. package/dist/date/_glyphs.js +34 -0
  140. package/dist/date/_segments.js +101 -0
  141. package/dist/date/_trigger.js +31 -0
  142. package/dist/date/calendar.d.ts +25 -0
  143. package/dist/date/calendar.js +125 -0
  144. package/dist/date/date-field.d.ts +34 -0
  145. package/dist/date/date-field.js +41 -0
  146. package/dist/date/date-picker.d.ts +69 -0
  147. package/dist/date/date-picker.js +89 -0
  148. package/dist/date/date-range-picker.d.ts +65 -0
  149. package/dist/date/date-range-picker.js +92 -0
  150. package/dist/date/index.d.ts +6 -0
  151. package/dist/date/index.js +6 -0
  152. package/dist/date/time-field.d.ts +29 -0
  153. package/dist/date/time-field.js +36 -0
  154. package/dist/dmx/_ramp.d.ts +77 -0
  155. package/dist/dmx/_ramp.js +169 -0
  156. package/dist/dmx/_readout.js +53 -0
  157. package/dist/dmx/_universe.d.ts +105 -0
  158. package/dist/dmx/_universe.js +112 -0
  159. package/dist/dmx/channel-matrix.d.ts +81 -0
  160. package/dist/dmx/channel-matrix.js +285 -0
  161. package/dist/dmx/dmx-bar.d.ts +50 -0
  162. package/dist/dmx/dmx-bar.js +107 -0
  163. package/dist/dmx/dmx-strip.d.ts +41 -0
  164. package/dist/dmx/dmx-strip.js +196 -0
  165. package/dist/dmx/index.d.ts +7 -0
  166. package/dist/dmx/index.js +7 -0
  167. package/dist/dmx/universe-grid.d.ts +61 -0
  168. package/dist/dmx/universe-grid.js +182 -0
  169. package/dist/elements/activity-graph.d.ts +40 -0
  170. package/dist/elements/activity-graph.js +81 -0
  171. package/dist/elements/agent-card.d.ts +49 -0
  172. package/dist/elements/agent-card.js +91 -0
  173. package/dist/elements/agent-handoff.d.ts +24 -0
  174. package/dist/elements/agent-handoff.js +53 -0
  175. package/dist/elements/agent-mode-badge.d.ts +72 -0
  176. package/dist/elements/agent-mode-badge.js +110 -0
  177. package/dist/elements/agent-plan.d.ts +24 -0
  178. package/dist/elements/agent-plan.js +74 -0
  179. package/dist/elements/agent-status.d.ts +29 -0
  180. package/dist/elements/agent-status.js +46 -0
  181. package/dist/elements/agent-surface.d.ts +65 -0
  182. package/dist/elements/agent-surface.js +68 -0
  183. package/dist/elements/animated-number.d.ts +86 -0
  184. package/dist/elements/animated-number.js +118 -0
  185. package/dist/elements/approval-card.d.ts +40 -0
  186. package/dist/elements/approval-card.js +78 -0
  187. package/dist/elements/artifact-card.d.ts +30 -0
  188. package/dist/elements/artifact-card.js +58 -0
  189. package/dist/elements/background-inbox.d.ts +39 -0
  190. package/dist/elements/background-inbox.js +60 -0
  191. package/dist/elements/canvas-split.d.ts +77 -0
  192. package/dist/elements/canvas-split.js +138 -0
  193. package/dist/elements/chart.d.ts +41 -0
  194. package/dist/elements/chart.js +117 -0
  195. package/dist/elements/chat-panel.d.ts +46 -0
  196. package/dist/elements/chat-panel.js +104 -0
  197. package/dist/elements/checkpoint-history.d.ts +31 -0
  198. package/dist/elements/checkpoint-history.js +65 -0
  199. package/dist/elements/clamp.d.ts +90 -0
  200. package/dist/elements/clamp.js +109 -0
  201. package/dist/elements/code-diff.d.ts +42 -0
  202. package/dist/elements/code-diff.js +69 -0
  203. package/dist/elements/code-runner.d.ts +38 -0
  204. package/dist/elements/code-runner.js +84 -0
  205. package/dist/elements/command-palette.d.ts +48 -0
  206. package/dist/elements/command-palette.js +129 -0
  207. package/dist/elements/compaction-row.d.ts +63 -0
  208. package/dist/elements/compaction-row.js +110 -0
  209. package/dist/elements/comparison-card.d.ts +47 -0
  210. package/dist/elements/comparison-card.js +69 -0
  211. package/dist/elements/composer.d.ts +274 -0
  212. package/dist/elements/composer.js +505 -0
  213. package/dist/elements/computer-use.d.ts +40 -0
  214. package/dist/elements/computer-use.js +92 -0
  215. package/dist/elements/confidence-marker.d.ts +39 -0
  216. package/dist/elements/confidence-marker.js +64 -0
  217. package/dist/elements/connection-state.d.ts +29 -0
  218. package/dist/elements/connection-state.js +66 -0
  219. package/dist/elements/context-breakdown.d.ts +30 -0
  220. package/dist/elements/context-breakdown.js +86 -0
  221. package/dist/elements/context-usage.d.ts +99 -0
  222. package/dist/elements/context-usage.js +225 -0
  223. package/dist/elements/conversation-search.d.ts +48 -0
  224. package/dist/elements/conversation-search.js +88 -0
  225. package/dist/elements/cost-meter.d.ts +33 -0
  226. package/dist/elements/cost-meter.js +75 -0
  227. package/dist/elements/data-table.d.ts +31 -0
  228. package/dist/elements/data-table.js +67 -0
  229. package/dist/elements/day-separator.d.ts +34 -0
  230. package/dist/elements/day-separator.js +50 -0
  231. package/dist/elements/diagram.d.ts +34 -0
  232. package/dist/elements/diagram.js +75 -0
  233. package/dist/elements/document-reference.d.ts +37 -0
  234. package/dist/elements/document-reference.js +66 -0
  235. package/dist/elements/draft-restore.d.ts +27 -0
  236. package/dist/elements/draft-restore.js +54 -0
  237. package/dist/elements/edit-message.d.ts +36 -0
  238. package/dist/elements/edit-message.js +77 -0
  239. package/dist/elements/elements.css +459 -0
  240. package/dist/elements/elicitation-form.d.ts +48 -0
  241. package/dist/elements/elicitation-form.js +106 -0
  242. package/dist/elements/empty-state.d.ts +52 -0
  243. package/dist/elements/empty-state.js +98 -0
  244. package/dist/elements/end-of-turn-summary.d.ts +60 -0
  245. package/dist/elements/end-of-turn-summary.js +75 -0
  246. package/dist/elements/error-state.d.ts +29 -0
  247. package/dist/elements/error-state.js +55 -0
  248. package/dist/elements/feedback-dialog.d.ts +36 -0
  249. package/dist/elements/feedback-dialog.js +81 -0
  250. package/dist/elements/file-tree.d.ts +45 -0
  251. package/dist/elements/file-tree.js +84 -0
  252. package/dist/elements/flow-graph.d.ts +45 -0
  253. package/dist/elements/flow-graph.js +78 -0
  254. package/dist/elements/generative/chart.js +200 -0
  255. package/dist/elements/generative/faults.js +111 -0
  256. package/dist/elements/generative/icons.d.ts +41 -0
  257. package/dist/elements/generative/icons.js +190 -0
  258. package/dist/elements/generative/intrinsics.js +483 -0
  259. package/dist/elements/generative/spec.d.ts +110 -0
  260. package/dist/elements/generative/spec.js +366 -0
  261. package/dist/elements/generative.css +1145 -0
  262. package/dist/elements/generative.d.ts +144 -0
  263. package/dist/elements/generative.js +126 -0
  264. package/dist/elements/guardrail-notice.d.ts +29 -0
  265. package/dist/elements/guardrail-notice.js +63 -0
  266. package/dist/elements/image-generation.d.ts +18 -0
  267. package/dist/elements/image-generation.js +64 -0
  268. package/dist/elements/index.d.ts +116 -0
  269. package/dist/elements/index.js +115 -0
  270. package/dist/elements/inline-citation.d.ts +43 -0
  271. package/dist/elements/inline-citation.js +93 -0
  272. package/dist/elements/job-progress.d.ts +49 -0
  273. package/dist/elements/job-progress.js +74 -0
  274. package/dist/elements/launcher-bubble.d.ts +34 -0
  275. package/dist/elements/launcher-bubble.js +72 -0
  276. package/dist/elements/live-region-announcer.d.ts +130 -0
  277. package/dist/elements/live-region-announcer.js +230 -0
  278. package/dist/elements/loading-state.d.ts +27 -0
  279. package/dist/elements/loading-state.js +36 -0
  280. package/dist/elements/map-answer.d.ts +38 -0
  281. package/dist/elements/map-answer.js +93 -0
  282. package/dist/elements/markdown.d.ts +131 -0
  283. package/dist/elements/markdown.js +528 -0
  284. package/dist/elements/math-block.d.ts +51 -0
  285. package/dist/elements/math-block.js +70 -0
  286. package/dist/elements/mcp-server-panel.d.ts +41 -0
  287. package/dist/elements/mcp-server-panel.js +115 -0
  288. package/dist/elements/memory-chips.d.ts +30 -0
  289. package/dist/elements/memory-chips.js +43 -0
  290. package/dist/elements/message-actions.d.ts +38 -0
  291. package/dist/elements/message-actions.js +71 -0
  292. package/dist/elements/message-attachment.d.ts +48 -0
  293. package/dist/elements/message-attachment.js +63 -0
  294. package/dist/elements/message-branches.d.ts +25 -0
  295. package/dist/elements/message-branches.js +65 -0
  296. package/dist/elements/message-pair.d.ts +33 -0
  297. package/dist/elements/message-pair.js +65 -0
  298. package/dist/elements/message-queue.d.ts +31 -0
  299. package/dist/elements/message-queue.js +80 -0
  300. package/dist/elements/message-timing.d.ts +33 -0
  301. package/dist/elements/message-timing.js +37 -0
  302. package/dist/elements/mobile-composer.d.ts +44 -0
  303. package/dist/elements/mobile-composer.js +88 -0
  304. package/dist/elements/model-picker.d.ts +38 -0
  305. package/dist/elements/model-picker.js +69 -0
  306. package/dist/elements/number-ticker.d.ts +18 -0
  307. package/dist/elements/number-ticker.js +47 -0
  308. package/dist/elements/onboarding.d.ts +30 -0
  309. package/dist/elements/onboarding.js +75 -0
  310. package/dist/elements/permission-grant.d.ts +35 -0
  311. package/dist/elements/permission-grant.js +86 -0
  312. package/dist/elements/permission-scopes.d.ts +215 -0
  313. package/dist/elements/permission-scopes.js +249 -0
  314. package/dist/elements/prompt-library.d.ts +43 -0
  315. package/dist/elements/prompt-library.js +117 -0
  316. package/dist/elements/queue-dock.d.ts +101 -0
  317. package/dist/elements/queue-dock.js +132 -0
  318. package/dist/elements/quota-banner.d.ts +26 -0
  319. package/dist/elements/quota-banner.js +66 -0
  320. package/dist/elements/quote-reply.d.ts +44 -0
  321. package/dist/elements/quote-reply.js +79 -0
  322. package/dist/elements/range.d.ts +29 -0
  323. package/dist/elements/range.js +45 -0
  324. package/dist/elements/read-aloud.d.ts +45 -0
  325. package/dist/elements/read-aloud.js +75 -0
  326. package/dist/elements/reasoning-effort.d.ts +36 -0
  327. package/dist/elements/reasoning-effort.js +67 -0
  328. package/dist/elements/reasoning-panel.d.ts +46 -0
  329. package/dist/elements/reasoning-panel.js +75 -0
  330. package/dist/elements/recommendation-card.d.ts +45 -0
  331. package/dist/elements/recommendation-card.js +83 -0
  332. package/dist/elements/regenerate-menu.d.ts +45 -0
  333. package/dist/elements/regenerate-menu.js +51 -0
  334. package/dist/elements/replay.d.ts +217 -0
  335. package/dist/elements/replay.js +498 -0
  336. package/dist/elements/research-report.d.ts +38 -0
  337. package/dist/elements/research-report.js +69 -0
  338. package/dist/elements/retrieval-chunks.d.ts +43 -0
  339. package/dist/elements/retrieval-chunks.js +81 -0
  340. package/dist/elements/revert-dock.d.ts +159 -0
  341. package/dist/elements/revert-dock.js +327 -0
  342. package/dist/elements/reviewable-diff.d.ts +45 -0
  343. package/dist/elements/reviewable-diff.js +110 -0
  344. package/dist/elements/risk-badge.d.ts +52 -0
  345. package/dist/elements/risk-badge.js +91 -0
  346. package/dist/elements/schedule-card.d.ts +42 -0
  347. package/dist/elements/schedule-card.js +90 -0
  348. package/dist/elements/score-breakdown.d.ts +47 -0
  349. package/dist/elements/score-breakdown.js +82 -0
  350. package/dist/elements/scroll-anchor.d.ts +32 -0
  351. package/dist/elements/scroll-anchor.js +123 -0
  352. package/dist/elements/settings-panel.d.ts +52 -0
  353. package/dist/elements/settings-panel.js +107 -0
  354. package/dist/elements/shared-conversation.d.ts +39 -0
  355. package/dist/elements/shared-conversation.js +68 -0
  356. package/dist/elements/sources.d.ts +33 -0
  357. package/dist/elements/sources.js +61 -0
  358. package/dist/elements/speaker-identity.d.ts +32 -0
  359. package/dist/elements/speaker-identity.js +51 -0
  360. package/dist/elements/spec-sheet.d.ts +31 -0
  361. package/dist/elements/spec-sheet.js +45 -0
  362. package/dist/elements/stopped-run.d.ts +22 -0
  363. package/dist/elements/stopped-run.js +50 -0
  364. package/dist/elements/streaming-text.d.ts +31 -0
  365. package/dist/elements/streaming-text.js +45 -0
  366. package/dist/elements/subagent-list.d.ts +37 -0
  367. package/dist/elements/subagent-list.js +79 -0
  368. package/dist/elements/suggestions.d.ts +30 -0
  369. package/dist/elements/suggestions.js +36 -0
  370. package/dist/elements/surfaces.d.ts +85 -0
  371. package/dist/elements/surfaces.js +108 -0
  372. package/dist/elements/tail-status.d.ts +131 -0
  373. package/dist/elements/tail-status.js +94 -0
  374. package/dist/elements/terminal-block.d.ts +29 -0
  375. package/dist/elements/terminal-block.js +54 -0
  376. package/dist/elements/thinking-indicator.d.ts +18 -0
  377. package/dist/elements/thinking-indicator.js +36 -0
  378. package/dist/elements/thread-list.d.ts +35 -0
  379. package/dist/elements/thread-list.js +68 -0
  380. package/dist/elements/thread-search.d.ts +42 -0
  381. package/dist/elements/thread-search.js +99 -0
  382. package/dist/elements/timeline.d.ts +37 -0
  383. package/dist/elements/timeline.js +46 -0
  384. package/dist/elements/todo-list.d.ts +42 -0
  385. package/dist/elements/todo-list.js +59 -0
  386. package/dist/elements/tool-call.d.ts +41 -0
  387. package/dist/elements/tool-call.js +85 -0
  388. package/dist/elements/tool-error.d.ts +39 -0
  389. package/dist/elements/tool-error.js +76 -0
  390. package/dist/elements/tool-group.d.ts +45 -0
  391. package/dist/elements/tool-group.js +71 -0
  392. package/dist/elements/tool-timeline.d.ts +65 -0
  393. package/dist/elements/tool-timeline.js +88 -0
  394. package/dist/elements/trace-waterfall.d.ts +37 -0
  395. package/dist/elements/trace-waterfall.js +69 -0
  396. package/dist/elements/transcript-rules.d.ts +67 -0
  397. package/dist/elements/transcript-rules.js +95 -0
  398. package/dist/elements/turn-footer.d.ts +74 -0
  399. package/dist/elements/turn-footer.js +101 -0
  400. package/dist/elements/typing-indicator.d.ts +16 -0
  401. package/dist/elements/typing-indicator.js +51 -0
  402. package/dist/elements/verdict-row.d.ts +89 -0
  403. package/dist/elements/verdict-row.js +150 -0
  404. package/dist/elements/vocabulary.d.ts +612 -0
  405. package/dist/elements/vocabulary.js +611 -0
  406. package/dist/elements/voice-conversation.d.ts +49 -0
  407. package/dist/elements/voice-conversation.js +123 -0
  408. package/dist/elements/web-preview.d.ts +32 -0
  409. package/dist/elements/web-preview.js +66 -0
  410. package/dist/elements/web-search.d.ts +37 -0
  411. package/dist/elements/web-search.js +66 -0
  412. package/dist/elements/work-collapse.d.ts +103 -0
  413. package/dist/elements/work-collapse.js +131 -0
  414. package/dist/flow/_frame.d.ts +52 -0
  415. package/dist/flow/_frame.js +38 -0
  416. package/dist/flow/controls.d.ts +41 -0
  417. package/dist/flow/controls.js +53 -0
  418. package/dist/flow/flow.css +121 -0
  419. package/dist/flow/handles.d.ts +40 -0
  420. package/dist/flow/handles.js +61 -0
  421. package/dist/flow/index.d.ts +7 -0
  422. package/dist/flow/index.js +7 -0
  423. package/dist/flow/node-card.d.ts +71 -0
  424. package/dist/flow/node-card.js +102 -0
  425. package/dist/flow/signal-edge.d.ts +60 -0
  426. package/dist/flow/signal-edge.js +108 -0
  427. package/dist/flow/use-flow-theme.d.ts +69 -0
  428. package/dist/flow/use-flow-theme.js +109 -0
  429. package/dist/forms/_chassis.d.ts +164 -0
  430. package/dist/forms/_chassis.js +159 -0
  431. package/dist/forms/_glyphs.js +143 -0
  432. package/dist/forms/_listbox.js +55 -0
  433. package/dist/forms/autocomplete.d.ts +61 -0
  434. package/dist/forms/autocomplete.js +88 -0
  435. package/dist/forms/button-group.d.ts +47 -0
  436. package/dist/forms/button-group.js +52 -0
  437. package/dist/forms/checkbox.d.ts +51 -0
  438. package/dist/forms/checkbox.js +98 -0
  439. package/dist/forms/combobox.d.ts +73 -0
  440. package/dist/forms/combobox.js +108 -0
  441. package/dist/forms/env-var-input.d.ts +74 -0
  442. package/dist/forms/env-var-input.js +116 -0
  443. package/dist/forms/field.d.ts +89 -0
  444. package/dist/forms/field.js +102 -0
  445. package/dist/forms/file-upload.d.ts +113 -0
  446. package/dist/forms/file-upload.js +232 -0
  447. package/dist/forms/index.d.ts +26 -0
  448. package/dist/forms/index.js +26 -0
  449. package/dist/forms/input-group.d.ts +36 -0
  450. package/dist/forms/input-group.js +59 -0
  451. package/dist/forms/input.d.ts +45 -0
  452. package/dist/forms/input.js +36 -0
  453. package/dist/forms/multi-select.d.ts +62 -0
  454. package/dist/forms/multi-select.js +107 -0
  455. package/dist/forms/number-field.d.ts +39 -0
  456. package/dist/forms/number-field.js +65 -0
  457. package/dist/forms/otp-field.d.ts +54 -0
  458. package/dist/forms/otp-field.js +59 -0
  459. package/dist/forms/password-input.d.ts +46 -0
  460. package/dist/forms/password-input.js +62 -0
  461. package/dist/forms/radio-group.d.ts +50 -0
  462. package/dist/forms/radio-group.js +64 -0
  463. package/dist/forms/rating.d.ts +69 -0
  464. package/dist/forms/rating.js +103 -0
  465. package/dist/forms/scrub-input.d.ts +81 -0
  466. package/dist/forms/scrub-input.js +249 -0
  467. package/dist/forms/search-input.d.ts +54 -0
  468. package/dist/forms/search-input.js +112 -0
  469. package/dist/forms/select.d.ts +75 -0
  470. package/dist/forms/select.js +91 -0
  471. package/dist/forms/slider.d.ts +44 -0
  472. package/dist/forms/slider.js +65 -0
  473. package/dist/forms/switch.d.ts +36 -0
  474. package/dist/forms/switch.js +71 -0
  475. package/dist/forms/tags-input.d.ts +69 -0
  476. package/dist/forms/tags-input.js +148 -0
  477. package/dist/forms/textarea.d.ts +39 -0
  478. package/dist/forms/textarea.js +37 -0
  479. package/dist/forms/toggle-group.d.ts +41 -0
  480. package/dist/forms/toggle-group.js +56 -0
  481. package/dist/forms/toggle.d.ts +47 -0
  482. package/dist/forms/toggle.js +100 -0
  483. package/dist/icons/containers.d.ts +89 -0
  484. package/dist/icons/containers.js +295 -0
  485. package/dist/icons/index.d.ts +2 -0
  486. package/dist/index.d.ts +138 -0
  487. package/dist/index.js +124 -0
  488. package/dist/instruments/_ansi.js +116 -0
  489. package/dist/instruments/_data-row.d.ts +68 -0
  490. package/dist/instruments/_data-row.js +139 -0
  491. package/dist/instruments/_glyphs.js +90 -0
  492. package/dist/instruments/_ledger-disclosure.js +103 -0
  493. package/dist/instruments/_ledger.d.ts +21 -0
  494. package/dist/instruments/_ledger.js +5 -0
  495. package/dist/instruments/_motion.js +56 -0
  496. package/dist/instruments/_rem.js +21 -0
  497. package/dist/instruments/app-window-frame.d.ts +48 -0
  498. package/dist/instruments/app-window-frame.js +76 -0
  499. package/dist/instruments/code-block.d.ts +35 -0
  500. package/dist/instruments/code-block.js +173 -0
  501. package/dist/instruments/copy-button.d.ts +41 -0
  502. package/dist/instruments/copy-button.js +112 -0
  503. package/dist/instruments/data-row.d.ts +94 -0
  504. package/dist/instruments/data-row.js +151 -0
  505. package/dist/instruments/data-table.d.ts +168 -0
  506. package/dist/instruments/data-table.js +212 -0
  507. package/dist/instruments/data-tree.d.ts +126 -0
  508. package/dist/instruments/data-tree.js +303 -0
  509. package/dist/instruments/group-bar.d.ts +63 -0
  510. package/dist/instruments/group-bar.js +122 -0
  511. package/dist/instruments/index.d.ts +18 -0
  512. package/dist/instruments/index.js +18 -0
  513. package/dist/instruments/ledger.d.ts +204 -0
  514. package/dist/instruments/ledger.js +204 -0
  515. package/dist/instruments/log-viewer.d.ts +74 -0
  516. package/dist/instruments/log-viewer.js +215 -0
  517. package/dist/instruments/meter.d.ts +81 -0
  518. package/dist/instruments/meter.js +96 -0
  519. package/dist/instruments/progress.d.ts +61 -0
  520. package/dist/instruments/progress.js +79 -0
  521. package/dist/instruments/seam-grid.d.ts +66 -0
  522. package/dist/instruments/seam-grid.js +78 -0
  523. package/dist/instruments/sparkline.d.ts +39 -0
  524. package/dist/instruments/sparkline.js +85 -0
  525. package/dist/instruments/stat.d.ts +35 -0
  526. package/dist/instruments/stat.js +59 -0
  527. package/dist/instruments/table.d.ts +170 -0
  528. package/dist/instruments/table.js +237 -0
  529. package/dist/instruments/terminal-frame.d.ts +89 -0
  530. package/dist/instruments/terminal-frame.js +256 -0
  531. package/dist/instruments/two-step-button.d.ts +47 -0
  532. package/dist/instruments/two-step-button.js +166 -0
  533. package/dist/instruments/usage-chart.d.ts +55 -0
  534. package/dist/instruments/usage-chart.js +235 -0
  535. package/dist/layout/_collapse.js +46 -0
  536. package/dist/layout/_glyphs.js +45 -0
  537. package/dist/layout/_ground.d.ts +22 -0
  538. package/dist/layout/_ground.js +9 -0
  539. package/dist/layout/accordion.d.ts +52 -0
  540. package/dist/layout/accordion.js +81 -0
  541. package/dist/layout/bento.d.ts +144 -0
  542. package/dist/layout/bento.js +266 -0
  543. package/dist/layout/breadcrumb.d.ts +35 -0
  544. package/dist/layout/breadcrumb.js +67 -0
  545. package/dist/layout/card.d.ts +51 -0
  546. package/dist/layout/card.js +76 -0
  547. package/dist/layout/carousel.d.ts +96 -0
  548. package/dist/layout/carousel.js +211 -0
  549. package/dist/layout/collapsible.d.ts +74 -0
  550. package/dist/layout/collapsible.js +126 -0
  551. package/dist/layout/container.d.ts +27 -0
  552. package/dist/layout/container.js +43 -0
  553. package/dist/layout/description-list.d.ts +24 -0
  554. package/dist/layout/description-list.js +37 -0
  555. package/dist/layout/frames.d.ts +70 -0
  556. package/dist/layout/frames.js +298 -0
  557. package/dist/layout/grid.d.ts +40 -0
  558. package/dist/layout/grid.js +48 -0
  559. package/dist/layout/index.d.ts +19 -0
  560. package/dist/layout/index.js +18 -0
  561. package/dist/layout/item.d.ts +65 -0
  562. package/dist/layout/item.js +100 -0
  563. package/dist/layout/link.d.ts +48 -0
  564. package/dist/layout/link.js +63 -0
  565. package/dist/layout/pagination.d.ts +54 -0
  566. package/dist/layout/pagination.js +121 -0
  567. package/dist/layout/preview.d.ts +177 -0
  568. package/dist/layout/preview.js +628 -0
  569. package/dist/layout/resizable.d.ts +38 -0
  570. package/dist/layout/resizable.js +68 -0
  571. package/dist/layout/sidebar.d.ts +105 -0
  572. package/dist/layout/sidebar.js +158 -0
  573. package/dist/layout/stack.d.ts +46 -0
  574. package/dist/layout/stack.js +62 -0
  575. package/dist/layout/stepper.d.ts +49 -0
  576. package/dist/layout/stepper.js +81 -0
  577. package/dist/layout/timeline.d.ts +43 -0
  578. package/dist/layout/timeline.js +63 -0
  579. package/dist/lib/aria-class.js +24 -0
  580. package/dist/lib/cn.js +18 -0
  581. package/dist/lib/compose.js +38 -0
  582. package/dist/lib/cva.d.ts +18 -0
  583. package/dist/lib/cva.js +65 -0
  584. package/dist/midi/_notes.d.ts +101 -0
  585. package/dist/midi/_notes.js +183 -0
  586. package/dist/midi/_ruler.d.ts +100 -0
  587. package/dist/midi/_ruler.js +105 -0
  588. package/dist/midi/_time.d.ts +107 -0
  589. package/dist/midi/_time.js +130 -0
  590. package/dist/midi/index.d.ts +9 -0
  591. package/dist/midi/index.js +9 -0
  592. package/dist/midi/musical-time-input.d.ts +48 -0
  593. package/dist/midi/musical-time-input.js +154 -0
  594. package/dist/midi/piano-keyboard.d.ts +50 -0
  595. package/dist/midi/piano-keyboard.js +197 -0
  596. package/dist/midi/spectrum-visualizer.d.ts +65 -0
  597. package/dist/midi/spectrum-visualizer.js +213 -0
  598. package/dist/midi/threshold-rail.d.ts +72 -0
  599. package/dist/midi/threshold-rail.js +214 -0
  600. package/dist/midi/timeline-ruler.d.ts +83 -0
  601. package/dist/midi/timeline-ruler.js +152 -0
  602. package/dist/overlays/_debounce.js +34 -0
  603. package/dist/overlays/_glyphs.js +59 -0
  604. package/dist/overlays/_surface.d.ts +70 -0
  605. package/dist/overlays/_surface.js +70 -0
  606. package/dist/overlays/_wheel.js +42 -0
  607. package/dist/overlays/alert-dialog.d.ts +67 -0
  608. package/dist/overlays/alert-dialog.js +117 -0
  609. package/dist/overlays/command-palette.d.ts +93 -0
  610. package/dist/overlays/command-palette.js +193 -0
  611. package/dist/overlays/context-menu.d.ts +64 -0
  612. package/dist/overlays/context-menu.js +78 -0
  613. package/dist/overlays/dialog.d.ts +72 -0
  614. package/dist/overlays/dialog.js +124 -0
  615. package/dist/overlays/drawer.d.ts +75 -0
  616. package/dist/overlays/drawer.js +151 -0
  617. package/dist/overlays/dropdown-menu.d.ts +79 -0
  618. package/dist/overlays/dropdown-menu.js +156 -0
  619. package/dist/overlays/hover-card.d.ts +58 -0
  620. package/dist/overlays/hover-card.js +91 -0
  621. package/dist/overlays/index.d.ts +15 -0
  622. package/dist/overlays/index.js +15 -0
  623. package/dist/overlays/info-tip.d.ts +41 -0
  624. package/dist/overlays/info-tip.js +45 -0
  625. package/dist/overlays/menubar.d.ts +72 -0
  626. package/dist/overlays/menubar.js +100 -0
  627. package/dist/overlays/popover.d.ts +66 -0
  628. package/dist/overlays/popover.js +114 -0
  629. package/dist/overlays/sheet.d.ts +78 -0
  630. package/dist/overlays/sheet.js +131 -0
  631. package/dist/overlays/toast.d.ts +106 -0
  632. package/dist/overlays/toast.js +146 -0
  633. package/dist/overlays/tooltip.d.ts +57 -0
  634. package/dist/overlays/tooltip.js +95 -0
  635. package/dist/primitives/avatar.d.ts +51 -0
  636. package/dist/primitives/avatar.js +93 -0
  637. package/dist/primitives/button.d.ts +58 -0
  638. package/dist/primitives/button.js +104 -0
  639. package/dist/primitives/chip.d.ts +73 -0
  640. package/dist/primitives/chip.js +238 -0
  641. package/dist/primitives/icon-button.d.ts +41 -0
  642. package/dist/primitives/icon-button.js +59 -0
  643. package/dist/primitives/index.d.ts +10 -0
  644. package/dist/primitives/index.js +10 -0
  645. package/dist/primitives/kbd.d.ts +17 -0
  646. package/dist/primitives/kbd.js +24 -0
  647. package/dist/primitives/separator.d.ts +25 -0
  648. package/dist/primitives/separator.js +30 -0
  649. package/dist/primitives/skeleton.d.ts +20 -0
  650. package/dist/primitives/skeleton.js +27 -0
  651. package/dist/primitives/spinner.d.ts +26 -0
  652. package/dist/primitives/spinner.js +31 -0
  653. package/dist/primitives/status-dot.d.ts +51 -0
  654. package/dist/primitives/status-dot.js +57 -0
  655. package/dist/styles.css +97 -0
  656. package/dist/system/agent-skin.d.ts +27 -0
  657. package/dist/system/agent-skin.js +20 -0
  658. package/dist/system/density.d.ts +73 -0
  659. package/dist/system/density.js +111 -0
  660. package/dist/system/index.d.ts +12 -0
  661. package/dist/system/index.js +10 -0
  662. package/dist/system/overrides.d.ts +80 -0
  663. package/dist/system/overrides.js +277 -0
  664. package/dist/system/portal.d.ts +56 -0
  665. package/dist/system/portal.js +193 -0
  666. package/dist/system/prepaint.d.ts +134 -0
  667. package/dist/system/prepaint.js +120 -0
  668. package/dist/system/theme-provider.d.ts +290 -0
  669. package/dist/system/theme-provider.js +543 -0
  670. package/dist/system/theme-registry.d.ts +53 -0
  671. package/dist/system/theme-registry.js +66 -0
  672. package/dist/system/use-density.d.ts +50 -0
  673. package/dist/system/use-density.js +232 -0
  674. package/dist/system/use-isomorphic-layout-effect.js +33 -0
  675. package/dist/system/use-theme.d.ts +30 -0
  676. package/dist/system/use-theme.js +36 -0
  677. package/dist/system/vocabulary.d.ts +16 -0
  678. package/dist/system/vocabulary.js +125 -0
  679. package/dist/theming/contrast.d.ts +2 -0
  680. package/dist/theming/contrast.js +2 -0
  681. package/dist/theming/create-theme.d.ts +195 -0
  682. package/dist/theming/create-theme.js +524 -0
  683. package/dist/theming/index.d.ts +4 -0
  684. package/dist/theming/index.js +4 -0
  685. package/dist/theming/serialize.d.ts +167 -0
  686. package/dist/theming/serialize.js +241 -0
  687. package/manifest/components/accordion.json +173 -0
  688. package/manifest/components/activity-graph.json +104 -0
  689. package/manifest/components/agent-card.json +150 -0
  690. package/manifest/components/agent-handoff.json +104 -0
  691. package/manifest/components/agent-mode-badge.json +102 -0
  692. package/manifest/components/agent-pile.json +147 -0
  693. package/manifest/components/agent-plan.json +74 -0
  694. package/manifest/components/agent-status.json +87 -0
  695. package/manifest/components/agent-surface.json +93 -0
  696. package/manifest/components/alert-dialog.json +215 -0
  697. package/manifest/components/animated-number.json +75 -0
  698. package/manifest/components/app-bar.json +297 -0
  699. package/manifest/components/app-shell.json +526 -0
  700. package/manifest/components/app-window-frame.json +124 -0
  701. package/manifest/components/approval-card.json +136 -0
  702. package/manifest/components/artifact-card.json +93 -0
  703. package/manifest/components/ask-box.json +288 -0
  704. package/manifest/components/audience-icon.json +46 -0
  705. package/manifest/components/autocomplete.json +262 -0
  706. package/manifest/components/avatar-group.json +83 -0
  707. package/manifest/components/avatar.json +113 -0
  708. package/manifest/components/background-inbox.json +79 -0
  709. package/manifest/components/band.json +104 -0
  710. package/manifest/components/bento.json +306 -0
  711. package/manifest/components/branch-picker.json +146 -0
  712. package/manifest/components/breadcrumb.json +85 -0
  713. package/manifest/components/button-group.json +91 -0
  714. package/manifest/components/button.json +163 -0
  715. package/manifest/components/calendar.json +65 -0
  716. package/manifest/components/canvas-split-body.json +66 -0
  717. package/manifest/components/canvas-split-document.json +55 -0
  718. package/manifest/components/canvas-split-header.json +97 -0
  719. package/manifest/components/canvas-split-line.json +66 -0
  720. package/manifest/components/canvas-split-message.json +70 -0
  721. package/manifest/components/canvas-split-thread.json +55 -0
  722. package/manifest/components/canvas-split.json +61 -0
  723. package/manifest/components/card.json +152 -0
  724. package/manifest/components/carousel.json +242 -0
  725. package/manifest/components/catalogue-icon.json +46 -0
  726. package/manifest/components/channel-beta-icon.json +46 -0
  727. package/manifest/components/channel-matrix.json +239 -0
  728. package/manifest/components/channel-released-icon.json +46 -0
  729. package/manifest/components/chart-container.json +127 -0
  730. package/manifest/components/chart-ramp.json +82 -0
  731. package/manifest/components/chart-swatch.json +72 -0
  732. package/manifest/components/chart-tooltip-content.json +140 -0
  733. package/manifest/components/chart.json +117 -0
  734. package/manifest/components/chat-empty-state.json +55 -0
  735. package/manifest/components/chat-panel-assistant-message.json +52 -0
  736. package/manifest/components/chat-panel-composer.json +74 -0
  737. package/manifest/components/chat-panel-messages.json +52 -0
  738. package/manifest/components/chat-panel-typing.json +52 -0
  739. package/manifest/components/chat-panel-user-message.json +52 -0
  740. package/manifest/components/chat-panel.json +58 -0
  741. package/manifest/components/checkbox-group.json +70 -0
  742. package/manifest/components/checkbox.json +106 -0
  743. package/manifest/components/checkpoint-history.json +91 -0
  744. package/manifest/components/chip.json +174 -0
  745. package/manifest/components/clamp.json +125 -0
  746. package/manifest/components/cli-tool-icon.json +46 -0
  747. package/manifest/components/code-block.json +107 -0
  748. package/manifest/components/code-diff.json +104 -0
  749. package/manifest/components/code-runner.json +124 -0
  750. package/manifest/components/collapsible.json +133 -0
  751. package/manifest/components/color-area.json +62 -0
  752. package/manifest/components/color-field.json +91 -0
  753. package/manifest/components/color-picker.json +235 -0
  754. package/manifest/components/color-slider.json +84 -0
  755. package/manifest/components/color-swatch.json +79 -0
  756. package/manifest/components/colors-section.json +70 -0
  757. package/manifest/components/combobox.json +265 -0
  758. package/manifest/components/command-palette.json +222 -0
  759. package/manifest/components/compaction-row.json +128 -0
  760. package/manifest/components/comparison-card.json +98 -0
  761. package/manifest/components/composer-actions.json +65 -0
  762. package/manifest/components/composer-attach-button.json +65 -0
  763. package/manifest/components/composer-attachment-chip.json +83 -0
  764. package/manifest/components/composer-attachments.json +60 -0
  765. package/manifest/components/composer-bar.json +76 -0
  766. package/manifest/components/composer-command-item.json +85 -0
  767. package/manifest/components/composer-context.json +71 -0
  768. package/manifest/components/composer-input.json +77 -0
  769. package/manifest/components/composer-menu-item.json +75 -0
  770. package/manifest/components/composer-menu.json +89 -0
  771. package/manifest/components/composer-model-item.json +82 -0
  772. package/manifest/components/composer-model-trigger.json +81 -0
  773. package/manifest/components/composer-person-item.json +86 -0
  774. package/manifest/components/composer-send.json +86 -0
  775. package/manifest/components/composer-toolbar.json +65 -0
  776. package/manifest/components/composer-voice-button.json +71 -0
  777. package/manifest/components/composer-voice.json +81 -0
  778. package/manifest/components/composer.json +238 -0
  779. package/manifest/components/computer-use.json +98 -0
  780. package/manifest/components/confidence-marker.json +86 -0
  781. package/manifest/components/connection-state.json +103 -0
  782. package/manifest/components/container.json +75 -0
  783. package/manifest/components/context-breakdown.json +72 -0
  784. package/manifest/components/context-menu.json +134 -0
  785. package/manifest/components/context-usage.json +98 -0
  786. package/manifest/components/conversation-search.json +111 -0
  787. package/manifest/components/copy-button.json +118 -0
  788. package/manifest/components/cost-meter.json +84 -0
  789. package/manifest/components/cue-logotype.json +110 -0
  790. package/manifest/components/cue-mark.json +111 -0
  791. package/manifest/components/cue-portal-frame.json +65 -0
  792. package/manifest/components/data-row.json +222 -0
  793. package/manifest/components/data-table-pagination.json +97 -0
  794. package/manifest/components/data-table-toolbar.json +127 -0
  795. package/manifest/components/data-tree.json +185 -0
  796. package/manifest/components/date-field.json +93 -0
  797. package/manifest/components/date-picker.json +255 -0
  798. package/manifest/components/date-range-picker.json +255 -0
  799. package/manifest/components/day-separator.json +63 -0
  800. package/manifest/components/delegation-card.json +196 -0
  801. package/manifest/components/density.json +93 -0
  802. package/manifest/components/description-list.json +91 -0
  803. package/manifest/components/diagram.json +126 -0
  804. package/manifest/components/dialog.json +222 -0
  805. package/manifest/components/disclosure.json +134 -0
  806. package/manifest/components/dmx-bar.json +107 -0
  807. package/manifest/components/dmx-strip.json +117 -0
  808. package/manifest/components/document-reference.json +108 -0
  809. package/manifest/components/draft-restore.json +96 -0
  810. package/manifest/components/drawer.json +204 -0
  811. package/manifest/components/dropdown-menu.json +275 -0
  812. package/manifest/components/edit-message.json +131 -0
  813. package/manifest/components/elements-command-palette.json +122 -0
  814. package/manifest/components/elements-composer.json +71 -0
  815. package/manifest/components/elements-data-table.json +75 -0
  816. package/manifest/components/elements-timeline.json +77 -0
  817. package/manifest/components/elicitation-form.json +130 -0
  818. package/manifest/components/empty-state-composer.json +71 -0
  819. package/manifest/components/empty-state-greeting.json +49 -0
  820. package/manifest/components/empty-state-suggestion.json +60 -0
  821. package/manifest/components/empty-state-suggestions.json +49 -0
  822. package/manifest/components/empty-state.json +111 -0
  823. package/manifest/components/end-of-turn-summary.json +89 -0
  824. package/manifest/components/env-var-input.json +194 -0
  825. package/manifest/components/error-state.json +93 -0
  826. package/manifest/components/export-dialog.json +101 -0
  827. package/manifest/components/eyebrow.json +59 -0
  828. package/manifest/components/feedback-dialog.json +133 -0
  829. package/manifest/components/field-description.json +66 -0
  830. package/manifest/components/field-error.json +87 -0
  831. package/manifest/components/field-label.json +66 -0
  832. package/manifest/components/field.json +82 -0
  833. package/manifest/components/file-tree.json +96 -0
  834. package/manifest/components/file-upload.json +204 -0
  835. package/manifest/components/flow-background.json +50 -0
  836. package/manifest/components/flow-controls.json +50 -0
  837. package/manifest/components/flow-graph.json +86 -0
  838. package/manifest/components/folder-icon.json +46 -0
  839. package/manifest/components/footer.json +133 -0
  840. package/manifest/components/frac.json +68 -0
  841. package/manifest/components/frames.json +210 -0
  842. package/manifest/components/generation-loader.json +78 -0
  843. package/manifest/components/generative-ui.json +125 -0
  844. package/manifest/components/grid.json +132 -0
  845. package/manifest/components/group-bar.json +122 -0
  846. package/manifest/components/guardrail-notice.json +109 -0
  847. package/manifest/components/hover-card.json +189 -0
  848. package/manifest/components/icon-button.json +106 -0
  849. package/manifest/components/image-generation.json +73 -0
  850. package/manifest/components/info-tip.json +133 -0
  851. package/manifest/components/inline-citation.json +90 -0
  852. package/manifest/components/input-group.json +112 -0
  853. package/manifest/components/input.json +121 -0
  854. package/manifest/components/inspector.json +199 -0
  855. package/manifest/components/item.json +163 -0
  856. package/manifest/components/job-progress.json +116 -0
  857. package/manifest/components/kbd.json +52 -0
  858. package/manifest/components/launcher-bubble.json +130 -0
  859. package/manifest/components/ledger.json +330 -0
  860. package/manifest/components/link.json +94 -0
  861. package/manifest/components/live-region-announcer.json +95 -0
  862. package/manifest/components/log-viewer.json +172 -0
  863. package/manifest/components/map-answer.json +97 -0
  864. package/manifest/components/markdown-text.json +126 -0
  865. package/manifest/components/math-block.json +84 -0
  866. package/manifest/components/mcp-server-icon.json +46 -0
  867. package/manifest/components/mcp-server-panel.json +102 -0
  868. package/manifest/components/memory-chips.json +73 -0
  869. package/manifest/components/menubar.json +184 -0
  870. package/manifest/components/message-actions.json +125 -0
  871. package/manifest/components/message-attachments.json +71 -0
  872. package/manifest/components/message-branches.json +83 -0
  873. package/manifest/components/message-list.json +121 -0
  874. package/manifest/components/message-pair.json +107 -0
  875. package/manifest/components/message-queue.json +85 -0
  876. package/manifest/components/message-timing.json +69 -0
  877. package/manifest/components/message.json +149 -0
  878. package/manifest/components/meter.json +150 -0
  879. package/manifest/components/mobile-composer.json +163 -0
  880. package/manifest/components/model-picker.json +87 -0
  881. package/manifest/components/multi-select.json +255 -0
  882. package/manifest/components/musical-time-input.json +141 -0
  883. package/manifest/components/navigation-menu.json +269 -0
  884. package/manifest/components/node-card.json +144 -0
  885. package/manifest/components/node-handle.json +84 -0
  886. package/manifest/components/number-field.json +131 -0
  887. package/manifest/components/number-ticker.json +67 -0
  888. package/manifest/components/onboarding.json +100 -0
  889. package/manifest/components/otp-field.json +163 -0
  890. package/manifest/components/page-shell.json +129 -0
  891. package/manifest/components/pagination.json +108 -0
  892. package/manifest/components/panel-header.json +89 -0
  893. package/manifest/components/panel.json +71 -0
  894. package/manifest/components/password-input.json +171 -0
  895. package/manifest/components/permission-grant.json +115 -0
  896. package/manifest/components/permission-scopes.json +184 -0
  897. package/manifest/components/piano-keyboard.json +149 -0
  898. package/manifest/components/plussie.json +140 -0
  899. package/manifest/components/popover.json +231 -0
  900. package/manifest/components/preset-section.json +80 -0
  901. package/manifest/components/preview.json +294 -0
  902. package/manifest/components/progress.json +114 -0
  903. package/manifest/components/prompt-library.json +122 -0
  904. package/manifest/components/queue-dock.json +139 -0
  905. package/manifest/components/quota-banner.json +113 -0
  906. package/manifest/components/quote-reply.json +129 -0
  907. package/manifest/components/radio-group.json +83 -0
  908. package/manifest/components/radio.json +94 -0
  909. package/manifest/components/rating.json +188 -0
  910. package/manifest/components/read-aloud.json +139 -0
  911. package/manifest/components/reasoning-effort.json +95 -0
  912. package/manifest/components/reasoning-panel.json +135 -0
  913. package/manifest/components/recommendation-card.json +133 -0
  914. package/manifest/components/regenerate-menu.json +107 -0
  915. package/manifest/components/replay-player.json +124 -0
  916. package/manifest/components/research-report.json +87 -0
  917. package/manifest/components/resizable.json +91 -0
  918. package/manifest/components/retrieval-chunks.json +98 -0
  919. package/manifest/components/revert-dock.json +197 -0
  920. package/manifest/components/reviewable-diff.json +113 -0
  921. package/manifest/components/risk-badge.json +89 -0
  922. package/manifest/components/row.json +122 -0
  923. package/manifest/components/schedule-card.json +121 -0
  924. package/manifest/components/score-breakdown.json +108 -0
  925. package/manifest/components/scroll-anchor.json +84 -0
  926. package/manifest/components/scroll-area.json +114 -0
  927. package/manifest/components/scrollable-tabs-list.json +91 -0
  928. package/manifest/components/scrub-input.json +268 -0
  929. package/manifest/components/seam-cell.json +91 -0
  930. package/manifest/components/seam-grid.json +84 -0
  931. package/manifest/components/seam-list.json +56 -0
  932. package/manifest/components/search-input.json +195 -0
  933. package/manifest/components/section-header.json +140 -0
  934. package/manifest/components/segmented-control.json +178 -0
  935. package/manifest/components/select.json +253 -0
  936. package/manifest/components/separator.json +56 -0
  937. package/manifest/components/settings-panel.json +152 -0
  938. package/manifest/components/shape-section.json +70 -0
  939. package/manifest/components/shared-conversation.json +107 -0
  940. package/manifest/components/sheet.json +210 -0
  941. package/manifest/components/shimmer-label.json +61 -0
  942. package/manifest/components/sidebar.json +245 -0
  943. package/manifest/components/signal-edge.json +56 -0
  944. package/manifest/components/skeleton.json +46 -0
  945. package/manifest/components/skill-icon.json +46 -0
  946. package/manifest/components/slider.json +106 -0
  947. package/manifest/components/sources.json +97 -0
  948. package/manifest/components/sparkline.json +89 -0
  949. package/manifest/components/speaker-identity.json +66 -0
  950. package/manifest/components/spec-sheet.json +93 -0
  951. package/manifest/components/spectrum-visualizer.json +147 -0
  952. package/manifest/components/spinner.json +71 -0
  953. package/manifest/components/stack-icon.json +46 -0
  954. package/manifest/components/stack.json +143 -0
  955. package/manifest/components/stacks-matrix-icon.json +46 -0
  956. package/manifest/components/stat.json +111 -0
  957. package/manifest/components/status-bar.json +233 -0
  958. package/manifest/components/status-dot.json +97 -0
  959. package/manifest/components/stepper.json +107 -0
  960. package/manifest/components/stopped-run.json +97 -0
  961. package/manifest/components/streaming-text.json +82 -0
  962. package/manifest/components/sub.json +45 -0
  963. package/manifest/components/subagent-list.json +106 -0
  964. package/manifest/components/suggestions.json +106 -0
  965. package/manifest/components/sup.json +45 -0
  966. package/manifest/components/swap-label.json +86 -0
  967. package/manifest/components/switch.json +102 -0
  968. package/manifest/components/table-scroll-region.json +78 -0
  969. package/manifest/components/table.json +306 -0
  970. package/manifest/components/tabs.json +156 -0
  971. package/manifest/components/tags-input.json +255 -0
  972. package/manifest/components/tail-status.json +138 -0
  973. package/manifest/components/terminal-block.json +111 -0
  974. package/manifest/components/terminal-frame.json +146 -0
  975. package/manifest/components/textarea.json +104 -0
  976. package/manifest/components/theme-configurator.json +158 -0
  977. package/manifest/components/theme-provider.json +228 -0
  978. package/manifest/components/thinking-indicator.json +69 -0
  979. package/manifest/components/thread-list.json +87 -0
  980. package/manifest/components/thread-search.json +108 -0
  981. package/manifest/components/threshold-rail.json +223 -0
  982. package/manifest/components/time-boundary.json +68 -0
  983. package/manifest/components/time-field.json +93 -0
  984. package/manifest/components/timeline-ruler.json +178 -0
  985. package/manifest/components/timeline.json +131 -0
  986. package/manifest/components/title-bar.json +97 -0
  987. package/manifest/components/toast.json +140 -0
  988. package/manifest/components/todo-list.json +76 -0
  989. package/manifest/components/toggle-group.json +134 -0
  990. package/manifest/components/toggle.json +140 -0
  991. package/manifest/components/token-editor.json +106 -0
  992. package/manifest/components/tool-call-card.json +268 -0
  993. package/manifest/components/tool-call.json +147 -0
  994. package/manifest/components/tool-error.json +141 -0
  995. package/manifest/components/tool-group.json +97 -0
  996. package/manifest/components/tool-timeline.json +147 -0
  997. package/manifest/components/toolbar.json +192 -0
  998. package/manifest/components/tooltip.json +199 -0
  999. package/manifest/components/trace-waterfall.json +84 -0
  1000. package/manifest/components/tree-visibility-toggle.json +99 -0
  1001. package/manifest/components/tree.json +182 -0
  1002. package/manifest/components/turn-footer.json +133 -0
  1003. package/manifest/components/two-step-button.json +150 -0
  1004. package/manifest/components/typing-indicator.json +60 -0
  1005. package/manifest/components/universe-grid.json +155 -0
  1006. package/manifest/components/unread-divider.json +58 -0
  1007. package/manifest/components/usage-chart.json +162 -0
  1008. package/manifest/components/verdict-row.json +106 -0
  1009. package/manifest/components/voice-conversation.json +141 -0
  1010. package/manifest/components/web-preview.json +105 -0
  1011. package/manifest/components/web-search.json +108 -0
  1012. package/manifest/components/work-collapse.json +125 -0
  1013. package/manifest/fixtures.json +776 -0
  1014. package/manifest/manifest.json +5037 -0
  1015. package/manifest/tokens.json +288 -0
  1016. package/package.json +278 -0
@@ -0,0 +1,86 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { field, inkButton, mono, paper } from "./surfaces.js";
4
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
+ import { KeyRoundIcon } from "lucide-react";
6
+ //#region src/elements/permission-grant.tsx
7
+ /**
8
+ * Granting a capability rather than approving one action, with the reach spelled out.
9
+ *
10
+ * @example
11
+ * import { PermissionGrant } from "@cueplusplus/ui/elements";
12
+ *
13
+ * <PermissionGrant
14
+ * capability="Filesystem access"
15
+ * requester="filesystem-mcp"
16
+ * reach={reach}
17
+ * scope="pending"
18
+ * onGrant={setScope}
19
+ * />
20
+ */
21
+ function PermissionGrant({ capability, requester, reach, scope, onGrant, className, ...props }) {
22
+ return /* @__PURE__ */ jsxs("div", {
23
+ "data-slot": "permission-grant",
24
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-3.5 rounded-(--radius-overlay) p-4", className),
25
+ ...props,
26
+ children: [
27
+ /* @__PURE__ */ jsxs("div", {
28
+ className: "flex items-center gap-2.5",
29
+ children: [/* @__PURE__ */ jsx("span", {
30
+ className: "bg-surface-1 text-fg-muted flex size-7 shrink-0 items-center justify-center rounded-(--radius-surface)",
31
+ children: /* @__PURE__ */ jsx(KeyRoundIcon, { className: "size-3.5" })
32
+ }), /* @__PURE__ */ jsxs("div", {
33
+ className: "flex min-w-0 flex-1 flex-col",
34
+ children: [/* @__PURE__ */ jsx("span", {
35
+ className: "truncate text-(length:--cue-text-body) font-medium",
36
+ children: capability
37
+ }), /* @__PURE__ */ jsxs("span", {
38
+ className: "text-fg-muted truncate text-(length:--cue-text-ui)",
39
+ children: ["requested by ", requester]
40
+ })]
41
+ })]
42
+ }),
43
+ /* @__PURE__ */ jsxs("div", {
44
+ className: "flex flex-col gap-1",
45
+ children: [/* @__PURE__ */ jsx("span", {
46
+ className: cn(mono, "text-fg-subtle"),
47
+ children: "this grants"
48
+ }), reach.map((item) => /* @__PURE__ */ jsxs("span", {
49
+ className: "text-fg-muted flex items-baseline gap-2 text-(length:--cue-text-ui)",
50
+ children: [/* @__PURE__ */ jsx("span", {
51
+ "aria-hidden": true,
52
+ className: "bg-surface-3 size-1 rounded-full"
53
+ }), item]
54
+ }, item))]
55
+ }),
56
+ /* @__PURE__ */ jsx("div", {
57
+ className: "flex h-8 items-center justify-end gap-2",
58
+ children: scope === "pending" ? /* @__PURE__ */ jsxs(Fragment, { children: [
59
+ /* @__PURE__ */ jsx("button", {
60
+ type: "button",
61
+ onClick: () => onGrant?.("denied"),
62
+ className: "text-fg-muted hover:bg-surface-2 hover:text-fg h-8 rounded-full px-3 text-(length:--cue-text-ui) font-medium transition-[background-color,color,scale] duration-150 active:scale-[0.96]",
63
+ children: "Deny"
64
+ }),
65
+ /* @__PURE__ */ jsx("button", {
66
+ type: "button",
67
+ onClick: () => onGrant?.("session"),
68
+ className: "text-fg-muted hover:bg-surface-2 hover:text-fg h-8 rounded-full px-3 text-(length:--cue-text-ui) font-medium transition-[background-color,color,scale] duration-150 active:scale-[0.96]",
69
+ children: "This session"
70
+ }),
71
+ /* @__PURE__ */ jsx("button", {
72
+ type: "button",
73
+ onClick: () => onGrant?.("always"),
74
+ className: cn(inkButton, "flex h-8 items-center rounded-full px-3 text-(length:--cue-text-ui) font-medium"),
75
+ children: "Always"
76
+ })
77
+ ] }) : /* @__PURE__ */ jsx("span", {
78
+ className: cn(field, mono, "cue-elements-fade-in cue-elements-animate-in text-fg-muted rounded-full px-2.5 py-1.5 duration-300"),
79
+ children: scope === "denied" ? "denied" : `granted · ${scope}`
80
+ }, scope)
81
+ })
82
+ ]
83
+ });
84
+ }
85
+ //#endregion
86
+ export { PermissionGrant };
@@ -0,0 +1,215 @@
1
+ import { PermissionLabels } from "./vocabulary.js";
2
+ import * as React from "react";
3
+ //#region src/elements/permission-scopes.d.ts
4
+ /**
5
+ * One destination a standing grant can be written to.
6
+ *
7
+ * `writes` has no default anywhere in this package and never will.
8
+ * `PERMISSION_SCOPE_LABELS` ships the four reaches in words — `this session`,
9
+ * `this project (just you)`, `this project (shared)`, `all projects` — because
10
+ * those are the same everywhere; where a grant lands is the product's own
11
+ * answer, and a design system that guessed at a path would be committing the
12
+ * exact defect this element exists to prevent.
13
+ */
14
+ interface PermissionScope {
15
+ /** Identifies it, and what `onAlwaysAllow` reports. */
16
+ id: string;
17
+ /**
18
+ * The words that go inside the answer: `this project (just you)`.
19
+ * `PERMISSION_SCOPE_LABELS` is the shipped set.
20
+ */
21
+ label: string;
22
+ /**
23
+ * What choosing it writes, and where, as a sentence a person can act on:
24
+ * `Saves to .cue/settings.local.json (gitignored)`, `Not saved. Gone when
25
+ * this run ends.` Drawn under the answer, never hidden behind a hover, and
26
+ * wrapped inside the word if the path leaves it nowhere else to break — it
27
+ * is the card's only account of where the grant lands, so it is never
28
+ * shortened and never allowed off the edge.
29
+ */
30
+ writes: string;
31
+ }
32
+ /** What {@link formatAlwaysAllow} was asked to write a label for. */
33
+ interface AlwaysAllowInput {
34
+ /**
35
+ * The rules the grant would write, exactly as they will be written:
36
+ * `Bash(git commit:*)`, `Read(src/**)`. Never shortened.
37
+ */
38
+ rules: readonly string[];
39
+ /** The chosen scope's words: `this project (just you)`. */
40
+ scope: string;
41
+ /**
42
+ * Whether the rules are rules or directories. Directories get their own
43
+ * phrasing — the study's only other form — because `allow /Users/kit/rig/`
44
+ * reads as a path and `allow access to /Users/kit/rig/` reads as a grant.
45
+ */
46
+ kind?: "rule" | "directory";
47
+ /** What to say when there is no rule to name. `PERMISSION_LABELS.fallback`. */
48
+ fallback?: string;
49
+ }
50
+ /**
51
+ * The self-writing label, in the three pieces the control renders it in.
52
+ *
53
+ * The scope is separated out because it is the one part of the sentence that
54
+ * can change without the answer changing: the reader picks a different
55
+ * destination and the same grant goes somewhere else. `text` is all three
56
+ * joined, and it is what the control's accessible name is built from, so the
57
+ * sentence a screen reader hears and the sentence on the screen cannot drift.
58
+ */
59
+ interface AlwaysAllowLabel {
60
+ /** Everything before the scope: `Yes, allow Bash(git commit:*) for `. */
61
+ lead: string;
62
+ /** The scope's own words, which the control draws as its destination. */
63
+ scope: string;
64
+ /**
65
+ * Everything after it. Empty in every form the study found, and present
66
+ * because a table translated into a language that puts the scope first will
67
+ * need it.
68
+ */
69
+ trail: string;
70
+ /** The three joined: the whole sentence. */
71
+ text: string;
72
+ }
73
+ /**
74
+ * Write the "always allow" answer's label from what it would actually grant.
75
+ *
76
+ * The four forms are Claude Code's, and the reason they are worth copying is
77
+ * that they degrade in the right order: name one rule, name two, then count.
78
+ * What this does **not** do is shorten — no 17-character elision, no stripping
79
+ * the `:*` off a prefix rule — because the elided part is the part that says
80
+ * how far the grant reaches. When there are more rules than the label can name,
81
+ * {@link PermissionScopes} lists every one of them underneath rather than
82
+ * leaving `and 3 more` as the only account of what was granted.
83
+ *
84
+ * @example
85
+ * formatAlwaysAllow({ rules: ["Bash(git commit:*)"], scope: "this project (just you)" }).text;
86
+ * // "Yes, allow Bash(git commit:*) for this project (just you)"
87
+ * @example
88
+ * formatAlwaysAllow({ rules: ["Read(src/**)", "Read(docs/**)", "Read(test/**)"], scope: "all projects" }).text;
89
+ * // "Yes, allow Read(src/**) and 2 more for all projects"
90
+ * @example
91
+ * formatAlwaysAllow({ rules: ["/Users/kit/rig"], scope: "this session", kind: "directory" }).text;
92
+ * // "Yes, allow access to /Users/kit/rig/ for this session"
93
+ */
94
+ declare function formatAlwaysAllow({ rules, scope, kind, fallback }: AlwaysAllowInput): AlwaysAllowLabel;
95
+ interface PermissionScopesProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children" | "onSelect"> {
96
+ /**
97
+ * The question, in the words of the thing being asked for: `Run this
98
+ * command?`, `Edit this file?`. One step up in size, as the reference sets
99
+ * it: it is the only sentence on the card that has to be read.
100
+ */
101
+ question: string;
102
+ /**
103
+ * The file, host or command the question is about, set in mono beside it.
104
+ * Omit for a question that names its own subject.
105
+ */
106
+ subject?: string;
107
+ /**
108
+ * The exact input the call would run with, drawn in a recessed mono box —
109
+ * the command, the patch, the URL. Shown verbatim and never parsed.
110
+ */
111
+ input?: string;
112
+ /**
113
+ * The rules a standing grant would write, exactly as they will be written.
114
+ * The always-allow answer's label is built from these; when there are more
115
+ * than the label can name, all of them are listed under it.
116
+ */
117
+ rules?: readonly string[];
118
+ /** Whether `rules` are rules or directories, which changes the phrasing. */
119
+ ruleKind?: "rule" | "directory";
120
+ /**
121
+ * Where a standing grant can be written, in the order they are offered.
122
+ * **No scopes means no always-allow answer**: a permanent grant that cannot
123
+ * say where it is saved is not one this element will offer.
124
+ */
125
+ scopes?: readonly PermissionScope[];
126
+ /**
127
+ * Which scope is chosen, by `id`. Defaults to the first. Claude Code
128
+ * persists this choice across prompts and so should a console — which is why
129
+ * it is a prop here rather than state: this element never remembers anything.
130
+ */
131
+ scope?: string;
132
+ /** Called with the next scope's `id` when the destination is cycled. */
133
+ onScopeChange?: (id: string) => void;
134
+ /** Yes, once. The answer exists only when this is given. */
135
+ onAllowOnce?: () => void;
136
+ /**
137
+ * Yes, and write the rules to the chosen scope — reported by `id`. The
138
+ * answer exists only when this **and** at least one scope are given.
139
+ */
140
+ onAlwaysAllow?: (scope: string) => void;
141
+ /**
142
+ * No. Also what `Escape` does, while focus is inside the card. The answer
143
+ * exists only when this is given.
144
+ */
145
+ onDeny?: () => void;
146
+ /** The card's own six strings, merged over `PERMISSION_LABELS`. */
147
+ labels?: Partial<PermissionLabels>;
148
+ }
149
+ /**
150
+ * Approval that says how far it reaches and where that is written down.
151
+ *
152
+ * Every product in the study offers a scope at the moment of approval, and
153
+ * every one of them labels it the same static way — `Always allow` — which is
154
+ * the least informative string in an agent UI: it is the only control on the
155
+ * screen whose consequences outlive the conversation, and it says nothing about
156
+ * what it grants or where the grant goes. So this one writes its own label.
157
+ * `Yes, allow Bash(git commit:*) for this project (just you)` names the rule
158
+ * and the reach; the line under it names the file, in a sentence, permanently
159
+ * visible.
160
+ *
161
+ * Nothing is shortened. Claude Code elides a long rule and strips the `:*` off
162
+ * a prefix rule, and both cuts land on the part that says how much is being
163
+ * granted, so the label here wraps instead. When there are more rules than the
164
+ * sentence can name, every one of them is listed under the answer — `and 3
165
+ * more` is a count, and a count is not an account.
166
+ *
167
+ * The three answers are numbered, and the numbers are real **while focus is
168
+ * inside the card**: `1`, `2` and `3` fire whichever answers are rendered,
169
+ * built from the same list that draws them, so a card with no always-allow has
170
+ * `2` on its deny, and `Escape` denies. The handler is the card's own
171
+ * `onKeyDown` and nothing is ever bound to the document, so the keys answer for
172
+ * a reader who has tabbed to an answer or been handed the card, and for nobody
173
+ * else.
174
+ *
175
+ * That is narrower than the reference, and the narrowing is the point. Claude
176
+ * Code disables its buttons for 500ms after mount and *then* takes focus, so
177
+ * its digits answer from anywhere; this card never claims focus at all, because
178
+ * a card that arrives mid-sentence and starts answering keystrokes is the bug
179
+ * that delay exists to prevent — and a row in a library cannot know whether the
180
+ * reader is halfway through typing `1` into a composer above it. A product that
181
+ * wants the digits to answer from anywhere has the information to decide that
182
+ * safely and this element does not: it routes its own key handler to the same
183
+ * three callbacks, or hands the card focus itself with a `ref` and a `tabIndex`
184
+ * of its own.
185
+ *
186
+ * There is no settled state. An answered permission is not a card any more; the
187
+ * row that survives is the tool call's own, with its status changed. Every
188
+ * product that modelled approval as an overlay ended up with the bug where the
189
+ * next message hides the answer.
190
+ *
191
+ * @example
192
+ * import { PermissionScopes, PERMISSION_SCOPE_LABELS } from "@cueplusplus/ui/elements";
193
+ *
194
+ * <PermissionScopes
195
+ * question="Run this command?"
196
+ * subject="cue-cli"
197
+ * input='cue patch --universe 3 --fixtures 6'
198
+ * rules={["Bash(cue patch:*)"]}
199
+ * scopes={[
200
+ * { id: "session", label: PERMISSION_SCOPE_LABELS.session, writes: "Not saved. Gone when this run ends." },
201
+ * { id: "project", label: PERMISSION_SCOPE_LABELS.project, writes: "Saves to .cue/settings.local.json (gitignored)" },
202
+ * ]}
203
+ * scope={scope}
204
+ * onScopeChange={setScope}
205
+ * onAllowOnce={() => allow()}
206
+ * onAlwaysAllow={(id) => remember(id)}
207
+ * onDeny={() => deny()}
208
+ * />
209
+ * @example
210
+ * // No scopes: the card asks, and the only answers are once and no.
211
+ * <PermissionScopes question="Delete this file?" subject="cues/old.cue" onAllowOnce={allow} onDeny={deny} />
212
+ */
213
+ declare const PermissionScopes: React.ForwardRefExoticComponent<PermissionScopesProps & React.RefAttributes<HTMLDivElement>>;
214
+ //#endregion
215
+ export { AlwaysAllowInput, AlwaysAllowLabel, PermissionScope, PermissionScopes, PermissionScopesProps, formatAlwaysAllow };
@@ -0,0 +1,249 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { field, fieldInteractive, mono, paper } from "./surfaces.js";
4
+ import { PERMISSION_LABELS } from "./vocabulary.js";
5
+ import * as React from "react";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+ //#region src/elements/permission-scopes.tsx
8
+ /**
9
+ * Write the "always allow" answer's label from what it would actually grant.
10
+ *
11
+ * The four forms are Claude Code's, and the reason they are worth copying is
12
+ * that they degrade in the right order: name one rule, name two, then count.
13
+ * What this does **not** do is shorten — no 17-character elision, no stripping
14
+ * the `:*` off a prefix rule — because the elided part is the part that says
15
+ * how far the grant reaches. When there are more rules than the label can name,
16
+ * {@link PermissionScopes} lists every one of them underneath rather than
17
+ * leaving `and 3 more` as the only account of what was granted.
18
+ *
19
+ * @example
20
+ * formatAlwaysAllow({ rules: ["Bash(git commit:*)"], scope: "this project (just you)" }).text;
21
+ * // "Yes, allow Bash(git commit:*) for this project (just you)"
22
+ * @example
23
+ * formatAlwaysAllow({ rules: ["Read(src/**)", "Read(docs/**)", "Read(test/**)"], scope: "all projects" }).text;
24
+ * // "Yes, allow Read(src/**) and 2 more for all projects"
25
+ * @example
26
+ * formatAlwaysAllow({ rules: ["/Users/kit/rig"], scope: "this session", kind: "directory" }).text;
27
+ * // "Yes, allow access to /Users/kit/rig/ for this session"
28
+ */
29
+ function formatAlwaysAllow({ rules, scope, kind = "rule", fallback = PERMISSION_LABELS.fallback }) {
30
+ const named = rules.filter((rule) => rule.trim() !== "");
31
+ const join = (lead) => ({
32
+ lead,
33
+ scope,
34
+ trail: "",
35
+ text: `${lead}${scope}`
36
+ });
37
+ if (named.length === 0) return {
38
+ lead: fallback,
39
+ scope: "",
40
+ trail: "",
41
+ text: fallback
42
+ };
43
+ if (kind === "directory") {
44
+ const first = named[0];
45
+ if (named.length === 1) return join(`Yes, allow access to ${first.endsWith("/") ? first : `${first}/`} for `);
46
+ return join(`Yes, allow access to ${named.length} directories for `);
47
+ }
48
+ if (named.length === 1) return join(`Yes, allow ${named[0]} for `);
49
+ if (named.length === 2) return join(`Yes, allow ${named[0]} and ${named[1]} for `);
50
+ return join(`Yes, allow ${named[0]} and ${named.length - 1} more for `);
51
+ }
52
+ /**
53
+ * Approval that says how far it reaches and where that is written down.
54
+ *
55
+ * Every product in the study offers a scope at the moment of approval, and
56
+ * every one of them labels it the same static way — `Always allow` — which is
57
+ * the least informative string in an agent UI: it is the only control on the
58
+ * screen whose consequences outlive the conversation, and it says nothing about
59
+ * what it grants or where the grant goes. So this one writes its own label.
60
+ * `Yes, allow Bash(git commit:*) for this project (just you)` names the rule
61
+ * and the reach; the line under it names the file, in a sentence, permanently
62
+ * visible.
63
+ *
64
+ * Nothing is shortened. Claude Code elides a long rule and strips the `:*` off
65
+ * a prefix rule, and both cuts land on the part that says how much is being
66
+ * granted, so the label here wraps instead. When there are more rules than the
67
+ * sentence can name, every one of them is listed under the answer — `and 3
68
+ * more` is a count, and a count is not an account.
69
+ *
70
+ * The three answers are numbered, and the numbers are real **while focus is
71
+ * inside the card**: `1`, `2` and `3` fire whichever answers are rendered,
72
+ * built from the same list that draws them, so a card with no always-allow has
73
+ * `2` on its deny, and `Escape` denies. The handler is the card's own
74
+ * `onKeyDown` and nothing is ever bound to the document, so the keys answer for
75
+ * a reader who has tabbed to an answer or been handed the card, and for nobody
76
+ * else.
77
+ *
78
+ * That is narrower than the reference, and the narrowing is the point. Claude
79
+ * Code disables its buttons for 500ms after mount and *then* takes focus, so
80
+ * its digits answer from anywhere; this card never claims focus at all, because
81
+ * a card that arrives mid-sentence and starts answering keystrokes is the bug
82
+ * that delay exists to prevent — and a row in a library cannot know whether the
83
+ * reader is halfway through typing `1` into a composer above it. A product that
84
+ * wants the digits to answer from anywhere has the information to decide that
85
+ * safely and this element does not: it routes its own key handler to the same
86
+ * three callbacks, or hands the card focus itself with a `ref` and a `tabIndex`
87
+ * of its own.
88
+ *
89
+ * There is no settled state. An answered permission is not a card any more; the
90
+ * row that survives is the tool call's own, with its status changed. Every
91
+ * product that modelled approval as an overlay ended up with the bug where the
92
+ * next message hides the answer.
93
+ *
94
+ * @example
95
+ * import { PermissionScopes, PERMISSION_SCOPE_LABELS } from "@cueplusplus/ui/elements";
96
+ *
97
+ * <PermissionScopes
98
+ * question="Run this command?"
99
+ * subject="cue-cli"
100
+ * input='cue patch --universe 3 --fixtures 6'
101
+ * rules={["Bash(cue patch:*)"]}
102
+ * scopes={[
103
+ * { id: "session", label: PERMISSION_SCOPE_LABELS.session, writes: "Not saved. Gone when this run ends." },
104
+ * { id: "project", label: PERMISSION_SCOPE_LABELS.project, writes: "Saves to .cue/settings.local.json (gitignored)" },
105
+ * ]}
106
+ * scope={scope}
107
+ * onScopeChange={setScope}
108
+ * onAllowOnce={() => allow()}
109
+ * onAlwaysAllow={(id) => remember(id)}
110
+ * onDeny={() => deny()}
111
+ * />
112
+ * @example
113
+ * // No scopes: the card asks, and the only answers are once and no.
114
+ * <PermissionScopes question="Delete this file?" subject="cues/old.cue" onAllowOnce={allow} onDeny={deny} />
115
+ */
116
+ const PermissionScopes = React.forwardRef(function PermissionScopes({ question, subject, input, rules = [], ruleKind = "rule", scopes = [], scope, onScopeChange, onAllowOnce, onAlwaysAllow, onDeny, labels, className, onKeyDown, ...elementProps }, ref) {
117
+ const copy = {
118
+ ...PERMISSION_LABELS,
119
+ ...labels
120
+ };
121
+ const chosen = scopes.find((entry) => entry.id === scope) ?? scopes[0];
122
+ const always = chosen === void 0 ? void 0 : formatAlwaysAllow({
123
+ rules,
124
+ scope: chosen.label,
125
+ kind: ruleKind,
126
+ fallback: copy.fallback
127
+ });
128
+ const answers = [];
129
+ if (onAllowOnce !== void 0) answers.push({
130
+ id: "once",
131
+ label: copy.allowOnce,
132
+ run: onAllowOnce
133
+ });
134
+ if (onAlwaysAllow !== void 0 && chosen !== void 0 && always !== void 0) answers.push({
135
+ id: "always",
136
+ label: /* @__PURE__ */ jsxs(Fragment, { children: [
137
+ always.lead,
138
+ always.scope === "" ? null : /* @__PURE__ */ jsx("span", {
139
+ className: "font-medium underline decoration-dotted underline-offset-2",
140
+ children: always.scope
141
+ }),
142
+ always.trail
143
+ ] }),
144
+ run: () => onAlwaysAllow(chosen.id)
145
+ });
146
+ if (onDeny !== void 0) answers.push({
147
+ id: "deny",
148
+ label: copy.deny,
149
+ run: onDeny
150
+ });
151
+ const listed = rules.filter((rule) => rule.trim() !== "");
152
+ const namesAtMost = ruleKind === "directory" ? 1 : 2;
153
+ const spelled = answers.some((answer) => answer.id === "always") && listed.length > namesAtMost;
154
+ return /* @__PURE__ */ jsxs("div", {
155
+ ref,
156
+ "data-slot": "permission-scopes",
157
+ "data-scope": chosen?.id,
158
+ onKeyDown: (event) => {
159
+ onKeyDown?.(event);
160
+ if (event.defaultPrevented) return;
161
+ if (event.key === "Escape" && onDeny !== void 0) {
162
+ event.preventDefault();
163
+ onDeny();
164
+ return;
165
+ }
166
+ if (event.metaKey || event.ctrlKey || event.altKey) return;
167
+ const at = Number.parseInt(event.key, 10);
168
+ const answer = Number.isNaN(at) ? void 0 : answers[at - 1];
169
+ if (answer === void 0) return;
170
+ event.preventDefault();
171
+ answer.run();
172
+ },
173
+ className: cn(paper, "flex w-full max-w-md flex-col gap-2.5 rounded-(--radius-overlay) p-3", className),
174
+ ...elementProps,
175
+ children: [
176
+ /* @__PURE__ */ jsxs("p", {
177
+ className: "text-fg text-(length:--cue-text-body) font-bold wrap-anywhere",
178
+ children: [question, subject === void 0 ? null : /* @__PURE__ */ jsxs(Fragment, { children: [" ", /* @__PURE__ */ jsx("span", {
179
+ "data-slot": "permission-scopes-subject",
180
+ className: cn(mono, "font-normal"),
181
+ children: subject
182
+ })] })]
183
+ }),
184
+ input === void 0 ? null : /* @__PURE__ */ jsx("pre", {
185
+ "data-slot": "permission-scopes-input",
186
+ className: cn(field, mono, "text-fg-muted max-h-40 overflow-auto rounded-(--radius-control) px-2.5 py-2 whitespace-pre-wrap"),
187
+ children: input
188
+ }),
189
+ /* @__PURE__ */ jsx("ul", {
190
+ "data-slot": "permission-scopes-answers",
191
+ className: "flex flex-col gap-1",
192
+ children: answers.map((answer, index) => /* @__PURE__ */ jsxs("li", {
193
+ className: "flex flex-col gap-1",
194
+ children: [/* @__PURE__ */ jsxs("button", {
195
+ type: "button",
196
+ "data-answer": answer.id,
197
+ onClick: answer.run,
198
+ className: cn(answer.id === "always" ? fieldInteractive : "hover:bg-surface-2", "flex w-full items-baseline gap-1 rounded-(--radius-control) px-2 py-1.5 text-start text-(length:--cue-text-ui) outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent", answer.id === "deny" ? "text-fg-muted" : "text-fg"),
199
+ children: [/* @__PURE__ */ jsx("span", {
200
+ className: cn(mono, "shrink-0 opacity-60"),
201
+ children: index + 1
202
+ }), /* @__PURE__ */ jsx("span", {
203
+ className: "min-w-0 flex-1 wrap-anywhere",
204
+ children: answer.label
205
+ })]
206
+ }), answer.id === "always" && chosen !== void 0 ? onScopeChange !== void 0 && scopes.length > 1 ? /* @__PURE__ */ jsx("button", {
207
+ type: "button",
208
+ "data-slot": "permission-scopes-destination",
209
+ "aria-label": `${chosen.writes}. ${copy.change}.`,
210
+ title: copy.change,
211
+ onClick: () => {
212
+ onScopeChange(scopes[(scopes.indexOf(chosen) + 1) % scopes.length].id);
213
+ },
214
+ className: "text-fg-subtle ms-6 self-start rounded-(--radius-control) text-start text-(length:--cue-text-ui) wrap-anywhere underline decoration-dotted underline-offset-2 outline-none hover:decoration-solid focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-accent",
215
+ children: chosen.writes
216
+ }) : /* @__PURE__ */ jsx("span", {
217
+ "data-slot": "permission-scopes-destination",
218
+ className: "text-fg-subtle ms-6 text-(length:--cue-text-ui) wrap-anywhere",
219
+ children: chosen.writes
220
+ }) : null]
221
+ }, answer.id))
222
+ }),
223
+ spelled ? /* @__PURE__ */ jsxs("div", {
224
+ className: "flex flex-col gap-1",
225
+ children: [/* @__PURE__ */ jsx("span", {
226
+ className: cn(mono, "text-fg-subtle wrap-anywhere"),
227
+ children: copy.rules
228
+ }), /* @__PURE__ */ jsx("ul", {
229
+ "data-slot": "permission-scopes-rules",
230
+ className: "flex flex-col gap-0.5",
231
+ children: listed.map((rule) => /* @__PURE__ */ jsxs("li", {
232
+ className: cn(mono, "text-fg-muted flex items-baseline gap-2 break-all"),
233
+ children: [/* @__PURE__ */ jsx("span", {
234
+ "aria-hidden": true,
235
+ className: "bg-surface-3 size-1 shrink-0 rounded-full"
236
+ }), rule]
237
+ }, rule))
238
+ })]
239
+ }) : null,
240
+ onDeny === void 0 ? null : /* @__PURE__ */ jsx("p", {
241
+ "data-slot": "permission-scopes-hint",
242
+ className: cn(mono, "text-fg-subtle wrap-anywhere"),
243
+ children: copy.hint
244
+ })
245
+ ]
246
+ });
247
+ });
248
+ //#endregion
249
+ export { PermissionScopes, formatAlwaysAllow };
@@ -0,0 +1,43 @@
1
+ import { ComponentProps } from "react";
2
+ //#region src/elements/prompt-library.d.ts
3
+ interface SavedPrompt {
4
+ /** Stable identity, compared against selectedId. */
5
+ id: string;
6
+ /** Prompt name, and the only field the search filters on. */
7
+ name: string;
8
+ /** The prompt text, shown in the preview below the list. */
9
+ body: string;
10
+ /** Placeholder names in the body, listed so you know what the prompt will ask for. */
11
+ variables: readonly string[];
12
+ }
13
+ /**
14
+ * Prompts you saved, searchable, with their variables shown before you insert one.
15
+ *
16
+ * @example
17
+ * import { PromptLibrary } from "@cueplusplus/ui/elements";
18
+ *
19
+ * <PromptLibrary
20
+ * prompts={prompts}
21
+ * query={query}
22
+ * selectedId={selectedId}
23
+ * onQueryChange={setQuery}
24
+ * onSelect={setSelectedId}
25
+ * onInsert={insert}
26
+ * />
27
+ */
28
+ declare function PromptLibrary({ prompts, query, selectedId, onQueryChange, onSelect, onInsert, className, ...props }: Omit<ComponentProps<"div">, "children" | "prompts" | "query" | "selectedId" | "onQueryChange" | "onSelect" | "onInsert"> & {
29
+ /** Everything saved. Filtering happens inside against the name. */
30
+ prompts: readonly SavedPrompt[];
31
+ /** Current search text. */
32
+ query: string;
33
+ /** Which prompt is previewed below the list. */
34
+ selectedId: string;
35
+ /** Called as the search is typed. */
36
+ onQueryChange?: (query: string) => void;
37
+ /** Called when a prompt is highlighted. */
38
+ onSelect?: (id: string) => void;
39
+ /** Called on double click, to drop the prompt into the composer. */
40
+ onInsert?: (id: string) => void;
41
+ }): import("react").JSX.Element;
42
+ //#endregion
43
+ export { PromptLibrary, SavedPrompt };