@buoy-gg/ask-buoy 7.0.36 → 7.0.38

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 (312) hide show
  1. package/README.md +58 -27
  2. package/lib/commonjs/blocks/AskBlocks.js +1 -338
  3. package/lib/commonjs/blocks/BlockRenderer.js +1 -262
  4. package/lib/commonjs/blocks/ChromePrototypes.js +1 -514
  5. package/lib/commonjs/blocks/DataBlocks.js +1 -781
  6. package/lib/commonjs/blocks/ExtraBlocks.js +1 -1860
  7. package/lib/commonjs/blocks/MediaBlocks.js +1 -156
  8. package/lib/commonjs/blocks/ReceiptBlocks.js +1 -586
  9. package/lib/commonjs/blocks/blockText.js +1 -60
  10. package/lib/commonjs/blocks/blockText.test.js +1 -53
  11. package/lib/commonjs/blocks/context.js +1 -42
  12. package/lib/commonjs/blocks/icons.js +1 -96
  13. package/lib/commonjs/blocks/index.js +1 -95
  14. package/lib/commonjs/blocks/listRow.test.js +1 -55
  15. package/lib/commonjs/blocks/pageState.js +1 -34
  16. package/lib/commonjs/blocks/pageState.test.js +1 -57
  17. package/lib/commonjs/blocks/primitives.js +1 -457
  18. package/lib/commonjs/blocks/primitivesIndex.js +1 -62
  19. package/lib/commonjs/components/ApprovalCard.js +1 -244
  20. package/lib/commonjs/components/AskBuoyHeader.js +1 -196
  21. package/lib/commonjs/components/AskBuoyIcon.js +1 -19
  22. package/lib/commonjs/components/AskBuoyModal.js +1 -479
  23. package/lib/commonjs/components/AskBuoySettings.js +1 -119
  24. package/lib/commonjs/components/ChangesBar.js +1 -211
  25. package/lib/commonjs/components/Composer.js +1 -255
  26. package/lib/commonjs/components/EmptyState.js +1 -161
  27. package/lib/commonjs/components/KeyboardPad.js +1 -80
  28. package/lib/commonjs/components/Markdown.js +1 -310
  29. package/lib/commonjs/components/MessageList.js +1 -930
  30. package/lib/commonjs/components/QueuedMessages.js +1 -145
  31. package/lib/commonjs/components/ThinkingStrip.js +1 -223
  32. package/lib/commonjs/components/TypingDots.js +1 -63
  33. package/lib/commonjs/components/markdownParse.js +1 -131
  34. package/lib/commonjs/components/markdownParse.test.js +1 -99
  35. package/lib/commonjs/components/useCopyAction.js +1 -50
  36. package/lib/commonjs/index.js +1 -252
  37. package/lib/commonjs/preset.js +1 -90
  38. package/lib/commonjs/store/activityGroups.js +1 -110
  39. package/lib/commonjs/store/activityGroups.test.js +1 -78
  40. package/lib/commonjs/store/askBuoySettings.js +1 -72
  41. package/lib/commonjs/store/askBuoyStore.js +1 -547
  42. package/lib/commonjs/store/blockPlacement.js +1 -64
  43. package/lib/commonjs/store/blockPlacement.test.js +1 -123
  44. package/lib/commonjs/store/queue.test.js +1 -150
  45. package/lib/commonjs/store/resetConversation.js +1 -77
  46. package/lib/commonjs/store/restorePending.test.js +1 -63
  47. package/lib/commonjs/store/restoredIds.test.js +1 -47
  48. package/lib/commonjs/store/suggestions.js +1 -54
  49. package/lib/commonjs/store/suggestions.test.js +1 -58
  50. package/lib/commonjs/store/systemLine.test.js +1 -77
  51. package/lib/commonjs/store/ticketPrompt.js +1 -17
  52. package/lib/commonjs/store/traceText.js +1 -81
  53. package/lib/commonjs/store/traceText.test.js +1 -112
  54. package/lib/commonjs/store/transcriptPersistence.js +1 -297
  55. package/lib/commonjs/store/transcriptPersistence.test.js +1 -333
  56. package/lib/commonjs/store/turnRendering.test.js +1 -151
  57. package/lib/commonjs/store/useAskBuoy.js +1 -622
  58. package/lib/commonjs/store/useAskBuoySettings.js +1 -14
  59. package/lib/commonjs/sync/askBuoySyncAdapter.js +1 -140
  60. package/lib/commonjs/sync/askBuoySyncAdapter.test.js +1 -141
  61. package/lib/commonjs/sync/wire.js +1 -58
  62. package/lib/commonjs/types.js +1 -6
  63. package/lib/module/blocks/AskBlocks.js +1 -331
  64. package/lib/module/blocks/BlockRenderer.js +1 -257
  65. package/lib/module/blocks/ChromePrototypes.js +1 -503
  66. package/lib/module/blocks/DataBlocks.js +1 -767
  67. package/lib/module/blocks/ExtraBlocks.js +1 -1833
  68. package/lib/module/blocks/MediaBlocks.js +1 -151
  69. package/lib/module/blocks/ReceiptBlocks.js +1 -574
  70. package/lib/module/blocks/blockText.js +1 -55
  71. package/lib/module/blocks/blockText.test.js +1 -53
  72. package/lib/module/blocks/context.js +1 -35
  73. package/lib/module/blocks/icons.js +1 -91
  74. package/lib/module/blocks/index.js +1 -8
  75. package/lib/module/blocks/listRow.test.js +1 -56
  76. package/lib/module/blocks/pageState.js +1 -30
  77. package/lib/module/blocks/pageState.test.js +1 -56
  78. package/lib/module/blocks/primitives.js +1 -445
  79. package/lib/module/blocks/primitivesIndex.js +1 -5
  80. package/lib/module/components/ApprovalCard.js +1 -239
  81. package/lib/module/components/AskBuoyHeader.js +1 -193
  82. package/lib/module/components/AskBuoyIcon.js +1 -8
  83. package/lib/module/components/AskBuoyModal.js +1 -474
  84. package/lib/module/components/AskBuoySettings.js +1 -114
  85. package/lib/module/components/ChangesBar.js +1 -206
  86. package/lib/module/components/Composer.js +1 -250
  87. package/lib/module/components/EmptyState.js +1 -156
  88. package/lib/module/components/KeyboardPad.js +1 -75
  89. package/lib/module/components/Markdown.js +1 -305
  90. package/lib/module/components/MessageList.js +1 -924
  91. package/lib/module/components/QueuedMessages.js +1 -140
  92. package/lib/module/components/ThinkingStrip.js +1 -218
  93. package/lib/module/components/TypingDots.js +1 -58
  94. package/lib/module/components/markdownParse.js +1 -125
  95. package/lib/module/components/markdownParse.test.js +1 -98
  96. package/lib/module/components/useCopyAction.js +1 -46
  97. package/lib/module/index.js +1 -34
  98. package/lib/module/preset.js +1 -73
  99. package/lib/module/store/activityGroups.js +1 -103
  100. package/lib/module/store/activityGroups.test.js +1 -77
  101. package/lib/module/store/askBuoySettings.js +1 -67
  102. package/lib/module/store/askBuoyStore.js +1 -541
  103. package/lib/module/store/blockPlacement.js +1 -59
  104. package/lib/module/store/blockPlacement.test.js +1 -122
  105. package/lib/module/store/queue.test.js +1 -149
  106. package/lib/module/store/resetConversation.js +1 -72
  107. package/lib/module/store/restorePending.test.js +1 -62
  108. package/lib/module/store/restoredIds.test.js +1 -46
  109. package/lib/module/store/suggestions.js +1 -49
  110. package/lib/module/store/suggestions.test.js +1 -57
  111. package/lib/module/store/systemLine.test.js +1 -76
  112. package/lib/module/store/ticketPrompt.js +1 -13
  113. package/lib/module/store/traceText.js +1 -75
  114. package/lib/module/store/traceText.test.js +1 -111
  115. package/lib/module/store/transcriptPersistence.js +1 -287
  116. package/lib/module/store/transcriptPersistence.test.js +1 -332
  117. package/lib/module/store/turnRendering.test.js +1 -150
  118. package/lib/module/store/useAskBuoy.js +1 -616
  119. package/lib/module/store/useAskBuoySettings.js +1 -9
  120. package/lib/module/sync/askBuoySyncAdapter.js +1 -135
  121. package/lib/module/sync/askBuoySyncAdapter.test.js +1 -140
  122. package/lib/module/sync/wire.js +1 -47
  123. package/lib/module/types.js +1 -4
  124. package/lib/typescript/components/ApprovalCard.d.ts +9 -1
  125. package/lib/typescript/preset.d.ts +4 -2
  126. package/lib/typescript/store/askBuoyStore.d.ts +32 -4
  127. package/lib/typescript/store/useAskBuoy.d.ts +3 -2
  128. package/lib/typescript/sync/askBuoySyncAdapter.d.ts +3 -0
  129. package/package.json +9 -9
  130. package/lib/commonjs/blocks/AskBlocks.js.map +0 -1
  131. package/lib/commonjs/blocks/BlockRenderer.js.map +0 -1
  132. package/lib/commonjs/blocks/ChromePrototypes.js.map +0 -1
  133. package/lib/commonjs/blocks/DataBlocks.js.map +0 -1
  134. package/lib/commonjs/blocks/ExtraBlocks.js.map +0 -1
  135. package/lib/commonjs/blocks/MediaBlocks.js.map +0 -1
  136. package/lib/commonjs/blocks/ReceiptBlocks.js.map +0 -1
  137. package/lib/commonjs/blocks/blockText.js.map +0 -1
  138. package/lib/commonjs/blocks/blockText.test.js.map +0 -1
  139. package/lib/commonjs/blocks/context.js.map +0 -1
  140. package/lib/commonjs/blocks/icons.js.map +0 -1
  141. package/lib/commonjs/blocks/index.js.map +0 -1
  142. package/lib/commonjs/blocks/listRow.test.js.map +0 -1
  143. package/lib/commonjs/blocks/pageState.js.map +0 -1
  144. package/lib/commonjs/blocks/pageState.test.js.map +0 -1
  145. package/lib/commonjs/blocks/primitives.js.map +0 -1
  146. package/lib/commonjs/blocks/primitivesIndex.js.map +0 -1
  147. package/lib/commonjs/components/ApprovalCard.js.map +0 -1
  148. package/lib/commonjs/components/AskBuoyHeader.js.map +0 -1
  149. package/lib/commonjs/components/AskBuoyIcon.js.map +0 -1
  150. package/lib/commonjs/components/AskBuoyModal.js.map +0 -1
  151. package/lib/commonjs/components/AskBuoySettings.js.map +0 -1
  152. package/lib/commonjs/components/ChangesBar.js.map +0 -1
  153. package/lib/commonjs/components/Composer.js.map +0 -1
  154. package/lib/commonjs/components/EmptyState.js.map +0 -1
  155. package/lib/commonjs/components/KeyboardPad.js.map +0 -1
  156. package/lib/commonjs/components/Markdown.js.map +0 -1
  157. package/lib/commonjs/components/MessageList.js.map +0 -1
  158. package/lib/commonjs/components/QueuedMessages.js.map +0 -1
  159. package/lib/commonjs/components/ThinkingStrip.js.map +0 -1
  160. package/lib/commonjs/components/TypingDots.js.map +0 -1
  161. package/lib/commonjs/components/markdownParse.js.map +0 -1
  162. package/lib/commonjs/components/markdownParse.test.js.map +0 -1
  163. package/lib/commonjs/components/useCopyAction.js.map +0 -1
  164. package/lib/commonjs/index.js.map +0 -1
  165. package/lib/commonjs/preset.js.map +0 -1
  166. package/lib/commonjs/store/activityGroups.js.map +0 -1
  167. package/lib/commonjs/store/activityGroups.test.js.map +0 -1
  168. package/lib/commonjs/store/askBuoySettings.js.map +0 -1
  169. package/lib/commonjs/store/askBuoyStore.js.map +0 -1
  170. package/lib/commonjs/store/blockPlacement.js.map +0 -1
  171. package/lib/commonjs/store/blockPlacement.test.js.map +0 -1
  172. package/lib/commonjs/store/queue.test.js.map +0 -1
  173. package/lib/commonjs/store/resetConversation.js.map +0 -1
  174. package/lib/commonjs/store/restorePending.test.js.map +0 -1
  175. package/lib/commonjs/store/restoredIds.test.js.map +0 -1
  176. package/lib/commonjs/store/suggestions.js.map +0 -1
  177. package/lib/commonjs/store/suggestions.test.js.map +0 -1
  178. package/lib/commonjs/store/systemLine.test.js.map +0 -1
  179. package/lib/commonjs/store/ticketPrompt.js.map +0 -1
  180. package/lib/commonjs/store/traceText.js.map +0 -1
  181. package/lib/commonjs/store/traceText.test.js.map +0 -1
  182. package/lib/commonjs/store/transcriptPersistence.js.map +0 -1
  183. package/lib/commonjs/store/transcriptPersistence.test.js.map +0 -1
  184. package/lib/commonjs/store/turnRendering.test.js.map +0 -1
  185. package/lib/commonjs/store/useAskBuoy.js.map +0 -1
  186. package/lib/commonjs/store/useAskBuoySettings.js.map +0 -1
  187. package/lib/commonjs/sync/askBuoySyncAdapter.js.map +0 -1
  188. package/lib/commonjs/sync/askBuoySyncAdapter.test.js.map +0 -1
  189. package/lib/commonjs/sync/wire.js.map +0 -1
  190. package/lib/commonjs/types.js.map +0 -1
  191. package/lib/module/blocks/AskBlocks.js.map +0 -1
  192. package/lib/module/blocks/BlockRenderer.js.map +0 -1
  193. package/lib/module/blocks/ChromePrototypes.js.map +0 -1
  194. package/lib/module/blocks/DataBlocks.js.map +0 -1
  195. package/lib/module/blocks/ExtraBlocks.js.map +0 -1
  196. package/lib/module/blocks/MediaBlocks.js.map +0 -1
  197. package/lib/module/blocks/ReceiptBlocks.js.map +0 -1
  198. package/lib/module/blocks/blockText.js.map +0 -1
  199. package/lib/module/blocks/blockText.test.js.map +0 -1
  200. package/lib/module/blocks/context.js.map +0 -1
  201. package/lib/module/blocks/icons.js.map +0 -1
  202. package/lib/module/blocks/index.js.map +0 -1
  203. package/lib/module/blocks/listRow.test.js.map +0 -1
  204. package/lib/module/blocks/pageState.js.map +0 -1
  205. package/lib/module/blocks/pageState.test.js.map +0 -1
  206. package/lib/module/blocks/primitives.js.map +0 -1
  207. package/lib/module/blocks/primitivesIndex.js.map +0 -1
  208. package/lib/module/components/ApprovalCard.js.map +0 -1
  209. package/lib/module/components/AskBuoyHeader.js.map +0 -1
  210. package/lib/module/components/AskBuoyIcon.js.map +0 -1
  211. package/lib/module/components/AskBuoyModal.js.map +0 -1
  212. package/lib/module/components/AskBuoySettings.js.map +0 -1
  213. package/lib/module/components/ChangesBar.js.map +0 -1
  214. package/lib/module/components/Composer.js.map +0 -1
  215. package/lib/module/components/EmptyState.js.map +0 -1
  216. package/lib/module/components/KeyboardPad.js.map +0 -1
  217. package/lib/module/components/Markdown.js.map +0 -1
  218. package/lib/module/components/MessageList.js.map +0 -1
  219. package/lib/module/components/QueuedMessages.js.map +0 -1
  220. package/lib/module/components/ThinkingStrip.js.map +0 -1
  221. package/lib/module/components/TypingDots.js.map +0 -1
  222. package/lib/module/components/markdownParse.js.map +0 -1
  223. package/lib/module/components/markdownParse.test.js.map +0 -1
  224. package/lib/module/components/useCopyAction.js.map +0 -1
  225. package/lib/module/index.js.map +0 -1
  226. package/lib/module/preset.js.map +0 -1
  227. package/lib/module/store/activityGroups.js.map +0 -1
  228. package/lib/module/store/activityGroups.test.js.map +0 -1
  229. package/lib/module/store/askBuoySettings.js.map +0 -1
  230. package/lib/module/store/askBuoyStore.js.map +0 -1
  231. package/lib/module/store/blockPlacement.js.map +0 -1
  232. package/lib/module/store/blockPlacement.test.js.map +0 -1
  233. package/lib/module/store/queue.test.js.map +0 -1
  234. package/lib/module/store/resetConversation.js.map +0 -1
  235. package/lib/module/store/restorePending.test.js.map +0 -1
  236. package/lib/module/store/restoredIds.test.js.map +0 -1
  237. package/lib/module/store/suggestions.js.map +0 -1
  238. package/lib/module/store/suggestions.test.js.map +0 -1
  239. package/lib/module/store/systemLine.test.js.map +0 -1
  240. package/lib/module/store/ticketPrompt.js.map +0 -1
  241. package/lib/module/store/traceText.js.map +0 -1
  242. package/lib/module/store/traceText.test.js.map +0 -1
  243. package/lib/module/store/transcriptPersistence.js.map +0 -1
  244. package/lib/module/store/transcriptPersistence.test.js.map +0 -1
  245. package/lib/module/store/turnRendering.test.js.map +0 -1
  246. package/lib/module/store/useAskBuoy.js.map +0 -1
  247. package/lib/module/store/useAskBuoySettings.js.map +0 -1
  248. package/lib/module/sync/askBuoySyncAdapter.js.map +0 -1
  249. package/lib/module/sync/askBuoySyncAdapter.test.js.map +0 -1
  250. package/lib/module/sync/wire.js.map +0 -1
  251. package/lib/module/types.js.map +0 -1
  252. package/lib/typescript/blocks/AskBlocks.d.ts.map +0 -1
  253. package/lib/typescript/blocks/BlockRenderer.d.ts.map +0 -1
  254. package/lib/typescript/blocks/ChromePrototypes.d.ts.map +0 -1
  255. package/lib/typescript/blocks/DataBlocks.d.ts.map +0 -1
  256. package/lib/typescript/blocks/ExtraBlocks.d.ts.map +0 -1
  257. package/lib/typescript/blocks/MediaBlocks.d.ts.map +0 -1
  258. package/lib/typescript/blocks/ReceiptBlocks.d.ts.map +0 -1
  259. package/lib/typescript/blocks/blockText.d.ts.map +0 -1
  260. package/lib/typescript/blocks/blockText.test.d.ts.map +0 -1
  261. package/lib/typescript/blocks/context.d.ts.map +0 -1
  262. package/lib/typescript/blocks/icons.d.ts.map +0 -1
  263. package/lib/typescript/blocks/index.d.ts.map +0 -1
  264. package/lib/typescript/blocks/listRow.test.d.ts.map +0 -1
  265. package/lib/typescript/blocks/pageState.d.ts.map +0 -1
  266. package/lib/typescript/blocks/pageState.test.d.ts.map +0 -1
  267. package/lib/typescript/blocks/primitives.d.ts.map +0 -1
  268. package/lib/typescript/blocks/primitivesIndex.d.ts.map +0 -1
  269. package/lib/typescript/components/ApprovalCard.d.ts.map +0 -1
  270. package/lib/typescript/components/AskBuoyHeader.d.ts.map +0 -1
  271. package/lib/typescript/components/AskBuoyIcon.d.ts.map +0 -1
  272. package/lib/typescript/components/AskBuoyModal.d.ts.map +0 -1
  273. package/lib/typescript/components/AskBuoySettings.d.ts.map +0 -1
  274. package/lib/typescript/components/ChangesBar.d.ts.map +0 -1
  275. package/lib/typescript/components/Composer.d.ts.map +0 -1
  276. package/lib/typescript/components/EmptyState.d.ts.map +0 -1
  277. package/lib/typescript/components/KeyboardPad.d.ts.map +0 -1
  278. package/lib/typescript/components/Markdown.d.ts.map +0 -1
  279. package/lib/typescript/components/MessageList.d.ts.map +0 -1
  280. package/lib/typescript/components/QueuedMessages.d.ts.map +0 -1
  281. package/lib/typescript/components/ThinkingStrip.d.ts.map +0 -1
  282. package/lib/typescript/components/TypingDots.d.ts.map +0 -1
  283. package/lib/typescript/components/markdownParse.d.ts.map +0 -1
  284. package/lib/typescript/components/markdownParse.test.d.ts.map +0 -1
  285. package/lib/typescript/components/useCopyAction.d.ts.map +0 -1
  286. package/lib/typescript/index.d.ts.map +0 -1
  287. package/lib/typescript/preset.d.ts.map +0 -1
  288. package/lib/typescript/store/activityGroups.d.ts.map +0 -1
  289. package/lib/typescript/store/activityGroups.test.d.ts.map +0 -1
  290. package/lib/typescript/store/askBuoySettings.d.ts.map +0 -1
  291. package/lib/typescript/store/askBuoyStore.d.ts.map +0 -1
  292. package/lib/typescript/store/blockPlacement.d.ts.map +0 -1
  293. package/lib/typescript/store/blockPlacement.test.d.ts.map +0 -1
  294. package/lib/typescript/store/queue.test.d.ts.map +0 -1
  295. package/lib/typescript/store/resetConversation.d.ts.map +0 -1
  296. package/lib/typescript/store/restorePending.test.d.ts.map +0 -1
  297. package/lib/typescript/store/restoredIds.test.d.ts.map +0 -1
  298. package/lib/typescript/store/suggestions.d.ts.map +0 -1
  299. package/lib/typescript/store/suggestions.test.d.ts.map +0 -1
  300. package/lib/typescript/store/systemLine.test.d.ts.map +0 -1
  301. package/lib/typescript/store/ticketPrompt.d.ts.map +0 -1
  302. package/lib/typescript/store/traceText.d.ts.map +0 -1
  303. package/lib/typescript/store/traceText.test.d.ts.map +0 -1
  304. package/lib/typescript/store/transcriptPersistence.d.ts.map +0 -1
  305. package/lib/typescript/store/transcriptPersistence.test.d.ts.map +0 -1
  306. package/lib/typescript/store/turnRendering.test.d.ts.map +0 -1
  307. package/lib/typescript/store/useAskBuoy.d.ts.map +0 -1
  308. package/lib/typescript/store/useAskBuoySettings.d.ts.map +0 -1
  309. package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +0 -1
  310. package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts.map +0 -1
  311. package/lib/typescript/sync/wire.d.ts.map +0 -1
  312. package/lib/typescript/types.d.ts.map +0 -1
