@buoy-gg/shared-ui 7.0.39 → 7.0.41

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 (377) hide show
  1. package/README.md +6 -0
  2. package/lib/commonjs/JsModal.js +13 -61
  3. package/lib/commonjs/JsModal.web.js +32 -95
  4. package/lib/commonjs/clipboard/autoDetectClipboard.js +1 -1
  5. package/lib/commonjs/clipboard/clipboard-impl.web.js +21 -0
  6. package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +4 -2
  7. package/lib/commonjs/hooks/index.js +1 -1
  8. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  9. package/lib/commonjs/hooks/usePersistedState.js +1 -1
  10. package/lib/commonjs/hooks/useSafeAreaInsets.web.js +41 -0
  11. package/lib/commonjs/icons/index.js +14 -0
  12. package/lib/commonjs/index.js +34 -0
  13. package/lib/commonjs/license/AccountSetup.js +4 -25
  14. package/lib/commonjs/license/AccountSetup.web.js +78 -64
  15. package/lib/commonjs/license/AccountSetupContent.js +482 -0
  16. package/lib/commonjs/license/FreeAccountPrompt.js +32 -178
  17. package/lib/commonjs/license/LicenseEntryModal.js +5 -12
  18. package/lib/commonjs/license/accountRuntime.js +8 -0
  19. package/lib/commonjs/license/accountRuntime.web.js +9 -0
  20. package/lib/commonjs/license/licenseModule.js +2 -0
  21. package/lib/commonjs/settings/components/BubbleSettingsSection.js +1 -1
  22. package/lib/commonjs/storage/definePersistedSetting.js +1 -1
  23. package/lib/commonjs/stores/ignoredPatternsCore.js +8 -1
  24. package/lib/commonjs/stores/ignoredPatternsStore.js +10 -199
  25. package/lib/commonjs/stores/ignoredPatternsStore.shared.js +205 -0
  26. package/lib/commonjs/stores/ignoredPatternsStore.web.js +10 -230
  27. package/lib/commonjs/ui/backgrounds/backgroundStore.js +1 -1
  28. package/lib/commonjs/ui/backgrounds/variants/wormhole.js +3 -0
  29. package/lib/commonjs/ui/components/CopyButton.js +1 -1
  30. package/lib/commonjs/ui/components/EventStepperFooter.js +1 -1
  31. package/lib/commonjs/ui/components/ToolFooter.js +1 -1
  32. package/lib/commonjs/ui/floating/FloatingTool.web.js +12 -2
  33. package/lib/commonjs/ui/night/primitives.js +10 -3
  34. package/lib/commonjs/ui/otto/OttoSprite.js +1 -1
  35. package/lib/commonjs/utils/browserAsyncStorage.js +157 -0
  36. package/lib/commonjs/utils/browserNavigation.js +116 -0
  37. package/lib/commonjs/utils/devServer.js +8 -4
  38. package/lib/commonjs/utils/devServer.web.js +10 -0
  39. package/lib/commonjs/utils/domRuntime.js +143 -0
  40. package/lib/commonjs/utils/expoRouterModule.js +51 -0
  41. package/lib/commonjs/utils/expoRouterModule.web.js +14 -0
  42. package/lib/commonjs/utils/getSafeAreaInsets.web.js +35 -0
  43. package/lib/commonjs/utils/index.js +111 -4
  44. package/lib/commonjs/utils/loadToolModule.js +46 -0
  45. package/lib/commonjs/utils/loadToolModule.web.js +12 -0
  46. package/lib/commonjs/utils/modalStorage.js +42 -0
  47. package/lib/commonjs/utils/nativeWeb.js +454 -0
  48. package/lib/commonjs/utils/persistentStorage.web.js +78 -0
  49. package/lib/commonjs/utils/reloadApp.js +18 -57
  50. package/lib/commonjs/utils/reloadPlatform.js +37 -0
  51. package/lib/commonjs/utils/reloadPlatform.web.js +17 -0
  52. package/lib/commonjs/utils/safeExpoRouter.js +3 -53
  53. package/lib/commonjs/utils/safeExpoRouter.web.js +48 -0
  54. package/lib/commonjs/utils/toolModules.js +25 -0
  55. package/lib/module/JsModal.js +11 -59
  56. package/lib/module/JsModal.web.js +28 -91
  57. package/lib/module/clipboard/autoDetectClipboard.js +2 -2
  58. package/lib/module/clipboard/clipboard-impl.web.js +14 -0
  59. package/lib/module/dataViewer/tree/TreeDiffViewer.js +4 -2
  60. package/lib/module/hooks/index.js +2 -2
  61. package/lib/module/hooks/safe-area-impl.js +1 -1
  62. package/lib/module/hooks/usePersistedState.js +1 -1
  63. package/lib/module/hooks/useSafeAreaInsets.web.js +30 -0
  64. package/lib/module/icons/index.js +2 -1
  65. package/lib/module/index.js +3 -0
  66. package/lib/module/license/AccountSetup.js +5 -26
  67. package/lib/module/license/AccountSetup.web.js +79 -65
  68. package/lib/module/license/AccountSetupContent.js +476 -0
  69. package/lib/module/license/FreeAccountPrompt.js +27 -176
  70. package/lib/module/license/LicenseEntryModal.js +6 -13
  71. package/lib/module/license/accountRuntime.js +3 -0
  72. package/lib/module/license/accountRuntime.web.js +4 -0
  73. package/lib/module/license/licenseModule.js +2 -0
  74. package/lib/module/settings/components/BubbleSettingsSection.js +1 -1
  75. package/lib/module/storage/definePersistedSetting.js +1 -1
  76. package/lib/module/stores/ignoredPatternsCore.js +8 -1
  77. package/lib/module/stores/ignoredPatternsStore.js +1 -187
  78. package/lib/module/stores/ignoredPatternsStore.shared.js +189 -0
  79. package/lib/module/stores/ignoredPatternsStore.web.js +1 -219
  80. package/lib/module/ui/backgrounds/backgroundStore.js +1 -1
  81. package/lib/module/ui/backgrounds/variants/wormhole.js +3 -0
  82. package/lib/module/ui/components/CopyButton.js +1 -1
  83. package/lib/module/ui/components/EventStepperFooter.js +1 -1
  84. package/lib/module/ui/components/ToolFooter.js +1 -1
  85. package/lib/module/ui/floating/FloatingTool.web.js +12 -2
  86. package/lib/module/ui/night/primitives.js +11 -4
  87. package/lib/module/ui/otto/OttoSprite.js +1 -1
  88. package/lib/module/utils/browserAsyncStorage.js +151 -0
  89. package/lib/module/utils/browserNavigation.js +108 -0
  90. package/lib/module/utils/devServer.js +8 -4
  91. package/lib/module/utils/devServer.web.js +6 -0
  92. package/lib/module/utils/domRuntime.js +134 -0
  93. package/lib/module/utils/expoRouterModule.js +46 -0
  94. package/lib/module/utils/expoRouterModule.web.js +9 -0
  95. package/lib/module/utils/getSafeAreaInsets.web.js +31 -0
  96. package/lib/module/utils/index.js +9 -4
  97. package/lib/module/utils/loadToolModule.js +42 -0
  98. package/lib/module/utils/loadToolModule.web.js +8 -0
  99. package/lib/module/utils/modalStorage.js +37 -0
  100. package/lib/module/utils/nativeWeb.js +107 -0
  101. package/lib/module/utils/persistentStorage.web.js +72 -0
  102. package/lib/module/utils/reloadApp.js +13 -51
  103. package/lib/module/utils/reloadPlatform.js +31 -0
  104. package/lib/module/utils/reloadPlatform.web.js +11 -0
  105. package/lib/module/utils/safeExpoRouter.js +3 -53
  106. package/lib/module/utils/safeExpoRouter.web.js +37 -0
  107. package/lib/module/utils/toolModules.js +19 -0
  108. package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/JsModal.web.d.ts +7 -18
  110. package/lib/typescript/commonjs/JsModal.web.d.ts.map +1 -1
  111. package/lib/typescript/commonjs/clipboard/clipboard-impl.web.d.ts +5 -0
  112. package/lib/typescript/commonjs/clipboard/clipboard-impl.web.d.ts.map +1 -0
  113. package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  115. package/lib/typescript/commonjs/hooks/useSafeAreaInsets.web.d.ts +6 -0
  116. package/lib/typescript/commonjs/hooks/useSafeAreaInsets.web.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/icons/index.d.ts +1 -0
  118. package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/index.d.ts +2 -0
  120. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/license/AccountSetup.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/license/AccountSetup.web.d.ts +1 -1
  123. package/lib/typescript/commonjs/license/AccountSetup.web.d.ts.map +1 -1
  124. package/lib/typescript/commonjs/license/AccountSetupContent.d.ts +11 -0
  125. package/lib/typescript/commonjs/license/AccountSetupContent.d.ts.map +1 -0
  126. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts +3 -15
  127. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/license/accountRuntime.d.ts +2 -0
  130. package/lib/typescript/commonjs/license/accountRuntime.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/license/accountRuntime.web.d.ts +2 -0
  132. package/lib/typescript/commonjs/license/accountRuntime.web.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/license/licenseModule.d.ts +3 -1
  134. package/lib/typescript/commonjs/license/licenseModule.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/stores/ignoredPatternsCore.d.ts +5 -1
  136. package/lib/typescript/commonjs/stores/ignoredPatternsCore.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts +1 -59
  138. package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/stores/ignoredPatternsStore.shared.d.ts +60 -0
  140. package/lib/typescript/commonjs/stores/ignoredPatternsStore.shared.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts +1 -71
  142. package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts.map +1 -1
  144. package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts +1 -1
  146. package/lib/typescript/commonjs/utils/browserAsyncStorage.d.ts +25 -0
  147. package/lib/typescript/commonjs/utils/browserAsyncStorage.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/utils/browserNavigation.d.ts +31 -0
  149. package/lib/typescript/commonjs/utils/browserNavigation.d.ts.map +1 -0
  150. package/lib/typescript/commonjs/utils/devServer.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/utils/devServer.web.d.ts +2 -0
  152. package/lib/typescript/commonjs/utils/devServer.web.d.ts.map +1 -0
  153. package/lib/typescript/commonjs/utils/domRuntime.d.ts +27 -0
  154. package/lib/typescript/commonjs/utils/domRuntime.d.ts.map +1 -0
  155. package/lib/typescript/commonjs/utils/expoRouterModule.d.ts +3 -0
  156. package/lib/typescript/commonjs/utils/expoRouterModule.d.ts.map +1 -0
  157. package/lib/typescript/commonjs/utils/expoRouterModule.web.d.ts +3 -0
  158. package/lib/typescript/commonjs/utils/expoRouterModule.web.d.ts.map +1 -0
  159. package/lib/typescript/commonjs/utils/getSafeAreaInsets.web.d.ts +8 -0
  160. package/lib/typescript/commonjs/utils/getSafeAreaInsets.web.d.ts.map +1 -0
  161. package/lib/typescript/commonjs/utils/index.d.ts +5 -0
  162. package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
  163. package/lib/typescript/commonjs/utils/loadToolModule.d.ts +3 -0
  164. package/lib/typescript/commonjs/utils/loadToolModule.d.ts.map +1 -0
  165. package/lib/typescript/commonjs/utils/loadToolModule.web.d.ts +2 -0
  166. package/lib/typescript/commonjs/utils/loadToolModule.web.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/utils/modalStorage.d.ts +21 -0
  168. package/lib/typescript/commonjs/utils/modalStorage.d.ts.map +1 -0
  169. package/lib/typescript/commonjs/utils/nativeWeb.d.ts +22 -0
  170. package/lib/typescript/commonjs/utils/nativeWeb.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/utils/persistentStorage.web.d.ts +6 -0
  172. package/lib/typescript/commonjs/utils/persistentStorage.web.d.ts.map +1 -0
  173. package/lib/typescript/commonjs/utils/reloadApp.d.ts +7 -25
  174. package/lib/typescript/commonjs/utils/reloadApp.d.ts.map +1 -1
  175. package/lib/typescript/commonjs/utils/reloadPlatform.d.ts +8 -0
  176. package/lib/typescript/commonjs/utils/reloadPlatform.d.ts.map +1 -0
  177. package/lib/typescript/commonjs/utils/reloadPlatform.web.d.ts +4 -0
  178. package/lib/typescript/commonjs/utils/reloadPlatform.web.d.ts.map +1 -0
  179. package/lib/typescript/commonjs/utils/safeExpoRouter.d.ts.map +1 -1
  180. package/lib/typescript/commonjs/utils/safeExpoRouter.web.d.ts +43 -0
  181. package/lib/typescript/commonjs/utils/safeExpoRouter.web.d.ts.map +1 -0
  182. package/lib/typescript/commonjs/utils/toolModules.d.ts +5 -0
  183. package/lib/typescript/commonjs/utils/toolModules.d.ts.map +1 -0
  184. package/lib/typescript/module/JsModal.d.ts.map +1 -1
  185. package/lib/typescript/module/JsModal.web.d.ts +7 -18
  186. package/lib/typescript/module/JsModal.web.d.ts.map +1 -1
  187. package/lib/typescript/module/clipboard/clipboard-impl.web.d.ts +5 -0
  188. package/lib/typescript/module/clipboard/clipboard-impl.web.d.ts.map +1 -0
  189. package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  190. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  191. package/lib/typescript/module/hooks/useSafeAreaInsets.web.d.ts +6 -0
  192. package/lib/typescript/module/hooks/useSafeAreaInsets.web.d.ts.map +1 -0
  193. package/lib/typescript/module/icons/index.d.ts +1 -0
  194. package/lib/typescript/module/icons/index.d.ts.map +1 -1
  195. package/lib/typescript/module/index.d.ts +2 -0
  196. package/lib/typescript/module/index.d.ts.map +1 -1
  197. package/lib/typescript/module/license/AccountSetup.d.ts.map +1 -1
  198. package/lib/typescript/module/license/AccountSetup.web.d.ts +1 -1
  199. package/lib/typescript/module/license/AccountSetup.web.d.ts.map +1 -1
  200. package/lib/typescript/module/license/AccountSetupContent.d.ts +11 -0
  201. package/lib/typescript/module/license/AccountSetupContent.d.ts.map +1 -0
  202. package/lib/typescript/module/license/FreeAccountPrompt.d.ts +3 -15
  203. package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +1 -1
  204. package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +1 -1
  205. package/lib/typescript/module/license/accountRuntime.d.ts +2 -0
  206. package/lib/typescript/module/license/accountRuntime.d.ts.map +1 -0
  207. package/lib/typescript/module/license/accountRuntime.web.d.ts +2 -0
  208. package/lib/typescript/module/license/accountRuntime.web.d.ts.map +1 -0
  209. package/lib/typescript/module/license/licenseModule.d.ts +3 -1
  210. package/lib/typescript/module/license/licenseModule.d.ts.map +1 -1
  211. package/lib/typescript/module/stores/ignoredPatternsCore.d.ts +5 -1
  212. package/lib/typescript/module/stores/ignoredPatternsCore.d.ts.map +1 -1
  213. package/lib/typescript/module/stores/ignoredPatternsStore.d.ts +1 -59
  214. package/lib/typescript/module/stores/ignoredPatternsStore.d.ts.map +1 -1
  215. package/lib/typescript/module/stores/ignoredPatternsStore.shared.d.ts +60 -0
  216. package/lib/typescript/module/stores/ignoredPatternsStore.shared.d.ts.map +1 -0
  217. package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts +1 -71
  218. package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts.map +1 -1
  219. package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts.map +1 -1
  220. package/lib/typescript/module/ui/night/primitives.d.ts.map +1 -1
  221. package/lib/typescript/module/ui/otto/ottoEngine.d.ts +1 -1
  222. package/lib/typescript/module/utils/browserAsyncStorage.d.ts +25 -0
  223. package/lib/typescript/module/utils/browserAsyncStorage.d.ts.map +1 -0
  224. package/lib/typescript/module/utils/browserNavigation.d.ts +31 -0
  225. package/lib/typescript/module/utils/browserNavigation.d.ts.map +1 -0
  226. package/lib/typescript/module/utils/devServer.d.ts.map +1 -1
  227. package/lib/typescript/module/utils/devServer.web.d.ts +2 -0
  228. package/lib/typescript/module/utils/devServer.web.d.ts.map +1 -0
  229. package/lib/typescript/module/utils/domRuntime.d.ts +27 -0
  230. package/lib/typescript/module/utils/domRuntime.d.ts.map +1 -0
  231. package/lib/typescript/module/utils/expoRouterModule.d.ts +3 -0
  232. package/lib/typescript/module/utils/expoRouterModule.d.ts.map +1 -0
  233. package/lib/typescript/module/utils/expoRouterModule.web.d.ts +3 -0
  234. package/lib/typescript/module/utils/expoRouterModule.web.d.ts.map +1 -0
  235. package/lib/typescript/module/utils/getSafeAreaInsets.web.d.ts +8 -0
  236. package/lib/typescript/module/utils/getSafeAreaInsets.web.d.ts.map +1 -0
  237. package/lib/typescript/module/utils/index.d.ts +5 -0
  238. package/lib/typescript/module/utils/index.d.ts.map +1 -1
  239. package/lib/typescript/module/utils/loadToolModule.d.ts +3 -0
  240. package/lib/typescript/module/utils/loadToolModule.d.ts.map +1 -0
  241. package/lib/typescript/module/utils/loadToolModule.web.d.ts +2 -0
  242. package/lib/typescript/module/utils/loadToolModule.web.d.ts.map +1 -0
  243. package/lib/typescript/module/utils/modalStorage.d.ts +21 -0
  244. package/lib/typescript/module/utils/modalStorage.d.ts.map +1 -0
  245. package/lib/typescript/module/utils/nativeWeb.d.ts +22 -0
  246. package/lib/typescript/module/utils/nativeWeb.d.ts.map +1 -0
  247. package/lib/typescript/module/utils/persistentStorage.web.d.ts +6 -0
  248. package/lib/typescript/module/utils/persistentStorage.web.d.ts.map +1 -0
  249. package/lib/typescript/module/utils/reloadApp.d.ts +7 -25
  250. package/lib/typescript/module/utils/reloadApp.d.ts.map +1 -1
  251. package/lib/typescript/module/utils/reloadPlatform.d.ts +8 -0
  252. package/lib/typescript/module/utils/reloadPlatform.d.ts.map +1 -0
  253. package/lib/typescript/module/utils/reloadPlatform.web.d.ts +4 -0
  254. package/lib/typescript/module/utils/reloadPlatform.web.d.ts.map +1 -0
  255. package/lib/typescript/module/utils/safeExpoRouter.d.ts.map +1 -1
  256. package/lib/typescript/module/utils/safeExpoRouter.web.d.ts +43 -0
  257. package/lib/typescript/module/utils/safeExpoRouter.web.d.ts.map +1 -0
  258. package/lib/typescript/module/utils/toolModules.d.ts +5 -0
  259. package/lib/typescript/module/utils/toolModules.d.ts.map +1 -0
  260. package/lib/web/asyncStorage.mjs +2 -0
  261. package/lib/web/chunks/chunk-2MHKRRQW.mjs +8 -0
  262. package/lib/web/chunks/chunk-2Q3SDPH2.mjs +14 -0
  263. package/lib/web/chunks/chunk-34YQ42KI.mjs +2 -0
  264. package/lib/web/chunks/chunk-3NNNCQYP.mjs +14 -0
  265. package/lib/web/chunks/chunk-3UTMGIUG.mjs +2 -0
  266. package/lib/web/chunks/chunk-46CXXOQB.mjs +2 -0
  267. package/lib/web/chunks/chunk-475BSDCB.mjs +2 -0
  268. package/lib/web/chunks/chunk-53J2FMUD.mjs +2 -0
  269. package/lib/web/chunks/chunk-552W4COI.mjs +2 -0
  270. package/lib/web/chunks/chunk-56TTTMX4.mjs +6145 -0
  271. package/lib/web/chunks/chunk-5LOQZINQ.mjs +14 -0
  272. package/lib/web/chunks/chunk-5NOIO6ZM.mjs +16 -0
  273. package/lib/web/chunks/chunk-5NZOQR6Q.mjs +2 -0
  274. package/lib/web/chunks/chunk-6CCRCSA2.mjs +2 -0
  275. package/lib/web/chunks/chunk-6Q52HRBL.mjs +2 -0
  276. package/lib/web/chunks/chunk-6TEDFSNM.mjs +655 -0
  277. package/lib/web/chunks/chunk-7BMRSMHN.mjs +2 -0
  278. package/lib/web/chunks/chunk-A2SOFE47.mjs +24 -0
  279. package/lib/web/chunks/chunk-A7KJCK4R.mjs +14 -0
  280. package/lib/web/chunks/chunk-AEXGGXS7.mjs +2 -0
  281. package/lib/web/chunks/chunk-AGD7ZT6O.mjs +15 -0
  282. package/lib/web/chunks/chunk-AIEOQWNG.mjs +2 -0
  283. package/lib/web/chunks/chunk-ASTM35HG.mjs +16 -0
  284. package/lib/web/chunks/chunk-AZBMFPMX.mjs +1421 -0
  285. package/lib/web/chunks/chunk-B2V2UDCU.mjs +16 -0
  286. package/lib/web/chunks/chunk-BFGKGTAC.mjs +2 -0
  287. package/lib/web/chunks/chunk-BHW6AFO6.mjs +2 -0
  288. package/lib/web/chunks/chunk-BWRW3NJ2.mjs +16 -0
  289. package/lib/web/chunks/chunk-CBM2IZAK.mjs +2 -0
  290. package/lib/web/chunks/chunk-CDLCFF44.mjs +2 -0
  291. package/lib/web/chunks/chunk-CE5U3CSQ.mjs +2 -0
  292. package/lib/web/chunks/chunk-CI5CO7FQ.mjs +2 -0
  293. package/lib/web/chunks/chunk-CIB4U2YK.mjs +2 -0
  294. package/lib/web/chunks/chunk-CLLTZQGD.mjs +596 -0
  295. package/lib/web/chunks/chunk-D5HQLRFW.mjs +655 -0
  296. package/lib/web/chunks/chunk-DZDTNXXK.mjs +2 -0
  297. package/lib/web/chunks/chunk-FDOZ6YSS.mjs +2 -0
  298. package/lib/web/chunks/chunk-FMEWNGQO.mjs +2 -0
  299. package/lib/web/chunks/chunk-G4DH7GMT.mjs +2 -0
  300. package/lib/web/chunks/chunk-GBUZCZE4.mjs +2 -0
  301. package/lib/web/chunks/chunk-GF5C5DVX.mjs +2 -0
  302. package/lib/web/chunks/chunk-GLMS5ZLJ.mjs +445 -0
  303. package/lib/web/chunks/chunk-GNGMIA7V.mjs +2 -0
  304. package/lib/web/chunks/chunk-GTYIS7H7.mjs +15 -0
  305. package/lib/web/chunks/chunk-HJ36IONA.mjs +15 -0
  306. package/lib/web/chunks/chunk-HXPTZMAZ.mjs +2 -0
  307. package/lib/web/chunks/chunk-I27M4JCS.mjs +2 -0
  308. package/lib/web/chunks/chunk-IVCT27JB.mjs +2 -0
  309. package/lib/web/chunks/chunk-JG4QSK5B.mjs +2 -0
  310. package/lib/web/chunks/chunk-JR7BJW6B.mjs +389 -0
  311. package/lib/web/chunks/chunk-K46ZJUXJ.mjs +90 -0
  312. package/lib/web/chunks/chunk-K4LXMO4D.mjs +2 -0
  313. package/lib/web/chunks/chunk-K7CGIEFU.mjs +2 -0
  314. package/lib/web/chunks/chunk-KBTYK5YE.mjs +662 -0
  315. package/lib/web/chunks/chunk-KHP6CSSM.mjs +2 -0
  316. package/lib/web/chunks/chunk-KRDRIW7T.mjs +14 -0
  317. package/lib/web/chunks/chunk-L2DTKDER.mjs +2 -0
  318. package/lib/web/chunks/chunk-LFDFDGHY.mjs +655 -0
  319. package/lib/web/chunks/chunk-LZ7FZZ7R.mjs +2 -0
  320. package/lib/web/chunks/chunk-MAIUUK4E.mjs +2 -0
  321. package/lib/web/chunks/chunk-MKJKS3IG.mjs +275 -0
  322. package/lib/web/chunks/chunk-MRQKVLXG.mjs +2 -0
  323. package/lib/web/chunks/chunk-NK3OISOL.mjs +14 -0
  324. package/lib/web/chunks/chunk-NLJDDIXW.mjs +2 -0
  325. package/lib/web/chunks/chunk-OENR3XFI.mjs +11 -0
  326. package/lib/web/chunks/chunk-OZB3VKZE.mjs +2 -0
  327. package/lib/web/chunks/chunk-P64PFJT3.mjs +17618 -0
  328. package/lib/web/chunks/chunk-PACPGYH7.mjs +2 -0
  329. package/lib/web/chunks/chunk-PART6HOE.mjs +14 -0
  330. package/lib/web/chunks/chunk-PMRXUQRH.mjs +2 -0
  331. package/lib/web/chunks/chunk-PTK5FO6C.mjs +2 -0
  332. package/lib/web/chunks/chunk-PZ45TQ55.mjs +14 -0
  333. package/lib/web/chunks/chunk-Q5LN7GET.mjs +17624 -0
  334. package/lib/web/chunks/chunk-QCD6T6L4.mjs +297 -0
  335. package/lib/web/chunks/chunk-QD5EUANU.mjs +2 -0
  336. package/lib/web/chunks/chunk-QJTECJCO.mjs +2 -0
  337. package/lib/web/chunks/chunk-QPIZURPZ.mjs +2 -0
  338. package/lib/web/chunks/chunk-QPY45R5F.mjs +274 -0
  339. package/lib/web/chunks/chunk-R2SGZIG5.mjs +2 -0
  340. package/lib/web/chunks/chunk-S3GYQYVJ.mjs +16 -0
  341. package/lib/web/chunks/chunk-SCCXVTDM.mjs +2 -0
  342. package/lib/web/chunks/chunk-SHJHD646.mjs +2 -0
  343. package/lib/web/chunks/chunk-TCRVZ55E.mjs +2 -0
  344. package/lib/web/chunks/chunk-TJ6ZVV2L.mjs +15 -0
  345. package/lib/web/chunks/chunk-TPSY4RC3.mjs +14 -0
  346. package/lib/web/chunks/chunk-U5KNX5O6.mjs +17624 -0
  347. package/lib/web/chunks/chunk-UCKELQSM.mjs +2 -0
  348. package/lib/web/chunks/chunk-UGGCYHRH.mjs +15 -0
  349. package/lib/web/chunks/chunk-UNYQJZET.mjs +16 -0
  350. package/lib/web/chunks/chunk-VE72SWLV.mjs +15 -0
  351. package/lib/web/chunks/chunk-VKONO6MI.mjs +2 -0
  352. package/lib/web/chunks/chunk-W4BGMPJO.mjs +2 -0
  353. package/lib/web/chunks/chunk-WHNEEKLR.mjs +2 -0
  354. package/lib/web/chunks/chunk-WLGUP3KY.mjs +16 -0
  355. package/lib/web/chunks/chunk-WY7D4WBZ.mjs +2 -0
  356. package/lib/web/chunks/chunk-XRNB2MHO.mjs +107 -0
  357. package/lib/web/chunks/chunk-XXTIAXQY.mjs +2 -0
  358. package/lib/web/chunks/chunk-XYUAUO57.mjs +2 -0
  359. package/lib/web/chunks/chunk-YG6DIKQD.mjs +2 -0
  360. package/lib/web/chunks/chunk-YIZFMU66.mjs +2 -0
  361. package/lib/web/chunks/chunk-YOGAPOGC.mjs +2 -0
  362. package/lib/web/chunks/chunk-Z7373DS5.mjs +2 -0
  363. package/lib/web/chunks/chunk-Z76GRN66.mjs +17627 -0
  364. package/lib/web/chunks/persistentStorage.web-4FBAOYJ4.mjs +12 -0
  365. package/lib/web/chunks/persistentStorage.web-7W3Y6Q24.mjs +12 -0
  366. package/lib/web/chunks/persistentStorage.web-GOWNFMVT.mjs +2 -0
  367. package/lib/web/chunks/persistentStorage.web-RF47FXIK.mjs +12 -0
  368. package/lib/web/colors.mjs +2 -0
  369. package/lib/web/dataViewer.mjs +3 -0
  370. package/lib/web/floating.mjs +2 -0
  371. package/lib/web/history.mjs +2 -0
  372. package/lib/web/hooks.mjs +2 -0
  373. package/lib/web/index.mjs +15 -0
  374. package/lib/web/native.mjs +2 -0
  375. package/lib/web/ui.mjs +2 -0
  376. package/lib/web/utils.mjs +2 -0
  377. package/package.json +118 -36
