react-native-inapp-inspector 1.1.13 → 1.1.15

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 (250) hide show
  1. package/README.md +9 -34
  2. package/dist/commonjs/assets/svgAssets.d.ts +3 -0
  3. package/dist/commonjs/assets/svgAssets.js +17 -0
  4. package/dist/commonjs/components/AnalyticsEventCard.d.ts +1 -14
  5. package/dist/commonjs/components/AnalyticsEventCard.js +120 -50
  6. package/dist/commonjs/components/AnalyticsGraph.d.ts +2 -6
  7. package/dist/commonjs/components/AnalyticsGraph.js +8 -8
  8. package/dist/commonjs/components/AnalyticsTabView.d.ts +15 -0
  9. package/dist/commonjs/components/AnalyticsTabView.js +157 -0
  10. package/dist/commonjs/components/AnimatedEntrance.d.ts +1 -1
  11. package/dist/commonjs/components/AnimatedEntrance.js +2 -2
  12. package/dist/commonjs/components/ApiDetailView.d.ts +22 -0
  13. package/dist/commonjs/components/ApiDetailView.js +304 -0
  14. package/dist/commonjs/components/ApisTabView.d.ts +33 -0
  15. package/dist/commonjs/components/ApisTabView.js +235 -0
  16. package/dist/commonjs/components/CodeSnippet.d.ts +1 -5
  17. package/dist/commonjs/components/CodeSnippet.js +34 -34
  18. package/dist/commonjs/components/ConsoleLogCard.d.ts +1 -8
  19. package/dist/commonjs/components/ConsoleLogCard.js +262 -442
  20. package/dist/commonjs/components/ConsoleLogDetailView.d.ts +9 -0
  21. package/dist/commonjs/components/ConsoleLogDetailView.js +278 -0
  22. package/dist/commonjs/components/ConsoleLogsTabView.d.ts +24 -0
  23. package/dist/commonjs/components/ConsoleLogsTabView.js +354 -0
  24. package/dist/commonjs/components/DiffViewer.js +4 -2
  25. package/dist/commonjs/components/DomainHeader.js +66 -41
  26. package/dist/commonjs/components/EmptyState.d.ts +2 -2
  27. package/dist/commonjs/components/EmptyState.js +2 -2
  28. package/dist/commonjs/components/EndOfListFooter.d.ts +8 -0
  29. package/dist/commonjs/components/EndOfListFooter.js +90 -0
  30. package/dist/commonjs/components/ErrorBoundary.d.ts +5 -14
  31. package/dist/commonjs/components/ErrorBoundary.js +28 -28
  32. package/dist/commonjs/components/FloatingBubble.d.ts +14 -0
  33. package/dist/commonjs/components/FloatingBubble.js +75 -0
  34. package/dist/commonjs/components/HeadersSection.js +5 -3
  35. package/dist/commonjs/components/HighlightText.d.ts +1 -1
  36. package/dist/commonjs/components/HighlightText.js +5 -7
  37. package/dist/commonjs/components/Inspector/AnalyticsTab.d.ts +3 -0
  38. package/dist/commonjs/components/Inspector/AnalyticsTab.js +232 -0
  39. package/dist/commonjs/components/Inspector/ConsoleTab.d.ts +3 -0
  40. package/dist/commonjs/components/Inspector/ConsoleTab.js +410 -0
  41. package/dist/commonjs/components/Inspector/FabLauncher.d.ts +3 -0
  42. package/dist/commonjs/components/Inspector/FabLauncher.js +54 -0
  43. package/dist/commonjs/components/Inspector/InsightsDashboard.d.ts +3 -0
  44. package/dist/commonjs/components/Inspector/InsightsDashboard.js +619 -0
  45. package/dist/commonjs/components/Inspector/InspectorContext.d.ts +5 -0
  46. package/dist/commonjs/components/Inspector/InspectorContext.js +18 -0
  47. package/dist/commonjs/components/Inspector/InspectorHeader.d.ts +3 -0
  48. package/dist/commonjs/components/Inspector/InspectorHeader.js +452 -0
  49. package/dist/commonjs/components/Inspector/LogDetail.d.ts +3 -0
  50. package/dist/commonjs/components/Inspector/LogDetail.js +963 -0
  51. package/dist/commonjs/components/Inspector/MainScreen.d.ts +3 -0
  52. package/dist/commonjs/components/Inspector/MainScreen.js +68 -0
  53. package/dist/commonjs/components/Inspector/NavigationTracker.d.ts +3 -0
  54. package/dist/commonjs/components/Inspector/NavigationTracker.js +12 -0
  55. package/dist/commonjs/components/Inspector/NetworkDetail.d.ts +3 -0
  56. package/dist/commonjs/components/Inspector/NetworkDetail.js +405 -0
  57. package/dist/commonjs/components/Inspector/NetworkTab.d.ts +3 -0
  58. package/dist/commonjs/components/Inspector/NetworkTab.js +281 -0
  59. package/dist/commonjs/components/Inspector/ReduxTab.d.ts +3 -0
  60. package/dist/commonjs/components/Inspector/ReduxTab.js +75 -0
  61. package/dist/commonjs/components/Inspector/SettingsPanel.d.ts +3 -0
  62. package/dist/commonjs/components/Inspector/SettingsPanel.js +1476 -0
  63. package/dist/commonjs/components/Inspector/TabBar.d.ts +3 -0
  64. package/dist/commonjs/components/Inspector/TabBar.js +95 -0
  65. package/dist/commonjs/components/Inspector/WebViewTab.d.ts +3 -0
  66. package/dist/commonjs/components/Inspector/WebViewTab.js +757 -0
  67. package/dist/commonjs/components/InspectorHeader.d.ts +19 -0
  68. package/dist/commonjs/components/InspectorHeader.js +329 -0
  69. package/dist/commonjs/components/InspectorTabBar.d.ts +16 -0
  70. package/dist/commonjs/components/InspectorTabBar.js +90 -0
  71. package/dist/commonjs/components/JsonViewer.d.ts +4 -1
  72. package/dist/commonjs/components/JsonViewer.js +110 -171
  73. package/dist/commonjs/components/LogCard.js +109 -86
  74. package/dist/commonjs/components/MetaAccordion.d.ts +1 -10
  75. package/dist/commonjs/components/MetaAccordion.js +23 -21
  76. package/dist/commonjs/components/NavigationTracker.d.ts +7 -0
  77. package/dist/commonjs/components/NavigationTracker.js +76 -0
  78. package/dist/commonjs/components/NetworkIcons.d.ts +6 -0
  79. package/dist/commonjs/components/NetworkIcons.js +54 -8
  80. package/dist/commonjs/components/ReduxTabView.d.ts +9 -0
  81. package/dist/commonjs/components/ReduxTabView.js +56 -0
  82. package/dist/commonjs/components/ReduxTreeView.js +241 -200
  83. package/dist/commonjs/components/SegmentedTabs.d.ts +15 -0
  84. package/dist/commonjs/components/SegmentedTabs.js +52 -0
  85. package/dist/commonjs/components/SettingsView.d.ts +13 -0
  86. package/dist/commonjs/components/SettingsView.js +328 -0
  87. package/dist/commonjs/components/TouchableScale.d.ts +2 -2
  88. package/dist/commonjs/components/TouchableScale.js +2 -2
  89. package/dist/commonjs/components/TreeNode.js +2 -2
  90. package/dist/commonjs/constants/index.js +1 -12
  91. package/dist/commonjs/constants/version.d.ts +1 -1
  92. package/dist/commonjs/constants/version.js +1 -1
  93. package/dist/commonjs/customHooks/analyticsLogger.d.ts +8 -0
  94. package/dist/commonjs/customHooks/analyticsLogger.js +42 -1
  95. package/dist/commonjs/customHooks/consoleLogger.js +137 -13
  96. package/dist/commonjs/customHooks/networkLogger.d.ts +0 -1
  97. package/dist/commonjs/customHooks/networkLogger.js +0 -1
  98. package/dist/commonjs/customHooks/reduxLogger.d.ts +2 -9
  99. package/dist/commonjs/enums/index.d.ts +39 -0
  100. package/dist/commonjs/enums/index.js +50 -0
  101. package/dist/commonjs/helpers/index.d.ts +27 -1
  102. package/dist/commonjs/helpers/index.js +187 -12
  103. package/dist/commonjs/helpers/settingsStore.d.ts +2 -24
  104. package/dist/commonjs/i18n/en.json +144 -0
  105. package/dist/commonjs/i18n/index.d.ts +2 -0
  106. package/dist/commonjs/i18n/index.js +27 -0
  107. package/dist/commonjs/i18n/locales/en.json +314 -0
  108. package/dist/commonjs/index.d.ts +2 -3
  109. package/dist/commonjs/index.js +207 -4927
  110. package/dist/commonjs/styles/AppColors.d.ts +148 -0
  111. package/dist/commonjs/styles/AppColors.js +176 -0
  112. package/dist/commonjs/styles/common.d.ts +3 -0
  113. package/dist/commonjs/styles/common.js +201 -0
  114. package/dist/commonjs/styles/index.d.ts +219 -435
  115. package/dist/commonjs/styles/index.js +312 -488
  116. package/dist/commonjs/types/enums.d.ts +9 -0
  117. package/dist/commonjs/types/enums.js +4 -0
  118. package/dist/commonjs/types/index.d.ts +4 -111
  119. package/dist/commonjs/types/index.js +16 -0
  120. package/dist/commonjs/types/interfaces.d.ts +337 -0
  121. package/dist/commonjs/types/interfaces.js +2 -0
  122. package/dist/esm/assets/svgAssets.d.ts +3 -0
  123. package/dist/esm/assets/svgAssets.js +14 -0
  124. package/dist/esm/components/AnalyticsEventCard.d.ts +1 -14
  125. package/dist/esm/components/AnalyticsEventCard.js +118 -48
  126. package/dist/esm/components/AnalyticsGraph.d.ts +2 -6
  127. package/dist/esm/components/AnalyticsGraph.js +8 -8
  128. package/dist/esm/components/AnalyticsTabView.d.ts +15 -0
  129. package/dist/esm/components/AnalyticsTabView.js +151 -0
  130. package/dist/esm/components/AnimatedEntrance.d.ts +1 -1
  131. package/dist/esm/components/AnimatedEntrance.js +2 -2
  132. package/dist/esm/components/ApiDetailView.d.ts +22 -0
  133. package/dist/esm/components/ApiDetailView.js +264 -0
  134. package/dist/esm/components/ApisTabView.d.ts +33 -0
  135. package/dist/esm/components/ApisTabView.js +196 -0
  136. package/dist/esm/components/CodeSnippet.d.ts +1 -5
  137. package/dist/esm/components/CodeSnippet.js +34 -34
  138. package/dist/esm/components/ConsoleLogCard.d.ts +1 -8
  139. package/dist/esm/components/ConsoleLogCard.js +262 -409
  140. package/dist/esm/components/ConsoleLogDetailView.d.ts +9 -0
  141. package/dist/esm/components/ConsoleLogDetailView.js +271 -0
  142. package/dist/esm/components/ConsoleLogsTabView.d.ts +24 -0
  143. package/dist/esm/components/ConsoleLogsTabView.js +348 -0
  144. package/dist/esm/components/DiffViewer.js +4 -2
  145. package/dist/esm/components/DomainHeader.js +66 -41
  146. package/dist/esm/components/EmptyState.d.ts +2 -2
  147. package/dist/esm/components/EmptyState.js +2 -2
  148. package/dist/esm/components/EndOfListFooter.d.ts +8 -0
  149. package/dist/esm/components/EndOfListFooter.js +83 -0
  150. package/dist/esm/components/ErrorBoundary.d.ts +5 -14
  151. package/dist/esm/components/ErrorBoundary.js +29 -29
  152. package/dist/esm/components/FloatingBubble.d.ts +14 -0
  153. package/dist/esm/components/FloatingBubble.js +68 -0
  154. package/dist/esm/components/HeadersSection.js +5 -3
  155. package/dist/esm/components/HighlightText.d.ts +1 -1
  156. package/dist/esm/components/HighlightText.js +5 -7
  157. package/dist/esm/components/Inspector/AnalyticsTab.d.ts +3 -0
  158. package/dist/esm/components/Inspector/AnalyticsTab.js +194 -0
  159. package/dist/esm/components/Inspector/ConsoleTab.d.ts +3 -0
  160. package/dist/esm/components/Inspector/ConsoleTab.js +372 -0
  161. package/dist/esm/components/Inspector/FabLauncher.d.ts +3 -0
  162. package/dist/esm/components/Inspector/FabLauncher.js +49 -0
  163. package/dist/esm/components/Inspector/InsightsDashboard.d.ts +3 -0
  164. package/dist/esm/components/Inspector/InsightsDashboard.js +614 -0
  165. package/dist/esm/components/Inspector/InspectorContext.d.ts +5 -0
  166. package/dist/esm/components/Inspector/InspectorContext.js +13 -0
  167. package/dist/esm/components/Inspector/InspectorHeader.d.ts +3 -0
  168. package/dist/esm/components/Inspector/InspectorHeader.js +447 -0
  169. package/dist/esm/components/Inspector/LogDetail.d.ts +3 -0
  170. package/dist/esm/components/Inspector/LogDetail.js +925 -0
  171. package/dist/esm/components/Inspector/MainScreen.d.ts +3 -0
  172. package/dist/esm/components/Inspector/MainScreen.js +63 -0
  173. package/dist/esm/components/Inspector/NavigationTracker.d.ts +3 -0
  174. package/dist/esm/components/Inspector/NavigationTracker.js +10 -0
  175. package/dist/esm/components/Inspector/NetworkDetail.d.ts +3 -0
  176. package/dist/esm/components/Inspector/NetworkDetail.js +367 -0
  177. package/dist/esm/components/Inspector/NetworkTab.d.ts +3 -0
  178. package/dist/esm/components/Inspector/NetworkTab.js +243 -0
  179. package/dist/esm/components/Inspector/ReduxTab.d.ts +3 -0
  180. package/dist/esm/components/Inspector/ReduxTab.js +70 -0
  181. package/dist/esm/components/Inspector/SettingsPanel.d.ts +3 -0
  182. package/dist/esm/components/Inspector/SettingsPanel.js +1438 -0
  183. package/dist/esm/components/Inspector/TabBar.d.ts +3 -0
  184. package/dist/esm/components/Inspector/TabBar.js +90 -0
  185. package/dist/esm/components/Inspector/WebViewTab.d.ts +3 -0
  186. package/dist/esm/components/Inspector/WebViewTab.js +752 -0
  187. package/dist/esm/components/InspectorHeader.d.ts +19 -0
  188. package/dist/esm/components/InspectorHeader.js +323 -0
  189. package/dist/esm/components/InspectorTabBar.d.ts +16 -0
  190. package/dist/esm/components/InspectorTabBar.js +84 -0
  191. package/dist/esm/components/JsonViewer.d.ts +4 -1
  192. package/dist/esm/components/JsonViewer.js +111 -172
  193. package/dist/esm/components/LogCard.js +111 -88
  194. package/dist/esm/components/MetaAccordion.d.ts +1 -10
  195. package/dist/esm/components/MetaAccordion.js +23 -21
  196. package/dist/esm/components/NavigationTracker.d.ts +7 -0
  197. package/dist/esm/components/NavigationTracker.js +39 -0
  198. package/dist/esm/components/NetworkIcons.d.ts +6 -0
  199. package/dist/esm/components/NetworkIcons.js +46 -6
  200. package/dist/esm/components/ReduxTabView.d.ts +9 -0
  201. package/dist/esm/components/ReduxTabView.js +50 -0
  202. package/dist/esm/components/ReduxTreeView.js +243 -202
  203. package/dist/esm/components/SegmentedTabs.d.ts +15 -0
  204. package/dist/esm/components/SegmentedTabs.js +47 -0
  205. package/dist/esm/components/SettingsView.d.ts +13 -0
  206. package/dist/esm/components/SettingsView.js +321 -0
  207. package/dist/esm/components/TouchableScale.d.ts +2 -2
  208. package/dist/esm/components/TouchableScale.js +2 -2
  209. package/dist/esm/components/TreeNode.js +2 -2
  210. package/dist/esm/constants/index.js +1 -12
  211. package/dist/esm/constants/version.d.ts +1 -1
  212. package/dist/esm/constants/version.js +1 -1
  213. package/dist/esm/customHooks/analyticsLogger.d.ts +8 -0
  214. package/dist/esm/customHooks/analyticsLogger.js +37 -0
  215. package/dist/esm/customHooks/consoleLogger.js +137 -13
  216. package/dist/esm/customHooks/networkLogger.d.ts +0 -1
  217. package/dist/esm/customHooks/networkLogger.js +0 -1
  218. package/dist/esm/customHooks/reduxLogger.d.ts +2 -9
  219. package/dist/esm/enums/index.d.ts +39 -0
  220. package/dist/esm/enums/index.js +47 -0
  221. package/dist/esm/helpers/index.d.ts +27 -1
  222. package/dist/esm/helpers/index.js +180 -11
  223. package/dist/esm/helpers/settingsStore.d.ts +2 -24
  224. package/dist/esm/i18n/en.json +144 -0
  225. package/dist/esm/i18n/index.d.ts +2 -0
  226. package/dist/esm/i18n/index.js +22 -0
  227. package/dist/esm/i18n/locales/en.json +314 -0
  228. package/dist/esm/index.d.ts +2 -3
  229. package/dist/esm/index.js +207 -4923
  230. package/dist/esm/styles/AppColors.d.ts +148 -0
  231. package/dist/esm/styles/AppColors.js +176 -0
  232. package/dist/esm/styles/common.d.ts +3 -0
  233. package/dist/esm/styles/common.js +197 -0
  234. package/dist/esm/styles/index.d.ts +219 -435
  235. package/dist/esm/styles/index.js +312 -488
  236. package/dist/esm/types/enums.d.ts +9 -0
  237. package/dist/esm/types/enums.js +3 -0
  238. package/dist/esm/types/index.d.ts +4 -111
  239. package/dist/esm/types/index.js +2 -1
  240. package/dist/esm/types/interfaces.d.ts +337 -0
  241. package/dist/esm/types/interfaces.js +1 -0
  242. package/example/App.tsx +88 -1
  243. package/example/android/app/build.gradle +29 -1
  244. package/example/android/app/src/main/java/com/example/MainApplication.kt +25 -0
  245. package/example/android/build.gradle +31 -4
  246. package/example/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  247. package/example/android/gradle.properties +1 -0
  248. package/example/android/settings.gradle +20 -1
  249. package/example/package-lock.json +1 -1
  250. package/package.json +3 -1
