react-native-inapp-inspector 2.0.7 → 2.2.0

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 (85) hide show
  1. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +0 -11
  2. package/dist/commonjs/components/Inspector/InspectorHeader.js +25 -28
  3. package/dist/commonjs/components/Inspector/MainScreen.js +2 -19
  4. package/dist/commonjs/components/Inspector/NetworkDetail.js +0 -15
  5. package/dist/commonjs/components/Inspector/PerformanceTab.js +18 -30
  6. package/dist/commonjs/components/Inspector/SettingsPanel.js +49 -448
  7. package/dist/commonjs/components/Inspector/TabBar.js +2 -23
  8. package/dist/commonjs/components/NetworkIcons.d.ts +0 -12
  9. package/dist/commonjs/components/NetworkIcons.js +3 -72
  10. package/dist/commonjs/constants/version.d.ts +1 -1
  11. package/dist/commonjs/constants/version.js +1 -1
  12. package/dist/commonjs/helpers/index.d.ts +0 -2
  13. package/dist/commonjs/helpers/index.js +1 -12
  14. package/dist/commonjs/helpers/settingsStore.d.ts +1 -1
  15. package/dist/commonjs/helpers/settingsStore.js +2 -4
  16. package/dist/commonjs/i18n/locales/en.json +2 -3
  17. package/dist/commonjs/index.d.ts +0 -1
  18. package/dist/commonjs/index.js +9 -127
  19. package/dist/commonjs/native/NativeInspector.d.ts +0 -1
  20. package/dist/commonjs/types/enums.d.ts +0 -7
  21. package/dist/commonjs/types/enums.js +0 -7
  22. package/dist/commonjs/types/interfaces.d.ts +0 -77
  23. package/dist/esm/components/Inspector/InspectorHeader.js +25 -28
  24. package/dist/esm/components/Inspector/MainScreen.js +2 -19
  25. package/dist/esm/components/Inspector/NetworkDetail.js +1 -16
  26. package/dist/esm/components/Inspector/PerformanceTab.js +19 -31
  27. package/dist/esm/components/Inspector/SettingsPanel.js +50 -449
  28. package/dist/esm/components/Inspector/TabBar.js +3 -24
  29. package/dist/esm/components/NetworkIcons.d.ts +0 -12
  30. package/dist/esm/components/NetworkIcons.js +0 -57
  31. package/dist/esm/constants/version.d.ts +1 -1
  32. package/dist/esm/constants/version.js +1 -1
  33. package/dist/esm/helpers/index.d.ts +0 -2
  34. package/dist/esm/helpers/index.js +0 -10
  35. package/dist/esm/helpers/settingsStore.d.ts +1 -1
  36. package/dist/esm/helpers/settingsStore.js +2 -4
  37. package/dist/esm/i18n/locales/en.json +2 -3
  38. package/dist/esm/index.d.ts +0 -1
  39. package/dist/esm/index.js +8 -123
  40. package/dist/esm/native/NativeInspector.d.ts +0 -1
  41. package/dist/esm/types/enums.d.ts +0 -7
  42. package/dist/esm/types/enums.js +0 -7
  43. package/dist/esm/types/interfaces.d.ts +0 -77
  44. package/ios/NetworkInspectorModule.mm +5 -12
  45. package/package.json +1 -4
  46. package/dist/commonjs/components/Inspector/AuditTab.d.ts +0 -3
  47. package/dist/commonjs/components/Inspector/AuditTab.js +0 -741
  48. package/dist/commonjs/components/Inspector/DeviceTab.d.ts +0 -3
  49. package/dist/commonjs/components/Inspector/DeviceTab.js +0 -717
  50. package/dist/commonjs/components/Inspector/FirstTimeWalkthroughModal.d.ts +0 -7
  51. package/dist/commonjs/components/Inspector/FirstTimeWalkthroughModal.js +0 -600
  52. package/dist/commonjs/components/Inspector/PerformanceHud.d.ts +0 -7
  53. package/dist/commonjs/components/Inspector/PerformanceHud.js +0 -210
  54. package/dist/commonjs/components/Inspector/RequestReplayModal.d.ts +0 -9
  55. package/dist/commonjs/components/Inspector/RequestReplayModal.js +0 -792
  56. package/dist/commonjs/components/Inspector/RequestReplayView.d.ts +0 -8
  57. package/dist/commonjs/components/Inspector/RequestReplayView.js +0 -871
  58. package/dist/commonjs/components/Inspector/StorageTab.d.ts +0 -3
  59. package/dist/commonjs/components/Inspector/StorageTab.js +0 -610
  60. package/dist/commonjs/customHooks/storageInspector.d.ts +0 -13
  61. package/dist/commonjs/customHooks/storageInspector.js +0 -179
  62. package/dist/commonjs/helpers/deviceInfo.d.ts +0 -4
  63. package/dist/commonjs/helpers/deviceInfo.js +0 -94
  64. package/dist/commonjs/helpers/packageAuditor.d.ts +0 -5
  65. package/dist/commonjs/helpers/packageAuditor.js +0 -182
  66. package/dist/esm/components/Inspector/AuditTab.d.ts +0 -3
  67. package/dist/esm/components/Inspector/AuditTab.js +0 -702
  68. package/dist/esm/components/Inspector/DeviceTab.d.ts +0 -3
  69. package/dist/esm/components/Inspector/DeviceTab.js +0 -678
  70. package/dist/esm/components/Inspector/FirstTimeWalkthroughModal.d.ts +0 -7
  71. package/dist/esm/components/Inspector/FirstTimeWalkthroughModal.js +0 -560
  72. package/dist/esm/components/Inspector/PerformanceHud.d.ts +0 -7
  73. package/dist/esm/components/Inspector/PerformanceHud.js +0 -170
  74. package/dist/esm/components/Inspector/RequestReplayModal.d.ts +0 -9
  75. package/dist/esm/components/Inspector/RequestReplayModal.js +0 -752
  76. package/dist/esm/components/Inspector/RequestReplayView.d.ts +0 -8
  77. package/dist/esm/components/Inspector/RequestReplayView.js +0 -831
  78. package/dist/esm/components/Inspector/StorageTab.d.ts +0 -3
  79. package/dist/esm/components/Inspector/StorageTab.js +0 -571
  80. package/dist/esm/customHooks/storageInspector.d.ts +0 -13
  81. package/dist/esm/customHooks/storageInspector.js +0 -170
  82. package/dist/esm/helpers/deviceInfo.d.ts +0 -4
  83. package/dist/esm/helpers/deviceInfo.js +0 -89
  84. package/dist/esm/helpers/packageAuditor.d.ts +0 -5
  85. package/dist/esm/helpers/packageAuditor.js +0 -173
