@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,157 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { useVendoContext } from "../context.js";
4
+ import { useConnections } from "../hooks/use-connections.js";
5
+ import { useConnectorCatalog } from "../hooks/use-connector-catalog.js";
6
+ import { toolkitLogoUrl } from "./build-beat.js";
7
+ import { ChromeRoot } from "./chrome-root.js";
8
+ import { completeConnection } from "./connect-dock.js";
9
+ import { toolkitDisplayName } from "./humanize.js";
10
+ /** ui-lane-panels picks A + D + F — identity-forward rows, a two-step
11
+ * disconnect with an undo window, and a connect-ahead empty state. */
12
+ function connectorDisplayName(connector) {
13
+ return connector === "composio" ? "Composio" : toolkitDisplayName(connector);
14
+ }
15
+ const STATUS = {
16
+ active: { label: "Connected", tone: "ok" },
17
+ initiated: { label: "Connecting…", tone: "off" },
18
+ expired: { label: "Expired", tone: "warn" },
19
+ failed: { label: "Failed", tone: "danger" },
20
+ };
21
+ function connectedDate(createdAt) {
22
+ return new Intl.DateTimeFormat("en", { dateStyle: "medium", timeZone: "UTC" }).format(new Date(createdAt));
23
+ }
24
+ function ToolkitMark({ toolkit }) {
25
+ // Same failure posture as the tray and connect card: a mark that fails to
26
+ // load falls back to the link glyph instead of a broken-image icon.
27
+ const [logoFailed, setLogoFailed] = useState(false);
28
+ const logo = logoFailed ? undefined : toolkitLogoUrl(toolkit);
29
+ return (_jsx("span", { className: "fl-acct-logo", "aria-hidden": "true", children: logo ? (
30
+ // eslint-disable-next-line @next/next/no-img-element -- chrome surface, plain img by design
31
+ _jsx("img", { src: logo, alt: "", width: 17, height: 17, style: { display: "block", objectFit: "contain" }, onError: () => setLogoFailed(true) })) : (_jsx("svg", { width: "17", height: "17", 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" }) })) }));
32
+ }
33
+ /** 04-actions §3 / 08-ui §4 — the persistent connected-accounts settings
34
+ * surface: every external account the signed-in user has connected through
35
+ * the broker, with real service identity (logo, display name, status chip)
36
+ * and a consequence-aware, reversible disconnect. Connecting normally happens
37
+ * in-flow (the connect card); the empty state additionally offers connecting
38
+ * ahead of time via the same broker redirect. */
39
+ export function ConnectedAccountsPanel({ undoMs = 10_000 } = {}) {
40
+ const { client } = useVendoContext();
41
+ const { options: connectors } = useConnectorCatalog();
42
+ const { connections, disconnect, refresh } = useConnections();
43
+ const [confirming, setConfirming] = useState({});
44
+ const [severing, setSevering] = useState({});
45
+ const [busy, setBusy] = useState({});
46
+ const [error, setError] = useState();
47
+ const timers = useRef(new Map());
48
+ // Pending disconnects flush on unmount (an undone-looking row must never
49
+ // silently survive navigation), so the latest wire args live in a ref.
50
+ const pendingRef = useRef(new Map());
51
+ const cancelled = useRef(false);
52
+ // The unmount flush must see the CURRENT disconnect without re-running the
53
+ // effect (an effect keyed on `disconnect` would flush pending severs on any
54
+ // identity change mid-session).
55
+ const disconnectRef = useRef(disconnect);
56
+ disconnectRef.current = disconnect;
57
+ useEffect(() => {
58
+ // cancelled/pending state persists across effects; reset for StrictMode remounts.
59
+ cancelled.current = false;
60
+ const pending = pendingRef.current;
61
+ const active = timers.current;
62
+ return () => {
63
+ cancelled.current = true;
64
+ for (const timer of active.values()) {
65
+ window.clearTimeout(timer.commit);
66
+ window.clearInterval(timer.tick);
67
+ }
68
+ active.clear();
69
+ for (const [id, { connector }] of pending) {
70
+ void disconnectRef.current(id, connector).catch(() => undefined);
71
+ }
72
+ pending.clear();
73
+ };
74
+ }, []);
75
+ const clearTimers = (id) => {
76
+ const timer = timers.current.get(id);
77
+ if (timer) {
78
+ window.clearTimeout(timer.commit);
79
+ window.clearInterval(timer.tick);
80
+ timers.current.delete(id);
81
+ }
82
+ };
83
+ const beginSever = (connection) => {
84
+ const id = connection.id;
85
+ setConfirming(current => ({ ...current, [id]: false }));
86
+ setSevering(current => ({ ...current, [id]: { left: Math.max(1, Math.ceil(undoMs / 1000)) } }));
87
+ pendingRef.current.set(id, { connector: connection.connector });
88
+ const tick = window.setInterval(() => {
89
+ setSevering(current => {
90
+ const entry = current[id];
91
+ if (!entry)
92
+ return current;
93
+ return { ...current, [id]: { left: Math.max(0, entry.left - 1) } };
94
+ });
95
+ }, 1_000);
96
+ const commit = window.setTimeout(() => {
97
+ clearTimers(id);
98
+ pendingRef.current.delete(id);
99
+ void (async () => {
100
+ setError(undefined);
101
+ setBusy(current => ({ ...current, [id]: true }));
102
+ try {
103
+ await disconnect(id, connection.connector);
104
+ }
105
+ catch (reason) {
106
+ if (!cancelled.current)
107
+ setError(reason instanceof Error ? reason.message : String(reason));
108
+ }
109
+ finally {
110
+ if (!cancelled.current) {
111
+ setBusy(current => ({ ...current, [id]: false }));
112
+ setSevering(current => ({ ...current, [id]: undefined }));
113
+ }
114
+ }
115
+ })();
116
+ }, undoMs);
117
+ timers.current.set(id, { commit, tick });
118
+ };
119
+ const undoSever = (id) => {
120
+ clearTimers(id);
121
+ pendingRef.current.delete(id);
122
+ setSevering(current => ({ ...current, [id]: undefined }));
123
+ };
124
+ // Connect-ahead runs through the host's connector catalog (context), so the
125
+ // chips honour host labels and pinned broker connectors — never a hardcoded
126
+ // toolkit list.
127
+ const connectAhead = async (option) => {
128
+ setError(undefined);
129
+ setBusy(current => ({ ...current, [`connect-${option.toolkit}`]: true }));
130
+ try {
131
+ await completeConnection(client, { toolkit: option.toolkit, connector: option.connector }, () => cancelled.current);
132
+ if (!cancelled.current)
133
+ await refresh();
134
+ }
135
+ catch (reason) {
136
+ if (!cancelled.current)
137
+ setError(reason instanceof Error ? reason.message : String(reason));
138
+ }
139
+ finally {
140
+ if (!cancelled.current)
141
+ setBusy(current => ({ ...current, [`connect-${option.toolkit}`]: false }));
142
+ }
143
+ };
144
+ return (_jsx(ChromeRoot, { children: _jsxs("section", { "aria-labelledby": "vendo-accounts-heading", style: { display: "flex", flexDirection: "column", gap: 12 }, children: [_jsx("h2", { id: "vendo-accounts-heading", className: "fl-auto-title", style: { margin: 0 }, children: "Connected accounts" }), error ? _jsx("div", { role: "alert", className: "fl-error", children: error }) : null, connections.length === 0 ? (_jsxs("div", { className: "fl-acct-ghost", children: [_jsx("span", { className: "fl-acct-ghost-title", children: "No connected accounts yet" }), _jsxs("p", { className: "fl-acct-ghost-copy", children: ["Normally you\u2019ll connect an account right in the conversation, the moment the agent needs it.", connectors.length > 0 ? " If you’d rather set one up ahead of time:" : ""] }), connectors.length > 0 ? (_jsx("div", { className: "fl-acct-connect-row", children: connectors.map(option => {
145
+ const label = option.label ?? toolkitDisplayName(option.toolkit);
146
+ return (_jsxs("button", { className: "fl-acct-connect-chip", type: "button", disabled: busy[`connect-${option.toolkit}`] === true, onClick: () => void connectAhead(option), children: [_jsx(ToolkitMark, { toolkit: option.toolkit }), _jsx("span", { children: busy[`connect-${option.toolkit}`] ? "Connecting…" : `Connect ${label}` })] }, option.toolkit));
147
+ }) })) : null] })) : null, connections.map(connection => {
148
+ const name = toolkitDisplayName(connection.toolkit);
149
+ const status = STATUS[connection.status];
150
+ const sever = severing[connection.id];
151
+ if (sever) {
152
+ return (_jsxs("div", { className: "fl-acct-severed", role: "status", children: [_jsx(ToolkitMark, { toolkit: connection.toolkit }), _jsxs("span", { children: [name, " disconnected \u2014 standing access severed."] }), _jsxs("span", { className: "fl-acct-undo", children: [_jsx("span", { className: "fl-acct-undo-count", children: sever.left > 0 ? `${sever.left}s` : "…" }), _jsx("button", { className: "fl-btn", type: "button", disabled: busy[connection.id] === true || sever.left <= 0, onClick: () => undoSever(connection.id), children: "Undo" })] })] }, `${connection.connector}-${connection.id}`));
153
+ }
154
+ return (_jsxs("article", { className: "fl-automation", children: [_jsxs("div", { className: "fl-auto-head", children: [_jsx(ToolkitMark, { toolkit: connection.toolkit }), _jsxs("div", { children: [_jsxs("div", { className: "fl-auto-title fl-acct-title", children: [name, _jsxs("span", { className: `fl-acct-chip fl-acct-chip--${status.tone}`, children: [_jsx("i", { "aria-hidden": "true" }), status.label] })] }), _jsxs("div", { className: "fl-auto-sub", children: [`via ${connectorDisplayName(connection.connector)}`, connection.createdAt ? ` · connected ${connectedDate(connection.createdAt)}` : ""] })] }), _jsx("button", { className: "fl-btn", type: "button", "aria-label": `Disconnect ${name}`, "aria-expanded": confirming[connection.id] === true, style: { marginLeft: "auto" }, onClick: () => setConfirming(current => ({ ...current, [connection.id]: !current[connection.id] })), children: "Disconnect\u2026" })] }), _jsx("div", { className: `fl-acct-confirm${confirming[connection.id] ? " fl-acct-confirm--open" : ""}`, children: _jsxs("div", { className: "fl-acct-confirm-inner", children: [_jsxs("span", { children: [_jsx("b", { children: `Disconnect ${name}?` }), _jsx("span", { className: "fl-acct-confirm-sub", children: `Vendo loses the ability to act in ${name} as you. Anything that posts through this account pauses until you reconnect.` })] }), _jsxs("span", { className: "fl-acct-confirm-actions", children: [_jsx("button", { className: "fl-btn fl-btn-ceremony", type: "button", onClick: () => beginSever(connection), children: "Disconnect" }), _jsx("button", { className: "fl-btn", type: "button", onClick: () => setConfirming(current => ({ ...current, [connection.id]: false })), children: "Keep" })] })] }) })] }, `${connection.connector}-${connection.id}`));
155
+ })] }) }));
156
+ }
157
+ //# sourceMappingURL=connected-accounts-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connected-accounts-panel.js","sourceRoot":"","sources":["../../src/chrome/connected-accounts-panel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Dev-only console rails, SSR-safe. Next/webpack shims statically replace
2
+ * `process.env.NODE_ENV`; under bundlers without a process global the check
3
+ * simply stays off (rails are advisory, never load-bearing). */
4
+ export declare function developmentMode(): boolean;
5
+ //# sourceMappingURL=dev-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-mode.d.ts","sourceRoot":"","sources":["../../src/chrome/dev-mode.ts"],"names":[],"mappings":"AAAA;;iEAEiE;AACjE,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
@@ -0,0 +1,7 @@
1
+ /** Dev-only console rails, SSR-safe. Next/webpack shims statically replace
2
+ * `process.env.NODE_ENV`; under bundlers without a process global the check
3
+ * simply stays off (rails are advisory, never load-bearing). */
4
+ export function developmentMode() {
5
+ return typeof process !== "undefined" && process.env?.NODE_ENV === "development";
6
+ }
7
+ //# sourceMappingURL=dev-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-mode.js","sourceRoot":"","sources":["../../src/chrome/dev-mode.ts"],"names":[],"mappings":"AAAA;;iEAEiE;AACjE,MAAM,UAAU,eAAe;IAC7B,OAAO,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,KAAK,aAAa,CAAC;AACnF,CAAC"}
@@ -0,0 +1,33 @@
1
+ /** Fire-once flags for discoverability elements (ui-usage-dx §6).
2
+ *
3
+ * Hard rule: every discoverability element renders at most once per user per
4
+ * deployment, ever — localStorage (origin-scoped, so per-deployment) is the
5
+ * source of truth, and any degraded environment (SSR, sandboxed iframe,
6
+ * blocked or full storage) reads as already-seen so it never nags. */
7
+ /** The one host-facing discoverability dial (ui-usage-dx §6): `"default"`
8
+ * keeps the fire-once whisper + greeting-as-tutorial; `"quiet"` disables
9
+ * both. Contextual affordances (slot ghosts, remix hover, triggers) are
10
+ * host-placed and untouched by the dial. */
11
+ export type VendoDiscoverability = "quiet" | "default";
12
+ /** The greeting-as-tutorial content (§6 first-open moment): an agent-voiced
13
+ * intro line plus 2–3 tappable starter prompts (chips PREFILL the composer,
14
+ * never send). Hosts supply it via the provider/overlay `greeting` prop —
15
+ * typically loaded from `.vendo/greeting.json`, which uses this exact shape. */
16
+ export interface VendoGreeting {
17
+ intro: string;
18
+ prompts: string[];
19
+ }
20
+ /** Fallback greeting when the host supplies none: a generic capable intro
21
+ * whose second prompt is always a molding prompt (the §6 requirement). */
22
+ export declare const defaultVendoGreeting: VendoGreeting;
23
+ /** Fallback suggestion chips for the VendoSlot empty-state invitation
24
+ * (ui-lane-entry pick S-A×S-D) when the host supplies none — generic
25
+ * view-authoring starts, white-label like everything else. Hosts should
26
+ * replace these with host-aware prompts (`.vendo/greeting.json` pipeline). */
27
+ export declare const defaultSlotSuggestions: string[];
28
+ /** True once the element has fired — or whenever storage cannot answer. */
29
+ export declare function hasSeen(element: string): boolean;
30
+ /** Record the element as fired. Best-effort: a write that fails stays silent
31
+ * (the matching hasSeen already reports seen in those environments). */
32
+ export declare function markSeen(element: string): void;
33
+ //# sourceMappingURL=discoverability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discoverability.d.ts","sourceRoot":"","sources":["../../src/chrome/discoverability.ts"],"names":[],"mappings":"AAAA;;;;;uEAKuE;AAEvE;;;6CAG6C;AAC7C,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvD;;;iFAGiF;AACjF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;2EAC2E;AAC3E,eAAO,MAAM,oBAAoB,EAAE,aAGlC,CAAC;AAEF;;;+EAG+E;AAC/E,eAAO,MAAM,sBAAsB,EAAE,MAAM,EAI1C,CAAC;AAaF,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAgBhD;AAED;yEACyE;AACzE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAM9C"}
@@ -0,0 +1,63 @@
1
+ /** Fire-once flags for discoverability elements (ui-usage-dx §6).
2
+ *
3
+ * Hard rule: every discoverability element renders at most once per user per
4
+ * deployment, ever — localStorage (origin-scoped, so per-deployment) is the
5
+ * source of truth, and any degraded environment (SSR, sandboxed iframe,
6
+ * blocked or full storage) reads as already-seen so it never nags. */
7
+ /** Fallback greeting when the host supplies none: a generic capable intro
8
+ * whose second prompt is always a molding prompt (the §6 requirement). */
9
+ export const defaultVendoGreeting = {
10
+ intro: "Hi — I'm built into this app. Ask me questions, hand me tasks, or have me reshape a screen to fit how you work.",
11
+ prompts: ["What can you do here?", "Rebuild this page around what I use most"],
12
+ };
13
+ /** Fallback suggestion chips for the VendoSlot empty-state invitation
14
+ * (ui-lane-entry pick S-A×S-D) when the host supplies none — generic
15
+ * view-authoring starts, white-label like everything else. Hosts should
16
+ * replace these with host-aware prompts (`.vendo/greeting.json` pipeline). */
17
+ export const defaultSlotSuggestions = [
18
+ "Track the things I check most",
19
+ "Summarize what's on this page",
20
+ "A morning digest of what changed",
21
+ ];
22
+ const PREFIX = "vendo:discoverability:";
23
+ function storage() {
24
+ try {
25
+ // The ACCESS itself can throw (sandboxed iframes, partitioned storage).
26
+ return typeof window === "undefined" ? null : window.localStorage;
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ /** True once the element has fired — or whenever storage cannot answer. */
33
+ export function hasSeen(element) {
34
+ const store = storage();
35
+ if (!store)
36
+ return true;
37
+ try {
38
+ if (store.getItem(PREFIX + element) !== null)
39
+ return true;
40
+ // Quota-full storage commonly still READS while writes throw; reporting
41
+ // unseen there means markSeen can never persist and the element replays
42
+ // on every visit. Probe writability first — a failed probe reads as seen
43
+ // (degraded environments never nag).
44
+ const probe = `${PREFIX}probe`;
45
+ store.setItem(probe, "1");
46
+ store.removeItem(probe);
47
+ return false;
48
+ }
49
+ catch {
50
+ return true;
51
+ }
52
+ }
53
+ /** Record the element as fired. Best-effort: a write that fails stays silent
54
+ * (the matching hasSeen already reports seen in those environments). */
55
+ export function markSeen(element) {
56
+ try {
57
+ storage()?.setItem(PREFIX + element, "1");
58
+ }
59
+ catch {
60
+ /* quota/denied — nothing to do */
61
+ }
62
+ }
63
+ //# sourceMappingURL=discoverability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discoverability.js","sourceRoot":"","sources":["../../src/chrome/discoverability.ts"],"names":[],"mappings":"AAAA;;;;;uEAKuE;AAiBvE;2EAC2E;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,KAAK,EAAE,iHAAiH;IACxH,OAAO,EAAE,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;CAC/E,CAAC;AAEF;;;+EAG+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAAa;IAC9C,+BAA+B;IAC/B,+BAA+B;IAC/B,kCAAkC;CACnC,CAAC;AAEF,MAAM,MAAM,GAAG,wBAAwB,CAAC;AAExC,SAAS,OAAO;IACd,IAAI,CAAC;QACH,wEAAwE;QACxE,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC1D,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,qCAAqC;QACrC,MAAM,KAAK,GAAG,GAAG,MAAM,OAAO,CAAC;QAC/B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1B,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;yEACyE;AACzE,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { VendoAppEmbedProps, VendoApprovalEmbedProps, VendoToolResultProps } from "../embeds.js";
2
+ /**
3
+ * Approve/deny for a guarded call parked from a BYO agent loop
4
+ * (`vendo/approval-ref@1`). The wire owns the state — this embed polls
5
+ * `GET /approvals/:id` and resolves in place to the executed outcome,
6
+ * "declined", or "expired" (the frozen `VendoApprovalEmbedState` vocabulary).
7
+ */
8
+ export declare function VendoApprovalEmbed({ refValue }: VendoApprovalEmbedProps): import("react").JSX.Element;
9
+ /**
10
+ * Inline generated app (`vendo/app-ref@1`): the build-beat bar while the
11
+ * build streams, then the live app. In-app interactions go over the wire
12
+ * (`apps.call`), never through the host's agent loop.
13
+ */
14
+ export declare function VendoAppEmbed({ refValue }: VendoAppEmbedProps): import("react").JSX.Element;
15
+ /**
16
+ * The dispatcher: give it any `vendo_*` tool output and it renders the right
17
+ * embed by `parseVendoToolEnvelope` — or nothing for plain data (the action
18
+ * executed cleanly; the agent already consumed the result).
19
+ */
20
+ export declare function VendoToolResult({ output }: VendoToolResultProps): import("react").JSX.Element | null;
21
+ //# sourceMappingURL=embeds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeds.d.ts","sourceRoot":"","sources":["../../src/chrome/embeds.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AA8GtB;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,+BA6DvE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BAiF7D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,oBAAoB,sCAM/D"}
@@ -0,0 +1,181 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { VENDO_APP_REF_KIND, VendoError, parseVendoToolEnvelope, } from "@vendoai/core";
3
+ import { useCallback, useEffect, useState } from "react";
4
+ import { useVendoContext } from "../context.js";
5
+ import { useResource } from "../hooks/use-resource.js";
6
+ import { AppFrame } from "../tree/frames.js";
7
+ import { ApprovalCard } from "./approval-card.js";
8
+ import { ChromeRoot } from "./chrome-root.js";
9
+ import { LONG_TEXT_CAP, truncateHead } from "./truncate.js";
10
+ /**
11
+ * Existing-agents Lane B — the three embeds a BYO chat surface renders from
12
+ * `vendo_*` tool outputs (frozen prop contracts in ../embeds.ts). All three
13
+ * live inside the host's `VendoProvider` pointed at the wire: auth rides the
14
+ * host session cookie, theme rides the `--vendo-*` tokens, and they take no
15
+ * client/config props of their own. Failure states speak the existing
16
+ * failed/expired vocabulary — never a silent blank.
17
+ */
18
+ /** While the build streams the wire has nothing to serve yet, so the embed
19
+ * polls open(); a build that never lands resolves to the failed vocabulary
20
+ * instead of an eternal beat. */
21
+ const APP_POLL_MS = 1200;
22
+ const APP_BUILD_DEADLINE_MS = 5 * 60_000;
23
+ /** Pending approvals re-poll so a decision made anywhere (this card, the
24
+ * workspace queue, another tab) resolves this embed in place. */
25
+ const APPROVAL_POLL_MS = 2500;
26
+ function asError(reason) {
27
+ return reason instanceof Error ? reason : new Error(String(reason));
28
+ }
29
+ const tick = (_jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.4", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "m5 12 4 4L19 6" }) }));
30
+ const cross = (_jsx("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.4", strokeLinecap: "round", "aria-hidden": "true", children: _jsx("path", { d: "M18 6 6 18M6 6l12 12" }) }));
31
+ /** One resolved line in the thread's beat vocabulary: tick for done, x for
32
+ * failed/terminal, orb while working. */
33
+ function BeatLine({ state, children }) {
34
+ return (_jsxs("div", { className: `fl-beat fl-beat-${state}`, children: [state === "working" ? (_jsx("span", { className: "fl-beat-orb", "aria-hidden": "true" })) : (_jsx("span", { className: `fl-beat-ic ${state === "done" ? "fl-beat-tick" : "fl-beat-x"}`, children: state === "done" ? tick : cross })), _jsx("span", { className: "fl-beat-label", children: children })] }));
35
+ }
36
+ /** The resolved approval card: same `fl-approval` boundary as the consent
37
+ * card, collapsed to its terminal line (and the executed result, if any). */
38
+ function ResolvedApprovalCard({ summary, ok, line, detail }) {
39
+ return (_jsxs("article", { className: `fl-approval${ok ? " fl-approval-approved" : ""}`, "aria-label": `Approval — ${line}`, children: [_jsx("div", { className: "fl-approval-head", children: _jsxs("div", { className: "fl-approval-heading", children: [_jsx("div", { className: "fl-approval-eyebrow", children: "Approval" }), _jsx("div", { className: "fl-approval-title", children: summary })] }) }), _jsx(BeatLine, { state: ok ? "done" : "error", children: line }), detail] }));
40
+ }
41
+ function executedCard(summary, outcome) {
42
+ if (outcome.status === "ok") {
43
+ const preview = JSON.stringify(outcome.output);
44
+ const detail = preview !== undefined && preview !== "{}" && preview !== "null"
45
+ ? (_jsx("pre", { className: "fl-approval-fields", "aria-label": "Result", style: { whiteSpace: "pre-wrap", overflowWrap: "anywhere" }, children: truncateHead(preview, Math.min(500, LONG_TEXT_CAP)) }))
46
+ : undefined;
47
+ return _jsx(ResolvedApprovalCard, { summary: summary, ok: true, line: "Approved \u2014 ran", detail: detail });
48
+ }
49
+ // The resumed call itself failed (error/blocked/…): the honest record, in
50
+ // the thread's existing "couldn't finish" vocabulary.
51
+ const reason = outcome.status === "error"
52
+ ? outcome.error.message
53
+ : outcome.status === "blocked"
54
+ ? outcome.reason
55
+ : outcome.status;
56
+ return (_jsx(ResolvedApprovalCard, { summary: summary, ok: false, line: "Approved \u2014 couldn't finish", detail: _jsx("div", { className: "fl-approval-more", children: reason }) }));
57
+ }
58
+ /**
59
+ * Approve/deny for a guarded call parked from a BYO agent loop
60
+ * (`vendo/approval-ref@1`). The wire owns the state — this embed polls
61
+ * `GET /approvals/:id` and resolves in place to the executed outcome,
62
+ * "declined", or "expired" (the frozen `VendoApprovalEmbedState` vocabulary).
63
+ */
64
+ export function VendoApprovalEmbed({ refValue }) {
65
+ const { client } = useVendoContext();
66
+ const { approvalId, summary } = refValue;
67
+ const fetcher = useCallback(async () => {
68
+ try {
69
+ return await client.approvals.get(approvalId);
70
+ }
71
+ catch (reason) {
72
+ // An approval the wire no longer knows is no longer actionable: the
73
+ // TTL sweep (or a store erase) got there first. Same terminal state.
74
+ if (reason instanceof VendoError && reason.code === "not-found") {
75
+ return { state: "expired" };
76
+ }
77
+ throw reason;
78
+ }
79
+ }, [client, approvalId]);
80
+ // Poll until the state is terminal; useResource disarms when pollMs clears.
81
+ const [pollMs, setPollMs] = useState(APPROVAL_POLL_MS);
82
+ const { data, error, refresh } = useResource(fetcher, null, pollMs === undefined ? {} : { pollMs });
83
+ useEffect(() => {
84
+ if (data !== null && data.state !== "pending")
85
+ setPollMs(undefined);
86
+ }, [data]);
87
+ const decide = useCallback(async (decision) => {
88
+ await client.approvals.decide(approvalId, decision);
89
+ await refresh();
90
+ }, [client, approvalId, refresh]);
91
+ let body;
92
+ if (data === null) {
93
+ body = error !== undefined
94
+ ? (_jsxs("article", { className: "fl-approval", "aria-label": `Approval — ${summary}`, children: [_jsx("div", { className: "fl-approval-title", children: summary }), _jsx("div", { role: "alert", className: "fl-error", children: error.message })] }))
95
+ : _jsx(BeatLine, { state: "working", children: summary });
96
+ }
97
+ else if (data.state === "pending") {
98
+ body = _jsx(ApprovalCard, { approval: data.request, onDecide: decide });
99
+ }
100
+ else if (data.state === "executed") {
101
+ body = executedCard(summary, data.outcome);
102
+ }
103
+ else if (data.state === "declined") {
104
+ body = _jsx(ResolvedApprovalCard, { summary: summary, ok: false, line: "Declined \u2014 nothing ran" });
105
+ }
106
+ else {
107
+ body = _jsx(ResolvedApprovalCard, { summary: summary, ok: false, line: "Expired \u2014 no longer waiting for approval" });
108
+ }
109
+ return (_jsx(ChromeRoot, { children: _jsx("div", { "data-vendo-embed": "approval", children: body }) }));
110
+ }
111
+ /**
112
+ * Inline generated app (`vendo/app-ref@1`): the build-beat bar while the
113
+ * build streams, then the live app. In-app interactions go over the wire
114
+ * (`apps.call`), never through the host's agent loop.
115
+ */
116
+ export function VendoAppEmbed({ refValue }) {
117
+ const { client, components } = useVendoContext();
118
+ const { appId, title } = refValue;
119
+ const [surface, setSurface] = useState();
120
+ const [failed, setFailed] = useState();
121
+ useEffect(() => {
122
+ setSurface(undefined);
123
+ setFailed(undefined);
124
+ const startedAt = Date.now();
125
+ let cancelled = false;
126
+ let timer;
127
+ // Self-scheduling poll (useResource's pacing rule): the next attempt is
128
+ // armed only after the current one settles. `vendo_create_app` returns
129
+ // fast and the build streams server-side, so until there is an app to
130
+ // serve the flagged poll answers a quiet `{kind:"pending"}` (a wire that
131
+ // predates the flag still 404s — the catch arm keeps the same cadence, so
132
+ // older servers only lose the quiet console). Keep asking until the app
133
+ // lands or the deadline turns the beat into the failed vocabulary.
134
+ const attempt = async () => {
135
+ try {
136
+ const next = await client.apps.open(appId, { pending: true });
137
+ if (cancelled)
138
+ return;
139
+ if (next.kind !== "pending") {
140
+ setSurface(next);
141
+ return;
142
+ }
143
+ if (Date.now() - startedAt >= APP_BUILD_DEADLINE_MS) {
144
+ setFailed(new Error(`app never became servable: ${appId}`));
145
+ return;
146
+ }
147
+ }
148
+ catch (reason) {
149
+ if (cancelled)
150
+ return;
151
+ if (Date.now() - startedAt >= APP_BUILD_DEADLINE_MS) {
152
+ setFailed(asError(reason));
153
+ return;
154
+ }
155
+ }
156
+ timer = setTimeout(() => void attempt(), APP_POLL_MS);
157
+ };
158
+ void attempt();
159
+ return () => {
160
+ cancelled = true;
161
+ if (timer !== undefined)
162
+ clearTimeout(timer);
163
+ };
164
+ }, [client, appId]);
165
+ const building = surface === undefined && failed === undefined;
166
+ return (_jsx(ChromeRoot, { children: _jsxs("div", { className: "fl-uihost fl-appcard", "data-vendo-embed": "app", children: [_jsxs("div", { className: "fl-appcard-bar", "data-state": building ? "building" : "ready", children: [_jsx("span", { className: "fl-appcard-dot", "aria-hidden": "true" }), _jsxs("span", { className: "fl-boot-labels fl-appcard-name", children: [_jsxs("span", { className: "fl-boot-building", "aria-hidden": !building, children: ["Building ", title, "\u2026"] }), _jsx("span", { className: "fl-boot-ready", "aria-hidden": building, children: title })] }), _jsx("span", { className: "fl-boot-hairline", "aria-hidden": "true" })] }), _jsx("div", { className: "fl-appcard-body", children: surface !== undefined ? (_jsx(AppFrame, { surface: surface, components: components, onAction: ({ action, payload }) => client.apps.call(appId, action, payload ?? {}) })) : failed !== undefined ? (_jsxs(BeatLine, { state: "error", children: [title, " \u2014 couldn't finish"] })) : (_jsxs("span", { className: "fl-slot-skel", role: "status", "aria-label": `Building ${title}`, children: [_jsx("span", { className: "fl-skel-line", style: { width: "54%" } }), _jsx("span", { className: "fl-skel-line", style: { width: "78%" } }), _jsx("span", { className: "fl-skel-line", style: { width: "42%" } })] })) })] }) }));
167
+ }
168
+ /**
169
+ * The dispatcher: give it any `vendo_*` tool output and it renders the right
170
+ * embed by `parseVendoToolEnvelope` — or nothing for plain data (the action
171
+ * executed cleanly; the agent already consumed the result).
172
+ */
173
+ export function VendoToolResult({ output }) {
174
+ const envelope = parseVendoToolEnvelope(output);
175
+ if (envelope === null)
176
+ return null;
177
+ return envelope.kind === VENDO_APP_REF_KIND
178
+ ? _jsx(VendoAppEmbed, { refValue: envelope })
179
+ : _jsx(VendoApprovalEmbed, { refValue: envelope });
180
+ }
181
+ //# sourceMappingURL=embeds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeds.js","sourceRoot":"","sources":["../../src/chrome/embeds.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface FluidThinkingProps {
2
+ /** Accessible label for the working state. */
3
+ label?: string;
4
+ /** Drop diameter in px (fluidkit Thinking `size`). */
5
+ size?: number;
6
+ }
7
+ /**
8
+ * The agent-liveness indicator. fluidkit is an enhancement layer: the legacy
9
+ * static dots paint immediately (and are all reduced-motion CSS ever animates),
10
+ * then fluidkit's metaball Thinking takes over once its chunk resolves. If the
11
+ * library is missing or fails to load, the dots simply stay — the shell never
12
+ * depends on it to function.
13
+ */
14
+ export declare function FluidThinking({ label, size }: FluidThinkingProps): import("react").JSX.Element;
15
+ //# sourceMappingURL=fluid-thinking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluid-thinking.d.ts","sourceRoot":"","sources":["../../src/chrome/fluid-thinking.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAiB,EAAE,IAAQ,EAAE,EAAE,kBAAkB,+BAoChF"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ // Module-level so the import (or its failure) is paid once per session, not
4
+ // once per streaming turn. `undefined` = not attempted, `null` = unavailable.
5
+ let cached;
6
+ /**
7
+ * The agent-liveness indicator. fluidkit is an enhancement layer: the legacy
8
+ * static dots paint immediately (and are all reduced-motion CSS ever animates),
9
+ * then fluidkit's metaball Thinking takes over once its chunk resolves. If the
10
+ * library is missing or fails to load, the dots simply stay — the shell never
11
+ * depends on it to function.
12
+ */
13
+ export function FluidThinking({ label = "Working", size = 9 }) {
14
+ // Initializer form: the cached value is itself a function component, and a
15
+ // bare function passed to useState would be invoked as a lazy initializer.
16
+ const [Thinking, setThinking] = useState(() => cached ?? null);
17
+ useEffect(() => {
18
+ if (cached !== undefined)
19
+ return;
20
+ let alive = true;
21
+ import("fluidkit").then((mod) => {
22
+ cached = mod.Thinking;
23
+ if (alive)
24
+ setThinking(() => mod.Thinking);
25
+ }, () => {
26
+ cached = null;
27
+ });
28
+ return () => {
29
+ alive = false;
30
+ };
31
+ }, []);
32
+ if (!Thinking) {
33
+ return (_jsxs("div", { className: "fl-typing", "aria-label": label, children: [_jsx("span", {}), _jsx("span", {}), _jsx("span", {})] }));
34
+ }
35
+ return (_jsx("div", { className: "fl-thinking", children: _jsx(Thinking, { label: label, material: "flat", size: size }) }));
36
+ }
37
+ //# sourceMappingURL=fluid-thinking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluid-thinking.js","sourceRoot":"","sources":["../../src/chrome/fluid-thinking.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAC;AAKhE,4EAA4E;AAC5E,8EAA8E;AAC9E,IAAI,MAA4C,CAAC;AASjD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,IAAI,GAAG,CAAC,EAAsB;IAC/E,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA2B,GAAG,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IAEzF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CACrB,CAAC,GAAG,EAAE,EAAE;YACN,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;YACtB,IAAI,KAAK;gBAAE,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,EACD,GAAG,EAAE;YACH,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC,CACF,CAAC;QACF,OAAO,GAAG,EAAE;YACV,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,gBAAa,KAAK,aAC1C,gBAAQ,EACR,gBAAQ,EACR,gBAAQ,IACJ,CACP,CAAC;IACJ,CAAC;IACD,OAAO,CACL,cAAK,SAAS,EAAC,aAAa,YAC1B,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,GAAI,GAClD,CACP,CAAC;AACJ,CAAC"}