@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,24 @@
1
+ import type { UIMessage } from "ai";
2
+ /** A picked File → an ai-SDK FileUIPart (data URL) so it can ride the turn.
3
+ Lane pick 2F — the optional `onProgress` (0..1) feeds the chip's read ring:
4
+ attachments are now read eagerly at attach time (progress visible, failures
5
+ surfaced per-chip with retry) instead of silently at send time. */
6
+ export declare function fileToPart(file: File, onProgress?: (fraction: number) => void): Promise<{
7
+ type: "file";
8
+ mediaType: string;
9
+ filename: string;
10
+ url: string;
11
+ }>;
12
+ /** The `.fl-att-ext` badge text — the filename's extension, bounded so a long
13
+ or missing one still reads as a badge. */
14
+ export declare function fileExt(name: string | undefined): string;
15
+ export declare function formatBytes(size: number): string;
16
+ export type FilePart = Extract<UIMessage["parts"][number], {
17
+ type: "file";
18
+ }>;
19
+ /** ENG-225 — a sent attachment in the transcript: images render as the designed
20
+ `.fl-msg-img` thumbnail, anything else as a `.fl-msg-file` download pill. */
21
+ export declare function SentAttachment({ part }: {
22
+ part: FilePart;
23
+ }): import("react").JSX.Element;
24
+ //# sourceMappingURL=attachments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../../src/chrome/thread/attachments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC;;;sEAGsE;AACtE,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACtC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB7E;AAED;6CAC6C;AAC7C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGxD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE7E;gFACgF;AAChF,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,+BAe1D"}
@@ -0,0 +1,50 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /** A picked File → an ai-SDK FileUIPart (data URL) so it can ride the turn.
3
+ Lane pick 2F — the optional `onProgress` (0..1) feeds the chip's read ring:
4
+ attachments are now read eagerly at attach time (progress visible, failures
5
+ surfaced per-chip with retry) instead of silently at send time. */
6
+ export function fileToPart(file, onProgress) {
7
+ return new Promise((resolve, reject) => {
8
+ const reader = new FileReader();
9
+ reader.onerror = () => reject(reader.error ?? new Error("file read failed"));
10
+ if (onProgress) {
11
+ reader.onprogress = event => {
12
+ if (event.lengthComputable && event.total > 0)
13
+ onProgress(event.loaded / event.total);
14
+ };
15
+ }
16
+ reader.onload = () => {
17
+ onProgress?.(1);
18
+ resolve({
19
+ type: "file",
20
+ mediaType: file.type || "application/octet-stream",
21
+ filename: file.name,
22
+ url: String(reader.result),
23
+ });
24
+ };
25
+ reader.readAsDataURL(file);
26
+ });
27
+ }
28
+ /** The `.fl-att-ext` badge text — the filename's extension, bounded so a long
29
+ or missing one still reads as a badge. */
30
+ export function fileExt(name) {
31
+ const ext = name?.match(/\.([a-z0-9]+)$/i)?.[1];
32
+ return (ext ?? "file").slice(0, 4).toUpperCase();
33
+ }
34
+ export function formatBytes(size) {
35
+ if (size < 1024)
36
+ return `${size} B`;
37
+ if (size < 1024 * 1024)
38
+ return `${(size / 1024).toFixed(0)} KB`;
39
+ return `${(size / (1024 * 1024)).toFixed(1)} MB`;
40
+ }
41
+ /** ENG-225 — a sent attachment in the transcript: images render as the designed
42
+ `.fl-msg-img` thumbnail, anything else as a `.fl-msg-file` download pill. */
43
+ export function SentAttachment({ part }) {
44
+ const name = part.filename ?? "attachment";
45
+ if (part.mediaType?.startsWith("image/") === true) {
46
+ return (_jsx("span", { className: "fl-msg-img", children: _jsx("img", { src: part.url, alt: name }) }));
47
+ }
48
+ return (_jsxs("a", { className: "fl-msg-file", href: part.url, download: name, children: [_jsx("span", { className: "fl-att-ext", "aria-hidden": "true", children: fileExt(part.filename) }), _jsx("span", { className: "fl-att-name", children: name })] }));
49
+ }
50
+ //# sourceMappingURL=attachments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../src/chrome/thread/attachments.tsx"],"names":[],"mappings":";AAEA;;;sEAGsE;AACtE,MAAM,UAAU,UAAU,CACxB,IAAU,EACV,UAAuC;IAEvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC7E,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,EAAE;gBAC1B,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC;oBAAE,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACxF,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YACnB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO,CAAC;gBACN,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,0BAA0B;gBAClD,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;6CAC6C;AAC7C,MAAM,UAAU,OAAO,CAAC,IAAwB;IAC9C,MAAM,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,IAAI,CAAC;IACpC,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACnD,CAAC;AAID;gFACgF;AAChF,MAAM,UAAU,cAAc,CAAC,EAAE,IAAI,EAAsB;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC;IAC3C,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,CACL,eAAM,SAAS,EAAC,YAAY,YAC1B,cAAK,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,GAAI,GAC5B,CACR,CAAC;IACJ,CAAC;IACD,OAAO,CACL,aAAG,SAAS,EAAC,aAAa,EAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,aACvD,eAAM,SAAS,EAAC,YAAY,iBAAa,MAAM,YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAQ,EAC/E,eAAM,SAAS,EAAC,aAAa,YAAE,IAAI,GAAQ,IACzC,CACL,CAAC;AACJ,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { fileToPart } from "./attachments.js";
2
+ /** The message shape the composer commits — mirrors useVendoThread.sendMessage. */
3
+ type OutgoingMessage = {
4
+ text: string;
5
+ files?: Awaited<ReturnType<typeof fileToPart>>[];
6
+ };
7
+ /** Lane pick 2F — one attachment's eager-read lifecycle (drives the chip ring). */
8
+ type AttachmentRead = {
9
+ status: "reading" | "ready" | "error";
10
+ /** 0..1 read progress; meaningful while `reading`. */
11
+ progress: number;
12
+ part?: Awaited<ReturnType<typeof fileToPart>>;
13
+ };
14
+ /** ENG-225 — drag-drop attach: only reacts to drags that actually carry files
15
+ (text selections dragged across the composer must not flash the drop zone).
16
+ Exported for the thread-level drop surface (lane pick 2E). */
17
+ export declare const dragHasFiles: (event: React.DragEvent) => boolean;
18
+ /** All composer state and send/queue mechanics, lifted to the thread level so
19
+ the draft (and queued slot) survive the landing ↔ transcript flip. The
20
+ Composer component below is the matching presentation. */
21
+ export declare function useComposer({ busy, sendMessage }: {
22
+ busy: boolean;
23
+ sendMessage: (message: OutgoingMessage) => unknown;
24
+ }): {
25
+ draft: string;
26
+ setDraft: import("react").Dispatch<import("react").SetStateAction<string>>;
27
+ files: File[];
28
+ setFiles: import("react").Dispatch<import("react").SetStateAction<File[]>>;
29
+ dragDepth: number;
30
+ setDragDepth: import("react").Dispatch<import("react").SetStateAction<number>>;
31
+ attachmentPreviews: Map<File, string>;
32
+ attachmentReads: Map<File, AttachmentRead>;
33
+ retryRead: (file: File) => void;
34
+ dockOpen: boolean;
35
+ setDockOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
36
+ dockButtonRef: import("react").RefObject<HTMLButtonElement | null>;
37
+ queued: {
38
+ text: string;
39
+ files: File[];
40
+ } | null;
41
+ setQueued: import("react").Dispatch<import("react").SetStateAction<{
42
+ text: string;
43
+ files: File[];
44
+ } | null>>;
45
+ attachError: string | undefined;
46
+ fileRef: import("react").RefObject<HTMLInputElement | null>;
47
+ textareaRef: import("react").RefObject<HTMLTextAreaElement | null>;
48
+ send: (override?: string) => void;
49
+ };
50
+ export type ComposerApi = ReturnType<typeof useComposer>;
51
+ export interface ComposerProps {
52
+ composer: ComposerApi;
53
+ busy: boolean;
54
+ /** The live transport status + error for the sr-only announcement span. */
55
+ status: string;
56
+ errorMessage?: string;
57
+ onStop: () => void;
58
+ onVoice?: (() => void) | undefined;
59
+ }
60
+ /** The message composer (08-ui §4): attachments, drag-drop, queueing, dock. */
61
+ export declare function Composer({ composer, busy, status, errorMessage, onStop, onVoice }: ComposerProps): import("react").JSX.Element;
62
+ export {};
63
+ //# sourceMappingURL=composer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../../src/chrome/thread/composer.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAW,UAAU,EAAe,MAAM,kBAAkB,CAAC;AAEpE,mFAAmF;AACnF,KAAK,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,EAAE,CAAA;CAAE,CAAC;AAE1F,mFAAmF;AACnF,KAAK,cAAc,GAAG;IACpB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACtC,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;CAC/C,CAAC;AAEF;;iEAEiE;AACjE,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,CAAC,SAAS,YACY,CAAC;AAEhE;;6DAE6D;AAC7D,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;IACjD,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC;CACpD;;;;;;;;;sBA2C0B,IAAI;;;;;cAmDgB,MAAM;eAAS,IAAI,EAAE;;;cAArB,MAAM;eAAS,IAAI,EAAE;;;;;sBA2BzC,MAAM;EA+EhC;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACpC;AAED,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,aAAa,+BA+JhG"}
@@ -0,0 +1,259 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useContext, useEffect, useRef, useState } from "react";
3
+ import { ConnectDockButton, ConnectTray } from "../connect-dock.js";
4
+ import { PrefillScopeContext, registerPrefillConsumer } from "../overlay-registry.js";
5
+ import { fileExt, fileToPart, formatBytes } from "./attachments.js";
6
+ /** ENG-225 — drag-drop attach: only reacts to drags that actually carry files
7
+ (text selections dragged across the composer must not flash the drop zone).
8
+ Exported for the thread-level drop surface (lane pick 2E). */
9
+ export const dragHasFiles = (event) => Array.from(event.dataTransfer?.types ?? []).includes("Files");
10
+ /** All composer state and send/queue mechanics, lifted to the thread level so
11
+ the draft (and queued slot) survive the landing ↔ transcript flip. The
12
+ Composer component below is the matching presentation. */
13
+ export function useComposer({ busy, sendMessage }) {
14
+ const [draft, setDraft] = useState("");
15
+ const fileRef = useRef(null);
16
+ const textareaRef = useRef(null);
17
+ const [files, setFiles] = useState([]);
18
+ // ENG-225 — drag-drop attach. A depth counter, not a boolean: dragging over
19
+ // the composer's children fires enter/leave pairs for every element crossed.
20
+ const [dragDepth, setDragDepth] = useState(0);
21
+ // ENG-225 — object-URL thumbnails for image attachments in the chip strip.
22
+ // Keyed by File identity; a URL is minted once per file and revoked only when
23
+ // that file leaves the set — never recreated for files still shown (which
24
+ // would briefly point a mounted <img> at a revoked URL, Devin review). The
25
+ // ref mirrors the state so the unmount cleanup revokes the final set.
26
+ const [attachmentPreviews, setAttachmentPreviews] = useState(new Map());
27
+ const previewsRef = useRef(attachmentPreviews);
28
+ previewsRef.current = attachmentPreviews;
29
+ useEffect(() => {
30
+ if (typeof URL.createObjectURL !== "function")
31
+ return;
32
+ setAttachmentPreviews(prev => {
33
+ const next = new Map();
34
+ for (const file of files) {
35
+ if (!file.type.startsWith("image/"))
36
+ continue;
37
+ next.set(file, prev.get(file) ?? URL.createObjectURL(file));
38
+ }
39
+ // Revoke only URLs for files that are no longer attached.
40
+ for (const [file, url] of prev) {
41
+ if (!next.has(file))
42
+ URL.revokeObjectURL(url);
43
+ }
44
+ return next;
45
+ });
46
+ }, [files]);
47
+ // Final cleanup on unmount: revoke whatever is still live.
48
+ useEffect(() => () => {
49
+ for (const url of previewsRef.current.values())
50
+ URL.revokeObjectURL(url);
51
+ }, []);
52
+ // Lane pick 2F — attachments read EAGERLY at attach time. Each file's read
53
+ // progress (FileReader onprogress) drives the chip ring; a failed read marks
54
+ // that chip (inline retry) instead of surfacing only as a text line at send.
55
+ // The finished part is cached so send doesn't re-read. Keyed by File identity,
56
+ // mirroring the previews map; entries leave with their file.
57
+ const [attachmentReads, setAttachmentReads] = useState(new Map());
58
+ const readsRef = useRef(attachmentReads);
59
+ readsRef.current = attachmentReads;
60
+ const startRead = (file) => {
61
+ setAttachmentReads(prev => {
62
+ const next = new Map(prev);
63
+ next.set(file, { status: "reading", progress: 0 });
64
+ return next;
65
+ });
66
+ fileToPart(file, fraction => {
67
+ setAttachmentReads(prev => {
68
+ const current = prev.get(file);
69
+ if (!current || current.status !== "reading")
70
+ return prev;
71
+ const next = new Map(prev);
72
+ next.set(file, { ...current, progress: fraction });
73
+ return next;
74
+ });
75
+ }).then(part => setAttachmentReads(prev => {
76
+ if (!prev.has(file))
77
+ return prev;
78
+ const next = new Map(prev);
79
+ next.set(file, { status: "ready", progress: 1, part });
80
+ return next;
81
+ }), () => setAttachmentReads(prev => {
82
+ if (!prev.has(file))
83
+ return prev;
84
+ const next = new Map(prev);
85
+ next.set(file, { status: "error", progress: 0 });
86
+ return next;
87
+ }));
88
+ };
89
+ useEffect(() => {
90
+ setAttachmentReads(prev => {
91
+ const next = new Map();
92
+ for (const file of files) {
93
+ const existing = prev.get(file);
94
+ if (existing)
95
+ next.set(file, existing);
96
+ }
97
+ return next.size === prev.size && files.every(f => prev.has(f)) ? prev : next;
98
+ });
99
+ for (const file of files) {
100
+ if (!readsRef.current.has(file))
101
+ startRead(file);
102
+ }
103
+ // startRead closes over stable setters only; files is the real trigger.
104
+ // eslint-disable-next-line react-hooks/exhaustive-deps
105
+ }, [files]);
106
+ // ENG-225 — the connect dock's liquid tray, anchored over the composer.
107
+ const [dockOpen, setDockOpen] = useState(false);
108
+ const dockButtonRef = useRef(null);
109
+ // ENG-215 — a message the user sent DURING a turn: it parks here (visible as a
110
+ // pill) and auto-sends the instant the turn finishes. A single slot — a second
111
+ // send while one is parked replaces it — because there is only ever one "next"
112
+ // turn. Stop stays the explicit interrupt; queueing never cancels the stream.
113
+ const [queued, setQueued] = useState(null);
114
+ const [attachError, setAttachError] = useState();
115
+ // ENG-215 — commit a turn to the transport (attachment parts come from the
116
+ // eager-read cache when ready, else a fresh read). Used both by an immediate
117
+ // send and by the deferred flush of a queued message.
118
+ const dispatch = (text, pending) => {
119
+ void (async () => {
120
+ let parts;
121
+ try {
122
+ parts = await Promise.all(pending.map(file => {
123
+ const cached = readsRef.current.get(file);
124
+ return cached?.status === "ready" && cached.part ? Promise.resolve(cached.part) : fileToPart(file);
125
+ }));
126
+ }
127
+ catch (reason) {
128
+ // A file read failed — surface it and restore the message so it never
129
+ // vanishes silently.
130
+ setAttachError(reason instanceof Error ? reason.message : "Couldn't read an attachment.");
131
+ setDraft(current => current || text);
132
+ setFiles(current => (current.length > 0 ? current : pending));
133
+ return;
134
+ }
135
+ setAttachError(undefined);
136
+ void sendMessage(parts.length > 0 ? { text, files: parts } : { text });
137
+ })();
138
+ };
139
+ const send = (override) => {
140
+ const text = (override ?? draft).trim();
141
+ const pending = files;
142
+ if (!text && pending.length === 0)
143
+ return;
144
+ // The message leaves the input immediately (whether it sends now or parks).
145
+ setDraft("");
146
+ setFiles([]);
147
+ if (fileRef.current)
148
+ fileRef.current.value = "";
149
+ if (busy) {
150
+ setQueued({ text, files: pending });
151
+ return;
152
+ }
153
+ dispatch(text, pending);
154
+ };
155
+ // The enclosing overlay's prefill scope (null for embedded threads/pages):
156
+ // registry-delivered prompts are directed at one overlay's composer.
157
+ const prefillScope = useContext(PrefillScopeContext);
158
+ // The listeners below register once but must send with CURRENT composer
159
+ // state: a first-render `send` closure sees busy=false forever, so a remix
160
+ // fired mid-stream would dispatch concurrently instead of parking in the
161
+ // queued slot (the single-in-flight contract).
162
+ const sendRef = useRef(send);
163
+ sendRef.current = send;
164
+ // Remix bridge: a host affordance (slot remix, a trigger button, the legacy
165
+ // `vendo:prefill` event) opens this surface and hands it the request to
166
+ // type + send, so the whole build happens here — the one conversational
167
+ // place (08-ui §4). The registry consumer also drains a prompt parked while
168
+ // this composer was still mounting (overlay first open / fresh conversation).
169
+ useEffect(() => {
170
+ const prefill = (prompt, sendNow) => {
171
+ setDraft(prompt);
172
+ if (sendNow)
173
+ queueMicrotask(() => sendRef.current(prompt));
174
+ };
175
+ const onPrefill = (event) => {
176
+ const detail = event.detail;
177
+ if (typeof detail?.prompt !== "string")
178
+ return;
179
+ prefill(detail.prompt, detail.send === true);
180
+ };
181
+ window.addEventListener("vendo:prefill", onPrefill);
182
+ const unregister = registerPrefillConsumer(parked => prefill(parked.prompt, parked.send), prefillScope);
183
+ return () => {
184
+ window.removeEventListener("vendo:prefill", onPrefill);
185
+ unregister();
186
+ };
187
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- sendRef tracks the latest send; scope is mount-stable
188
+ }, []);
189
+ // Flush the queued message the moment the active turn finishes. A ref-tracked
190
+ // busy edge keeps this from firing on unrelated re-renders.
191
+ const wasBusyRef = useRef(busy);
192
+ useEffect(() => {
193
+ if (wasBusyRef.current && !busy && queued) {
194
+ const pending = queued;
195
+ setQueued(null);
196
+ dispatch(pending.text, pending.files);
197
+ }
198
+ wasBusyRef.current = busy;
199
+ // dispatch is recreated each render but closes only over stable setters and
200
+ // thread.sendMessage; the busy edge + queued slot are the real triggers.
201
+ // eslint-disable-next-line react-hooks/exhaustive-deps
202
+ }, [busy, queued]);
203
+ // ENG-215 — autogrow: the textarea tracks its content height (CSS caps it at
204
+ // max-height and scrolls past that). Runs on every draft change, including the
205
+ // programmatic reset on send and the refill on edit.
206
+ useEffect(() => {
207
+ const node = textareaRef.current;
208
+ if (!node)
209
+ return;
210
+ node.style.height = "auto";
211
+ node.style.height = `${node.scrollHeight}px`;
212
+ }, [draft]);
213
+ return {
214
+ draft, setDraft, files, setFiles, dragDepth, setDragDepth,
215
+ attachmentPreviews, attachmentReads, retryRead: startRead,
216
+ dockOpen, setDockOpen, dockButtonRef,
217
+ queued, setQueued, attachError, fileRef, textareaRef, send,
218
+ };
219
+ }
220
+ /** The message composer (08-ui §4): attachments, drag-drop, queueing, dock. */
221
+ export function Composer({ composer, busy, status, errorMessage, onStop, onVoice }) {
222
+ const { draft, setDraft, files, setFiles, attachmentPreviews, attachmentReads, retryRead, dockOpen, setDockOpen, dockButtonRef, queued, setQueued, attachError, fileRef, textareaRef, send, } = composer;
223
+ return (_jsxs("div", { className: "fl-dock-anchor", children: [dockOpen ? (_jsx(ConnectTray, { anchorRef: dockButtonRef, onClose: () => {
224
+ setDockOpen(false);
225
+ queueMicrotask(() => dockButtonRef.current?.focus());
226
+ } })) : null, _jsxs("form", { className: "fl-composer", "aria-label": "Message composer", onSubmit: event => { event.preventDefault(); send(); }, children: [attachError ? _jsx("div", { className: "fl-att-error", role: "alert", children: attachError }) : null, queued ? (_jsxs("div", { className: "fl-queued", role: "status", "aria-live": "polite", children: [_jsx("span", { className: "fl-queued-tag", children: "Queued" }), _jsx("span", { className: "fl-queued-text", children: queued.text || `${queued.files.length} attachment(s)` }), _jsx("span", { className: "fl-queued-hint", children: "sends when the reply finishes" }), _jsx("button", { type: "button", className: "fl-queued-now", onClick: onStop, children: "Send now" }), _jsx("button", { type: "button", className: "fl-att-rm fl-queued-rm", "aria-label": "Cancel queued message", onClick: () => setQueued(null), children: "\u00D7" })] })) : null, files.length > 0 ? (_jsx("div", { className: "fl-att-chips", children: files.map((file, i) => {
227
+ const preview = attachmentPreviews.get(file);
228
+ const read = attachmentReads.get(file);
229
+ // An errored image renders as the file-style error chip, so its
230
+ // remove button needs the file-chip placement too.
231
+ const asFileChip = preview === undefined || read?.status === "error";
232
+ const remove = (_jsx("button", { type: "button", className: `fl-att-rm${asFileChip ? " fl-att-rm-file" : ""}`, "aria-label": `Remove ${file.name}`, onClick: () => setFiles(current => current.filter((_, j) => j !== i)), children: "\u00D7" }));
233
+ // ENG-225 — images preview as the designed thumbnail chip; other
234
+ // files carry an extension badge plus name and size. An image whose
235
+ // READ failed falls through to the error file-chip below (retry in
236
+ // place) instead of silently posing as attachable — the object-URL
237
+ // thumbnail says nothing about whether FileReader could read it
238
+ // (AI-review catch).
239
+ if (preview !== undefined && read?.status !== "error") {
240
+ return (_jsxs("span", { className: "fl-att-img", children: [_jsx("img", { src: preview, alt: file.name }), remove] }, `${file.name}-${i}`));
241
+ }
242
+ // Lane pick 2F — the chip narrates its read: progress ring while
243
+ // reading, error + inline retry on failure, quiet size when ready.
244
+ const failed = read?.status === "error";
245
+ const reading = read?.status === "reading";
246
+ const ring = 2 * Math.PI * 7;
247
+ return (_jsxs("span", { className: `fl-att-file${failed ? " fl-att-file--error" : ""}`, children: [reading ? (_jsx("span", { className: "fl-att-ring", "aria-hidden": "true", children: _jsxs("svg", { width: "18", height: "18", viewBox: "0 0 18 18", children: [_jsx("circle", { className: "fl-att-ring-bg", cx: "9", cy: "9", r: "7" }), _jsx("circle", { className: "fl-att-ring-fg", cx: "9", cy: "9", r: "7", strokeDasharray: ring, strokeDashoffset: ring * (1 - (read?.progress ?? 0)) })] }) })) : (_jsx("span", { className: "fl-att-ext", "aria-hidden": "true", children: fileExt(file.name) })), _jsxs("span", { className: "fl-att-meta", children: [_jsx("span", { className: "fl-att-name", children: file.name }), failed ? (_jsxs("small", { className: "fl-att-fail", role: "alert", children: ["couldn\u2019t read \u2014 ", _jsx("button", { type: "button", className: "fl-att-retry", onClick: () => retryRead(file), children: "retry" })] })) : (_jsx("small", { children: reading ? "reading…" : formatBytes(file.size) }))] }), remove] }, `${file.name}-${i}`));
248
+ }) })) : null, _jsxs("div", { className: "fl-composer-row", children: [_jsx("input", { ref: fileRef, type: "file", multiple: true, hidden: true, "aria-hidden": "true", onChange: event => { if (event.target.files)
249
+ setFiles(current => [...current, ...Array.from(event.target.files)]); } }), _jsx(ConnectDockButton, { ref: dockButtonRef, open: dockOpen, onToggle: () => setDockOpen(value => !value) }), _jsx("button", { type: "button", className: "fl-icon-btn fl-attach", "aria-label": "Attach files", onClick: () => fileRef.current?.click(), children: _jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48" }) }) }), _jsxs("label", { style: { display: "contents" }, children: [_jsx("span", { className: "fl-sr-only", children: "Message" }), _jsx("textarea", { ref: textareaRef, "aria-label": "Message", placeholder: "Ask anything", rows: 1, value: draft,
250
+ // ENG-215 — never disabled: typing (and queueing) stays live through
251
+ // the whole turn, and the composer never dumps focus to <body>.
252
+ onChange: event => setDraft(event.currentTarget.value), onKeyDown: (event) => {
253
+ if (event.key === "Enter" && !event.shiftKey) {
254
+ event.preventDefault();
255
+ send();
256
+ }
257
+ } })] }), onVoice ? (_jsx("button", { type: "button", className: "fl-icon-btn", "aria-label": "Start voice", onClick: onVoice, children: _jsxs("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("rect", { x: "9", y: "2", width: "6", height: "12", rx: "3" }), _jsx("path", { d: "M5 10a7 7 0 0 0 14 0M12 19v3" })] }) })) : null, busy ? (_jsxs("button", { className: "fl-icon-btn fl-stop", type: "button", "aria-label": "Stop", onClick: onStop, children: [_jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2.5" }) }), _jsx("span", { className: "fl-sr-only", children: "Stop" })] })) : null, _jsxs("button", { className: "fl-icon-btn fl-send", type: "submit", "aria-label": "Send", disabled: !draft.trim() && files.length === 0, children: [_jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("path", { d: "M12 19V5" }), _jsx("path", { d: "m5 12 7-7 7 7" })] }), _jsx("span", { className: "fl-sr-only", children: "Send" })] })] }), _jsxs("div", { className: "fl-hintrow", "aria-hidden": "true", children: [_jsxs("span", { children: [_jsx("kbd", { className: "fl-kbd", children: "\u21E7\u21B5" }), " new line"] }), _jsxs("span", { children: [_jsx("kbd", { className: "fl-kbd", children: "\u2318K" }), " commands"] }), _jsx("span", { children: "drop files anywhere" })] }), _jsx("span", { role: "status", "aria-live": "polite", className: "fl-sr-only", children: errorMessage !== undefined ? `error: ${errorMessage}` : status })] })] }));
258
+ }
259
+ //# sourceMappingURL=composer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer.js","sourceRoot":"","sources":["../../../src/chrome/thread/composer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { type VendoDiscoverability, type VendoGreeting } from "../discoverability.js";
2
+ /** Lane pick 4B — a rich landing suggestion: two-line starter card. */
3
+ export interface VendoSuggestionCard {
4
+ /** Card headline (verb-first reads best: "Build a view"). */
5
+ title: string;
6
+ /** One concrete outcome line under the title. */
7
+ description: string;
8
+ /** Sent as the message on tap; defaults to the title. */
9
+ prompt?: string;
10
+ /** Optional host-supplied leading icon node. */
11
+ icon?: import("react").ReactNode;
12
+ }
13
+ export interface VendoThreadProps {
14
+ threadId?: string;
15
+ /** Landing headline shown above the composer while the thread is empty. */
16
+ greeting?: string;
17
+ /** Starter prompts on the empty landing; clicking sends one. Lane pick 4B —
18
+ * a plain string keeps today's pill chip; the object form renders a two-line
19
+ * starter card (title + concrete outcome, optional icon) with more scent. */
20
+ suggestions?: (string | VendoSuggestionCard)[];
21
+ /** Show a mic affordance in the composer that launches the host's voice surface. */
22
+ onVoice?: () => void;
23
+ /** ENG-222 — fires with the effective thread id once it is known, including
24
+ * the fresh `thr_` the server mints for a new conversation. Lets a host
25
+ * surface (e.g. VendoPage's sidebar) pull the new conversation into its list. */
26
+ onThreadId?: (threadId: string) => void;
27
+ /** The discoverability dial (ui-usage-dx §6), overriding the provider's:
28
+ * `"quiet"` disables the fire-once greeting-as-tutorial below. */
29
+ discoverability?: VendoDiscoverability;
30
+ /** Greeting-as-tutorial content (intro + prompt chips) overriding the
31
+ * provider's `greeting`. Distinct from `greeting` above (the returning-user
32
+ * landing headline) — this one renders once per user, ever. */
33
+ firstRunGreeting?: VendoGreeting;
34
+ /** Rendered directly above the composer in both landing and conversation
35
+ * layouts — the seam VendoOverlay uses for its command chip strip (the
36
+ * one-surface ⌘K design). Presentation-only; the thread never reads it. */
37
+ composerAccessory?: import("react").ReactNode;
38
+ }
39
+ /** 08-ui §4 — conversation chrome over the headless thread transport. */
40
+ export declare function VendoThread({ threadId, greeting, suggestions, onVoice, onThreadId, discoverability, firstRunGreeting, composerAccessory, }: VendoThreadProps): import("react").JSX.Element;
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chrome/thread/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAA2C,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAO/H,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,OAAO,EAAE,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;iFAE6E;IAC7E,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC;IAC/C,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;qFAEiF;IACjF,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;sEACkE;IAClE,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC;;mEAE+D;IAC/D,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC;;+EAE2E;IAC3E,iBAAiB,CAAC,EAAE,OAAO,OAAO,EAAE,SAAS,CAAC;CAC/C;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,QAAuC,EACvC,WAAgB,EAChB,OAAO,EACP,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,EAAE,gBAAgB,+BAkWlB"}