@cellarnode/ui 0.203.0 → 0.207.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 (472) hide show
  1. package/README.md +25 -9
  2. package/dist/agent/activity-ledger.d.ts.map +1 -1
  3. package/dist/agent/activity-ledger.js +1 -1
  4. package/dist/agent/activity-ledger.js.map +1 -1
  5. package/dist/agent/composer.d.ts +64 -2
  6. package/dist/agent/composer.d.ts.map +1 -1
  7. package/dist/agent/composer.js +247 -9
  8. package/dist/agent/composer.js.map +1 -1
  9. package/dist/agent/confirm-card.d.ts.map +1 -1
  10. package/dist/agent/confirm-card.js +1 -1
  11. package/dist/agent/confirm-card.js.map +1 -1
  12. package/dist/agent/context.d.ts +94 -0
  13. package/dist/agent/context.d.ts.map +1 -0
  14. package/dist/agent/context.js +92 -0
  15. package/dist/agent/context.js.map +1 -0
  16. package/dist/agent/conversation.d.ts +41 -1
  17. package/dist/agent/conversation.d.ts.map +1 -1
  18. package/dist/agent/conversation.js +88 -5
  19. package/dist/agent/conversation.js.map +1 -1
  20. package/dist/agent/dropzone.d.ts +155 -0
  21. package/dist/agent/dropzone.d.ts.map +1 -0
  22. package/dist/agent/dropzone.js +404 -0
  23. package/dist/agent/dropzone.js.map +1 -0
  24. package/dist/agent/index.d.ts +11 -0
  25. package/dist/agent/index.d.ts.map +1 -1
  26. package/dist/agent/index.js +9 -0
  27. package/dist/agent/index.js.map +1 -1
  28. package/dist/agent/mentions.d.ts +75 -0
  29. package/dist/agent/mentions.d.ts.map +1 -0
  30. package/dist/agent/mentions.js +184 -0
  31. package/dist/agent/mentions.js.map +1 -0
  32. package/dist/agent/message.d.ts +16 -1
  33. package/dist/agent/message.d.ts.map +1 -1
  34. package/dist/agent/message.js +26 -6
  35. package/dist/agent/message.js.map +1 -1
  36. package/dist/agent/quote-reply.d.ts +40 -0
  37. package/dist/agent/quote-reply.d.ts.map +1 -0
  38. package/dist/agent/quote-reply.js +97 -0
  39. package/dist/agent/quote-reply.js.map +1 -0
  40. package/dist/agent/role-cards/brand-profile-card.d.ts +60 -0
  41. package/dist/agent/role-cards/brand-profile-card.d.ts.map +1 -0
  42. package/dist/agent/role-cards/brand-profile-card.js +113 -0
  43. package/dist/agent/role-cards/brand-profile-card.js.map +1 -0
  44. package/dist/agent/role-cards/card-text.d.ts +10 -0
  45. package/dist/agent/role-cards/card-text.d.ts.map +1 -0
  46. package/dist/agent/role-cards/card-text.js +38 -0
  47. package/dist/agent/role-cards/card-text.js.map +1 -0
  48. package/dist/agent/role-cards/fixtures.d.ts +29 -1
  49. package/dist/agent/role-cards/fixtures.d.ts.map +1 -1
  50. package/dist/agent/role-cards/fixtures.js +210 -1
  51. package/dist/agent/role-cards/fixtures.js.map +1 -1
  52. package/dist/agent/role-cards/host-contract.d.ts +34 -4
  53. package/dist/agent/role-cards/host-contract.d.ts.map +1 -1
  54. package/dist/agent/role-cards/host-contract.js +87 -1
  55. package/dist/agent/role-cards/host-contract.js.map +1 -1
  56. package/dist/agent/role-cards/inspector-view.d.ts.map +1 -1
  57. package/dist/agent/role-cards/inspector-view.js +12 -0
  58. package/dist/agent/role-cards/inspector-view.js.map +1 -1
  59. package/dist/agent/role-cards/lab-report-card.d.ts +40 -0
  60. package/dist/agent/role-cards/lab-report-card.d.ts.map +1 -0
  61. package/dist/agent/role-cards/lab-report-card.js +58 -0
  62. package/dist/agent/role-cards/lab-report-card.js.map +1 -0
  63. package/dist/agent/role-cards/label-card.d.ts +42 -0
  64. package/dist/agent/role-cards/label-card.d.ts.map +1 -0
  65. package/dist/agent/role-cards/label-card.js +65 -0
  66. package/dist/agent/role-cards/label-card.js.map +1 -0
  67. package/dist/agent/role-cards/org-card.d.ts +20 -0
  68. package/dist/agent/role-cards/org-card.d.ts.map +1 -0
  69. package/dist/agent/role-cards/org-card.js +37 -0
  70. package/dist/agent/role-cards/org-card.js.map +1 -0
  71. package/dist/agent/role-cards/registry.d.ts +13 -1
  72. package/dist/agent/role-cards/registry.d.ts.map +1 -1
  73. package/dist/agent/role-cards/registry.js +33 -0
  74. package/dist/agent/role-cards/registry.js.map +1 -1
  75. package/dist/agent/role-cards/schedule-card.d.ts +30 -0
  76. package/dist/agent/role-cards/schedule-card.d.ts.map +1 -0
  77. package/dist/agent/role-cards/schedule-card.js +58 -0
  78. package/dist/agent/role-cards/schedule-card.js.map +1 -0
  79. package/dist/agent/role-cards/stats-card.d.ts +30 -0
  80. package/dist/agent/role-cards/stats-card.d.ts.map +1 -0
  81. package/dist/agent/role-cards/stats-card.js +31 -0
  82. package/dist/agent/role-cards/stats-card.js.map +1 -0
  83. package/dist/agent/schema.d.ts +18 -0
  84. package/dist/agent/schema.d.ts.map +1 -1
  85. package/dist/agent/schema.js +17 -1
  86. package/dist/agent/schema.js.map +1 -1
  87. package/dist/agent/suggestions.d.ts +66 -0
  88. package/dist/agent/suggestions.d.ts.map +1 -0
  89. package/dist/agent/suggestions.js +186 -0
  90. package/dist/agent/suggestions.js.map +1 -0
  91. package/dist/agent/text-clean.d.ts +12 -0
  92. package/dist/agent/text-clean.d.ts.map +1 -0
  93. package/dist/agent/text-clean.js +55 -0
  94. package/dist/agent/text-clean.js.map +1 -0
  95. package/dist/agent/tool-activity-model.d.ts +4 -0
  96. package/dist/agent/tool-activity-model.d.ts.map +1 -1
  97. package/dist/agent/tool-activity-model.js +7 -0
  98. package/dist/agent/tool-activity-model.js.map +1 -1
  99. package/dist/agent/tool-activity.d.ts.map +1 -1
  100. package/dist/agent/tool-activity.js +4 -2
  101. package/dist/agent/tool-activity.js.map +1 -1
  102. package/dist/agent/tool-call-card.d.ts.map +1 -1
  103. package/dist/agent/tool-call-card.js +2 -1
  104. package/dist/agent/tool-call-card.js.map +1 -1
  105. package/dist/agent/ui.d.ts +7 -0
  106. package/dist/agent/ui.d.ts.map +1 -1
  107. package/dist/agent/ui.js +7 -0
  108. package/dist/agent/ui.js.map +1 -1
  109. package/dist/animated-icons/download-icon.d.ts.map +1 -1
  110. package/dist/animated-icons/download-icon.js +6 -1
  111. package/dist/animated-icons/download-icon.js.map +1 -1
  112. package/dist/animated-icons/filter-icon.d.ts.map +1 -1
  113. package/dist/animated-icons/filter-icon.js +6 -1
  114. package/dist/animated-icons/filter-icon.js.map +1 -1
  115. package/dist/animated-icons/upload-icon.d.ts.map +1 -1
  116. package/dist/animated-icons/upload-icon.js +6 -1
  117. package/dist/animated-icons/upload-icon.js.map +1 -1
  118. package/dist/brand/brand-image-source-picker.d.ts.map +1 -1
  119. package/dist/brand/brand-image-source-picker.js +9 -6
  120. package/dist/brand/brand-image-source-picker.js.map +1 -1
  121. package/dist/brand/brand-profile-form-values.d.ts +2 -2
  122. package/dist/chat/chat-surface.d.ts +16 -1
  123. package/dist/chat/chat-surface.d.ts.map +1 -1
  124. package/dist/chat/chat-surface.js +18 -16
  125. package/dist/chat/chat-surface.js.map +1 -1
  126. package/dist/chat/chat-toggle-button.d.ts.map +1 -1
  127. package/dist/chat/chat-toggle-button.js +11 -5
  128. package/dist/chat/chat-toggle-button.js.map +1 -1
  129. package/dist/chat/index.d.ts +1 -1
  130. package/dist/chat/index.d.ts.map +1 -1
  131. package/dist/chat/index.js.map +1 -1
  132. package/dist/commercial-price/commercial-price-format.d.ts +2 -0
  133. package/dist/commercial-price/commercial-price-format.d.ts.map +1 -1
  134. package/dist/commercial-price/commercial-price-format.js +4 -0
  135. package/dist/commercial-price/commercial-price-format.js.map +1 -1
  136. package/dist/commercial-price/commercial-terms.d.ts.map +1 -1
  137. package/dist/commercial-price/commercial-terms.js +9 -1
  138. package/dist/commercial-price/commercial-terms.js.map +1 -1
  139. package/dist/components/animated-shadcn-select.d.ts +2 -1
  140. package/dist/components/animated-shadcn-select.d.ts.map +1 -1
  141. package/dist/components/animated-shadcn-select.js +1 -1
  142. package/dist/components/animated-shadcn-select.js.map +1 -1
  143. package/dist/components/api-error-message.d.ts +17 -0
  144. package/dist/components/api-error-message.d.ts.map +1 -0
  145. package/dist/components/api-error-message.js +13 -0
  146. package/dist/components/api-error-message.js.map +1 -0
  147. package/dist/components/attachment-row.d.ts.map +1 -1
  148. package/dist/components/attachment-row.js +9 -1
  149. package/dist/components/attachment-row.js.map +1 -1
  150. package/dist/components/bottle-extract-dialog.js +1 -1
  151. package/dist/components/bottle-extract-dialog.js.map +1 -1
  152. package/dist/components/branch-overview-panel.d.ts.map +1 -1
  153. package/dist/components/branch-overview-panel.js +8 -4
  154. package/dist/components/branch-overview-panel.js.map +1 -1
  155. package/dist/components/branch-resolution-modal.d.ts +9 -1
  156. package/dist/components/branch-resolution-modal.d.ts.map +1 -1
  157. package/dist/components/branch-resolution-modal.js +12 -6
  158. package/dist/components/branch-resolution-modal.js.map +1 -1
  159. package/dist/components/card-stack.d.ts.map +1 -1
  160. package/dist/components/card-stack.js +9 -1
  161. package/dist/components/card-stack.js.map +1 -1
  162. package/dist/components/certification-upload-card.d.ts +19 -1
  163. package/dist/components/certification-upload-card.d.ts.map +1 -1
  164. package/dist/components/certification-upload-card.js +35 -7
  165. package/dist/components/certification-upload-card.js.map +1 -1
  166. package/dist/components/composition-editor.d.ts +24 -1
  167. package/dist/components/composition-editor.d.ts.map +1 -1
  168. package/dist/components/composition-editor.js +65 -13
  169. package/dist/components/composition-editor.js.map +1 -1
  170. package/dist/components/copy-button.d.ts.map +1 -1
  171. package/dist/components/copy-button.js +15 -4
  172. package/dist/components/copy-button.js.map +1 -1
  173. package/dist/components/currency-select.d.ts +11 -1
  174. package/dist/components/currency-select.d.ts.map +1 -1
  175. package/dist/components/currency-select.js +2 -2
  176. package/dist/components/currency-select.js.map +1 -1
  177. package/dist/components/file-dropzone.d.ts.map +1 -1
  178. package/dist/components/file-dropzone.js +4 -1
  179. package/dist/components/file-dropzone.js.map +1 -1
  180. package/dist/components/listbox.d.ts.map +1 -1
  181. package/dist/components/listbox.js +5 -1
  182. package/dist/components/listbox.js.map +1 -1
  183. package/dist/components/metric-card.d.ts +1 -1
  184. package/dist/components/metric-card.d.ts.map +1 -1
  185. package/dist/components/metric-card.js +2 -2
  186. package/dist/components/metric-card.js.map +1 -1
  187. package/dist/components/shadcn-button.d.ts +1 -1
  188. package/dist/components/sidebar/sidebar-menu.d.ts +1 -1
  189. package/dist/components/toast.d.ts.map +1 -1
  190. package/dist/components/toast.js +1 -1
  191. package/dist/components/toast.js.map +1 -1
  192. package/dist/discovery/command-palette-trigger.d.ts.map +1 -1
  193. package/dist/discovery/command-palette-trigger.js +2 -2
  194. package/dist/discovery/command-palette-trigger.js.map +1 -1
  195. package/dist/globe/globe-scene-camera.d.ts.map +1 -1
  196. package/dist/globe/globe-scene-camera.js +5 -2
  197. package/dist/globe/globe-scene-camera.js.map +1 -1
  198. package/dist/index.d.ts +4 -0
  199. package/dist/index.d.ts.map +1 -1
  200. package/dist/index.js +2 -0
  201. package/dist/index.js.map +1 -1
  202. package/dist/lab-reports/upload-lab-report-dialog.d.ts.map +1 -1
  203. package/dist/lab-reports/upload-lab-report-dialog.js +3 -3
  204. package/dist/lab-reports/upload-lab-report-dialog.js.map +1 -1
  205. package/dist/lib/describe-api-error.d.ts +19 -0
  206. package/dist/lib/describe-api-error.d.ts.map +1 -0
  207. package/dist/lib/describe-api-error.js +228 -0
  208. package/dist/lib/describe-api-error.js.map +1 -0
  209. package/dist/mcp-connect/clients.d.ts +4 -2
  210. package/dist/mcp-connect/clients.d.ts.map +1 -1
  211. package/dist/mcp-connect/clients.js +5 -3
  212. package/dist/mcp-connect/clients.js.map +1 -1
  213. package/dist/mcp-connect/mcp-connect-panel.js +1 -1
  214. package/dist/mcp-connect/mcp-connect-panel.js.map +1 -1
  215. package/dist/nav/app-sidebar.d.ts +5 -0
  216. package/dist/nav/app-sidebar.d.ts.map +1 -1
  217. package/dist/nav/app-sidebar.js +5 -3
  218. package/dist/nav/app-sidebar.js.map +1 -1
  219. package/dist/nav/sidebar-footer.d.ts +3 -1
  220. package/dist/nav/sidebar-footer.d.ts.map +1 -1
  221. package/dist/nav/sidebar-footer.js +5 -3
  222. package/dist/nav/sidebar-footer.js.map +1 -1
  223. package/dist/notifications/index.d.ts +1 -1
  224. package/dist/notifications/index.d.ts.map +1 -1
  225. package/dist/notifications/index.js +1 -1
  226. package/dist/notifications/index.js.map +1 -1
  227. package/dist/notifications/notification-badge.d.ts +2 -0
  228. package/dist/notifications/notification-badge.d.ts.map +1 -1
  229. package/dist/notifications/notification-badge.js +9 -2
  230. package/dist/notifications/notification-badge.js.map +1 -1
  231. package/dist/notifications/notification-tray.d.ts.map +1 -1
  232. package/dist/notifications/notification-tray.js +12 -2
  233. package/dist/notifications/notification-tray.js.map +1 -1
  234. package/dist/offer/counter-slide-over.d.ts +38 -12
  235. package/dist/offer/counter-slide-over.d.ts.map +1 -1
  236. package/dist/offer/counter-slide-over.js +130 -36
  237. package/dist/offer/counter-slide-over.js.map +1 -1
  238. package/dist/offer/facts-card.d.ts +3 -1
  239. package/dist/offer/facts-card.d.ts.map +1 -1
  240. package/dist/offer/facts-card.js +19 -10
  241. package/dist/offer/facts-card.js.map +1 -1
  242. package/dist/offer/index.d.ts +1 -1
  243. package/dist/offer/index.d.ts.map +1 -1
  244. package/dist/offer/index.js.map +1 -1
  245. package/dist/offer/negotiation-flow-timeline.d.ts.map +1 -1
  246. package/dist/offer/negotiation-flow-timeline.js +7 -4
  247. package/dist/offer/negotiation-flow-timeline.js.map +1 -1
  248. package/dist/offer/negotiation-labels.d.ts +5 -1
  249. package/dist/offer/negotiation-labels.d.ts.map +1 -1
  250. package/dist/offer/negotiation-labels.js +1 -1
  251. package/dist/offer/negotiation-labels.js.map +1 -1
  252. package/dist/offer/new-activity-pill.js +1 -1
  253. package/dist/offer/new-activity-pill.js.map +1 -1
  254. package/dist/offer/offer-document.d.ts.map +1 -1
  255. package/dist/offer/offer-document.js +8 -30
  256. package/dist/offer/offer-document.js.map +1 -1
  257. package/dist/offer/offer-product-record.d.ts.map +1 -1
  258. package/dist/offer/offer-product-record.js +7 -2
  259. package/dist/offer/offer-product-record.js.map +1 -1
  260. package/dist/offer/offered-product-props.d.ts +20 -0
  261. package/dist/offer/offered-product-props.d.ts.map +1 -0
  262. package/dist/offer/offered-product-props.js +42 -0
  263. package/dist/offer/offered-product-props.js.map +1 -0
  264. package/dist/offer/round-diff-banner.d.ts.map +1 -1
  265. package/dist/offer/round-diff-banner.js +6 -1
  266. package/dist/offer/round-diff-banner.js.map +1 -1
  267. package/dist/offer/terms-card.d.ts.map +1 -1
  268. package/dist/offer/terms-card.js +2 -0
  269. package/dist/offer/terms-card.js.map +1 -1
  270. package/dist/offer/timeline-event.d.ts.map +1 -1
  271. package/dist/offer/timeline-event.js +7 -4
  272. package/dist/offer/timeline-event.js.map +1 -1
  273. package/dist/offer/types.d.ts +4 -0
  274. package/dist/offer/types.d.ts.map +1 -1
  275. package/dist/opportunities/index.d.ts +6 -2
  276. package/dist/opportunities/index.d.ts.map +1 -1
  277. package/dist/opportunities/index.js +2 -0
  278. package/dist/opportunities/index.js.map +1 -1
  279. package/dist/opportunities/opportunity-add-to-journey-button.d.ts.map +1 -1
  280. package/dist/opportunities/opportunity-add-to-journey-button.js +17 -3
  281. package/dist/opportunities/opportunity-add-to-journey-button.js.map +1 -1
  282. package/dist/opportunities/opportunity-filter-bar.d.ts.map +1 -1
  283. package/dist/opportunities/opportunity-filter-bar.js +7 -1
  284. package/dist/opportunities/opportunity-filter-bar.js.map +1 -1
  285. package/dist/opportunities/wizard/allowed-delivery-terms-section.d.ts +14 -1
  286. package/dist/opportunities/wizard/allowed-delivery-terms-section.d.ts.map +1 -1
  287. package/dist/opportunities/wizard/allowed-delivery-terms-section.js +84 -4
  288. package/dist/opportunities/wizard/allowed-delivery-terms-section.js.map +1 -1
  289. package/dist/opportunities/wizard/mixed-delivery-terms.d.ts +25 -0
  290. package/dist/opportunities/wizard/mixed-delivery-terms.d.ts.map +1 -0
  291. package/dist/opportunities/wizard/mixed-delivery-terms.js +33 -0
  292. package/dist/opportunities/wizard/mixed-delivery-terms.js.map +1 -0
  293. package/dist/opportunities/wizard/opportunity-wizard.d.ts +18 -0
  294. package/dist/opportunities/wizard/opportunity-wizard.d.ts.map +1 -1
  295. package/dist/opportunities/wizard/opportunity-wizard.js +30 -63
  296. package/dist/opportunities/wizard/opportunity-wizard.js.map +1 -1
  297. package/dist/opportunities/wizard/package-sizes-field.d.ts +13 -0
  298. package/dist/opportunities/wizard/package-sizes-field.d.ts.map +1 -0
  299. package/dist/opportunities/wizard/package-sizes-field.js +66 -0
  300. package/dist/opportunities/wizard/package-sizes-field.js.map +1 -0
  301. package/dist/opportunities/wizard/price-ranges-editor.d.ts +17 -0
  302. package/dist/opportunities/wizard/price-ranges-editor.d.ts.map +1 -0
  303. package/dist/opportunities/wizard/price-ranges-editor.js +84 -0
  304. package/dist/opportunities/wizard/price-ranges-editor.js.map +1 -0
  305. package/dist/opportunities/wizard/price-ranges.d.ts +54 -0
  306. package/dist/opportunities/wizard/price-ranges.d.ts.map +1 -0
  307. package/dist/opportunities/wizard/price-ranges.js +104 -0
  308. package/dist/opportunities/wizard/price-ranges.js.map +1 -0
  309. package/dist/opportunities/wizard/publish-issues.d.ts +32 -0
  310. package/dist/opportunities/wizard/publish-issues.d.ts.map +1 -0
  311. package/dist/opportunities/wizard/publish-issues.js +124 -0
  312. package/dist/opportunities/wizard/publish-issues.js.map +1 -0
  313. package/dist/opportunities/wizard/step-opportunities.d.ts.map +1 -1
  314. package/dist/opportunities/wizard/step-opportunities.js +12 -7
  315. package/dist/opportunities/wizard/step-opportunities.js.map +1 -1
  316. package/dist/opportunities/wizard/step-pricing-timeline.d.ts +1 -1
  317. package/dist/opportunities/wizard/step-pricing-timeline.d.ts.map +1 -1
  318. package/dist/opportunities/wizard/step-pricing-timeline.js +7 -9
  319. package/dist/opportunities/wizard/step-pricing-timeline.js.map +1 -1
  320. package/dist/opportunities/wizard/step-review.d.ts +19 -3
  321. package/dist/opportunities/wizard/step-review.d.ts.map +1 -1
  322. package/dist/opportunities/wizard/step-review.js +58 -13
  323. package/dist/opportunities/wizard/step-review.js.map +1 -1
  324. package/dist/opportunities/wizard/wizard-stepper.d.ts +15 -0
  325. package/dist/opportunities/wizard/wizard-stepper.d.ts.map +1 -1
  326. package/dist/opportunities/wizard/wizard-stepper.js +17 -8
  327. package/dist/opportunities/wizard/wizard-stepper.js.map +1 -1
  328. package/dist/opportunities/wizard/wizard.types.d.ts +4 -4
  329. package/dist/opportunities/wizard/wizard.types.d.ts.map +1 -1
  330. package/dist/opportunities/wizard/wizard.types.js +13 -6
  331. package/dist/opportunities/wizard/wizard.types.js.map +1 -1
  332. package/dist/opportunity-facts/build-opportunity-facts.d.ts.map +1 -1
  333. package/dist/opportunity-facts/build-opportunity-facts.js +11 -1
  334. package/dist/opportunity-facts/build-opportunity-facts.js.map +1 -1
  335. package/dist/opportunity-facts/glossary.en.d.ts +34 -0
  336. package/dist/opportunity-facts/glossary.en.d.ts.map +1 -1
  337. package/dist/opportunity-facts/glossary.en.js +34 -0
  338. package/dist/opportunity-facts/glossary.en.js.map +1 -1
  339. package/dist/opportunity-facts/index.d.ts +3 -1
  340. package/dist/opportunity-facts/index.d.ts.map +1 -1
  341. package/dist/opportunity-facts/index.js +2 -0
  342. package/dist/opportunity-facts/index.js.map +1 -1
  343. package/dist/opportunity-facts/labels.d.ts +38 -0
  344. package/dist/opportunity-facts/labels.d.ts.map +1 -1
  345. package/dist/opportunity-facts/labels.js +34 -0
  346. package/dist/opportunity-facts/labels.js.map +1 -1
  347. package/dist/opportunity-facts/opportunity-fact-sheet.d.ts +9 -1
  348. package/dist/opportunity-facts/opportunity-fact-sheet.d.ts.map +1 -1
  349. package/dist/opportunity-facts/opportunity-fact-sheet.js +21 -2
  350. package/dist/opportunity-facts/opportunity-fact-sheet.js.map +1 -1
  351. package/dist/opportunity-facts/price-cases-section.d.ts +18 -0
  352. package/dist/opportunity-facts/price-cases-section.d.ts.map +1 -0
  353. package/dist/opportunity-facts/price-cases-section.js +36 -0
  354. package/dist/opportunity-facts/price-cases-section.js.map +1 -0
  355. package/dist/opportunity-facts/price-cases.d.ts +5 -0
  356. package/dist/opportunity-facts/price-cases.d.ts.map +1 -0
  357. package/dist/opportunity-facts/price-cases.js +127 -0
  358. package/dist/opportunity-facts/price-cases.js.map +1 -0
  359. package/dist/opportunity-facts/source-document-download.d.ts +34 -0
  360. package/dist/opportunity-facts/source-document-download.d.ts.map +1 -0
  361. package/dist/opportunity-facts/source-document-download.js +91 -0
  362. package/dist/opportunity-facts/source-document-download.js.map +1 -0
  363. package/dist/opportunity-facts/types.d.ts +69 -0
  364. package/dist/opportunity-facts/types.d.ts.map +1 -1
  365. package/dist/org/invite-member-dialog.d.ts.map +1 -1
  366. package/dist/org/invite-member-dialog.js +12 -1
  367. package/dist/org/invite-member-dialog.js.map +1 -1
  368. package/dist/portfolio/version-rail.d.ts.map +1 -1
  369. package/dist/portfolio/version-rail.js +1 -1
  370. package/dist/portfolio/version-rail.js.map +1 -1
  371. package/dist/portfolio-import/import-job-detail-view.d.ts.map +1 -1
  372. package/dist/portfolio-import/import-job-detail-view.js +12 -1
  373. package/dist/portfolio-import/import-job-detail-view.js.map +1 -1
  374. package/dist/portfolio-import/import-job-panels.d.ts.map +1 -1
  375. package/dist/portfolio-import/import-job-panels.js +13 -2
  376. package/dist/portfolio-import/import-job-panels.js.map +1 -1
  377. package/dist/portfolio-import/import-products-dialog.d.ts.map +1 -1
  378. package/dist/portfolio-import/import-products-dialog.js +5 -2
  379. package/dist/portfolio-import/import-products-dialog.js.map +1 -1
  380. package/dist/portfolio-import/review-queue-panel.d.ts.map +1 -1
  381. package/dist/portfolio-import/review-queue-panel.js +36 -4
  382. package/dist/portfolio-import/review-queue-panel.js.map +1 -1
  383. package/dist/portfolio-import/session/index.d.ts +1 -1
  384. package/dist/portfolio-import/session/index.d.ts.map +1 -1
  385. package/dist/portfolio-import/session/index.js +1 -1
  386. package/dist/portfolio-import/session/index.js.map +1 -1
  387. package/dist/portfolio-import/session/save-review-field.d.ts +29 -4
  388. package/dist/portfolio-import/session/save-review-field.d.ts.map +1 -1
  389. package/dist/portfolio-import/session/save-review-field.js +115 -30
  390. package/dist/portfolio-import/session/save-review-field.js.map +1 -1
  391. package/dist/portfolio-import/session/types.d.ts +6 -0
  392. package/dist/portfolio-import/session/types.d.ts.map +1 -1
  393. package/dist/portfolio-import/types.d.ts +6 -0
  394. package/dist/portfolio-import/types.d.ts.map +1 -1
  395. package/dist/portfolio-import/types.js.map +1 -1
  396. package/dist/product-editor/field-routing.d.ts +2 -1
  397. package/dist/product-editor/field-routing.d.ts.map +1 -1
  398. package/dist/product-editor/field-routing.js +9 -1
  399. package/dist/product-editor/field-routing.js.map +1 -1
  400. package/dist/product-editor/index.d.ts +1 -1
  401. package/dist/product-editor/index.d.ts.map +1 -1
  402. package/dist/product-editor/index.js.map +1 -1
  403. package/dist/product-editor/product-editor-form.d.ts +37 -2
  404. package/dist/product-editor/product-editor-form.d.ts.map +1 -1
  405. package/dist/product-editor/product-editor-form.js +96 -3
  406. package/dist/product-editor/product-editor-form.js.map +1 -1
  407. package/dist/product-editor/product-editor-surface.d.ts.map +1 -1
  408. package/dist/product-editor/product-editor-surface.js +2 -4
  409. package/dist/product-editor/product-editor-surface.js.map +1 -1
  410. package/dist/product-editor/product-editor.d.ts.map +1 -1
  411. package/dist/product-editor/product-editor.js +17 -6
  412. package/dist/product-editor/product-editor.js.map +1 -1
  413. package/dist/product-editor/schema.d.ts +20 -0
  414. package/dist/product-editor/schema.d.ts.map +1 -1
  415. package/dist/product-editor/schema.js +70 -0
  416. package/dist/product-editor/schema.js.map +1 -1
  417. package/dist/product-editor/tabs/product-composition-section.d.ts +26 -0
  418. package/dist/product-editor/tabs/product-composition-section.d.ts.map +1 -0
  419. package/dist/product-editor/tabs/product-composition-section.js +47 -0
  420. package/dist/product-editor/tabs/product-composition-section.js.map +1 -0
  421. package/dist/product-editor/tabs/product-essentials-details-sections.d.ts +4 -2
  422. package/dist/product-editor/tabs/product-essentials-details-sections.d.ts.map +1 -1
  423. package/dist/product-editor/tabs/product-essentials-details-sections.js +4 -2
  424. package/dist/product-editor/tabs/product-essentials-details-sections.js.map +1 -1
  425. package/dist/product-editor/tabs/product-essentials-tab.d.ts +4 -2
  426. package/dist/product-editor/tabs/product-essentials-tab.d.ts.map +1 -1
  427. package/dist/product-editor/tabs/product-essentials-tab.js +2 -2
  428. package/dist/product-editor/tabs/product-essentials-tab.js.map +1 -1
  429. package/dist/product-editor/tabs/product-production-capacity-field.d.ts +23 -0
  430. package/dist/product-editor/tabs/product-production-capacity-field.d.ts.map +1 -0
  431. package/dist/product-editor/tabs/product-production-capacity-field.js +57 -0
  432. package/dist/product-editor/tabs/product-production-capacity-field.js.map +1 -0
  433. package/dist/product-editor/tabs/product-resources-tab.d.ts.map +1 -1
  434. package/dist/product-editor/tabs/product-resources-tab.js +1 -1
  435. package/dist/product-editor/tabs/product-resources-tab.js.map +1 -1
  436. package/dist/product-editor/tabs/resources/certifications-panel.d.ts.map +1 -1
  437. package/dist/product-editor/tabs/resources/certifications-panel.js +47 -47
  438. package/dist/product-editor/tabs/resources/certifications-panel.js.map +1 -1
  439. package/dist/product-editor/types.d.ts +61 -4
  440. package/dist/product-editor/types.d.ts.map +1 -1
  441. package/dist/profile/api-keys/backend-as-metadata.fixture.d.ts +9 -0
  442. package/dist/profile/api-keys/backend-as-metadata.fixture.d.ts.map +1 -0
  443. package/dist/profile/api-keys/backend-as-metadata.fixture.js +42 -0
  444. package/dist/profile/api-keys/backend-as-metadata.fixture.js.map +1 -0
  445. package/dist/profile/api-keys/connected-apps-card.d.ts +2 -2
  446. package/dist/profile/api-keys/connected-apps-card.d.ts.map +1 -1
  447. package/dist/profile/api-keys/connected-apps-card.js +7 -3
  448. package/dist/profile/api-keys/connected-apps-card.js.map +1 -1
  449. package/dist/profile/api-keys/create-api-key-dialog.js +2 -2
  450. package/dist/profile/api-keys/create-api-key-dialog.js.map +1 -1
  451. package/dist/profile/api-keys/index.d.ts +2 -1
  452. package/dist/profile/api-keys/index.d.ts.map +1 -1
  453. package/dist/profile/api-keys/index.js +2 -1
  454. package/dist/profile/api-keys/index.js.map +1 -1
  455. package/dist/profile/api-keys/oauth-scopes.d.ts +8 -0
  456. package/dist/profile/api-keys/oauth-scopes.d.ts.map +1 -0
  457. package/dist/profile/api-keys/oauth-scopes.js +41 -0
  458. package/dist/profile/api-keys/oauth-scopes.js.map +1 -0
  459. package/dist/profile/api-keys/profile-keys-section.d.ts +6 -1
  460. package/dist/profile/api-keys/profile-keys-section.d.ts.map +1 -1
  461. package/dist/profile/api-keys/profile-keys-section.js +17 -2
  462. package/dist/profile/api-keys/profile-keys-section.js.map +1 -1
  463. package/dist/profile/api-keys/scope-list.d.ts +6 -1
  464. package/dist/profile/api-keys/scope-list.d.ts.map +1 -1
  465. package/dist/profile/api-keys/scope-list.js +10 -3
  466. package/dist/profile/api-keys/scope-list.js.map +1 -1
  467. package/dist/profile/api-keys/types.d.ts +14 -0
  468. package/dist/profile/api-keys/types.d.ts.map +1 -1
  469. package/dist/profile/api-keys/types.js +21 -0
  470. package/dist/profile/api-keys/types.js.map +1 -1
  471. package/dist/realtime/organisation-events/schemas.d.ts +2 -2
  472. package/package.json +7 -2
