react-native-inapp-inspector 1.1.28 → 1.1.31

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 (77) hide show
  1. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.java +29 -80
  2. package/dist/commonjs/components/AnalyticsDetail.js +668 -108
  3. package/dist/commonjs/components/AppHeaderLogo.js +15 -15
  4. package/dist/commonjs/components/ConsoleLogCard.js +112 -66
  5. package/dist/commonjs/components/CopyButton.js +15 -1
  6. package/dist/commonjs/components/DomainHeader.js +64 -32
  7. package/dist/commonjs/components/HighlightText.js +7 -1
  8. package/dist/commonjs/components/Inspector/AnalyticsTab.js +332 -221
  9. package/dist/commonjs/components/Inspector/ConsoleTab.js +162 -56
  10. package/dist/commonjs/components/Inspector/InspectorHeader.js +70 -119
  11. package/dist/commonjs/components/Inspector/LogDetail.js +53 -17
  12. package/dist/commonjs/components/Inspector/MainScreen.js +4 -0
  13. package/dist/commonjs/components/Inspector/NetworkDetail.js +24 -24
  14. package/dist/commonjs/components/Inspector/NetworkTab.js +4 -1
  15. package/dist/commonjs/components/Inspector/ReduxDetail.js +237 -42
  16. package/dist/commonjs/components/Inspector/ReduxTab.js +456 -35
  17. package/dist/commonjs/components/JsonViewer.js +26 -4
  18. package/dist/commonjs/components/LogCard.js +103 -11
  19. package/dist/commonjs/components/NetworkIcons.js +19 -10
  20. package/dist/commonjs/components/Toast.d.ts +3 -0
  21. package/dist/commonjs/components/Toast.js +152 -0
  22. package/dist/commonjs/components/TouchableScale.d.ts +1 -0
  23. package/dist/commonjs/components/TouchableScale.js +3 -3
  24. package/dist/commonjs/components/TreeNode.js +12 -2
  25. package/dist/commonjs/constants/index.js +6 -6
  26. package/dist/commonjs/constants/version.d.ts +1 -1
  27. package/dist/commonjs/constants/version.js +1 -1
  28. package/dist/commonjs/customHooks/reduxLogger.js +128 -5
  29. package/dist/commonjs/helpers/index.d.ts +4 -0
  30. package/dist/commonjs/helpers/index.js +107 -92
  31. package/dist/commonjs/helpers/toast.d.ts +4 -0
  32. package/dist/commonjs/helpers/toast.js +20 -0
  33. package/dist/commonjs/i18n/locales/en.json +49 -3
  34. package/dist/commonjs/styles/AppColors.d.ts +6 -0
  35. package/dist/commonjs/styles/AppColors.js +6 -0
  36. package/dist/commonjs/styles/index.d.ts +82 -15
  37. package/dist/commonjs/styles/index.js +92 -26
  38. package/dist/commonjs/types/interfaces.d.ts +7 -0
  39. package/dist/esm/components/AnalyticsDetail.js +670 -110
  40. package/dist/esm/components/AppHeaderLogo.js +15 -15
  41. package/dist/esm/components/ConsoleLogCard.js +114 -68
  42. package/dist/esm/components/CopyButton.js +15 -1
  43. package/dist/esm/components/DomainHeader.js +64 -32
  44. package/dist/esm/components/HighlightText.js +7 -1
  45. package/dist/esm/components/Inspector/AnalyticsTab.js +334 -223
  46. package/dist/esm/components/Inspector/ConsoleTab.js +163 -57
  47. package/dist/esm/components/Inspector/InspectorHeader.js +71 -120
  48. package/dist/esm/components/Inspector/LogDetail.js +55 -19
  49. package/dist/esm/components/Inspector/MainScreen.js +4 -0
  50. package/dist/esm/components/Inspector/NetworkDetail.js +25 -25
  51. package/dist/esm/components/Inspector/NetworkTab.js +4 -1
  52. package/dist/esm/components/Inspector/ReduxDetail.js +239 -44
  53. package/dist/esm/components/Inspector/ReduxTab.js +458 -37
  54. package/dist/esm/components/JsonViewer.js +26 -4
  55. package/dist/esm/components/LogCard.js +105 -13
  56. package/dist/esm/components/NetworkIcons.js +19 -10
  57. package/dist/esm/components/Toast.d.ts +3 -0
  58. package/dist/esm/components/Toast.js +117 -0
  59. package/dist/esm/components/TouchableScale.d.ts +1 -0
  60. package/dist/esm/components/TouchableScale.js +3 -3
  61. package/dist/esm/components/TreeNode.js +12 -2
  62. package/dist/esm/constants/index.js +6 -6
  63. package/dist/esm/constants/version.d.ts +1 -1
  64. package/dist/esm/constants/version.js +1 -1
  65. package/dist/esm/customHooks/reduxLogger.js +128 -5
  66. package/dist/esm/helpers/index.d.ts +4 -0
  67. package/dist/esm/helpers/index.js +102 -92
  68. package/dist/esm/helpers/toast.d.ts +4 -0
  69. package/dist/esm/helpers/toast.js +15 -0
  70. package/dist/esm/i18n/locales/en.json +49 -3
  71. package/dist/esm/styles/AppColors.d.ts +6 -0
  72. package/dist/esm/styles/AppColors.js +6 -0
  73. package/dist/esm/styles/index.d.ts +82 -15
  74. package/dist/esm/styles/index.js +92 -26
  75. package/dist/esm/types/interfaces.d.ts +7 -0
  76. package/ios/NetworkInspectorModule.m +0 -10
  77. package/package.json +13 -10