@@ -1,4 +1,5 @@
1
1
  import React, { useState } from 'react';
2
+ import { useTranslation } from 'react-i18next';
2
3
  import { View, Pressable, Text, Animated } from 'react-native';
3
4
  // Constants
4
5
  import { DURATION_FAST_MS, DURATION_SLOW_MS } from '../constants';
@@ -15,8 +16,9 @@ import { AppColors } from '../styles/AppColors';
15
16
  import { AppFonts } from '../styles/AppFonts';
16
17
  import styles from '../styles';
17
18
  const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, method, contentType, url, }) => {
19
+ const { t } = useTranslation();
18
20
  const [urlExpanded, setUrlExpanded] = useState(false);
19
- const { toggleOpen, chevronStyle, bodyStyle } = useAccordion(true, 400, 390);
21
+ const { toggleOpen, chevronStyle, bodyStyle } = useAccordion(true, 800, 390);
20
22
  const isFailed = status === 0 || status == null;
21
23
  const renderFormattedUrl = (rawUrl) => {
22
24
  if (!rawUrl)
@@ -44,10 +46,10 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
44
46
  search = pathAndSearch.substring(queryIndex);
45
47
  }
46
48
  return (<Text style={{ lineHeight: 16 }}>
47
- {protocol ? (<Text style={{ color: '#94A3B8', fontFamily: AppFonts.interRegular }}>{protocol}</Text>) : null}
49
+ {protocol ? (<Text style={{ color: AppColors.slate400, fontFamily: AppFonts.interRegular }}>{protocol}</Text>) : null}
48
50
  <Text style={{ color: AppColors.purple, fontFamily: AppFonts.interBold }}>{host}</Text>
49
- <Text style={{ color: '#334155', fontFamily: AppFonts.interMedium }}>{pathname}</Text>
50
- {search ? (<Text style={{ color: '#0D9488', fontFamily: AppFonts.interRegular }}>{search}</Text>) : null}
51
+ <Text style={{ color: AppColors.slate700, fontFamily: AppFonts.interMedium }}>{pathname}</Text>
52
+ {search ? (<Text style={{ color: AppColors.teal600, fontFamily: AppFonts.interRegular }}>{search}</Text>) : null}
51
53
  </Text>);
52
54
  }