@@ -0,0 +1,155 @@
1
+ import { type RefObject } from "react";
2
+ /** One file the host is uploading (or has uploaded) on the person's behalf. Host-owned state; the ui only draws it. */
3
+ export interface AgentUpload {
4
+ /** Stable id (React key, and what `onRemoveUpload` reports). */
5
+ id: string;
6
+ /** The file's name. UNTRUSTED: cleaned (direction and invisible characters out) and cut before it is shown. */
7
+ name: string;
8
+ status: "queued" | "uploading" | "done" | "error";
9
+ /** 0 to 100, for `uploading`. Anything else is clamped; absent means "no figure". */
10
+ progress?: number;
11
+ /** Why it failed, for `error`. Plain text from the host, cleaned and cut. */
12
+ error?: string;
13
+ }
14
+ export interface AgentDropZoneCopy {
15
+ /** Before the Browse control: "Drop anything here or". */
16
+ drop: string;
17
+ /** The Browse control's visible word. */
18
+ browse: string;
19
+ /** Its accessible name (it contains the visible word). */
20
+ browseLabel: string;
21
+ /** Shown while a file is dragged over the zone. */
22
+ dragging: string;
23
+ /** Why the zone is off, when the host gives no reason of its own (the composer gives "the agent is working" or "waiting for your approval"). */
24
+ paused: string;
25
+ /** Accessible name of the file picker and the list of uploads. */
26
+ pickerLabel: string;
27
+ uploadsLabel: string;
28
+ /** Stand-in for a name that cleans to nothing. */
29
+ unnamed: string;
30
+ /** Status words, spoken and shown. */
31
+ queued: string;
32
+ uploading: string;
33
+ done: string;
34
+ failed: string;
35
+ /** The remove control on a chip; `{name}` is the file's name. */
36
+ remove: string;
37
+ /** Validation. `{max}`, `{size}`, `{name}` and `{names}` (a short list) are filled in. */
38
+ tooMany: string;
39
+ /** Used when none of the dropped files fit. */
40
+ tooManyNone: string;
41
+ tooBig: string;
42
+ wrongType: string;
43
+ empty: string;
44
+ folder: string;
45
+ /** After the first few refusals; `{count}` is how many more. */
46
+ moreProblems: string;
47
+ /** After the first few uploads; `{count}` is how many more. */
48
+ moreFiles: string;
49
+ /** Spoken when uploads finish or fail; `{name}` is the file, `{count}` how many when several finish together. */
50
+ announceDone: string;
51
+ announceFailed: string;
52
+ announceManyDone: string;
53
+ announceManyFailed: string;
54
+ }
55
+ export declare const DEFAULT_DROP_COPY: AgentDropZoneCopy;
56
+ export declare const MAX_FILE_NAME = 80;
57
+ export declare const MAX_UPLOAD_ROWS = 10;
58
+ export declare const MAX_PROBLEM_ROWS = 3;
59
+ /**
60
+ * A file name as it may be shown: direction and invisible characters out, whitespace collapsed. NOT cut here (a cut at the end would
61
+ * lose the extension before {@link splitName} can keep it); `max` is only a work bound.
62
+ */
63
+ export declare const cleanFileName: (name: unknown, max?: number) => string | undefined;
64
+ /** A name in two parts: the head (may shrink) and the tail (always kept: the end of the name, with its extension). */
65
+ export interface NameParts {
66
+ head: string;
67
+ tail: string;
68
+ /** True when graphemes were cut out between them. */
69
+ cut: boolean;
70
+ }
71
+ /** Splits a name into head and tail on graphemes; a name longer than `max` is cut in the MIDDLE, so the extension survives. */
72
+ export declare function splitName(name: string, max: number, tail?: number): NameParts;
73
+ /** A name cut in the MIDDLE so its end (the extension) stays: `invoice-2026-final-v3.pdf` becomes `invoice-2026-f…v3.pdf`. */
74
+ export declare function middleTruncate(name: string, max: number, tail?: number): string;
75
+ /** True when the file matches an `accept` list (`.pdf`, `image/*`, `application/pdf`); no list accepts everything. */
76
+ export declare function matchesAccept(file: {
77
+ name: string;
78
+ type: string;
79
+ }, accept?: string): boolean;
80
+ /**
81
+ * A size limit as the person reads it: decimal units (1 MB is 1,000,000 bytes, like `maxBytes`), the unit word localized, and
82
+ * ROUNDED DOWN to one decimal, so a message never claims a bigger limit than the real one ("larger than 1 MB" for 1.05 MB).
83
+ */
84
+ export declare function formatBytes(n: number, locale?: string): string;
85
+ export interface FileChecks {
86
+ accept?: string;
87
+ maxFiles: number;
88
+ maxBytes?: number;
89
+ /** How many files are already held (uploads that are queued, uploading or done). */
90
+ held: number;
91
+ /** Files that are folders (known from the drop's items). */
92
+ folders?: ReadonlySet<File>;
93
+ locale?: string;
94
+ }
95
+ /** One piece of a refusal: plain words, or a file name (which the page sets in its own bidi isolate). */
96
+ export type ProblemPart = string | {
97
+ name: string;
98
+ };
99
+ /** One refusal: the sentence (for speech) and its parts (for the page). */
100
+ export interface Problem {
101
+ text: string;
102
+ parts: ProblemPart[];
103
+ }
104
+ /**
105
+ * Splits a selection into the files to hand to the host and the reasons for the rest. Nothing is read from the files: only their
106
+ * name, type and size are looked at. This is a courtesy to the person; the HOST must check type and size again on the server.
107
+ * The "too many" message comes FIRST, so the per-file reasons can never push it into "and N more".
108
+ */
109
+ export declare function checkFiles(files: readonly File[], checks: FileChecks, copy: AgentDropZoneCopy): {
110
+ accepted: File[];
111
+ problems: Problem[];
112
+ };
113
+ /** At most {@link MAX_PROBLEM_ROWS} refusals, then "and N more": the same text is shown and spoken. */
114
+ export declare function capProblems(problems: readonly Problem[], copy: AgentDropZoneCopy): Problem[];
115
+ export interface AgentDropZoneProps {
116
+ /**
117
+ * The files that passed the checks. The ui hands over `File` objects and nothing else: it never reads their contents, and it
118
+ * never sends them anywhere. The client-side checks (`accept`, `maxBytes`, `maxFiles`) are a courtesy to the person: the HOST
119
+ * MUST validate type and size again on the server.
120
+ */
121
+ onFiles: (files: File[]) => void;
122
+ /** Same grammar as `<input accept>`: `.pdf,image/*`. A UX check only: the host must re-validate the type. */
123
+ accept?: string;
124
+ /** The most files held at once (uploads that have not failed included). Default 5. */
125
+ maxFiles?: number;
126
+ /** The biggest file, in bytes (decimal: 1 MB is 1,000,000). A UX check only: the host must re-validate the size. */
127
+ maxBytes?: number;
128
+ /** The host's upload state, drawn as chips. A failed upload does not count against `maxFiles`. */
129
+ uploads?: readonly AgentUpload[];
130
+ onRemoveUpload?: (id: string) => void;
131
+ /** Off while the agent is working or waiting for an approval: the picker is disabled and a drop does nothing. */
132
+ disabled?: boolean;
133
+ /** Why it is off, in the host's words (otherwise `copy.paused`). Shown in the row and what the picker is described by. */
134
+ disabledReason?: string;
135
+ /**
136
+ * The id of an element elsewhere that already says why it is off (the composer's note). The picker is described by it and the
137
+ * row does not repeat it: the reason is shown ONCE.
138
+ */
139
+ reasonId?: string;
140
+ /** BCP 47 tag for the numbers in messages ("1,5 MB"). */
141
+ locale?: string;
142
+ /**
143
+ * The element that takes drops and pastes (the whole composer card, say). Default: the zone itself. Either way a file dropped on
144
+ * it never navigates the browser away, and while a file is over it the element carries `data-dragging`.
145
+ */
146
+ target?: RefObject<HTMLElement | null>;
147
+ copy?: Partial<AgentDropZoneCopy>;
148
+ className?: string;
149
+ }
150
+ /**
151
+ * @internal Drop files here or browse. A real `input[type=file]` behind a button, a visible drag state, per-file chips (the shared
152
+ * {@link agentChip} family) and a persistent live region for refusals and upload status. File names are untrusted text.
153
+ */
154
+ export declare function AgentDropZone({ onFiles, accept, maxFiles, maxBytes, uploads, onRemoveUpload, disabled, disabledReason, reasonId: externalReasonId, locale, target, copy, className, }: AgentDropZoneProps): import("react/jsx-runtime").JSX.Element;
155
+ //# sourceMappingURL=dropzone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropzone.d.ts","sourceRoot":"","sources":["../../src/agent/dropzone.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,404 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useId, useRef, useState } from "react";
3
+ import { AlertCircle, Check, FileText, Loader2, Paperclip, X } from "lucide-react";
4
+ import { cn } from "../lib/utils.js";
5
+ import { fmt, useCopy } from "./copy.js";
6
+ import { removeButton } from "./context.js";
7
+ import { WORK_LIMIT, cleanLine } from "./text-clean.js";
8
+ import { agentChip, focusRing } from "./ui.js";
9
+ export const DEFAULT_DROP_COPY = {
10
+ drop: "Drop anything here or",
11
+ browse: "browse",
12
+ browseLabel: "Browse files",
13
+ dragging: "Release to add",
14
+ paused: "Files cannot be added right now.",
15
+ pickerLabel: "Add files",
16
+ uploadsLabel: "Files",
17
+ unnamed: "Unnamed file",
18
+ queued: "Waiting",
19
+ uploading: "Uploading",
20
+ done: "Added",
21
+ failed: "Failed",
22
+ remove: "Remove {name}",
23
+ tooMany: "No more than {max} files at a time. Not added: {names}.",
24
+ tooManyNone: "{max} files at most. Remove some to add {names}.",
25
+ tooBig: "{name} is larger than {size}.",
26
+ wrongType: "{name} is not a kind of file that can be added here.",
27
+ empty: "{name} is empty.",
28
+ folder: "{name} is a folder. Add the files inside it instead.",
29
+ moreProblems: "and {count} more",
30
+ moreFiles: "+{count} more",
31
+ announceDone: "{name} added",
32
+ announceFailed: "{name} failed",
33
+ announceManyDone: "{count} files added",
34
+ announceManyFailed: "{count} files failed",
35
+ };
36
+ export const MAX_FILE_NAME = 80;
37
+ export const MAX_UPLOAD_ROWS = 10;
38
+ export const MAX_PROBLEM_ROWS = 3;
39
+ const DEFAULT_MAX_FILES = 5;
40
+ /**
41
+ * A file name as it may be shown: direction and invisible characters out, whitespace collapsed. NOT cut here (a cut at the end would
42
+ * lose the extension before {@link splitName} can keep it); `max` is only a work bound.
43
+ */
44
+ export const cleanFileName = (name, max = WORK_LIMIT) => cleanLine(name, max, false);
45
+ const segmenter = typeof Intl !== "undefined" && "Segmenter" in Intl
46
+ ? new Intl.Segmenter(undefined, { granularity: "grapheme" })
47
+ : null;
48
+ /** The user-perceived characters of `text` (a combining accent, an emoji family or a flag is ONE). */
49
+ const graphemes = (text) => segmenter ? Array.from(segmenter.segment(text), (x) => x.segment) : Array.from(text);
50
+ /** Splits a name into head and tail on graphemes; a name longer than `max` is cut in the MIDDLE, so the extension survives. */
51
+ export function splitName(name, max, tail = 10) {
52
+ const g = graphemes(name);
53
+ const ext = /\.[^.\s]{1,8}$/.exec(name)?.[0];
54
+ const extLen = ext ? graphemes(ext).length : 0;
55
+ if (max <= 1)
56
+ return { head: "", tail: g.length > 0 ? "\u2026" : "", cut: g.length > 0 };
57
+ const keepTail = Math.min(Math.max(Math.min(tail, Math.floor((max - 1) / 2)), extLen), max - 2);
58
+ const tailAt = g.length - Math.min(keepTail, g.length);
59
+ if (g.length <= max) {
60
+ // not cut: the tail is still marked off so CSS can shrink the head without ever clipping the extension
61
+ return { head: g.slice(0, tailAt).join(""), tail: g.slice(tailAt).join(""), cut: false };
62
+ }
63
+ const headLen = Math.max(1, max - keepTail - 1);
64
+ return {
65
+ head: `${g.slice(0, headLen).join("")}\u2026`,
66
+ tail: g.slice(tailAt).join(""),
67
+ cut: true,
68
+ };
69
+ }
70
+ /** A name cut in the MIDDLE so its end (the extension) stays: `invoice-2026-final-v3.pdf` becomes `invoice-2026-f…v3.pdf`. */
71
+ export function middleTruncate(name, max, tail = 10) {
72
+ const { head, tail: t } = splitName(name, max, tail);
73
+ return head + t;
74
+ }
75
+ const showParts = (name, unnamed, max = 32) => splitName(cleanFileName(name) ?? unnamed, max);
76
+ const showName = (name, unnamed, max = 32) => {
77
+ const { head, tail } = showParts(name, unnamed, max);
78
+ return head + tail;
79
+ };
80
+ /** True when the file matches an `accept` list (`.pdf`, `image/*`, `application/pdf`); no list accepts everything. */
81
+ export function matchesAccept(file, accept) {
82
+ const tokens = (accept ?? "")
83
+ .split(",")
84
+ .map((t) => t.trim().toLowerCase())
85
+ .filter(Boolean);
86
+ if (tokens.length === 0)
87
+ return true;
88
+ const name = file.name.toLowerCase();
89
+ const type = file.type.toLowerCase();
90
+ return tokens.some((t) => t.startsWith(".")
91
+ ? name.endsWith(t)
92
+ : t.endsWith("/*")
93
+ ? type.startsWith(t.slice(0, -1))
94
+ : type === t);
95
+ }
96
+ /**
97
+ * A size limit as the person reads it: decimal units (1 MB is 1,000,000 bytes, like `maxBytes`), the unit word localized, and
98
+ * ROUNDED DOWN to one decimal, so a message never claims a bigger limit than the real one ("larger than 1 MB" for 1.05 MB).
99
+ */
100
+ export function formatBytes(n, locale) {
101
+ const value = Number.isFinite(n) && n > 0 ? n : 0;
102
+ const [unit, amount] = value >= 1e6
103
+ ? ["megabyte", value / 1e6]
104
+ : value >= 1e3
105
+ ? ["kilobyte", value / 1e3]
106
+ : ["byte", value];
107
+ const floored = Math.floor(amount * 10) / 10;
108
+ const make = (l) => new Intl.NumberFormat(l, {
109
+ style: "unit",
110
+ unit,
111
+ unitDisplay: "short",
112
+ maximumFractionDigits: 1,
113
+ });
114
+ try {
115
+ return make(locale).format(floored);
116
+ }
117
+ catch {
118
+ return make(undefined).format(floored);
119
+ }
120
+ }
121
+ /** Fills `{token}` placeholders in a template. A `name` or `names` value becomes name parts; nothing is searched for in the result. */
122
+ function build(template, vars) {
123
+ const parts = [];
124
+ for (const piece of template.split(/(\{\w+\})/)) {
125
+ const key = /^\{(\w+)\}$/.exec(piece)?.[1];
126
+ const v = key === undefined ? undefined : vars[key];
127
+ if (key === undefined || v === undefined)
128
+ parts.push(piece);
129
+ else if (key === "name")
130
+ parts.push({ name: String(v) });
131
+ else if (key === "names" && Array.isArray(v))
132
+ v.forEach((n, i) => parts.push(...(i > 0 ? [", ", { name: n }] : [{ name: n }])));
133
+ else
134
+ parts.push(String(v));
135
+ }
136
+ const text = parts.map((x) => (typeof x === "string" ? x : x.name)).join("");
137
+ return { text, parts };
138
+ }
139
+ /**
140
+ * Splits a selection into the files to hand to the host and the reasons for the rest. Nothing is read from the files: only their
141
+ * name, type and size are looked at. This is a courtesy to the person; the HOST must check type and size again on the server.
142
+ * The "too many" message comes FIRST, so the per-file reasons can never push it into "and N more".
143
+ */
144
+ export function checkFiles(files, checks, copy) {
145
+ const accepted = [];
146
+ const problems = [];
147
+ const over = [];
148
+ for (const f of files) {
149
+ const name = showName(f.name, copy.unnamed);
150
+ if (checks.folders?.has(f))
151
+ problems.push(build(copy.folder, { name }));
152
+ else if (!matchesAccept(f, checks.accept))
153
+ problems.push(build(copy.wrongType, { name }));
154
+ else if (f.size === 0)
155
+ problems.push(build(copy.empty, { name }));
156
+ else if (checks.maxBytes !== undefined && f.size > checks.maxBytes)
157
+ problems.push(build(copy.tooBig, { name, size: formatBytes(checks.maxBytes, checks.locale) }));
158
+ else if (checks.held + accepted.length >= checks.maxFiles)
159
+ over.push(name);
160
+ else
161
+ accepted.push(f);
162
+ }
163
+ if (over.length > 0) {
164
+ const names = over.slice(0, MAX_PROBLEM_ROWS);
165
+ const p = build(accepted.length === 0 ? copy.tooManyNone : copy.tooMany, {
166
+ max: checks.maxFiles,
167
+ names,
168
+ });
169
+ if (over.length > names.length) {
170
+ p.parts.push("\u2026");
171
+ p.text += "\u2026";
172
+ }
173
+ problems.unshift(p);
174
+ }
175
+ return { accepted, problems };
176
+ }
177
+ /** At most {@link MAX_PROBLEM_ROWS} refusals, then "and N more": the same text is shown and spoken. */
178
+ export function capProblems(problems, copy) {
179
+ if (problems.length <= MAX_PROBLEM_ROWS)
180
+ return [...problems];
181
+ return [
182
+ ...problems.slice(0, MAX_PROBLEM_ROWS),
183
+ build(copy.moreProblems, { count: problems.length - MAX_PROBLEM_ROWS }),
184
+ ];
185
+ }
186
+ const hasFiles = (e) => Array.from(e.dataTransfer?.types ?? []).includes("Files");
187
+ /**
188
+ * What a drop carries. Each item gives its `File` and its folder flag TOGETHER (`getAsFile` and `webkitGetAsEntry` on the same
189
+ * item), so nothing is matched up by position or identity afterwards. Browsers without items fall back to `files`.
190
+ */
191
+ function readDrop(dt) {
192
+ const files = [];
193
+ const folders = new Set();
194
+ const items = Array.from(dt?.items ?? []).filter((i) => i.kind === "file");
195
+ if (items.length === 0)
196
+ return { files: Array.from(dt?.files ?? []), folders };
197
+ for (const item of items) {
198
+ const entry = item.webkitGetAsEntry?.();
199
+ const file = item.getAsFile?.() ?? (entry?.isDirectory ? new File([], entry.name ?? "") : null);
200
+ if (!file)
201
+ continue;
202
+ files.push(file);
203
+ if (entry?.isDirectory)
204
+ folders.add(file);
205
+ }
206
+ return { files, folders };
207
+ }
208
+ const STATUS_ICON = {
209
+ queued: FileText,
210
+ uploading: Loader2,
211
+ done: Check,
212
+ error: AlertCircle,
213
+ };
214
+ const RELEASE_MS = 6000;
215
+ /** A refusal with each file name set in its own bidi isolate (the name is untrusted text and must not reorder the words around it). */
216
+ function ProblemText({ problem }) {
217
+ return (_jsx(_Fragment, { children: problem.parts.map((part, i) => typeof part === "string" ? part : _jsx("bdi", { children: part.name }, i)) }));
218
+ }
219
+ /**
220
+ * @internal Drop files here or browse. A real `input[type=file]` behind a button, a visible drag state, per-file chips (the shared
221
+ * {@link agentChip} family) and a persistent live region for refusals and upload status. File names are untrusted text.
222
+ */
223
+ export function AgentDropZone({ onFiles, accept, maxFiles = DEFAULT_MAX_FILES, maxBytes, uploads = [], onRemoveUpload, disabled = false, disabledReason, reasonId: externalReasonId, locale, target, copy, className, }) {
224
+ const c = useCopy(DEFAULT_DROP_COPY, copy);
225
+ const root = useRef(null);
226
+ const input = useRef(null);
227
+ const inputId = useId();
228
+ const ownReasonId = useId();
229
+ const reasonId = externalReasonId ?? ownReasonId;
230
+ const [dragging, setDragging] = useState(false);
231
+ const [problems, setProblems] = useState([]);
232
+ // ONE live region, one announcement at a time, each a new keyed node: a refusal and an upload finishing never silence each other.
233
+ const [said, setSaid] = useState(null);
234
+ const say = (text) => setSaid((prev) => ({ text, n: (prev?.n ?? 0) + 1 }));
235
+ // What counts against the limit is what is drawn as held: queued, uploading and done. Failed AND unknown statuses do not.
236
+ const held = uploads.filter((u) => u.status === "queued" || u.status === "uploading" || u.status === "done").length;
237
+ const latest = useRef({ onFiles, accept, maxFiles, maxBytes, held, disabled, locale, c });
238
+ latest.current = { onFiles, accept, maxFiles, maxBytes, held, disabled, locale, c };
239
+ const take = (files, folders) => {
240
+ const l = latest.current;
241
+ if (l.disabled || files.length === 0)
242
+ return;
243
+ const { accepted, problems: bad } = checkFiles(files, { ...l, folders }, l.c);
244
+ const shown = capProblems(bad, l.c);
245
+ setProblems(shown);
246
+ if (shown.length > 0)
247
+ say(shown.map((p) => p.text).join(" "));
248
+ if (accepted.length > 0)
249
+ l.onFiles(accepted);
250
+ };
251
+ // Drops and pastes land on `target` (the whole composer card) or on the zone. Native listeners: a drop must be cancelled to be
252
+ // allowed at all (without `dragover`'s preventDefault the browser opens the file instead of firing `drop`).
253
+ useEffect(() => {
254
+ const el = target?.current ?? root.current;
255
+ if (!el)
256
+ return;
257
+ let depth = 0;
258
+ const mark = (on) => {
259
+ setDragging(on);
260
+ if (on)
261
+ el.setAttribute("data-dragging", "");
262
+ else
263
+ el.removeAttribute("data-dragging");
264
+ };
265
+ const enter = (e) => {
266
+ if (!hasFiles(e))
267
+ return;
268
+ e.preventDefault();
269
+ depth += 1;
270
+ if (!latest.current.disabled)
271
+ mark(true);
272
+ };
273
+ const over = (e) => {
274
+ if (!hasFiles(e))
275
+ return;
276
+ e.preventDefault();
277
+ if (e.dataTransfer)
278
+ e.dataTransfer.dropEffect = latest.current.disabled ? "none" : "copy";
279
+ };
280
+ const leave = (e) => {
281
+ if (!hasFiles(e))
282
+ return;
283
+ depth = Math.max(0, depth - 1);
284
+ if (depth === 0)
285
+ mark(false);
286
+ };
287
+ const drop = (e) => {
288
+ if (!hasFiles(e))
289
+ return;
290
+ e.preventDefault();
291
+ depth = 0;
292
+ mark(false);
293
+ const { files, folders } = readDrop(e.dataTransfer);
294
+ take(files, folders);
295
+ };
296
+ const paste = (e) => {
297
+ const files = Array.from(e.clipboardData?.files ?? []);
298
+ // Text pastes as text. A copy from Office or Numbers carries text AND a picture of it: the text wins. An image copied from a
299
+ // browser has no text and is taken as a file.
300
+ if (files.length === 0 || e.clipboardData?.getData("text/plain"))
301
+ return;
302
+ e.preventDefault();
303
+ take(files);
304
+ };
305
+ el.addEventListener("dragenter", enter);
306
+ el.addEventListener("dragover", over);
307
+ el.addEventListener("dragleave", leave);
308
+ el.addEventListener("drop", drop);
309
+ el.addEventListener("paste", paste);
310
+ return () => {
311
+ el.removeEventListener("dragenter", enter);
312
+ el.removeEventListener("dragover", over);
313
+ el.removeEventListener("dragleave", leave);
314
+ el.removeEventListener("drop", drop);
315
+ el.removeEventListener("paste", paste);
316
+ mark(false);
317
+ };
318
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- `take` reads the latest props from a ref
319
+ }, [target]);
320
+ useEffect(() => {
321
+ if (disabled) {
322
+ setDragging(false);
323
+ (target?.current ?? root.current)?.removeAttribute("data-dragging");
324
+ }
325
+ }, [disabled, target]);
326
+ // A refusal is spoken once and then released (the region must not stay on it); the visible list stays until the next drop.
327
+ useEffect(() => {
328
+ if (!said)
329
+ return;
330
+ const t = setTimeout(() => setSaid(null), RELEASE_MS);
331
+ return () => clearTimeout(t);
332
+ }, [said]);
333
+ // Upload status, said once per change. What was already there when the zone mounted is not news; several finishing together are
334
+ // one sentence; progress alone is never announced.
335
+ const seen = useRef(null);
336
+ if (seen.current === null)
337
+ seen.current = new Map(uploads.map((u) => [u.id, u.status]));
338
+ useEffect(() => {
339
+ const before = seen.current;
340
+ const done = [];
341
+ const failed = [];
342
+ const now = new Map();
343
+ for (const u of uploads) {
344
+ now.set(u.id, u.status);
345
+ if (before.get(u.id) === u.status)
346
+ continue;
347
+ if (u.status === "done")
348
+ done.push(u);
349
+ else if (u.status === "error")
350
+ failed.push(u);
351
+ }
352
+ seen.current = now;
353
+ const parts = [];
354
+ const one = (u, word) => fmt(word, { name: showName(u.name, c.unnamed, 40) });
355
+ if (done.length === 1)
356
+ parts.push(one(done[0], c.announceDone));
357
+ else if (done.length > 1)
358
+ parts.push(fmt(c.announceManyDone, { count: done.length }));
359
+ if (failed.length === 1)
360
+ parts.push(one(failed[0], c.announceFailed));
361
+ else if (failed.length > 1)
362
+ parts.push(fmt(c.announceManyFailed, { count: failed.length }));
363
+ if (parts.length > 0)
364
+ say(parts.join(". "));
365
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- `say` only sets state
366
+ }, [
367
+ uploads,
368
+ c.announceDone,
369
+ c.announceFailed,
370
+ c.announceManyDone,
371
+ c.announceManyFailed,
372
+ c.unnamed,
373
+ ]);
374
+ const rows = uploads.slice(0, MAX_UPLOAD_ROWS);
375
+ const hidden = uploads.length - rows.length;
376
+ const reason = disabledReason ?? c.paused;
377
+ return (_jsxs("div", { ref: root, "data-agent-dropzone": "", className: cn("flex flex-col gap-1.5", className), children: [_jsxs("div", { "data-dragging": dragging || undefined, className: cn("flex min-h-11 flex-wrap items-center gap-x-2 rounded-lg border border-dashed px-3 py-1 text-xs/5 transition-[border-color,background-color] duration-[var(--duration-micro)] motion-reduce:transition-none", dragging ? "border-ring bg-muted text-foreground" : "border-border text-muted-foreground"), children: [_jsx(Paperclip, { "aria-hidden": true, className: "size-3.5 shrink-0" }), _jsx("label", { htmlFor: inputId, className: "sr-only", children: c.pickerLabel }), _jsx("input", { ref: input, id: inputId, type: "file", multiple: maxFiles > 1, accept: accept, disabled: disabled, "aria-describedby": disabled ? reasonId : undefined, tabIndex: -1, className: "sr-only", onChange: (e) => {
378
+ take(Array.from(e.target.files ?? []));
379
+ e.target.value = ""; // so the same file can be chosen again
380
+ } }), _jsxs("span", { className: cn("min-w-0", dragging && "font-medium"), children: [dragging ? c.dragging : c.drop, " ", _jsx("button", { type: "button", disabled: disabled, "aria-label": c.browseLabel, "aria-describedby": disabled ? reasonId : undefined, onClick: () => input.current?.click(), className: cn("rounded-md px-1 font-medium text-foreground underline underline-offset-2 hover:no-underline disabled:cursor-not-allowed disabled:text-muted-foreground disabled:no-underline pointer-coarse:min-h-11", focusRing), children: c.browse })] }), disabled && !externalReasonId && (_jsx("span", { id: reasonId, className: "basis-full", children: reason }))] }), problems.length > 0 && (_jsx("ul", { className: "flex flex-col gap-0.5 px-1 text-xs/5 text-[var(--tone-danger-fg)]", children: problems.map((p, i) => (_jsx("li", { children: _jsx(ProblemText, { problem: p }) }, `${i}:${p.text}`))) })), rows.length > 0 && (_jsxs("ul", { "aria-label": c.uploadsLabel, className: "flex flex-wrap gap-1.5", children: [rows.map((u) => {
381
+ const parts = showParts(u.name, c.unnamed, 40);
382
+ const name = parts.head + parts.tail;
383
+ const known = Object.hasOwn(STATUS_ICON, u.status);
384
+ const Icon = known ? STATUS_ICON[u.status] : AlertCircle;
385
+ const failed = u.status === "error" || !known;
386
+ const pct = u.status === "uploading" &&
387
+ typeof u.progress === "number" &&
388
+ Number.isFinite(u.progress)
389
+ ? Math.max(0, Math.min(100, Math.round(u.progress)))
390
+ : undefined;
391
+ const why = failed ? cleanLine(u.error, 80, true) : undefined;
392
+ const word = failed
393
+ ? c.failed
394
+ : u.status === "queued"
395
+ ? c.queued
396
+ : u.status === "uploading"
397
+ ? c.uploading
398
+ : c.done;
399
+ return (_jsxs("li", { title: why ? `${name}: ${why}` : name,
400
+ // Wraps: the reason sits on its own line under the name, so a long reason can never squeeze the name away.
401
+ className: cn(agentChip, "flex-wrap py-1", onRemoveUpload && "pe-1", failed && "text-[var(--tone-danger-fg)]"), children: [_jsx(Icon, { "aria-hidden": true, className: cn("size-3 shrink-0", u.status === "uploading" && "animate-spin motion-reduce:animate-none") }), _jsxs("bdi", { className: "flex min-w-[8ch] max-w-3xs text-foreground", children: [_jsx("span", { className: "min-w-0 truncate", children: parts.head }), _jsx("span", { className: "shrink-0", children: parts.tail })] }), _jsxs("span", { className: "shrink-0", children: [word, pct !== undefined && ` ${pct}%`] }), pct !== undefined && (_jsx("progress", { value: pct, max: 100, "aria-label": `${name}: ${word}`, className: "sr-only" })), onRemoveUpload && (_jsx("button", { type: "button", "aria-label": fmt(c.remove, { name }), onClick: () => onRemoveUpload(u.id), className: cn(removeButton, focusRing), children: _jsx(X, { "aria-hidden": true, className: "size-3" }) })), why && _jsx("span", { className: "basis-full min-w-0 break-words ps-4.5", children: why })] }, u.id));
402
+ }), hidden > 0 && _jsx("li", { className: agentChip, children: fmt(c.moreFiles, { count: hidden }) })] })), _jsx("p", { role: "status", className: "sr-only", children: said ? _jsx("span", { children: said.text }, said.n) : null })] }));
403
+ }
404
+ //# sourceMappingURL=dropzone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropzone.js","sourceRoot":"","sources":["../../src/agent/dropzone.tsx"],"names":[],"mappings":"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"}
@@ -20,6 +20,11 @@ export { AgentMarkdown, classifyHref, resolveLink, type AgentLinkClass, type Age
20
20
  export { AgentToolCallCard, type AgentToolCallCardProps, type AgentToolCallCopy, } from "./tool-call-card.js";
21
21
  export { AgentActivityLedger, type AgentActivityLedgerProps, type AgentActivityLedgerCopy, } from "./activity-ledger.js";
22
22
  export { AgentComposer, type AgentComposerProps, type AgentComposerCopy } from "./composer.js";
23
+ export { AgentContextChips, AgentQuoteBlock, cleanQuote, sameContexts, type AgentContextChipsCopy, type AgentContextChipsProps, type AgentContextRef, type AgentMentionRef, type AgentQuote, type AgentSendMeta, } from "./context.js";
24
+ export { type AgentMentionCandidate, type AgentMentionCopy, type AgentMentionSource, } from "./mentions.js";
25
+ export type { AgentQuoteReplyCopy } from "./quote-reply.js";
26
+ export { AgentDropZone, cleanFileName, matchesAccept, middleTruncate, type AgentDropZoneCopy, type AgentDropZoneProps, type AgentUpload, } from "./dropzone.js";
27
+ export { AgentFollowUps, AgentSuggestionRow, suggestionPrompt, type AgentFollowUpsCopy, type AgentFollowUpsProps, type AgentSuggestion, type AgentSuggestionRowCopy, type AgentSuggestionRowProps, } from "./suggestions.js";
23
28
  export { AgentMessage, type AgentMessageProps, type AgentMessageCopy } from "./message.js";
24
29
  export { AgentConversation, type AgentConversationProps, type AgentConversationCopy, } from "./conversation.js";
25
30
  export { AgentPanelFrame, type AgentPanelFrameProps, type AgentPanelFrameCopy, } from "./panel-frame.js";
@@ -32,6 +37,12 @@ export { AgentOfferCard, type AgentOfferCardCopy, type AgentOfferCardProps, } fr
32
37
  export { AgentProductCard, type AgentProductCardCopy, type AgentProductCardProps, } from "./role-cards/product-card.js";
33
38
  export { AgentOpportunityCard, type AgentOpportunityCardCopy, type AgentOpportunityCardProps, } from "./role-cards/opportunity-card.js";
34
39
  export { AgentMatchCard, type AgentMatchCardCopy, type AgentMatchCardProps, } from "./role-cards/match-card.js";
40
+ export { AgentScheduleCard, type AgentScheduleCardCopy, type AgentScheduleCardProps, } from "./role-cards/schedule-card.js";
41
+ export { AgentLabelCard, type AgentLabelCardCopy, type AgentLabelCardProps, } from "./role-cards/label-card.js";
42
+ export { AgentStatsCard, type AgentStatsCardCopy, type AgentStatsCardProps, } from "./role-cards/stats-card.js";
43
+ export { AgentBrandProfileCard, type AgentBrandProfileCardCopy, type AgentBrandProfileCardProps, } from "./role-cards/brand-profile-card.js";
44
+ export { AgentLabReportCard, type AgentLabReportCardCopy, type AgentLabReportCardProps, } from "./role-cards/lab-report-card.js";
45
+ export { AgentOrgCard, type AgentOrgCardCopy, type AgentOrgCardProps } from "./role-cards/org-card.js";
35
46
  export { AgentDataTableCard, DEFAULT_THIRD_PARTY_COLUMNS, MAX_AGENT_TABLE_ROWS, type AgentDataTableCardCopy, type AgentDataTableCardProps, } from "./role-cards/data-table-card.js";
36
47
  export { agentLinkKind, createSurfaceAllowLink, surfaceThirdPartyColumns, type AgentHostSurface, type AgentLinkKind, } from "./role-cards/surface-links.js";
37
48
  export { AgentInspectorDrawer, type AgentInspectorCloseFocusEvent, type AgentInspectorDrawerCopy, type AgentInspectorDrawerProps, } from "./role-cards/inspector-drawer.js";