@vendoai/ui 0.4.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 (525) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +7 -0
  3. package/dist/chrome/activity-ledger.d.ts +14 -0
  4. package/dist/chrome/activity-ledger.d.ts.map +1 -0
  5. package/dist/chrome/activity-ledger.js +40 -0
  6. package/dist/chrome/activity-ledger.js.map +1 -0
  7. package/dist/chrome/activity-panel.d.ts +7 -0
  8. package/dist/chrome/activity-panel.d.ts.map +1 -0
  9. package/dist/chrome/activity-panel.js +27 -0
  10. package/dist/chrome/activity-panel.js.map +1 -0
  11. package/dist/chrome/activity-semantics.d.ts +42 -0
  12. package/dist/chrome/activity-semantics.d.ts.map +1 -0
  13. package/dist/chrome/activity-semantics.js +119 -0
  14. package/dist/chrome/activity-semantics.js.map +1 -0
  15. package/dist/chrome/approval-card.d.ts +22 -0
  16. package/dist/chrome/approval-card.d.ts.map +1 -0
  17. package/dist/chrome/approval-card.js +95 -0
  18. package/dist/chrome/approval-card.js.map +1 -0
  19. package/dist/chrome/approval-sheet.d.ts +23 -0
  20. package/dist/chrome/approval-sheet.d.ts.map +1 -0
  21. package/dist/chrome/approval-sheet.js +72 -0
  22. package/dist/chrome/approval-sheet.js.map +1 -0
  23. package/dist/chrome/automations-panel.d.ts +3 -0
  24. package/dist/chrome/automations-panel.d.ts.map +1 -0
  25. package/dist/chrome/automations-panel.js +305 -0
  26. package/dist/chrome/automations-panel.js.map +1 -0
  27. package/dist/chrome/build-beat.d.ts +70 -0
  28. package/dist/chrome/build-beat.d.ts.map +1 -0
  29. package/dist/chrome/build-beat.js +101 -0
  30. package/dist/chrome/build-beat.js.map +1 -0
  31. package/dist/chrome/chrome-css.d.ts +7 -0
  32. package/dist/chrome/chrome-css.d.ts.map +1 -0
  33. package/dist/chrome/chrome-css.js +2042 -0
  34. package/dist/chrome/chrome-css.js.map +1 -0
  35. package/dist/chrome/chrome-root.d.ts +13 -0
  36. package/dist/chrome/chrome-root.d.ts.map +1 -0
  37. package/dist/chrome/chrome-root.js +39 -0
  38. package/dist/chrome/chrome-root.js.map +1 -0
  39. package/dist/chrome/clipboard.d.ts +4 -0
  40. package/dist/chrome/clipboard.d.ts.map +1 -0
  41. package/dist/chrome/clipboard.js +49 -0
  42. package/dist/chrome/clipboard.js.map +1 -0
  43. package/dist/chrome/connect-card.d.ts +19 -0
  44. package/dist/chrome/connect-card.d.ts.map +1 -0
  45. package/dist/chrome/connect-card.js +57 -0
  46. package/dist/chrome/connect-card.js.map +1 -0
  47. package/dist/chrome/connect-dock.d.ts +25 -0
  48. package/dist/chrome/connect-dock.d.ts.map +1 -0
  49. package/dist/chrome/connect-dock.js +192 -0
  50. package/dist/chrome/connect-dock.js.map +1 -0
  51. package/dist/chrome/connected-accounts-panel.d.ts +14 -0
  52. package/dist/chrome/connected-accounts-panel.d.ts.map +1 -0
  53. package/dist/chrome/connected-accounts-panel.js +157 -0
  54. package/dist/chrome/connected-accounts-panel.js.map +1 -0
  55. package/dist/chrome/dev-mode.d.ts +5 -0
  56. package/dist/chrome/dev-mode.d.ts.map +1 -0
  57. package/dist/chrome/dev-mode.js +7 -0
  58. package/dist/chrome/dev-mode.js.map +1 -0
  59. package/dist/chrome/discoverability.d.ts +33 -0
  60. package/dist/chrome/discoverability.d.ts.map +1 -0
  61. package/dist/chrome/discoverability.js +63 -0
  62. package/dist/chrome/discoverability.js.map +1 -0
  63. package/dist/chrome/embeds.d.ts +21 -0
  64. package/dist/chrome/embeds.d.ts.map +1 -0
  65. package/dist/chrome/embeds.js +181 -0
  66. package/dist/chrome/embeds.js.map +1 -0
  67. package/dist/chrome/fluid-thinking.d.ts +15 -0
  68. package/dist/chrome/fluid-thinking.d.ts.map +1 -0
  69. package/dist/chrome/fluid-thinking.js +37 -0
  70. package/dist/chrome/fluid-thinking.js.map +1 -0
  71. package/dist/chrome/humanize.d.ts +46 -0
  72. package/dist/chrome/humanize.d.ts.map +1 -0
  73. package/dist/chrome/humanize.js +104 -0
  74. package/dist/chrome/humanize.js.map +1 -0
  75. package/dist/chrome/index.d.ts +39 -0
  76. package/dist/chrome/index.d.ts.map +1 -0
  77. package/dist/chrome/index.js +38 -0
  78. package/dist/chrome/index.js.map +1 -0
  79. package/dist/chrome/markdown.d.ts +23 -0
  80. package/dist/chrome/markdown.d.ts.map +1 -0
  81. package/dist/chrome/markdown.js +149 -0
  82. package/dist/chrome/markdown.js.map +1 -0
  83. package/dist/chrome/morph-toast.d.ts +43 -0
  84. package/dist/chrome/morph-toast.d.ts.map +1 -0
  85. package/dist/chrome/morph-toast.js +89 -0
  86. package/dist/chrome/morph-toast.js.map +1 -0
  87. package/dist/chrome/no-policy-notice.d.ts +8 -0
  88. package/dist/chrome/no-policy-notice.d.ts.map +1 -0
  89. package/dist/chrome/no-policy-notice.js +18 -0
  90. package/dist/chrome/no-policy-notice.js.map +1 -0
  91. package/dist/chrome/onest-font.gen.d.ts +10 -0
  92. package/dist/chrome/onest-font.gen.d.ts.map +1 -0
  93. package/dist/chrome/onest-font.gen.js +10 -0
  94. package/dist/chrome/onest-font.gen.js.map +1 -0
  95. package/dist/chrome/overlay-registry.d.ts +66 -0
  96. package/dist/chrome/overlay-registry.d.ts.map +1 -0
  97. package/dist/chrome/overlay-registry.js +103 -0
  98. package/dist/chrome/overlay-registry.js.map +1 -0
  99. package/dist/chrome/palette-hotkey.d.ts +42 -0
  100. package/dist/chrome/palette-hotkey.d.ts.map +1 -0
  101. package/dist/chrome/palette-hotkey.js +91 -0
  102. package/dist/chrome/palette-hotkey.js.map +1 -0
  103. package/dist/chrome/policy-notice-body.d.ts +3 -0
  104. package/dist/chrome/policy-notice-body.d.ts.map +1 -0
  105. package/dist/chrome/policy-notice-body.js +6 -0
  106. package/dist/chrome/policy-notice-body.js.map +1 -0
  107. package/dist/chrome/takeover-portal.d.ts +16 -0
  108. package/dist/chrome/takeover-portal.d.ts.map +1 -0
  109. package/dist/chrome/takeover-portal.js +21 -0
  110. package/dist/chrome/takeover-portal.js.map +1 -0
  111. package/dist/chrome/thread/attachments.d.ts +24 -0
  112. package/dist/chrome/thread/attachments.d.ts.map +1 -0
  113. package/dist/chrome/thread/attachments.js +50 -0
  114. package/dist/chrome/thread/attachments.js.map +1 -0
  115. package/dist/chrome/thread/composer.d.ts +63 -0
  116. package/dist/chrome/thread/composer.d.ts.map +1 -0
  117. package/dist/chrome/thread/composer.js +259 -0
  118. package/dist/chrome/thread/composer.js.map +1 -0
  119. package/dist/chrome/thread/index.d.ts +41 -0
  120. package/dist/chrome/thread/index.d.ts.map +1 -0
  121. package/dist/chrome/thread/index.js +258 -0
  122. package/dist/chrome/thread/index.js.map +1 -0
  123. package/dist/chrome/thread/message-data.d.ts +35 -0
  124. package/dist/chrome/thread/message-data.d.ts.map +1 -0
  125. package/dist/chrome/thread/message-data.js +127 -0
  126. package/dist/chrome/thread/message-data.js.map +1 -0
  127. package/dist/chrome/thread/message-list.d.ts +30 -0
  128. package/dist/chrome/thread/message-list.d.ts.map +1 -0
  129. package/dist/chrome/thread/message-list.js +11 -0
  130. package/dist/chrome/thread/message-list.js.map +1 -0
  131. package/dist/chrome/thread/message.d.ts +18 -0
  132. package/dist/chrome/thread/message.d.ts.map +1 -0
  133. package/dist/chrome/thread/message.js +57 -0
  134. package/dist/chrome/thread/message.js.map +1 -0
  135. package/dist/chrome/thread/parts.d.ts +53 -0
  136. package/dist/chrome/thread/parts.d.ts.map +1 -0
  137. package/dist/chrome/thread/parts.js +184 -0
  138. package/dist/chrome/thread/parts.js.map +1 -0
  139. package/dist/chrome/thread/scrolling.d.ts +26 -0
  140. package/dist/chrome/thread/scrolling.d.ts.map +1 -0
  141. package/dist/chrome/thread/scrolling.js +214 -0
  142. package/dist/chrome/thread/scrolling.js.map +1 -0
  143. package/dist/chrome/truncate.d.ts +12 -0
  144. package/dist/chrome/truncate.d.ts.map +1 -0
  145. package/dist/chrome/truncate.js +18 -0
  146. package/dist/chrome/truncate.js.map +1 -0
  147. package/dist/chrome/vendo-activities.d.ts +24 -0
  148. package/dist/chrome/vendo-activities.d.ts.map +1 -0
  149. package/dist/chrome/vendo-activities.js +38 -0
  150. package/dist/chrome/vendo-activities.js.map +1 -0
  151. package/dist/chrome/vendo-overlay.d.ts +63 -0
  152. package/dist/chrome/vendo-overlay.d.ts.map +1 -0
  153. package/dist/chrome/vendo-overlay.js +256 -0
  154. package/dist/chrome/vendo-overlay.js.map +1 -0
  155. package/dist/chrome/vendo-page.d.ts +3 -0
  156. package/dist/chrome/vendo-page.d.ts.map +1 -0
  157. package/dist/chrome/vendo-page.js +162 -0
  158. package/dist/chrome/vendo-page.js.map +1 -0
  159. package/dist/chrome/vendo-palette.d.ts +29 -0
  160. package/dist/chrome/vendo-palette.d.ts.map +1 -0
  161. package/dist/chrome/vendo-palette.js +95 -0
  162. package/dist/chrome/vendo-palette.js.map +1 -0
  163. package/dist/chrome/vendo-slot.d.ts +79 -0
  164. package/dist/chrome/vendo-slot.d.ts.map +1 -0
  165. package/dist/chrome/vendo-slot.js +153 -0
  166. package/dist/chrome/vendo-slot.js.map +1 -0
  167. package/dist/chrome/vendo-toasts.d.ts +40 -0
  168. package/dist/chrome/vendo-toasts.d.ts.map +1 -0
  169. package/dist/chrome/vendo-toasts.js +135 -0
  170. package/dist/chrome/vendo-toasts.js.map +1 -0
  171. package/dist/chrome/vendo-trigger.d.ts +24 -0
  172. package/dist/chrome/vendo-trigger.d.ts.map +1 -0
  173. package/dist/chrome/vendo-trigger.js +30 -0
  174. package/dist/chrome/vendo-trigger.js.map +1 -0
  175. package/dist/chrome/waiting-queue.d.ts +8 -0
  176. package/dist/chrome/waiting-queue.d.ts.map +1 -0
  177. package/dist/chrome/waiting-queue.js +21 -0
  178. package/dist/chrome/waiting-queue.js.map +1 -0
  179. package/dist/client-impl.d.ts +4 -0
  180. package/dist/client-impl.d.ts.map +1 -0
  181. package/dist/client-impl.js +160 -0
  182. package/dist/client-impl.js.map +1 -0
  183. package/dist/client.d.ts +136 -0
  184. package/dist/client.d.ts.map +1 -0
  185. package/dist/client.js +2 -0
  186. package/dist/client.js.map +1 -0
  187. package/dist/context.d.ts +97 -0
  188. package/dist/context.d.ts.map +1 -0
  189. package/dist/context.js +71 -0
  190. package/dist/context.js.map +1 -0
  191. package/dist/eject-templates/activities/index.tsx +113 -0
  192. package/dist/eject-templates/templates.json +29 -0
  193. package/dist/eject-templates/thread/attachments.tsx +69 -0
  194. package/dist/eject-templates/thread/composer.tsx +409 -0
  195. package/dist/eject-templates/thread/index.tsx +422 -0
  196. package/dist/eject-templates/thread/message-data.ts +151 -0
  197. package/dist/eject-templates/thread/message-list.tsx +123 -0
  198. package/dist/eject-templates/thread/message.tsx +149 -0
  199. package/dist/eject-templates/thread/parts.tsx +293 -0
  200. package/dist/eject-templates/thread/scrolling.ts +223 -0
  201. package/dist/embeds.d.ts +28 -0
  202. package/dist/embeds.d.ts.map +1 -0
  203. package/dist/embeds.js +2 -0
  204. package/dist/embeds.js.map +1 -0
  205. package/dist/hooks/index.d.ts +18 -0
  206. package/dist/hooks/index.d.ts.map +1 -0
  207. package/dist/hooks/index.js +19 -0
  208. package/dist/hooks/index.js.map +1 -0
  209. package/dist/hooks/scripted-transport.d.ts +44 -0
  210. package/dist/hooks/scripted-transport.d.ts.map +1 -0
  211. package/dist/hooks/scripted-transport.js +58 -0
  212. package/dist/hooks/scripted-transport.js.map +1 -0
  213. package/dist/hooks/use-activity.d.ts +17 -0
  214. package/dist/hooks/use-activity.d.ts.map +1 -0
  215. package/dist/hooks/use-activity.js +50 -0
  216. package/dist/hooks/use-activity.js.map +1 -0
  217. package/dist/hooks/use-app.d.ts +19 -0
  218. package/dist/hooks/use-app.d.ts.map +1 -0
  219. package/dist/hooks/use-app.js +66 -0
  220. package/dist/hooks/use-app.js.map +1 -0
  221. package/dist/hooks/use-approvals.d.ts +13 -0
  222. package/dist/hooks/use-approvals.d.ts.map +1 -0
  223. package/dist/hooks/use-approvals.js +14 -0
  224. package/dist/hooks/use-approvals.js.map +1 -0
  225. package/dist/hooks/use-apps.d.ts +17 -0
  226. package/dist/hooks/use-apps.d.ts.map +1 -0
  227. package/dist/hooks/use-apps.js +30 -0
  228. package/dist/hooks/use-apps.js.map +1 -0
  229. package/dist/hooks/use-automations.d.ts +25 -0
  230. package/dist/hooks/use-automations.d.ts.map +1 -0
  231. package/dist/hooks/use-automations.js +30 -0
  232. package/dist/hooks/use-automations.js.map +1 -0
  233. package/dist/hooks/use-connections.d.ts +12 -0
  234. package/dist/hooks/use-connections.d.ts.map +1 -0
  235. package/dist/hooks/use-connections.js +15 -0
  236. package/dist/hooks/use-connections.js.map +1 -0
  237. package/dist/hooks/use-connector-catalog.d.ts +8 -0
  238. package/dist/hooks/use-connector-catalog.d.ts.map +1 -0
  239. package/dist/hooks/use-connector-catalog.js +52 -0
  240. package/dist/hooks/use-connector-catalog.js.map +1 -0
  241. package/dist/hooks/use-grants.d.ts +13 -0
  242. package/dist/hooks/use-grants.d.ts.map +1 -0
  243. package/dist/hooks/use-grants.js +14 -0
  244. package/dist/hooks/use-grants.js.map +1 -0
  245. package/dist/hooks/use-mobile-takeover.d.ts +22 -0
  246. package/dist/hooks/use-mobile-takeover.d.ts.map +1 -0
  247. package/dist/hooks/use-mobile-takeover.js +66 -0
  248. package/dist/hooks/use-mobile-takeover.js.map +1 -0
  249. package/dist/hooks/use-resource.d.ts +21 -0
  250. package/dist/hooks/use-resource.d.ts.map +1 -0
  251. package/dist/hooks/use-resource.js +79 -0
  252. package/dist/hooks/use-resource.js.map +1 -0
  253. package/dist/hooks/use-slot-app.d.ts +19 -0
  254. package/dist/hooks/use-slot-app.d.ts.map +1 -0
  255. package/dist/hooks/use-slot-app.js +18 -0
  256. package/dist/hooks/use-slot-app.js.map +1 -0
  257. package/dist/hooks/use-threads.d.ts +16 -0
  258. package/dist/hooks/use-threads.d.ts.map +1 -0
  259. package/dist/hooks/use-threads.js +15 -0
  260. package/dist/hooks/use-threads.js.map +1 -0
  261. package/dist/hooks/use-vendo-overlay.d.ts +31 -0
  262. package/dist/hooks/use-vendo-overlay.d.ts.map +1 -0
  263. package/dist/hooks/use-vendo-overlay.js +23 -0
  264. package/dist/hooks/use-vendo-overlay.js.map +1 -0
  265. package/dist/hooks/use-vendo-status.d.ts +6 -0
  266. package/dist/hooks/use-vendo-status.d.ts.map +1 -0
  267. package/dist/hooks/use-vendo-status.js +28 -0
  268. package/dist/hooks/use-vendo-status.js.map +1 -0
  269. package/dist/hooks/use-vendo-thread.d.ts +39 -0
  270. package/dist/hooks/use-vendo-thread.d.ts.map +1 -0
  271. package/dist/hooks/use-vendo-thread.js +185 -0
  272. package/dist/hooks/use-vendo-thread.js.map +1 -0
  273. package/dist/index.d.ts +12 -0
  274. package/dist/index.d.ts.map +1 -0
  275. package/dist/index.js +12 -0
  276. package/dist/index.js.map +1 -0
  277. package/dist/kit/charts/bar.d.ts +16 -0
  278. package/dist/kit/charts/bar.d.ts.map +1 -0
  279. package/dist/kit/charts/bar.js +21 -0
  280. package/dist/kit/charts/bar.js.map +1 -0
  281. package/dist/kit/charts/donut.d.ts +16 -0
  282. package/dist/kit/charts/donut.d.ts.map +1 -0
  283. package/dist/kit/charts/donut.js +17 -0
  284. package/dist/kit/charts/donut.js.map +1 -0
  285. package/dist/kit/charts/line.d.ts +19 -0
  286. package/dist/kit/charts/line.d.ts.map +1 -0
  287. package/dist/kit/charts/line.js +21 -0
  288. package/dist/kit/charts/line.js.map +1 -0
  289. package/dist/kit/charts/progress.d.ts +12 -0
  290. package/dist/kit/charts/progress.d.ts.map +1 -0
  291. package/dist/kit/charts/progress.js +25 -0
  292. package/dist/kit/charts/progress.js.map +1 -0
  293. package/dist/kit/charts/sanitize.d.ts +24 -0
  294. package/dist/kit/charts/sanitize.d.ts.map +1 -0
  295. package/dist/kit/charts/sanitize.js +50 -0
  296. package/dist/kit/charts/sanitize.js.map +1 -0
  297. package/dist/kit/charts/sparkline.d.ts +11 -0
  298. package/dist/kit/charts/sparkline.d.ts.map +1 -0
  299. package/dist/kit/charts/sparkline.js +17 -0
  300. package/dist/kit/charts/sparkline.js.map +1 -0
  301. package/dist/kit/data/badge.d.ts +13 -0
  302. package/dist/kit/data/badge.d.ts.map +1 -0
  303. package/dist/kit/data/badge.js +12 -0
  304. package/dist/kit/data/badge.js.map +1 -0
  305. package/dist/kit/data/card-list.d.ts +23 -0
  306. package/dist/kit/data/card-list.d.ts.map +1 -0
  307. package/dist/kit/data/card-list.js +43 -0
  308. package/dist/kit/data/card-list.js.map +1 -0
  309. package/dist/kit/data/data-table.d.ts +32 -0
  310. package/dist/kit/data/data-table.d.ts.map +1 -0
  311. package/dist/kit/data/data-table.js +153 -0
  312. package/dist/kit/data/data-table.js.map +1 -0
  313. package/dist/kit/data/stat.d.ts +15 -0
  314. package/dist/kit/data/stat.d.ts.map +1 -0
  315. package/dist/kit/data/stat.js +28 -0
  316. package/dist/kit/data/stat.js.map +1 -0
  317. package/dist/kit/feedback/accordion.d.ts +15 -0
  318. package/dist/kit/feedback/accordion.d.ts.map +1 -0
  319. package/dist/kit/feedback/accordion.js +33 -0
  320. package/dist/kit/feedback/accordion.js.map +1 -0
  321. package/dist/kit/feedback/callout.d.ts +13 -0
  322. package/dist/kit/feedback/callout.d.ts.map +1 -0
  323. package/dist/kit/feedback/callout.js +24 -0
  324. package/dist/kit/feedback/callout.js.map +1 -0
  325. package/dist/kit/feedback/tabs.d.ts +14 -0
  326. package/dist/kit/feedback/tabs.d.ts.map +1 -0
  327. package/dist/kit/feedback/tabs.js +37 -0
  328. package/dist/kit/feedback/tabs.js.map +1 -0
  329. package/dist/kit/format.d.ts +60 -0
  330. package/dist/kit/format.d.ts.map +1 -0
  331. package/dist/kit/format.js +123 -0
  332. package/dist/kit/format.js.map +1 -0
  333. package/dist/kit/forms/button.d.ts +17 -0
  334. package/dist/kit/forms/button.d.ts.map +1 -0
  335. package/dist/kit/forms/button.js +33 -0
  336. package/dist/kit/forms/button.js.map +1 -0
  337. package/dist/kit/forms/checkbox.d.ts +9 -0
  338. package/dist/kit/forms/checkbox.d.ts.map +1 -0
  339. package/dist/kit/forms/checkbox.js +9 -0
  340. package/dist/kit/forms/checkbox.js.map +1 -0
  341. package/dist/kit/forms/date-picker.d.ts +13 -0
  342. package/dist/kit/forms/date-picker.d.ts.map +1 -0
  343. package/dist/kit/forms/date-picker.js +9 -0
  344. package/dist/kit/forms/date-picker.js.map +1 -0
  345. package/dist/kit/forms/disclaimer.d.ts +8 -0
  346. package/dist/kit/forms/disclaimer.d.ts.map +1 -0
  347. package/dist/kit/forms/disclaimer.js +20 -0
  348. package/dist/kit/forms/disclaimer.js.map +1 -0
  349. package/dist/kit/forms/field.d.ts +18 -0
  350. package/dist/kit/forms/field.d.ts.map +1 -0
  351. package/dist/kit/forms/field.js +19 -0
  352. package/dist/kit/forms/field.js.map +1 -0
  353. package/dist/kit/forms/form.d.ts +10 -0
  354. package/dist/kit/forms/form.d.ts.map +1 -0
  355. package/dist/kit/forms/form.js +9 -0
  356. package/dist/kit/forms/form.js.map +1 -0
  357. package/dist/kit/forms/input.d.ts +14 -0
  358. package/dist/kit/forms/input.d.ts.map +1 -0
  359. package/dist/kit/forms/input.js +9 -0
  360. package/dist/kit/forms/input.js.map +1 -0
  361. package/dist/kit/forms/select.d.ts +21 -0
  362. package/dist/kit/forms/select.d.ts.map +1 -0
  363. package/dist/kit/forms/select.js +35 -0
  364. package/dist/kit/forms/select.js.map +1 -0
  365. package/dist/kit/forms/textarea.d.ts +12 -0
  366. package/dist/kit/forms/textarea.d.ts.map +1 -0
  367. package/dist/kit/forms/textarea.js +9 -0
  368. package/dist/kit/forms/textarea.js.map +1 -0
  369. package/dist/kit/index.d.ts +42 -0
  370. package/dist/kit/index.d.ts.map +1 -0
  371. package/dist/kit/index.js +45 -0
  372. package/dist/kit/index.js.map +1 -0
  373. package/dist/kit/kit-prompt.d.ts +7 -0
  374. package/dist/kit/kit-prompt.d.ts.map +1 -0
  375. package/dist/kit/kit-prompt.js +7 -0
  376. package/dist/kit/kit-prompt.js.map +1 -0
  377. package/dist/kit/layout.d.ts +29 -0
  378. package/dist/kit/layout.d.ts.map +1 -0
  379. package/dist/kit/layout.js +64 -0
  380. package/dist/kit/layout.js.map +1 -0
  381. package/dist/kit/registry.d.ts +11 -0
  382. package/dist/kit/registry.d.ts.map +1 -0
  383. package/dist/kit/registry.js +34 -0
  384. package/dist/kit/registry.js.map +1 -0
  385. package/dist/kit/schema.d.ts +9 -0
  386. package/dist/kit/schema.d.ts.map +1 -0
  387. package/dist/kit/schema.js +9 -0
  388. package/dist/kit/schema.js.map +1 -0
  389. package/dist/kit/tokens.d.ts +33 -0
  390. package/dist/kit/tokens.d.ts.map +1 -0
  391. package/dist/kit/tokens.js +48 -0
  392. package/dist/kit/tokens.js.map +1 -0
  393. package/dist/kit/values.d.ts +55 -0
  394. package/dist/kit/values.d.ts.map +1 -0
  395. package/dist/kit/values.js +108 -0
  396. package/dist/kit/values.js.map +1 -0
  397. package/dist/theme.d.ts +25 -0
  398. package/dist/theme.d.ts.map +1 -0
  399. package/dist/theme.js +100 -0
  400. package/dist/theme.js.map +1 -0
  401. package/dist/tree/bindings.d.ts +4 -0
  402. package/dist/tree/bindings.d.ts.map +1 -0
  403. package/dist/tree/bindings.js +20 -0
  404. package/dist/tree/bindings.js.map +1 -0
  405. package/dist/tree/branded.d.ts +124 -0
  406. package/dist/tree/branded.d.ts.map +1 -0
  407. package/dist/tree/branded.js +319 -0
  408. package/dist/tree/branded.js.map +1 -0
  409. package/dist/tree/error-boundary.d.ts +22 -0
  410. package/dist/tree/error-boundary.d.ts.map +1 -0
  411. package/dist/tree/error-boundary.js +25 -0
  412. package/dist/tree/error-boundary.js.map +1 -0
  413. package/dist/tree/fluid-reveal.d.ts +22 -0
  414. package/dist/tree/fluid-reveal.d.ts.map +1 -0
  415. package/dist/tree/fluid-reveal.js +28 -0
  416. package/dist/tree/fluid-reveal.js.map +1 -0
  417. package/dist/tree/forming-skeleton.d.ts +14 -0
  418. package/dist/tree/forming-skeleton.d.ts.map +1 -0
  419. package/dist/tree/forming-skeleton.js +36 -0
  420. package/dist/tree/forming-skeleton.js.map +1 -0
  421. package/dist/tree/frames.d.ts +52 -0
  422. package/dist/tree/frames.d.ts.map +1 -0
  423. package/dist/tree/frames.js +143 -0
  424. package/dist/tree/frames.js.map +1 -0
  425. package/dist/tree/host-mount.d.ts +24 -0
  426. package/dist/tree/host-mount.d.ts.map +1 -0
  427. package/dist/tree/host-mount.js +0 -0
  428. package/dist/tree/host-mount.js.map +1 -0
  429. package/dist/tree/index.d.ts +9 -0
  430. package/dist/tree/index.d.ts.map +1 -0
  431. package/dist/tree/index.js +9 -0
  432. package/dist/tree/index.js.map +1 -0
  433. package/dist/tree/jail/JailedComponent.d.ts +41 -0
  434. package/dist/tree/jail/JailedComponent.d.ts.map +1 -0
  435. package/dist/tree/jail/JailedComponent.js +269 -0
  436. package/dist/tree/jail/JailedComponent.js.map +1 -0
  437. package/dist/tree/jail/runtime-bundle.gen.d.ts +3 -0
  438. package/dist/tree/jail/runtime-bundle.gen.d.ts.map +1 -0
  439. package/dist/tree/jail/runtime-bundle.gen.js +3 -0
  440. package/dist/tree/jail/runtime-bundle.gen.js.map +1 -0
  441. package/dist/tree/jail/runtime-entry.d.ts +18 -0
  442. package/dist/tree/jail/runtime-entry.d.ts.map +1 -0
  443. package/dist/tree/jail/runtime-entry.js +440 -0
  444. package/dist/tree/jail/runtime-entry.js.map +1 -0
  445. package/dist/tree/jail/viewport-css.d.ts +17 -0
  446. package/dist/tree/jail/viewport-css.d.ts.map +1 -0
  447. package/dist/tree/jail/viewport-css.js +32 -0
  448. package/dist/tree/jail/viewport-css.js.map +1 -0
  449. package/dist/tree/mcp-shim/entry.d.ts +2 -0
  450. package/dist/tree/mcp-shim/entry.d.ts.map +1 -0
  451. package/dist/tree/mcp-shim/entry.js +45 -0
  452. package/dist/tree/mcp-shim/entry.js.map +1 -0
  453. package/dist/tree/mcp-shim/http-open-card.d.ts +5 -0
  454. package/dist/tree/mcp-shim/http-open-card.d.ts.map +1 -0
  455. package/dist/tree/mcp-shim/http-open-card.js +61 -0
  456. package/dist/tree/mcp-shim/http-open-card.js.map +1 -0
  457. package/dist/tree/mcp-shim/shim-core.d.ts +58 -0
  458. package/dist/tree/mcp-shim/shim-core.d.ts.map +1 -0
  459. package/dist/tree/mcp-shim/shim-core.js +176 -0
  460. package/dist/tree/mcp-shim/shim-core.js.map +1 -0
  461. package/dist/tree/mcp-shim/theme.d.ts +8 -0
  462. package/dist/tree/mcp-shim/theme.d.ts.map +1 -0
  463. package/dist/tree/mcp-shim/theme.js +36 -0
  464. package/dist/tree/mcp-shim/theme.js.map +1 -0
  465. package/dist/tree/notice.d.ts +8 -0
  466. package/dist/tree/notice.d.ts.map +1 -0
  467. package/dist/tree/notice.js +30 -0
  468. package/dist/tree/notice.js.map +1 -0
  469. package/dist/tree/primitives.d.ts +30 -0
  470. package/dist/tree/primitives.d.ts.map +1 -0
  471. package/dist/tree/primitives.js +105 -0
  472. package/dist/tree/primitives.js.map +1 -0
  473. package/dist/tree/renderer-v2.d.ts +15 -0
  474. package/dist/tree/renderer-v2.d.ts.map +1 -0
  475. package/dist/tree/renderer-v2.js +71 -0
  476. package/dist/tree/renderer-v2.js.map +1 -0
  477. package/dist/tree/renderer.d.ts +77 -0
  478. package/dist/tree/renderer.d.ts.map +1 -0
  479. package/dist/tree/renderer.js +376 -0
  480. package/dist/tree/renderer.js.map +1 -0
  481. package/dist/voice/driver.d.ts +94 -0
  482. package/dist/voice/driver.d.ts.map +1 -0
  483. package/dist/voice/driver.js +2 -0
  484. package/dist/voice/driver.js.map +1 -0
  485. package/dist/voice/index.d.ts +7 -0
  486. package/dist/voice/index.d.ts.map +1 -0
  487. package/dist/voice/index.js +5 -0
  488. package/dist/voice/index.js.map +1 -0
  489. package/dist/voice/realtime-driver.d.ts +57 -0
  490. package/dist/voice/realtime-driver.d.ts.map +1 -0
  491. package/dist/voice/realtime-driver.js +592 -0
  492. package/dist/voice/realtime-driver.js.map +1 -0
  493. package/dist/voice/stage.d.ts +12 -0
  494. package/dist/voice/stage.d.ts.map +1 -0
  495. package/dist/voice/stage.js +259 -0
  496. package/dist/voice/stage.js.map +1 -0
  497. package/dist/voice/use-voice-approvals.d.ts +16 -0
  498. package/dist/voice/use-voice-approvals.d.ts.map +1 -0
  499. package/dist/voice/use-voice-approvals.js +77 -0
  500. package/dist/voice/use-voice-approvals.js.map +1 -0
  501. package/dist/voice/use-voice.d.ts +26 -0
  502. package/dist/voice/use-voice.d.ts.map +1 -0
  503. package/dist/voice/use-voice.js +201 -0
  504. package/dist/voice/use-voice.js.map +1 -0
  505. package/dist/voice/voice-act.d.ts +13 -0
  506. package/dist/voice/voice-act.d.ts.map +1 -0
  507. package/dist/voice/voice-act.js +301 -0
  508. package/dist/voice/voice-act.js.map +1 -0
  509. package/dist/voice/voice-blob.d.ts +17 -0
  510. package/dist/voice/voice-blob.d.ts.map +1 -0
  511. package/dist/voice/voice-blob.js +67 -0
  512. package/dist/voice/voice-blob.js.map +1 -0
  513. package/dist/voice/voice-consent.d.ts +17 -0
  514. package/dist/voice/voice-consent.d.ts.map +1 -0
  515. package/dist/voice/voice-consent.js +45 -0
  516. package/dist/voice/voice-consent.js.map +1 -0
  517. package/dist/voice/voice-drawer.d.ts +10 -0
  518. package/dist/voice/voice-drawer.d.ts.map +1 -0
  519. package/dist/voice/voice-drawer.js +22 -0
  520. package/dist/voice/voice-drawer.js.map +1 -0
  521. package/dist/wire-types.d.ts +238 -0
  522. package/dist/wire-types.d.ts.map +1 -0
  523. package/dist/wire-types.js +2 -0
  524. package/dist/wire-types.js.map +1 -0
  525. package/package.json +106 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-css.js","sourceRoot":"","sources":["../../src/chrome/chrome-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;+DAI+D;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAk/D1C,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type ReactNode } from "react";