@@ -62,7 +62,7 @@ const helpers_1 = require("../../helpers");
62
62
  const toast_1 = require("../../helpers/toast");
63
63
  const SettingsPanel = () => {
64
64
  const { t } = (0, i18n_1.useTranslation)();
65
- const { settingsPage, setSettingsPage, settingsActiveSubTab, setSettingsActiveSubTab, tabVisibility, toggleTabVisibility, defaultTab, setDefaultTab, isDark, setIsDark, modalHeightPercent, setModalHeightPercent, modalAnimationType, setModalAnimationType, showDuplicateLogs, setShowDuplicateLogs, showUpdateToast, setShowUpdateToast, showConsoleLevels, setShowConsoleLevels, resetToDefaults, storage, logs, consoleLogs, analyticsEvents, reduxState, maxNetworkLogs, setMaxNetworkLogs, maxConsoleLogs, setMaxConsoleLogs, maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit, isAutoRamLimitEnabled, setIsAutoRamLimitEnabled, deviceFreeRamMb, isPerformanceHudEnabled, setIsPerformanceHudEnabled, reduxAutoRefresh, setReduxAutoRefreshState, reduxExpandDepth, setReduxExpandDepth, switchActiveTab, setSelected, setSelectedEvent, setReduxState, crashRecords, maxCrashLogs, setMaxCrashLogs, updateAvailable, latestNpmVersion, openWalkthrough, deviceInfo, auditReport, storageEntries, } = (0, InspectorContext_1.useInspector)();
65
+ const { settingsPage, setSettingsPage, settingsActiveSubTab, setSettingsActiveSubTab, tabVisibility, toggleTabVisibility, defaultTab, setDefaultTab, isDark, setIsDark, modalHeightPercent, setModalHeightPercent, modalAnimationType, setModalAnimationType, showDuplicateLogs, setShowDuplicateLogs, showUpdateToast, setShowUpdateToast, showConsoleLevels, setShowConsoleLevels, resetToDefaults, storage, logs, consoleLogs, analyticsEvents, reduxState, maxNetworkLogs, setMaxNetworkLogs, maxConsoleLogs, setMaxConsoleLogs, maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit, isAutoRamLimitEnabled, setIsAutoRamLimitEnabled, deviceFreeRamMb, reduxAutoRefresh, setReduxAutoRefreshState, reduxExpandDepth, setReduxExpandDepth, switchActiveTab, setSelected, setSelectedEvent, setReduxState, crashRecords, maxCrashLogs, setMaxCrashLogs, updateAvailable, latestNpmVersion, } = (0, InspectorContext_1.useInspector)();
66
66
  const [stagedHeight, setStagedHeight] = (0, react_1.useState)(modalHeightPercent);
67
67
  const [telemetryConsent, setTelemetryConsentState] = (0, react_1.useState)(true);
68
68
  (0, react_1.useEffect)(() => {
@@ -101,27 +101,6 @@ const SettingsPanel = () => {
101
101
  icon: 'logs',
102
102
  desc: 'Terminal console logs, warnings, errors & stack traces',
103
103
  },
104
- {
105
- key: 'storage',
106
- label: 'Storage (AsyncStorage)',
107
- category: 'core',
108
- icon: 'storage',
109
- desc: 'Browse, edit, create and delete local key-value storage & JSON',
110
- },
111
- {
112
- key: 'device',
113
- label: 'Device & System Info',
114
- category: 'diagnostic',
115
- icon: 'device',
116
- desc: 'Hermes runtime, Fabric New Arch, screen metrics & build info',
117
- },
118
- {
119
- key: 'audit',
120
- label: 'Code Quality & Package Audit',
121
- category: 'diagnostic',
122
- icon: 'audit',
123
- desc: 'Audit dependencies, peer conflicts, TS schema errors & React Native anti-patterns',
124
- },
125
104
  {
126
105
  key: 'performance',
127
106
  label: 'Performance Tracker',
@@ -164,9 +143,6 @@ const SettingsPanel = () => {
164
143
  logs: Boolean(tabVisibility?.logs),
165
144
  analytics: Boolean(tabVisibility?.analytics),
166
145
  redux: Boolean(tabVisibility?.redux),
167
- storage: Boolean(tabVisibility?.storage),
168
- device: Boolean(tabVisibility?.device),
169
- audit: Boolean(tabVisibility?.audit),
170
146
  bundle: Boolean(tabVisibility?.bundle),
171
147
  performance: Boolean(tabVisibility?.performance),
172
148
  crash: Boolean(tabVisibility?.crash),
@@ -178,9 +154,6 @@ const SettingsPanel = () => {
178
154
  logs: Boolean(tabVisibility?.logs),
179
155
  analytics: Boolean(tabVisibility?.analytics),
180
156
  redux: Boolean(tabVisibility?.redux),
181
- storage: Boolean(tabVisibility?.storage),
182
- device: Boolean(tabVisibility?.device),
183
- audit: Boolean(tabVisibility?.audit),
184
157
  bundle: Boolean(tabVisibility?.bundle),
185
158
  performance: Boolean(tabVisibility?.performance),
186
159
  crash: Boolean(tabVisibility?.crash),
@@ -352,17 +325,16 @@ const SettingsPanel = () => {
352
325
  shadowRadius: 4,
353
326
  shadowOffset: { width: 0, height: 2 },
354
327
  }}>
355
- {/* Tab 1: Modules & Tabs */}
356
328
  <TouchableScale_1.default accessible={true} accessibilityRole="tab" accessibilityLabel={t('settings.modulesAndTools')} accessibilityState={{ selected: settingsActiveSubTab === 'module' }} onPress={() => {
357
329
  (0, InspectorContext_1.animateNextLayout)();
358
330
  setSettingsActiveSubTab('module');
359
331
  }} style={{
360
332
  flex: 1,
361
- paddingVertical: 8,
333
+ paddingVertical: 9,
362
334
  flexDirection: 'row',
363
335
  alignItems: 'center',
364
336
  justifyContent: 'center',
365
- gap: 5,
337
+ gap: 6,
366
338
  borderRadius: 9,
367
339
  backgroundColor: settingsActiveSubTab === 'module'
368
340
  ? AppColors_1.AppColors.purple
@@ -370,11 +342,11 @@ const SettingsPanel = () => {
370
342
  }}>
371
343
  <NetworkIcons_1.LayersIcon color={settingsActiveSubTab === 'module'
372
344
  ? AppColors_1.AppColors.white
373
- : AppColors_1.AppColors.grayText} size={12.5}/>
345
+ : AppColors_1.AppColors.grayText} size={13}/>
374
346
  <react_native_1.Text style={{
375
347
  fontFamily: AppFonts_1.AppFonts.interBold,
376
- fontSize: 11.5,
377
- lineHeight: 15,
348
+ fontSize: 12.5,
349
+ lineHeight: 16,
378
350
  color: settingsActiveSubTab === 'module'
379
351
  ? AppColors_1.AppColors.white
380
352
  : AppColors_1.AppColors.grayText,
@@ -383,48 +355,16 @@ const SettingsPanel = () => {
383
355
  </react_native_1.Text>
384
356
  </TouchableScale_1.default>
385
357
 
386
- {/* Tab 2: RAM & Limits */}
387
- <TouchableScale_1.default accessible={true} accessibilityRole="tab" accessibilityLabel={t('settings.ramLimits')} accessibilityState={{ selected: settingsActiveSubTab === 'limits' }} onPress={() => {
388
- (0, InspectorContext_1.animateNextLayout)();
389
- setSettingsActiveSubTab('limits');
390
- }} style={{
391
- flex: 1,
392
- paddingVertical: 8,
393
- flexDirection: 'row',
394
- alignItems: 'center',
395
- justifyContent: 'center',
396
- gap: 5,
397
- borderRadius: 9,
398
- backgroundColor: settingsActiveSubTab === 'limits'
399
- ? AppColors_1.AppColors.purple
400
- : 'transparent',
401
- }}>
402
- <NetworkIcons_1.CpuIcon color={settingsActiveSubTab === 'limits'
403
- ? AppColors_1.AppColors.white
404
- : AppColors_1.AppColors.grayText} size={12.5}/>
405
- <react_native_1.Text style={{
406
- fontFamily: AppFonts_1.AppFonts.interBold,
407
- fontSize: 11.5,
408
- lineHeight: 15,
409
- color: settingsActiveSubTab === 'limits'
410
- ? AppColors_1.AppColors.white
411
- : AppColors_1.AppColors.grayText,
412
- }}>
413
- {t('settings.ramLimits')}
414
- </react_native_1.Text>
415
- </TouchableScale_1.default>
416
-
417
- {/* Tab 3: UI & Appearance */}
418
358
  <TouchableScale_1.default accessible={true} accessibilityRole="tab" accessibilityLabel={t('settings.uiPreferences')} accessibilityState={{ selected: settingsActiveSubTab === 'ui' }} onPress={() => {
419
359
  (0, InspectorContext_1.animateNextLayout)();
420
360
  setSettingsActiveSubTab('ui');
421
361
  }} style={{
422
362
  flex: 1,
423
- paddingVertical: 8,
363
+ paddingVertical: 9,
424
364
  flexDirection: 'row',
425
365
  alignItems: 'center',
426
366
  justifyContent: 'center',
427
- gap: 5,
367
+ gap: 6,
428
368
  borderRadius: 9,
429
369
  backgroundColor: settingsActiveSubTab === 'ui'
430
370
  ? AppColors_1.AppColors.purple
@@ -432,11 +372,11 @@ const SettingsPanel = () => {
432
372
  }}>
433
373
  <NetworkIcons_1.ScreenIcon color={settingsActiveSubTab === 'ui'
434
374
  ? AppColors_1.AppColors.white
435
- : AppColors_1.AppColors.grayText} size={12.5}/>
375
+ : AppColors_1.AppColors.grayText} size={13}/>
436
376
  <react_native_1.Text style={{
437
377
  fontFamily: AppFonts_1.AppFonts.interBold,
438
- fontSize: 11.5,
439
- lineHeight: 15,
378
+ fontSize: 12.5,
379
+ lineHeight: 16,
440
380
  color: settingsActiveSubTab === 'ui'
441
381
  ? AppColors_1.AppColors.white
442
382
  : AppColors_1.AppColors.grayText,
@@ -446,7 +386,7 @@ const SettingsPanel = () => {
446
386
  </TouchableScale_1.default>
447
387
  </react_native_1.View>
448
388
 
449
- {settingsActiveSubTab === 'module' && (<react_native_1.View style={{ gap: 12 }}>
389
+ {settingsActiveSubTab === 'module' ? (<react_native_1.View style={{ gap: 12 }}>
450
390
  {/* Individual Module Cards with Left Checkboxes */}
451
391
  <react_native_1.View style={{ gap: 10 }}>
452
392
  {allModules.map(moduleItem => {
@@ -462,23 +402,17 @@ const SettingsPanel = () => {
462
402
  ? `${logs.length} requests • Limit: ${maxNetworkLogs}`
463
403
  : moduleItem.key === 'logs'
464
404
  ? `${consoleLogs.length} logs • Limit: ${maxConsoleLogs}`
465
- : moduleItem.key === 'storage'
466
- ? `${storageEntries?.length || 0} keys AsyncStorage/MMKV`
467
- : moduleItem.key === 'device'
468
- ? `${deviceInfo?.platform ? deviceInfo.platform.toUpperCase() : 'Device'} Hermes ${deviceInfo?.isHermes ? 'Enabled' : 'Off'}`
469
- : moduleItem.key === 'audit'
470
- ? `${auditReport?.score != null ? `${auditReport.score}/100 Score Quality Audit` : 'Package & Health Audit'}`
471
- : moduleItem.key === 'performance'
472
- ? '60 FPS Target • Memory Telemetry'
473
- : moduleItem.key === 'bundle'
474
- ? 'Metro PackagerDependency Map'
475
- : moduleItem.key === 'crash'
476
- ? `${crashRecords?.length || 0} crashes recorded • Crash Guard`
477
- : moduleItem.key === 'analytics'
478
- ? `${analyticsEvents.length} events logged`
479
- : moduleItem.key === 'redux'
480
- ? `${Object.keys(reduxState || {}).length} slices • Depth: ${reduxExpandDepth}`
481
- : '';
405
+ : moduleItem.key === 'performance'
406
+ ? '60 FPS TargetMemory Telemetry'
407
+ : moduleItem.key === 'bundle'
408
+ ? 'Metro PackagerDependency Map'
409
+ : moduleItem.key === 'crash'
410
+ ? `${crashRecords?.length || 0} crashes recordedCrash Guard`
411
+ : moduleItem.key === 'analytics'
412
+ ? `${analyticsEvents.length} events logged`
413
+ : moduleItem.key === 'redux'
414
+ ? `${Object.keys(reduxState || {}).length} slices Depth: ${reduxExpandDepth}`
415
+ : '';
482
416
  return (<react_native_1.View key={moduleItem.key} style={{
483
417
  backgroundColor: AppColors_1.AppColors.primaryLight,
484
418
  borderRadius: 14,
@@ -587,15 +521,6 @@ const SettingsPanel = () => {
587
521
  {moduleItem.icon === 'analytics' && (<NetworkIcons_1.AnalyticsIcon color={isChecked
588
522
  ? AppColors_1.AppColors.purple
589
523
  : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
590
- {moduleItem.icon === 'storage' && (<NetworkIcons_1.DatabaseIcon color={isChecked
591
- ? AppColors_1.AppColors.purple
592
- : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
593
- {moduleItem.icon === 'device' && (<NetworkIcons_1.DevicePhoneIcon color={isChecked
594
- ? AppColors_1.AppColors.purple
595
- : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
596
- {moduleItem.icon === 'audit' && (<NetworkIcons_1.ShieldCheckIcon color={isChecked
597
- ? AppColors_1.AppColors.purple
598
- : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
599
524
  {moduleItem.icon === 'redux' && (<NetworkIcons_1.ReduxIcon color={isChecked
600
525
  ? AppColors_1.AppColors.purple
601
526
  : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
@@ -747,29 +672,29 @@ const SettingsPanel = () => {
747
672
  borderTopColor: AppColors_1.AppColors.dividerColor,
748
673
  }}>
749
674
  {/* Live Info Pill */}
750
- {Boolean(liveStats) ? (<react_native_1.View style={{
751
- flexDirection: 'row',
752
- alignItems: 'center',
753
- gap: 6,
754
- flex: 1,
755
- }}>
756
- <react_native_1.View style={{
757
- width: 6,
758
- height: 6,
759
- borderRadius: 3,
760
- backgroundColor: isChecked
761
- ? AppColors_1.AppColors.liveGreen
762
- : AppColors_1.AppColors.grayTextWeak,
763
- }}/>
764
- <react_native_1.Text style={{
765
- fontFamily: AppFonts_1.AppFonts.interMedium,
766
- fontSize: 11,
767
- color: AppColors_1.AppColors.grayText,
768
- lineHeight: 14,
769
- }}>
770
- {liveStats}
771
- </react_native_1.Text>
772
- </react_native_1.View>) : (<react_native_1.View style={{ flex: 1 }}/>)}
675
+ <react_native_1.View style={{
676
+ flexDirection: 'row',
677
+ alignItems: 'center',
678
+ gap: 6,
679
+ flex: 1,
680
+ }}>
681
+ <react_native_1.View style={{
682
+ width: 6,
683
+ height: 6,
684
+ borderRadius: 3,
685
+ backgroundColor: isChecked
686
+ ? AppColors_1.AppColors.liveGreen
687
+ : AppColors_1.AppColors.grayTextWeak,
688
+ }}/>
689
+ <react_native_1.Text style={{
690
+ fontFamily: AppFonts_1.AppFonts.interMedium,
691
+ fontSize: 11,
692
+ color: AppColors_1.AppColors.grayText,
693
+ lineHeight: 14,
694
+ }}>
695
+ {liveStats}
696
+ </react_native_1.Text>
697
+ </react_native_1.View>
773
698
 
774
699
  {/* Sleek Configure Button */}
775
700
  <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`Configure ${moduleItem.label} settings`} onPress={() => {
@@ -801,11 +726,8 @@ const SettingsPanel = () => {
801
726
  </react_native_1.View>);
802
727
  })}
803
728
  </react_native_1.View>
804
- </react_native_1.View>)}
805
729
 
806
- {/* ─── TAB 2: RAM & RESOURCE LIMITS ──────────────────────────────────── */}
807
- {settingsActiveSubTab === 'limits' && (<react_native_1.View style={{ gap: 14 }}>
808
- {/* Section 1: RAM-Based Auto Limits */}
730
+ {/* Section 3.5: RAM-Based Auto Limits */}
809
731
  <react_native_1.View style={{
810
732
  backgroundColor: AppColors_1.AppColors.primaryLight,
811
733
  borderRadius: 14,
@@ -822,7 +744,7 @@ const SettingsPanel = () => {
822
744
  color: AppColors_1.AppColors.grayTextWeak,
823
745
  letterSpacing: 0.8,
824
746
  }}>
825
- RAM-BASED AUTO TUNING
747
+ RAM-Based Auto Limits
826
748
  </react_native_1.Text>
827
749
 
828
750
  {/* Auto RAM Limit Toggle */}
@@ -1027,329 +949,8 @@ const SettingsPanel = () => {
1027
949
  </react_native_1.View>))}
1028
950
  </react_native_1.View>
1029
951
  </react_native_1.View>)}
1030
-
1031
- <react_native_1.View style={{ height: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
1032
-
1033
- {/* Floating Mini Performance HUD Toggle */}
1034
- {renderSettingRow({
1035
- icon: <NetworkIcons_1.PerformanceIcon color={AppColors_1.AppColors.purple} size={16}/>,
1036
- label: 'Show Mini Performance HUD Overlay',
1037
- description: 'Floating on-screen real-time FPS and Memory/Heap widget',
1038
- right: (<TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle mini performance HUD overlay" accessibilityState={{ checked: isPerformanceHudEnabled }} onPress={() => setIsPerformanceHudEnabled(prev => !prev)} style={{
1039
- width: 42,
1040
- height: 24,
1041
- borderRadius: 12,
1042
- backgroundColor: isPerformanceHudEnabled
1043
- ? AppColors_1.AppColors.purple
1044
- : AppColors_1.AppColors.grayBorderSecondary,
1045
- padding: 2,
1046
- justifyContent: 'center',
1047
- alignItems: isPerformanceHudEnabled
1048
- ? 'flex-end'
1049
- : 'flex-start',
1050
- }}>
1051
- <react_native_1.View style={{
1052
- width: 20,
1053
- height: 20,
1054
- borderRadius: 10,
1055
- backgroundColor: AppColors_1.AppColors.white,
1056
- shadowColor: AppColors_1.AppColors.black,
1057
- shadowOpacity: 0.18,
1058
- shadowRadius: 2,
1059
- shadowOffset: { width: 0, height: 1 },
1060
- }}/>
1061
- </TouchableScale_1.default>),
1062
- isLast: true,
1063
- })}
1064
- </react_native_1.View>
1065
-
1066
- {/* Section 2: Fine-Tuned Resource Limits */}
1067
- <react_native_1.View style={{
1068
- backgroundColor: AppColors_1.AppColors.primaryLight,
1069
- borderRadius: 14,
1070
- borderWidth: 1,
1071
- borderColor: AppColors_1.AppColors.grayBorderSecondary,
1072
- overflow: 'hidden',
1073
- padding: 14,
1074
- gap: 12,
1075
- }}>
1076
- <react_native_1.Text style={{
1077
- fontFamily: AppFonts_1.AppFonts.interBold,
1078
- fontSize: 11,
1079
- lineHeight: 14,
1080
- color: AppColors_1.AppColors.grayTextWeak,
1081
- letterSpacing: 0.8,
1082
- }}>
1083
- MANUAL RESOURCE THRESHOLDS
1084
- </react_native_1.Text>
1085
-
1086
- {renderSettingRow({
1087
- icon: <NetworkIcons_1.SignalIcon color={AppColors_1.AppColors.purple} size={16}/>,
1088
- label: 'Max Network / API Logs',
1089
- description: 'Maximum in-memory API requests tracked before rotation',
1090
- numericInput: {
1091
- value: maxNetworkLogs,
1092
- onChange: setMaxNetworkLogs,
1093
- min: 10,
1094
- max: 100,
1095
- placeholder: '10 - 100',
1096
- },
1097
- })}
1098
-
1099
- {renderSettingRow({
1100
- icon: <NetworkIcons_1.TerminalIcon color={AppColors_1.AppColors.purple} size={16}/>,
1101
- label: 'Max Console Logs',
1102
- description: 'Maximum log entries kept across info/warn/error streams',
1103
- numericInput: {
1104
- value: maxConsoleLogs,
1105
- onChange: setMaxConsoleLogs,
1106
- min: 20,
1107
- max: 300,
1108
- placeholder: '20 - 300',
1109
- },
1110
- })}
1111
-
1112
- {renderSettingRow({
1113
- icon: <NetworkIcons_1.AnalyticsIcon color={AppColors_1.AppColors.purple} size={16}/>,
1114
- label: 'Max Analytics Events',
1115
- description: 'Capacity for captured analytics payloads & telemetry pings',
1116
- numericInput: {
1117
- value: maxAnalyticsEventsLimit,
1118
- onChange: setMaxAnalyticsEventsLimit,
1119
- min: 20,
1120
- max: 200,
1121
- placeholder: '20 - 200',
1122
- },
1123
- })}
1124
-
1125
- {renderSettingRow({
1126
- icon: <NetworkIcons_1.CrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1127
- label: 'Max Crash Records',
1128
- description: 'Stored fatal exceptions and crash diagnostics logs',
1129
- numericInput: {
1130
- value: maxCrashLogs,
1131
- onChange: setMaxCrashLogs,
1132
- min: 5,
1133
- max: 50,
1134
- placeholder: '5 - 50',
1135
- },
1136
- isLast: true,
1137
- })}
1138
- </react_native_1.View>
1139
-
1140
- {/* Section 3: Storage & Cache Cleansing */}
1141
- <react_native_1.View style={{
1142
- backgroundColor: AppColors_1.AppColors.primaryLight,
1143
- borderRadius: 14,
1144
- borderWidth: 1,
1145
- borderColor: AppColors_1.AppColors.grayBorderSecondary,
1146
- overflow: 'hidden',
1147
- padding: 14,
1148
- gap: 12,
1149
- }}>
1150
- <react_native_1.Text style={{
1151
- fontFamily: AppFonts_1.AppFonts.interBold,
1152
- fontSize: 11,
1153
- lineHeight: 14,
1154
- color: AppColors_1.AppColors.grayTextWeak,
1155
- letterSpacing: 0.8,
1156
- }}>
1157
- STORAGE & CACHE CLEANSING
1158
- </react_native_1.Text>
1159
-
1160
- {renderSettingRow({
1161
- icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1162
- label: 'Clear All Network Logs',
1163
- description: `${logs.length} requests in memory`,
1164
- onPress: () => {
1165
- (0, networkLogger_1.clearNetworkLogs)();
1166
- setSelected(null);
1167
- react_native_1.Alert.alert(t('common.success'), 'Network logs cleared successfully.');
1168
- },
1169
- right: (<react_native_1.View style={{
1170
- paddingHorizontal: 10,
1171
- paddingVertical: 4,
1172
- borderRadius: 6,
1173
- backgroundColor: `${AppColors_1.AppColors.errorColor}14`,
1174
- borderWidth: 1,
1175
- borderColor: `${AppColors_1.AppColors.errorColor}33`,
1176
- }}>
1177
- <react_native_1.Text style={{
1178
- fontFamily: AppFonts_1.AppFonts.interBold,
1179
- fontSize: 11,
1180
- color: AppColors_1.AppColors.errorColor,
1181
- }}>
1182
- Clear ({logs.length})
1183
- </react_native_1.Text>
1184
- </react_native_1.View>),
1185
- })}
1186
-
1187
- {renderSettingRow({
1188
- icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1189
- label: 'Clear All Console Logs',
1190
- description: `${consoleLogs.length} logs in memory`,
1191
- onPress: () => {
1192
- (0, consoleLogger_1.clearConsoleLogs)();
1193
- react_native_1.Alert.alert(t('common.success'), 'Console logs cleared successfully.');
1194
- },
1195
- right: (<react_native_1.View style={{
1196
- paddingHorizontal: 10,
1197
- paddingVertical: 4,
1198
- borderRadius: 6,
1199
- backgroundColor: `${AppColors_1.AppColors.errorColor}14`,
1200
- borderWidth: 1,
1201
- borderColor: `${AppColors_1.AppColors.errorColor}33`,
1202
- }}>
1203
- <react_native_1.Text style={{
1204
- fontFamily: AppFonts_1.AppFonts.interBold,
1205
- fontSize: 11,
1206
- color: AppColors_1.AppColors.errorColor,
1207
- }}>
1208
- Clear ({consoleLogs.length})
1209
- </react_native_1.Text>
1210
- </react_native_1.View>),
1211
- })}
1212
-
1213
- {renderSettingRow({
1214
- icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1215
- label: 'Clear Analytics Events',
1216
- description: `${analyticsEvents.length} events recorded`,
1217
- onPress: () => {
1218
- (0, analyticsLogger_1.clearAnalyticsEvents)();
1219
- setSelectedEvent(null);
1220
- react_native_1.Alert.alert(t('common.success'), 'Analytics events cleared successfully.');
1221
- },
1222
- right: (<react_native_1.View style={{
1223
- paddingHorizontal: 10,
1224
- paddingVertical: 4,
1225
- borderRadius: 6,
1226
- backgroundColor: `${AppColors_1.AppColors.errorColor}14`,
1227
- borderWidth: 1,
1228
- borderColor: `${AppColors_1.AppColors.errorColor}33`,
1229
- }}>
1230
- <react_native_1.Text style={{
1231
- fontFamily: AppFonts_1.AppFonts.interBold,
1232
- fontSize: 11,
1233
- color: AppColors_1.AppColors.errorColor,
1234
- }}>
1235
- Clear ({analyticsEvents.length})
1236
- </react_native_1.Text>
1237
- </react_native_1.View>),
1238
- })}
1239
-
1240
- {renderSettingRow({
1241
- icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1242
- label: 'Clear Crash Logs',
1243
- description: `${crashRecords.length} crash dumps recorded`,
1244
- onPress: () => {
1245
- (0, crashHandler_1.clearCrashRecords)();
1246
- react_native_1.Alert.alert(t('common.success'), 'Crash records cleared successfully.');
1247
- },
1248
- isLast: true,
1249
- right: (<react_native_1.View style={{
1250
- paddingHorizontal: 10,
1251
- paddingVertical: 4,
1252
- borderRadius: 6,
1253
- backgroundColor: `${AppColors_1.AppColors.errorColor}14`,
1254
- borderWidth: 1,
1255
- borderColor: `${AppColors_1.AppColors.errorColor}33`,
1256
- }}>
1257
- <react_native_1.Text style={{
1258
- fontFamily: AppFonts_1.AppFonts.interBold,
1259
- fontSize: 11,
1260
- color: AppColors_1.AppColors.errorColor,
1261
- }}>
1262
- Clear ({crashRecords.length})
1263
- </react_native_1.Text>
1264
- </react_native_1.View>),
1265
- })}
1266
952
  </react_native_1.View>
1267
- </react_native_1.View>)}
1268
-
1269
- {/* ─── TAB 3: UI & APPEARANCE ────────────────────────────────────────── */}
1270
- {settingsActiveSubTab === 'ui' && (<react_native_1.View style={{ gap: 14 }}>
1271
- {/* Section 0: Interactive Walkthrough Tour */}
1272
- <react_native_1.View style={{
1273
- backgroundColor: AppColors_1.AppColors.primaryLight,
1274
- borderRadius: 14,
1275
- borderWidth: 1,
1276
- borderColor: AppColors_1.AppColors.grayBorderSecondary,
1277
- overflow: 'hidden',
1278
- padding: 14,
1279
- gap: 12,
1280
- }}>
1281
- <react_native_1.Text style={{
1282
- fontFamily: AppFonts_1.AppFonts.interBold,
1283
- fontSize: 11,
1284
- lineHeight: 14,
1285
- color: AppColors_1.AppColors.grayTextWeak,
1286
- letterSpacing: 0.8,
1287
- }}>
1288
- ONBOARDING & GUIDE
1289
- </react_native_1.Text>
1290
-
1291
- <react_native_1.View style={{
1292
- flexDirection: 'row',
1293
- alignItems: 'center',
1294
- justifyContent: 'space-between',
1295
- gap: 10,
1296
- }}>
1297
- <react_native_1.View style={{
1298
- flexDirection: 'row',
1299
- alignItems: 'center',
1300
- gap: 10,
1301
- flex: 1,
1302
- }}>
1303
- <react_native_1.View style={{
1304
- width: 34,
1305
- height: 34,
1306
- borderRadius: 9,
1307
- backgroundColor: `${AppColors_1.AppColors.purple}16`,
1308
- alignItems: 'center',
1309
- justifyContent: 'center',
1310
- }}>
1311
- <NetworkIcons_1.GlobeIcon color={AppColors_1.AppColors.purple} size={16}/>
1312
- </react_native_1.View>
1313
- <react_native_1.View style={{ flex: 1 }}>
1314
- <react_native_1.Text style={{
1315
- fontFamily: AppFonts_1.AppFonts.interBold,
1316
- fontSize: 13.5,
1317
- lineHeight: 18,
1318
- color: AppColors_1.AppColors.primaryBlack,
1319
- }}>
1320
- First-Time Walkthrough
1321
- </react_native_1.Text>
1322
- <react_native_1.Text style={{
1323
- fontFamily: AppFonts_1.AppFonts.interRegular,
1324
- fontSize: 11.5,
1325
- color: AppColors_1.AppColors.grayTextWeak,
1326
- marginTop: 1,
1327
- lineHeight: 16,
1328
- }}>
1329
- Explore features, gestures & developer tools
1330
- </react_native_1.Text>
1331
- </react_native_1.View>
1332
- </react_native_1.View>
1333
-
1334
- <TouchableScale_1.default style={{
1335
- backgroundColor: `${AppColors_1.AppColors.purple}14`,
1336
- borderColor: `${AppColors_1.AppColors.purple}30`,
1337
- borderWidth: 1,
1338
- paddingHorizontal: 12,
1339
- paddingVertical: 7,
1340
- borderRadius: 8,
1341
- }} onPress={openWalkthrough} hitSlop={8}>
1342
- <react_native_1.Text style={{
1343
- fontFamily: AppFonts_1.AppFonts.interBold,
1344
- fontSize: 12,
1345
- color: AppColors_1.AppColors.purple,
1346
- }}>
1347
- Start Tour →
1348
- </react_native_1.Text>
1349
- </TouchableScale_1.default>
1350
- </react_native_1.View>
1351
- </react_native_1.View>
1352
-
953
+ </react_native_1.View>) : (<react_native_1.View style={{ gap: 14 }}>
1353
954
  {/* Section 1: Appearance */}
1354
955
  <react_native_1.View style={{
1355
956
  backgroundColor: AppColors_1.AppColors.primaryLight,