react-native-inapp-inspector 2.3.20 → 2.3.22

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 (61) hide show
  1. package/README.md +14 -14
  2. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +58 -1
  3. package/dist/commonjs/components/AppHeaderLogo.js +2 -2
  4. package/dist/commonjs/components/ConsoleLogCard.js +1 -1
  5. package/dist/commonjs/components/HighlightText.js +13 -13
  6. package/dist/commonjs/components/Inspector/AboutModal.js +143 -251
  7. package/dist/commonjs/components/Inspector/DebuggingTab.js +19 -13
  8. package/dist/commonjs/components/Inspector/InspectorHeader.js +54 -80
  9. package/dist/commonjs/components/Inspector/MainScreen.js +13 -23
  10. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +4 -4
  11. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +1 -1
  12. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +1 -1
  13. package/dist/commonjs/components/Inspector/TabBar.js +7 -7
  14. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +23 -24
  15. package/dist/commonjs/components/LogCard.js +16 -16
  16. package/dist/commonjs/components/NetworkIcons.d.ts +10 -0
  17. package/dist/commonjs/components/NetworkIcons.js +46 -4
  18. package/dist/commonjs/components/QRCodeView.js +2 -2
  19. package/dist/commonjs/components/TreeNode.js +16 -16
  20. package/dist/commonjs/constants/version.d.ts +1 -1
  21. package/dist/commonjs/constants/version.js +1 -1
  22. package/dist/commonjs/customHooks/bundleAnalyzer.js +1 -1
  23. package/dist/commonjs/helpers/index.d.ts +1 -0
  24. package/dist/commonjs/helpers/index.js +2 -2
  25. package/dist/commonjs/index.js +1 -1
  26. package/dist/commonjs/native/NativeInspector.d.ts +1 -0
  27. package/dist/commonjs/native/NativeInspector.js +1 -1
  28. package/dist/commonjs/types/interfaces.d.ts +0 -2
  29. package/dist/esm/components/AppHeaderLogo.js +6 -6
  30. package/dist/esm/components/ConsoleLogCard.js +6 -6
  31. package/dist/esm/components/HighlightText.js +17 -17
  32. package/dist/esm/components/Inspector/AboutModal.js +205 -313
  33. package/dist/esm/components/Inspector/DebuggingTab.js +32 -26
  34. package/dist/esm/components/Inspector/InspectorHeader.js +96 -122
  35. package/dist/esm/components/Inspector/MainScreen.js +66 -76
  36. package/dist/esm/components/Inspector/MediaGalleryTab.js +19 -19
  37. package/dist/esm/components/Inspector/MediaPreviewModal.js +18 -18
  38. package/dist/esm/components/Inspector/NpmStarPrompt.js +1 -1
  39. package/dist/esm/components/Inspector/TabBar.js +21 -21
  40. package/dist/esm/components/Inspector/UpdateAvailableModal.js +65 -66
  41. package/dist/esm/components/LogCard.js +43 -43
  42. package/dist/esm/components/NetworkIcons.d.ts +10 -0
  43. package/dist/esm/components/NetworkIcons.js +191 -149
  44. package/dist/esm/components/QRCodeView.js +4 -4
  45. package/dist/esm/components/TreeNode.js +53 -53
  46. package/dist/esm/constants/version.d.ts +1 -1
  47. package/dist/esm/constants/version.js +1 -1
  48. package/dist/esm/customHooks/bundleAnalyzer.js +1 -1
  49. package/dist/esm/helpers/index.d.ts +1 -0
  50. package/dist/esm/helpers/index.js +4 -4
  51. package/dist/esm/index.js +7 -7
  52. package/dist/esm/native/NativeInspector.d.ts +1 -0
  53. package/dist/esm/native/NativeInspector.js +1 -1
  54. package/dist/esm/types/interfaces.d.ts +0 -2
  55. package/ios/NetworkInspectorModule.mm +39 -3
  56. package/package.json +1 -1
  57. package/src/native/NativeInspector.ts +18 -0
  58. package/dist/commonjs/components/Inspector/FeedbackModal.d.ts +0 -16
  59. package/dist/commonjs/components/Inspector/FeedbackModal.js +0 -198
  60. package/dist/esm/components/Inspector/FeedbackModal.d.ts +0 -16
  61. package/dist/esm/components/Inspector/FeedbackModal.js +0 -198
