@buoy-gg/shared-ui 7.0.33 → 7.0.35

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 (323) hide show
  1. package/lib/commonjs/JsModal.js +57 -22
  2. package/lib/commonjs/dataViewer/CyberpunkInput.js +3 -2
  3. package/lib/commonjs/dataViewer/DataTreeActionBar.js +3 -2
  4. package/lib/commonjs/dataViewer/DataTreeActionDock.js +2 -1
  5. package/lib/commonjs/dataViewer/DiffSummary.js +4 -3
  6. package/lib/commonjs/dataViewer/LiveExplorer.js +11 -10
  7. package/lib/commonjs/dataViewer/SplitDiffViewer.js +10 -9
  8. package/lib/commonjs/dataViewer/ThemedSplitView.js +12 -11
  9. package/lib/commonjs/dataViewer/ValueEditModal.js +6 -5
  10. package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +4 -3
  11. package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +15 -14
  12. package/lib/commonjs/hooks/index.js +26 -0
  13. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  14. package/lib/commonjs/hooks/useChangeLog.js +55 -0
  15. package/lib/commonjs/hooks/useEventStoreEvents.js +65 -0
  16. package/lib/commonjs/hooks/usePersistedState.js +45 -10
  17. package/lib/commonjs/icons/index.js +533 -1
  18. package/lib/commonjs/index.js +143 -0
  19. package/lib/commonjs/license/FreeAccountPrompt.js +2 -1
  20. package/lib/commonjs/license/LicenseEntryModal.js +2 -1
  21. package/lib/commonjs/storage/definePersistedSetting.js +67 -0
  22. package/lib/commonjs/storage/index.js +8 -1
  23. package/lib/commonjs/stores/ChangeLog.js +197 -0
  24. package/lib/commonjs/stores/createToolStore.js +175 -0
  25. package/lib/commonjs/stores/index.js +15 -1
  26. package/lib/commonjs/sync/toolSyncAdapter.js +63 -0
  27. package/lib/commonjs/sync/wireForm.js +172 -0
  28. package/lib/commonjs/tools/defineTool.js +79 -0
  29. package/lib/commonjs/ui/components/ChangeRow.js +111 -0
  30. package/lib/commonjs/ui/components/ChipStrip.js +94 -0
  31. package/lib/commonjs/ui/components/ClipboardHintBanner.js +2 -1
  32. package/lib/commonjs/ui/components/CompactRow.js +3 -2
  33. package/lib/commonjs/ui/components/DataInspector.js +3 -2
  34. package/lib/commonjs/ui/components/DetailView.js +2 -1
  35. package/lib/commonjs/ui/components/DetailViewToggle.js +130 -0
  36. package/lib/commonjs/ui/components/DevToolsCard.js +3 -1
  37. package/lib/commonjs/ui/components/DynamicFilterView.js +8 -7
  38. package/lib/commonjs/ui/components/EntityFilterView.js +355 -0
  39. package/lib/commonjs/ui/components/EventHistoryViewer/CompareBar.js +5 -4
  40. package/lib/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.js +2 -1
  41. package/lib/commonjs/ui/components/EventHistoryViewer/EventPickerModal.js +5 -4
  42. package/lib/commonjs/ui/components/EventStepperFooter.js +4 -3
  43. package/lib/commonjs/ui/components/ExpandablePopover.js +12 -4
  44. package/lib/commonjs/ui/components/ExpandedInfoRow.js +3 -2
  45. package/lib/commonjs/ui/components/ExportPreview.js +174 -0
  46. package/lib/commonjs/ui/components/FilterComponents.js +2 -1
  47. package/lib/commonjs/ui/components/InfoRow.js +91 -0
  48. package/lib/commonjs/ui/components/ModalHeader.js +40 -7
  49. package/lib/commonjs/ui/components/Pill.js +115 -0
  50. package/lib/commonjs/ui/components/ToggleRow.js +116 -0
  51. package/lib/commonjs/ui/components/ToolFooter.js +205 -0
  52. package/lib/commonjs/ui/components/index.js +100 -1
  53. package/lib/commonjs/ui/console/CyberpunkSectionButton.js +3 -2
  54. package/lib/commonjs/ui/fonts.js +12 -0
  55. package/lib/commonjs/ui/gameUI/components/GameUICollapsibleSection.js +4 -3
  56. package/lib/commonjs/ui/gameUI/components/GameUICompactStats.js +12 -11
  57. package/lib/commonjs/ui/gameUI/components/GameUIIssuesList.js +9 -8
  58. package/lib/commonjs/ui/gameUI/components/GameUIStatusHeader.js +4 -3
  59. package/lib/commonjs/ui/index.js +32 -2
  60. package/lib/commonjs/ui/listPresets.js +43 -0
  61. package/lib/commonjs/ui/night/primitives.js +3 -1
  62. package/lib/commonjs/ui/toolTheme.js +4 -3
  63. package/lib/commonjs/utils/snapshotProviderKit.js +167 -0
  64. package/lib/commonjs/utils/stateTools.js +160 -0
  65. package/lib/module/JsModal.js +57 -22
  66. package/lib/module/dataViewer/CyberpunkInput.js +3 -2
  67. package/lib/module/dataViewer/DataTreeActionBar.js +3 -2
  68. package/lib/module/dataViewer/DataTreeActionDock.js +2 -1
  69. package/lib/module/dataViewer/DiffSummary.js +4 -3
  70. package/lib/module/dataViewer/LiveExplorer.js +11 -11
  71. package/lib/module/dataViewer/SplitDiffViewer.js +10 -9
  72. package/lib/module/dataViewer/ThemedSplitView.js +12 -11
  73. package/lib/module/dataViewer/ValueEditModal.js +6 -5
  74. package/lib/module/dataViewer/VirtualizedDataExplorer.js +5 -4
  75. package/lib/module/dataViewer/tree/TreeDiffViewer.js +15 -15
  76. package/lib/module/hooks/index.js +3 -1
  77. package/lib/module/hooks/safe-area-impl.js +1 -1
  78. package/lib/module/hooks/useChangeLog.js +50 -0
  79. package/lib/module/hooks/useEventStoreEvents.js +61 -0
  80. package/lib/module/hooks/usePersistedState.js +44 -10
  81. package/lib/module/icons/index.js +27 -2
  82. package/lib/module/index.js +11 -1
  83. package/lib/module/license/FreeAccountPrompt.js +2 -2
  84. package/lib/module/license/LicenseEntryModal.js +3 -3
  85. package/lib/module/storage/definePersistedSetting.js +63 -0
  86. package/lib/module/storage/index.js +2 -1
  87. package/lib/module/stores/ChangeLog.js +192 -0
  88. package/lib/module/stores/createToolStore.js +171 -0
  89. package/lib/module/stores/index.js +3 -1
  90. package/lib/module/sync/toolSyncAdapter.js +58 -0
  91. package/lib/module/sync/wireForm.js +159 -0
  92. package/lib/module/tools/defineTool.js +74 -0
  93. package/lib/module/ui/components/ChangeRow.js +106 -0
  94. package/lib/module/ui/components/ChipStrip.js +91 -0
  95. package/lib/module/ui/components/ClipboardHintBanner.js +2 -1
  96. package/lib/module/ui/components/CompactRow.js +3 -2
  97. package/lib/module/ui/components/DataInspector.js +3 -2
  98. package/lib/module/ui/components/DetailView.js +2 -1
  99. package/lib/module/ui/components/DetailViewToggle.js +125 -0
  100. package/lib/module/ui/components/DevToolsCard.js +3 -1
  101. package/lib/module/ui/components/DynamicFilterView.js +8 -7
  102. package/lib/module/ui/components/EntityFilterView.js +351 -0
  103. package/lib/module/ui/components/EventHistoryViewer/CompareBar.js +6 -5
  104. package/lib/module/ui/components/EventHistoryViewer/DiffModeTabs.js +3 -2
  105. package/lib/module/ui/components/EventHistoryViewer/EventPickerModal.js +6 -5
  106. package/lib/module/ui/components/EventStepperFooter.js +4 -3
  107. package/lib/module/ui/components/ExpandablePopover.js +12 -4
  108. package/lib/module/ui/components/ExpandedInfoRow.js +3 -2
  109. package/lib/module/ui/components/ExportPreview.js +169 -0
  110. package/lib/module/ui/components/FilterComponents.js +2 -2
  111. package/lib/module/ui/components/InfoRow.js +87 -0
  112. package/lib/module/ui/components/ModalHeader.js +40 -7
  113. package/lib/module/ui/components/Pill.js +111 -0
  114. package/lib/module/ui/components/ToggleRow.js +112 -0
  115. package/lib/module/ui/components/ToolFooter.js +197 -0
  116. package/lib/module/ui/components/index.js +10 -1
  117. package/lib/module/ui/console/CyberpunkSectionButton.js +3 -2
  118. package/lib/module/ui/fonts.js +8 -0
  119. package/lib/module/ui/gameUI/components/GameUICollapsibleSection.js +4 -3
  120. package/lib/module/ui/gameUI/components/GameUICompactStats.js +12 -11
  121. package/lib/module/ui/gameUI/components/GameUIIssuesList.js +9 -8
  122. package/lib/module/ui/gameUI/components/GameUIStatusHeader.js +4 -3
  123. package/lib/module/ui/index.js +7 -1
  124. package/lib/module/ui/listPresets.js +39 -0
  125. package/lib/module/ui/night/primitives.js +3 -1
  126. package/lib/module/ui/toolTheme.js +4 -4
  127. package/lib/module/utils/snapshotProviderKit.js +156 -0
  128. package/lib/module/utils/stateTools.js +154 -0
  129. package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
  130. package/lib/typescript/commonjs/dataViewer/CyberpunkInput.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/dataViewer/DataTreeActionBar.d.ts.map +1 -1
  132. package/lib/typescript/commonjs/dataViewer/DataTreeActionDock.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/dataViewer/DiffSummary.d.ts.map +1 -1
  134. package/lib/typescript/commonjs/dataViewer/LiveExplorer.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/dataViewer/SplitDiffViewer.d.ts.map +1 -1
  136. package/lib/typescript/commonjs/dataViewer/ThemedSplitView.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/dataViewer/ValueEditModal.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  140. package/lib/typescript/commonjs/hooks/index.d.ts +3 -1
  141. package/lib/typescript/commonjs/hooks/index.d.ts.map +1 -1
  142. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  143. package/lib/typescript/commonjs/hooks/useChangeLog.d.ts +38 -0
  144. package/lib/typescript/commonjs/hooks/useChangeLog.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/hooks/useEventStoreEvents.d.ts +25 -0
  146. package/lib/typescript/commonjs/hooks/useEventStoreEvents.d.ts.map +1 -0
  147. package/lib/typescript/commonjs/hooks/usePersistedState.d.ts +34 -5
  148. package/lib/typescript/commonjs/hooks/usePersistedState.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/icons/index.d.ts +4 -1
  150. package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/index.d.ts +6 -1
  152. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  153. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +1 -1
  155. package/lib/typescript/commonjs/storage/definePersistedSetting.d.ts +39 -0
  156. package/lib/typescript/commonjs/storage/definePersistedSetting.d.ts.map +1 -0
  157. package/lib/typescript/commonjs/storage/index.d.ts +1 -0
  158. package/lib/typescript/commonjs/storage/index.d.ts.map +1 -1
  159. package/lib/typescript/commonjs/stores/ChangeLog.d.ts +100 -0
  160. package/lib/typescript/commonjs/stores/ChangeLog.d.ts.map +1 -0
  161. package/lib/typescript/commonjs/stores/createToolStore.d.ts +92 -0
  162. package/lib/typescript/commonjs/stores/createToolStore.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/stores/index.d.ts +2 -0
  164. package/lib/typescript/commonjs/stores/index.d.ts.map +1 -1
  165. package/lib/typescript/commonjs/sync/toolSyncAdapter.d.ts +66 -0
  166. package/lib/typescript/commonjs/sync/toolSyncAdapter.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/sync/wireForm.d.ts +100 -0
  168. package/lib/typescript/commonjs/sync/wireForm.d.ts.map +1 -0
  169. package/lib/typescript/commonjs/tools/defineTool.d.ts +100 -0
  170. package/lib/typescript/commonjs/tools/defineTool.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/ui/components/ChangeRow.d.ts +52 -0
  172. package/lib/typescript/commonjs/ui/components/ChangeRow.d.ts.map +1 -0
  173. package/lib/typescript/commonjs/ui/components/ChipStrip.d.ts +41 -0
  174. package/lib/typescript/commonjs/ui/components/ChipStrip.d.ts.map +1 -0
  175. package/lib/typescript/commonjs/ui/components/ClipboardHintBanner.d.ts.map +1 -1
  176. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -1
  177. package/lib/typescript/commonjs/ui/components/DataInspector.d.ts.map +1 -1
  178. package/lib/typescript/commonjs/ui/components/DetailView.d.ts.map +1 -1
  179. package/lib/typescript/commonjs/ui/components/DetailViewToggle.d.ts +36 -0
  180. package/lib/typescript/commonjs/ui/components/DetailViewToggle.d.ts.map +1 -0
  181. package/lib/typescript/commonjs/ui/components/DevToolsCard.d.ts +8 -1
  182. package/lib/typescript/commonjs/ui/components/DevToolsCard.d.ts.map +1 -1
  183. package/lib/typescript/commonjs/ui/components/DynamicFilterView.d.ts.map +1 -1
  184. package/lib/typescript/commonjs/ui/components/EntityFilterView.d.ts +51 -0
  185. package/lib/typescript/commonjs/ui/components/EntityFilterView.d.ts.map +1 -0
  186. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/CompareBar.d.ts.map +1 -1
  187. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +1 -1
  188. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +1 -1
  189. package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts.map +1 -1
  190. package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts +5 -1
  191. package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts.map +1 -1
  192. package/lib/typescript/commonjs/ui/components/ExpandedInfoRow.d.ts.map +1 -1
  193. package/lib/typescript/commonjs/ui/components/ExportPreview.d.ts +48 -0
  194. package/lib/typescript/commonjs/ui/components/ExportPreview.d.ts.map +1 -0
  195. package/lib/typescript/commonjs/ui/components/FilterComponents.d.ts.map +1 -1
  196. package/lib/typescript/commonjs/ui/components/InfoRow.d.ts +33 -0
  197. package/lib/typescript/commonjs/ui/components/InfoRow.d.ts.map +1 -0
  198. package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts +31 -1
  199. package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts.map +1 -1
  200. package/lib/typescript/commonjs/ui/components/Pill.d.ts +38 -0
  201. package/lib/typescript/commonjs/ui/components/Pill.d.ts.map +1 -0
  202. package/lib/typescript/commonjs/ui/components/ToggleRow.d.ts +33 -0
  203. package/lib/typescript/commonjs/ui/components/ToggleRow.d.ts.map +1 -0
  204. package/lib/typescript/commonjs/ui/components/ToolFooter.d.ts +69 -0
  205. package/lib/typescript/commonjs/ui/components/ToolFooter.d.ts.map +1 -0
  206. package/lib/typescript/commonjs/ui/components/index.d.ts +9 -0
  207. package/lib/typescript/commonjs/ui/components/index.d.ts.map +1 -1
  208. package/lib/typescript/commonjs/ui/console/CyberpunkSectionButton.d.ts.map +1 -1
  209. package/lib/typescript/commonjs/ui/fonts.d.ts +7 -0
  210. package/lib/typescript/commonjs/ui/fonts.d.ts.map +1 -0
  211. package/lib/typescript/commonjs/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +1 -1
  212. package/lib/typescript/commonjs/ui/gameUI/components/GameUICompactStats.d.ts.map +1 -1
  213. package/lib/typescript/commonjs/ui/gameUI/components/GameUIIssuesList.d.ts.map +1 -1
  214. package/lib/typescript/commonjs/ui/gameUI/components/GameUIStatusHeader.d.ts.map +1 -1
  215. package/lib/typescript/commonjs/ui/index.d.ts +2 -0
  216. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
  217. package/lib/typescript/commonjs/ui/listPresets.d.ts +28 -0
  218. package/lib/typescript/commonjs/ui/listPresets.d.ts.map +1 -0
  219. package/lib/typescript/commonjs/ui/night/primitives.d.ts +3 -1
  220. package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +1 -1
  221. package/lib/typescript/commonjs/ui/toolTheme.d.ts.map +1 -1
  222. package/lib/typescript/commonjs/utils/snapshotProviderKit.d.ts +81 -0
  223. package/lib/typescript/commonjs/utils/snapshotProviderKit.d.ts.map +1 -0
  224. package/lib/typescript/commonjs/utils/stateTools.d.ts +44 -0
  225. package/lib/typescript/commonjs/utils/stateTools.d.ts.map +1 -0
  226. package/lib/typescript/module/JsModal.d.ts.map +1 -1
  227. package/lib/typescript/module/dataViewer/CyberpunkInput.d.ts.map +1 -1
  228. package/lib/typescript/module/dataViewer/DataTreeActionBar.d.ts.map +1 -1
  229. package/lib/typescript/module/dataViewer/DataTreeActionDock.d.ts.map +1 -1
  230. package/lib/typescript/module/dataViewer/DiffSummary.d.ts.map +1 -1
  231. package/lib/typescript/module/dataViewer/LiveExplorer.d.ts.map +1 -1
  232. package/lib/typescript/module/dataViewer/SplitDiffViewer.d.ts.map +1 -1
  233. package/lib/typescript/module/dataViewer/ThemedSplitView.d.ts.map +1 -1
  234. package/lib/typescript/module/dataViewer/ValueEditModal.d.ts.map +1 -1
  235. package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
  236. package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  237. package/lib/typescript/module/hooks/index.d.ts +3 -1
  238. package/lib/typescript/module/hooks/index.d.ts.map +1 -1
  239. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  240. package/lib/typescript/module/hooks/useChangeLog.d.ts +38 -0
  241. package/lib/typescript/module/hooks/useChangeLog.d.ts.map +1 -0
  242. package/lib/typescript/module/hooks/useEventStoreEvents.d.ts +25 -0
  243. package/lib/typescript/module/hooks/useEventStoreEvents.d.ts.map +1 -0
  244. package/lib/typescript/module/hooks/usePersistedState.d.ts +34 -5
  245. package/lib/typescript/module/hooks/usePersistedState.d.ts.map +1 -1
  246. package/lib/typescript/module/icons/index.d.ts +4 -1
  247. package/lib/typescript/module/icons/index.d.ts.map +1 -1
  248. package/lib/typescript/module/index.d.ts +6 -1
  249. package/lib/typescript/module/index.d.ts.map +1 -1
  250. package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +1 -1
  251. package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +1 -1
  252. package/lib/typescript/module/storage/definePersistedSetting.d.ts +39 -0
  253. package/lib/typescript/module/storage/definePersistedSetting.d.ts.map +1 -0
  254. package/lib/typescript/module/storage/index.d.ts +1 -0
  255. package/lib/typescript/module/storage/index.d.ts.map +1 -1
  256. package/lib/typescript/module/stores/ChangeLog.d.ts +100 -0
  257. package/lib/typescript/module/stores/ChangeLog.d.ts.map +1 -0
  258. package/lib/typescript/module/stores/createToolStore.d.ts +92 -0
  259. package/lib/typescript/module/stores/createToolStore.d.ts.map +1 -0
  260. package/lib/typescript/module/stores/index.d.ts +2 -0
  261. package/lib/typescript/module/stores/index.d.ts.map +1 -1
  262. package/lib/typescript/module/sync/toolSyncAdapter.d.ts +66 -0
  263. package/lib/typescript/module/sync/toolSyncAdapter.d.ts.map +1 -0
  264. package/lib/typescript/module/sync/wireForm.d.ts +100 -0
  265. package/lib/typescript/module/sync/wireForm.d.ts.map +1 -0
  266. package/lib/typescript/module/tools/defineTool.d.ts +100 -0
  267. package/lib/typescript/module/tools/defineTool.d.ts.map +1 -0
  268. package/lib/typescript/module/ui/components/ChangeRow.d.ts +52 -0
  269. package/lib/typescript/module/ui/components/ChangeRow.d.ts.map +1 -0
  270. package/lib/typescript/module/ui/components/ChipStrip.d.ts +41 -0
  271. package/lib/typescript/module/ui/components/ChipStrip.d.ts.map +1 -0
  272. package/lib/typescript/module/ui/components/ClipboardHintBanner.d.ts.map +1 -1
  273. package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -1
  274. package/lib/typescript/module/ui/components/DataInspector.d.ts.map +1 -1
  275. package/lib/typescript/module/ui/components/DetailView.d.ts.map +1 -1
  276. package/lib/typescript/module/ui/components/DetailViewToggle.d.ts +36 -0
  277. package/lib/typescript/module/ui/components/DetailViewToggle.d.ts.map +1 -0
  278. package/lib/typescript/module/ui/components/DevToolsCard.d.ts +8 -1
  279. package/lib/typescript/module/ui/components/DevToolsCard.d.ts.map +1 -1
  280. package/lib/typescript/module/ui/components/DynamicFilterView.d.ts.map +1 -1
  281. package/lib/typescript/module/ui/components/EntityFilterView.d.ts +51 -0
  282. package/lib/typescript/module/ui/components/EntityFilterView.d.ts.map +1 -0
  283. package/lib/typescript/module/ui/components/EventHistoryViewer/CompareBar.d.ts.map +1 -1
  284. package/lib/typescript/module/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +1 -1
  285. package/lib/typescript/module/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +1 -1
  286. package/lib/typescript/module/ui/components/EventStepperFooter.d.ts.map +1 -1
  287. package/lib/typescript/module/ui/components/ExpandablePopover.d.ts +5 -1
  288. package/lib/typescript/module/ui/components/ExpandablePopover.d.ts.map +1 -1
  289. package/lib/typescript/module/ui/components/ExpandedInfoRow.d.ts.map +1 -1
  290. package/lib/typescript/module/ui/components/ExportPreview.d.ts +48 -0
  291. package/lib/typescript/module/ui/components/ExportPreview.d.ts.map +1 -0
  292. package/lib/typescript/module/ui/components/FilterComponents.d.ts.map +1 -1
  293. package/lib/typescript/module/ui/components/InfoRow.d.ts +33 -0
  294. package/lib/typescript/module/ui/components/InfoRow.d.ts.map +1 -0
  295. package/lib/typescript/module/ui/components/ModalHeader.d.ts +31 -1
  296. package/lib/typescript/module/ui/components/ModalHeader.d.ts.map +1 -1
  297. package/lib/typescript/module/ui/components/Pill.d.ts +38 -0
  298. package/lib/typescript/module/ui/components/Pill.d.ts.map +1 -0
  299. package/lib/typescript/module/ui/components/ToggleRow.d.ts +33 -0
  300. package/lib/typescript/module/ui/components/ToggleRow.d.ts.map +1 -0
  301. package/lib/typescript/module/ui/components/ToolFooter.d.ts +69 -0
  302. package/lib/typescript/module/ui/components/ToolFooter.d.ts.map +1 -0
  303. package/lib/typescript/module/ui/components/index.d.ts +9 -0
  304. package/lib/typescript/module/ui/components/index.d.ts.map +1 -1
  305. package/lib/typescript/module/ui/console/CyberpunkSectionButton.d.ts.map +1 -1
  306. package/lib/typescript/module/ui/fonts.d.ts +7 -0
  307. package/lib/typescript/module/ui/fonts.d.ts.map +1 -0
  308. package/lib/typescript/module/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +1 -1
  309. package/lib/typescript/module/ui/gameUI/components/GameUICompactStats.d.ts.map +1 -1
  310. package/lib/typescript/module/ui/gameUI/components/GameUIIssuesList.d.ts.map +1 -1
  311. package/lib/typescript/module/ui/gameUI/components/GameUIStatusHeader.d.ts.map +1 -1
  312. package/lib/typescript/module/ui/index.d.ts +2 -0
  313. package/lib/typescript/module/ui/index.d.ts.map +1 -1
  314. package/lib/typescript/module/ui/listPresets.d.ts +28 -0
  315. package/lib/typescript/module/ui/listPresets.d.ts.map +1 -0
  316. package/lib/typescript/module/ui/night/primitives.d.ts +3 -1
  317. package/lib/typescript/module/ui/night/primitives.d.ts.map +1 -1
  318. package/lib/typescript/module/ui/toolTheme.d.ts.map +1 -1
  319. package/lib/typescript/module/utils/snapshotProviderKit.d.ts +81 -0
  320. package/lib/typescript/module/utils/snapshotProviderKit.d.ts.map +1 -0
  321. package/lib/typescript/module/utils/stateTools.d.ts +44 -0
  322. package/lib/typescript/module/utils/stateTools.d.ts.map +1 -0
  323. package/package.json +4 -4
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * ToolSyncAdapter — the contract a tool implements to sync to Buoy Desktop /
5
+ * the MCP server, plus `createSyncAdapter`, the one way to build one.
6
+ *
7
+ * Every tool package used to declare its adapter as a bare object literal
8
+ * with the comment "structurally matches external-sync's ToolSyncAdapter so
9
+ * this package doesn't need a dependency on it". That kept the packages
10
+ * decoupled but left the contract unchecked: storage shipped `version: 3`
11
+ * while every sibling was on 2 and nothing noticed. The type now lives here,
12
+ * in shared (which every tool already depends on), and external-sync
13
+ * re-exports it — one definition, checked everywhere.
14
+ *
15
+ * `createSyncAdapter` is deliberately thin. It:
16
+ * - type-checks the literal against the contract (a wrong `subscribe`
17
+ * signature or a non-function action fails at compile time),
18
+ * - keeps the CONCRETE `actions` type, so `adapter.actions.getChangeDetail()`
19
+ * stays typed for tests and callers,
20
+ * - merges several change sources into one `subscribe` (a store plus its
21
+ * registry, envelopes plus drops) — the second most-copied block.
22
+ */
23
+
24
+ /** A remote-invocable action. Thrown errors are reported back to the dashboard. */
25
+
26
+ /** Anything that can tell the bridge "something changed". */
27
+
28
+ /**
29
+ * The contract each dev tool implements to become remotely syncable.
30
+ * Works with BaseEventStore, ChangeLog, createToolStore, or any pattern
31
+ * exposing subscribe + getSnapshot.
32
+ *
33
+ * Payloads (snapshots and action results) must be JSON-serializable —
34
+ * no functions, circular references, or class instances.
35
+ */
36
+
37
+ /** Subscribe to every source; the returned function unsubscribes from all. */
38
+ export function mergeChangeSources(sources) {
39
+ if (sources.length === 1) return sources[0];
40
+ return onChange => {
41
+ const offs = sources.map(source => source(onChange));
42
+ return () => {
43
+ for (const off of offs) off();
44
+ };
45
+ };
46
+ }
47
+ export function createSyncAdapter(definition) {
48
+ const subscribe = Array.isArray(definition.subscribe) ? mergeChangeSources(definition.subscribe) : definition.subscribe;
49
+ const adapter = {
50
+ version: definition.version,
51
+ getSnapshot: definition.getSnapshot,
52
+ subscribe,
53
+ ...(definition.actions ? {
54
+ actions: definition.actions
55
+ } : {})
56
+ };
57
+ return adapter;
58
+ }
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * wireForm — how a tool turns what it holds into what it may put on the wire.
5
+ *
6
+ * Every adapter that ships large values faces the same four problems, and
7
+ * nine of them solved each one separately:
8
+ *
9
+ * 1. A per-item cap on the snapshot stream (16 KB), with a MARKER left in
10
+ * the value's place so the dashboard knows to fetch it on demand.
11
+ * 2. A much larger cap on that on-demand detail fetch (8 MB), with a
12
+ * TRUNCATION NOTE when even that is exceeded.
13
+ * 3. An identity-keyed cache for the wire form, because a snapshot is
14
+ * rebuilt ~5×/sec while a dashboard watches and stores never mutate a
15
+ * recorded item — so converting each item once is correct and cheap.
16
+ * 4. For tools whose items are individually fat (console, sentry), a
17
+ * newest-first walk that keeps as many items as fit a snapshot budget.
18
+ *
19
+ * Marker KEY NAMES are part of the wire protocol — Buoy Desktop and the
20
+ * tool stores test for `__buoyStateOnDevice`, `__buoyPayloadOnDevice`,
21
+ * `__buoyValueOnDevice` — so the factory builds exactly those keys.
22
+ */
23
+
24
+ import { approxJsonSize, isOverWireBudget } from "./wireBudget.js";
25
+
26
+ /** Per-item budget on the snapshot stream. Anything larger stays on-device. */
27
+ export const WIRE_INLINE_LIMIT_BYTES = 16 * 1024;
28
+
29
+ /**
30
+ * Upper bound for one on-demand detail response. Generous — this is a single
31
+ * explicit fetch, not a per-item stream — but still guarded so a pathological
32
+ * tree can't OOM the device through the reply emit.
33
+ */
34
+ export const WIRE_DETAIL_LIMIT_BYTES = 8 * 1024 * 1024;
35
+
36
+ /** A frozen `{ __buoy<Kind>OnDevice: true, note }` marker. */
37
+
38
+ /**
39
+ * Build the sentinel a wire-form snapshot carries in place of a value that
40
+ * stays on the device. `kind` names the value ("State", "Payload", "Value",
41
+ * "Params", "Data", …) and becomes the key the reader tests for.
42
+ */
43
+ export function onDeviceMarker(kind, note) {
44
+ return Object.freeze({
45
+ [`__buoy${kind}OnDevice`]: true,
46
+ note
47
+ });
48
+ }
49
+
50
+ /** True when `value` is the on-device marker for `kind`. */
51
+ export function isOnDeviceMarker(value, kind) {
52
+ return typeof value === "object" && value !== null && value[`__buoy${kind}OnDevice`] === true;
53
+ }
54
+
55
+ /** The note a detail fetch returns when a single field exceeds the detail cap. */
56
+ export function truncatedNote(limitBytes = WIRE_DETAIL_LIMIT_BYTES) {
57
+ const mb = limitBytes / (1024 * 1024);
58
+ return {
59
+ __buoyTruncated: true,
60
+ note: `Exceeds the ${mb}MB detail limit — inspect it on-device.`
61
+ };
62
+ }
63
+
64
+ /**
65
+ * The value itself if it fits `limit` (and is serializable), else `marker`.
66
+ * `undefined` passes through untouched: an absent field must stay absent.
67
+ */
68
+ export function toWire(value, marker, limit = WIRE_INLINE_LIMIT_BYTES) {
69
+ if (value === undefined) return value;
70
+ return isOverWireBudget(value, limit) ? marker : value;
71
+ }
72
+
73
+ /** Detail-fetch cap: the value, or a truncation note when it is too big. */
74
+ export function capDetail(value, limit = WIRE_DETAIL_LIMIT_BYTES) {
75
+ return isOverWireBudget(value, limit) ? truncatedNote(limit) : value;
76
+ }
77
+
78
+ /**
79
+ * Memoize a wire-form conversion by item identity. Correct for any store
80
+ * that prepends and never mutates a recorded item — the cache self-invalidates
81
+ * when the item is dropped from the buffer.
82
+ */
83
+ export function memoByIdentity(convert) {
84
+ const cache = new WeakMap();
85
+ return item => {
86
+ const cached = cache.get(item);
87
+ if (cached !== undefined) return cached;
88
+ const converted = convert(item);
89
+ cache.set(item, converted);
90
+ return converted;
91
+ };
92
+ }
93
+ /**
94
+ * Walk `items` (oldest-first) from the newest end, keeping every item until
95
+ * the budget is spent. Always keeps at least one so an over-budget newest
96
+ * item still reaches the dashboard as a stub rather than an empty panel.
97
+ * Returns oldest-first, matching the input.
98
+ */
99
+ export function newestFitting(items, options) {
100
+ const out = [];
101
+ let bytes = options.baseBytes ?? 16;
102
+ for (let i = items.length - 1; i >= 0; i--) {
103
+ const wired = options.toWire(items[i]);
104
+ if (bytes + wired.bytes > options.budget && out.length > 0) break;
105
+ out.push(wired.value);
106
+ bytes += wired.bytes;
107
+ }
108
+ out.reverse();
109
+ return out;
110
+ }
111
+
112
+ /**
113
+ * Size one wire-form item against a per-item cap, substituting a stub when it
114
+ * is too fat. One walk decides both "too big?" and "what does it cost".
115
+ */
116
+ export function sizeOrStub(wired, limit, stub) {
117
+ const size = approxJsonSize(wired, limit);
118
+ if (size.bytes <= limit) return {
119
+ value: wired,
120
+ bytes: size.bytes
121
+ };
122
+ const stubbed = stub();
123
+ return {
124
+ value: stubbed,
125
+ bytes: approxJsonSize(stubbed, limit).bytes
126
+ };
127
+ }
128
+
129
+ /** `(params as T | undefined) ?? {}` — the first line of every action. */
130
+ export function readParams(params) {
131
+ return params ?? {};
132
+ }
133
+ /**
134
+ * The on-demand detail action every change-log tool exposes: look one item
135
+ * up by id, and return its detail fields size-capped. Replaces the
136
+ * `missing id` / `unknown id` boilerplate copied into each adapter.
137
+ */
138
+ export function detailByIdAction(lookup, detail, limit = WIRE_DETAIL_LIMIT_BYTES) {
139
+ const cap = value => capDetail(value, limit);
140
+ return params => {
141
+ const {
142
+ id
143
+ } = readParams(params);
144
+ if (!id) return {
145
+ found: false,
146
+ reason: "missing id"
147
+ };
148
+ const item = lookup(id);
149
+ if (!item) return {
150
+ found: false,
151
+ reason: "unknown id"
152
+ };
153
+ return {
154
+ found: true,
155
+ id,
156
+ ...detail(item, cap)
157
+ };
158
+ };
159
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * defineToolPreset / createToolFactory — the typed way to declare a tool.
5
+ *
6
+ * Every tool package exports a `xToolPreset` object literal and a
7
+ * `createXTool(options)` factory that restates the same literal with
8
+ * `options?.name || default` on each field. None of the 23 presets was
9
+ * annotated with core's `InstalledApp`, so a preset that drifted from the
10
+ * contract (a bad `slot`, a missing `component`) failed at runtime in the
11
+ * dial, not at compile time.
12
+ *
13
+ * `ToolPreset` is that contract, declared here in shared (which every tool
14
+ * already depends on) and structurally identical to core's `InstalledApp`.
15
+ * `defineToolPreset` is an identity function that type-checks the literal;
16
+ * `createToolFactory` derives the `createXTool` function from the preset so
17
+ * the defaults live in exactly one place.
18
+ *
19
+ * Auto-discovery (core's `autoDiscoverPresets` / `autoExternalSync`) stays
20
+ * as hand-written `require()` blocks on purpose: Metro needs each package
21
+ * name as a static string lexically inside its own try, so a manifest can't
22
+ * replace them.
23
+ */
24
+
25
+ /** Where a tool should render within the floating menu surface. */
26
+
27
+ /** What an icon renderer receives. Mirrors core's `FloatingMenuRenderCtx`. */
28
+
29
+ /** Declarative modal chrome for a body-only tool. Mirrors core's `ToolModalConfig`. */
30
+
31
+ /**
32
+ * The shape the floating menu installs. Structurally identical to core's
33
+ * `InstalledApp`; declared here so tool packages can type their presets
34
+ * without depending on core.
35
+ */
36
+
37
+ /** Identity with a type check: the literal must satisfy `ToolPreset`. */
38
+ export function defineToolPreset(preset) {
39
+ return preset;
40
+ }
41
+
42
+ /** The overrides every `createXTool` accepted. */
43
+
44
+ /**
45
+ * Derive `createXTool(options)` from a preset: id/name/description overrides
46
+ * apply on top, and `mapProps` turns tool-specific options into `props`
47
+ * (merged over the preset's defaults).
48
+ *
49
+ * ```ts
50
+ * export const createNetworkTool = createToolFactory(networkToolPreset, (o: { enableSharedModalDimensions?: boolean }) => ({
51
+ * enableSharedModalDimensions: o.enableSharedModalDimensions ?? false,
52
+ * }));
53
+ * ```
54
+ */
55
+ export function createToolFactory(preset, mapProps, /** Last word on any other preset field (a recolored icon, say). */
56
+ extend) {
57
+ return options => {
58
+ const overrides = options ?? {};
59
+ const props = preset.props === undefined && !mapProps ? undefined : {
60
+ ...(preset.props ?? {}),
61
+ ...(mapProps ? mapProps(overrides) : {})
62
+ };
63
+ return {
64
+ ...preset,
65
+ id: overrides.id || preset.id,
66
+ name: overrides.name || preset.name,
67
+ description: overrides.description || preset.description,
68
+ ...(props !== undefined ? {
69
+ props
70
+ } : {}),
71
+ ...(extend ? extend(overrides, preset) : {})
72
+ };
73
+ };
74
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * ChangeRow — one recorded change in a state tool's history list.
5
+ *
6
+ * redux, zustand and jotai each drew the same row on top of `CompactRow`:
7
+ * a colored status word (the slice / store / atom), a sublabel ("1.2ms ·
8
+ * 3 keys changed"), the primary line (changed keys or a value preview), a
9
+ * relative timestamp, and a right-hand badge made of a mono verb (SET,
10
+ * WRITE, ADDITEM) plus an icon — a lightning bolt when state actually
11
+ * changed, a clock when the update was slow. The three copies differed
12
+ * only in how they computed those strings. This component owns the drawing;
13
+ * tools own the strings.
14
+ *
15
+ * testID convention (unchanged from the originals): `${testID}-badge`,
16
+ * `${testID}-change`, `${testID}-slow`, `${testID}-status`,
17
+ * `${testID}-sublabel`, `${testID}-keys`.
18
+ */
19
+
20
+ import React from "react";
21
+ import { StyleSheet, Text, View } from "react-native";
22
+ import { buoyColors } from "../gameUI/constants/gameUIColors.js";
23
+ import { CompactRow } from "./CompactRow.js";
24
+ import { Clock, Zap } from "../../icons/index.js";
25
+ import { RelativeTime } from "../../utils/time/RelativeTime.js";
26
+ import { monoFont } from "../fonts.js";
27
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
28
+ export function ChangeRow({
29
+ statusColor,
30
+ statusLabel,
31
+ sublabel,
32
+ primaryText,
33
+ timestamp,
34
+ badgeText,
35
+ changed = false,
36
+ slow = false,
37
+ badgePrefix,
38
+ customBadge,
39
+ plainBadgeText,
40
+ onPress,
41
+ testID,
42
+ accessibilityLabel
43
+ }) {
44
+ // Always a custom badge, even when there is no icon to hang off it. The
45
+ // alternative — letting CompactRow draw `badgeText` itself — leaves the one
46
+ // row whose badge matters most (a write that changed NOTHING) as the only
47
+ // row in the list with no handle on its badge.
48
+ const badge = customBadge ?? (badgeText !== undefined || badgePrefix || changed || slow ? /*#__PURE__*/_jsxs(View, {
49
+ style: styles.badgeContainer,
50
+ children: [badgePrefix, badgeText !== undefined ? /*#__PURE__*/_jsx(Text, {
51
+ style: [styles.badgeText, {
52
+ color: statusColor
53
+ }],
54
+ testID: testID ? `${testID}-badge` : undefined,
55
+ children: badgeText
56
+ }) : null, slow ? /*#__PURE__*/_jsx(View, {
57
+ style: styles.iconBadge,
58
+ testID: testID ? `${testID}-slow` : undefined,
59
+ children: /*#__PURE__*/_jsx(Clock, {
60
+ size: 12,
61
+ color: buoyColors.error
62
+ })
63
+ }) : changed ? /*#__PURE__*/_jsx(View, {
64
+ style: styles.iconBadge,
65
+ testID: testID ? `${testID}-change` : undefined,
66
+ children: /*#__PURE__*/_jsx(Zap, {
67
+ size: 12,
68
+ color: buoyColors.warning
69
+ })
70
+ }) : null]
71
+ }) : undefined);
72
+ return /*#__PURE__*/_jsx(CompactRow, {
73
+ statusDotColor: statusColor,
74
+ statusLabel: statusLabel,
75
+ statusSublabel: sublabel,
76
+ primaryText: primaryText,
77
+ bottomRightText: /*#__PURE__*/_jsx(RelativeTime, {
78
+ timestamp: timestamp
79
+ }),
80
+ customBadge: badge,
81
+ badgeText: badge ? undefined : plainBadgeText,
82
+ badgeColor: statusColor,
83
+ showChevron: true,
84
+ onPress: onPress,
85
+ testID: testID,
86
+ statusTestID: testID ? `${testID}-status` : undefined,
87
+ statusSublabelTestID: testID ? `${testID}-sublabel` : undefined,
88
+ primaryTestID: testID ? `${testID}-keys` : undefined,
89
+ accessibilityLabel: accessibilityLabel
90
+ });
91
+ }
92
+ const styles = StyleSheet.create({
93
+ badgeContainer: {
94
+ flexDirection: "row",
95
+ alignItems: "center",
96
+ gap: 4
97
+ },
98
+ badgeText: {
99
+ fontSize: 11,
100
+ fontWeight: "600",
101
+ fontFamily: monoFont
102
+ },
103
+ iconBadge: {
104
+ paddingHorizontal: 4
105
+ }
106
+ });
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * ChipStrip — a horizontally scrolling row of filter chips whose taps
5
+ * don't misfire while the strip is being panned.
6
+ *
7
+ * react-query drew this three times (query status, mutation status, storage
8
+ * type) with the same 5-point / 300 ms swipe-vs-tap discrimination. The
9
+ * strip and the discrimination live here; the chip is whatever the tool
10
+ * renders, wired through `useChipTap`.
11
+ */
12
+
13
+ import { useCallback, useRef, useState } from "react";
14
+ import { ScrollView, StyleSheet, View } from "react-native";
15
+
16
+ /** How far a touch may travel and still count as a tap. */
17
+ import { jsx as _jsx } from "react/jsx-runtime";
18
+ const TAP_SLOP_PX = 5;
19
+ /** How long after a scroll ends taps stay suppressed. */
20
+ const SCROLL_SETTLE_MS = 300;
21
+ /**
22
+ * Swipe-vs-tap discrimination for chips inside a horizontal ScrollView.
23
+ * A press that moved more than a few points, or landed while the strip was
24
+ * still scrolling, is a pan — not a filter toggle.
25
+ */
26
+ export function useChipTap() {
27
+ const [isScrolling, setIsScrolling] = useState(false);
28
+ const touchStartX = useRef(0);
29
+ const touchStartY = useRef(0);
30
+ const onTouchStart = useCallback(event => {
31
+ touchStartX.current = event.nativeEvent.pageX;
32
+ touchStartY.current = event.nativeEvent.pageY;
33
+ }, []);
34
+ const isTap = useCallback(event => {
35
+ if (!event) return true;
36
+ const dx = Math.abs(event.nativeEvent.pageX - touchStartX.current);
37
+ const dy = Math.abs(event.nativeEvent.pageY - touchStartY.current);
38
+ return !(dx > TAP_SLOP_PX || dy > TAP_SLOP_PX || isScrolling);
39
+ }, [isScrolling]);
40
+ const settle = useCallback(() => {
41
+ setTimeout(() => setIsScrolling(false), SCROLL_SETTLE_MS);
42
+ }, []);
43
+ const begin = useCallback(() => setIsScrolling(true), []);
44
+ return {
45
+ scrollProps: {
46
+ onScrollBeginDrag: begin,
47
+ onScrollEndDrag: settle,
48
+ onMomentumScrollBegin: begin,
49
+ onMomentumScrollEnd: settle
50
+ },
51
+ onTouchStart,
52
+ isTap
53
+ };
54
+ }
55
+ export function ChipStrip({
56
+ children,
57
+ scrollProps,
58
+ sentryLabel,
59
+ style,
60
+ contentStyle
61
+ }) {
62
+ return /*#__PURE__*/_jsx(View, {
63
+ style: [styles.container, style],
64
+ children: /*#__PURE__*/_jsx(ScrollView, {
65
+ "sentry-label": sentryLabel,
66
+ horizontal: true,
67
+ showsHorizontalScrollIndicator: false,
68
+ style: styles.scrollView,
69
+ contentContainerStyle: [styles.scrollContent, contentStyle],
70
+ ...scrollProps,
71
+ children: children
72
+ })
73
+ });
74
+ }
75
+ const styles = StyleSheet.create({
76
+ container: {
77
+ flex: 1,
78
+ minWidth: 0
79
+ },
80
+ scrollView: {
81
+ flex: 1
82
+ },
83
+ scrollContent: {
84
+ flexDirection: "row",
85
+ alignItems: "center",
86
+ gap: 8,
87
+ paddingHorizontal: 4,
88
+ paddingVertical: 4,
89
+ flexGrow: 1
90
+ }
91
+ });
@@ -11,6 +11,7 @@
11
11
  import { memo, useCallback } from "react";
12
12
  import { View, Text, TouchableOpacity, StyleSheet, Modal, Pressable } from "react-native";
13
13
  import { gameUIColors } from "../gameUI/index.js";
14
+ import { monoFont } from "../fonts.js";
14
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
16
  /**
16
17
  * A modal hint that teaches users about iOS Simulator clipboard sync
@@ -125,7 +126,7 @@ const styles = StyleSheet.create({
125
126
  textAlign: "center"
126
127
  },
127
128
  menuPath: {
128
- fontFamily: "monospace",
129
+ fontFamily: monoFont,
129
130
  fontSize: 12,
130
131
  color: gameUIColors.primary,
131
132
  fontWeight: "600"
@@ -3,6 +3,7 @@
3
3
  import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
4
4
  import { ChevronDown, ChevronRight } from "../../icons/index.js";
5
5
  import { night } from "../night/nightTheme.js";
6
+ import { monoFont } from "../fonts.js";
6
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
8
  export function CompactRow({
8
9
  statusDotColor,
@@ -221,7 +222,7 @@ const styles = StyleSheet.create({
221
222
  paddingHorizontal: 12
222
223
  },
223
224
  queryHash: {
224
- fontFamily: "monospace",
225
+ fontFamily: monoFont,
225
226
  fontSize: 12,
226
227
  color: night.color.text,
227
228
  lineHeight: 16
@@ -265,6 +266,6 @@ const styles = StyleSheet.create({
265
266
  bottomRightText: {
266
267
  fontSize: 9,
267
268
  color: night.color.textTertiary,
268
- fontFamily: "monospace"
269
+ fontFamily: monoFont
269
270
  }
270
271
  });
@@ -5,6 +5,7 @@ import { View, Text, StyleSheet, ScrollView, TouchableOpacity, TextInput } from
5
5
  import { Search, Edit3, Check, X } from "../../icons/index.js";
6
6
  import { gameUIColors } from "../gameUI/index.js";
7
7
  import { CopyButton } from "./CopyButton.js";
8
+ import { monoFont } from "../fonts.js";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  export function DataInspector({
10
11
  data,
@@ -264,14 +265,14 @@ const styles = StyleSheet.create({
264
265
  maxHeight: 300
265
266
  },
266
267
  codeText: {
267
- fontFamily: "monospace",
268
+ fontFamily: monoFont,
268
269
  fontSize: 11,
269
270
  color: gameUIColors.text,
270
271
  padding: 12,
271
272
  lineHeight: 16
272
273
  },
273
274
  editor: {
274
- fontFamily: "monospace",
275
+ fontFamily: monoFont,
275
276
  fontSize: 11,
276
277
  color: gameUIColors.text,
277
278
  padding: 12,
@@ -5,6 +5,7 @@ import { View, Text, StyleSheet, ScrollView, TouchableOpacity } from "react-nati
5
5
  import { gameUIColors } from "../gameUI/index.js";
6
6
  import { ModalHeader } from "./ModalHeader.js";
7
7
  import { CopyButton } from "./CopyButton.js";
8
+ import { monoFont } from "../fonts.js";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  export function DetailView({
10
11
  children,
@@ -293,7 +294,7 @@ const styles = StyleSheet.create({
293
294
  },
294
295
  dataText: {
295
296
  fontSize: 12,
296
- fontFamily: "monospace",
297
+ fontFamily: monoFont,
297
298
  color: gameUIColors.text
298
299
  },
299
300
  statusBar: {