@@ -1,239 +1 @@
1
- "use strict";
2
-
3
- /**
4
- * The approval prompt, shown only when the policy asks for a tap.
5
- *
6
- * It renders the EFFECT, not the payload. That is the whole design constraint:
7
- * every other agent product assumes a developer is reading the proposed
8
- * command before approving it, and the people this tool is for cannot evaluate
9
- * `redux_dispatch({type:'SET_ENTITLEMENTS', payload:{…}})`. An approval prompt
10
- * nobody can read is not oversight — it is a rubber stamp that looks like
11
- * oversight, which is worse than having no prompt at all.
12
- *
13
- * WHICH IS WHY THE DETAIL IS COLLAPSED. The card sits between the message list
14
- * and the composer, so its height is taken out of the transcript rather than
15
- * scrolled: a card taller than the sheet pushes its own buttons off the bottom
16
- * with nothing to scroll them back. That is what happened — `description` is
17
- * the catalog summary, written for the MODEL, and zustand's runs to a
18
- * twenty-line paragraph about merge semantics. A prompt you physically cannot
19
- * answer is the worst failure mode this component has.
20
- *
21
- * So the visible card is fixed-height by construction — the title, the effect
22
- * in one line, the consequence in one line, a disclosure, and the buttons —
23
- * and the long text lives behind the disclosure inside a capped scroll box, so
24
- * expanding it can never push the buttons away again either.
25
- */
26
- import { useState } from "react";
27
- import { Pressable, ScrollView, StyleSheet, Text, View } from "react-native";
28
- import { AlertTriangle, ChevronDown, night } from "@buoy-gg/shared-ui";
29
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
30
- export function ApprovalCard({
31
- pending,
32
- onAnswer
33
- }) {
34
- return /*#__PURE__*/_jsxs(View, {
35
- style: styles.card,
36
- testID: "buoy-ask-buoy-approval",
37
- children: [/*#__PURE__*/_jsxs(View, {
38
- style: styles.titleRow,
39
- children: [/*#__PURE__*/_jsx(AlertTriangle, {
40
- size: 14,
41
- color: night.color.warning
42
- }), /*#__PURE__*/_jsx(Text, {
43
- style: styles.title,
44
- children: "Allow this change?"
45
- })]
46
- }), pending.restored ? /*#__PURE__*/_jsx(Text, {
47
- style: styles.restored,
48
- testID: "buoy-ask-buoy-approval-restored",
49
- children: "Asked before the app restarted \u2014 check it still applies."
50
- }) : null, /*#__PURE__*/_jsx(Text, {
51
- style: styles.label,
52
- children: pending.label
53
- }), /*#__PURE__*/_jsx(Text, {
54
- style: styles.reason,
55
- children: pending.reason
56
- }), pending.description ? /*#__PURE__*/_jsx(ApprovalDetails, {
57
- text: pending.description
58
- }) : null, /*#__PURE__*/_jsxs(View, {
59
- style: styles.actions,
60
- children: [/*#__PURE__*/_jsx(Pressable, {
61
- testID: "buoy-ask-buoy-approve",
62
- accessibilityRole: "button",
63
- onPress: () => onAnswer(true),
64
- style: ({
65
- pressed
66
- }) => [styles.button, styles.approve, pressed && styles.pressed],
67
- children: /*#__PURE__*/_jsx(Text, {
68
- style: styles.approveText,
69
- children: "Allow"
70
- })
71
- }), /*#__PURE__*/_jsx(Pressable, {
72
- testID: "buoy-ask-buoy-reject",
73
- accessibilityRole: "button",
74
- onPress: () => onAnswer(false),
75
- style: ({
76
- pressed
77
- }) => [styles.button, styles.reject, pressed && styles.pressed],
78
- children: /*#__PURE__*/_jsx(Text, {
79
- style: styles.rejectText,
80
- children: "Not now"
81
- })
82
- })]
83
- })]
84
- });
85
- }
86
-
87
- /**
88
- * The catalog's own description, behind a disclosure, closed by default.
89
- *
90
- * Owns its open state rather than taking it as a prop: nothing above the card
91
- * needs to know, and answering the prompt unmounts the whole thing anyway.
92
- * One ChevronDown rotated in place, not a swap between two icon components —
93
- * the tree keeps its shape whichever way it is pointing.
94
- */
95
- function ApprovalDetails({
96
- text
97
- }) {
98
- const [open, setOpen] = useState(false);
99
- return /*#__PURE__*/_jsxs(View, {
100
- children: [/*#__PURE__*/_jsxs(Pressable, {
101
- testID: "buoy-ask-buoy-approval-details",
102
- accessibilityRole: "button",
103
- accessibilityState: {
104
- expanded: open
105
- },
106
- onPress: () => setOpen(prev => !prev),
107
- style: ({
108
- pressed
109
- }) => [styles.disclosure, pressed && styles.pressed],
110
- hitSlop: 6,
111
- children: [/*#__PURE__*/_jsx(View, {
112
- style: open ? styles.chevronOpen : styles.chevronClosed,
113
- children: /*#__PURE__*/_jsx(ChevronDown, {
114
- size: 12,
115
- color: night.color.textTertiary
116
- })
117
- }), /*#__PURE__*/_jsx(Text, {
118
- style: styles.disclosureText,
119
- children: open ? "Hide details" : "Details"
120
- })]
121
- }), open ?
122
- /*#__PURE__*/
123
- // Capped and scrollable: the text behind this is unbounded, and the
124
- // buttons below must stay on screen whatever it says.
125
- _jsx(ScrollView, {
126
- style: styles.detail,
127
- contentContainerStyle: styles.detailContent,
128
- nestedScrollEnabled: true,
129
- children: /*#__PURE__*/_jsx(Text, {
130
- style: styles.description,
131
- children: text
132
- })
133
- }) : null]
134
- });
135
- }
136
- const styles = StyleSheet.create({
137
- card: {
138
- marginHorizontal: night.gutter,
139
- marginBottom: 10,
140
- padding: night.cardPad,
141
- borderRadius: night.radius.card,
142
- borderWidth: StyleSheet.hairlineWidth,
143
- borderColor: night.color.accentBorderStrong,
144
- backgroundColor: night.color.surface,
145
- gap: 6
146
- },
147
- titleRow: {
148
- flexDirection: "row",
149
- alignItems: "center",
150
- gap: 6
151
- },
152
- title: {
153
- color: night.color.text,
154
- fontSize: night.font.caption,
155
- fontWeight: "600"
156
- },
157
- label: {
158
- color: night.color.text,
159
- fontSize: night.font.row,
160
- fontWeight: "600",
161
- lineHeight: 20
162
- },
163
- description: {
164
- color: night.color.textSecondary,
165
- fontSize: night.font.caption,
166
- lineHeight: 18
167
- },
168
- reason: {
169
- color: night.color.warning,
170
- fontSize: night.font.caption,
171
- lineHeight: 18
172
- },
173
- restored: {
174
- color: night.color.info,
175
- backgroundColor: night.color.infoSoft,
176
- fontSize: night.font.micro,
177
- lineHeight: 16,
178
- paddingHorizontal: 8,
179
- paddingVertical: 5,
180
- borderRadius: 8
181
- },
182
- disclosure: {
183
- flexDirection: "row",
184
- alignItems: "center",
185
- gap: 4,
186
- paddingVertical: 4
187
- },
188
- disclosureText: {
189
- color: night.color.textTertiary,
190
- fontSize: night.font.micro,
191
- fontWeight: "600"
192
- },
193
- chevronOpen: {
194
- transform: [{
195
- rotate: "0deg"
196
- }]
197
- },
198
- chevronClosed: {
199
- transform: [{
200
- rotate: "-90deg"
201
- }]
202
- },
203
- detail: {
204
- maxHeight: 150,
205
- marginTop: 2
206
- },
207
- detailContent: {
208
- paddingBottom: 2
209
- },
210
- actions: {
211
- flexDirection: "row",
212
- gap: 8,
213
- marginTop: 6
214
- },
215
- button: {
216
- paddingHorizontal: 16,
217
- paddingVertical: 9,
218
- borderRadius: night.radius.row
219
- },
220
- approve: {
221
- backgroundColor: night.color.accent
222
- },
223
- approveText: {
224
- color: night.color.onAccent,
225
- fontWeight: "600",
226
- fontSize: night.font.caption
227
- },
228
- reject: {
229
- backgroundColor: night.color.button
230
- },
231
- rejectText: {
232
- color: night.color.text,
233
- fontSize: night.font.caption
234
- },
235
- pressed: {
236
- opacity: 0.7
237
- }
238
- });
239
- //# sourceMappingURL=ApprovalCard.js.map
1
+ "use strict";import{useState}from"react";import{Pressable,ScrollView,StyleSheet,Text,TextInput,View}from"react-native";import{AlertTriangle,ChevronDown,night}from"@buoy-gg/shared-ui";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function ApprovalCard({pending:e,onAnswer:t}){const[o,r]=useState("");return _jsxs(View,{style:styles.card,testID:"buoy-ask-buoy-approval",children:[_jsxs(View,{style:styles.titleRow,children:[_jsx(AlertTriangle,{size:14,color:night.color.warning}),_jsx(Text,{style:styles.title,children:"Allow this change?"})]}),e.restored?_jsx(Text,{style:styles.restored,testID:"buoy-ask-buoy-approval-restored",children:"Asked before the app restarted — check it still applies."}):null,_jsx(Text,{style:styles.label,children:e.label}),_jsx(Text,{style:styles.reason,children:e.reason}),e.description?_jsx(ApprovalDetails,{text:e.description}):null,_jsx(TextInput,{testID:"buoy-ask-buoy-approval-note",value:o,onChangeText:r,placeholder:"Add a note for the agent (optional)",placeholderTextColor:night.color.textTertiary,style:styles.note,returnKeyType:"done",blurOnSubmit:!0}),_jsxs(View,{style:styles.actions,children:[_jsx(Pressable,{testID:"buoy-ask-buoy-approve",accessibilityRole:"button",onPress:()=>t({approved:!0,reason:o}),style:({pressed:e})=>[styles.button,styles.approve,e&&styles.pressed],children:_jsx(Text,{style:styles.approveText,children:"Allow"})}),e.restored?null:_jsx(Pressable,{testID:"buoy-ask-buoy-approve-trust",accessibilityRole:"button",onPress:()=>t({approved:!0,reason:o,trust:!0}),style:({pressed:e})=>[styles.button,styles.trust,e&&styles.pressed],children:_jsx(Text,{style:styles.trustText,children:"Allow for this chat"})}),_jsx(Pressable,{testID:"buoy-ask-buoy-reject",accessibilityRole:"button",onPress:()=>t({approved:!1,reason:o}),style:({pressed:e})=>[styles.button,styles.reject,e&&styles.pressed],children:_jsx(Text,{style:styles.rejectText,children:"Not now"})})]})]})}function ApprovalDetails({text:e}){const[t,o]=useState(!1);return _jsxs(View,{children:[_jsxs(Pressable,{testID:"buoy-ask-buoy-approval-details",accessibilityRole:"button",accessibilityState:{expanded:t},onPress:()=>o(e=>!e),style:({pressed:e})=>[styles.disclosure,e&&styles.pressed],hitSlop:6,children:[_jsx(View,{style:t?styles.chevronOpen:styles.chevronClosed,children:_jsx(ChevronDown,{size:12,color:night.color.textTertiary})}),_jsx(Text,{style:styles.disclosureText,children:t?"Hide details":"Details"})]}),t?_jsx(ScrollView,{style:styles.detail,contentContainerStyle:styles.detailContent,nestedScrollEnabled:!0,children:_jsx(Text,{style:styles.description,children:e})}):null]})}const styles=StyleSheet.create({card:{marginHorizontal:night.gutter,marginBottom:10,padding:night.cardPad,borderRadius:night.radius.card,borderWidth:StyleSheet.hairlineWidth,borderColor:night.color.accentBorderStrong,backgroundColor:night.color.surface,gap:6},titleRow:{flexDirection:"row",alignItems:"center",gap:6},title:{color:night.color.text,fontSize:night.font.caption,fontWeight:"600"},label:{color:night.color.text,fontSize:night.font.row,fontWeight:"600",lineHeight:20},description:{color:night.color.textSecondary,fontSize:night.font.caption,lineHeight:18},reason:{color:night.color.warning,fontSize:night.font.caption,lineHeight:18},restored:{color:night.color.info,backgroundColor:night.color.infoSoft,fontSize:night.font.micro,lineHeight:16,paddingHorizontal:8,paddingVertical:5,borderRadius:8},disclosure:{flexDirection:"row",alignItems:"center",gap:4,paddingVertical:4},disclosureText:{color:night.color.textTertiary,fontSize:night.font.micro,fontWeight:"600"},chevronOpen:{transform:[{rotate:"0deg"}]},chevronClosed:{transform:[{rotate:"-90deg"}]},detail:{maxHeight:150,marginTop:2},detailContent:{paddingBottom:2},note:{color:night.color.text,fontSize:night.font.caption,paddingHorizontal:10,paddingVertical:7,borderRadius:night.radius.row,borderWidth:StyleSheet.hairlineWidth,borderColor:night.color.border,backgroundColor:night.color.button,marginTop:2},actions:{flexDirection:"row",flexWrap:"wrap",gap:8,marginTop:6},button:{paddingHorizontal:16,paddingVertical:9,borderRadius:night.radius.row},approve:{backgroundColor:night.color.accent},approveText:{color:night.color.onAccent,fontWeight:"600",fontSize:night.font.caption},trust:{backgroundColor:night.color.button,borderWidth:StyleSheet.hairlineWidth,borderColor:night.color.accentBorderStrong},trustText:{color:night.color.accent,fontWeight:"600",fontSize:night.font.caption},reject:{backgroundColor:night.color.button},rejectText:{color:night.color.text,fontSize:night.font.caption},pressed:{opacity:.7}});
@@ -1,193 +1 @@
1
- "use strict";
2
-
3
- /**
4
- * The sheet header.
5
- *
6
- * Built on the shared `ModalHeader` so it matches Console, Network and Events
7
- * 1:1 — the stock JsModal header was designed for a single centred title and
8
- * paints its "Double tap: Toggle • Triple tap: Close" hint through the middle
9
- * of it, which is how "Ask Buoy" ended up overprinted by grey italics.
10
- *
11
- * The subtitle is the one piece of live status the sheet has: what the agent
12
- * is doing right now, in words a tester can act on. "Thinking…" while a
13
- * response is streaming with no tool in flight, the current tool's title
14
- * while one runs, and the reachable tool count at rest so a "why can't it
15
- * see my network calls" question has an answer in the header.
16
- *
17
- * "New conversation" moved up here from a 11pt text link under the composer.
18
- * A reset that lives under the keyboard is a reset nobody finds. Copy sits
19
- * beside it for the same reason: the transcript actions under the newest
20
- * answer are only reachable once you have scrolled back down to it.
21
- */
22
- import { useEffect, useState } from "react";
23
- import { StyleSheet, TouchableOpacity, View } from "react-native";
24
- import { Check, Copy, FileText, ModalHeader, night, Otto, Plus, SettingsSolid } from "@buoy-gg/shared-ui";
25
- import { useCopyAction } from "./useCopyAction";
26
- import { formatElapsed } from "../store/activityGroups";
27
-
28
- /**
29
- * Slower than the sprite's default 140ms.
30
- *
31
- * This mascot is ambient status a user stares at for the length of a turn,
32
- * not a moment of delight they glance at once — at the stock tick it read as
33
- * fidgeting in the corner of the eye while you were trying to read the
34
- * answer next to it. Every other placement keeps the default.
35
- */
36
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
37
- const HEADER_TICK_MS = 200;
38
-
39
- /** No conversation to copy — the button is left out rather than left dead. */
40
- const NO_TRANSCRIPT = () => "";
41
- export function AskBuoyHeader({
42
- configured,
43
- busy,
44
- failed = false,
45
- activeLabel,
46
- awaitingApproval = false,
47
- startedAt = null,
48
- stopping = false,
49
- readOnly = false,
50
- toolCount,
51
- hasMessages,
52
- onBack,
53
- onReset,
54
- getTranscript,
55
- onOpenSettings,
56
- onTicket
57
- }) {
58
- const {
59
- copied,
60
- copy
61
- } = useCopyAction(getTranscript ?? NO_TRANSCRIPT);
62
-
63
- /**
64
- * ONE mascot state per turn, held to the end of it.
65
- *
66
- * `activeLabel` drops to null in the gap between two tool calls, so deriving
67
- * the state from it directly flipped robot → thinking → robot on every
68
- * boundary. A turn that runs four tools swapped the sprite eight times in
69
- * about three seconds — a strobe that reads as a glitch, not as progress.
70
- * So the robot latches: once this turn has driven a tool it stays `robot`
71
- * until the turn ends, which is also the honest summary of that turn.
72
- *
73
- * The SUBTITLE still tracks each call, because updating a line of text is
74
- * informative where restarting an animation is just noise.
75
- */
76
- const [droveTool, setDroveTool] = useState(false);
77
- useEffect(() => {
78
- if (!busy) setDroveTool(false);else if (activeLabel) setDroveTool(true);
79
- }, [busy, activeLabel]);
80
-
81
- /**
82
- * The elapsed clock. Ticks only while a turn is running and not parked on
83
- * the user (nothing is elapsing while an approval card waits for a tap).
84
- */
85
- const ticking = busy && !awaitingApproval && startedAt !== null;
86
- const [now, setNow] = useState(() => Date.now());
87
- useEffect(() => {
88
- if (!ticking) return;
89
- setNow(Date.now());
90
- const timer = setInterval(() => setNow(Date.now()), 1000);
91
- return () => clearInterval(timer);
92
- }, [ticking]);
93
- const elapsed = ticking && startedAt !== null ? formatElapsed(now - startedAt) : null;
94
-
95
- /**
96
- * Otto mirrors the subtitle, never contradicts it. This is the one place in
97
- * the product where a mascot earns continuous presence: the user is waiting
98
- * on a machine and the header is the only thing reporting on it.
99
- *
100
- * `robot` while a tool runs is literal — the agent IS driving the tools.
101
- */
102
- const otto = !configured ? "confused" : failed ? "error" : busy ? activeLabel || droveTool ? "robot" : "thinking" : "idle";
103
- const working = stopping ? "Stopping" : activeLabel ?? "Thinking";
104
- const subtitle = !configured ? "Not set up in this app" : awaitingApproval ? "Waiting for you" : busy ? elapsed ? `${working} · ${elapsed}` : `${working}…` : readOnly ? `Read only${toolCount > 0 ? ` · ${toolCount} tool${toolCount === 1 ? "" : "s"}` : ""}` : toolCount > 0 ? `Ready · ${toolCount} tool${toolCount === 1 ? "" : "s"} available` : "Ready";
105
- return /*#__PURE__*/_jsxs(ModalHeader, {
106
- children: [onBack ? /*#__PURE__*/_jsx(ModalHeader.Navigation, {
107
- onBack: onBack
108
- }) : null, /*#__PURE__*/_jsx(View, {
109
- style: styles.otto,
110
- testID: "buoy-ask-buoy-otto",
111
- children: /*#__PURE__*/_jsx(Otto, {
112
- state: otto,
113
- pixelSize: 2,
114
- tickMs: HEADER_TICK_MS,
115
- water: false
116
- })
117
- }), /*#__PURE__*/_jsx(ModalHeader.Content, {
118
- title: "Ask Buoy",
119
- subtitle: subtitle,
120
- testID: "buoy-ask-buoy-title"
121
- }), /*#__PURE__*/_jsxs(ModalHeader.Actions, {
122
- children: [onTicket ? /*#__PURE__*/_jsx(TouchableOpacity, {
123
- testID: "buoy-ask-buoy-ticket",
124
- accessibilityRole: "button",
125
- accessibilityLabel: "Summarize for a ticket",
126
- disabled: !hasMessages || busy,
127
- onPress: onTicket,
128
- style: [styles.actionBtn, (!hasMessages || busy) && styles.actionBtnDisabled],
129
- children: /*#__PURE__*/_jsx(FileText, {
130
- size: 14,
131
- color: hasMessages && !busy ? night.color.textSecondary : night.color.textTertiary
132
- })
133
- }) : null, getTranscript ? /*#__PURE__*/_jsx(TouchableOpacity, {
134
- testID: "buoy-ask-buoy-copy-chat",
135
- accessibilityRole: "button",
136
- accessibilityLabel: copied ? "Conversation copied" : "Copy conversation",
137
- disabled: !hasMessages,
138
- onPress: copy,
139
- style: [styles.actionBtn, !hasMessages && styles.actionBtnDisabled],
140
- children: copied ? /*#__PURE__*/_jsx(Check, {
141
- size: 14,
142
- color: night.color.accent
143
- }) : /*#__PURE__*/_jsx(Copy, {
144
- size: 14,
145
- color: hasMessages ? night.color.textSecondary : night.color.textTertiary
146
- })
147
- }) : null, onOpenSettings ? /*#__PURE__*/_jsx(TouchableOpacity, {
148
- testID: "buoy-ask-buoy-settings",
149
- accessibilityRole: "button",
150
- accessibilityLabel: "Settings",
151
- onPress: onOpenSettings,
152
- style: styles.actionBtn,
153
- children: /*#__PURE__*/_jsx(SettingsSolid, {
154
- size: 14,
155
- color: night.color.textSecondary
156
- })
157
- }) : null, /*#__PURE__*/_jsx(TouchableOpacity, {
158
- testID: "buoy-ask-buoy-reset",
159
- accessibilityRole: "button",
160
- accessibilityLabel: "New conversation",
161
- disabled: !hasMessages,
162
- onPress: onReset,
163
- style: [styles.actionBtn, !hasMessages && styles.actionBtnDisabled],
164
- children: /*#__PURE__*/_jsx(Plus, {
165
- size: 14,
166
- color: hasMessages ? night.color.textSecondary : night.color.textTertiary
167
- })
168
- })]
169
- })]
170
- });
171
- }
172
- const styles = StyleSheet.create({
173
- // 32pt of Otto (16 grid × 2pt) reading as the header's status glyph.
174
- otto: {
175
- marginRight: 8,
176
- justifyContent: "center"
177
- },
178
- // Same plate as the Console header's action buttons.
179
- actionBtn: {
180
- width: 32,
181
- height: 32,
182
- borderRadius: 8,
183
- backgroundColor: night.color.buttonSurface,
184
- borderWidth: 1,
185
- borderColor: night.color.border,
186
- alignItems: "center",
187
- justifyContent: "center"
188
- },
189
- actionBtnDisabled: {
190
- opacity: 0.55
191
- }
192
- });
193
- //# sourceMappingURL=AskBuoyHeader.js.map
1
+ "use strict";import{useEffect,useState}from"react";import{StyleSheet,TouchableOpacity,View}from"react-native";import{Check,Copy,FileText,ModalHeader,night,Otto,Plus,SettingsSolid}from"@buoy-gg/shared-ui";import{useCopyAction}from"./useCopyAction";import{formatElapsed}from"../store/activityGroups";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const HEADER_TICK_MS=200,NO_TRANSCRIPT=()=>"";export function AskBuoyHeader({configured:t,busy:e,failed:o=!1,activeLabel:s,awaitingApproval:i=!1,startedAt:n=null,stopping:a=!1,readOnly:l=!1,toolCount:c,hasMessages:r,onBack:y,onReset:u,getTranscript:d,onOpenSettings:b,onTicket:h}){const{copied:p,copy:g}=useCopyAction(d??NO_TRANSCRIPT),[x,f]=useState(!1);useEffect(()=>{e?s&&f(!0):f(!1)},[e,s]);const S=e&&!i&&null!==n,[j,_]=useState(()=>Date.now());useEffect(()=>{if(!S)return;_(Date.now());const t=setInterval(()=>_(Date.now()),1e3);return()=>clearInterval(t)},[S]);const k=S&&null!==n?formatElapsed(j-n):null,m=t?o?"error":e?s||x?"robot":"thinking":"idle":"confused",C=a?"Stopping":s??"Thinking",T=t?i?"Waiting for you":e?k?`${C} · ${k}`:`${C}…`:l?"Read only"+(c>0?` · ${c} tool${1===c?"":"s"}`:""):c>0?`Ready · ${c} tool${1===c?"":"s"} available`:"Ready":"Not set up in this app";return _jsxs(ModalHeader,{children:[y?_jsx(ModalHeader.Navigation,{onBack:y}):null,_jsx(View,{style:styles.otto,testID:"buoy-ask-buoy-otto",children:_jsx(Otto,{state:m,pixelSize:2,tickMs:200,water:!1})}),_jsx(ModalHeader.Content,{title:"Ask Buoy",subtitle:T,testID:"buoy-ask-buoy-title"}),_jsxs(ModalHeader.Actions,{children:[h?_jsx(TouchableOpacity,{testID:"buoy-ask-buoy-ticket",accessibilityRole:"button",accessibilityLabel:"Summarize for a ticket",disabled:!r||e,onPress:h,style:[styles.actionBtn,(!r||e)&&styles.actionBtnDisabled],children:_jsx(FileText,{size:14,color:r&&!e?night.color.textSecondary:night.color.textTertiary})}):null,d?_jsx(TouchableOpacity,{testID:"buoy-ask-buoy-copy-chat",accessibilityRole:"button",accessibilityLabel:p?"Conversation copied":"Copy conversation",disabled:!r,onPress:g,style:[styles.actionBtn,!r&&styles.actionBtnDisabled],children:p?_jsx(Check,{size:14,color:night.color.accent}):_jsx(Copy,{size:14,color:r?night.color.textSecondary:night.color.textTertiary})}):null,b?_jsx(TouchableOpacity,{testID:"buoy-ask-buoy-settings",accessibilityRole:"button",accessibilityLabel:"Settings",onPress:b,style:styles.actionBtn,children:_jsx(SettingsSolid,{size:14,color:night.color.textSecondary})}):null,_jsx(TouchableOpacity,{testID:"buoy-ask-buoy-reset",accessibilityRole:"button",accessibilityLabel:"New conversation",disabled:!r,onPress:u,style:[styles.actionBtn,!r&&styles.actionBtnDisabled],children:_jsx(Plus,{size:14,color:r?night.color.textSecondary:night.color.textTertiary})})]})]})}const styles=StyleSheet.create({otto:{marginRight:8,justifyContent:"center"},actionBtn:{width:32,height:32,borderRadius:8,backgroundColor:night.color.buttonSurface,borderWidth:1,borderColor:night.color.border,alignItems:"center",justifyContent:"center"},actionBtnDisabled:{opacity:.55}});
@@ -1,8 +1 @@
1
- "use strict";
2
-
3
- /**
4
- * Re-exported from floating-tools-core so the tool package has one import
5
- * surface, matching how every other Buoy tool exposes its icon.
6
- */
7
- export { AskBuoyIcon, ASK_BUOY_ICON_COLOR } from "@buoy-gg/floating-tools-core";
8
- //# sourceMappingURL=AskBuoyIcon.js.map
1
+ "use strict";export{AskBuoyIcon,ASK_BUOY_ICON_COLOR}from"@buoy-gg/floating-tools-core";