@buoy-gg/shared-ui 7.0.36 → 7.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/README.md +33 -26
  2. package/floating.d.ts +1 -0
  3. package/floating.js +2 -0
  4. package/lib/commonjs/JsModal.js +16 -1
  5. package/lib/commonjs/JsModal.web.js +16 -1
  6. package/lib/commonjs/dataViewer/CyberpunkInput.js +6 -1
  7. package/lib/commonjs/dataViewer/LiveExplorer.js +28 -16
  8. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  9. package/lib/commonjs/icons/ReactQueryIcon.js +9 -161
  10. package/lib/commonjs/icons/SentryBugIcon.js +9 -171
  11. package/lib/commonjs/index.js +57 -6
  12. package/lib/commonjs/license/AccountSetup.js +56 -0
  13. package/lib/commonjs/license/AccountSetup.web.js +81 -0
  14. package/lib/commonjs/license/FeatureGate.js +10 -43
  15. package/lib/commonjs/license/FreeAccountPrompt.js +35 -12
  16. package/lib/commonjs/license/index.js +0 -6
  17. package/lib/commonjs/license/licenseModule.js +56 -36
  18. package/lib/commonjs/license/tierLimits.js +12 -63
  19. package/lib/commonjs/storage/devToolsStorageKeys.js +8 -1
  20. package/lib/commonjs/stores/BaseEventStore.js +21 -5
  21. package/lib/commonjs/stores/createToolStore.js +21 -3
  22. package/lib/commonjs/stores/floatingToolStore.js +71 -0
  23. package/lib/commonjs/stores/floatingToolStore.test.js +112 -0
  24. package/lib/commonjs/sync/toolActionRegistry.js +85 -2
  25. package/lib/commonjs/ui/backgrounds/README.md +52 -0
  26. package/lib/commonjs/ui/backgrounds/ToolBackground.js +4 -2
  27. package/lib/commonjs/ui/backgrounds/index.js +8 -1
  28. package/lib/commonjs/ui/backgrounds/registry.js +8 -0
  29. package/lib/commonjs/ui/backgrounds/variants/wormhole/motion.js +48 -0
  30. package/lib/commonjs/ui/backgrounds/variants/wormhole/textures.js +3 -0
  31. package/lib/commonjs/ui/backgrounds/variants/wormhole.js +133 -0
  32. package/lib/commonjs/ui/components/ClipboardHintBanner.js +5 -6
  33. package/lib/commonjs/ui/components/CompactRow.js +94 -74
  34. package/lib/commonjs/ui/components/DraggableHeader.js +16 -1
  35. package/lib/commonjs/ui/components/HeaderSearchButton.js +17 -4
  36. package/lib/commonjs/ui/floating/FloatingTool.js +1010 -0
  37. package/lib/commonjs/ui/floating/FloatingTool.web.js +591 -0
  38. package/lib/commonjs/ui/floating/FloatingToolHost.js +32 -0
  39. package/lib/commonjs/ui/floating/FloatingToolHost.web.js +28 -0
  40. package/lib/commonjs/ui/floating/index.js +105 -0
  41. package/lib/commonjs/ui/floating/index.web.js +105 -0
  42. package/lib/commonjs/ui/floating/onboardingConstants.js +70 -0
  43. package/lib/commonjs/ui/floating/onboardingConstants.web.js +34 -0
  44. package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +3 -1
  45. package/lib/commonjs/ui/index.js +118 -2
  46. package/lib/commonjs/ui/night/nightTheme.js +10 -0
  47. package/lib/commonjs/ui/night/primitives.js +22 -5
  48. package/lib/commonjs/ui/otto/OttoSceneView.js +69 -0
  49. package/lib/commonjs/ui/otto/index.js +22 -0
  50. package/lib/commonjs/ui/otto/ottoEngine.js +10 -7
  51. package/lib/commonjs/ui/otto/ottoScenes.js +949 -0
  52. package/lib/commonjs/utils/minimalSuperJSON.js +13 -3
  53. package/lib/module/JsModal.js +16 -1
  54. package/lib/module/JsModal.web.js +16 -1
  55. package/lib/module/dataViewer/CyberpunkInput.js +6 -1
  56. package/lib/module/dataViewer/LiveExplorer.js +28 -16
  57. package/lib/module/hooks/safe-area-impl.js +1 -1
  58. package/lib/module/icons/ReactQueryIcon.js +9 -161
  59. package/lib/module/icons/SentryBugIcon.js +9 -171
  60. package/lib/module/index.js +4 -1
  61. package/lib/module/license/AccountSetup.js +52 -0
  62. package/lib/module/license/AccountSetup.web.js +77 -0
  63. package/lib/module/license/FeatureGate.js +10 -43
  64. package/lib/module/license/FreeAccountPrompt.js +35 -12
  65. package/lib/module/license/index.js +1 -1
  66. package/lib/module/license/licenseModule.js +50 -35
  67. package/lib/module/license/tierLimits.js +13 -63
  68. package/lib/module/storage/devToolsStorageKeys.js +8 -1
  69. package/lib/module/stores/BaseEventStore.js +21 -5
  70. package/lib/module/stores/createToolStore.js +21 -3
  71. package/lib/module/stores/floatingToolStore.js +61 -0
  72. package/lib/module/stores/floatingToolStore.test.js +111 -0
  73. package/lib/module/sync/toolActionRegistry.js +84 -2
  74. package/lib/module/ui/backgrounds/README.md +52 -0
  75. package/lib/module/ui/backgrounds/ToolBackground.js +4 -2
  76. package/lib/module/ui/backgrounds/index.js +2 -1
  77. package/lib/module/ui/backgrounds/registry.js +8 -0
  78. package/lib/module/ui/backgrounds/variants/wormhole/motion.js +44 -0
  79. package/lib/module/ui/backgrounds/variants/wormhole/textures.js +3 -0
  80. package/lib/module/ui/backgrounds/variants/wormhole.js +129 -0
  81. package/lib/module/ui/components/ClipboardHintBanner.js +5 -6
  82. package/lib/module/ui/components/CompactRow.js +94 -74
  83. package/lib/module/ui/components/DraggableHeader.js +16 -1
  84. package/lib/module/ui/components/HeaderSearchButton.js +17 -4
  85. package/lib/module/ui/floating/FloatingTool.js +1003 -0
  86. package/lib/module/ui/floating/FloatingTool.web.js +590 -0
  87. package/lib/module/ui/floating/FloatingToolHost.js +29 -0
  88. package/lib/module/ui/floating/FloatingToolHost.web.js +25 -0
  89. package/lib/module/ui/floating/index.js +6 -0
  90. package/lib/module/ui/floating/index.web.js +6 -0
  91. package/lib/module/ui/floating/onboardingConstants.js +64 -0
  92. package/lib/module/ui/floating/onboardingConstants.web.js +27 -0
  93. package/lib/module/ui/gameUI/constants/gameUIColors.js +3 -1
  94. package/lib/module/ui/index.js +5 -1
  95. package/lib/module/ui/night/nightTheme.js +10 -0
  96. package/lib/module/ui/night/primitives.js +22 -5
  97. package/lib/module/ui/otto/OttoSceneView.js +64 -0
  98. package/lib/module/ui/otto/index.js +3 -1
  99. package/lib/module/ui/otto/ottoEngine.js +10 -7
  100. package/lib/module/ui/otto/ottoScenes.js +942 -0
  101. package/lib/module/utils/minimalSuperJSON.js +13 -3
  102. package/lib/typescript/commonjs/JsModal.d.ts +43 -2
  103. package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
  104. package/lib/typescript/commonjs/JsModal.web.d.ts +5 -2
  105. package/lib/typescript/commonjs/JsModal.web.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/dataViewer/CyberpunkInput.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/dataViewer/LiveExplorer.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  109. package/lib/typescript/commonjs/icons/ReactQueryIcon.d.ts +1 -2
  110. package/lib/typescript/commonjs/icons/ReactQueryIcon.d.ts.map +1 -1
  111. package/lib/typescript/commonjs/icons/SentryBugIcon.d.ts +1 -2
  112. package/lib/typescript/commonjs/icons/SentryBugIcon.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/index.d.ts +4 -1
  114. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  115. package/lib/typescript/commonjs/license/AccountSetup.d.ts +4 -0
  116. package/lib/typescript/commonjs/license/AccountSetup.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/license/AccountSetup.web.d.ts +2 -0
  118. package/lib/typescript/commonjs/license/AccountSetup.web.d.ts.map +1 -0
  119. package/lib/typescript/commonjs/license/FeatureGate.d.ts +3 -19
  120. package/lib/typescript/commonjs/license/FeatureGate.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts +8 -11
  122. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/license/index.d.ts +1 -1
  124. package/lib/typescript/commonjs/license/index.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/license/licenseModule.d.ts +18 -31
  126. package/lib/typescript/commonjs/license/licenseModule.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/license/tierLimits.d.ts +9 -52
  128. package/lib/typescript/commonjs/license/tierLimits.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +6 -0
  130. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/stores/BaseEventStore.d.ts.map +1 -1
  132. package/lib/typescript/commonjs/stores/createToolStore.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/stores/floatingToolStore.d.ts +27 -0
  134. package/lib/typescript/commonjs/stores/floatingToolStore.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/stores/floatingToolStore.test.d.ts +2 -0
  136. package/lib/typescript/commonjs/stores/floatingToolStore.test.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/sync/toolActionRegistry.d.ts +4 -32
  138. package/lib/typescript/commonjs/sync/toolActionRegistry.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/ui/backgrounds/ToolBackground.d.ts +7 -1
  140. package/lib/typescript/commonjs/ui/backgrounds/ToolBackground.d.ts.map +1 -1
  141. package/lib/typescript/commonjs/ui/backgrounds/index.d.ts +2 -1
  142. package/lib/typescript/commonjs/ui/backgrounds/index.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/ui/backgrounds/registry.d.ts.map +1 -1
  144. package/lib/typescript/commonjs/ui/backgrounds/types.d.ts +11 -1
  145. package/lib/typescript/commonjs/ui/backgrounds/types.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/motion.d.ts +24 -0
  147. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/motion.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/textures.d.ts +13 -0
  149. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/textures.d.ts.map +1 -0
  150. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole.d.ts +3 -0
  151. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole.d.ts.map +1 -0
  152. package/lib/typescript/commonjs/ui/components/ClipboardHintBanner.d.ts.map +1 -1
  153. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts +8 -1
  154. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -1
  155. package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts +4 -1
  156. package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts.map +1 -1
  157. package/lib/typescript/commonjs/ui/components/HeaderSearchButton.d.ts +7 -1
  158. package/lib/typescript/commonjs/ui/components/HeaderSearchButton.d.ts.map +1 -1
  159. package/lib/typescript/commonjs/ui/floating/FloatingTool.d.ts +79 -0
  160. package/lib/typescript/commonjs/ui/floating/FloatingTool.d.ts.map +1 -0
  161. package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts +64 -0
  162. package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/ui/floating/FloatingToolHost.d.ts +3 -0
  164. package/lib/typescript/commonjs/ui/floating/FloatingToolHost.d.ts.map +1 -0
  165. package/lib/typescript/commonjs/ui/floating/FloatingToolHost.web.d.ts +3 -0
  166. package/lib/typescript/commonjs/ui/floating/FloatingToolHost.web.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/ui/floating/index.d.ts +7 -0
  168. package/lib/typescript/commonjs/ui/floating/index.d.ts.map +1 -0
  169. package/lib/typescript/commonjs/ui/floating/index.web.d.ts +7 -0
  170. package/lib/typescript/commonjs/ui/floating/index.web.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/ui/floating/onboardingConstants.d.ts +30 -0
  172. package/lib/typescript/commonjs/ui/floating/onboardingConstants.d.ts.map +1 -0
  173. package/lib/typescript/commonjs/ui/floating/onboardingConstants.web.d.ts +13 -0
  174. package/lib/typescript/commonjs/ui/floating/onboardingConstants.web.d.ts.map +1 -0
  175. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts +2 -0
  176. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
  177. package/lib/typescript/commonjs/ui/index.d.ts +6 -0
  178. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
  179. package/lib/typescript/commonjs/ui/night/nightTheme.d.ts +10 -0
  180. package/lib/typescript/commonjs/ui/night/nightTheme.d.ts.map +1 -1
  181. package/lib/typescript/commonjs/ui/night/primitives.d.ts +10 -3
  182. package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +1 -1
  183. package/lib/typescript/commonjs/ui/otto/OttoSceneView.d.ts +30 -0
  184. package/lib/typescript/commonjs/ui/otto/OttoSceneView.d.ts.map +1 -0
  185. package/lib/typescript/commonjs/ui/otto/index.d.ts +2 -0
  186. package/lib/typescript/commonjs/ui/otto/index.d.ts.map +1 -1
  187. package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts +1 -1
  188. package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts.map +1 -1
  189. package/lib/typescript/commonjs/ui/otto/ottoScenes.d.ts +75 -0
  190. package/lib/typescript/commonjs/ui/otto/ottoScenes.d.ts.map +1 -0
  191. package/lib/typescript/commonjs/utils/minimalSuperJSON.d.ts.map +1 -1
  192. package/lib/typescript/module/JsModal.d.ts +43 -2
  193. package/lib/typescript/module/JsModal.d.ts.map +1 -1
  194. package/lib/typescript/module/JsModal.web.d.ts +5 -2
  195. package/lib/typescript/module/JsModal.web.d.ts.map +1 -1
  196. package/lib/typescript/module/dataViewer/CyberpunkInput.d.ts.map +1 -1
  197. package/lib/typescript/module/dataViewer/LiveExplorer.d.ts.map +1 -1
  198. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  199. package/lib/typescript/module/icons/ReactQueryIcon.d.ts +1 -2
  200. package/lib/typescript/module/icons/ReactQueryIcon.d.ts.map +1 -1
  201. package/lib/typescript/module/icons/SentryBugIcon.d.ts +1 -2
  202. package/lib/typescript/module/icons/SentryBugIcon.d.ts.map +1 -1
  203. package/lib/typescript/module/index.d.ts +4 -1
  204. package/lib/typescript/module/index.d.ts.map +1 -1
  205. package/lib/typescript/module/license/AccountSetup.d.ts +4 -0
  206. package/lib/typescript/module/license/AccountSetup.d.ts.map +1 -0
  207. package/lib/typescript/module/license/AccountSetup.web.d.ts +2 -0
  208. package/lib/typescript/module/license/AccountSetup.web.d.ts.map +1 -0
  209. package/lib/typescript/module/license/FeatureGate.d.ts +3 -19
  210. package/lib/typescript/module/license/FeatureGate.d.ts.map +1 -1
  211. package/lib/typescript/module/license/FreeAccountPrompt.d.ts +8 -11
  212. package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +1 -1
  213. package/lib/typescript/module/license/index.d.ts +1 -1
  214. package/lib/typescript/module/license/index.d.ts.map +1 -1
  215. package/lib/typescript/module/license/licenseModule.d.ts +18 -31
  216. package/lib/typescript/module/license/licenseModule.d.ts.map +1 -1
  217. package/lib/typescript/module/license/tierLimits.d.ts +9 -52
  218. package/lib/typescript/module/license/tierLimits.d.ts.map +1 -1
  219. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +6 -0
  220. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +1 -1
  221. package/lib/typescript/module/stores/BaseEventStore.d.ts.map +1 -1
  222. package/lib/typescript/module/stores/createToolStore.d.ts.map +1 -1
  223. package/lib/typescript/module/stores/floatingToolStore.d.ts +27 -0
  224. package/lib/typescript/module/stores/floatingToolStore.d.ts.map +1 -0
  225. package/lib/typescript/module/stores/floatingToolStore.test.d.ts +2 -0
  226. package/lib/typescript/module/stores/floatingToolStore.test.d.ts.map +1 -0
  227. package/lib/typescript/module/sync/toolActionRegistry.d.ts +4 -32
  228. package/lib/typescript/module/sync/toolActionRegistry.d.ts.map +1 -1
  229. package/lib/typescript/module/ui/backgrounds/ToolBackground.d.ts +7 -1
  230. package/lib/typescript/module/ui/backgrounds/ToolBackground.d.ts.map +1 -1
  231. package/lib/typescript/module/ui/backgrounds/index.d.ts +2 -1
  232. package/lib/typescript/module/ui/backgrounds/index.d.ts.map +1 -1
  233. package/lib/typescript/module/ui/backgrounds/registry.d.ts.map +1 -1
  234. package/lib/typescript/module/ui/backgrounds/types.d.ts +11 -1
  235. package/lib/typescript/module/ui/backgrounds/types.d.ts.map +1 -1
  236. package/lib/typescript/module/ui/backgrounds/variants/wormhole/motion.d.ts +24 -0
  237. package/lib/typescript/module/ui/backgrounds/variants/wormhole/motion.d.ts.map +1 -0
  238. package/lib/typescript/module/ui/backgrounds/variants/wormhole/textures.d.ts +13 -0
  239. package/lib/typescript/module/ui/backgrounds/variants/wormhole/textures.d.ts.map +1 -0
  240. package/lib/typescript/module/ui/backgrounds/variants/wormhole.d.ts +3 -0
  241. package/lib/typescript/module/ui/backgrounds/variants/wormhole.d.ts.map +1 -0
  242. package/lib/typescript/module/ui/components/ClipboardHintBanner.d.ts.map +1 -1
  243. package/lib/typescript/module/ui/components/CompactRow.d.ts +8 -1
  244. package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -1
  245. package/lib/typescript/module/ui/components/DraggableHeader.d.ts +4 -1
  246. package/lib/typescript/module/ui/components/DraggableHeader.d.ts.map +1 -1
  247. package/lib/typescript/module/ui/components/HeaderSearchButton.d.ts +7 -1
  248. package/lib/typescript/module/ui/components/HeaderSearchButton.d.ts.map +1 -1
  249. package/lib/typescript/module/ui/floating/FloatingTool.d.ts +79 -0
  250. package/lib/typescript/module/ui/floating/FloatingTool.d.ts.map +1 -0
  251. package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts +64 -0
  252. package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts.map +1 -0
  253. package/lib/typescript/module/ui/floating/FloatingToolHost.d.ts +3 -0
  254. package/lib/typescript/module/ui/floating/FloatingToolHost.d.ts.map +1 -0
  255. package/lib/typescript/module/ui/floating/FloatingToolHost.web.d.ts +3 -0
  256. package/lib/typescript/module/ui/floating/FloatingToolHost.web.d.ts.map +1 -0
  257. package/lib/typescript/module/ui/floating/index.d.ts +7 -0
  258. package/lib/typescript/module/ui/floating/index.d.ts.map +1 -0
  259. package/lib/typescript/module/ui/floating/index.web.d.ts +7 -0
  260. package/lib/typescript/module/ui/floating/index.web.d.ts.map +1 -0
  261. package/lib/typescript/module/ui/floating/onboardingConstants.d.ts +30 -0
  262. package/lib/typescript/module/ui/floating/onboardingConstants.d.ts.map +1 -0
  263. package/lib/typescript/module/ui/floating/onboardingConstants.web.d.ts +13 -0
  264. package/lib/typescript/module/ui/floating/onboardingConstants.web.d.ts.map +1 -0
  265. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts +2 -0
  266. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
  267. package/lib/typescript/module/ui/index.d.ts +6 -0
  268. package/lib/typescript/module/ui/index.d.ts.map +1 -1
  269. package/lib/typescript/module/ui/night/nightTheme.d.ts +10 -0
  270. package/lib/typescript/module/ui/night/nightTheme.d.ts.map +1 -1
  271. package/lib/typescript/module/ui/night/primitives.d.ts +10 -3
  272. package/lib/typescript/module/ui/night/primitives.d.ts.map +1 -1
  273. package/lib/typescript/module/ui/otto/OttoSceneView.d.ts +30 -0
  274. package/lib/typescript/module/ui/otto/OttoSceneView.d.ts.map +1 -0
  275. package/lib/typescript/module/ui/otto/index.d.ts +2 -0
  276. package/lib/typescript/module/ui/otto/index.d.ts.map +1 -1
  277. package/lib/typescript/module/ui/otto/ottoEngine.d.ts +1 -1
  278. package/lib/typescript/module/ui/otto/ottoEngine.d.ts.map +1 -1
  279. package/lib/typescript/module/ui/otto/ottoScenes.d.ts +75 -0
  280. package/lib/typescript/module/ui/otto/ottoScenes.d.ts.map +1 -0
  281. package/lib/typescript/module/utils/minimalSuperJSON.d.ts.map +1 -1
  282. package/package.json +25 -5
  283. package/scripts/generate-wormhole-textures.cjs +261 -0
  284. package/scripts/test-wormhole-motion.cjs +59 -0