@@ -10,7 +10,7 @@ import EndOfListFooter from '../EndOfListFooter';
10
10
  import styles from '../../styles';
11
11
  import { AppColors } from '../../styles/AppColors';
12
12
  import { AppFonts } from '../../styles/AppFonts';
13
- import { SearchIcon, ClearIcon, SortArrowIcon, TrashIcon, LayersIcon, UserIcon, InfoCircleIcon, WarningTriangleIcon, ErrorCircleIcon, AnalyticsIcon, HeaderPauseIcon, } from '../NetworkIcons';
13
+ import { SearchIcon, ClearIcon, SortArrowIcon, TrashIcon, LayersIcon, CheckIcon, UserIcon, InfoCircleIcon, WarningTriangleIcon, ErrorCircleIcon, AnalyticsIcon, HeaderPauseIcon, } from '../NetworkIcons';
14
14
  const ConsoleTab = React.memo(() => {
15
15
  const { t } = useTranslation();
16
16
  const { logSearch, setLogSearch, logSortOrder, setLogSortOrder, handleDelete, logFilters, setLogFilters, logCounts, filteredConsoleLogs, visibleConsoleLogs, isConsolePaused, setIsConsolePaused, } = useInspector();
@@ -104,6 +104,7 @@ const ConsoleTab = React.memo(() => {
104
104
  alignItems: 'center',
105
105
  gap: 8,
106
106
  }}>
107
+ {/* All Filter */}
107
108
  {(() => {
108
109
  const active = logFilters.has('all');
109
110
  return (<TouchableScale onPress={() => {
@@ -111,34 +112,52 @@ const ConsoleTab = React.memo(() => {
111
112
  }}>
112
113
  <View style={[
113
114
  styles.statusFilterChip,
115
+ {
116
+ backgroundColor: active ? AppColors.indigo600Alt : AppColors.indigo50,
117
+ borderColor: active ? AppColors.indigo600 : AppColors.indigo400,
118
+ borderRadius: 7,
119
+ },
114
120
  active && {
115
- borderColor: AppColors.purpleShade700,
116
- backgroundColor: AppColors.purpleTintBg,
121
+ shadowColor: AppColors.indigo600Alt,
122
+ shadowOffset: { width: 0, height: 1 },
123
+ shadowOpacity: 0.28,
124
+ shadowRadius: 2.5,
125
+ elevation: 2,
117
126
  },
118
127
  ]}>
119
- {/* #7 */}
120
128
  <View style={{
121
129
  flexDirection: 'row',
122
130
  alignItems: 'center',
123
131
  gap: 5,
124
132
  }}>
125
- <LayersIcon size={12} color={active
126
- ? AppColors.purpleShade700
127
- : AppColors.grayTextStrong}/>
133
+ <View style={{
134
+ width: 12,
135
+ height: 12,
136
+ borderRadius: 3,
137
+ borderWidth: 1.2,
138
+ borderColor: active ? AppColors.white : AppColors.indigo400,
139
+ backgroundColor: active ? AppColors.white : 'transparent',
140
+ alignItems: 'center',
141
+ justifyContent: 'center',
142
+ }}>
143
+ {active && <CheckIcon color={AppColors.indigo600Alt} size={8}/>}
144
+ </View>
145
+ <LayersIcon size={12} color={active ? AppColors.white : AppColors.indigo600Alt}/>
128
146
  <Text numberOfLines={1} style={[
129
147
  styles.statusFilterText,
130
- active && {
131
- color: AppColors.purpleShade700,
148
+ {
149
+ color: active ? AppColors.white : AppColors.indigo600Alt,
132
150
  fontFamily: AppFonts.interBold,
133
151
  },
134
152
  ]}>
135
- All ({logCounts.all})
153
+ {t('common.all', 'All')} ({logCounts.all})
136
154
  </Text>
137
155
  </View>
138
156
  </View>
139
157
  </TouchableScale>);
140
158
  })()}
141
159
 
160
+ {/* User Log / Standard Log Filter */}
142
161
  {(() => {
143
162
  const active = logFilters.has('user-log');
144
163
  return (<TouchableScale onPress={() => {
@@ -155,34 +174,52 @@ const ConsoleTab = React.memo(() => {
155
174
  }}>
156
175
  <View style={[
157
176
  styles.statusFilterChip,
177
+ {
178
+ backgroundColor: active ? AppColors.teal600 : AppColors.teal100,
179
+ borderColor: active ? AppColors.teal600 : AppColors.teal400,
180
+ borderRadius: 7,
181
+ },
158
182
  active && {
159
- borderColor: AppColors.slate500,
160
- backgroundColor: AppColors.slate100,
183
+ shadowColor: AppColors.teal600,
184
+ shadowOffset: { width: 0, height: 1 },
185
+ shadowOpacity: 0.28,
186
+ shadowRadius: 2.5,
187
+ elevation: 2,
161
188
  },
162
189
  ]}>
163
- {/* #7 */}
164
190
  <View style={{
165
191
  flexDirection: 'row',
166
192
  alignItems: 'center',
167
193
  gap: 5,
168
194
  }}>
169
- <UserIcon size={12} color={active
170
- ? AppColors.slate700
171
- : AppColors.grayTextStrong}/>
195
+ <View style={{
196
+ width: 12,
197
+ height: 12,
198
+ borderRadius: 3,
199
+ borderWidth: 1.2,
200
+ borderColor: active ? AppColors.white : AppColors.teal400,
201
+ backgroundColor: active ? AppColors.white : 'transparent',
202
+ alignItems: 'center',
203
+ justifyContent: 'center',
204
+ }}>
205
+ {active && <CheckIcon color={AppColors.teal600} size={8}/>}
206
+ </View>
207
+ <UserIcon size={12} color={active ? AppColors.white : AppColors.teal600}/>
172
208
  <Text numberOfLines={1} style={[
173
209
  styles.statusFilterText,
174
- active && {
175
- color: AppColors.slate700,
210
+ {
211
+ color: active ? AppColors.white : AppColors.teal600,
176
212
  fontFamily: AppFonts.interBold,
177
213
  },
178
214
  ]}>
179
- User Log ({logCounts['user-log']})
215
+ {t('console.log', 'Log')} ({logCounts['user-log']})
180
216
  </Text>
181
217
  </View>
182
218
  </View>
183
219
  </TouchableScale>);
184
220
  })()}
185
221
 
222
+ {/* Info Filter */}
186
223
  {(() => {
187
224
  const active = logFilters.has('info');
188
225
  return (<TouchableScale onPress={() => {
@@ -199,34 +236,52 @@ const ConsoleTab = React.memo(() => {
199
236
  }}>
200
237
  <View style={[
201
238
  styles.statusFilterChip,
239
+ {
240
+ backgroundColor: active ? AppColors.sky600 : AppColors.sky100,
241
+ borderColor: active ? AppColors.blue700 : AppColors.sky400,
242
+ borderRadius: 7,
243
+ },
202
244
  active && {
203
- borderColor: AppColors.purple,
204
- backgroundColor: AppColors.purpleShade50,
245
+ shadowColor: AppColors.sky600,
246
+ shadowOffset: { width: 0, height: 1 },
247
+ shadowOpacity: 0.28,
248
+ shadowRadius: 2.5,
249
+ elevation: 2,
205
250
  },
206
251
  ]}>
207
- {/* #7 */}
208
252
  <View style={{
209
253
  flexDirection: 'row',
210
254
  alignItems: 'center',
211
255
  gap: 5,
212
256
  }}>
213
- <InfoCircleIcon size={12} color={active
214
- ? AppColors.purple
215
- : AppColors.grayTextStrong}/>
257
+ <View style={{
258
+ width: 12,
259
+ height: 12,
260
+ borderRadius: 3,
261
+ borderWidth: 1.2,
262
+ borderColor: active ? AppColors.white : AppColors.sky400,
263
+ backgroundColor: active ? AppColors.white : 'transparent',
264
+ alignItems: 'center',
265
+ justifyContent: 'center',
266
+ }}>
267
+ {active && <CheckIcon color={AppColors.sky600} size={8}/>}
268
+ </View>
269
+ <InfoCircleIcon size={12} color={active ? AppColors.white : AppColors.sky600}/>
216
270
  <Text numberOfLines={1} style={[
217
271
  styles.statusFilterText,
218
- active && {
219
- color: AppColors.purple,
272
+ {
273
+ color: active ? AppColors.white : AppColors.sky600,
220
274
  fontFamily: AppFonts.interBold,
221
275
  },
222
276
  ]}>
223
- Info ({logCounts.info})
277
+ {t('console.info', 'Info')} ({logCounts.info})
224
278
  </Text>
225
279
  </View>
226
280
  </View>
227
281
  </TouchableScale>);
228
282
  })()}
229
283
 
284
+ {/* Warning Filter */}
230
285
  {(() => {
231
286
  const active = logFilters.has('warn');
232
287
  return (<TouchableScale onPress={() => {
@@ -243,36 +298,52 @@ const ConsoleTab = React.memo(() => {
243
298
  }}>
244
299
  <View style={[
245
300
  styles.statusFilterChip,
301
+ {
302
+ backgroundColor: active ? AppColors.amber600 : AppColors.amber100,
303
+ borderColor: active ? AppColors.amber700 : AppColors.amber200,
304
+ borderRadius: 7,
305
+ },
246
306
  active && {
247
- borderColor: AppColors.lightOrange,
248
- backgroundColor: AppColors.warnCardBg,
307
+ shadowColor: AppColors.amber600,
308
+ shadowOffset: { width: 0, height: 1 },
309
+ shadowOpacity: 0.28,
310
+ shadowRadius: 2.5,
311
+ elevation: 2,
249
312
  },
250
313
  ]}>
251
- {/* #7 */}
252
314
  <View style={{
253
315
  flexDirection: 'row',
254
316
  alignItems: 'center',
255
317
  gap: 5,
256
318
  }}>
257
- <WarningTriangleIcon size={12} color={active
258
- ? AppColors.darkOrange ||
259
- AppColors.lightOrange
260
- : AppColors.grayTextStrong}/>
319
+ <View style={{
320
+ width: 12,
321
+ height: 12,
322
+ borderRadius: 3,
323
+ borderWidth: 1.2,
324
+ borderColor: active ? AppColors.white : AppColors.amber500,
325
+ backgroundColor: active ? AppColors.white : 'transparent',
326
+ alignItems: 'center',
327
+ justifyContent: 'center',
328
+ }}>
329
+ {active && <CheckIcon color={AppColors.amber600} size={8}/>}
330
+ </View>
331
+ <WarningTriangleIcon size={12} color={active ? AppColors.white : AppColors.amber700}/>
261
332
  <Text numberOfLines={1} style={[
262
333
  styles.statusFilterText,
263
- active && {
264
- color: AppColors.darkOrange ||
265
- AppColors.lightOrange,
334
+ {
335
+ color: active ? AppColors.white : AppColors.amber800Warm,
266
336
  fontFamily: AppFonts.interBold,
267
337
  },
268
338
  ]}>
269
- Warning ({logCounts.warn})
339
+ {t('console.warning', 'Warn')} ({logCounts.warn})
270
340
  </Text>
271
341
  </View>
272
342
  </View>
273
343
  </TouchableScale>);
274
344
  })()}
275
345
 
346
+ {/* Error Filter */}
276
347
  {(() => {
277
348
  const active = logFilters.has('error');
278
349
  return (<TouchableScale onPress={() => {
@@ -289,34 +360,52 @@ const ConsoleTab = React.memo(() => {
289
360
  }}>
290
361
  <View style={[
291
362
  styles.statusFilterChip,
363
+ {
364
+ backgroundColor: active ? AppColors.red500 : AppColors.red100,
365
+ borderColor: active ? AppColors.red600 : AppColors.errorBorder,
366
+ borderRadius: 7,
367
+ },
292
368
  active && {
293
- borderColor: AppColors.errorColor,
294
- backgroundColor: AppColors.errorCardBg,
369
+ shadowColor: AppColors.red500,
370
+ shadowOffset: { width: 0, height: 1 },
371
+ shadowOpacity: 0.28,
372
+ shadowRadius: 2.5,
373
+ elevation: 2,
295
374
  },
296
375
  ]}>
297
- {/* #7 */}
298
376
  <View style={{
299
377
  flexDirection: 'row',
300
378
  alignItems: 'center',
301
379
  gap: 5,
302
380
  }}>
303
- <ErrorCircleIcon size={12} color={active
304
- ? AppColors.errorColor
305
- : AppColors.grayTextStrong}/>
381
+ <View style={{
382
+ width: 12,
383
+ height: 12,
384
+ borderRadius: 3,
385
+ borderWidth: 1.2,
386
+ borderColor: active ? AppColors.white : AppColors.red500,
387
+ backgroundColor: active ? AppColors.white : 'transparent',
388
+ alignItems: 'center',
389
+ justifyContent: 'center',
390
+ }}>
391
+ {active && <CheckIcon color={AppColors.red500} size={8}/>}
392
+ </View>
393
+ <ErrorCircleIcon size={12} color={active ? AppColors.white : AppColors.red500}/>
306
394
  <Text numberOfLines={1} style={[
307
395
  styles.statusFilterText,
308
- active && {
309
- color: AppColors.errorColor,
396
+ {
397
+ color: active ? AppColors.white : AppColors.redErrorText,
310
398
  fontFamily: AppFonts.interBold,
311
399
  },
312
400
  ]}>
313
- Error ({logCounts.error})
401
+ {t('console.error', 'Error')} ({logCounts.error})
314
402
  </Text>
315
403
  </View>
316
404
  </View>
317
405
  </TouchableScale>);
318
406
  })()}
319
407
 
408
+ {/* Analytics Filter */}
320
409
  {(() => {
321
410
  const active = logFilters.has('analytics');
322
411
  return (<TouchableScale onPress={() => {
@@ -333,28 +422,45 @@ const ConsoleTab = React.memo(() => {
333
422
  }}>
334
423
  <View style={[
335
424
  styles.statusFilterChip,
425
+ {
426
+ backgroundColor: active ? AppColors.violet600 : AppColors.purple100,
427
+ borderColor: active ? AppColors.purple700 : AppColors.purple200,
428
+ borderRadius: 7,
429
+ },
336
430
  active && {
337
- borderColor: AppColors.skyBlue,
338
- backgroundColor: `${AppColors.skyBlue}15`,
431
+ shadowColor: AppColors.violet600,
432
+ shadowOffset: { width: 0, height: 1 },
433
+ shadowOpacity: 0.28,
434
+ shadowRadius: 2.5,
435
+ elevation: 2,
339
436
  },
340
437
  ]}>
341
- {/* #7 */}
342
438
  <View style={{
343
439
  flexDirection: 'row',
344
440
  alignItems: 'center',
345
441
  gap: 5,
346
442
  }}>
347
- <AnalyticsIcon size={12} color={active
348
- ? AppColors.skyBlue
349
- : AppColors.grayTextStrong}/>
443
+ <View style={{
444
+ width: 12,
445
+ height: 12,
446
+ borderRadius: 3,
447
+ borderWidth: 1.2,
448
+ borderColor: active ? AppColors.white : AppColors.purple400,
449
+ backgroundColor: active ? AppColors.white : 'transparent',
450
+ alignItems: 'center',
451
+ justifyContent: 'center',
452
+ }}>
453
+ {active && <CheckIcon color={AppColors.violet600} size={8}/>}
454
+ </View>
455
+ <AnalyticsIcon size={12} color={active ? AppColors.white : AppColors.purple}/>
350
456
  <Text numberOfLines={1} style={[
351
457
  styles.statusFilterText,
352
- active && {
353
- color: AppColors.skyBlue,
458
+ {
459
+ color: active ? AppColors.white : AppColors.brandPurple,
354
460
  fontFamily: AppFonts.interBold,
355
461
  },
356
462
  ]}>
357
- Analytics ({logCounts.analytics})
463
+ {t('tabs.analytics', 'Analytics')} ({logCounts.analytics})
358
464
  </Text>
359
465
  </View>
360
466
  </View>
@@ -10,7 +10,7 @@ import { AppFonts } from '../../styles/AppFonts';
10
10
  import { METHOD_COLORS } from '../../constants';
11
11
  import { LIB_VERSION } from '../../constants';
12
12
  import { getStatusColor, getAppName, getBundleIdentifier, formatTime, getSize } from '../../helpers';
13
- import { WhiteBackNavigation, TrashIcon, SettingsIcon, CloseWhite, ChevronIcon, ClockIcon, AppleIcon, AndroidIcon, PackageBoxIcon, } from '../NetworkIcons';
13
+ import { WhiteBackNavigation, TrashIcon, SettingsIcon, CloseWhite, ClockIcon, SizeIcon, AppleIcon, AndroidIcon, } from '../NetworkIcons';
14
14
  const InspectorHeader = React.memo(() => {
15
15
  const { modalHeightPercent, appIcon, selected, setSelected, selectedEvent, setSelectedEvent, selectedLog, setSelectedLog, selectedReduxSlice, setSelectedReduxSlice, selectedReduxAction, setSelectedReduxAction, reduxState, reduxLastActionMap, showHeaderInfo, setShowHeaderInfo, updateAvailable, latestNpmVersion, clearAnim, activePulseAnim, unreadPulseAnim, runClearAllWithAnimation, setSettingsPage, closeModal, detailTitle, activeTab, environment, selectedCrash, setSelectedCrash, } = useInspector();
16
16
  const envConfig = useMemo(() => {
@@ -101,16 +101,18 @@ const InspectorHeader = React.memo(() => {
101
101
  <WhiteBackNavigation />
102
102
  </TouchableScale>
103
103
 
104
- {!isAnySelected ? (<TouchableScale onPress={() => setShowHeaderInfo(prev => !prev)} style={{
104
+ {!isAnySelected ? (<View style={{
105
105
  flexDirection: 'row',
106
- alignItems: 'flex-start',
107
- gap: 10,
106
+ alignItems: 'center',
107
+ gap: 8,
108
108
  flex: 1,
109
+ minWidth: 0,
110
+ marginRight: 6,
109
111
  }}>
110
- <AppHeaderLogo size={46} customIcon={appIcon}/>
111
- <View style={{ gap: 2, flex: 1 }}>
112
- <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6, flexWrap: 'wrap' }}>
113
- <Text style={[styles.headerTitle]} numberOfLines={1}>
112
+ <AppHeaderLogo size={38} customIcon={appIcon}/>
113
+ <View style={{ gap: 2.5, flex: 1, minWidth: 0 }}>
114
+ <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6, minWidth: 0 }}>
115
+ <Text style={[styles.headerTitle, { flexShrink: 1 }]} numberOfLines={1} ellipsizeMode="tail">
114
116
  {getAppName()}
115
117
  </Text>
116
118
  <View style={[
@@ -118,6 +120,9 @@ const InspectorHeader = React.memo(() => {
118
120
  {
119
121
  backgroundColor: envConfig.bg,
120
122
  borderColor: envConfig.border,
123
+ flexShrink: 0,
124
+ paddingVertical: 1.5,
125
+ marginBottom: 0,
121
126
  },
122
127
  ]}>
123
128
  <Text style={[
@@ -136,6 +141,7 @@ const InspectorHeader = React.memo(() => {
136
141
  ])} style={{
137
142
  alignItems: 'center',
138
143
  justifyContent: 'center',
144
+ flexShrink: 0,
139
145
  }}>
140
146
  <Animated.View style={{
141
147
  width: 8,
@@ -149,128 +155,59 @@ const InspectorHeader = React.memo(() => {
149
155
  }}/>
150
156
  </Pressable>)}
151
157
  </View>
158
+
159
+ {/* Clean Bundle Identifier & Version Representation */}
152
160
  <View style={{
153
161
  flexDirection: 'row',
154
162
  alignItems: 'center',
155
- alignSelf: 'flex-start',
156
- backgroundColor: `${AppColors.white}1A`,
157
- borderRadius: 10,
158
- paddingHorizontal: 8,
159
- paddingVertical: 3,
160
- gap: 5,
163
+ gap: 4.5,
164
+ minWidth: 0,
165
+ }}>
166
+ <View style={{
167
+ flexDirection: 'row',
168
+ alignItems: 'center',
169
+ backgroundColor: `${AppColors.white}1F`,
170
+ borderRadius: 5,
171
+ paddingHorizontal: 6,
172
+ paddingVertical: 2,
173
+ gap: 3.5,
161
174
  borderWidth: 1,
162
- borderColor: `${AppColors.white}26`,
175
+ borderColor: `${AppColors.white}2E`,
176
+ flexShrink: 1,
177
+ minWidth: 0,
163
178
  }}>
179
+ {Platform.OS === 'ios' ? (<AppleIcon color={`${AppColors.white}D9`} size={9}/>) : (<AndroidIcon color={`${AppColors.white}D9`} size={9}/>)}
180
+ <Text style={{
181
+ fontFamily: AppFonts.interMedium,
182
+ fontSize: 9.5,
183
+ color: `${AppColors.white}EB`,
184
+ letterSpacing: 0.1,
185
+ flexShrink: 1,
186
+ }} numberOfLines={1} ellipsizeMode="middle">
187
+ {getBundleIdentifier()}
188
+ </Text>
189
+ </View>
190
+
164
191
  <View style={{
165
- width: 6,
166
- height: 6,
167
- borderRadius: 3,
168
- backgroundColor: AppColors.liveGreen,
169
- }}/>
170
- <Text style={{
192
+ backgroundColor: `${AppColors.white}14`,
193
+ borderRadius: 4,
194
+ paddingHorizontal: 4.5,
195
+ paddingVertical: 1.5,
196
+ borderWidth: 1,
197
+ borderColor: `${AppColors.white}20`,
198
+ flexShrink: 0,
199
+ }}>
200
+ <Text style={{
171
201
  fontFamily: AppFonts.interMedium,
172
- fontSize: 10,
173
- color: `${AppColors.white}D9`,
174
- letterSpacing: 0.2,
202
+ fontSize: 8.5,
203
+ color: `${AppColors.white}B3`,
175
204
  }} numberOfLines={1}>
176
- {getBundleIdentifier()}
177
- </Text>
178
- <Animated.View style={{
179
- transform: [{ rotate: showHeaderInfo ? '180deg' : '0deg' }],
180
- marginLeft: 2,
181
- }}>
182
- <ChevronIcon color="rgba(255,255,255,0.6)" size={12}/>
183
- </Animated.View>
205
+ v{LIB_VERSION}
206
+ </Text>
207
+ </View>
184
208
  </View>
185
- {showHeaderInfo && (<View style={{
186
- flexDirection: 'row',
187
- alignItems: 'center',
188
- gap: 6,
189
- marginTop: 4,
190
- }}>
191
- <View style={{
192
- flexDirection: 'row',
193
- alignItems: 'center',
194
- borderRadius: 6,
195
- overflow: 'hidden',
196
- borderWidth: 1,
197
- borderColor: `${AppColors.white}2E`,
198
- }}>
199
- <View style={{
200
- flexDirection: 'row',
201
- alignItems: 'center',
202
- gap: 3.5,
203
- paddingHorizontal: 6,
204
- paddingVertical: 2.5,
205
- backgroundColor: `${AppColors.white}47`,
206
- }}>
207
- {Platform.OS === 'ios' ? (<AppleIcon color={AppColors.white} size={10}/>) : (<AndroidIcon color={AppColors.white} size={10}/>)}
208
- <Text style={{
209
- fontFamily: AppFonts.interBold,
210
- fontSize: 9,
211
- color: AppColors.white,
212
- letterSpacing: 0.3,
213
- }}>
214
- {Platform.OS === 'ios' ? 'iOS' : 'Android'}
215
- </Text>
216
- </View>
217
- <View style={{
218
- paddingHorizontal: 5,
219
- paddingVertical: 2.5,
220
- backgroundColor: `${AppColors.white}1F`,
221
- }}>
222
- <Text style={{
223
- fontFamily: AppFonts.interMedium,
224
- fontSize: 9.5,
225
- color: `${AppColors.white}EB`,
226
- }}>
227
- {String(Platform.Version)}
228
- </Text>
229
- </View>
230
- </View>
231
- <View style={{
232
- flexDirection: 'row',
233
- alignItems: 'center',
234
- borderRadius: 6,
235
- overflow: 'hidden',
236
- borderWidth: 1,
237
- borderColor: `${AppColors.white}2E`,
238
- }}>
239
- <View style={{
240
- flexDirection: 'row',
241
- alignItems: 'center',
242
- gap: 3.5,
243
- paddingHorizontal: 6,
244
- paddingVertical: 2.5,
245
- backgroundColor: `${AppColors.white}47`,
246
- }}>
247
- <PackageBoxIcon color={AppColors.white} size={10}/>
248
- <Text style={{
249
- fontFamily: AppFonts.interBold,
250
- fontSize: 9,
251
- color: AppColors.white,
252
- letterSpacing: 0.3,
253
- }}>
254
- npm
255
- </Text>
256
- </View>
257
- <View style={{
258
- paddingHorizontal: 5,
259
- paddingVertical: 2,
260
- backgroundColor: `${AppColors.white}1F`,
261
- }}>
262
- <Text style={{
263
- fontFamily: AppFonts.interMedium,
264
- fontSize: 9.5,
265
- color: `${AppColors.white}EB`,
266
- }}>
267
- v{LIB_VERSION}
268
- </Text>
269
- </View>
270
- </View>
271
- </View>)}
272
209
  </View>
273
- </TouchableScale>) : null}
210
+ </View>) : null}
274
211
  </View>
275
212
 
276
213
  {isDetailView && (<View style={styles.headerCenter}>
@@ -334,6 +271,20 @@ const InspectorHeader = React.memo(() => {
334
271
  : '—'}
335
272
  </Text>
336
273
  </View>
274
+ {selected.response != null && (<View style={{
275
+ flexDirection: 'row',
276
+ alignItems: 'center',
277
+ gap: 4,
278
+ paddingHorizontal: 8,
279
+ paddingVertical: 3,
280
+ borderRadius: 20,
281
+ backgroundColor: `${AppColors.white}29`,
282
+ }}>
283
+ <SizeIcon color={AppColors.white} size={11}/>
284
+ <Text style={styles.headerSubTitle}>
285
+ {getSize(selected.response)}
286
+ </Text>
287
+ </View>)}
337
288
  </View>
338
289
  </View>) : activeTab === 'analytics' && selectedEvent != null ? (<View style={styles.headerDetailCenter}>
339
290
  <View style={styles.headerDetailRow}>