2
+ /** Inject the chrome stylesheet once. Exported for surfaces that portal OUT of
3
+ a ChromeRoot's DOM subtree (MorphToast, VendoToasts) and hand-roll their own
4
+ `.vendo-root` theme boundary on document.body. */
5
+ export declare function ensureChromeStyles(): void;
6
+ export declare function useChromeRootPresence(): boolean;
7
+ /** 08-ui §4, §6 — one shared theme/style/notice boundary per chrome surface. */
8
+ export declare function ChromeRoot({ children, className, automaticPolicyNotice, }: {
9
+ children: ReactNode;
10
+ className?: string;
11
+ automaticPolicyNotice?: boolean;
12
+ }): import("react").JSX.Element;
13
+ //# sourceMappingURL=chrome-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-root.d.ts","sourceRoot":"","sources":["../../src/chrome/chrome-root.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQjG;;qDAEqD;AACrD,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC;AAID,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAiCD,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,SAAS,EACT,qBAA4B,GAC7B,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,+BAIA"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { createContext, useContext, useEffect } from "react";
3
+ import { useVendoTheme } from "../context.js";
4
+ import { useVendoStatus } from "../hooks/use-vendo-status.js";
5
+ import { themeCssVariables } from "../theme.js";
6
+ import { PolicyNoticeBody } from "./policy-notice-body.js";
7
+ import { CHROME_CSS } from "./chrome-css.js";
8
+ /** Inject the chrome stylesheet once. Exported for surfaces that portal OUT of
9
+ a ChromeRoot's DOM subtree (MorphToast, VendoToasts) and hand-roll their own
10
+ `.vendo-root` theme boundary on document.body. */
11
+ export function ensureChromeStyles() {
12
+ if (typeof document === "undefined" || document.querySelector("style[data-vendo-chrome]"))
13
+ return;
14
+ const style = document.createElement("style");
15
+ style.dataset.vendoChrome = "";
16
+ style.textContent = CHROME_CSS;
17
+ document.head.append(style);
18
+ }
19
+ const ChromeRootContext = createContext(false);
20
+ export function useChromeRootPresence() {
21
+ return useContext(ChromeRootContext);
22
+ }
23
+ function AutomaticPolicyNotice() {
24
+ const { posture, connected } = useVendoStatus();
25
+ return connected && posture === "unconfigured" ? _jsx(PolicyNoticeBody, {}) : null;
26
+ }
27
+ function ChromeBoundary({ children, className, automaticPolicyNotice, }) {
28
+ const theme = useVendoTheme();
29
+ useEffect(ensureChromeStyles, []);
30
+ return (_jsx(ChromeRootContext.Provider, { value: true, children: _jsxs("div", { className: ["vendo-root", className].filter(Boolean).join(" "), "data-vendo-motion": theme.motion, "data-vendo-density": theme.density, style: { ...themeCssVariables(theme), fontFamily: "var(--vendo-font-family)", fontSize: "var(--vendo-font-size)" }, children: [automaticPolicyNotice ? _jsx(AutomaticPolicyNotice, {}) : null, children] }) }));
31
+ }
32
+ /** 08-ui §4, §6 — one shared theme/style/notice boundary per chrome surface. */
33
+ export function ChromeRoot({ children, className, automaticPolicyNotice = true, }) {
34
+ const nested = useChromeRootPresence();
35
+ if (nested)
36
+ return _jsx(_Fragment, { children: children });
37
+ return _jsx(ChromeBoundary, { className: className, automaticPolicyNotice: automaticPolicyNotice, children: children });
38
+ }
39
+ //# sourceMappingURL=chrome-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-root.js","sourceRoot":"","sources":["../../src/chrome/chrome-root.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAsC,MAAM,OAAO,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;qDAEqD;AACrD,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,aAAa,CAAC,0BAA0B,CAAC;QAAE,OAAO;IAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;IAC/B,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAE/C,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,qBAAqB;IAC5B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IAChD,OAAO,SAAS,IAAI,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,KAAC,gBAAgB,KAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,QAAQ,EACR,SAAS,EACT,qBAAqB,GAKtB;IACC,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,SAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,kBAC/B,eACE,SAAS,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,uBAC3C,KAAK,CAAC,MAAM,wBACX,KAAK,CAAC,OAAO,EACjC,KAAK,EAAE,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,0BAA0B,EAAE,QAAQ,EAAE,wBAAwB,EAAmB,aAElI,qBAAqB,CAAC,CAAC,CAAC,KAAC,qBAAqB,KAAG,CAAC,CAAC,CAAC,IAAI,EACxD,QAAQ,IACL,GACqB,CAC9B,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,SAAS,EACT,qBAAqB,GAAG,IAAI,GAK7B;IACC,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;IACvC,IAAI,MAAM;QAAE,OAAO,4BAAG,QAAQ,GAAI,CAAC;IACnC,OAAO,KAAC,cAAc,IAAC,SAAS,EAAE,SAAS,EAAE,qBAAqB,EAAE,qBAAqB,YAAG,QAAQ,GAAkB,CAAC;AACzH,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Transient copied feedback: flips true after a successful write, settles back
2
+ after `holdMs`. The timer is owned here so unmount never leaks it. */
3
+ export declare function useCopyFeedback(holdMs?: number): [boolean, (text: string) => void];
4
+ //# sourceMappingURL=clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/chrome/clipboard.ts"],"names":[],"mappings":"AA+BA;yEACyE;AACzE,wBAAgB,eAAe,CAAC,MAAM,SAAO,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,CAahF"}
@@ -0,0 +1,49 @@
1
+ /** ENG-225 — one clipboard write for every copy affordance (turn copy, code
2
+ copy). `navigator.clipboard` needs a secure context; the execCommand path
3
+ keeps copy alive on plain-http dev hosts. Resolves to whether the text made
4
+ it out so callers only show "Copied" when it's true. */
5
+ import { useEffect, useRef, useState } from "react";
6
+ async function writeClipboard(text) {
7
+ try {
8
+ if (typeof navigator !== "undefined" && navigator.clipboard !== undefined) {
9
+ await navigator.clipboard.writeText(text);
10
+ return true;
11
+ }
12
+ }
13
+ catch {
14
+ // Permission or focus refusal — try the legacy path below.
15
+ }
16
+ try {
17
+ const area = document.createElement("textarea");
18
+ area.value = text;
19
+ area.setAttribute("readonly", "");
20
+ area.style.position = "fixed";
21
+ area.style.opacity = "0";
22
+ document.body.appendChild(area);
23
+ area.select();
24
+ const copied = document.execCommand("copy");
25
+ area.remove();
26
+ return copied;
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
32
+ /** Transient copied feedback: flips true after a successful write, settles back
33
+ after `holdMs`. The timer is owned here so unmount never leaks it. */
34
+ export function useCopyFeedback(holdMs = 1600) {
35
+ const [copied, setCopied] = useState(false);
36
+ const timer = useRef(undefined);
37
+ useEffect(() => () => clearTimeout(timer.current), []);
38
+ const copy = (text) => {
39
+ void writeClipboard(text).then(ok => {
40
+ if (!ok)
41
+ return;
42
+ setCopied(true);
43
+ clearTimeout(timer.current);
44
+ timer.current = setTimeout(() => setCopied(false), holdMs);
45
+ });
46
+ };
47
+ return [copied, copy];
48
+ }
49
+ //# sourceMappingURL=clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/chrome/clipboard.ts"],"names":[],"mappings":"AAAA;;;2DAG2D;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,KAAK,UAAU,cAAc,CAAC,IAAY;IACxC,IAAI,CAAC;QACH,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1E,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;yEACyE;AACzE,MAAM,UAAU,eAAe,CAAC,MAAM,GAAG,IAAI;IAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAA4C,SAAS,CAAC,CAAC;IAC3E,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;QAC5B,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,EAAE;gBAAE,OAAO;YAChB,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export interface ConnectCardProps {
2
+ connector: string;
3
+ toolkit: string;
4
+ message: string;
5
+ /** Fired once the broker reports the account active — the thread retries the call. */
6
+ onConnected(): void | PromiseLike<void>;
7
+ }
8
+ /** 04-actions §3 / 08-ui §4 — the inline connect card: a connector call ended
9
+ * `connect-required`, so offer the broker's OAuth redirect in place, poll the
10
+ * connection status while the user completes it, then retry the call. Follows
11
+ * the approval-card pattern (same chrome, keyed to the same tool call).
12
+ * The initiate → OAuth window → poll-to-active loop is `completeConnection`,
13
+ * shared with the connect dock (ENG-225).
14
+ *
15
+ * Lane pick 2-A — brand-forward: the proper-case toolkit name (never the raw
16
+ * slug), the toolkit's real mark in the icon well (link glyph fallback), and
17
+ * an OAuth chip. The ask reads as the product, not the plumbing. */
18
+ export declare function ConnectCard({ connector, toolkit, message, onConnected }: ConnectCardProps): import("react").JSX.Element;
19
+ //# sourceMappingURL=connect-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-card.d.ts","sourceRoot":"","sources":["../../src/chrome/connect-card.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,WAAW,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;CACzC;AAID;;;;;;;;;oEASoE;AACpE,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,gBAAgB,+BAqGzF"}
@@ -0,0 +1,57 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { useVendoContext } from "../context.js";
4
+ import { useConnectorCatalog } from "../hooks/use-connector-catalog.js";
5
+ import { toolkitLogoUrl } from "./build-beat.js";
6
+ import { ChromeRoot } from "./chrome-root.js";
7
+ import { completeConnection } from "./connect-dock.js";
8
+ import { toolkitDisplayName } from "./humanize.js";
9
+ /** 04-actions §3 / 08-ui §4 — the inline connect card: a connector call ended
10
+ * `connect-required`, so offer the broker's OAuth redirect in place, poll the
11
+ * connection status while the user completes it, then retry the call. Follows
12
+ * the approval-card pattern (same chrome, keyed to the same tool call).
13
+ * The initiate → OAuth window → poll-to-active loop is `completeConnection`,
14
+ * shared with the connect dock (ENG-225).
15
+ *
16
+ * Lane pick 2-A — brand-forward: the proper-case toolkit name (never the raw
17
+ * slug), the toolkit's real mark in the icon well (link glyph fallback), and
18
+ * an OAuth chip. The ask reads as the product, not the plumbing. */
19
+ export function ConnectCard({ connector, toolkit, message, onConnected }) {
20
+ const { client } = useVendoContext();
21
+ const { options: connectors } = useConnectorCatalog();
22
+ const [phase, setPhase] = useState("idle");
23
+ const [error, setError] = useState();
24
+ // Keyed to the toolkit so a failed mark for one toolkit never suppresses
25
+ // branding after the prop changes.
26
+ const [logoFailedFor, setLogoFailedFor] = useState();
27
+ const cancelled = useRef(false);
28
+ useEffect(() => () => {
29
+ cancelled.current = true;
30
+ }, []);
31
+ // The host's catalog label wins when it named this toolkit (same rule as
32
+ // the connect dock); otherwise the proper-cased toolkit.
33
+ const option = connectors.find(candidate => candidate.toolkit === toolkit);
34
+ const displayName = option?.label ?? toolkitDisplayName(toolkit);
35
+ const logoUrl = logoFailedFor === toolkit ? undefined : toolkitLogoUrl(toolkit);
36
+ const connect = async () => {
37
+ setPhase("connecting");
38
+ setError(undefined);
39
+ try {
40
+ await completeConnection(client, { toolkit, connector }, () => cancelled.current);
41
+ if (cancelled.current)
42
+ return;
43
+ setPhase("connected");
44
+ await onConnected();
45
+ }
46
+ catch (reason) {
47
+ if (cancelled.current)
48
+ return;
49
+ setPhase("failed");
50
+ setError(reason instanceof Error ? reason.message : String(reason));
51
+ }
52
+ };
53
+ return (_jsx(ChromeRoot, { children: _jsxs("article", { className: "fl-approval fl-item-in", "aria-label": `Connect ${displayName}`, children: [_jsxs("div", { className: "fl-approval-head", children: [_jsx("span", { className: "fl-approval-ic", "aria-hidden": "true", children: logoUrl ? (
54
+ // eslint-disable-next-line @next/next/no-img-element -- chrome surface, plain img by design
55
+ _jsx("img", { src: logoUrl, alt: "", width: 16, height: 16, style: { display: "block", objectFit: "contain" }, onError: () => setLogoFailedFor(toolkit) })) : (_jsx("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M9 17H7A5 5 0 0 1 7 7h2M15 7h2a5 5 0 1 1 0 10h-2M8 12h8" }) })) }), _jsxs("div", { className: "fl-approval-heading", children: [_jsx("div", { className: "fl-approval-eyebrow", children: "CONNECT" }), _jsx("div", { className: "fl-approval-title", children: displayName })] }), _jsx("span", { className: "fl-chip", title: connector, style: { marginLeft: "auto", padding: "2px 7px", fontSize: "10px", cursor: "default" }, children: "OAuth" })] }), _jsx("p", { className: "fl-approval-more", style: { marginTop: "8px" }, children: message }), error ? _jsx("div", { role: "alert", className: "fl-error", children: error }) : null, _jsx("div", { className: "fl-approval-actions", children: phase === "connected" ? (_jsx("span", { role: "status", className: "fl-approval-more", children: "Connected \u2014 retrying\u2026" })) : (_jsxs(_Fragment, { children: [_jsx("button", { className: "fl-btn fl-btn-primary", type: "button", "aria-label": `Connect ${displayName}`, disabled: phase === "connecting", onClick: () => void connect(), children: phase === "connecting" ? "Waiting for connection…" : `Connect ${displayName}` }), phase === "connecting" ? (_jsx("span", { role: "status", className: "fl-approval-more", children: "Finish signing in, then come back." })) : null] })) })] }) }));
56
+ }
57
+ //# sourceMappingURL=connect-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-card.js","sourceRoot":"","sources":["../../src/chrome/connect-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { useVendoContext } from "../context.js";
2
+ /** Initiate a broker connection and poll it to `active` (the ConnectCard flow,
3
+ shared). Opens the hosted OAuth redirect in its own window. */
4
+ export declare function completeConnection(client: ReturnType<typeof useVendoContext>["client"], input: {
5
+ toolkit: string;
6
+ connector?: string;
7
+ }, isCancelled: () => boolean): Promise<void>;
8
+ /** The dock button in the composer row. Renders nothing when the effective
9
+ catalog is empty — an explicit `connectors={[]}`, or an auto catalog that
10
+ resolved to nothing. The inner component owns the /connections fetch, so a
11
+ thread whose catalog is empty never polls accounts; auto mode costs one
12
+ shared /connections/catalog read (useConnectorCatalog). */
13
+ export declare const ConnectDockButton: import("react").ForwardRefExoticComponent<{
14
+ open: boolean;
15
+ onToggle(): void;
16
+ } & import("react").RefAttributes<HTMLButtonElement>>;
17
+ /** The liquid tray: rendered by VendoThread inside `.fl-dock-anchor`, above the
18
+ composer it docks onto. `anchorRef` is the dock button that opened it — an
19
+ outside-press on THAT button must not close (the button's own click toggles;
20
+ closing here first would let the toggle reopen it, Devin/Greptile review). */
21
+ export declare function ConnectTray({ onClose, anchorRef }: {
22
+ onClose(): void;
23
+ anchorRef?: React.RefObject<HTMLButtonElement | null>;
24
+ }): import("react").JSX.Element;
25
+ //# sourceMappingURL=connect-dock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-dock.d.ts","sourceRoot":"","sources":["../../src/chrome/connect-dock.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AAUtE;kEACkE;AAClE,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,QAAQ,CAAC,EACpD,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9C,WAAW,EAAE,MAAM,OAAO,GACzB,OAAO,CAAC,IAAI,CAAC,CAef;AAOD;;;;8DAI8D;AAC9D,eAAO,MAAM,iBAAiB;UAAyC,OAAO;gBAAc,IAAI;qDAM/F,CAAC;AA0CF;;;iFAGiF;AACjF,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAClD,OAAO,IAAI,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACvD,+BAkMA"}
@@ -0,0 +1,192 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /** ENG-225 — the connect dock: the in-bar connect-tools entry (.fl-dock) and
3
+ the liquid tray it opens over the composer (.fl-tray). The dock badge counts
4
+ active accounts; the tray is the designed connection selector — search, the
5
+ host's connectable toolkits, one-click OAuth through the broker (04 §3.1),
6
+ the observed-connect bloom on success.
7
+
8
+ The tray must dock flush onto the composer, so `VendoThread` owns the
9
+ open/close state and renders `<ConnectTray>` inside the `.fl-dock-anchor`
10
+ that wraps its composer; `<ConnectDockButton>` rides in the composer row. */
11
+ import { forwardRef, useEffect, useMemo, useRef, useState } from "react";
12
+ import { useVendoContext } from "../context.js";
13
+ import { useConnections } from "../hooks/use-connections.js";
14
+ import { useConnectorCatalog } from "../hooks/use-connector-catalog.js";
15
+ import { toolkitLogoUrl } from "./build-beat.js";
16
+ import { toolkitDisplayName } from "./humanize.js";
17
+ const POLL_INTERVAL_MS = 1_500;
18
+ const POLL_DEADLINE_MS = 120_000;
19
+ /** Initiate a broker connection and poll it to `active` (the ConnectCard flow,
20
+ shared). Opens the hosted OAuth redirect in its own window. */
21
+ export async function completeConnection(client, input, isCancelled) {
22
+ const initiated = await client.connections.initiate(input);
23
+ window.open(initiated.redirectUrl, "_blank", "noopener");
24
+ const deadline = Date.now() + POLL_DEADLINE_MS;
25
+ while (!isCancelled() && Date.now() < deadline) {
26
+ const account = await client.connections
27
+ .status(initiated.id, initiated.connector)
28
+ .catch(() => undefined);
29
+ if (account?.status === "active")
30
+ return;
31
+ if (account?.status === "failed" || account?.status === "expired") {
32
+ throw new Error(`The ${input.toolkit} connection ${account.status} — try again.`);
33
+ }
34
+ await new Promise(resolve => setTimeout(resolve, POLL_INTERVAL_MS));
35
+ }
36
+ if (!isCancelled())
37
+ throw new Error(`Timed out waiting for the ${input.toolkit} connection — try again.`);
38
+ }
39
+ function displayName(option) {
40
+ if (option.label !== undefined)
41
+ return option.label;
42
+ return toolkitDisplayName(option.toolkit);
43
+ }
44
+ /** The dock button in the composer row. Renders nothing when the effective
45
+ catalog is empty — an explicit `connectors={[]}`, or an auto catalog that
46
+ resolved to nothing. The inner component owns the /connections fetch, so a
47
+ thread whose catalog is empty never polls accounts; auto mode costs one
48
+ shared /connections/catalog read (useConnectorCatalog). */
49
+ export const ConnectDockButton = forwardRef(function ConnectDockButton(props, ref) {
50
+ const { options, resolved } = useConnectorCatalog();
51
+ if (!resolved || options.length === 0)
52
+ return null;
53
+ return _jsx(DockButtonInner, { ...props, buttonRef: ref });
54
+ });
55
+ function DockButtonInner({ open, onToggle, buttonRef }) {
56
+ // Devin/ENG-225 review: the badge and the tray hold separate useConnections
57
+ // instances (useResource is per-hook), so a connect made in the tray never
58
+ // reached the badge. Poll so the count converges after a connect — the same
59
+ // cross-instance freshness pattern the approvals surfaces use (ENG-219).
60
+ const { connections } = useConnections({ pollMs: 3_000 });
61
+ const active = connections.filter(account => account.status === "active").length;
62
+ return (_jsxs("span", { className: "fl-dock", children: [_jsx("span", { className: "fl-dock-ripple", children: _jsx("button", { ref: buttonRef, type: "button", className: "fl-icon-btn fl-dock-btn", "aria-label": "Connect tools", "aria-expanded": open, onClick: onToggle, children: _jsx("svg", { width: "17", height: "17", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M9 17H7A5 5 0 0 1 7 7h2M15 7h2a5 5 0 1 1 0 10h-2M8 12h8" }) }) }) }), active > 0 ? _jsx("span", { className: "fl-dock-badge", "aria-hidden": "true", children: active }) : null] }));
63
+ }
64
+ /** The liquid tray: rendered by VendoThread inside `.fl-dock-anchor`, above the
65
+ composer it docks onto. `anchorRef` is the dock button that opened it — an
66
+ outside-press on THAT button must not close (the button's own click toggles;
67
+ closing here first would let the toggle reopen it, Devin/Greptile review). */
68
+ export function ConnectTray({ onClose, anchorRef }) {
69
+ const { client } = useVendoContext();
70
+ const { options: connectors } = useConnectorCatalog();
71
+ const { connections, refresh } = useConnections();
72
+ const [query, setQuery] = useState("");
73
+ const [connecting, setConnecting] = useState();
74
+ const [justConnected, setJustConnected] = useState();
75
+ const [error, setError] = useState();
76
+ // 3-A′ — toolkits whose brand mark failed to load fall back to the monogram.
77
+ const [failedLogos, setFailedLogos] = useState(new Set());
78
+ const trayRef = useRef(null);
79
+ const searchRef = useRef(null);
80
+ const cancelledRef = useRef(false);
81
+ useEffect(() => () => {
82
+ cancelledRef.current = true;
83
+ }, []);
84
+ // --fl-tray-max: the room actually above the bar within this surface, so the
85
+ // tray never runs off the top — the picker scrolls internally instead.
86
+ useEffect(() => {
87
+ const tray = trayRef.current;
88
+ if (!tray)
89
+ return;
90
+ const surface = tray.closest(".fl-thread") ?? undefined;
91
+ if (surface) {
92
+ const room = tray.parentElement.getBoundingClientRect().top - surface.getBoundingClientRect().top - 12;
93
+ if (room > 80)
94
+ tray.style.setProperty("--fl-tray-max", `${Math.round(room)}px`);
95
+ }
96
+ searchRef.current?.focus();
97
+ }, []);
98
+ // Escape and outside-press close the tray (focus restoration is the
99
+ // caller's job — it owns the dock button).
100
+ useEffect(() => {
101
+ const onKey = (event) => {
102
+ if (event.key === "Escape")
103
+ onClose();
104
+ };
105
+ const onPress = (event) => {
106
+ const tray = trayRef.current;
107
+ if (!tray || !(event.target instanceof Node))
108
+ return;
109
+ if (tray.contains(event.target))
110
+ return;
111
+ // The dock button owns its own toggle; let it close the tray itself.
112
+ if (anchorRef?.current?.contains(event.target))
113
+ return;
114
+ onClose();
115
+ };
116
+ document.addEventListener("keydown", onKey);
117
+ document.addEventListener("mousedown", onPress);
118
+ return () => {
119
+ document.removeEventListener("keydown", onKey);
120
+ document.removeEventListener("mousedown", onPress);
121
+ };
122
+ }, [onClose, anchorRef]);
123
+ const rows = useMemo(() => {
124
+ const activeByToolkit = new Map();
125
+ for (const account of connections) {
126
+ if (account.status === "active")
127
+ activeByToolkit.set(account.toolkit, account);
128
+ }
129
+ const connected = [];
130
+ const available = [];
131
+ const listed = new Set();
132
+ for (const option of connectors) {
133
+ listed.add(option.toolkit);
134
+ const account = activeByToolkit.get(option.toolkit);
135
+ const row = {
136
+ key: option.toolkit,
137
+ name: displayName(option),
138
+ toolkit: option.toolkit,
139
+ ...(option.connector !== undefined ? { connector: option.connector } : {}),
140
+ ...(account !== undefined ? { account } : {}),
141
+ };
142
+ (account !== undefined ? connected : available).push(row);
143
+ }
144
+ // Accounts outside the host catalog still show as connected — the list is
145
+ // the user's truth, not the catalog's.
146
+ for (const [toolkit, account] of activeByToolkit) {
147
+ if (listed.has(toolkit))
148
+ continue;
149
+ connected.push({
150
+ key: toolkit,
151
+ name: toolkitDisplayName(toolkit),
152
+ toolkit,
153
+ connector: account.connector,
154
+ account,
155
+ });
156
+ }
157
+ const match = (row) => row.name.toLowerCase().includes(query.toLowerCase()) || row.toolkit.toLowerCase().includes(query.toLowerCase());
158
+ return { connected: connected.filter(match), available: available.filter(match) };
159
+ }, [connections, connectors, query]);
160
+ const connect = async (row) => {
161
+ setConnecting(row.toolkit);
162
+ setError(undefined);
163
+ try {
164
+ await completeConnection(client, { toolkit: row.toolkit, ...(row.connector !== undefined ? { connector: row.connector } : {}) }, () => cancelledRef.current);
165
+ if (cancelledRef.current)
166
+ return;
167
+ await refresh();
168
+ setJustConnected(row.toolkit);
169
+ }
170
+ catch (reason) {
171
+ if (!cancelledRef.current)
172
+ setError(reason instanceof Error ? reason.message : String(reason));
173
+ }
174
+ finally {
175
+ if (!cancelledRef.current)
176
+ setConnecting(undefined);
177
+ }
178
+ };
179
+ const item = (row) => {
180
+ const isConnected = row.account !== undefined;
181
+ const isConnecting = connecting === row.toolkit;
182
+ // Lane pick 3-A′ — real brand marks in the tray rows; the two-letter
183
+ // monogram stays as the fallback for toolkits without a mapped domain or
184
+ // whose mark failed to load.
185
+ const logoUrl = failedLogos.has(row.toolkit) ? undefined : toolkitLogoUrl(row.toolkit);
186
+ return (_jsxs("li", { className: `fl-picker-item${isConnected ? " is-connected" : ""}${justConnected === row.toolkit ? " is-just-connected" : ""}`, children: [_jsx("span", { className: "fl-picker-ic", "aria-hidden": "true", children: logoUrl ? (
187
+ // eslint-disable-next-line @next/next/no-img-element -- chrome surface, plain img by design
188
+ _jsx("img", { src: logoUrl, alt: "", width: 15, height: 15, onError: () => setFailedLogos(previous => new Set(previous).add(row.toolkit)) })) : (row.name.slice(0, 2).toUpperCase()) }), _jsx("span", { className: "fl-picker-nm", children: row.name }), _jsx("span", { className: "fl-picker-status", children: isConnected ? (_jsx("span", { className: "fl-picker-on", role: "img", "aria-label": `${row.name} connected` })) : isConnecting ? (_jsx("span", { className: "fl-picker-connecting", role: "status", "aria-label": `Connecting ${row.name}`, children: _jsxs("span", { className: "fl-typing", "aria-hidden": "true", children: [_jsx("span", {}), _jsx("span", {}), _jsx("span", {})] }) })) : (_jsx("button", { type: "button", className: "fl-picker-add", "aria-label": `Connect ${row.name}`, disabled: connecting !== undefined, onClick: () => void connect(row), children: "+" })) })] }, row.key));
189
+ };
190
+ return (_jsx("div", { ref: trayRef, className: "fl-tray", role: "dialog", "aria-label": "Connect tools", children: _jsxs("div", { className: "fl-picker", children: [_jsxs("div", { className: "fl-picker-toprow", children: [_jsx("input", { ref: searchRef, className: "fl-picker-search", type: "search", "aria-label": "Search tools", placeholder: "Search tools", value: query, onChange: event => setQuery(event.currentTarget.value) }), _jsx("button", { type: "button", className: "fl-picker-close", "aria-label": "Close connect tray", onClick: onClose, children: _jsx("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M18 6 6 18M6 6l12 12" }) }) })] }), error !== undefined ? _jsx("div", { role: "alert", className: "fl-att-error", children: error }) : null, rows.connected.length > 0 ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "fl-picker-group", children: "Connected" }), _jsx("ul", { className: "fl-picker-grid", style: { listStyle: "none", margin: 0 }, children: rows.connected.map(item) })] })) : null, rows.available.length > 0 ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "fl-picker-group", children: "Available" }), _jsx("ul", { className: "fl-picker-grid", style: { listStyle: "none", margin: 0 }, children: rows.available.map(item) })] })) : null, rows.connected.length === 0 && rows.available.length === 0 ? (_jsx("div", { className: "fl-auto-sub", role: "status", children: "No matching tools" })) : null] }) }));
191
+ }
192
+ //# sourceMappingURL=connect-dock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-dock.js","sourceRoot":"","sources":["../../src/chrome/connect-dock.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface ConnectedAccountsPanelProps {
2
+ /** The undo window (ms) between confirming a disconnect and the wire call
3
+ * actually firing. Undo inside the window cancels; navigating away flushes
4
+ * the pending disconnect immediately. Default 10s. */
5
+ undoMs?: number;
6
+ }
7
+ /** 04-actions §3 / 08-ui §4 — the persistent connected-accounts settings
8
+ * surface: every external account the signed-in user has connected through
9
+ * the broker, with real service identity (logo, display name, status chip)
10
+ * and a consequence-aware, reversible disconnect. Connecting normally happens
11
+ * in-flow (the connect card); the empty state additionally offers connecting
12
+ * ahead of time via the same broker redirect. */
13
+ export declare function ConnectedAccountsPanel({ undoMs }?: ConnectedAccountsPanelProps): import("react").JSX.Element;
14
+ //# sourceMappingURL=connected-accounts-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connected-accounts-panel.d.ts","sourceRoot":"","sources":["../../src/chrome/connected-accounts-panel.tsx"],"names":[],"mappings":"AAoDA,MAAM,WAAW,2BAA2B;IAC1C;;2DAEuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;iDAKiD;AACjD,wBAAgB,sBAAsB,CAAC,EAAE,MAAe,EAAE,GAAE,2BAAgC,+BAkN3F"}