@@ -1,28 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  import React, { useState } from "react";
4
- import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
4
+ import { View, StyleSheet } from "react-native";
5
5
  import { FreeAccountPrompt } from "./FreeAccountPrompt.js";
6
- import { getUseAccountAccess } from "./licenseModule.js";
7
- import { buoyColors } from "../ui/gameUI/constants/gameUIColors.js";
6
+ import { AccountSetupButton } from "./AccountSetupContent.js";
8
7
 
9
8
  /** The host app remains usable; only the Buoy launcher opens setup. */
10
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
10
  export function AccountSetup() {
12
- const access = getUseAccountAccess()();
13
11
  const [open, setOpen] = useState(false);
14
12
  return /*#__PURE__*/_jsxs(View, {
15
13
  pointerEvents: "box-none",
16
14
  style: styles.root,
17
- children: [/*#__PURE__*/_jsx(TouchableOpacity, {
18
- accessibilityRole: "button",
19
- accessibilityLabel: "Set up Buoy account",
20
- onPress: () => setOpen(true),
21
- style: styles.button,
22
- children: /*#__PURE__*/_jsx(Text, {
23
- style: styles.text,
24
- children: access.status === "initializing" ? "BUOY · Checking…" : "BUOY · Sign in"
25
- })
15
+ children: [/*#__PURE__*/_jsx(AccountSetupButton, {
16
+ expanded: open,
17
+ onPress: () => setOpen(true)
26
18
  }), /*#__PURE__*/_jsx(FreeAccountPrompt, {
27
19
  visible: open,
28
20
  onClose: () => setOpen(false)
@@ -35,18 +27,5 @@ const styles = StyleSheet.create({
35
27
  bottom: 30,
36
28
  right: 16,
37
29
  zIndex: 99999
38
- },
39
- button: {
40
- backgroundColor: buoyColors.card,
41
- borderWidth: 1,
42
- borderColor: buoyColors.primary,
43
- borderRadius: 24,
44
- paddingVertical: 12,
45
- paddingHorizontal: 16
46
- },
47
- text: {
48
- color: buoyColors.primary,
49
- fontWeight: "700",
50
- fontSize: 12
51
30
  }
52
31
  });
@@ -1,77 +1,91 @@
1
1
  "use strict";
2
2
 
3
- import { useState } from "react";
4
- import { useAccountAccess, LicenseManager } from "@buoy-gg/license";
3
+ import { useEffect, useId, useRef, useState } from "react";
4
+ import { createPortal } from "react-dom";
5
+ import { AccountSetupButton, AccountSetupCard } from "./AccountSetupContent.js";
6
+ import { night } from "../ui/night/nightTheme.js";
5
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
8
  export function AccountSetup() {
7
- const access = useAccountAccess();
8
9
  const [open, setOpen] = useState(false);
9
- return /*#__PURE__*/_jsxs("div", {
10
+ const root = useRef(null);
11
+ const panel = useRef(null);
12
+ const titleId = useId();
13
+ const close = (restoreFocus = true) => {
14
+ setOpen(false);
15
+ if (restoreFocus) root.current?.querySelector('[data-account-launcher] [role="button"]')?.focus({
16
+ preventScroll: true
17
+ });
18
+ };
19
+ useEffect(() => {
20
+ if (!open) return;
21
+ panel.current?.focus({
22
+ preventScroll: true
23
+ });
24
+ const onPointerDown = event => {
25
+ if (event.target instanceof Node && !root.current?.contains(event.target)) setOpen(false);
26
+ };
27
+ const onKeyDown = event => {
28
+ if (event.key !== "Escape") return;
29
+ event.preventDefault();
30
+ event.stopPropagation();
31
+ setOpen(false);
32
+ root.current?.querySelector('[data-account-launcher] [role="button"]')?.focus({
33
+ preventScroll: true
34
+ });
35
+ };
36
+ document.addEventListener("pointerdown", onPointerDown);
37
+ document.addEventListener("keydown", onKeyDown);
38
+ return () => {
39
+ document.removeEventListener("pointerdown", onPointerDown);
40
+ document.removeEventListener("keydown", onKeyDown);
41
+ };
42
+ }, [open]);
43
+ if (typeof document === "undefined") return null;
44
+ return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs("div", {
45
+ ref: root,
46
+ "data-buoy-account": "",
10
47
  style: {
11
48
  position: "fixed",
12
- right: 16,
13
- bottom: 30,
49
+ right: "max(16px, env(safe-area-inset-right))",
50
+ bottom: "max(20px, env(safe-area-inset-bottom))",
14
51
  zIndex: 99999,
15
- color: "#e2e8f0",
16
- fontFamily: "system-ui"
52
+ colorScheme: "dark",
53
+ fontFamily: "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
17
54
  },
18
- children: [/*#__PURE__*/_jsx("button", {
19
- onClick: () => setOpen(!open),
20
- style: {
21
- background: "#080a0b",
22
- color: "#20C997",
23
- border: "1px solid #20C997",
24
- borderRadius: 24,
25
- padding: "12px 16px"
55
+ children: [/*#__PURE__*/_jsx("style", {
56
+ children: `
57
+ [data-buoy-account] { font-size: 14px; line-height: 1.5; text-align: left; }
58
+ [data-buoy-account] [role="button"], [data-buoy-account] [role="link"] { cursor: pointer; }
59
+ [data-buoy-account] [role="button"]:focus-visible, [data-buoy-account] [role="link"]:focus-visible { outline: 2px solid ${night.color.accent}; outline-offset: 3px; }
60
+ [data-buoy-account] [role="link"]:hover { background: rgba(255,255,255,.06); }
61
+ [data-buoy-account] [aria-disabled="true"] { cursor: wait; }
62
+ [data-buoy-account] .buoy-account-panel {
63
+ position: absolute; right: 0; bottom: calc(100% + 12px);
64
+ width: 368px; max-width: calc(100vw - 32px); max-height: calc(100dvh - 96px);
65
+ overflow-y: auto; overscroll-behavior: contain; border-radius: 20px;
66
+ box-shadow: 0 18px 60px rgba(0,0,0,.4), 0 4px 16px rgba(0,0,0,.2);
67
+ outline: none;
68
+ }
69
+ `
70
+ }), /*#__PURE__*/_jsx("div", {
71
+ "data-account-launcher": "",
72
+ children: /*#__PURE__*/_jsx(AccountSetupButton, {
73
+ expanded: open,
74
+ onPress: () => setOpen(value => !value)
75
+ })
76
+ }), open && /*#__PURE__*/_jsx("section", {
77
+ ref: panel,
78
+ className: "buoy-account-panel",
79
+ role: "dialog",
80
+ "aria-labelledby": titleId,
81
+ tabIndex: -1,
82
+ onBlur: event => {
83
+ if (event.relatedTarget instanceof Node && !root.current?.contains(event.relatedTarget)) close(false);
26
84
  },
27
- children: access.status === "initializing" ? "BUOY · Checking…" : "BUOY · Sign in"
28
- }), open && /*#__PURE__*/_jsxs("section", {
29
- "aria-label": "Buoy account setup",
30
- style: {
31
- position: "absolute",
32
- right: 0,
33
- bottom: 55,
34
- width: 300,
35
- maxWidth: "85vw",
36
- background: "#080a0b",
37
- border: "1px solid #20C997",
38
- borderRadius: 12,
39
- padding: 20
40
- },
41
- children: [/*#__PURE__*/_jsx("h3", {
42
- children: "Sign in to use Buoy"
43
- }), /*#__PURE__*/_jsx("p", {
44
- children: "A Free or Pro account is required. Run this command in your project, then reload the app."
45
- }), /*#__PURE__*/_jsx("pre", {
46
- children: "npx buoy login"
47
- }), LicenseManager.getState().error && /*#__PURE__*/_jsx("p", {
48
- role: "status",
49
- children: LicenseManager.getState().error
50
- }), /*#__PURE__*/_jsx("button", {
51
- onClick: () => {
52
- const key = LicenseManager.getState().licenseKey;
53
- if (key) void LicenseManager.setLicenseKey(key, {
54
- force: true
55
- });
56
- },
57
- children: "Retry verification"
58
- }), /*#__PURE__*/_jsx("p", {
59
- children: /*#__PURE__*/_jsx("a", {
60
- style: {
61
- color: "#20C997"
62
- },
63
- href: "https://github.com/Buoy-gg/buoy/issues/new/choose",
64
- target: "_blank",
65
- rel: "noreferrer",
66
- children: "Contact support on GitHub"
67
- })
68
- }), /*#__PURE__*/_jsx("a", {
69
- style: {
70
- color: "#20C997"
71
- },
72
- href: "mailto:support@buoy.gg",
73
- children: "support@buoy.gg"
74
- })]
85
+ children: /*#__PURE__*/_jsx(AccountSetupCard, {
86
+ titleId: titleId,
87
+ onClose: () => close()
88
+ })
75
89
  })]
76
- });
90
+ }), document.body);
77
91
  }
@@ -0,0 +1,476 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef, useState } from "react";
4
+ import { ActivityIndicator, Pressable, StyleSheet, Text, View } from "react-native";
5
+ import { Check, ChevronRight, Copy, RefreshCw, X } from "../icons/lucide-icons.js";
6
+ import { copyToClipboard } from "../clipboard/index.js";
7
+ import { monoFont } from "../ui/fonts.js";
8
+ import { night } from "../ui/night/nightTheme.js";
9
+ import { getAccountAccess, getUseAccountAccess, getUseLicense, retryAccountAccess } from "./licenseModule.js";
10
+ import { openPricing } from "./openPricing.js";
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ export const LOGIN_COMMAND = "npx buoy login";
13
+
14
+ /** Shared account UI; each platform supplies positioning and dismissal. */
15
+ export function AccountSetupButton({
16
+ onPress,
17
+ expanded = false
18
+ }) {
19
+ const access = getUseAccountAccess()();
20
+ const checking = access.status === "initializing";
21
+ return /*#__PURE__*/_jsxs(Pressable, {
22
+ accessibilityRole: "button",
23
+ accessibilityLabel: "Sign in to Buoy",
24
+ accessibilityState: {
25
+ expanded
26
+ },
27
+ onPress: onPress,
28
+ style: ({
29
+ pressed
30
+ }) => [styles.launcher, expanded && styles.launcherOpen, pressed && styles.pressed],
31
+ children: [/*#__PURE__*/_jsx(View, {
32
+ style: styles.brandDot
33
+ }), /*#__PURE__*/_jsx(Text, {
34
+ style: styles.launcherBrand,
35
+ children: "BUOY"
36
+ }), /*#__PURE__*/_jsx(View, {
37
+ style: styles.launcherDivider
38
+ }), /*#__PURE__*/_jsx(Text, {
39
+ style: styles.launcherLabel,
40
+ children: checking ? "Checking…" : "Sign in"
41
+ }), checking ? /*#__PURE__*/_jsx(ActivityIndicator, {
42
+ size: 14,
43
+ color: night.color.accent
44
+ }) : /*#__PURE__*/_jsx(ChevronRight, {
45
+ size: 14,
46
+ color: night.color.textSecondary
47
+ })]
48
+ });
49
+ }
50
+ export function AccountSetupCard({
51
+ onClose,
52
+ titleId
53
+ }) {
54
+ const access = getUseAccountAccess()();
55
+ const useLicenseHook = getUseLicense();
56
+ const license = useLicenseHook?.();
57
+ const [copied, setCopied] = useState(false);
58
+ const [retrying, setRetrying] = useState(false);
59
+ const [feedback, setFeedback] = useState(null);
60
+ const timer = useRef(null);
61
+ const mounted = useRef(true);
62
+ const retryPending = useRef(false);
63
+ const checking = retrying || access.status === "initializing";
64
+ const statusMessage = license?.error || feedback;
65
+ useEffect(() => {
66
+ mounted.current = true;
67
+ return () => {
68
+ mounted.current = false;
69
+ if (timer.current) clearTimeout(timer.current);
70
+ };
71
+ }, []);
72
+ const handleCopy = useCallback(async () => {
73
+ const ok = await copyToClipboard(LOGIN_COMMAND);
74
+ if (!mounted.current) return;
75
+ if (!ok) {
76
+ setFeedback("Select the command to copy it, then run it in your project terminal.");
77
+ return;
78
+ }
79
+ setFeedback(null);
80
+ setCopied(true);
81
+ if (timer.current) clearTimeout(timer.current);
82
+ timer.current = setTimeout(() => setCopied(false), 2000);
83
+ }, []);
84
+ const handleRetry = useCallback(async () => {
85
+ if (retryPending.current) return;
86
+ retryPending.current = true;
87
+ setRetrying(true);
88
+ setFeedback(null);
89
+ try {
90
+ await retryAccountAccess();
91
+ if (mounted.current && getAccountAccess().status !== "admitted") {
92
+ setFeedback("No account connected yet. Run the command, sign in, then reload your app.");
93
+ }
94
+ } catch {
95
+ if (mounted.current) setFeedback("Couldn't verify your account. Check your connection and try again.");
96
+ } finally {
97
+ retryPending.current = false;
98
+ if (mounted.current) setRetrying(false);
99
+ }
100
+ }, []);
101
+ return /*#__PURE__*/_jsxs(View, {
102
+ style: styles.card,
103
+ children: [/*#__PURE__*/_jsxs(View, {
104
+ style: styles.header,
105
+ children: [/*#__PURE__*/_jsxs(View, {
106
+ style: styles.brand,
107
+ children: [/*#__PURE__*/_jsx(View, {
108
+ style: styles.brandDot
109
+ }), /*#__PURE__*/_jsx(Text, {
110
+ style: styles.wordmark,
111
+ children: "BUOY"
112
+ }), /*#__PURE__*/_jsx(Text, {
113
+ style: styles.headerLabel,
114
+ children: "Developer tools"
115
+ })]
116
+ }), /*#__PURE__*/_jsx(Pressable, {
117
+ accessibilityRole: "button",
118
+ accessibilityLabel: "Close account setup",
119
+ onPress: onClose,
120
+ hitSlop: 6,
121
+ style: ({
122
+ pressed
123
+ }) => [styles.close, pressed && styles.pressed],
124
+ children: /*#__PURE__*/_jsx(X, {
125
+ size: 16,
126
+ color: night.color.textSecondary
127
+ })
128
+ })]
129
+ }), /*#__PURE__*/_jsxs(Text, {
130
+ nativeID: titleId,
131
+ accessibilityRole: "header",
132
+ style: styles.title,
133
+ children: ["Connect your", "\n", "Buoy account"]
134
+ }), /*#__PURE__*/_jsx(Text, {
135
+ style: styles.description,
136
+ children: "Sign in with a Free or Pro account to open your developer tools."
137
+ }), /*#__PURE__*/_jsxs(View, {
138
+ style: styles.terminal,
139
+ children: [/*#__PURE__*/_jsxs(View, {
140
+ style: styles.terminalHeader,
141
+ children: [/*#__PURE__*/_jsx(Text, {
142
+ style: styles.terminalLabel,
143
+ children: "RUN IN YOUR PROJECT"
144
+ }), /*#__PURE__*/_jsxs(Pressable, {
145
+ accessibilityRole: "button",
146
+ accessibilityLabel: copied ? "Login command copied" : "Copy login command",
147
+ onPress: handleCopy,
148
+ style: ({
149
+ pressed
150
+ }) => [styles.copy, pressed && styles.pressed],
151
+ children: [copied ? /*#__PURE__*/_jsx(Check, {
152
+ size: 13,
153
+ color: night.color.accent
154
+ }) : /*#__PURE__*/_jsx(Copy, {
155
+ size: 13,
156
+ color: night.color.textSecondary
157
+ }), /*#__PURE__*/_jsx(Text, {
158
+ accessibilityLiveRegion: "polite",
159
+ style: [styles.copyText, copied && styles.accentText],
160
+ children: copied ? "Copied" : "Copy"
161
+ })]
162
+ })]
163
+ }), /*#__PURE__*/_jsxs(View, {
164
+ style: styles.command,
165
+ children: [/*#__PURE__*/_jsx(Text, {
166
+ accessibilityElementsHidden: true,
167
+ importantForAccessibility: "no",
168
+ style: styles.prompt,
169
+ children: "$"
170
+ }), /*#__PURE__*/_jsx(Text, {
171
+ selectable: true,
172
+ style: styles.commandText,
173
+ children: LOGIN_COMMAND
174
+ })]
175
+ })]
176
+ }), /*#__PURE__*/_jsx(Text, {
177
+ style: styles.hint,
178
+ children: "Finish signing in, then reload your app."
179
+ }), /*#__PURE__*/_jsxs(Pressable, {
180
+ accessibilityRole: "button",
181
+ accessibilityState: {
182
+ disabled: checking,
183
+ busy: checking
184
+ },
185
+ disabled: checking,
186
+ onPress: handleRetry,
187
+ style: ({
188
+ pressed
189
+ }) => [styles.primary, pressed && styles.primaryPressed, checking && styles.primaryBusy],
190
+ children: [checking ? /*#__PURE__*/_jsx(ActivityIndicator, {
191
+ size: 15,
192
+ color: night.color.onAccent
193
+ }) : /*#__PURE__*/_jsx(RefreshCw, {
194
+ size: 15,
195
+ color: night.color.onAccent
196
+ }), /*#__PURE__*/_jsx(Text, {
197
+ style: styles.primaryText,
198
+ children: checking ? "Checking connection…" : "Check connection"
199
+ })]
200
+ }), statusMessage && /*#__PURE__*/_jsx(Text, {
201
+ accessibilityRole: "alert",
202
+ accessibilityLiveRegion: "polite",
203
+ style: styles.feedback,
204
+ children: statusMessage
205
+ }), /*#__PURE__*/_jsxs(View, {
206
+ style: styles.footer,
207
+ children: [/*#__PURE__*/_jsx(Text, {
208
+ style: styles.footerLabel,
209
+ children: "Need a hand?"
210
+ }), /*#__PURE__*/_jsxs(View, {
211
+ style: styles.links,
212
+ children: [/*#__PURE__*/_jsx(Pressable, {
213
+ accessibilityRole: "link",
214
+ onPress: () => openPricing("https://github.com/Buoy-gg/buoy/issues/new/choose"),
215
+ style: styles.link,
216
+ children: /*#__PURE__*/_jsx(Text, {
217
+ style: styles.linkText,
218
+ children: "GitHub"
219
+ })
220
+ }), /*#__PURE__*/_jsx(Pressable, {
221
+ accessibilityRole: "link",
222
+ accessibilityLabel: "Email support@buoy.gg",
223
+ onPress: () => openPricing("mailto:support@buoy.gg"),
224
+ style: styles.link,
225
+ children: /*#__PURE__*/_jsx(Text, {
226
+ style: styles.linkText,
227
+ children: "Email"
228
+ })
229
+ }), /*#__PURE__*/_jsx(Pressable, {
230
+ accessibilityRole: "link",
231
+ accessibilityLabel: "View Buoy plans",
232
+ onPress: () => openPricing(),
233
+ style: styles.link,
234
+ children: /*#__PURE__*/_jsx(Text, {
235
+ style: styles.linkText,
236
+ children: "Plans"
237
+ })
238
+ })]
239
+ })]
240
+ })]
241
+ });
242
+ }
243
+ const styles = StyleSheet.create({
244
+ launcher: {
245
+ flexDirection: "row",
246
+ alignItems: "center",
247
+ gap: 10,
248
+ minHeight: 44,
249
+ paddingHorizontal: 16,
250
+ borderRadius: 14,
251
+ backgroundColor: "#111315",
252
+ borderWidth: 1,
253
+ borderColor: "#303437",
254
+ shadowColor: "#000",
255
+ shadowOpacity: 0.28,
256
+ shadowRadius: 14,
257
+ shadowOffset: {
258
+ width: 0,
259
+ height: 4
260
+ },
261
+ elevation: 8
262
+ },
263
+ launcherOpen: {
264
+ borderColor: night.color.accentBorderStrong
265
+ },
266
+ launcherBrand: {
267
+ color: night.color.text,
268
+ fontSize: 11,
269
+ fontWeight: "800",
270
+ letterSpacing: 1.2,
271
+ lineHeight: 16
272
+ },
273
+ launcherDivider: {
274
+ width: 1,
275
+ height: 16,
276
+ backgroundColor: "#35383C",
277
+ marginHorizontal: 2
278
+ },
279
+ launcherLabel: {
280
+ color: night.color.text,
281
+ fontSize: 12,
282
+ fontWeight: "500",
283
+ lineHeight: 18
284
+ },
285
+ brandDot: {
286
+ width: 6,
287
+ height: 6,
288
+ borderRadius: 3,
289
+ backgroundColor: night.color.accent
290
+ },
291
+ card: {
292
+ width: "100%",
293
+ backgroundColor: "#111315",
294
+ borderColor: "#303437",
295
+ borderWidth: 1,
296
+ borderRadius: 20,
297
+ paddingHorizontal: 24,
298
+ paddingTop: 18,
299
+ paddingBottom: 12
300
+ },
301
+ header: {
302
+ flexDirection: "row",
303
+ alignItems: "center",
304
+ justifyContent: "space-between",
305
+ marginBottom: 24
306
+ },
307
+ brand: {
308
+ flexDirection: "row",
309
+ alignItems: "center",
310
+ gap: 8
311
+ },
312
+ wordmark: {
313
+ color: night.color.text,
314
+ fontSize: 11,
315
+ fontWeight: "800",
316
+ letterSpacing: 1.4,
317
+ lineHeight: 16
318
+ },
319
+ headerLabel: {
320
+ color: night.color.textSecondary,
321
+ fontSize: 11,
322
+ lineHeight: 16,
323
+ marginLeft: 4
324
+ },
325
+ close: {
326
+ width: 28,
327
+ height: 28,
328
+ borderRadius: 8,
329
+ backgroundColor: night.color.fill,
330
+ alignItems: "center",
331
+ justifyContent: "center"
332
+ },
333
+ title: {
334
+ color: night.color.text,
335
+ fontSize: 25,
336
+ fontWeight: "600",
337
+ lineHeight: 31,
338
+ letterSpacing: -0.6,
339
+ marginBottom: 10
340
+ },
341
+ description: {
342
+ color: "#A4AAAF",
343
+ fontSize: 13,
344
+ lineHeight: 20,
345
+ marginBottom: 22
346
+ },
347
+ terminal: {
348
+ backgroundColor: "#090B0D",
349
+ borderWidth: 1,
350
+ borderColor: "#292C30",
351
+ borderRadius: 12
352
+ },
353
+ terminalHeader: {
354
+ flexDirection: "row",
355
+ justifyContent: "space-between",
356
+ alignItems: "center",
357
+ paddingLeft: 14,
358
+ paddingRight: 6,
359
+ paddingTop: 6
360
+ },
361
+ terminalLabel: {
362
+ color: "#93999F",
363
+ fontSize: 9,
364
+ fontWeight: "600",
365
+ letterSpacing: 0.8,
366
+ lineHeight: 14
367
+ },
368
+ copy: {
369
+ minWidth: 68,
370
+ minHeight: 32,
371
+ flexDirection: "row",
372
+ alignItems: "center",
373
+ justifyContent: "center",
374
+ gap: 5,
375
+ borderRadius: 6
376
+ },
377
+ copyText: {
378
+ color: night.color.textSecondary,
379
+ fontSize: 11,
380
+ fontWeight: "500",
381
+ lineHeight: 16
382
+ },
383
+ accentText: {
384
+ color: night.color.accent
385
+ },
386
+ command: {
387
+ flexDirection: "row",
388
+ alignItems: "center",
389
+ gap: 12,
390
+ paddingHorizontal: 16,
391
+ paddingTop: 6,
392
+ paddingBottom: 18
393
+ },
394
+ prompt: {
395
+ color: night.color.accent,
396
+ fontSize: 15,
397
+ fontFamily: monoFont,
398
+ lineHeight: 22
399
+ },
400
+ commandText: {
401
+ color: night.color.text,
402
+ fontSize: 15,
403
+ fontFamily: monoFont,
404
+ lineHeight: 22,
405
+ flexShrink: 1
406
+ },
407
+ hint: {
408
+ color: night.color.textSecondary,
409
+ fontSize: 12,
410
+ lineHeight: 18,
411
+ marginTop: 10,
412
+ marginBottom: 22
413
+ },
414
+ primary: {
415
+ minHeight: 42,
416
+ borderRadius: 10,
417
+ backgroundColor: night.color.accent,
418
+ flexDirection: "row",
419
+ alignItems: "center",
420
+ justifyContent: "center",
421
+ gap: 9,
422
+ paddingHorizontal: 12,
423
+ paddingVertical: 10
424
+ },
425
+ primaryPressed: {
426
+ backgroundColor: night.color.accentPressed
427
+ },
428
+ primaryBusy: {
429
+ opacity: 0.75
430
+ },
431
+ primaryText: {
432
+ color: night.color.onAccent,
433
+ fontSize: 13,
434
+ fontWeight: "600",
435
+ lineHeight: 20
436
+ },
437
+ feedback: {
438
+ color: "#B5BBC0",
439
+ fontSize: 12,
440
+ lineHeight: 18,
441
+ marginTop: 12
442
+ },
443
+ footer: {
444
+ flexDirection: "row",
445
+ alignItems: "center",
446
+ justifyContent: "space-between",
447
+ flexWrap: "wrap",
448
+ borderTopWidth: 1,
449
+ borderTopColor: night.color.separator,
450
+ marginTop: 20,
451
+ paddingTop: 8
452
+ },
453
+ footerLabel: {
454
+ color: night.color.textSecondary,
455
+ fontSize: 11,
456
+ lineHeight: 16
457
+ },
458
+ links: {
459
+ flexDirection: "row",
460
+ gap: 2
461
+ },
462
+ link: {
463
+ paddingHorizontal: 7,
464
+ paddingVertical: 10,
465
+ borderRadius: 6
466
+ },
467
+ linkText: {
468
+ color: "#B5BBC0",
469
+ fontSize: 11,
470
+ fontWeight: "500",
471
+ lineHeight: 16
472
+ },
473
+ pressed: {
474
+ opacity: 0.7
475
+ }
476
+ });