53
55
  catch {
@@ -69,7 +71,7 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
69
71
  <View style={styles.metaRow}>
70
72
  <View style={styles.metaLabelRow}>
71
73
  <CalendarIcon color={AppColors.grayTextWeak} size={14}/>
72
- <Text style={styles.metaLabel}>Triggered At</Text>
74
+ <Text style={styles.metaLabel}>{t('network.triggeredAt')}</Text>
73
75
  </View>
74
76
  <Text style={[
75
77
  styles.metaValue,
@@ -83,13 +85,13 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
83
85
  <View style={styles.metaRow}>
84
86
  <View style={styles.metaLabelRow}>
85
87
  <TerminalIcon color={AppColors.grayTextWeak} size={14}/>
86
- <Text style={styles.metaLabel}>Method</Text>
88
+ <Text style={styles.metaLabel}>{t('network.methodHeader')}</Text>
87
89
  </View>
88
90
  <View style={[
89
91
  styles.statusChip,
90
92
  {
91
- borderColor: 'rgba(107, 78, 255, 0.25)',
92
- backgroundColor: 'rgba(107, 78, 255, 0.08)',
93
+ borderColor: `${AppColors.brandPurple}40`,
94
+ backgroundColor: `${AppColors.brandPurple}14`,
93
95
  },
94
96
  ]}>
95
97
  <Text style={[
@@ -105,7 +107,7 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
105
107
  <View style={styles.metaRow}>
106
108
  <View style={styles.metaLabelRow}>
107
109
  <StatusIcon color={AppColors.grayTextWeak}/>
108
- <Text style={styles.metaLabel}>Status</Text>
110
+ <Text style={styles.metaLabel}>{t('network.statusHeader')}</Text>
109
111
  </View>
110
112
  <View style={[
111
113
  styles.statusChip,
@@ -122,7 +124,7 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
122
124
  styles.statusText,
123
125
  { color: isFailed ? AppColors.errorColor : statusColor },
124
126
  ]}>
125
- {isFailed ? 'Failed (Network Error)' : String(status)}
127
+ {isFailed ? t('network.failedNetworkError') : String(status)}
126
128
  </Text>
127
129
  </View>
128
130
  </View>
@@ -131,7 +133,7 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
131
133
  <View style={styles.metaRow}>
132
134
  <View style={styles.metaLabelRow}>
133
135
  <GlobeIcon color={AppColors.grayTextWeak} size={14}/>
134
- <Text style={styles.metaLabel}>Content Type</Text>
136
+ <Text style={styles.metaLabel}>{t('network.contentType')}</Text>
135
137
  </View>
136
138
  <Text style={styles.metaValue}>
137
139
  {contentType || 'application/json'}
@@ -142,7 +144,7 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
142
144
  <View style={styles.metaRow}>
143
145
  <View style={styles.metaLabelRow}>
144
146
  <ClockIcon color={AppColors.grayTextWeak} size={14}/>
145
- <Text style={styles.metaLabel}>Duration</Text>
147
+ <Text style={styles.metaLabel}>{t('network.durationHeader')}</Text>
146
148
  </View>
147
149
  <View style={styles.metaValueRow}>
148
150
  {duration != null && !isFailed && (<View style={[
@@ -157,10 +159,10 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
157
159
  { color: getDurationColor(duration) },
158
160
  ]}>
159
161
  {duration < DURATION_FAST_MS
160
- ? 'Fast'
162
+ ? t('network.perf.fast')
161
163
  : duration < DURATION_SLOW_MS
162
- ? 'Moderate'
163
- : 'Slow'}
164
+ ? t('network.perf.moderate')
165
+ : t('network.perf.slow')}
164
166
  </Text>
165
167
  </View>)}
166
168
  <Text style={styles.metaValue}>
@@ -173,7 +175,7 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
173
175
  <View style={styles.metaRow}>
174
176
  <View style={styles.metaLabelRow}>
175
177
  <SizeIcon color={AppColors.grayTextWeak}/>
176
- <Text style={styles.metaLabel}>Size</Text>
178
+ <Text style={styles.metaLabel}>{t('network.sizeHeader')}</Text>
177
179
  </View>
178
180
  <Text style={styles.metaValue}>{size}</Text>
179
181
  </View>
@@ -183,7 +185,7 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
183
185
  <View style={{ flexDirection: 'row', justifyContent: 'space-between', width: '100%', alignItems: 'center' }}>
184
186
  <View style={styles.metaLabelRow}>
185
187
  <GlobeIcon color={AppColors.grayTextWeak} size={14}/>
186
- <Text style={styles.metaLabel}>Full URL</Text>
188
+ <Text style={styles.metaLabel}>{t('network.fullUrl')}</Text>
187
189
  </View>
188
190
 
189
191
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 10 }}>
@@ -193,7 +195,7 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
193
195
  fontSize: 10.5,
194
196
  color: AppColors.purple,
195
197
  }}>
