react-native-inapp-inspector 1.1.18 → 1.1.20

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 (293) hide show
  1. package/dist/commonjs/constants/version.d.ts +1 -1
  2. package/dist/commonjs/constants/version.js +1 -1
  3. package/dist/commonjs/styles/index.js +1 -1
  4. package/dist/esm/constants/version.d.ts +1 -1
  5. package/dist/esm/constants/version.js +1 -1
  6. package/dist/esm/styles/index.js +1 -1
  7. package/package.json +2 -4
  8. package/assets/banner_dark.svg +0 -186
  9. package/assets/banner_light.svg +0 -186
  10. package/assets/icon_circle.svg +0 -148
  11. package/assets/icon_square.svg +0 -148
  12. package/assets/social_preview.png +0 -0
  13. package/assets/walkthrough.gif +0 -0
  14. package/dist/commonjs/assets/svgAssets.d.ts +0 -3
  15. package/dist/commonjs/assets/svgAssets.js +0 -17
  16. package/dist/commonjs/components/AnalyticsTabView.d.ts +0 -15
  17. package/dist/commonjs/components/AnalyticsTabView.js +0 -157
  18. package/dist/commonjs/components/ApiDetailView.d.ts +0 -22
  19. package/dist/commonjs/components/ApiDetailView.js +0 -304
  20. package/dist/commonjs/components/ApisTabView.d.ts +0 -33
  21. package/dist/commonjs/components/ApisTabView.js +0 -235
  22. package/dist/commonjs/components/ConsoleLogDetailView.d.ts +0 -9
  23. package/dist/commonjs/components/ConsoleLogDetailView.js +0 -278
  24. package/dist/commonjs/components/ConsoleLogsTabView.d.ts +0 -24
  25. package/dist/commonjs/components/ConsoleLogsTabView.js +0 -354
  26. package/dist/commonjs/components/FloatingBubble.d.ts +0 -14
  27. package/dist/commonjs/components/FloatingBubble.js +0 -75
  28. package/dist/commonjs/components/Inspector/InsightsDashboard.d.ts +0 -3
  29. package/dist/commonjs/components/Inspector/InsightsDashboard.js +0 -619
  30. package/dist/commonjs/components/Inspector/WebViewTab.d.ts +0 -3
  31. package/dist/commonjs/components/Inspector/WebViewTab.js +0 -757
  32. package/dist/commonjs/components/InspectorHeader.d.ts +0 -19
  33. package/dist/commonjs/components/InspectorHeader.js +0 -329
  34. package/dist/commonjs/components/InspectorTabBar.d.ts +0 -16
  35. package/dist/commonjs/components/InspectorTabBar.js +0 -90
  36. package/dist/commonjs/components/NavigationTracker.d.ts +0 -7
  37. package/dist/commonjs/components/NavigationTracker.js +0 -76
  38. package/dist/commonjs/components/ReduxTabView.d.ts +0 -9
  39. package/dist/commonjs/components/ReduxTabView.js +0 -56
  40. package/dist/commonjs/components/ReduxTreeView.d.ts +0 -16
  41. package/dist/commonjs/components/ReduxTreeView.js +0 -1257
  42. package/dist/commonjs/components/SettingsView.d.ts +0 -13
  43. package/dist/commonjs/components/SettingsView.js +0 -328
  44. package/dist/commonjs/customHooks/webViewLogger.d.ts +0 -24
  45. package/dist/commonjs/customHooks/webViewLogger.js +0 -452
  46. package/dist/commonjs/enums/index.d.ts +0 -39
  47. package/dist/commonjs/enums/index.js +0 -50
  48. package/dist/commonjs/i18n/en.json +0 -144
  49. package/dist/esm/assets/svgAssets.d.ts +0 -3
  50. package/dist/esm/assets/svgAssets.js +0 -14
  51. package/dist/esm/components/AnalyticsTabView.d.ts +0 -15
  52. package/dist/esm/components/AnalyticsTabView.js +0 -151
  53. package/dist/esm/components/ApiDetailView.d.ts +0 -22
  54. package/dist/esm/components/ApiDetailView.js +0 -264
  55. package/dist/esm/components/ApisTabView.d.ts +0 -33
  56. package/dist/esm/components/ApisTabView.js +0 -196
  57. package/dist/esm/components/ConsoleLogDetailView.d.ts +0 -9
  58. package/dist/esm/components/ConsoleLogDetailView.js +0 -271
  59. package/dist/esm/components/ConsoleLogsTabView.d.ts +0 -24
  60. package/dist/esm/components/ConsoleLogsTabView.js +0 -348
  61. package/dist/esm/components/FloatingBubble.d.ts +0 -14
  62. package/dist/esm/components/FloatingBubble.js +0 -68
  63. package/dist/esm/components/Inspector/InsightsDashboard.d.ts +0 -3
  64. package/dist/esm/components/Inspector/InsightsDashboard.js +0 -614
  65. package/dist/esm/components/Inspector/WebViewTab.d.ts +0 -3
  66. package/dist/esm/components/Inspector/WebViewTab.js +0 -752
  67. package/dist/esm/components/InspectorHeader.d.ts +0 -19
  68. package/dist/esm/components/InspectorHeader.js +0 -323
  69. package/dist/esm/components/InspectorTabBar.d.ts +0 -16
  70. package/dist/esm/components/InspectorTabBar.js +0 -84
  71. package/dist/esm/components/NavigationTracker.d.ts +0 -7
  72. package/dist/esm/components/NavigationTracker.js +0 -39
  73. package/dist/esm/components/ReduxTabView.d.ts +0 -9
  74. package/dist/esm/components/ReduxTabView.js +0 -50
  75. package/dist/esm/components/ReduxTreeView.d.ts +0 -16
  76. package/dist/esm/components/ReduxTreeView.js +0 -1218
  77. package/dist/esm/components/SettingsView.d.ts +0 -13
  78. package/dist/esm/components/SettingsView.js +0 -321
  79. package/dist/esm/customHooks/webViewLogger.d.ts +0 -24
  80. package/dist/esm/customHooks/webViewLogger.js +0 -405
  81. package/dist/esm/enums/index.d.ts +0 -39
  82. package/dist/esm/enums/index.js +0 -47
  83. package/dist/esm/i18n/en.json +0 -144
  84. package/example/.bundle/config +0 -2
  85. package/example/.eslintrc.js +0 -4
  86. package/example/.prettierrc.js +0 -5
  87. package/example/.watchmanconfig +0 -1
  88. package/example/App.tsx +0 -879
  89. package/example/Gemfile +0 -17
  90. package/example/README.md +0 -53
  91. package/example/__tests__/App.test.tsx +0 -13
  92. package/example/android/app/build.gradle +0 -147
  93. package/example/android/app/debug.keystore +0 -0
  94. package/example/android/app/proguard-rules.pro +0 -10
  95. package/example/android/app/src/main/AndroidManifest.xml +0 -27
  96. package/example/android/app/src/main/java/com/example/MainActivity.kt +0 -22
  97. package/example/android/app/src/main/java/com/example/MainApplication.kt +0 -52
  98. package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -37
  99. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  100. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  101. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  102. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  103. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  104. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  105. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  106. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  107. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  108. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  109. package/example/android/app/src/main/res/values/strings.xml +0 -3
  110. package/example/android/app/src/main/res/values/styles.xml +0 -9
  111. package/example/android/build.gradle +0 -48
  112. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  113. package/example/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  114. package/example/android/gradle.properties +0 -45
  115. package/example/android/gradlew +0 -248
  116. package/example/android/gradlew.bat +0 -98
  117. package/example/android/settings.gradle +0 -25
  118. package/example/app.json +0 -4
  119. package/example/assets/app_icon.png +0 -0
  120. package/example/babel.config.js +0 -3
  121. package/example/guidance/Video-WalkThrough.mp4 +0 -0
  122. package/example/index.js +0 -9
  123. package/example/ios/.xcode.env +0 -11
  124. package/example/ios/Podfile +0 -34
  125. package/example/ios/Podfile.lock +0 -2303
  126. package/example/ios/example/AppDelegate.swift +0 -48
  127. package/example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json +0 -62
  128. package/example/ios/example/Images.xcassets/AppIcon.appiconset/app_icon_1024.png +0 -0
  129. package/example/ios/example/Images.xcassets/Contents.json +0 -6
  130. package/example/ios/example/Info.plist +0 -60
  131. package/example/ios/example/LaunchScreen.storyboard +0 -47
  132. package/example/ios/example/PrivacyInfo.xcprivacy +0 -37
  133. package/example/ios/example.xcodeproj/project.pbxproj +0 -498
  134. package/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme +0 -88
  135. package/example/ios/example.xcworkspace/contents.xcworkspacedata +0 -10
  136. package/example/jest.config.js +0 -3
  137. package/example/metro.config.js +0 -45
  138. package/example/package-lock.json +0 -13508
  139. package/example/package.json +0 -54
  140. package/example/polyfill.js +0 -13
  141. package/example/tsconfig.json +0 -8
  142. package/fonts/Inter/Inter.ttc +0 -0
  143. package/fonts/Inter/InterVariable-Italic.ttf +0 -0
  144. package/fonts/Inter/InterVariable.ttf +0 -0
  145. package/fonts/Inter/LICENSE.txt +0 -92
  146. package/fonts/Inter/extras/otf/Inter-Black.otf +0 -0
  147. package/fonts/Inter/extras/otf/Inter-BlackItalic.otf +0 -0
  148. package/fonts/Inter/extras/otf/Inter-Bold.otf +0 -0
  149. package/fonts/Inter/extras/otf/Inter-BoldItalic.otf +0 -0
  150. package/fonts/Inter/extras/otf/Inter-ExtraBold.otf +0 -0
  151. package/fonts/Inter/extras/otf/Inter-ExtraBoldItalic.otf +0 -0
  152. package/fonts/Inter/extras/otf/Inter-ExtraLight.otf +0 -0
  153. package/fonts/Inter/extras/otf/Inter-ExtraLightItalic.otf +0 -0
  154. package/fonts/Inter/extras/otf/Inter-Italic.otf +0 -0
  155. package/fonts/Inter/extras/otf/Inter-Light.otf +0 -0
  156. package/fonts/Inter/extras/otf/Inter-LightItalic.otf +0 -0
  157. package/fonts/Inter/extras/otf/Inter-Medium.otf +0 -0
  158. package/fonts/Inter/extras/otf/Inter-MediumItalic.otf +0 -0
  159. package/fonts/Inter/extras/otf/Inter-Regular.otf +0 -0
  160. package/fonts/Inter/extras/otf/Inter-SemiBold.otf +0 -0
  161. package/fonts/Inter/extras/otf/Inter-SemiBoldItalic.otf +0 -0
  162. package/fonts/Inter/extras/otf/Inter-Thin.otf +0 -0
  163. package/fonts/Inter/extras/otf/Inter-ThinItalic.otf +0 -0
  164. package/fonts/Inter/extras/otf/InterDisplay-Black.otf +0 -0
  165. package/fonts/Inter/extras/otf/InterDisplay-BlackItalic.otf +0 -0
  166. package/fonts/Inter/extras/otf/InterDisplay-Bold.otf +0 -0
  167. package/fonts/Inter/extras/otf/InterDisplay-BoldItalic.otf +0 -0
  168. package/fonts/Inter/extras/otf/InterDisplay-ExtraBold.otf +0 -0
  169. package/fonts/Inter/extras/otf/InterDisplay-ExtraBoldItalic.otf +0 -0
  170. package/fonts/Inter/extras/otf/InterDisplay-ExtraLight.otf +0 -0
  171. package/fonts/Inter/extras/otf/InterDisplay-ExtraLightItalic.otf +0 -0
  172. package/fonts/Inter/extras/otf/InterDisplay-Italic.otf +0 -0
  173. package/fonts/Inter/extras/otf/InterDisplay-Light.otf +0 -0
  174. package/fonts/Inter/extras/otf/InterDisplay-LightItalic.otf +0 -0
  175. package/fonts/Inter/extras/otf/InterDisplay-Medium.otf +0 -0
  176. package/fonts/Inter/extras/otf/InterDisplay-MediumItalic.otf +0 -0
  177. package/fonts/Inter/extras/otf/InterDisplay-Regular.otf +0 -0
  178. package/fonts/Inter/extras/otf/InterDisplay-SemiBold.otf +0 -0
  179. package/fonts/Inter/extras/otf/InterDisplay-SemiBoldItalic.otf +0 -0
  180. package/fonts/Inter/extras/otf/InterDisplay-Thin.otf +0 -0
  181. package/fonts/Inter/extras/otf/InterDisplay-ThinItalic.otf +0 -0
  182. package/fonts/Inter/extras/ttf/Inter-Black.ttf +0 -0
  183. package/fonts/Inter/extras/ttf/Inter-BlackItalic.ttf +0 -0
  184. package/fonts/Inter/extras/ttf/Inter-Bold.ttf +0 -0
  185. package/fonts/Inter/extras/ttf/Inter-BoldItalic.ttf +0 -0
  186. package/fonts/Inter/extras/ttf/Inter-ExtraBold.ttf +0 -0
  187. package/fonts/Inter/extras/ttf/Inter-ExtraBoldItalic.ttf +0 -0
  188. package/fonts/Inter/extras/ttf/Inter-ExtraLight.ttf +0 -0
  189. package/fonts/Inter/extras/ttf/Inter-ExtraLightItalic.ttf +0 -0
  190. package/fonts/Inter/extras/ttf/Inter-Italic.ttf +0 -0
  191. package/fonts/Inter/extras/ttf/Inter-Light.ttf +0 -0
  192. package/fonts/Inter/extras/ttf/Inter-LightItalic.ttf +0 -0
  193. package/fonts/Inter/extras/ttf/Inter-Medium.ttf +0 -0
  194. package/fonts/Inter/extras/ttf/Inter-MediumItalic.ttf +0 -0
  195. package/fonts/Inter/extras/ttf/Inter-Regular.ttf +0 -0
  196. package/fonts/Inter/extras/ttf/Inter-SemiBold.ttf +0 -0
  197. package/fonts/Inter/extras/ttf/Inter-SemiBoldItalic.ttf +0 -0
  198. package/fonts/Inter/extras/ttf/Inter-Thin.ttf +0 -0
  199. package/fonts/Inter/extras/ttf/Inter-ThinItalic.ttf +0 -0
  200. package/fonts/Inter/extras/ttf/InterDisplay-Black.ttf +0 -0
  201. package/fonts/Inter/extras/ttf/InterDisplay-BlackItalic.ttf +0 -0
  202. package/fonts/Inter/extras/ttf/InterDisplay-Bold.ttf +0 -0
  203. package/fonts/Inter/extras/ttf/InterDisplay-BoldItalic.ttf +0 -0
  204. package/fonts/Inter/extras/ttf/InterDisplay-ExtraBold.ttf +0 -0
  205. package/fonts/Inter/extras/ttf/InterDisplay-ExtraBoldItalic.ttf +0 -0
  206. package/fonts/Inter/extras/ttf/InterDisplay-ExtraLight.ttf +0 -0
  207. package/fonts/Inter/extras/ttf/InterDisplay-ExtraLightItalic.ttf +0 -0
  208. package/fonts/Inter/extras/ttf/InterDisplay-Italic.ttf +0 -0
  209. package/fonts/Inter/extras/ttf/InterDisplay-Light.ttf +0 -0
  210. package/fonts/Inter/extras/ttf/InterDisplay-LightItalic.ttf +0 -0
  211. package/fonts/Inter/extras/ttf/InterDisplay-Medium.ttf +0 -0
  212. package/fonts/Inter/extras/ttf/InterDisplay-MediumItalic.ttf +0 -0
  213. package/fonts/Inter/extras/ttf/InterDisplay-Regular.ttf +0 -0
  214. package/fonts/Inter/extras/ttf/InterDisplay-SemiBold.ttf +0 -0
  215. package/fonts/Inter/extras/ttf/InterDisplay-SemiBoldItalic.ttf +0 -0
  216. package/fonts/Inter/extras/ttf/InterDisplay-Thin.ttf +0 -0
  217. package/fonts/Inter/extras/ttf/InterDisplay-ThinItalic.ttf +0 -0
  218. package/fonts/Inter/extras/woff-hinted/Inter-Black.woff2 +0 -0
  219. package/fonts/Inter/extras/woff-hinted/Inter-BlackItalic.woff2 +0 -0
  220. package/fonts/Inter/extras/woff-hinted/Inter-Bold.woff2 +0 -0
  221. package/fonts/Inter/extras/woff-hinted/Inter-BoldItalic.woff2 +0 -0
  222. package/fonts/Inter/extras/woff-hinted/Inter-ExtraBold.woff2 +0 -0
  223. package/fonts/Inter/extras/woff-hinted/Inter-ExtraBoldItalic.woff2 +0 -0
  224. package/fonts/Inter/extras/woff-hinted/Inter-ExtraLight.woff2 +0 -0
  225. package/fonts/Inter/extras/woff-hinted/Inter-ExtraLightItalic.woff2 +0 -0
  226. package/fonts/Inter/extras/woff-hinted/Inter-Italic.woff2 +0 -0
  227. package/fonts/Inter/extras/woff-hinted/Inter-Light.woff2 +0 -0
  228. package/fonts/Inter/extras/woff-hinted/Inter-LightItalic.woff2 +0 -0
  229. package/fonts/Inter/extras/woff-hinted/Inter-Medium.woff2 +0 -0
  230. package/fonts/Inter/extras/woff-hinted/Inter-MediumItalic.woff2 +0 -0
  231. package/fonts/Inter/extras/woff-hinted/Inter-Regular.woff2 +0 -0
  232. package/fonts/Inter/extras/woff-hinted/Inter-SemiBold.woff2 +0 -0
  233. package/fonts/Inter/extras/woff-hinted/Inter-SemiBoldItalic.woff2 +0 -0
  234. package/fonts/Inter/extras/woff-hinted/Inter-Thin.woff2 +0 -0
  235. package/fonts/Inter/extras/woff-hinted/Inter-ThinItalic.woff2 +0 -0
  236. package/fonts/Inter/extras/woff-hinted/InterDisplay-Black.woff2 +0 -0
  237. package/fonts/Inter/extras/woff-hinted/InterDisplay-BlackItalic.woff2 +0 -0
  238. package/fonts/Inter/extras/woff-hinted/InterDisplay-Bold.woff2 +0 -0
  239. package/fonts/Inter/extras/woff-hinted/InterDisplay-BoldItalic.woff2 +0 -0
  240. package/fonts/Inter/extras/woff-hinted/InterDisplay-ExtraBold.woff2 +0 -0
  241. package/fonts/Inter/extras/woff-hinted/InterDisplay-ExtraBoldItalic.woff2 +0 -0
  242. package/fonts/Inter/extras/woff-hinted/InterDisplay-ExtraLight.woff2 +0 -0
  243. package/fonts/Inter/extras/woff-hinted/InterDisplay-ExtraLightItalic.woff2 +0 -0
  244. package/fonts/Inter/extras/woff-hinted/InterDisplay-Italic.woff2 +0 -0
  245. package/fonts/Inter/extras/woff-hinted/InterDisplay-Light.woff2 +0 -0
  246. package/fonts/Inter/extras/woff-hinted/InterDisplay-LightItalic.woff2 +0 -0
  247. package/fonts/Inter/extras/woff-hinted/InterDisplay-Medium.woff2 +0 -0
  248. package/fonts/Inter/extras/woff-hinted/InterDisplay-MediumItalic.woff2 +0 -0
  249. package/fonts/Inter/extras/woff-hinted/InterDisplay-Regular.woff2 +0 -0
  250. package/fonts/Inter/extras/woff-hinted/InterDisplay-SemiBold.woff2 +0 -0
  251. package/fonts/Inter/extras/woff-hinted/InterDisplay-SemiBoldItalic.woff2 +0 -0
  252. package/fonts/Inter/extras/woff-hinted/InterDisplay-Thin.woff2 +0 -0
  253. package/fonts/Inter/extras/woff-hinted/InterDisplay-ThinItalic.woff2 +0 -0
  254. package/fonts/Inter/help.txt +0 -165
  255. package/fonts/Inter/web/Inter-Black.woff2 +0 -0
  256. package/fonts/Inter/web/Inter-BlackItalic.woff2 +0 -0
  257. package/fonts/Inter/web/Inter-Bold.woff2 +0 -0
  258. package/fonts/Inter/web/Inter-BoldItalic.woff2 +0 -0
  259. package/fonts/Inter/web/Inter-ExtraBold.woff2 +0 -0
  260. package/fonts/Inter/web/Inter-ExtraBoldItalic.woff2 +0 -0
  261. package/fonts/Inter/web/Inter-ExtraLight.woff2 +0 -0
  262. package/fonts/Inter/web/Inter-ExtraLightItalic.woff2 +0 -0
  263. package/fonts/Inter/web/Inter-Italic.woff2 +0 -0
  264. package/fonts/Inter/web/Inter-Light.woff2 +0 -0
  265. package/fonts/Inter/web/Inter-LightItalic.woff2 +0 -0
  266. package/fonts/Inter/web/Inter-Medium.woff2 +0 -0
  267. package/fonts/Inter/web/Inter-MediumItalic.woff2 +0 -0
  268. package/fonts/Inter/web/Inter-Regular.woff2 +0 -0
  269. package/fonts/Inter/web/Inter-SemiBold.woff2 +0 -0
  270. package/fonts/Inter/web/Inter-SemiBoldItalic.woff2 +0 -0
  271. package/fonts/Inter/web/Inter-Thin.woff2 +0 -0
  272. package/fonts/Inter/web/Inter-ThinItalic.woff2 +0 -0
  273. package/fonts/Inter/web/InterDisplay-Black.woff2 +0 -0
  274. package/fonts/Inter/web/InterDisplay-BlackItalic.woff2 +0 -0
  275. package/fonts/Inter/web/InterDisplay-Bold.woff2 +0 -0
  276. package/fonts/Inter/web/InterDisplay-BoldItalic.woff2 +0 -0
  277. package/fonts/Inter/web/InterDisplay-ExtraBold.woff2 +0 -0
  278. package/fonts/Inter/web/InterDisplay-ExtraBoldItalic.woff2 +0 -0
  279. package/fonts/Inter/web/InterDisplay-ExtraLight.woff2 +0 -0
  280. package/fonts/Inter/web/InterDisplay-ExtraLightItalic.woff2 +0 -0
  281. package/fonts/Inter/web/InterDisplay-Italic.woff2 +0 -0
  282. package/fonts/Inter/web/InterDisplay-Light.woff2 +0 -0
  283. package/fonts/Inter/web/InterDisplay-LightItalic.woff2 +0 -0
  284. package/fonts/Inter/web/InterDisplay-Medium.woff2 +0 -0
  285. package/fonts/Inter/web/InterDisplay-MediumItalic.woff2 +0 -0
  286. package/fonts/Inter/web/InterDisplay-Regular.woff2 +0 -0
  287. package/fonts/Inter/web/InterDisplay-SemiBold.woff2 +0 -0
  288. package/fonts/Inter/web/InterDisplay-SemiBoldItalic.woff2 +0 -0
  289. package/fonts/Inter/web/InterDisplay-Thin.woff2 +0 -0
  290. package/fonts/Inter/web/InterDisplay-ThinItalic.woff2 +0 -0
  291. package/fonts/Inter/web/InterVariable-Italic.woff2 +0 -0
  292. package/fonts/Inter/web/InterVariable.woff2 +0 -0
  293. package/fonts/Inter/web/inter.css +0 -148