@@ -321,9 +321,19 @@ function deserialize(payload) {
321
321
  ...json
322
322
  };
323
323
 
324
- // Apply transformations
325
- for (const [pathString, type] of Object.entries(meta.values)) {
326
- const path = parsePath(pathString);
324
+ // Apply transformations deepest path first: a Map's own annotation turns
325
+ // its entries array into a Map, after which the paths INSIDE it (a Map
326
+ // held by one of its values, say) can no longer be reached by index. The
327
+ // walker records parents before children, so the order is reversed here.
328
+ const annotations = Object.entries(meta.values).map(([pathString, type]) => ({
329
+ pathString,
330
+ type,
331
+ path: parsePath(pathString)
332
+ })).sort((a, b) => b.path.length - a.path.length);
333
+ for (const {
334
+ type,
335
+ path
336
+ } of annotations) {
327
337
  if (path.length === 0) {
328
338
  // Root level transformation
329
339
  result = untransformValue(result, type);
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ import { getUseAccountAccess } from "./license/licenseModule.js";
4
+ import { AccountSetup } from "./license/AccountSetup";
3
5
  /**
4
6
  * JsModal - Ultra-optimized for true 60FPS performance
5
7
  *
@@ -377,6 +379,7 @@ const JsModalComponent = ({
377
379
  footerHeight = 0,
378
380
  onBack,
379
381
  onMinimize,
382
+ minimizeRequest = 0,
380
383
  minimizeTargetPosition,
381
384
  initialModalState,
382
385
  zIndex,
@@ -684,6 +687,12 @@ const JsModalComponent = ({
684
687
  });
685
688
  }
686
689
  }, [mode, onMinimize, minimizeTargetPosition, visibilityProgress, bottomSheetTranslateY, floatingScale, floatingPosition]);
690
+ const lastMinimizeRequest = useRef(minimizeRequest);
691
+ useEffect(() => {
692
+ if (lastMinimizeRequest.current === minimizeRequest) return;
693
+ lastMinimizeRequest.current = minimizeRequest;
694
+ handleMinimize();
695
+ }, [minimizeRequest, handleMinimize]);
687
696
 
688
697
  // Apply initial modal state when restoring from minimized
689
698
  useEffect(() => {
@@ -1792,4 +1801,10 @@ const footerStyles = StyleSheet.create({
1792
1801
  // ============================================================================
1793
1802
  // EXPORT - Memoized modal component for optimal performance
1794
1803
  // ============================================================================
1795
- export const JsModal = /*#__PURE__*/memo(JsModalComponent);
1804
+ export const JsModal = /*#__PURE__*/memo(props => {
1805
+ const access = getUseAccountAccess()();
1806
+ if (access.status !== "admitted") return props.visible ? /*#__PURE__*/_jsx(AccountSetup, {}) : null;
1807
+ return /*#__PURE__*/_jsx(JsModalComponent, {
1808
+ ...props
1809
+ });
1810
+ });
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ import { getUseAccountAccess } from "./license/licenseModule.js";
4
+ import { AccountSetup } from "./license/AccountSetup";
3
5
  /**
4
6
  * JsModal.web — DOM port of JsModal.tsx (React Native).
5
7
  *
@@ -753,6 +755,7 @@ const JsModalComponent = ({
753
755
  onBack: _onBack,
754
756
  // native never invokes it from JsModal either
755
757
  onMinimize,
758
+ minimizeRequest = 0,
756
759
  minimizeTargetPosition,
757
760
  initialModalState,
758
761
  zIndex,
@@ -958,6 +961,12 @@ const JsModalComponent = ({
958
961
  }, () => onMinimize(currentState)));
959
962
  }
960
963
  }, [mode, onMinimize, minimizeTargetPosition, cancelAnims]);
964
+ const lastMinimizeRequest = useRef(minimizeRequest);
965
+ useEffect(() => {
966
+ if (lastMinimizeRequest.current === minimizeRequest) return;
967
+ lastMinimizeRequest.current = minimizeRequest;
968
+ handleMinimize();
969
+ }, [minimizeRequest, handleMinimize]);
961
970
 
962
971
  // Apply initial modal state when restoring from minimized (native parity).
963
972
  useEffect(() => {
@@ -1630,4 +1639,10 @@ const JsModalComponent = ({
1630
1639
  // ============================================================================
1631
1640
  // EXPORT — memoized like native
1632
1641
  // ============================================================================
1633
- export const JsModal = /*#__PURE__*/memo(JsModalComponent);
1642
+ export const JsModal = /*#__PURE__*/memo(props => {
1643
+ const access = getUseAccountAccess()();
1644
+ if (access.status !== "admitted") return props.visible ? /*#__PURE__*/_jsx(AccountSetup, {}) : null;
1645
+ return /*#__PURE__*/_jsx(JsModalComponent, {
1646
+ ...props
1647
+ });
1648
+ });
@@ -222,7 +222,12 @@ export function CyberpunkInput({
222
222
  }), showDeleteButton && /*#__PURE__*/_jsx(TouchableOpacity, {
223
223
  style: [styles.deleteButton, isFocused && styles.deleteButtonFocused],
224
224
  onPress: onDelete,
225
- activeOpacity: 0.7,
225
+ activeOpacity: 0.7
226
+ // The same handle scheme container nodes use (`<node>-delete`):
227
+ // the input is `<node>-input`, so its delete is `<node>-delete`.
228
+ ,
229
+ testID: typeof props.testID === "string" && props.testID.endsWith("-input") ? `${props.testID.slice(0, -"-input".length)}-delete` : undefined,
230
+ accessibilityLabel: "Delete item",
226
231
  children: /*#__PURE__*/_jsx(Trash, {
227
232
  size: 14,
228
233
  strokeWidth: 2,
@@ -188,22 +188,29 @@ function ToggleValueButton({
188
188
  // Pre-compute styles based on value state
189
189
  const badgeStyle = value ? styles.toggleBadgeTrue : styles.toggleBadgeFalse;
190
190
  const textStyle = value ? styles.toggleTextTrue : styles.toggleTextFalse;
191
- return /*#__PURE__*/_jsxs(TouchableOpacity, {
192
- "sentry-label": "ignore devtools explorer toggle button",
193
- testID: `${testID}-toggle`,
194
- accessibilityRole: "button",
195
- accessibilityLabel: `${dataPath[dataPath.length - 1] ?? "value"}, ${value ? "true" : "false"}`,
196
- style: styles.modernToggleButton,
197
- onPress: handleClick,
198
- hitSlop: HIT_SLOP_OPTIMIZED,
199
- activeOpacity: 0.8,
200
- children: [/*#__PURE__*/_jsx(View, {
201
- style: [styles.toggleBadge, badgeStyle],
202
- children: /*#__PURE__*/_jsx(Text, {
203
- style: [styles.toggleBadgeText, textStyle],
204
- children: value ? "TRUE" : "FALSE"
191
+
192
+ // Two sibling buttons: on web each renders a real <button>, and a delete
193
+ // button inside the toggle button is invalid HTML (its press would also
194
+ // flip the toggle).
195
+ return /*#__PURE__*/_jsxs(View, {
196
+ style: styles.toggleRow,
197
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
198
+ "sentry-label": "ignore devtools explorer toggle button",
199
+ testID: `${testID}-toggle`,
200
+ accessibilityRole: "button",
201
+ accessibilityLabel: `${dataPath[dataPath.length - 1] ?? "value"}, ${value ? "true" : "false"}`,
202
+ style: styles.modernToggleButton,
203
+ onPress: handleClick,
204
+ hitSlop: HIT_SLOP_OPTIMIZED,
205
+ activeOpacity: 0.8,
206
+ children: /*#__PURE__*/_jsx(View, {
207
+ style: [styles.toggleBadge, badgeStyle],
208
+ children: /*#__PURE__*/_jsx(Text, {
209
+ style: [styles.toggleBadgeText, textStyle],
210
+ children: value ? "TRUE" : "FALSE"
211
+ })
205
212
  })
206
- }), removable && writer.remove && /*#__PURE__*/_jsx(TouchableOpacity, {
213
+ }), removable && writer.remove ? /*#__PURE__*/_jsx(TouchableOpacity, {
207
214
  "sentry-label": "ignore devtools explorer delete button in toggle",
208
215
  testID: `${testID}-delete`,
209
216
  accessibilityRole: "button",
@@ -217,7 +224,7 @@ function ToggleValueButton({
217
224
  strokeWidth: 2,
218
225
  color: night.color.danger + "CC"
219
226
  })
220
- })]
227
+ }) : null]
221
228
  });
222
229
  }
223
230
  // Optimized Explorer component following rule2 guidelines [[memory:4875251]]
@@ -860,6 +867,11 @@ const styles = StyleSheet.create({
860
867
  borderColor: night.color.textTertiary + "66",
861
868
  minHeight: 34
862
869
  },
870
+ toggleRow: {
871
+ flexDirection: "row",
872
+ alignItems: "center",
873
+ gap: 6
874
+ },
863
875
  modernToggleButton: {
864
876
  flexDirection: "row",
865
877
  alignItems: "center",
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * Auto-generated safe area implementation
5
5
  * Detected: none
6
- * Generated at: 2026-09-10T21:40:50.832Z
6
+ * Generated at: 2026-09-17T23:44:21.398Z
7
7
  *
8
8
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
9
9
  *
@@ -1,164 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import { View } from "react-native";
4
- import { IconBackground } from "./IconBackground.js";
5
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
6
- const ColorPresets = {
7
- red: {
8
- color: "#FF3366",
9
- glow: "#FF3366"
10
- },
11
- orange: {
12
- color: "#FF8800",
13
- glow: "#FF8800"
14
- },
15
- yellow: {
16
- color: "#FFD700",
17
- glow: "#FFD700"
18
- },
19
- purple: {
20
- color: "#9945FF",
21
- glow: "#9945FF"
22
- },
23
- cyan: {
24
- color: "#00D4FF",
25
- glow: "#00D4FF"
26
- },
27
- pink: {
28
- color: "#FF45FF",
29
- glow: "#FF45FF"
30
- }
31
- };
32
-
33
- // Simplified orbital dots
34
- const ORBITAL_DOTS = [{
35
- x: 0.08,
36
- y: 0.5
37
- }, {
38
- x: 0.92,
39
- y: 0.5
40
- }, {
41
- x: 0.5,
42
- y: 0.2
43
- }, {
44
- x: 0.5,
45
- y: 0.8
46
- }];
47
- export const ReactQueryIcon = ({
48
- size = 24,
49
- color,
50
- glowColor,
51
- colorPreset = "red",
52
- variant = "circuit",
53
- noBackground = true
54
- }) => {
55
- const scale = noBackground ? size / 24 : size / 60;
56
- const preset = ColorPresets[colorPreset] || ColorPresets.red;
57
- const activeColor = color || preset.color;
58
- const activeGlow = glowColor || preset.glow;
59
-
60
- // Simplified hexagon using loop
61
- const renderHexagon = () => {
62
- const hexWidth = 8 * scale;
63
- const hexHeight = 2.5 * scale;
64
- const hexLeft = size / 2 - hexWidth / 2;
65
- const hexTop = size / 2 - hexHeight / 2;
66
- const rotations = [0, 60, -60];
67
- return /*#__PURE__*/_jsxs(_Fragment, {
68
- children: [rotations.map((rotation, i) => /*#__PURE__*/_jsx(View, {
69
- style: {
70
- position: "absolute",
71
- width: hexWidth,
72
- height: hexHeight,
73
- backgroundColor: activeColor,
74
- left: hexLeft,
75
- top: hexTop,
76
- transform: rotation !== 0 ? [{
77
- rotate: `${rotation}deg`
78
- }] : undefined,
79
- opacity: 0.9
80
- }
81
- }, `hex-${i}`)), /*#__PURE__*/_jsx(View, {
82
- style: {
83
- position: "absolute",
84
- width: 10 * scale,
85
- height: 10 * scale,
86
- borderRadius: 2 * scale,
87
- backgroundColor: activeGlow,
88
- left: size / 2 - 5 * scale,
89
- top: size / 2 - 5 * scale,
90
- opacity: 0.15
91
- }
92
- })]
93
- });
94
- };
95
-
96
- // Simplified orbital lines using loop
97
- const renderOrbitalLines = () => {
98
- const lineLength = 18 * scale;
99
- const lineThickness = 2 * scale;
100
- const orbitRadius = lineThickness / 2;
101
- const rotations = [0, 60, -60];
102
- return /*#__PURE__*/_jsxs(_Fragment, {
103
- children: [rotations.map((rotation, i) => /*#__PURE__*/_jsx(View, {
104
- style: {
105
- position: "absolute",
106
- width: lineLength,
107
- height: lineThickness,
108
- backgroundColor: activeColor,
109
- borderRadius: orbitRadius,
110
- left: size / 2 - lineLength / 2,
111
- top: size / 2 - lineThickness / 2,
112
- transform: rotation !== 0 ? [{
113
- rotate: `${rotation}deg`
114
- }] : undefined,
115
- opacity: 0.7
116
- }
117
- }, `orbit-${i}`)), ORBITAL_DOTS.map((dot, i) => /*#__PURE__*/_jsx(View, {
118
- style: {
119
- position: "absolute",
120
- width: 2.5 * scale,
121
- height: 2.5 * scale,
122
- borderRadius: 1.25 * scale,
123
- backgroundColor: activeGlow,
124
- left: dot.x * size - 1.25 * scale,
125
- top: dot.y * size - 1.25 * scale,
126
- opacity: 0.5
127
- }
128
- }, `dot-${i}`))]
129
- });
130
- };
131
- const iconContent = /*#__PURE__*/_jsxs(_Fragment, {
132
- children: [renderOrbitalLines(), renderHexagon(), /*#__PURE__*/_jsx(View, {
133
- style: {
134
- position: "absolute",
135
- width: size * 0.7,
136
- height: size * 0.7,
137
- borderRadius: size * 0.35,
138
- borderWidth: 0.5 * scale,
139
- borderColor: activeGlow,
140
- left: size * 0.15,
141
- top: size * 0.15,
142
- opacity: 0.2
143
- }
144
- })]
145
- });
146
- if (noBackground) {
147
- return /*#__PURE__*/_jsx(View, {
148
- style: {
149
- width: size,
150
- height: size,
151
- position: "relative",
152
- alignItems: "center",
153
- justifyContent: "center"
154
- },
155
- children: iconContent
156
- });
157
- }
158
- return /*#__PURE__*/_jsx(IconBackground, {
159
- size: size,
160
- glowColor: activeGlow,
161
- variant: variant,
162
- children: iconContent
3
+ // Compatibility export: all tool surfaces use the approved raster artwork.
4
+ import { QueryIcon } from "@buoy-gg/floating-tools-core";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ export function ReactQueryIcon({
7
+ size = 24
8
+ }) {
9
+ return /*#__PURE__*/_jsx(QueryIcon, {
10
+ size: size
163
11
  });
164
- };
12
+ }
@@ -1,176 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import { Fragment } from "react";
4
- import { View } from "react-native";
5
- import { IconBackground } from "./IconBackground.js";
6
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
7
- const ColorPresets = {
8
- red: {
9
- color: "#FF3366",
10
- glow: "#FF3366"
11
- },
12
- purple: {
13
- color: "#9945FF",
14
- glow: "#9945FF"
15
- },
16
- orange: {
17
- color: "#FF8800",
18
- glow: "#FF8800"
19
- },
20
- pink: {
21
- color: "#FF45FF",
22
- glow: "#FF45FF"
23
- },
24
- cyan: {
25
- color: "#00D4FF",
26
- glow: "#00D4FF"
27
- },
28
- green: {
29
- color: "#00FF88",
30
- glow: "#00FF88"
31
- }
32
- };
33
-
34
- // Leg positions simplified
35
- const LEGS = [{
36
- y: 0.3,
37
- side: "left",
38
- rotation: -20
39
- }, {
40
- y: 0.5,
41
- side: "left",
42
- rotation: -20
43
- }, {
44
- y: 0.7,
45
- side: "left",
46
- rotation: -20
47
- }, {
48
- y: 0.3,
49
- side: "right",
50
- rotation: 20
51
- }, {
52
- y: 0.5,
53
- side: "right",
54
- rotation: 20
55
- }, {
56
- y: 0.7,
57
- side: "right",
58
- rotation: 20
59
- }];
60
- export const SentryBugIcon = ({
3
+ // Compatibility export: all tool surfaces use the approved raster artwork.
4
+ import { SentryIcon } from "@buoy-gg/floating-tools-core";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ export function SentryBugIcon({
61
7
  size = 24,
62
- color,
63
- glowColor,
64
- colorPreset = "red",
65
- variant = "circuit",
66
- noBackground = true
67
- }) => {
68
- const scale = noBackground ? size / 24 : size / 60;
69
- const preset = ColorPresets[colorPreset] || ColorPresets.red;
70
- const activeColor = color || preset.color;
71
- const activeGlow = glowColor || preset.glow;
72
- const iconContent = /*#__PURE__*/_jsxs(_Fragment, {
73
- children: [/*#__PURE__*/_jsx(View, {
74
- style: {
75
- position: "absolute",
76
- width: 12 * scale,
77
- height: 14 * scale,
78
- borderRadius: 6 * scale,
79
- backgroundColor: activeColor,
80
- left: size / 2 - 6 * scale,
81
- top: size / 2 - 5 * scale,
82
- opacity: 0.9
83
- }
84
- }), /*#__PURE__*/_jsx(View, {
85
- style: {
86
- position: "absolute",
87
- width: 8 * scale,
88
- height: 6 * scale,
89
- borderRadius: 4 * scale,
90
- backgroundColor: activeColor,
91
- left: size / 2 - 4 * scale,
92
- top: size / 2 - 9 * scale,
93
- opacity: 0.95
94
- }
95
- }), /*#__PURE__*/_jsx(View, {
96
- style: {
97
- position: "absolute",
98
- width: 14 * scale,
99
- height: 16 * scale,
100
- borderRadius: 7 * scale,
101
- backgroundColor: activeGlow,
102
- left: size / 2 - 7 * scale,
103
- top: size / 2 - 6 * scale,
104
- opacity: 0.15
105
- }
106
- }), LEGS.map((leg, i) => /*#__PURE__*/_jsx(View, {
107
- style: {
108
- position: "absolute",
109
- width: 4 * scale,
110
- height: 0.8 * scale,
111
- backgroundColor: activeColor,
112
- [leg.side]: size / 2 - 10 * scale,
113
- top: size / 2 - 4 * scale + leg.y * 10 * scale,
114
- transform: [{
115
- rotate: `${leg.rotation}deg`
116
- }],
117
- opacity: 0.8
118
- }
119
- }, `leg-${i}`)), [-15, 15].map((rotation, i) => /*#__PURE__*/_jsxs(Fragment, {
120
- children: [/*#__PURE__*/_jsx(View, {
121
- style: {
122
- position: "absolute",
123
- width: 0.5 * scale,
124
- height: 4 * scale,
125
- backgroundColor: activeColor,
126
- [i === 0 ? "left" : "right"]: size / 2 - 2 * scale,
127
- top: size / 2 - 11 * scale,
128
- transform: [{
129
- rotate: `${rotation}deg`
130
- }],
131
- opacity: 0.7
132
- }
133
- }), /*#__PURE__*/_jsx(View, {
134
- style: {
135
- position: "absolute",
136
- width: 1.5 * scale,
137
- height: 1.5 * scale,
138
- borderRadius: 0.75 * scale,
139
- backgroundColor: activeGlow,
140
- [i === 0 ? "left" : "right"]: size / 2 - 3 * scale,
141
- top: size / 2 - 12 * scale,
142
- opacity: 0.6
143
- }
144
- })]
145
- }, `antenna-${i}`)), /*#__PURE__*/_jsx(View, {
146
- style: {
147
- position: "absolute",
148
- width: 1 * scale,
149
- height: 1 * scale,
150
- borderRadius: 0.5 * scale,
151
- backgroundColor: "#fff",
152
- left: size / 2 - 0.5 * scale,
153
- top: size / 2,
154
- opacity: 0.3
155
- }
156
- })]
157
- });
158
- if (noBackground) {
159
- return /*#__PURE__*/_jsx(View, {
160
- style: {
161
- width: size,
162
- height: size,
163
- position: "relative",
164
- alignItems: "center",
165
- justifyContent: "center"
166
- },
167
- children: iconContent
168
- });
169
- }
170
- return /*#__PURE__*/_jsx(IconBackground, {
8
+ color
9
+ }) {
10
+ return /*#__PURE__*/_jsx(SentryIcon, {
171
11
  size: size,
172
- glowColor: activeGlow,
173
- variant: variant,
174
- children: iconContent
12
+ color: color ?? "#9945FF"
175
13
  });
176
- };
14
+ }
@@ -102,4 +102,7 @@ export { HintsProvider, useHintsDisabled, useHintsContext } from "./context/inde
102
102
  export * from "./history/index.js";
103
103
 
104
104
  // License/Feature gating exports
105
- export { FeatureGate, UpgradePrompt, useFeatureGate, ProFeatureBanner, UpgradeModal, LicenseEntryModal, ProBadge, ProUpgradeModal, FreeAccountPrompt, LOGIN_COMMAND, getUseIsPro, getUseLicense, getUseTier, TIER_LIMITS, useLimit, resolveEffectiveTier, freeKeyRaises } from "./license/index.js";
105
+ export { FeatureGate, UpgradePrompt, useFeatureGate, ProFeatureBanner, UpgradeModal, LicenseEntryModal, ProBadge, ProUpgradeModal, FreeAccountPrompt, LOGIN_COMMAND, getUseIsPro, getUseLicense, getUseTier, TIER_LIMITS, useLimit, resolveEffectiveTier } from "./license/index.js";
106
+ export { getAccountAccess, hasAccountAccess, assertAccountAccess, subscribeAccountAccess, getUseAccountAccess, retryAccountAccess } from "./license/licenseModule.js";
107
+ export { guardToolAdapter } from "./sync/toolActionRegistry.js";
108
+ export { AccountSetup } from "./license/AccountSetup";
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ import React, { useState } from "react";
4
+ import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
5
+ import { FreeAccountPrompt } from "./FreeAccountPrompt.js";
6
+ import { getUseAccountAccess } from "./licenseModule.js";
7
+ import { buoyColors } from "../ui/gameUI/constants/gameUIColors.js";
8
+
9
+ /** The host app remains usable; only the Buoy launcher opens setup. */
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ export function AccountSetup() {
12
+ const access = getUseAccountAccess()();
13
+ const [open, setOpen] = useState(false);
14
+ return /*#__PURE__*/_jsxs(View, {
15
+ pointerEvents: "box-none",
16
+ 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
+ })
26
+ }), /*#__PURE__*/_jsx(FreeAccountPrompt, {
27
+ visible: open,
28
+ onClose: () => setOpen(false)
29
+ })]
30
+ });
31
+ }
32
+ const styles = StyleSheet.create({
33
+ root: {
34
+ position: "absolute",
35
+ bottom: 30,
36
+ right: 16,
37
+ 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
+ }
52
+ });