@@ -1,351 +1,243 @@
1
- import _,{useState as Y}from"react";import{Dimensions as I,PixelRatio as S,Platform as h,Linking as R,ScrollView as Z,StyleSheet as X,Text as T,View as V}from"react-native";import{AppColors as x}from"../../styles/AppColors";import{AppFonts as C}from"../../styles/AppFonts";import B from"../TouchableScale";import{useInspector as Q}from"./InspectorContext";import{LIB_VERSION as A}from"../../constants/version";import{getAppName as $,getBundleIdentifier as O,getAppVersionAndBuild as U,copyToClipboard as M,showToast as N,isLocalDebugEnvironment as z}from"../../helpers";import{isPersistentStorageAvailable as D}from"../../helpers/settingsStore";import{isReduxConnected as W}from"../../customHooks/reduxLogger";import{isAnalyticsConnected as j}from"../../customHooks/analyticsLogger";import{PackageIcon as Te,GitHubIcon as Ve,NpmIcon as J,BoltIcon as P,CopyIcon as G,CheckIcon as Ce}from"../NetworkIcons";export const AboutModal=({onClose:he})=>{const{updateAvailable:f,latestNpmVersion:v}=Q(),[F,k]=Y(!1),K=()=>{const E=I.get("window"),H=I.get("screen"),L=h.constants?.reactNativeVersion,q={package:{name:"react-native-inapp-inspector",version:`v${A}`,latestNpmVersion:v?`v${v}`:"Checking...",license:"MIT",repository:"https://github.com/vengatmacuser/react-native-inapp-inspector"},hostApp:{name:$(),bundleId:O(),versionAndBuild:U().formatted,buildVariant:__DEV__?"Development (Debug)":"Production (Release)",metroConnected:z()},runtime:{reactNativeVersion:L?`${L.major}.${L.minor}.${L.patch}`:"0.74+",reactVersion:_.version,jsEngine:global?.HermesInternal?"Hermes":"JavaScriptCore (JSC)",architecture:global?.nativeFabricUIManager?"Fabric (New Architecture)":"Paper (Legacy Bridge)",turboModules:!!(global?.__turboModuleProxy||global?.TurboModuleRegistry)},device:{platform:h.OS,osVersion:h.Version,deviceModel:h.constants?.Model||"Unknown Device",windowDimensions:`${Math.round(E.width)}x${Math.round(E.height)} pt`,screenDimensions:`${Math.round(H.width)}x${Math.round(H.height)} pt`,pixelRatio:S.get(),fontScale:S.getFontScale(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone||"Unknown",locale:Intl.DateTimeFormat().resolvedOptions().locale||"en"},storageAndCapabilities:{storageEngine:D()?"MMKV (Fast Native Storage)":"In-Memory State",hasNativeModule:!!(global?.NativeInspectorModule||global?.__IN_APP_INSPECTOR_NATIVE__),reduxConnected:W(),analyticsConnected:j()}};M(JSON.stringify(q,null,2),"Diagnostic Specifications"),k(!0),N("Copied full diagnostic specs to clipboard!"),setTimeout(()=>k(!1),2e3)};return<V style={e.container}>
2
- <Z style={e.scrollView}contentContainerStyle={e.scrollContent}showsVerticalScrollIndicator={!1}>
1
+ import"react";import{Platform as z,Linking as B,ScrollView as H,StyleSheet as A,Text as C,View as T}from"react-native";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as V}from"../../styles/AppFonts";import I from"../TouchableScale";import{useInspector as W}from"./InspectorContext";import{LIB_VERSION as F}from"../../constants/version";import{getAppName as L,getBundleIdentifier as $,getAppVersionAndBuild as _,copyToClipboard as v,showToast as P}from"../../helpers";import{PackageIcon as N,GitHubIcon as O,NpmIcon as E,BoltIcon as D,StarIcon as M,BookOpenIcon as U,BugIcon as G,TagIcon as Q,WifiIcon as Z,TerminalIcon as J,AnalyticsIcon as K,DatabaseIcon as X,CameraIcon as Y,CrashIcon as Te,ExternalLinkIcon as S,CopyIcon as Ce}from"../NetworkIcons";export const AboutModal=({onClose:Ve})=>{const{updateAvailable:k,latestNpmVersion:R}=W();return<T style={e.container}>
2
+ <H style={e.scrollView}contentContainerStyle={e.scrollContent}showsVerticalScrollIndicator={!1}>
3
3
 
4
- <V style={e.heroCard}>
5
- <V style={e.heroHeaderRow}>
6
- <V style={e.heroBrandRow}>
7
- <V style={e.heroIconBox}>
8
- <Te color={x.purple}size={22}/>
9
- </V>
10
- <V style={{flex:1}}>
11
- <V style={e.heroTitleRow}>
12
- <T style={e.heroTitle}>In-App Inspector</T>
13
- <V style={e.versionBadge}>
14
- <T style={e.versionBadgeText}>v{A}</T>
15
- </V>
16
- {f?<V style={e.updateBadge}>
17
- <T style={e.updateBadgeText}>
18
- v{v} Available
19
- </T>
20
- <P size={9}color="#D97706"/>
21
- </V>:<V style={e.upToDateBadge}>
22
- <T style={e.upToDateBadgeText}>Up to date</T>
23
- </V>}
24
- </V>
25
- <T style={e.heroPackageName}>
26
- react-native-inapp-inspector
4
+ <T style={e.heroCard}>
5
+ <T style={e.heroHeaderRow}>
6
+ <T style={e.heroBrandRow}>
7
+ <T style={e.heroIconBox}>
8
+ <N color={t.brandPurple}size={24}/>
9
+ </T>
10
+ <T style={{flex:1}}>
11
+ <T style={e.heroTitleRow}>
12
+ <C style={e.heroTitle}>In-App Inspector</C>
13
+ <T style={e.versionBadge}>
14
+ <C style={e.versionBadgeText}>v{F}</C>
15
+ </T>
16
+ {k?<T style={e.updateBadge}>
17
+ <C style={e.updateBadgeText}>
18
+ v{R} Available
19
+ </C>
20
+ <D size={9}color={t.amber600}/>
21
+ </T>:<T style={e.upToDateBadge}>
22
+ <C style={e.upToDateBadgeText}>Up to date</C>
23
+ </T>}
27
24
  </T>
28
- </V>
29
- </V>
30
- </V>
31
-
32
- <T style={e.heroDescription}>
33
- High-performance in-app debugging, network logging, console
34
- inspection, performance profiling, storage viewer & telemetry
35
- diagnostics for React Native.
36
- </T>
37
-
38
- {f&&<B onPress={()=>{M("npm install react-native-inapp-inspector@latest","Install Command"),N("Copied npm upgrade command!")}}style={e.upgradeBtn}>
39
- <P size={12}color={x.white}/>
40
- <T style={e.upgradeBtnText}>
41
- Copy Upgrade Command (v{v})
42
- </T>
43
- </B>}
44
- </V>
45
-
46
-
47
- <V style={e.gridContainer}>
48
- <B onPress={()=>{R.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector").catch(()=>{})}}style={[e.gridCard,{backgroundColor:`${x.purple}0F`,borderColor:`${x.purple}30`}]}>
49
- <Ve color={x.purple}size={18}/>
50
- <V style={{flex:1}}>
51
- <T style={e.gridCardTitle}>⭐ Star on GitHub</T>
52
- <T style={e.gridCardSub}>Support open source</T>
53
- </V>
54
- </B>
55
-
56
- <B onPress={()=>{R.openURL("https://www.npmjs.com/package/react-native-inapp-inspector").catch(()=>{})}}style={e.gridCard}>
57
- <J color="#CB3837"size={18}/>
58
- <V style={{flex:1}}>
59
- <T style={e.gridCardTitle}>NPM Registry</T>
60
- <T style={e.gridCardSub}>Package repository</T>
61
- </V>
62
- </B>
63
-
64
- <B onPress={()=>{R.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector#readme").catch(()=>{})}}style={e.gridCard}>
65
- <T style={{fontSize:16}}>📖</T>
66
- <V style={{flex:1}}>
67
- <T style={e.gridCardTitle}>Documentation</T>
68
- <T style={e.gridCardSub}>Setup & API guide</T>
69
- </V>
70
- </B>
71
-
72
- <B onPress={()=>{R.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector/issues").catch(()=>{})}}style={e.gridCard}>
73
- <T style={{fontSize:16}}>🐞</T>
74
- <V style={{flex:1}}>
75
- <T style={e.gridCardTitle}>Report Issue</T>
76
- <T style={e.gridCardSub}>Bugs & feature requests</T>
77
- </V>
78
- </B>
79
-
80
- <B onPress={()=>{R.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector/releases").catch(()=>{})}}style={e.gridCard}>
81
- <T style={{fontSize:16}}>🏷️</T>
82
- <V style={{flex:1}}>
83
- <T style={e.gridCardTitle}>Release Notes</T>
84
- <T style={e.gridCardSub}>Version changelog</T>
85
- </V>
86
- </B>
87
-
88
- <B onPress={K}style={e.gridCard}>
89
- {F?<Ce color={x.emerald600}size={16}/>:<G color={x.purple}size={16}/>}
90
- <V style={{flex:1}}>
91
- <T style={e.gridCardTitle}>
92
- {F?"Specs Copied!":"Copy Specs JSON"}
25
+ <C style={e.heroPackageName}>
26
+ react-native-inapp-inspector
27
+ </C>
93
28
  </T>
94
- <T style={e.gridCardSub}>Diagnostics payload</T>
95
- </V>
96
- </B>
97
- </V>
98
-
99
-
100
- <V style={e.sectionCard}>
101
- <T style={e.sectionHeader}>PACKAGE VERSION & UPGRADES</T>
29
+ </T>
30
+ </T>
102
31
 
103
- <V style={e.versionRow}>
104
- <V style={e.versionLeft}>
105
- <V style={e.npmIconBox}>
106
- <J color="#CB3837"size={17}/>
107
- </V>
108
- <V style={{flex:1}}>
109
- <V style={{flexDirection:"row",alignItems:"center",gap:6}}>
110
- <T style={e.versionTitle}>v{A}</T>
111
- {f?<V style={e.updateBadge}>
112
- <T style={e.updateBadgeText}>
113
- v{v} Available
114
- </T>
115
- <P size={9}color="#D97706"/>
116
- </V>:<V style={e.upToDateBadge}>
117
- <T style={e.upToDateBadgeText}>Up to date</T>
118
- </V>}
119
- </V>
120
- <T style={e.versionSubtitle}>
121
- {f?`A newer release (v${v}) is available on npm registry.`:"You are running the latest version from npm registry."}
122
- </T>
123
- </V>
124
- </V>
32
+ <C style={e.heroDescription}>
33
+ The all-in-one on-device debugging, logging, and QA companion for
34
+ React Native & Expo applications. Designed for developers, QA
35
+ testers, and product teams.
36
+ </C>
125
37
 
126
- <B onPress={()=>{M("npm install react-native-inapp-inspector@latest","Install Command"),N("Copied npm install command!")}}style={[e.copyActionBtn,{backgroundColor:f?x.purple:`${x.purple}18`}]}>
127
- <G color={f?x.white:x.purple}size={12}/>
128
- <T style={[e.copyActionText,{color:f?x.white:x.purple}]}>
129
- {f?"Copy Upgrade":"Copy Install"}
130
- </T>
131
- </B>
132
- </V>
133
- </V>
38
+ {k&&<I onPress={()=>{v("npm install react-native-inapp-inspector@latest","Install Command"),P("Copied npm upgrade command!")}}style={e.upgradeBtn}>
39
+ <D size={12}color={t.white}/>
40
+ <C style={e.upgradeBtnText}>
41
+ Copy Upgrade Command (v{R})
42
+ </C>
43
+ </I>}
44
+ </T>
134
45
 
135
46
 
136
- <V style={e.sectionCard}>
137
- <T style={e.sectionHeader}>HOST APPLICATION & BUILD</T>
47
+ <T style={e.sectionCard}>
48
+ <C style={e.sectionHeader}>APP INFORMATION</C>
138
49
 
139
- <V style={{gap:8}}>
140
- <V style={e.row}>
141
- <T style={e.rowLabel}>Application Name</T>
142
- <T style={e.rowValueBold}>{$()}</T>
143
- </V>
50
+ <T style={{gap:8}}>
51
+ <T style={e.row}>
52
+ <C style={e.rowLabel}>App Name</C>
53
+ <C style={e.rowValueBold}>{L()}</C>
54
+ </T>
144
55
 
145
- <V style={e.row}>
146
- <T style={e.rowLabel}>Bundle ID / Package</T>
147
- <T style={e.rowValueRegular}>{O()}</T>
148
- </V>
56
+ <T style={e.row}>
57
+ <C style={e.rowLabel}>Package Identifier</C>
58
+ <C style={e.rowValueRegular}>{$()}</C>
59
+ </T>
149
60
 
150
- <V style={e.row}>
151
- <T style={e.rowLabel}>Version & Build Number</T>
152
- <T style={e.rowValueBold}>{U().formatted}</T>
153
- </V>
61
+ <T style={e.row}>
62
+ <C style={e.rowLabel}>App Version</C>
63
+ <C style={e.rowValueBold}>
64
+ {_().formatted}
65
+ </C>
66
+ </T>
154
67
 
155
- <V style={e.row}>
156
- <T style={e.rowLabel}>Build Variant</T>
157
- <V style={[e.statusTag,{backgroundColor:__DEV__?`${x.amber500}20`:`${x.emerald500}20`,borderColor:__DEV__?`${x.amber500}50`:`${x.emerald500}50`}]}>
158
- <T style={[e.statusTagText,{color:__DEV__?x.amber500:x.emerald600}]}>
68
+ <T style={e.row}>
69
+ <C style={e.rowLabel}>Environment</C>
70
+ <T style={[e.statusTag,{backgroundColor:__DEV__?`${t.amber500}20`:`${t.emerald500}20`,borderColor:__DEV__?`${t.amber500}50`:`${t.emerald500}50`}]}>
71
+ <C style={[e.statusTagText,{color:__DEV__?t.amber600:t.emerald600}]}>
159
72
  {__DEV__?"Development (Debug)":"Production (Release)"}
160
- </T>
161
- </V>
162
- </V>
163
-
164
- <V style={e.row}>
165
- <T style={e.rowLabel}>Metro Bundler Connection</T>
166
- <T style={[e.rowValueBold,{color:z()?x.emerald600:x.grayText}]}>
167
- {z()?"Connected (Hot Reload Active)":"Offline / Standalone"}
168
- </T>
169
- </V>
170
- </V>
171
- </V>
172
-
173
-
174
- <V style={e.sectionCard}>
175
- <T style={e.sectionHeader}>FRAMEWORK & RUNTIME ENGINE</T>
176
-
177
- <V style={{gap:8}}>
178
- <V style={e.row}>
179
- <T style={e.rowLabel}>React Native Version</T>
180
- <T style={e.rowValueBold}>
181
- v
182
- {h.constants?.reactNativeVersion?.major!=null?`${h.constants.reactNativeVersion.major}.${h.constants.reactNativeVersion.minor}.${h.constants.reactNativeVersion.patch}`:"0.74+"}
183
- </T>
184
- </V>
185
-
186
- <V style={e.row}>
187
- <T style={e.rowLabel}>React Core Version</T>
188
- <T style={e.rowValueBold}>v{_.version}</T>
189
- </V>
190
-
191
- <V style={e.row}>
192
- <T style={e.rowLabel}>JavaScript Engine</T>
193
- <V style={[e.statusTag,{backgroundColor:`${x.purple}15`,borderColor:`${x.purple}40`}]}>
194
- <T style={[e.statusTagText,{color:x.purple,fontSize:10.5}]}>
195
- {global?.HermesInternal?"Hermes Engine (Active)":"JavaScriptCore (JSC)"}
196
- </T>
197
- </V>
198
- </V>
199
-
200
- <V style={e.row}>
201
- <T style={e.rowLabel}>Rendering Architecture</T>
202
- <T style={e.rowValueBold}>
203
- {global?.nativeFabricUIManager?"Fabric (New Architecture)":"Paper (Legacy Bridge)"}
73
+ </C>
204
74
  </T>
205
- </V>
75
+ </T>
206
76
 
207
- <V style={e.row}>
208
- <T style={e.rowLabel}>TurboModules Support</T>
209
- <T style={e.rowValueBold}>
210
- {global?.__turboModuleProxy||global?.TurboModuleRegistry?"Enabled (C++ JSI)":"Standard Bridge"}
211
- </T>
212
- </V>
213
- </V>
214
- </V>
77
+ <T style={e.row}>
78
+ <C style={e.rowLabel}>Platform</C>
79
+ <C style={e.rowValueRegular}>
80
+ {z.OS==="ios"?"Apple iOS":"Google Android"}{" "}
81
+ (v{z.Version})
82
+ </C>
83
+ </T>
84
+ </T>
85
+ </T>
215
86
 
216
87
 
217
- <V style={e.sectionCard}>
218
- <T style={e.sectionHeader}>DEVICE & DISPLAY METRICS</T>
88
+ <T style={e.sectionCard}>
89
+ <C style={e.sectionHeader}>WHAT IN-APP INSPECTOR DOES</C>
219
90
 
220
- <V style={{gap:8}}>
221
- <V style={e.row}>
222
- <T style={e.rowLabel}>Operating System</T>
223
- <T style={e.rowValueBold}>
224
- {h.OS==="ios"?"Apple iOS":h.OS==="android"?"Google Android":h.OS}{" "}
225
- {h.Version}
91
+ <T style={e.featuresList}>
92
+ <T style={e.featureItem}>
93
+ <T style={[e.featureIconBox,{backgroundColor:`${t.brandPurple}15`}]}>
94
+ <Z color={t.brandPurple}size={18}/>
226
95
  </T>
227
- </V>
228
-
229
- <V style={e.row}>
230
- <T style={e.rowLabel}>Device Hardware Model</T>
231
- <T style={e.rowValueBold}>
232
- {h.constants?.Model||(h.OS==="ios"?"Apple Device":"Android Device")}
96
+ <T style={e.featureTextBox}>
97
+ <C style={e.featureTitle}>Network Traffic Monitor</C>
98
+ <C style={e.featureDesc}>
99
+ Inspect HTTP and HTTPS API requests, responses, headers, and
100
+ server latency with waterfall timing charts.
101
+ </C>
233
102
  </T>
234
- </V>
103
+ </T>
235
104
 
236
- <V style={e.row}>
237
- <T style={e.rowLabel}>Window Viewport (Points)</T>
238
- <T style={e.rowValueBold}>
239
- {Math.round(I.get("window").width)} ×{" "}
240
- {Math.round(I.get("window").height)} pt
105
+ <T style={e.featureItem}>
106
+ <T style={[e.featureIconBox,{backgroundColor:`${t.blue500}15`}]}>
107
+ <J color={t.blue500}size={18}/>
241
108
  </T>
242
- </V>
243
-
244
- <V style={e.row}>
245
- <T style={e.rowLabel}>Native Physical Resolution</T>
246
- <T style={e.rowValueBold}>
247
- {Math.round(I.get("screen").width*S.get())}{" "}
248
- ×{" "}
249
- {Math.round(I.get("screen").height*S.get())}{" "}
250
- px
109
+ <T style={e.featureTextBox}>
110
+ <C style={e.featureTitle}>Console Logger</C>
111
+ <C style={e.featureDesc}>
112
+ View real-time console logs, warnings, and errors with source
113
+ file origins and formatted stack traces.
114
+ </C>
251
115
  </T>
252
- </V>
116
+ </T>
253
117
 
254
- <V style={e.row}>
255
- <T style={e.rowLabel}>Pixel Density & Font Scale</T>
256
- <T style={e.rowValueBold}>
257
- {S.get().toFixed(1)}x (
258
- {S.get()>=3?"@3x":S.get()>=2?"@2x":"@1x"}
259
- ) • Font: {S.getFontScale().toFixed(2)}x
118
+ <T style={e.featureItem}>
119
+ <T style={[e.featureIconBox,{backgroundColor:`${t.firebaseOrange}15`}]}>
120
+ <K color={t.firebaseOrange}size={18}/>
260
121
  </T>
261
- </V>
262
-
263
- <V style={e.row}>
264
- <T style={e.rowLabel}>Timezone & Locale</T>
265
- <T style={e.rowValueBold}>
266
- {Intl.DateTimeFormat().resolvedOptions().timeZone||"System"}{" "}
267
- ({Intl.DateTimeFormat().resolvedOptions().locale||"en"})
122
+ <T style={e.featureTextBox}>
123
+ <C style={e.featureTitle}>Analytics Telemetry</C>
124
+ <C style={e.featureDesc}>
125
+ Track Firebase and custom analytics events, screen views, and
126
+ user properties live on the device.
127
+ </C>
268
128
  </T>
269
- </V>
270
- </V>
271
- </V>
272
-
273
-
274
- <V style={e.sectionCard}>
275
- <T style={e.sectionHeader}>INSPECTOR STORAGE & CAPABILITIES</T>
276
-
277
- <V style={{gap:8}}>
278
- <V style={e.row}>
279
- <T style={e.rowLabel}>Storage Persistence Engine</T>
280
- <V style={[e.statusTag,{backgroundColor:D()?`${x.emerald500}18`:`${x.amber500}18`,borderColor:D()?`${x.emerald500}50`:`${x.amber500}50`}]}>
281
- <T style={[e.statusTagText,{color:D()?x.emerald600:x.amber500}]}>
282
- {D()?"MMKV Fast Native Storage":"In-Memory State"}
283
- </T>
284
- </V>
285
- </V>
129
+ </T>
286
130
 
287
- <V style={e.row}>
288
- <T style={e.rowLabel}>Native Module Status</T>
289
- <T style={[e.rowValueBold,{color:global?.NativeInspectorModule?x.emerald600:x.grayText}]}>
290
- {global?.NativeInspectorModule?"Linked & Active":"JavaScript Only"}
131
+ <T style={e.featureItem}>
132
+ <T style={[e.featureIconBox,{backgroundColor:`${t.violet600}15`}]}>
133
+ <X color={t.violet600}size={18}/>
291
134
  </T>
292
- </V>
293
-
294
- <V style={e.row}>
295
- <T style={e.rowLabel}>Network Logger Interceptor</T>
296
- <T style={[e.rowValueBold,{color:x.emerald600}]}>
297
- Active (XMLHttpRequest & Fetch Hooked)
135
+ <T style={e.featureTextBox}>
136
+ <C style={e.featureTitle}>Redux State & Actions</C>
137
+ <C style={e.featureDesc}>
138
+ Inspect dispatched actions, payloads, and state tree diffs
139
+ without connecting desktop companion tools.
140
+ </C>
298
141
  </T>
299
- </V>
142
+ </T>
300
143
 
301
- <V style={e.row}>
302
- <T style={e.rowLabel}>Redux & Analytics Watchers</T>
303
- <T style={e.rowValueBold}>
304
- Redux: {W()?"Connected":"Listening"} •
305
- Analytics: {j()?"Connected":"Listening"}
144
+ <T style={e.featureItem}>
145
+ <T style={[e.featureIconBox,{backgroundColor:`${t.teal600}15`}]}>
146
+ <Y color={t.teal600}size={18}/>
306
147
  </T>
307
- </V>
308
-
309
- <V style={e.row}>
310
- <T style={e.rowLabel}>Crash & Exception Boundary</T>
311
- <T style={[e.rowValueBold,{color:x.emerald600}]}>
312
- Global JS Exception Handler Active
148
+ <T style={e.featureTextBox}>
149
+ <C style={e.featureTitle}>Screen & Video Capture</C>
150
+ <C style={e.featureDesc}>
151
+ Take screenshots and record test sessions to share with QA and
152
+ engineering teams instantly.
153
+ </C>
313
154
  </T>
314
- </V>
155
+ </T>
315
156
 
316
- <V style={e.row}>
317
- <T style={e.rowLabel}>Memory Management</T>
318
- <T style={[e.rowValueBold,{color:x.emerald600}]}>
319
- Dynamic Auto RAM Tiering Active
157
+ <T style={e.featureItem}>
158
+ <T style={[e.featureIconBox,{backgroundColor:`${t.emerald600}15`}]}>
159
+ <Te color={t.emerald600}size={18}/>
320
160
  </T>
321
- </V>
322
- </V>
323
- </V>
161
+ <T style={e.featureTextBox}>
162
+ <C style={e.featureTitle}>
163
+ Crash Catcher & Diagnostics
164
+ </C>
165
+ <C style={e.featureDesc}>
166
+ Protects against native crashes and provides device health
167
+ metrics including RAM, battery, and storage.
168
+ </C>
169
+ </T>
170
+ </T>
171
+ </T>
172
+ </T>
324
173
 
325
174
 
326
- <V style={e.sectionCard}>
327
- <T style={e.sectionHeader}>LICENSE & CREDITS</T>
328
-
329
- <V style={e.row}>
330
- <T style={e.rowLabel}>License</T>
331
- <T style={[e.rowValueBold,{color:x.emerald600}]}>
332
- MIT Permissive Open Source
175
+ <T style={e.gridContainer}>
176
+ <I onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector").catch(()=>{})}}style={[e.gridCard,{backgroundColor:`${t.brandPurple}0F`,borderColor:`${t.brandPurple}30`}]}>
177
+ <O color={t.brandPurple}size={18}/>
178
+ <T style={{flex:1}}>
179
+ <T style={{flexDirection:"row",alignItems:"center",gap:5}}>
180
+ <M color={t.amber500}size={13}/>
181
+ <C style={e.gridCardTitle}>GitHub</C>
182
+ </T>
183
+ <C style={e.gridCardSub}>Star & source code</C>
333
184
  </T>
334
- </V>
335
-
336
- <V style={e.row}>
337
- <T style={e.rowLabel}>Created & Maintained By</T>
338
- <T style={e.rowValueBold}>Vengateswaran</T>
339
- </V>
340
-
341
- <V style={e.row}>
342
- <T style={e.rowLabel}>Repository</T>
343
- <T style={[e.rowValueRegular,{color:x.purple}]}>
344
- github.com/vengatmacuser/react-native-inapp-inspector
185
+ <S size={12}color={t.grayTextWeak}/>
186
+ </I>
187
+
188
+ <I onPress={()=>{B.openURL("https://www.npmjs.com/package/react-native-inapp-inspector").catch(()=>{})}}style={e.gridCard}>
189
+ <E color={t.npmRed}size={18}/>
190
+ <T style={{flex:1}}>
191
+ <C style={e.gridCardTitle}>NPM Registry</C>
192
+ <C style={e.gridCardSub}>Package updates</C>
193
+ </T>
194
+ <S size={12}color={t.grayTextWeak}/>
195
+ </I>
196
+
197
+ <I onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector#readme").catch(()=>{})}}style={e.gridCard}>
198
+ <U color={t.brandPurple}size={18}/>
199
+ <T style={{flex:1}}>
200
+ <C style={e.gridCardTitle}>Documentation</C>
201
+ <C style={e.gridCardSub}>Integration guide</C>
202
+ </T>
203
+ <S size={12}color={t.grayTextWeak}/>
204
+ </I>
205
+
206
+ <I onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector/issues").catch(()=>{})}}style={e.gridCard}>
207
+ <G color={t.errorColor}size={18}/>
208
+ <T style={{flex:1}}>
209
+ <C style={e.gridCardTitle}>Report Issue</C>
210
+ <C style={e.gridCardSub}>Help & support</C>
345
211
  </T>
346
- </V>
347
- </V>
212
+ <S size={12}color={t.grayTextWeak}/>
213
+ </I>
214
+
215
+ <I onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector/releases").catch(()=>{})}}style={e.gridCard}>
216
+ <Q color={t.successGreen}size={18}/>
217
+ <T style={{flex:1}}>
218
+ <C style={e.gridCardTitle}>Release Notes</C>
219
+ <C style={e.gridCardSub}>What's new</C>
220
+ </T>
221
+ <S size={12}color={t.grayTextWeak}/>
222
+ </I>
223
+
224
+ <I onPress={()=>{v("npm install react-native-inapp-inspector","NPM Command"),P("Copied package install command!")}}style={e.gridCard}>
225
+ <Ce color={t.brandPurple}size={16}/>
226
+ <T style={{flex:1}}>
227
+ <C style={e.gridCardTitle}>Copy Install</C>
228
+ <C style={e.gridCardSub}>npm / yarn command</C>
229
+ </T>
230
+ </I>
231
+ </T>
348
232
 
349
- <V style={{height:48}}/>
350
- </Z>
351
- </V>};export default AboutModal;const e=X.create({container:{flex:1,backgroundColor:x.grayBackground},scrollView:{flex:1},scrollContent:{padding:16,gap:14},heroCard:{backgroundColor:x.primaryLight,borderRadius:14,borderWidth:1,borderColor:x.grayBorderSecondary,padding:16,gap:12},heroHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},heroBrandRow:{flexDirection:"row",alignItems:"center",gap:12,flex:1},heroIconBox:{width:44,height:44,borderRadius:12,backgroundColor:`${x.purple}1A`,alignItems:"center",justifyContent:"center",borderWidth:1,borderColor:`${x.purple}33`},heroTitleRow:{flexDirection:"row",alignItems:"center",gap:8,flexWrap:"wrap"},heroTitle:{fontFamily:C.interBold,fontSize:15,lineHeight:20,color:x.primaryBlack},versionBadge:{backgroundColor:`${x.purple}18`,paddingHorizontal:7,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${x.purple}33`},versionBadgeText:{fontFamily:C.interBold,fontSize:10,color:x.purple},updateBadge:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:"#F59E0B20",paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:"#F59E0B60"},updateBadgeText:{fontFamily:C.interBold,fontSize:9.5,color:"#D97706"},upToDateBadge:{backgroundColor:`${x.emerald500}20`,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${x.emerald500}50`},upToDateBadgeText:{fontFamily:C.interBold,fontSize:9.5,color:x.emerald600},heroPackageName:{fontFamily:C.interRegular,fontSize:11,lineHeight:15,color:x.grayText,marginTop:2},heroDescription:{fontFamily:C.interRegular,fontSize:11.5,lineHeight:16,color:x.grayText},upgradeBtn:{backgroundColor:x.purple,paddingVertical:8,paddingHorizontal:12,borderRadius:8,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6},upgradeBtnText:{fontFamily:C.interBold,fontSize:12,color:x.white},gridContainer:{flexDirection:"row",flexWrap:"wrap",gap:8},gridCard:{flex:1,minWidth:"47%",backgroundColor:x.primaryLight,borderRadius:12,borderWidth:1,borderColor:x.grayBorderSecondary,paddingVertical:10,paddingHorizontal:12,flexDirection:"row",alignItems:"center",gap:8},gridCardTitle:{fontFamily:C.interBold,fontSize:11.5,color:x.primaryBlack},gridCardSub:{fontFamily:C.interRegular,fontSize:9.5,color:x.grayText},sectionCard:{backgroundColor:x.primaryLight,borderRadius:14,borderWidth:1,borderColor:x.grayBorderSecondary,padding:14,gap:10},sectionHeader:{fontFamily:C.interBold,fontSize:11,lineHeight:14,color:x.grayTextWeak,letterSpacing:.8},versionRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},versionLeft:{flexDirection:"row",alignItems:"center",gap:10,flex:1,marginRight:8},npmIconBox:{width:34,height:34,borderRadius:9,backgroundColor:"#CB383715",alignItems:"center",justifyContent:"center"},versionTitle:{fontFamily:C.interBold,fontSize:14,lineHeight:18,color:x.primaryBlack},versionSubtitle:{fontFamily:C.interRegular,fontSize:11,lineHeight:15,color:x.grayText,marginTop:1},copyActionBtn:{paddingVertical:7,paddingHorizontal:11,borderRadius:8,flexDirection:"row",alignItems:"center",gap:5},copyActionText:{fontFamily:C.interBold,fontSize:11},row:{flexDirection:"row",justifyContent:"space-between",alignItems:"center"},rowLabel:{fontFamily:C.interRegular,fontSize:11.5,color:x.grayText},rowValueBold:{fontFamily:C.interBold,fontSize:11.5,color:x.primaryBlack},rowValueRegular:{fontFamily:C.interRegular,fontSize:11,color:x.primaryBlack},statusTag:{paddingHorizontal:6,paddingVertical:1.5,borderRadius:5,borderWidth:1},statusTagText:{fontFamily:C.interBold,fontSize:10}});
233
+
234
+ <T style={e.footer}>
235
+ <C style={e.footerText}>
236
+ React Native In-App Inspector · MIT License
237
+ </C>
238
+ <C style={e.footerSubText}>
239
+ Zero-config on-device debugging tool
240
+ </C>
241
+ </T>
242
+ </H>
243
+ </T>};const e=A.create({container:{flex:1,backgroundColor:t.grayBackground},scrollView:{flex:1},scrollContent:{padding:14,paddingBottom:32,gap:12},heroCard:{backgroundColor:t.primaryLight,borderRadius:14,padding:16,borderWidth:1,borderColor:t.dividerColor,shadowColor:t.shadowColorString,shadowOffset:{width:0,height:2},shadowOpacity:.05,shadowRadius:8,elevation:2,gap:12},heroHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},heroBrandRow:{flexDirection:"row",alignItems:"center",gap:12,flex:1},heroIconBox:{width:44,height:44,borderRadius:12,backgroundColor:`${t.brandPurple}15`,alignItems:"center",justifyContent:"center",borderWidth:1,borderColor:`${t.brandPurple}30`},heroTitleRow:{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"},heroTitle:{fontFamily:V.interBold,fontSize:17,lineHeight:22,color:t.primaryBlack,letterSpacing:-.3},versionBadge:{backgroundColor:`${t.brandPurple}18`,paddingHorizontal:7,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${t.brandPurple}30`},versionBadgeText:{fontFamily:V.interBold,fontSize:10,lineHeight:13,color:t.brandPurple},updateBadge:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:`${t.amber500}20`,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${t.amber500}50`},updateBadgeText:{fontFamily:V.interBold,fontSize:9.5,lineHeight:12,color:t.amber600},upToDateBadge:{backgroundColor:`${t.emerald500}18`,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${t.emerald500}35`},upToDateBadgeText:{fontFamily:V.interMedium,fontSize:9.5,lineHeight:12,color:t.emerald600},heroPackageName:{fontFamily:V.interRegular,fontSize:12,lineHeight:16,color:t.grayTextWeak,marginTop:2},heroDescription:{fontFamily:V.interRegular,fontSize:13,lineHeight:18,color:t.grayText},upgradeBtn:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:t.brandPurple,paddingVertical:9,paddingHorizontal:12,borderRadius:8},upgradeBtnText:{fontFamily:V.interBold,fontSize:12,color:t.white},sectionCard:{backgroundColor:t.primaryLight,borderRadius:14,padding:14,borderWidth:1,borderColor:t.dividerColor,gap:10},sectionHeader:{fontFamily:V.interBold,fontSize:11,lineHeight:15,color:t.grayTextWeak,letterSpacing:.6},row:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingVertical:3},rowLabel:{fontFamily:V.interRegular,fontSize:12.5,lineHeight:17,color:t.grayTextWeak},rowValueBold:{fontFamily:V.interBold,fontSize:12.5,lineHeight:17,color:t.primaryBlack},rowValueRegular:{fontFamily:V.interRegular,fontSize:12.5,lineHeight:17,color:t.grayTextStrong},statusTag:{paddingHorizontal:7,paddingVertical:2,borderRadius:6,borderWidth:1},statusTagText:{fontFamily:V.interSemiBold,fontSize:10.5,lineHeight:14},featuresList:{gap:10},featureItem:{flexDirection:"row",alignItems:"flex-start",gap:12,paddingVertical:4},featureIconBox:{width:36,height:36,borderRadius:10,alignItems:"center",justifyContent:"center"},featureTextBox:{flex:1,gap:2},featureTitle:{fontFamily:V.interBold,fontSize:13,lineHeight:17,color:t.primaryBlack},featureDesc:{fontFamily:V.interRegular,fontSize:11.5,lineHeight:16,color:t.grayTextWeak},gridContainer:{flexDirection:"row",flexWrap:"wrap",gap:8},gridCard:{width:"48.5%",flexGrow:1,backgroundColor:t.primaryLight,borderRadius:10,padding:12,flexDirection:"row",alignItems:"center",gap:9,borderWidth:1,borderColor:t.dividerColor},gridCardTitle:{fontFamily:V.interBold,fontSize:12,lineHeight:16,color:t.primaryBlack},gridCardSub:{fontFamily:V.interRegular,fontSize:10,lineHeight:13,color:t.grayTextWeak},footer:{alignItems:"center",justifyContent:"center",paddingVertical:14,gap:3},footerText:{fontFamily:V.interMedium,fontSize:11,lineHeight:15,color:t.grayTextWeak},footerSubText:{fontFamily:V.interRegular,fontSize:10,lineHeight:14,color:t.slate400}});export default AboutModal;