package/example/App.tsx DELETED
@@ -1,879 +0,0 @@
1
- import React from 'react';
2
- import {
3
- StatusBar,
4
- StyleSheet,
5
- Text,
6
- TouchableOpacity,
7
- View,
8
- ScrollView,
9
- useColorScheme,
10
- } from 'react-native';
11
- import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
12
- import { NavigationContainer, createNavigationContainerRef } from '@react-navigation/native';
13
- import { createNativeStackNavigator } from '@react-navigation/native-stack';
14
- import axios from 'axios';
15
- import NetworkInspector, {
16
- ErrorBoundary,
17
- connectReduxStore,
18
- setupNetworkLogger,
19
- subscribeNetworkLogs,
20
- subscribeConsoleLogs,
21
- logAnalyticsEvent,
22
- subscribeAnalyticsEvents,
23
- } from 'react-native-inapp-inspector';
24
- import {WebView} from 'react-native-webview';
25
-
26
- // ⚡ Call BEFORE any component renders so axios.create() is already patched
27
- setupNetworkLogger();
28
- // ─── Mock Redux Store ────────────────────────────────────────────────────────
29
- const mockStore = {
30
- state: {
31
- auth: {
32
- user: { id: 101, name: 'Venkatesh', role: 'Lead Architect' },
33
- token: 'bearer-jwt-tok_5548b366d86',
34
- isAuthenticated: true,
35
- lastLogin: new Date().toLocaleTimeString(),
36
- },
37
- settings: {
38
- theme: 'dark',
39
- notifications: true,
40
- fontSize: 14,
41
- locales: ['en-US', 'ta-IN'],
42
- },
43
- ui: {
44
- sidebarOpen: false,
45
- activeModal: null,
46
- loadingStates: {
47
- fetchUser: false,
48
- updateSettings: false,
49
- },
50
- },
51
- },
52
- listeners: new Set<() => void>(),
53
- getState() {
54
- return this.state;
55
- },
56
- subscribe(listener: () => void) {
57
- this.listeners.add(listener);
58
- return () => {
59
- this.listeners.delete(listener);
60
- };
61
- },
62
- dispatch(action: any) {
63
- console.log('[Mock Redux] Dispatching action:', action);
64
- if (action.type === 'TOGGLE_SIDEBAR') {
65
- this.state = {
66
- ...this.state,
67
- ui: {
68
- ...this.state.ui,
69
- sidebarOpen: !this.state.ui.sidebarOpen,
70
- },
71
- };
72
- } else if (action.type === 'SET_THEME') {
73
- this.state = {
74
- ...this.state,
75
- settings: {
76
- ...this.state.settings,
77
- theme: action.payload,
78
- },
79
- };
80
- } else if (action.type === 'UPDATE_USER_TIME') {
81
- this.state = {
82
- ...this.state,
83
- auth: {
84
- ...this.state.auth,
85
- lastLogin: new Date().toLocaleTimeString(),
86
- },
87
- };
88
- }
89
- this.listeners.forEach(l => l());
90
- },
91
- };
92
-
93
- // Connect mock store to the inspector
94
- connectReduxStore(mockStore);
95
-
96
- function BuggyComponent({ type }: { type: 'js' | 'native' }) {
97
- if (type === 'js') {
98
- throw new Error(
99
- 'Simulated JavaScript Crash: ReferenceError: x is not defined in App.tsx at line 67',
100
- );
101
- }
102
- if (type === 'native') {
103
- throw new Error(
104
- 'Simulated Native Crash: fatal error: Index out of range in Native Swift/Java module at line 70',
105
- );
106
- }
107
- return null;
108
- }
109
-
110
- function HomeScreen({ navigation }: any) {
111
- const [activeCrash, setActiveCrash] = React.useState<
112
- 'none' | 'js' | 'native'
113
- >('none');
114
- const [apiCount, setApiCount] = React.useState(0);
115
- const [logCount, setLogCount] = React.useState(0);
116
- const [analyticsCount, setAnalyticsCount] = React.useState(0);
117
- const [reduxState, setReduxState] = React.useState(mockStore.getState());
118
-
119
- React.useEffect(() => {
120
- // Subscribe to logs to display live dashboard counters
121
- const unsubNet = subscribeNetworkLogs(logs => setApiCount(logs.length));
122
- const unsubConsole = subscribeConsoleLogs(logs => setLogCount(logs.length));
123
- const unsubAnalytics = subscribeAnalyticsEvents(events =>
124
- setAnalyticsCount(events.length),
125
- );
126
- const unsubRedux = mockStore.subscribe(() =>
127
- setReduxState(mockStore.getState()),
128
- );
129
-
130
- // Initial Logs to populate stats
131
- console.log('[App] HomeScreen mounted and ready.');
132
- console.warn('[App] Check the Redux tab to inspect the connected state!');
133
-
134
- return () => {
135
- unsubNet();
136
- unsubConsole();
137
- unsubAnalytics();
138
- unsubRedux();
139
- };
140
- }, []);
141
-
142
- // Axios client — interceptors are automatically applied by setupNetworkLogger()
143
- const axiosClient = React.useMemo(
144
- () =>
145
- axios.create({
146
- baseURL: 'https://jsonplaceholder.typicode.com',
147
- }),
148
- [],
149
- );
150
-
151
- const triggerAxiosGet = async () => {
152
- try {
153
- console.log('[Axios] Triggering GET...');
154
- const response = await axiosClient.get('/posts/1');
155
- console.log('[Axios] GET response data title:', response.data.title);
156
- } catch (error: any) {
157
- console.error('[Axios] GET failed:', error.message);
158
- }
159
- };
160
-
161
- const triggerAxiosPost = async () => {
162
- try {
163
- console.log('[Axios] Triggering POST...');
164
- const response = await axiosClient.post('/posts', {
165
- title: 'New Post via Axios',
166
- body: 'This is a test post body sent via Axios auto-intercept.',
167
- userId: 1,
168
- });
169
- console.log('[Axios] POST response data:', response.data);
170
- } catch (error: any) {
171
- console.error('[Axios] POST failed:', error.message);
172
- }
173
- };
174
-
175
- const triggerAxiosPut = async () => {
176
- try {
177
- console.log('[Axios] Triggering PUT...');
178
- const response = await axiosClient.put('/posts/1', {
179
- id: 1,
180
- title: 'Updated Title via Axios',
181
- body: 'This is updated post body content sent via Axios.',
182
- userId: 1,
183
- });
184
- console.log('[Axios] PUT response data:', response.data);
185
- } catch (error: any) {
186
- console.error('[Axios] PUT failed:', error.message);
187
- }
188
- };
189
-
190
- const triggerAxiosPatch = async () => {
191
- try {
192
- console.log('[Axios] Triggering PATCH...');
193
- const response = await axiosClient.patch('/posts/1', {
194
- title: 'Partially Updated Title via Axios',
195
- });
196
- console.log('[Axios] PATCH response data:', response.data);
197
- } catch (error: any) {
198
- console.error('[Axios] PATCH failed:', error.message);
199
- }
200
- };
201
-
202
- const triggerAxiosDelete = async () => {
203
- try {
204
- console.log('[Axios] Triggering DELETE...');
205
- const response = await axiosClient.delete('/posts/1');
206
- console.log('[Axios] DELETE response status:', response.status);
207
- } catch (error: any) {
208
- console.error('[Axios] DELETE failed:', error.message);
209
- }
210
- };
211
-
212
- const triggerNetworkRequest = async () => {
213
- try {
214
- console.log('[API] Triggering fetch user...');
215
- const response = await fetch(
216
- 'https://jsonplaceholder.typicode.com/users/1',
217
- );
218
- const data = await response.json();
219
- console.log('[API] Fetch completed successfully:', data.name);
220
- } catch (error) {
221
- console.error('[API] Fetch failed:', error);
222
- }
223
- };
224
-
225
- const triggerFailedNetworkRequest = async () => {
226
- try {
227
- console.log('[API] Triggering failing fetch request...');
228
- await fetch('https://jsonplaceholder.typicode.com/invalid-route-error');
229
- } catch (error) {
230
- console.error('[API] Fetch failed with error:', error);
231
- }
232
- };
233
-
234
- const triggerConsoleLogs = () => {
235
- console.log(
236
- '[App] Manual log triggered at ' + new Date().toLocaleTimeString(),
237
- );
238
- console.warn('[App] Simulated warning. Please check the API config.');
239
- console.error('[App] Simulated error! Critical DB connection timeout.');
240
- };
241
-
242
- const triggerSampleAll = () => {
243
- // Fire every sample action at once (with a few random extras)
244
- const randomConsoleMessages = [
245
- '[Sample] Fetching latest feed...',
246
- '[Sample] Cache refreshed for user session',
247
- '[Sample] Push notification permission granted',
248
- '[Sample] Background sync completed',
249
- ];
250
- const randomAnalyticsEvents = [
251
- 'screen_view',
252
- 'button_tapped',
253
- 'list_scrolled',
254
- 'session_started',
255
- ];
256
-
257
- console.log(
258
- `[Sample] Firing sample-all at ${new Date().toLocaleTimeString()}`,
259
- );
260
- console.warn('[Sample] Randomized warning: throttled API response');
261
- console.error('[Sample] Randomized error: timeout on retry attempt #3');
262
- console.log(
263
- randomConsoleMessages[
264
- Math.floor(Math.random() * randomConsoleMessages.length)
265
- ],
266
- );
267
-
268
- triggerAxiosGet();
269
- triggerAxiosPost();
270
- triggerAxiosPut();
271
- triggerAxiosPatch();
272
- triggerAxiosDelete();
273
- triggerNetworkRequest();
274
- triggerFailedNetworkRequest();
275
-
276
- logAnalyticsEvent(
277
- randomAnalyticsEvents[
278
- Math.floor(Math.random() * randomAnalyticsEvents.length)
279
- ],
280
- {
281
- sample_batch: 'all',
282
- triggered_at: new Date().toISOString(),
283
- random_value: Math.floor(Math.random() * 1000),
284
- },
285
- );
286
- logAnalyticsEvent('item_purchase', {
287
- item_id: 'prod_999',
288
- item_name: 'Premium Debug Kit',
289
- price: 29.99,
290
- currency: 'USD',
291
- });
292
-
293
- mockStore.dispatch({type: 'TOGGLE_SIDEBAR'});
294
- mockStore.dispatch({type: 'UPDATE_USER_TIME'});
295
-
296
- // Random extra fetch to spice up the flood
297
- fetch(
298
- `https://jsonplaceholder.typicode.com/posts/${Math.floor(
299
- Math.random() * 8 + 1,
300
- )}`,
301
- )
302
- .then(r => r.json())
303
- .then(d => console.log('[Sample] Random fetch completed:', d.title))
304
- .catch(e => console.error('[Sample] Random fetch failed:', e));
305
- };
306
-
307
- const handleToggleSidebar = () => {
308
- mockStore.dispatch({ type: 'TOGGLE_SIDEBAR' });
309
- mockStore.dispatch({ type: 'UPDATE_USER_TIME' });
310
- };
311
-
312
- return (
313
- <SafeAreaView style={styles.safeContainer}>
314
- <ScrollView
315
- contentContainerStyle={styles.content}
316
- showsVerticalScrollIndicator={false}
317
- >
318
- {/* Header Hero Section */}
319
- <View style={styles.headerHero}>
320
- <Text style={styles.headerBadge}>INSPECTOR PLAYGROUND</Text>
321
- <Text style={styles.headerTitle}>Debug Dashboard</Text>
322
- <Text style={styles.headerSubtitle}>
323
- A plug-and-play developer kit for real-time inspection.
324
- </Text>
325
- </View>
326
-
327
- {/* System Status Metrics Card */}
328
- <View style={styles.statsCard}>
329
- <Text style={styles.sectionTitle}>SYSTEM STATUS</Text>
330
- <View style={styles.statsGrid}>
331
- <View style={styles.statBox}>
332
- <Text style={styles.statVal}>{apiCount}</Text>
333
- <Text style={styles.statLbl}>APIs</Text>
334
- </View>
335
- <View style={styles.statBox}>
336
- <Text style={styles.statVal}>{logCount}</Text>
337
- <Text style={styles.statLbl}>Logs</Text>
338
- </View>
339
- <View style={styles.statBox}>
340
- <Text style={[styles.statVal, { color: '#EA580C' }]}>
341
- {analyticsCount}
342
- </Text>
343
- <Text style={styles.statLbl}>Analytics</Text>
344
- </View>
345
- <View style={styles.statBox}>
346
- <Text style={[styles.statVal, { color: '#A78BFA' }]}>
347
- {reduxState.ui.sidebarOpen ? 'Open' : 'Closed'}
348
- </Text>
349
- <Text style={styles.statLbl}>Sidebar</Text>
350
- </View>
351
- </View>
352
- </View>
353
-
354
- {/* Trigger Sample All Logs */}
355
- <View
356
- style={[
357
- styles.panelCard,
358
- { borderColor: '#22D3EE', marginBottom: 20 },
359
- ]}>
360
- <Text style={[styles.panelHeader, { color: '#22D3EE' }]}>
361
- 🎲 SAMPLE ALL LOGS
362
- </Text>
363
- <TouchableOpacity
364
- style={[
365
- styles.fullWidthBtn,
366
- { backgroundColor: '#0891B2' },
367
- ]}
368
- onPress={triggerSampleAll}
369
- >
370
- <Text style={styles.fullWidthBtnText}>
371
- Trigger Sample All Logs At Once
372
- </Text>
373
- </TouchableOpacity>
374
- </View>
375
-
376
- {/* Action Panel Grid */}
377
- <View style={styles.panelCard}>
378
- <Text style={styles.panelHeader}>🌐 API & NETWORK TESTS</Text>
379
- <View style={styles.btnRow}>
380
- <TouchableOpacity
381
- style={[styles.gridBtn, { borderColor: '#38BDF8' }]}
382
- onPress={triggerNetworkRequest}
383
- >
384
- <Text style={[styles.btnText, { color: '#38BDF8' }]}>
385
- Fetch (200 OK)
386
- </Text>
387
- </TouchableOpacity>
388
- <TouchableOpacity
389
- style={[styles.gridBtn, { borderColor: '#F43F5E' }]}
390
- onPress={triggerFailedNetworkRequest}
391
- >
392
- <Text style={[styles.btnText, { color: '#F43F5E' }]}>
393
- Fetch (404 Err)
394
- </Text>
395
- </TouchableOpacity>
396
- </View>
397
- </View>
398
-
399
- <View style={styles.panelCard}>
400
- <Text style={styles.panelHeader}>
401
- ⚡ AXIOS AUTOMATIC INTERCEPTION
402
- </Text>
403
- <View style={{ gap: 8 }}>
404
- <View style={styles.btnRow}>
405
- <TouchableOpacity
406
- style={[styles.gridBtn, { borderColor: '#10B981' }]}
407
- onPress={triggerAxiosGet}
408
- >
409
- <Text style={[styles.btnText, { color: '#10B981' }]}>
410
- Axios GET
411
- </Text>
412
- </TouchableOpacity>
413
- <TouchableOpacity
414
- style={[styles.gridBtn, { borderColor: '#8B5CF6' }]}
415
- onPress={triggerAxiosPost}
416
- >
417
- <Text style={[styles.btnText, { color: '#8B5CF6' }]}>
418
- Axios POST
419
- </Text>
420
- </TouchableOpacity>
421
- </View>
422
- <View style={styles.btnRow}>
423
- <TouchableOpacity
424
- style={[styles.gridBtn, { borderColor: '#F59E0B' }]}
425
- onPress={triggerAxiosPut}
426
- >
427
- <Text style={[styles.btnText, { color: '#F59E0B' }]}>
428
- Axios PUT
429
- </Text>
430
- </TouchableOpacity>
431
- <TouchableOpacity
432
- style={[styles.gridBtn, { borderColor: '#38BDF8' }]}
433
- onPress={triggerAxiosPatch}
434
- >
435
- <Text style={[styles.btnText, { color: '#38BDF8' }]}>
436
- Axios PATCH
437
- </Text>
438
- </TouchableOpacity>
439
- <TouchableOpacity
440
- style={[styles.gridBtn, { borderColor: '#EF4444' }]}
441
- onPress={triggerAxiosDelete}
442
- >
443
- <Text style={[styles.btnText, { color: '#EF4444' }]}>
444
- Axios DEL
445
- </Text>
446
- </TouchableOpacity>
447
- </View>
448
- </View>
449
- </View>
450
-
451
- <View style={styles.panelCard}>
452
- <Text style={styles.panelHeader}>📝 CONSOLE EVENT ACTIONS</Text>
453
- <TouchableOpacity
454
- style={[styles.fullWidthBtn, { backgroundColor: '#6366F1' }]}
455
- onPress={triggerConsoleLogs}
456
- >
457
- <Text style={styles.fullWidthBtnText}>
458
- Trigger Log, Warn & Error Logs
459
- </Text>
460
- </TouchableOpacity>
461
-
462
- <View style={[styles.btnRow, {marginTop: 8}]}>
463
- <TouchableOpacity
464
- style={[styles.gridBtn, { borderColor: '#8B5CF6' }]}
465
- onPress={() => {
466
- console.log(
467
- 'Multi-argument payload inspection:',
468
- { userId: 101, username: 'venkatesh', role: 'Lead Architect' },
469
- ['permissions.read', 'permissions.write', 'permissions.admin'],
470
- { device: 'iPhone 15 Pro', os: 'iOS 18.0', battery: '92%' },
471
- );
472
- }}
473
- >
474
- <Text style={[styles.btnText, { color: '#8B5CF6' }]}>
475
- Multi-Arg Log
476
- </Text>
477
- </TouchableOpacity>
478
-
479
- <TouchableOpacity
480
- style={[styles.gridBtn, { borderColor: '#EF4444' }]}
481
- onPress={() => {
482
- try {
483
- throw new TypeError('Cannot read properties of undefined (reading "authToken")');
484
- } catch (err) {
485
- console.error(err);
486
- }
487
- }}
488
- >
489
- <Text style={[styles.btnText, { color: '#EF4444' }]}>
490
- Error Stack Log
491
- </Text>
492
- </TouchableOpacity>
493
- </View>
494
- </View>
495
-
496
- <View style={styles.panelCard}>
497
- <Text style={styles.panelHeader}>📊 ANALYTICS LOG TESTS</Text>
498
- <View style={styles.btnRow}>
499
- <TouchableOpacity
500
- style={[styles.gridBtn, { borderColor: '#EA580C' }]}
501
- onPress={() => {
502
- console.log(
503
- '[App] Logged custom analytics event: click_button',
504
- );
505
- logAnalyticsEvent('click_button', {
506
- button_name: 'test_action',
507
- screen_name: 'Home',
508
- clicked_at: new Date().toLocaleTimeString(),
509
- });
510
- }}
511
- >
512
- <Text style={[styles.btnText, { color: '#EA580C' }]}>
513
- Log Custom Event
514
- </Text>
515
- </TouchableOpacity>
516
- <TouchableOpacity
517
- style={[styles.gridBtn, { borderColor: '#E11D48' }]}
518
- onPress={() => {
519
- console.log(
520
- '[App] Logged analytics ecommerce event: item_purchase',
521
- );
522
- logAnalyticsEvent(
523
- 'item_purchase',
524
- {
525
- item_id: 'prod_999',
526
- item_name: 'Premium Debug Kit',
527
- price: 29.99,
528
- currency: 'USD',
529
- items: [
530
- {
531
- id: 'prod_999',
532
- name: 'Premium Debug Kit',
533
- price: 29.99,
534
- },
535
- ],
536
- },
537
- {
538
- user_tier: 'gold_member',
539
- signup_platform: 'ios_app',
540
- },
541
- );
542
- }}
543
- >
544
- <Text style={[styles.btnText, { color: '#E11D48' }]}>
545
- Log Purchase
546
- </Text>
547
- </TouchableOpacity>
548
- </View>
549
- </View>
550
-
551
- <View style={styles.panelCard}>
552
- <Text style={styles.panelHeader}>⚙️ REDUX & STATE ACTIONS</Text>
553
- <View style={styles.btnRow}>
554
- <TouchableOpacity
555
- style={[styles.gridBtn, { borderColor: '#10B981' }]}
556
- onPress={handleToggleSidebar}
557
- >
558
- <Text style={[styles.btnText, { color: '#10B981' }]}>
559
- Toggle Sidebar
560
- </Text>
561
- </TouchableOpacity>
562
- <TouchableOpacity
563
- style={[styles.gridBtn, { borderColor: '#06B6D4' }]}
564
- onPress={() => {
565
- mockStore.dispatch({
566
- type: 'SET_THEME',
567
- payload: mockStore.getState().settings.theme === 'dark' ? 'light' : 'dark',
568
- });
569
- }}
570
- >
571
- <Text style={[styles.btnText, { color: '#06B6D4' }]}>
572
- Toggle Theme
573
- </Text>
574
- </TouchableOpacity>
575
- </View>
576
- <TouchableOpacity
577
- style={[styles.fullWidthBtn, { backgroundColor: '#8B5CF6', marginTop: 8 }]}
578
- onPress={handleToggleSidebar}
579
- >
580
- <Text style={styles.fullWidthBtnText}>
581
- Dispatch: Toggle Sidebar & Update Time
582
- </Text>
583
- </TouchableOpacity>
584
- </View>
585
-
586
- <View style={styles.panelCard}>
587
- <Text style={styles.panelHeader}>➔ ROUTING & WEBVIEW</Text>
588
- <View style={styles.btnRow}>
589
- <TouchableOpacity
590
- style={[styles.gridBtn, { borderColor: '#10B981' }]}
591
- onPress={() => navigation.navigate('Details')}
592
- >
593
- <Text style={[styles.btnText, { color: '#10B981' }]}>
594
- Go to Details
595
- </Text>
596
- </TouchableOpacity>
597
- <TouchableOpacity
598
- style={[styles.gridBtn, { borderColor: '#F59E0B' }]}
599
- onPress={() => navigation.navigate('WebView')}
600
- >
601
- <Text style={[styles.btnText, { color: '#F59E0B' }]}>
602
- Go to WebView
603
- </Text>
604
- </TouchableOpacity>
605
- </View>
606
- </View>
607
-
608
- <View style={[styles.panelCard, { borderColor: '#F43F5E' }]}>
609
- <Text style={[styles.panelHeader, { color: '#F43F5E' }]}>
610
- 💥 CRASH SIMULATION TESTS
611
- </Text>
612
- <View style={styles.btnRow}>
613
- <TouchableOpacity
614
- style={[
615
- styles.gridBtn,
616
- {
617
- borderColor: '#F43F5E',
618
- backgroundColor: 'rgba(244,63,94,0.05)',
619
- },
620
- ]}
621
- onPress={() => setActiveCrash('js')}
622
- >
623
- <Text style={[styles.btnText, { color: '#F43F5E' }]}>
624
- JS Crash
625
- </Text>
626
- </TouchableOpacity>
627
- <TouchableOpacity
628
- style={[
629
- styles.gridBtn,
630
- {
631
- borderColor: '#EF4444',
632
- backgroundColor: 'rgba(239,68,68,0.1)',
633
- },
634
- ]}
635
- onPress={() => setActiveCrash('native')}
636
- >
637
- <Text style={[styles.btnText, { color: '#EF4444' }]}>
638
- Native Crash
639
- </Text>
640
- </TouchableOpacity>
641
- </View>
642
- </View>
643
- </ScrollView>
644
- {activeCrash !== 'none' && <BuggyComponent type={activeCrash} />}
645
- </SafeAreaView>
646
- );
647
- }
648
-
649
- function DetailsScreen({ navigation }: any) {
650
- const triggerDetailLogs = () => {
651
- console.log('[Details] User triggered log from Details screen.');
652
- };
653
-
654
- React.useEffect(() => {
655
- console.log('[Test] DetailsScreen mounted!');
656
- }, []);
657
-
658
- return (
659
- <SafeAreaView style={styles.safeContainer}>
660
- <ScrollView contentContainerStyle={styles.content}>
661
- <View style={styles.headerHero}>
662
- <Text style={styles.headerBadge}>DETAILS MODULE</Text>
663
- <Text style={styles.headerTitle}>Navigation Tracking</Text>
664
- <Text style={styles.headerSubtitle}>
665
- The breadcrumbs inside the inspector track your stack route in
666
- real-time.
667
- </Text>
668
- </View>
669
-
670
- <View style={styles.panelCard}>
671
- <Text style={styles.panelHeader}>MODULE ACTIONS</Text>
672
- <TouchableOpacity
673
- style={[
674
- styles.fullWidthBtn,
675
- { backgroundColor: '#10B981', marginBottom: 12 },
676
- ]}
677
- onPress={triggerDetailLogs}
678
- >
679
- <Text style={styles.fullWidthBtnText}>
680
- Trigger Log from Details Screen
681
- </Text>
682
- </TouchableOpacity>
683
-
684
- <TouchableOpacity
685
- style={[styles.fullWidthBtn, { backgroundColor: '#475569' }]}
686
- onPress={() => navigation.goBack()}
687
- >
688
- <Text style={styles.fullWidthBtnText}>Go Back Home</Text>
689
- </TouchableOpacity>
690
- </View>
691
- </ScrollView>
692
- </SafeAreaView>
693
- );
694
- }
695
-
696
- function WebViewScreen({ navigation }: any) {
697
- React.useEffect(() => {
698
- console.log('[WebView] WebViewScreen mounted, loading apple.com...');
699
- }, []);
700
-
701
- return (
702
- <SafeAreaView style={styles.safeContainer}>
703
- <View style={{ flex: 1 }}>
704
- <WebView
705
- source={{ uri: 'https://apple.com' }}
706
- style={{ flex: 1 }}
707
- onLoadStart={() =>
708
- console.log('[WebView] Navigation started to apple.com')
709
- }
710
- onLoadEnd={() =>
711
- console.log('[WebView] Navigation finished loading apple.com')
712
- }
713
- />
714
- </View>
715
- </SafeAreaView>
716
- );
717
- }
718
-
719
- const Stack = createNativeStackNavigator();
720
- const navigationRef = createNavigationContainerRef();
721
-
722
- function App() {
723
- const isDarkMode = useColorScheme() === 'dark';
724
-
725
- return (
726
- <SafeAreaProvider>
727
- <StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} />
728
- <ErrorBoundary>
729
- <NavigationContainer ref={navigationRef}>
730
- <Stack.Navigator
731
- screenOptions={{
732
- headerShown: false,
733
- contentStyle: {
734
- backgroundColor: '#0F172A',
735
- },
736
- }}
737
- >
738
- <Stack.Screen name="Home" component={HomeScreen} />
739
- <Stack.Screen name="Details" component={DetailsScreen} />
740
- <Stack.Screen name="WebView" component={WebViewScreen} />
741
- </Stack.Navigator>
742
- </NavigationContainer>
743
- {/* Render inspector globally exactly once at the root level */}
744
- <NetworkInspector
745
- navigationRef={navigationRef}
746
- appIcon={require('./assets/app_icon.png')}
747
- environment="DEV"
748
- />
749
- </ErrorBoundary>
750
- </SafeAreaProvider>
751
- );
752
- }
753
-
754
- const styles = StyleSheet.create({
755
- safeContainer: {
756
- flex: 1,
757
- backgroundColor: '#0F172A',
758
- paddingTop: 12,
759
- },
760
- content: {
761
- paddingHorizontal: 20,
762
- paddingBottom: 40,
763
- },
764
- headerHero: {
765
- marginTop: 20,
766
- marginBottom: 24,
767
- alignItems: 'center',
768
- },
769
- headerBadge: {
770
- fontSize: 10,
771
- fontWeight: 'bold',
772
- color: '#818CF8',
773
- letterSpacing: 1.5,
774
- marginBottom: 6,
775
- },
776
- headerTitle: {
777
- fontSize: 14,
778
- fontWeight: '900',
779
- color: '#F8FAFC',
780
- marginBottom: 8,
781
- },
782
- headerSubtitle: {
783
- fontSize: 14,
784
- color: '#94A3B8',
785
- textAlign: 'center',
786
- lineHeight: 20,
787
- },
788
- statsCard: {
789
- backgroundColor: '#1E293B',
790
- borderRadius: 16,
791
- padding: 16,
792
- borderWidth: 1,
793
- borderColor: '#334155',
794
- marginBottom: 20,
795
- },
796
- sectionTitle: {
797
- fontSize: 11,
798
- fontWeight: '800',
799
- color: '#94A3B8',
800
- letterSpacing: 1.2,
801
- marginBottom: 12,
802
- },
803
- statsGrid: {
804
- flexDirection: 'row',
805
- justifyContent: 'space-between',
806
- gap: 12,
807
- },
808
- statBox: {
809
- flex: 1,
810
- backgroundColor: '#0F172A',
811
- borderRadius: 12,
812
- paddingVertical: 12,
813
- alignItems: 'center',
814
- borderWidth: 1,
815
- borderColor: '#1E293B',
816
- },
817
- statVal: {
818
- fontSize: 18,
819
- fontWeight: 'bold',
820
- color: '#38BDF8',
821
- },
822
- statLbl: {
823
- fontSize: 10,
824
- color: '#64748B',
825
- marginTop: 2,
826
- fontWeight: '600',
827
- },
828
- panelCard: {
829
- backgroundColor: '#1E293B',
830
- borderRadius: 16,
831
- padding: 16,
832
- borderWidth: 1,
833
- borderColor: '#334155',
834
- marginBottom: 16,
835
- },
836
- panelHeader: {
837
- fontSize: 12,
838
- fontWeight: '800',
839
- color: '#F8FAFC',
840
- letterSpacing: 0.8,
841
- marginBottom: 12,
842
- },
843
- btnRow: {
844
- flexDirection: 'row',
845
- gap: 12,
846
- },
847
- gridBtn: {
848
- flex: 1,
849
- height: 44,
850
- borderRadius: 10,
851
- borderWidth: 1.5,
852
- justifyContent: 'center',
853
- alignItems: 'center',
854
- backgroundColor: 'rgba(255,255,255,0.02)',
855
- },
856
- btnText: {
857
- fontSize: 13,
858
- fontWeight: 'bold',
859
- },
860
- fullWidthBtn: {
861
- width: '100%',
862
- height: 44,
863
- borderRadius: 10,
864
- justifyContent: 'center',
865
- alignItems: 'center',
866
- shadowColor: '#000',
867
- shadowOffset: { width: 0, height: 2 },
868
- shadowOpacity: 0.2,
869
- shadowRadius: 4,
870
- elevation: 3,
871
- },
872
- fullWidthBtnText: {
873
- fontSize: 13,
874
- fontWeight: 'bold',
875
- color: '#FFFFFF',
876
- },
877
- });
878
-
879
- export default App;