196
- {urlExpanded ? 'Show Less' : 'Show More'}
198
+ {urlExpanded ? t('network.showLess') : t('network.showMore')}
197
199
  </Text>
198
200
  </TouchableScale>)}
199
201
 
@@ -204,18 +206,18 @@ const MetaAccordion = ({ status, statusColor, duration, size, triggeredAt, metho
204
206
  color: AppColors.purple,
205
207
  textDecorationLine: 'underline',
206
208
  }}>
207
- Open
209
+ {t('network.open')}
208
210
  </Text>
209
211
  </TouchableScale>)}
210
212
  </View>
211
213
  </View>
212
214
 
213
215
  <View style={{
214
- backgroundColor: '#F8FAFC',
216
+ backgroundColor: AppColors.slate50,
215
217
  borderRadius: 8,
216
218
  padding: 8,
217
219
  borderWidth: 1.5,
218
- borderColor: '#E2E8F0',
220
+ borderColor: AppColors.slate200,
219
221
  width: '100%',
220
222
  marginTop: 2,
221
223
  }}>
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface NavigationTrackerProps {
3
+ onStateChange: (state: any) => void;
4
+ navigationRef?: any;
5
+ }
6
+ export declare const NavigationTracker: ({ onStateChange, navigationRef, }: NavigationTrackerProps) => React.ReactElement | null;
7
+ export default NavigationTracker;
@@ -0,0 +1,39 @@
1
+ import React, { useContext, useEffect } from 'react';
2
+ import { NavigationContext, useNavigationState } from '@react-navigation/native';
3
+ const ContextNavigationTracker = ({ onStateChange, }) => {
4
+ const navState = useNavigationState(state => state);
5
+ useEffect(() => {
6
+ onStateChange(navState);
7
+ }, [navState, onStateChange]);
8
+ return null;
9
+ };
10
+ export const NavigationTracker = ({ onStateChange, navigationRef, }) => {
11
+ const navContext = useContext(NavigationContext);
12
+ useEffect(() => {
13
+ if (!navigationRef)
14
+ return;
15
+ const getRef = () => navigationRef?.current || navigationRef;
16
+ const handleStateChange = () => {
17
+ const ref = getRef();
18
+ if (!ref)
19
+ return;
20
+ if (typeof ref.getRootState === 'function') {
21
+ onStateChange(ref.getRootState());
22
+ }
23
+ else if (typeof ref.getState === 'function') {
24
+ onStateChange(ref.getState());
25
+ }
26
+ };
27
+ const ref = getRef();
28
+ if (ref && typeof ref.addListener === 'function') {
29
+ const unsubscribe = ref.addListener('state', handleStateChange);
30
+ handleStateChange();
31
+ return unsubscribe;
32
+ }
33
+ }, [navigationRef, onStateChange]);
34
+ if (navContext) {
35
+ return <ContextNavigationTracker onStateChange={onStateChange}/>;
36
+ }
37
+ return null;
38
+ };
39
+ export default NavigationTracker;
@@ -16,6 +16,9 @@ export declare const CopyIcon: ({ color, size }: any) => React.JSX.Element;
16
16
  export declare const FetchIcon: ({ color, size }: any) => React.JSX.Element;
