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