17
17
  export declare const TerminalIcon: ({ color, size, }: any) => React.JSX.Element;
18
18
  export declare const CheckIcon: ({ color, size }: any) => React.JSX.Element;
19
+ export declare const CircleCheckIcon: ({ color, size }: any) => React.JSX.Element;
20
+ export declare const CircleXIcon: ({ color, size }: any) => React.JSX.Element;
21
+ export declare const CircleAlertIcon: ({ color, size }: any) => React.JSX.Element;
19
22
  export declare const FailIcon: ({ color, size }: any) => React.JSX.Element;
20
23
  export declare const TrashIcon: ({ color, size }: any) => React.JSX.Element;
21
24
  export declare const HeaderPauseIcon: ({ isPaused, color, size, }: any) => React.JSX.Element;
@@ -51,3 +54,6 @@ export declare const ErrorCircleIcon: ({ color, size, }: any) => React.JSX.Eleme
51
54
  export declare const TrendingUpIcon: ({ color, size, }: any) => React.JSX.Element;
52
55
  export declare const MotionIcon: ({ color, size, }: any) => React.JSX.Element;
53
56
  export declare const SortIcon: ({ ascending, color, size, }: any) => React.JSX.Element;
57
+ export declare const PrettyIcon: ({ color, size, }: any) => React.JSX.Element;
58
+ export declare const RawIcon: ({ color, size, }: any) => React.JSX.Element;
59
+ export declare const TableIcon: ({ color, size, }: any) => React.JSX.Element;
@@ -101,6 +101,25 @@ export const CheckIcon = ({ color = AppColors.greenColor, size = 14 }) => {
101
101
  <Path d="M20 6L9 17l-5-5" stroke={color} strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round"/>
102
102
  </Svg>);
103
103
  };
104
+ export const CircleCheckIcon = ({ color = AppColors.greenColor, size = 14 }) => {
105
+ return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
106
+ <Circle cx="12" cy="12" r="9" stroke={color} strokeWidth="2"/>
107
+ <Path d="M8.5 12.5l2.5 2.5 5-5.5" stroke={color} strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
108
+ </Svg>);
109
+ };
110
+ export const CircleXIcon = ({ color = AppColors.errorColor, size = 14 }) => {
111
+ return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
112
+ <Circle cx="12" cy="12" r="9" stroke={color} strokeWidth="2"/>
113
+ <Path d="M9.5 9.5l5 5M14.5 9.5l-5 5" stroke={color} strokeWidth="2" strokeLinecap="round"/>
114
+ </Svg>);
115
+ };
116
+ export const CircleAlertIcon = ({ color = AppColors.warningIconGold, size = 14 }) => {
117
+ return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
118
+ <Circle cx="12" cy="12" r="9" stroke={color} strokeWidth="2"/>
119
+ <Path d="M12 7.5v5.5" stroke={color} strokeWidth="2" strokeLinecap="round"/>
120
+ <Circle cx="12" cy="16.5" r="1.1" fill={color}/>
121
+ </Svg>);
122
+ };
104
123
  export const FailIcon = ({ color = AppColors.errorColor, size = 10 }) => {
105
124
  return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
106
125
  <Path d="M18 6L6 18M6 6l12 12" stroke={color} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"/>
@@ -164,12 +183,12 @@ export const DownloadIcon = ({ color = AppColors.primaryLight, size = 18, }) =>
164
183
  <Path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3" stroke={color} strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
165
184
  </Svg>);
166
185
  };
167
- export const CloseWhite = ({ color = '#FFFFFF', size = 20 }) => {
186
+ export const CloseWhite = ({ color = AppColors.white, size = 20 }) => {
168
187
  return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
169
188
  <Path d="M18 6L6 18M6 6l12 12" stroke={color} strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
170
189
  </Svg>);
171
190
  };
172
- export const WhiteBackNavigation = ({ color = '#FFFFFF', size = 20 }) => {
191
+ export const WhiteBackNavigation = ({ color = AppColors.white, size = 20 }) => {
173
192
  return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
174
193
  <Path d="M19 12H5M12 19l-7-7 7-7" stroke={color} strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
175
194
  </Svg>);
@@ -184,7 +203,7 @@ export const InsightsIcon = ({ color = AppColors.grayTextWeak, size = 14, }) =>
184
203
  <Path d="M2 17l6-6 4 4 10-10M22 12V7h-5" stroke={color} strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
185
204
  </Svg>);
186
205
  };
187
- export const DebugIcon = ({ color = '#FFFFFF', size = 18 }) => {
206
+ export const DebugIcon = ({ color = AppColors.white, size = 18 }) => {
188
207
  return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
189
208
  {/* Hammer: diagonal from bottom-left to top-right */}
190
209
  {/* Handle */}
@@ -202,13 +221,13 @@ export const DebugIcon = ({ color = '#FFFFFF', size = 18 }) => {
202
221
  <Path d="M9 9L5 5M4.5 6.5l2-2" stroke={color} strokeWidth="2" strokeLinecap="round"/>
203
222
  </Svg>);
204
223
  };
205
- export const SunIcon = ({ color = '#FFFFFF', size = 16 }) => {
224
+ export const SunIcon = ({ color = AppColors.white, size = 16 }) => {
206
225
  return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
207
226
  <Circle cx="12" cy="12" r="5" stroke={color} strokeWidth="2"/>
208
227
  <Path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42" stroke={color} strokeWidth="2" strokeLinecap="round"/>
209
228
  </Svg>);
210
229
  };
211
- export const MoonIcon = ({ color = '#FFFFFF', size = 16 }) => {
230
+ export const MoonIcon = ({ color = AppColors.white, size = 16 }) => {
212
231
  return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
213
232
  <Path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" fill={color} stroke={color} strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/>
214
233
  </Svg>);
@@ -249,7 +268,7 @@ export const FolderIcon = ({ color = AppColors.grayTextWeak, size = 14, }) => {
249
268
  </Svg>);
250
269
  };
251
270
  // #3 — Broom/sweep "wipe" icon used by the header Clear-Everything button.
252
- export const WipeIcon = ({ color = '#FFFFFF', size = 16 }) => {
271
+ export const WipeIcon = ({ color = AppColors.white, size = 16 }) => {
253
272
  return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
254
273
  {/* Handle */}
255
274
  <Path d="M19.5 3.5L12.7 10.3" stroke={color} strokeWidth="2" strokeLinecap="round"/>
@@ -308,3 +327,24 @@ export const SortIcon = ({ ascending, color = AppColors.purple, size = 14, }) =>
308
327
  <Path d="M12 20l6-6H6z" fill={!ascending ? color : AppColors.grayTextWeak}/>
309
328
  </Svg>);
310
329
  };
330
+ export const PrettyIcon = ({ color = AppColors.grayTextWeak, size = 14, }) => {
331
+ return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
332
+ <Path d="M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1" stroke={color} strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
333
+ <Path d="M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1" stroke={color} strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
334
+ </Svg>);
335
+ };
336
+ export const RawIcon = ({ color = AppColors.grayTextWeak, size = 14, }) => {
337
+ return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
338
+ <Line x1="21" y1="6" x2="3" y2="6" stroke={color} strokeWidth="2" strokeLinecap="round"/>
339
+ <Line x1="21" y1="12" x2="3" y2="12" stroke={color} strokeWidth="2" strokeLinecap="round"/>
340
+ <Line x1="17" y1="18" x2="3" y2="18" stroke={color} strokeWidth="2" strokeLinecap="round"/>
341
+ </Svg>);
342
+ };
343
+ export const TableIcon = ({ color = AppColors.grayTextWeak, size = 14, }) => {
344
+ return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
345
+ <Rect x="3" y="3" width="7" height="7" rx="1.5" stroke={color} strokeWidth="2"/>
346
+ <Rect x="14" y="3" width="7" height="7" rx="1.5" stroke={color} strokeWidth="2"/>
347
+ <Rect x="14" y="14" width="7" height="7" rx="1.5" stroke={color} strokeWidth="2"/>
348
+ <Rect x="3" y="14" width="7" height="7" rx="1.5" stroke={color} strokeWidth="2"/>
349
+ </Svg>);
350
+ };
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface ReduxTabViewProps {
3
+ reduxState: any;
4
+ reduxSearch: string;
5
+ onSetReduxSearch: (val: string) => void;
6
+ reduxLastActionMap: Record<string, string>;
7
+ }
8
+ export declare const ReduxTabView: React.FC<ReduxTabViewProps>;
9
+ export default ReduxTabView;
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ import { Pressable, Text, TextInput, View, } from 'react-native';
3
+ import { useTranslation } from 'react-i18next';
4
+ import { ReduxTreeView } from './ReduxTreeView';
5
+ import { TerminalIcon, ClearIcon, } from './NetworkIcons';
6
+ import { AppColors } from '../styles/AppColors';
7
+ import styles from '../styles';
8
+ export const ReduxTabView = React.memo(({ reduxState, reduxSearch, onSetReduxSearch, reduxLastActionMap, }) => {
9
+ const { t } = useTranslation();
10
+ if (!reduxState) {
11
+ return (<View style={styles.emptyContainer}>
12
+ <View style={styles.emptyIconWrap}>
13
+ <TerminalIcon color={AppColors.purple} size={32}/>
14
+ </View>
15
+ <Text style={styles.emptyTitle}>{t('redux.no_store_title')}</Text>
16
+ <Text style={styles.emptySub}>
17
+ {t('redux.no_store_sub')}
18
+ </Text>
19
+ </View>);
20
+ }
21
+ const reducerKeys = Object.keys(reduxState ?? {});
22
+ if (reducerKeys.length === 0) {
23
+ return (<View style={styles.emptyContainer}>
24
+ <Text style={styles.emptyTitle}>{t('redux.empty_store_title')}</Text>
25
+ <Text style={styles.emptySub}>{t('redux.empty_store_sub')}</Text>
26
+ </View>);
27
+ }
28
+ return (<View style={styles.flex1}>
29
+ {/* Search Bar */}
30
+ <View style={styles.searchBarWrap}>
31
+ <TextInput placeholder={t('search.redux_placeholder')} placeholderTextColor={AppColors.grayTextWeak} value={reduxSearch} onChangeText={onSetReduxSearch} style={styles.searchBarInput} autoCorrect={false} autoCapitalize="none"/>
32
+ {reduxSearch.length > 0 && (<Pressable onPress={() => onSetReduxSearch('')} hitSlop={10}>
33
+ <ClearIcon color={AppColors.grayTextWeak} size={14}/>
34
+ </Pressable>)}
35
+ </View>
36
+
37
+ {/* Main Content Card */}
38
+ <View style={styles.contentCard}>
39
+ <View style={styles.cardHeaderRow}>
40
+ <Text style={styles.sectionHeaderTitle}>{t('redux.root_reducers')}</Text>
41
+ <Text style={styles.subTextWeak}>
42
+ {reducerKeys.length} {t('redux.slices')}
43
+ </Text>
44
+ </View>
45
+
46
+ <ReduxTreeView state={reduxState} search={reduxSearch} lastActionMap={reduxLastActionMap}/>
47
+ </View>
48
+ </View>);
49
+ });
50
+ export default ReduxTabView;