react-native-inapp-inspector 2.0.4 → 2.0.6

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 (108) hide show
  1. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  2. package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
  3. package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
  4. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  5. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  6. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  7. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  8. package/android/.gradle/8.9/gc.properties +0 -0
  9. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  10. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  11. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  12. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  13. package/android/.gradle/9.2.0/gc.properties +0 -0
  14. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  15. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  16. package/android/.gradle/vcs-1/gc.properties +0 -0
  17. package/android/build/reports/problems/problems-report.html +659 -0
  18. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +11 -0
  19. package/dist/commonjs/components/Inspector/AuditTab.d.ts +3 -0
  20. package/dist/commonjs/components/Inspector/AuditTab.js +741 -0
  21. package/dist/commonjs/components/Inspector/DeviceTab.d.ts +3 -0
  22. package/dist/commonjs/components/Inspector/DeviceTab.js +717 -0
  23. package/dist/commonjs/components/Inspector/InspectorHeader.js +115 -75
  24. package/dist/commonjs/components/Inspector/MainScreen.js +16 -2
  25. package/dist/commonjs/components/Inspector/NetworkDetail.js +15 -0
  26. package/dist/commonjs/components/Inspector/NetworkTab.js +317 -12
  27. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +88 -39
  28. package/dist/commonjs/components/Inspector/PerformanceHud.d.ts +7 -0
  29. package/dist/commonjs/components/Inspector/PerformanceHud.js +210 -0
  30. package/dist/commonjs/components/Inspector/PerformanceTab.js +30 -18
  31. package/dist/commonjs/components/Inspector/RequestReplayModal.d.ts +9 -0
  32. package/dist/commonjs/components/Inspector/RequestReplayModal.js +792 -0
  33. package/dist/commonjs/components/Inspector/RequestReplayView.d.ts +8 -0
  34. package/dist/commonjs/components/Inspector/RequestReplayView.js +871 -0
  35. package/dist/commonjs/components/Inspector/SettingsPanel.js +847 -370
  36. package/dist/commonjs/components/Inspector/StorageTab.d.ts +3 -0
  37. package/dist/commonjs/components/Inspector/StorageTab.js +610 -0
  38. package/dist/commonjs/components/Inspector/TabBar.js +23 -2
  39. package/dist/commonjs/components/Inspector/UpdateAvailableModal.d.ts +8 -0
  40. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +469 -0
  41. package/dist/commonjs/components/NetworkIcons.d.ts +12 -0
  42. package/dist/commonjs/components/NetworkIcons.js +72 -3
  43. package/dist/commonjs/constants/version.d.ts +1 -1
  44. package/dist/commonjs/constants/version.js +1 -1
  45. package/dist/commonjs/customHooks/storageInspector.d.ts +13 -0
  46. package/dist/commonjs/customHooks/storageInspector.js +179 -0
  47. package/dist/commonjs/helpers/deviceInfo.d.ts +4 -0
  48. package/dist/commonjs/helpers/deviceInfo.js +94 -0
  49. package/dist/commonjs/helpers/index.d.ts +2 -0
  50. package/dist/commonjs/helpers/index.js +12 -1
  51. package/dist/commonjs/helpers/packageAuditor.d.ts +5 -0
  52. package/dist/commonjs/helpers/packageAuditor.js +182 -0
  53. package/dist/commonjs/helpers/searchQueryParser.d.ts +8 -3
  54. package/dist/commonjs/helpers/searchQueryParser.js +85 -31
  55. package/dist/commonjs/helpers/telemetry.js +4 -4
  56. package/dist/commonjs/i18n/locales/en.json +3 -2
  57. package/dist/commonjs/index.d.ts +1 -0
  58. package/dist/commonjs/index.js +171 -16
  59. package/dist/commonjs/native/NativeInspector.d.ts +1 -0
  60. package/dist/commonjs/types/enums.d.ts +7 -0
  61. package/dist/commonjs/types/enums.js +7 -0
  62. package/dist/commonjs/types/interfaces.d.ts +82 -0
  63. package/dist/esm/components/Inspector/AuditTab.d.ts +3 -0
  64. package/dist/esm/components/Inspector/AuditTab.js +702 -0
  65. package/dist/esm/components/Inspector/DeviceTab.d.ts +3 -0
  66. package/dist/esm/components/Inspector/DeviceTab.js +678 -0
  67. package/dist/esm/components/Inspector/InspectorHeader.js +115 -75
  68. package/dist/esm/components/Inspector/MainScreen.js +16 -2
  69. package/dist/esm/components/Inspector/NetworkDetail.js +16 -1
  70. package/dist/esm/components/Inspector/NetworkTab.js +317 -12
  71. package/dist/esm/components/Inspector/NpmUpdateToast.js +88 -39
  72. package/dist/esm/components/Inspector/PerformanceHud.d.ts +7 -0
  73. package/dist/esm/components/Inspector/PerformanceHud.js +170 -0
  74. package/dist/esm/components/Inspector/PerformanceTab.js +31 -19
  75. package/dist/esm/components/Inspector/RequestReplayModal.d.ts +9 -0
  76. package/dist/esm/components/Inspector/RequestReplayModal.js +752 -0
  77. package/dist/esm/components/Inspector/RequestReplayView.d.ts +8 -0
  78. package/dist/esm/components/Inspector/RequestReplayView.js +831 -0
  79. package/dist/esm/components/Inspector/SettingsPanel.js +848 -371
  80. package/dist/esm/components/Inspector/StorageTab.d.ts +3 -0
  81. package/dist/esm/components/Inspector/StorageTab.js +571 -0
  82. package/dist/esm/components/Inspector/TabBar.js +24 -3
  83. package/dist/esm/components/Inspector/UpdateAvailableModal.d.ts +8 -0
  84. package/dist/esm/components/Inspector/UpdateAvailableModal.js +432 -0
  85. package/dist/esm/components/NetworkIcons.d.ts +12 -0
  86. package/dist/esm/components/NetworkIcons.js +57 -0
  87. package/dist/esm/constants/version.d.ts +1 -1
  88. package/dist/esm/constants/version.js +1 -1
  89. package/dist/esm/customHooks/storageInspector.d.ts +13 -0
  90. package/dist/esm/customHooks/storageInspector.js +170 -0
  91. package/dist/esm/helpers/deviceInfo.d.ts +4 -0
  92. package/dist/esm/helpers/deviceInfo.js +89 -0
  93. package/dist/esm/helpers/index.d.ts +2 -0
  94. package/dist/esm/helpers/index.js +10 -0
  95. package/dist/esm/helpers/packageAuditor.d.ts +5 -0
  96. package/dist/esm/helpers/packageAuditor.js +173 -0
  97. package/dist/esm/helpers/searchQueryParser.d.ts +8 -3
  98. package/dist/esm/helpers/searchQueryParser.js +85 -31
  99. package/dist/esm/helpers/telemetry.js +4 -4
  100. package/dist/esm/i18n/locales/en.json +3 -2
  101. package/dist/esm/index.d.ts +1 -0
  102. package/dist/esm/index.js +167 -15
  103. package/dist/esm/native/NativeInspector.d.ts +1 -0
  104. package/dist/esm/types/enums.d.ts +7 -0
  105. package/dist/esm/types/enums.js +7 -0
  106. package/dist/esm/types/interfaces.d.ts +82 -0
  107. package/ios/NetworkInspectorModule.mm +12 -5
  108. package/package.json +4 -1
@@ -57,9 +57,12 @@ const analyticsLogger_2 = require("../../customHooks/analyticsLogger");
57
57
  const i18n_1 = require("../../i18n");
58
58
  const telemetry_1 = require("../../helpers/telemetry");
59
59
  const NetworkIcons_1 = require("../NetworkIcons");
60
+ const constants_1 = require("../../constants");
61
+ const helpers_1 = require("../../helpers");
62
+ const toast_1 = require("../../helpers/toast");
60
63
  const SettingsPanel = () => {
61
64
  const { t } = (0, i18n_1.useTranslation)();
62
- 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, } = (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, isPerformanceHudEnabled, setIsPerformanceHudEnabled, reduxAutoRefresh, setReduxAutoRefreshState, reduxExpandDepth, setReduxExpandDepth, switchActiveTab, setSelected, setSelectedEvent, setReduxState, crashRecords, maxCrashLogs, setMaxCrashLogs, updateAvailable, latestNpmVersion, } = (0, InspectorContext_1.useInspector)();
63
66
  const [stagedHeight, setStagedHeight] = (0, react_1.useState)(modalHeightPercent);
64
67
  const [telemetryConsent, setTelemetryConsentState] = (0, react_1.useState)(true);
65
68
  (0, react_1.useEffect)(() => {
@@ -98,6 +101,27 @@ const SettingsPanel = () => {
98
101
  icon: 'logs',
99
102
  desc: 'Terminal console logs, warnings, errors & stack traces',
100
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
+ },
101
125
  {
102
126
  key: 'performance',
103
127
  label: 'Performance Tracker',
@@ -140,6 +164,9 @@ const SettingsPanel = () => {
140
164
  logs: Boolean(tabVisibility?.logs),
141
165
  analytics: Boolean(tabVisibility?.analytics),
142
166
  redux: Boolean(tabVisibility?.redux),
167
+ storage: Boolean(tabVisibility?.storage),
168
+ device: Boolean(tabVisibility?.device),
169
+ audit: Boolean(tabVisibility?.audit),
143
170
  bundle: Boolean(tabVisibility?.bundle),
144
171
  performance: Boolean(tabVisibility?.performance),
145
172
  crash: Boolean(tabVisibility?.crash),
@@ -151,6 +178,9 @@ const SettingsPanel = () => {
151
178
  logs: Boolean(tabVisibility?.logs),
152
179
  analytics: Boolean(tabVisibility?.analytics),
153
180
  redux: Boolean(tabVisibility?.redux),
181
+ storage: Boolean(tabVisibility?.storage),
182
+ device: Boolean(tabVisibility?.device),
183
+ audit: Boolean(tabVisibility?.audit),
154
184
  bundle: Boolean(tabVisibility?.bundle),
155
185
  performance: Boolean(tabVisibility?.performance),
156
186
  crash: Boolean(tabVisibility?.crash),
@@ -258,13 +288,15 @@ const SettingsPanel = () => {
258
288
  MAX
259
289
  </react_native_1.Text>
260
290
  </react_native_1.View>
261
- {opts.numericInput.min !== undefined || opts.numericInput.max !== undefined ? (<react_native_1.Text style={{
291
+ {opts.numericInput.min !== undefined ||
292
+ opts.numericInput.max !== undefined ? (<react_native_1.Text style={{
262
293
  fontFamily: AppFonts_1.AppFonts.interRegular,
263
294
  fontSize: 10,
264
295
  lineHeight: 13,
265
296
  color: AppColors_1.AppColors.grayTextWeak,
266
297
  }}>
267
- Range: {opts.numericInput.min ?? 1} - {opts.numericInput.max ?? '∞'}
298
+ Range: {opts.numericInput.min ?? 1} -{' '}
299
+ {opts.numericInput.max ?? '∞'}
268
300
  </react_native_1.Text>) : null}
269
301
  </react_native_1.View>)}
270
302
  {opts.picker && (<react_native_1.View style={{
@@ -307,8 +339,8 @@ const SettingsPanel = () => {
307
339
  backgroundColor: AppColors_1.AppColors.grayBackground,
308
340
  }}>
309
341
  <react_native_1.ScrollView style={{ flex: 1 }} contentContainerStyle={{ padding: 16, paddingBottom: 100, gap: 14 }} showsVerticalScrollIndicator={false}>
310
- {/* Segmented Top Navigation Sub-Tabs */}
311
- <react_native_1.View style={{
342
+ {/* Segmented Top Navigation Sub-Tabs */}
343
+ <react_native_1.View style={{
312
344
  flexDirection: 'row',
313
345
  backgroundColor: AppColors_1.AppColors.primaryLight,
314
346
  borderRadius: 12,
@@ -320,71 +352,104 @@ const SettingsPanel = () => {
320
352
  shadowRadius: 4,
321
353
  shadowOffset: { width: 0, height: 2 },
322
354
  }}>
323
- <TouchableScale_1.default accessible={true} accessibilityRole="tab" accessibilityLabel={t('settings.modulesAndTools')} accessibilityState={{ selected: settingsActiveSubTab === 'module' }} onPress={() => {
355
+ {/* Tab 1: Modules & Tabs */}
356
+ <TouchableScale_1.default accessible={true} accessibilityRole="tab" accessibilityLabel={t('settings.modulesAndTools')} accessibilityState={{ selected: settingsActiveSubTab === 'module' }} onPress={() => {
324
357
  (0, InspectorContext_1.animateNextLayout)();
325
358
  setSettingsActiveSubTab('module');
326
359
  }} style={{
327
360
  flex: 1,
328
- paddingVertical: 9,
361
+ paddingVertical: 8,
329
362
  flexDirection: 'row',
330
363
  alignItems: 'center',
331
364
  justifyContent: 'center',
332
- gap: 6,
365
+ gap: 5,
333
366
  borderRadius: 9,
334
367
  backgroundColor: settingsActiveSubTab === 'module'
335
368
  ? AppColors_1.AppColors.purple
336
369
  : 'transparent',
337
370
  }}>
338
- <NetworkIcons_1.LayersIcon color={settingsActiveSubTab === 'module'
371
+ <NetworkIcons_1.LayersIcon color={settingsActiveSubTab === 'module'
339
372
  ? AppColors_1.AppColors.white
340
- : AppColors_1.AppColors.grayText} size={13}/>
341
- <react_native_1.Text style={{
373
+ : AppColors_1.AppColors.grayText} size={12.5}/>
374
+ <react_native_1.Text style={{
342
375
  fontFamily: AppFonts_1.AppFonts.interBold,
343
- fontSize: 12.5,
344
- lineHeight: 16,
376
+ fontSize: 11.5,
377
+ lineHeight: 15,
345
378
  color: settingsActiveSubTab === 'module'
346
379
  ? AppColors_1.AppColors.white
347
380
  : AppColors_1.AppColors.grayText,
348
381
  }}>
349
- {t('settings.modulesAndTools')}
350
- </react_native_1.Text>
351
- </TouchableScale_1.default>
382
+ {t('settings.modulesAndTools')}
383
+ </react_native_1.Text>
384
+ </TouchableScale_1.default>
385
+
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>
352
416
 
353
- <TouchableScale_1.default accessible={true} accessibilityRole="tab" accessibilityLabel={t('settings.uiPreferences')} accessibilityState={{ selected: settingsActiveSubTab === 'ui' }} onPress={() => {
417
+ {/* Tab 3: UI & Appearance */}
418
+ <TouchableScale_1.default accessible={true} accessibilityRole="tab" accessibilityLabel={t('settings.uiPreferences')} accessibilityState={{ selected: settingsActiveSubTab === 'ui' }} onPress={() => {
354
419
  (0, InspectorContext_1.animateNextLayout)();
355
420
  setSettingsActiveSubTab('ui');
356
421
  }} style={{
357
422
  flex: 1,
358
- paddingVertical: 9,
423
+ paddingVertical: 8,
359
424
  flexDirection: 'row',
360
425
  alignItems: 'center',
361
426
  justifyContent: 'center',
362
- gap: 6,
427
+ gap: 5,
363
428
  borderRadius: 9,
364
429
  backgroundColor: settingsActiveSubTab === 'ui'
365
430
  ? AppColors_1.AppColors.purple
366
431
  : 'transparent',
367
432
  }}>
368
- <NetworkIcons_1.ScreenIcon color={settingsActiveSubTab === 'ui'
433
+ <NetworkIcons_1.ScreenIcon color={settingsActiveSubTab === 'ui'
369
434
  ? AppColors_1.AppColors.white
370
- : AppColors_1.AppColors.grayText} size={13}/>
371
- <react_native_1.Text style={{
435
+ : AppColors_1.AppColors.grayText} size={12.5}/>
436
+ <react_native_1.Text style={{
372
437
  fontFamily: AppFonts_1.AppFonts.interBold,
373
- fontSize: 12.5,
374
- lineHeight: 16,
438
+ fontSize: 11.5,
439
+ lineHeight: 15,
375
440
  color: settingsActiveSubTab === 'ui'
376
441
  ? AppColors_1.AppColors.white
377
442
  : AppColors_1.AppColors.grayText,
378
443
  }}>
379
- {t('settings.uiPreferences')}
380
- </react_native_1.Text>
381
- </TouchableScale_1.default>
382
- </react_native_1.View>
444
+ {t('settings.uiPreferences')}
445
+ </react_native_1.Text>
446
+ </TouchableScale_1.default>
447
+ </react_native_1.View>
383
448
 
384
- {settingsActiveSubTab === 'module' ? (<react_native_1.View style={{ gap: 12 }}>
385
- {/* Individual Module Cards with Left Checkboxes */}
386
- <react_native_1.View style={{ gap: 10 }}>
387
- {allModules.map(moduleItem => {
449
+ {settingsActiveSubTab === 'module' && (<react_native_1.View style={{ gap: 12 }}>
450
+ {/* Individual Module Cards with Left Checkboxes */}
451
+ <react_native_1.View style={{ gap: 10 }}>
452
+ {allModules.map(moduleItem => {
388
453
  const isReduxAvail = (0, reduxLogger_1.isReduxConnected)();
389
454
  const isAnalyticsAvail = (0, analyticsLogger_2.isAnalyticsConnected)();
390
455
  const isUnavailable = (moduleItem.key === 'redux' && !isReduxAvail) ||
@@ -422,14 +487,14 @@ const SettingsPanel = () => {
422
487
  shadowRadius: 5,
423
488
  shadowOffset: { width: 0, height: 2 },
424
489
  }}>
425
- {/* Top Row: [Checkbox] -> [Icon Tile] -> [Title & Subtitle] */}
426
- <react_native_1.View style={{
490
+ {/* Top Row: [Checkbox] -> [Icon Tile] -> [Title & Subtitle] */}
491
+ <react_native_1.View style={{
427
492
  flexDirection: 'row',
428
493
  alignItems: 'flex-start',
429
494
  gap: 10,
430
495
  }}>
431
- {/* 1. Checkbox on the Left */}
432
- <TouchableScale_1.default accessible={true} accessibilityRole="checkbox" accessibilityLabel={`Select ${moduleItem.label}`} accessibilityState={{
496
+ {/* 1. Checkbox on the Left */}
497
+ <TouchableScale_1.default accessible={true} accessibilityRole="checkbox" accessibilityLabel={`Select ${moduleItem.label}`} accessibilityState={{
433
498
  checked: isChecked,
434
499
  disabled: isLocked,
435
500
  }} disabled={isLocked} onPress={() => {
@@ -462,14 +527,14 @@ const SettingsPanel = () => {
462
527
  shadowRadius: 2,
463
528
  elevation: isChecked ? 2 : 0,
464
529
  }}>
465
- {moduleItem.key === 'apis' ? (<NetworkIcons_1.CheckIcon size={12} color={AppColors_1.AppColors.blue500}/>) : isChecked ? (<NetworkIcons_1.CheckIcon size={12} color={AppColors_1.AppColors.white}/>) : isLocked ? (<react_native_svg_1.default width={10} height={10} viewBox="0 0 24 24" fill="none">
466
- <react_native_svg_1.Path d="M7 10V7a5 5 0 0 1 10 0v3" stroke={AppColors_1.AppColors.grayText} strokeWidth="2.2" strokeLinecap="round"/>
467
- <react_native_svg_1.Path d="M5 10h14v9a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z" fill={AppColors_1.AppColors.grayText}/>
468
- </react_native_svg_1.default>) : null}
469
- </TouchableScale_1.default>
530
+ {moduleItem.key === 'apis' ? (<NetworkIcons_1.CheckIcon size={12} color={AppColors_1.AppColors.blue500}/>) : isChecked ? (<NetworkIcons_1.CheckIcon size={12} color={AppColors_1.AppColors.white}/>) : isLocked ? (<react_native_svg_1.default width={10} height={10} viewBox="0 0 24 24" fill="none">
531
+ <react_native_svg_1.Path d="M7 10V7a5 5 0 0 1 10 0v3" stroke={AppColors_1.AppColors.grayText} strokeWidth="2.2" strokeLinecap="round"/>
532
+ <react_native_svg_1.Path d="M5 10h14v9a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z" fill={AppColors_1.AppColors.grayText}/>
533
+ </react_native_svg_1.default>) : null}
534
+ </TouchableScale_1.default>
470
535
 
471
- {/* 2. Middle Tap Zone: Icon + Title & Desc */}
472
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`${moduleItem.label} settings`} disabled={isUnavailable} onPress={() => {
536
+ {/* 2. Middle Tap Zone: Icon + Title & Desc */}
537
+ <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`${moduleItem.label} settings`} disabled={isUnavailable} onPress={() => {
473
538
  (0, InspectorContext_1.animateNextLayout)();
474
539
  setSettingsPage(moduleItem.key);
475
540
  }} style={{
@@ -478,8 +543,8 @@ const SettingsPanel = () => {
478
543
  alignItems: 'flex-start',
479
544
  gap: 10,
480
545
  }}>
481
- {/* Icon Tile */}
482
- <react_native_1.View style={{
546
+ {/* Icon Tile */}
547
+ <react_native_1.View style={{
483
548
  width: 36,
484
549
  height: 36,
485
550
  borderRadius: 10,
@@ -498,38 +563,47 @@ const SettingsPanel = () => {
498
563
  justifyContent: 'center',
499
564
  marginTop: 1,
500
565
  }}>
501
- {moduleItem.icon === 'apis' && (<NetworkIcons_1.SignalIcon color={isChecked
566
+ {moduleItem.icon === 'apis' && (<NetworkIcons_1.SignalIcon color={isChecked
502
567
  ? AppColors_1.AppColors.purple
503
568
  : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
504
- {moduleItem.icon === 'logs' && (<NetworkIcons_1.TerminalIcon color={isChecked
569
+ {moduleItem.icon === 'logs' && (<NetworkIcons_1.TerminalIcon color={isChecked
505
570
  ? AppColors_1.AppColors.purple
506
571
  : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
507
- {moduleItem.icon === 'performance' && (<NetworkIcons_1.PerformanceIcon color={isChecked
572
+ {moduleItem.icon === 'performance' && (<NetworkIcons_1.PerformanceIcon color={isChecked
508
573
  ? AppColors_1.AppColors.purple
509
574
  : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
510
- {moduleItem.icon === 'bundle' && (<NetworkIcons_1.PackageIcon color={isChecked
575
+ {moduleItem.icon === 'bundle' && (<NetworkIcons_1.PackageIcon color={isChecked
511
576
  ? AppColors_1.AppColors.purple
512
577
  : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
513
- {moduleItem.icon === 'crash' && (<NetworkIcons_1.CrashIcon color={isChecked
578
+ {moduleItem.icon === 'crash' && (<NetworkIcons_1.CrashIcon color={isChecked
514
579
  ? AppColors_1.AppColors.purple
515
580
  : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
516
- {moduleItem.icon === 'analytics' && (<NetworkIcons_1.AnalyticsIcon color={isChecked
581
+ {moduleItem.icon === 'analytics' && (<NetworkIcons_1.AnalyticsIcon color={isChecked
517
582
  ? AppColors_1.AppColors.purple
518
583
  : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
519
- {moduleItem.icon === 'redux' && (<NetworkIcons_1.ReduxIcon color={isChecked
584
+ {moduleItem.icon === 'storage' && (<NetworkIcons_1.DatabaseIcon color={isChecked
520
585
  ? AppColors_1.AppColors.purple
521
586
  : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
522
- </react_native_1.View>
587
+ {moduleItem.icon === 'device' && (<NetworkIcons_1.DevicePhoneIcon color={isChecked
588
+ ? AppColors_1.AppColors.purple
589
+ : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
590
+ {moduleItem.icon === 'audit' && (<NetworkIcons_1.ShieldCheckIcon color={isChecked
591
+ ? AppColors_1.AppColors.purple
592
+ : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
593
+ {moduleItem.icon === 'redux' && (<NetworkIcons_1.ReduxIcon color={isChecked
594
+ ? AppColors_1.AppColors.purple
595
+ : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
596
+ </react_native_1.View>
523
597
 
524
- {/* Titles & Status Pill */}
525
- <react_native_1.View style={{ flex: 1, gap: 2 }}>
526
- <react_native_1.View style={{
598
+ {/* Titles & Status Pill */}
599
+ <react_native_1.View style={{ flex: 1, gap: 2 }}>
600
+ <react_native_1.View style={{
527
601
  flexDirection: 'row',
528
602
  alignItems: 'center',
529
603
  gap: 6,
530
604
  flexWrap: 'wrap',
531
605
  }}>
532
- <react_native_1.Text style={{
606
+ <react_native_1.Text style={{
533
607
  fontFamily: AppFonts_1.AppFonts.interBold,
534
608
  fontSize: 14,
535
609
  lineHeight: 18,
@@ -537,11 +611,11 @@ const SettingsPanel = () => {
537
611
  ? AppColors_1.AppColors.grayText
538
612
  : AppColors_1.AppColors.primaryBlack,
539
613
  }}>
540
- {moduleItem.label}
541
- </react_native_1.Text>
614
+ {moduleItem.label}
615
+ </react_native_1.Text>
542
616
 
543
- {/* Default Startup Tab Badge */}
544
- {moduleItem.key === defaultTab &&
617
+ {/* Default Startup Tab Badge */}
618
+ {moduleItem.key === defaultTab &&
545
619
  !isUnavailable && (<react_native_1.View style={{
546
620
  flexDirection: 'row',
547
621
  alignItems: 'center',
@@ -553,25 +627,25 @@ const SettingsPanel = () => {
553
627
  borderColor: `${AppColors_1.AppColors.purple}2E`,
554
628
  gap: 3,
555
629
  }}>
556
- <react_native_1.View style={{
630
+ <react_native_1.View style={{
557
631
  width: 4,
558
632
  height: 4,
559
633
  borderRadius: 2,
560
634
  backgroundColor: AppColors_1.AppColors.purple,
561
635
  }}/>
562
- <react_native_1.Text style={{
636
+ <react_native_1.Text style={{
563
637
  fontFamily: AppFonts_1.AppFonts.interBold,
564
638
  fontSize: 8,
565
639
  lineHeight: 11,
566
640
  color: AppColors_1.AppColors.purple,
567
641
  letterSpacing: 0.4,
568
642
  }}>
569
- {t('settings.defaultBadge')}
570
- </react_native_1.Text>
571
- </react_native_1.View>)}
643
+ {t('settings.defaultBadge')}
644
+ </react_native_1.Text>
645
+ </react_native_1.View>)}
572
646
 
573
- {/* Status Pill */}
574
- {moduleItem.key === 'apis' ? (<react_native_1.View style={{
647
+ {/* Status Pill */}
648
+ {moduleItem.key === 'apis' ? (<react_native_1.View style={{
575
649
  backgroundColor: `${AppColors_1.AppColors.blue500}14`,
576
650
  borderRadius: 4,
577
651
  paddingHorizontal: 5,
@@ -579,16 +653,16 @@ const SettingsPanel = () => {
579
653
  borderWidth: 1,
580
654
  borderColor: `${AppColors_1.AppColors.blue500}33`,
581
655
  }}>
582
- <react_native_1.Text style={{
656
+ <react_native_1.Text style={{
583
657
  fontFamily: AppFonts_1.AppFonts.interBold,
584
658
  fontSize: 8,
585
659
  lineHeight: 11,
586
660
  color: AppColors_1.AppColors.blue500,
587
661
  letterSpacing: 0.3,
588
662
  }}>
589
- {t('settings.coreBadge')}
590
- </react_native_1.Text>
591
- </react_native_1.View>) : isUnavailable ? (<react_native_1.View style={{
663
+ {t('settings.coreBadge')}
664
+ </react_native_1.Text>
665
+ </react_native_1.View>) : isUnavailable ? (<react_native_1.View style={{
592
666
  backgroundColor: `${AppColors_1.AppColors.amber500}18`,
593
667
  borderRadius: 4,
594
668
  paddingHorizontal: 5,
@@ -596,18 +670,18 @@ const SettingsPanel = () => {
596
670
  borderWidth: 1,
597
671
  borderColor: `${AppColors_1.AppColors.amber500}35`,
598
672
  }}>
599
- <react_native_1.Text style={{
673
+ <react_native_1.Text style={{
600
674
  fontFamily: AppFonts_1.AppFonts.interBold,
601
675
  fontSize: 8,
602
676
  lineHeight: 11,
603
677
  color: AppColors_1.AppColors.amber700,
604
678
  letterSpacing: 0.3,
605
679
  }}>
606
- {moduleItem.key === 'redux'
680
+ {moduleItem.key === 'redux'
607
681
  ? t('settings.notConnectedBadge')
608
682
  : t('settings.notDetectedBadge')}
609
- </react_native_1.Text>
610
- </react_native_1.View>) : isChecked ? (<react_native_1.View style={{
683
+ </react_native_1.Text>
684
+ </react_native_1.View>) : isChecked ? (<react_native_1.View style={{
611
685
  backgroundColor: `${AppColors_1.AppColors.liveGreen}18`,
612
686
  borderRadius: 4,
613
687
  paddingHorizontal: 5,
@@ -615,16 +689,16 @@ const SettingsPanel = () => {
615
689
  borderWidth: 1,
616
690
  borderColor: `${AppColors_1.AppColors.liveGreen}38`,
617
691
  }}>
618
- <react_native_1.Text style={{
692
+ <react_native_1.Text style={{
619
693
  fontFamily: AppFonts_1.AppFonts.interBold,
620
694
  fontSize: 8,
621
695
  lineHeight: 11,
622
696
  color: AppColors_1.AppColors.green700,
623
697
  letterSpacing: 0.3,
624
698
  }}>
625
- {t('settings.activeBadge')}
626
- </react_native_1.Text>
627
- </react_native_1.View>) : (<react_native_1.View style={{
699
+ {t('settings.activeBadge')}
700
+ </react_native_1.Text>
701
+ </react_native_1.View>) : (<react_native_1.View style={{
628
702
  backgroundColor: `${AppColors_1.AppColors.grayTextWeak}18`,
629
703
  borderRadius: 4,
630
704
  paddingHorizontal: 5,
@@ -632,33 +706,33 @@ const SettingsPanel = () => {
632
706
  borderWidth: 1,
633
707
  borderColor: `${AppColors_1.AppColors.grayTextWeak}2E`,
634
708
  }}>
635
- <react_native_1.Text style={{
709
+ <react_native_1.Text style={{
636
710
  fontFamily: AppFonts_1.AppFonts.interBold,
637
711
  fontSize: 8,
638
712
  lineHeight: 11,
639
713
  color: AppColors_1.AppColors.grayTextWeak,
640
714
  letterSpacing: 0.3,
641
715
  }}>
642
- {t('settings.dormantBadge')}
643
- </react_native_1.Text>
644
- </react_native_1.View>)}
645
- </react_native_1.View>
716
+ {t('settings.dormantBadge')}
717
+ </react_native_1.Text>
718
+ </react_native_1.View>)}
719
+ </react_native_1.View>
646
720
 
647
- <react_native_1.Text style={{
721
+ <react_native_1.Text style={{
648
722
  fontFamily: AppFonts_1.AppFonts.interRegular,
649
723
  fontSize: 11,
650
724
  color: AppColors_1.AppColors.grayText,
651
725
  lineHeight: 15,
652
726
  marginTop: 1,
653
727
  }}>
654
- {moduleItem.desc}
655
- </react_native_1.Text>
656
- </react_native_1.View>
657
- </TouchableScale_1.default>
658
- </react_native_1.View>
728
+ {moduleItem.desc}
729
+ </react_native_1.Text>
730
+ </react_native_1.View>
731
+ </TouchableScale_1.default>
732
+ </react_native_1.View>
659
733
 
660
- {/* Card Footer: Live Stats + Configure Button */}
661
- {!isUnavailable && (<react_native_1.View style={{
734
+ {/* Card Footer: Live Stats + Configure Button */}
735
+ {!isUnavailable && (<react_native_1.View style={{
662
736
  flexDirection: 'row',
663
737
  alignItems: 'center',
664
738
  justifyContent: 'space-between',
@@ -666,14 +740,14 @@ const SettingsPanel = () => {
666
740
  borderTopWidth: 1,
667
741
  borderTopColor: AppColors_1.AppColors.dividerColor,
668
742
  }}>
669
- {/* Live Info Pill */}
670
- <react_native_1.View style={{
743
+ {/* Live Info Pill */}
744
+ <react_native_1.View style={{
671
745
  flexDirection: 'row',
672
746
  alignItems: 'center',
673
747
  gap: 6,
674
748
  flex: 1,
675
749
  }}>
676
- <react_native_1.View style={{
750
+ <react_native_1.View style={{
677
751
  width: 6,
678
752
  height: 6,
679
753
  borderRadius: 3,
@@ -681,18 +755,18 @@ const SettingsPanel = () => {
681
755
  ? AppColors_1.AppColors.liveGreen
682
756
  : AppColors_1.AppColors.grayTextWeak,
683
757
  }}/>
684
- <react_native_1.Text style={{
758
+ <react_native_1.Text style={{
685
759
  fontFamily: AppFonts_1.AppFonts.interMedium,
686
760
  fontSize: 11,
687
761
  color: AppColors_1.AppColors.grayText,
688
762
  lineHeight: 14,
689
763
  }}>
690
- {liveStats}
691
- </react_native_1.Text>
692
- </react_native_1.View>
764
+ {liveStats}
765
+ </react_native_1.Text>
766
+ </react_native_1.View>
693
767
 
694
- {/* Sleek Configure Button */}
695
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`Configure ${moduleItem.label} settings`} onPress={() => {
768
+ {/* Sleek Configure Button */}
769
+ <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`Configure ${moduleItem.label} settings`} onPress={() => {
696
770
  (0, InspectorContext_1.animateNextLayout)();
697
771
  setSettingsPage(moduleItem.key);
698
772
  }} style={{
@@ -706,24 +780,27 @@ const SettingsPanel = () => {
706
780
  borderWidth: 1,
707
781
  borderColor: `${AppColors_1.AppColors.purple}26`,
708
782
  }}>
709
- <NetworkIcons_1.SettingsIcon color={AppColors_1.AppColors.purple} size={11}/>
710
- <react_native_1.Text style={{
783
+ <NetworkIcons_1.SettingsIcon color={AppColors_1.AppColors.purple} size={11}/>
784
+ <react_native_1.Text style={{
711
785
  fontFamily: AppFonts_1.AppFonts.interBold,
712
786
  fontSize: 11,
713
787
  lineHeight: 14,
714
788
  color: AppColors_1.AppColors.purple,
715
789
  }}>
716
- {t('settings.configure')}
717
- </react_native_1.Text>
718
- <NetworkIcons_1.ForwardChevronIcon color={AppColors_1.AppColors.purple} size={9}/>
719
- </TouchableScale_1.default>
720
- </react_native_1.View>)}
721
- </react_native_1.View>);
790
+ {t('settings.configure')}
791
+ </react_native_1.Text>
792
+ <NetworkIcons_1.ForwardChevronIcon color={AppColors_1.AppColors.purple} size={9}/>
793
+ </TouchableScale_1.default>
794
+ </react_native_1.View>)}
795
+ </react_native_1.View>);
722
796
  })}
723
- </react_native_1.View>
797
+ </react_native_1.View>
798
+ </react_native_1.View>)}
724
799
 
725
- {/* Section 3.5: RAM-Based Auto Limits */}
726
- <react_native_1.View style={{
800
+ {/* ─── TAB 2: RAM & RESOURCE LIMITS ──────────────────────────────────── */}
801
+ {settingsActiveSubTab === 'limits' && (<react_native_1.View style={{ gap: 14 }}>
802
+ {/* Section 1: RAM-Based Auto Limits */}
803
+ <react_native_1.View style={{
727
804
  backgroundColor: AppColors_1.AppColors.primaryLight,
728
805
  borderRadius: 14,
729
806
  borderWidth: 1,
@@ -732,29 +809,29 @@ const SettingsPanel = () => {
732
809
  padding: 14,
733
810
  gap: 12,
734
811
  }}>
735
- <react_native_1.Text style={{
812
+ <react_native_1.Text style={{
736
813
  fontFamily: AppFonts_1.AppFonts.interBold,
737
814
  fontSize: 11,
738
815
  lineHeight: 14,
739
816
  color: AppColors_1.AppColors.grayTextWeak,
740
817
  letterSpacing: 0.8,
741
818
  }}>
742
- RAM-Based Auto Limits
743
- </react_native_1.Text>
819
+ RAM-BASED AUTO TUNING
820
+ </react_native_1.Text>
744
821
 
745
- {/* Auto RAM Limit Toggle */}
746
- <react_native_1.View style={{
822
+ {/* Auto RAM Limit Toggle */}
823
+ <react_native_1.View style={{
747
824
  flexDirection: 'row',
748
825
  alignItems: 'center',
749
826
  justifyContent: 'space-between',
750
827
  }}>
751
- <react_native_1.View style={{
828
+ <react_native_1.View style={{
752
829
  flexDirection: 'row',
753
830
  alignItems: 'center',
754
831
  gap: 10,
755
832
  flex: 1,
756
833
  }}>
757
- <react_native_1.View style={{
834
+ <react_native_1.View style={{
758
835
  width: 32,
759
836
  height: 32,
760
837
  borderRadius: 8,
@@ -762,30 +839,31 @@ const SettingsPanel = () => {
762
839
  alignItems: 'center',
763
840
  justifyContent: 'center',
764
841
  }}>
765
- <NetworkIcons_1.PerformanceIcon color={AppColors_1.AppColors.purple} size={15}/>
766
- </react_native_1.View>
767
- <react_native_1.View style={{ flex: 1 }}>
768
- <react_native_1.Text style={{
842
+ <NetworkIcons_1.PerformanceIcon color={AppColors_1.AppColors.purple} size={15}/>
843
+ </react_native_1.View>
844
+ <react_native_1.View style={{ flex: 1 }}>
845
+ <react_native_1.Text style={{
769
846
  fontFamily: AppFonts_1.AppFonts.interBold,
770
847
  fontSize: 13.5,
771
848
  lineHeight: 18,
772
849
  color: AppColors_1.AppColors.primaryBlack,
773
850
  }}>
774
- Auto-Calculate Limits from Device RAM
775
- </react_native_1.Text>
776
- <react_native_1.Text style={{
851
+ Auto-Calculate Limits from Device RAM
852
+ </react_native_1.Text>
853
+ <react_native_1.Text style={{
777
854
  fontFamily: AppFonts_1.AppFonts.interRegular,
778
855
  fontSize: 11,
779
856
  lineHeight: 15,
780
857
  color: AppColors_1.AppColors.grayText,
781
858
  marginTop: 1,
782
859
  }}>
783
- Automatically set API, Logs, Analytics & Crash limits based on available memory
784
- </react_native_1.Text>
785
- </react_native_1.View>
860
+ Automatically set API, Logs, Analytics & Crash limits
861
+ based on available memory
862
+ </react_native_1.Text>
786
863
  </react_native_1.View>
864
+ </react_native_1.View>
787
865
 
788
- <TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle auto RAM limit calculation" accessibilityState={{ checked: isAutoRamLimitEnabled }} onPress={() => setIsAutoRamLimitEnabled(prev => !prev)} style={{
866
+ <TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle auto RAM limit calculation" accessibilityState={{ checked: isAutoRamLimitEnabled }} onPress={() => setIsAutoRamLimitEnabled(prev => !prev)} style={{
789
867
  width: 42,
790
868
  height: 24,
791
869
  borderRadius: 12,
@@ -794,9 +872,11 @@ const SettingsPanel = () => {
794
872
  : AppColors_1.AppColors.grayBorderSecondary,
795
873
  padding: 2,
796
874
  justifyContent: 'center',
797
- alignItems: isAutoRamLimitEnabled ? 'flex-end' : 'flex-start',
875
+ alignItems: isAutoRamLimitEnabled
876
+ ? 'flex-end'
877
+ : 'flex-start',
798
878
  }}>
799
- <react_native_1.View style={{
879
+ <react_native_1.View style={{
800
880
  width: 20,
801
881
  height: 20,
802
882
  borderRadius: 10,
@@ -806,14 +886,14 @@ const SettingsPanel = () => {
806
886
  shadowRadius: 2,
807
887
  shadowOffset: { width: 0, height: 1 },
808
888
  }}/>
809
- </TouchableScale_1.default>
810
- </react_native_1.View>
889
+ </TouchableScale_1.default>
890
+ </react_native_1.View>
811
891
 
812
- <react_native_1.View style={{ height: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
892
+ <react_native_1.View style={{ height: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
813
893
 
814
- {/* Device Free RAM Display */}
815
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 10 }}>
816
- <react_native_1.View style={{
894
+ {/* Device Free RAM Display */}
895
+ <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 10 }}>
896
+ <react_native_1.View style={{
817
897
  width: 32,
818
898
  height: 32,
819
899
  borderRadius: 8,
@@ -823,10 +903,12 @@ const SettingsPanel = () => {
823
903
  alignItems: 'center',
824
904
  justifyContent: 'center',
825
905
  }}>
826
- <NetworkIcons_1.SignalIcon color={isAutoRamLimitEnabled ? AppColors_1.AppColors.purple : AppColors_1.AppColors.grayTextWeak} size={15}/>
827
- </react_native_1.View>
828
- <react_native_1.View style={{ flex: 1 }}>
829
- <react_native_1.Text style={{
906
+ <NetworkIcons_1.SignalIcon color={isAutoRamLimitEnabled
907
+ ? AppColors_1.AppColors.purple
908
+ : AppColors_1.AppColors.grayTextWeak} size={15}/>
909
+ </react_native_1.View>
910
+ <react_native_1.View style={{ flex: 1 }}>
911
+ <react_native_1.Text style={{
830
912
  fontFamily: AppFonts_1.AppFonts.interBold,
831
913
  fontSize: 13.5,
832
914
  lineHeight: 18,
@@ -834,19 +916,19 @@ const SettingsPanel = () => {
834
916
  ? AppColors_1.AppColors.primaryBlack
835
917
  : AppColors_1.AppColors.grayText,
836
918
  }}>
837
- Detected Free RAM
838
- </react_native_1.Text>
839
- <react_native_1.Text style={{
919
+ Detected Free RAM
920
+ </react_native_1.Text>
921
+ <react_native_1.Text style={{
840
922
  fontFamily: AppFonts_1.AppFonts.interRegular,
841
923
  fontSize: 11,
842
924
  lineHeight: 15,
843
925
  color: AppColors_1.AppColors.grayText,
844
926
  marginTop: 1,
845
927
  }}>
846
- {deviceFreeRamMb} MB available
847
- </react_native_1.Text>
848
- </react_native_1.View>
849
- <react_native_1.View style={{
928
+ {deviceFreeRamMb} MB available
929
+ </react_native_1.Text>
930
+ </react_native_1.View>
931
+ <react_native_1.View style={{
850
932
  paddingHorizontal: 10,
851
933
  paddingVertical: 5,
852
934
  borderRadius: 8,
@@ -858,7 +940,7 @@ const SettingsPanel = () => {
858
940
  ? `${AppColors_1.AppColors.purple}26`
859
941
  : AppColors_1.AppColors.dividerColor,
860
942
  }}>
861
- <react_native_1.Text style={{
943
+ <react_native_1.Text style={{
862
944
  fontFamily: AppFonts_1.AppFonts.interBold,
863
945
  fontSize: 12,
864
946
  lineHeight: 15,
@@ -866,27 +948,49 @@ const SettingsPanel = () => {
866
948
  ? AppColors_1.AppColors.purple
867
949
  : AppColors_1.AppColors.grayText,
868
950
  }}>
869
- {deviceFreeRamMb} MB
870
- </react_native_1.Text>
871
- </react_native_1.View>
951
+ {deviceFreeRamMb} MB
952
+ </react_native_1.Text>
872
953
  </react_native_1.View>
954
+ </react_native_1.View>
873
955
 
874
- {/* Current Auto-Calculated Limits Preview */}
875
- {isAutoRamLimitEnabled && (<react_native_1.View style={{ marginTop: 8, paddingTop: 8, borderTopWidth: 1, borderTopColor: AppColors_1.AppColors.dividerColor, gap: 6 }}>
876
- <react_native_1.Text style={{
956
+ {/* Current Auto-Calculated Limits Preview */}
957
+ {isAutoRamLimitEnabled && (<react_native_1.View style={{
958
+ marginTop: 8,
959
+ paddingTop: 8,
960
+ borderTopWidth: 1,
961
+ borderTopColor: AppColors_1.AppColors.dividerColor,
962
+ gap: 6,
963
+ }}>
964
+ <react_native_1.Text style={{
877
965
  fontFamily: AppFonts_1.AppFonts.interBold,
878
966
  fontSize: 11.5,
879
967
  lineHeight: 15,
880
968
  color: AppColors_1.AppColors.purple,
881
969
  }}>
882
- Auto Profile: {autoRamProfile.profileName}
883
- </react_native_1.Text>
884
- <react_native_1.View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
885
- {[
886
- { label: 'APIs', value: autoRamProfile.maxNetworkLogs, color: AppColors_1.AppColors.blue500 },
887
- { label: 'Logs', value: autoRamProfile.maxConsoleLogs, color: AppColors_1.AppColors.sky500 },
888
- { label: 'Analytics', value: autoRamProfile.maxAnalyticsEvents, color: AppColors_1.AppColors.purple },
889
- { label: 'Crash', value: autoRamProfile.maxCrashRecords, color: AppColors_1.AppColors.errorColor },
970
+ Auto Profile: {autoRamProfile.profileName}
971
+ </react_native_1.Text>
972
+ <react_native_1.View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
973
+ {[
974
+ {
975
+ label: 'APIs',
976
+ value: autoRamProfile.maxNetworkLogs,
977
+ color: AppColors_1.AppColors.blue500,
978
+ },
979
+ {
980
+ label: 'Logs',
981
+ value: autoRamProfile.maxConsoleLogs,
982
+ color: AppColors_1.AppColors.sky500,
983
+ },
984
+ {
985
+ label: 'Analytics',
986
+ value: autoRamProfile.maxAnalyticsEvents,
987
+ color: AppColors_1.AppColors.purple,
988
+ },
989
+ {
990
+ label: 'Crash',
991
+ value: autoRamProfile.maxCrashRecords,
992
+ color: AppColors_1.AppColors.errorColor,
993
+ },
890
994
  ].map(item => (<react_native_1.View key={item.label} style={{
891
995
  flexDirection: 'row',
892
996
  alignItems: 'center',
@@ -898,29 +1002,63 @@ const SettingsPanel = () => {
898
1002
  borderWidth: 1,
899
1003
  borderColor: `${item.color}33`,
900
1004
  }}>
901
- <react_native_1.Text style={{
1005
+ <react_native_1.Text style={{
902
1006
  fontFamily: AppFonts_1.AppFonts.interBold,
903
1007
  fontSize: 10.5,
904
1008
  lineHeight: 14,
905
1009
  color: item.color,
906
1010
  }}>
907
- {item.label}
908
- </react_native_1.Text>
909
- <react_native_1.Text style={{
1011
+ {item.label}
1012
+ </react_native_1.Text>
1013
+ <react_native_1.Text style={{
910
1014
  fontFamily: AppFonts_1.AppFonts.interBold,
911
1015
  fontSize: 10.5,
912
1016
  lineHeight: 14,
913
1017
  color: item.color,
914
1018
  }}>
915
- {item.value}
916
- </react_native_1.Text>
917
- </react_native_1.View>))}
918
- </react_native_1.View>
919
- </react_native_1.View>)}
920
- </react_native_1.View>
921
- </react_native_1.View>) : (<react_native_1.View style={{ gap: 14 }}>
922
- {/* Section 1: Appearance */}
923
- <react_native_1.View style={{
1019
+ {item.value}
1020
+ </react_native_1.Text>
1021
+ </react_native_1.View>))}
1022
+ </react_native_1.View>
1023
+ </react_native_1.View>)}
1024
+
1025
+ <react_native_1.View style={{ height: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
1026
+
1027
+ {/* Floating Mini Performance HUD Toggle */}
1028
+ {renderSettingRow({
1029
+ icon: <NetworkIcons_1.PerformanceIcon color={AppColors_1.AppColors.purple} size={16}/>,
1030
+ label: 'Show Mini Performance HUD Overlay',
1031
+ description: 'Floating on-screen real-time FPS and Memory/Heap widget',
1032
+ right: (<TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle mini performance HUD overlay" accessibilityState={{ checked: isPerformanceHudEnabled }} onPress={() => setIsPerformanceHudEnabled(prev => !prev)} style={{
1033
+ width: 42,
1034
+ height: 24,
1035
+ borderRadius: 12,
1036
+ backgroundColor: isPerformanceHudEnabled
1037
+ ? AppColors_1.AppColors.purple
1038
+ : AppColors_1.AppColors.grayBorderSecondary,
1039
+ padding: 2,
1040
+ justifyContent: 'center',
1041
+ alignItems: isPerformanceHudEnabled
1042
+ ? 'flex-end'
1043
+ : 'flex-start',
1044
+ }}>
1045
+ <react_native_1.View style={{
1046
+ width: 20,
1047
+ height: 20,
1048
+ borderRadius: 10,
1049
+ backgroundColor: AppColors_1.AppColors.white,
1050
+ shadowColor: AppColors_1.AppColors.black,
1051
+ shadowOpacity: 0.18,
1052
+ shadowRadius: 2,
1053
+ shadowOffset: { width: 0, height: 1 },
1054
+ }}/>
1055
+ </TouchableScale_1.default>),
1056
+ isLast: true,
1057
+ })}
1058
+ </react_native_1.View>
1059
+
1060
+ {/* Section 2: Fine-Tuned Resource Limits */}
1061
+ <react_native_1.View style={{
924
1062
  backgroundColor: AppColors_1.AppColors.primaryLight,
925
1063
  borderRadius: 14,
926
1064
  borderWidth: 1,
@@ -929,28 +1067,233 @@ const SettingsPanel = () => {
929
1067
  padding: 14,
930
1068
  gap: 12,
931
1069
  }}>
932
- <react_native_1.Text style={{
1070
+ <react_native_1.Text style={{
933
1071
  fontFamily: AppFonts_1.AppFonts.interBold,
934
1072
  fontSize: 11,
935
1073
  lineHeight: 14,
936
1074
  color: AppColors_1.AppColors.grayTextWeak,
937
1075
  letterSpacing: 0.8,
938
1076
  }}>
939
- {t('settings.appearanceTheme')}
940
- </react_native_1.Text>
1077
+ MANUAL RESOURCE THRESHOLDS
1078
+ </react_native_1.Text>
941
1079
 
942
- <react_native_1.View style={{
1080
+ {renderSettingRow({
1081
+ icon: <NetworkIcons_1.SignalIcon color={AppColors_1.AppColors.purple} size={16}/>,
1082
+ label: 'Max Network / API Logs',
1083
+ description: 'Maximum in-memory API requests tracked before rotation',
1084
+ numericInput: {
1085
+ value: maxNetworkLogs,
1086
+ onChange: setMaxNetworkLogs,
1087
+ min: 10,
1088
+ max: 100,
1089
+ placeholder: '10 - 100',
1090
+ },
1091
+ })}
1092
+
1093
+ {renderSettingRow({
1094
+ icon: <NetworkIcons_1.TerminalIcon color={AppColors_1.AppColors.purple} size={16}/>,
1095
+ label: 'Max Console Logs',
1096
+ description: 'Maximum log entries kept across info/warn/error streams',
1097
+ numericInput: {
1098
+ value: maxConsoleLogs,
1099
+ onChange: setMaxConsoleLogs,
1100
+ min: 20,
1101
+ max: 300,
1102
+ placeholder: '20 - 300',
1103
+ },
1104
+ })}
1105
+
1106
+ {renderSettingRow({
1107
+ icon: <NetworkIcons_1.AnalyticsIcon color={AppColors_1.AppColors.purple} size={16}/>,
1108
+ label: 'Max Analytics Events',
1109
+ description: 'Capacity for captured analytics payloads & telemetry pings',
1110
+ numericInput: {
1111
+ value: maxAnalyticsEventsLimit,
1112
+ onChange: setMaxAnalyticsEventsLimit,
1113
+ min: 20,
1114
+ max: 200,
1115
+ placeholder: '20 - 200',
1116
+ },
1117
+ })}
1118
+
1119
+ {renderSettingRow({
1120
+ icon: <NetworkIcons_1.CrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1121
+ label: 'Max Crash Records',
1122
+ description: 'Stored fatal exceptions and crash diagnostics logs',
1123
+ numericInput: {
1124
+ value: maxCrashLogs,
1125
+ onChange: setMaxCrashLogs,
1126
+ min: 5,
1127
+ max: 50,
1128
+ placeholder: '5 - 50',
1129
+ },
1130
+ isLast: true,
1131
+ })}
1132
+ </react_native_1.View>
1133
+
1134
+ {/* Section 3: Storage & Cache Cleansing */}
1135
+ <react_native_1.View style={{
1136
+ backgroundColor: AppColors_1.AppColors.primaryLight,
1137
+ borderRadius: 14,
1138
+ borderWidth: 1,
1139
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
1140
+ overflow: 'hidden',
1141
+ padding: 14,
1142
+ gap: 12,
1143
+ }}>
1144
+ <react_native_1.Text style={{
1145
+ fontFamily: AppFonts_1.AppFonts.interBold,
1146
+ fontSize: 11,
1147
+ lineHeight: 14,
1148
+ color: AppColors_1.AppColors.grayTextWeak,
1149
+ letterSpacing: 0.8,
1150
+ }}>
1151
+ STORAGE & CACHE CLEANSING
1152
+ </react_native_1.Text>
1153
+
1154
+ {renderSettingRow({
1155
+ icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1156
+ label: 'Clear All Network Logs',
1157
+ description: `${logs.length} requests in memory`,
1158
+ onPress: () => {
1159
+ (0, networkLogger_1.clearNetworkLogs)();
1160
+ setSelected(null);
1161
+ react_native_1.Alert.alert(t('common.success'), 'Network logs cleared successfully.');
1162
+ },
1163
+ right: (<react_native_1.View style={{
1164
+ paddingHorizontal: 10,
1165
+ paddingVertical: 4,
1166
+ borderRadius: 6,
1167
+ backgroundColor: `${AppColors_1.AppColors.errorColor}14`,
1168
+ borderWidth: 1,
1169
+ borderColor: `${AppColors_1.AppColors.errorColor}33`,
1170
+ }}>
1171
+ <react_native_1.Text style={{
1172
+ fontFamily: AppFonts_1.AppFonts.interBold,
1173
+ fontSize: 11,
1174
+ color: AppColors_1.AppColors.errorColor,
1175
+ }}>
1176
+ Clear ({logs.length})
1177
+ </react_native_1.Text>
1178
+ </react_native_1.View>),
1179
+ })}
1180
+
1181
+ {renderSettingRow({
1182
+ icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1183
+ label: 'Clear All Console Logs',
1184
+ description: `${consoleLogs.length} logs in memory`,
1185
+ onPress: () => {
1186
+ (0, consoleLogger_1.clearConsoleLogs)();
1187
+ react_native_1.Alert.alert(t('common.success'), 'Console logs cleared successfully.');
1188
+ },
1189
+ right: (<react_native_1.View style={{
1190
+ paddingHorizontal: 10,
1191
+ paddingVertical: 4,
1192
+ borderRadius: 6,
1193
+ backgroundColor: `${AppColors_1.AppColors.errorColor}14`,
1194
+ borderWidth: 1,
1195
+ borderColor: `${AppColors_1.AppColors.errorColor}33`,
1196
+ }}>
1197
+ <react_native_1.Text style={{
1198
+ fontFamily: AppFonts_1.AppFonts.interBold,
1199
+ fontSize: 11,
1200
+ color: AppColors_1.AppColors.errorColor,
1201
+ }}>
1202
+ Clear ({consoleLogs.length})
1203
+ </react_native_1.Text>
1204
+ </react_native_1.View>),
1205
+ })}
1206
+
1207
+ {renderSettingRow({
1208
+ icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1209
+ label: 'Clear Analytics Events',
1210
+ description: `${analyticsEvents.length} events recorded`,
1211
+ onPress: () => {
1212
+ (0, analyticsLogger_1.clearAnalyticsEvents)();
1213
+ setSelectedEvent(null);
1214
+ react_native_1.Alert.alert(t('common.success'), 'Analytics events cleared successfully.');
1215
+ },
1216
+ right: (<react_native_1.View style={{
1217
+ paddingHorizontal: 10,
1218
+ paddingVertical: 4,
1219
+ borderRadius: 6,
1220
+ backgroundColor: `${AppColors_1.AppColors.errorColor}14`,
1221
+ borderWidth: 1,
1222
+ borderColor: `${AppColors_1.AppColors.errorColor}33`,
1223
+ }}>
1224
+ <react_native_1.Text style={{
1225
+ fontFamily: AppFonts_1.AppFonts.interBold,
1226
+ fontSize: 11,
1227
+ color: AppColors_1.AppColors.errorColor,
1228
+ }}>
1229
+ Clear ({analyticsEvents.length})
1230
+ </react_native_1.Text>
1231
+ </react_native_1.View>),
1232
+ })}
1233
+
1234
+ {renderSettingRow({
1235
+ icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1236
+ label: 'Clear Crash Logs',
1237
+ description: `${crashRecords.length} crash dumps recorded`,
1238
+ onPress: () => {
1239
+ (0, crashHandler_1.clearCrashRecords)();
1240
+ react_native_1.Alert.alert(t('common.success'), 'Crash records cleared successfully.');
1241
+ },
1242
+ isLast: true,
1243
+ right: (<react_native_1.View style={{
1244
+ paddingHorizontal: 10,
1245
+ paddingVertical: 4,
1246
+ borderRadius: 6,
1247
+ backgroundColor: `${AppColors_1.AppColors.errorColor}14`,
1248
+ borderWidth: 1,
1249
+ borderColor: `${AppColors_1.AppColors.errorColor}33`,
1250
+ }}>
1251
+ <react_native_1.Text style={{
1252
+ fontFamily: AppFonts_1.AppFonts.interBold,
1253
+ fontSize: 11,
1254
+ color: AppColors_1.AppColors.errorColor,
1255
+ }}>
1256
+ Clear ({crashRecords.length})
1257
+ </react_native_1.Text>
1258
+ </react_native_1.View>),
1259
+ })}
1260
+ </react_native_1.View>
1261
+ </react_native_1.View>)}
1262
+
1263
+ {/* ─── TAB 3: UI & APPEARANCE ────────────────────────────────────────── */}
1264
+ {settingsActiveSubTab === 'ui' && (<react_native_1.View style={{ gap: 14 }}>
1265
+ {/* Section 1: Appearance */}
1266
+ <react_native_1.View style={{
1267
+ backgroundColor: AppColors_1.AppColors.primaryLight,
1268
+ borderRadius: 14,
1269
+ borderWidth: 1,
1270
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
1271
+ overflow: 'hidden',
1272
+ padding: 14,
1273
+ gap: 12,
1274
+ }}>
1275
+ <react_native_1.Text style={{
1276
+ fontFamily: AppFonts_1.AppFonts.interBold,
1277
+ fontSize: 11,
1278
+ lineHeight: 14,
1279
+ color: AppColors_1.AppColors.grayTextWeak,
1280
+ letterSpacing: 0.8,
1281
+ }}>
1282
+ {t('settings.appearanceTheme')}
1283
+ </react_native_1.Text>
1284
+
1285
+ <react_native_1.View style={{
943
1286
  flexDirection: 'row',
944
1287
  alignItems: 'center',
945
1288
  justifyContent: 'space-between',
946
1289
  }}>
947
- <react_native_1.View style={{
1290
+ <react_native_1.View style={{
948
1291
  flexDirection: 'row',
949
1292
  alignItems: 'center',
950
1293
  gap: 10,
951
1294
  flex: 1,
952
1295
  }}>
953
- <react_native_1.View style={{
1296
+ <react_native_1.View style={{
954
1297
  width: 32,
955
1298
  height: 32,
956
1299
  borderRadius: 8,
@@ -958,30 +1301,30 @@ const SettingsPanel = () => {
958
1301
  alignItems: 'center',
959
1302
  justifyContent: 'center',
960
1303
  }}>
961
- {isDark ? (<NetworkIcons_1.SunIcon color={AppColors_1.AppColors.purple} size={15}/>) : (<NetworkIcons_1.MoonIcon color={AppColors_1.AppColors.purple} size={15}/>)}
962
- </react_native_1.View>
963
- <react_native_1.View style={{ flex: 1 }}>
964
- <react_native_1.Text style={{
1304
+ {isDark ? (<NetworkIcons_1.SunIcon color={AppColors_1.AppColors.purple} size={15}/>) : (<NetworkIcons_1.MoonIcon color={AppColors_1.AppColors.purple} size={15}/>)}
1305
+ </react_native_1.View>
1306
+ <react_native_1.View style={{ flex: 1 }}>
1307
+ <react_native_1.Text style={{
965
1308
  fontFamily: AppFonts_1.AppFonts.interBold,
966
1309
  fontSize: 13.5,
967
1310
  lineHeight: 18,
968
1311
  color: AppColors_1.AppColors.primaryBlack,
969
1312
  }}>
970
- {t('settings.general.darkMode')}
971
- </react_native_1.Text>
972
- <react_native_1.Text style={{
1313
+ {t('settings.general.darkMode')}
1314
+ </react_native_1.Text>
1315
+ <react_native_1.Text style={{
973
1316
  fontFamily: AppFonts_1.AppFonts.interRegular,
974
1317
  fontSize: 11,
975
1318
  lineHeight: 15,
976
1319
  color: AppColors_1.AppColors.grayText,
977
1320
  marginTop: 1,
978
1321
  }}>
979
- {t('settings.general.darkModeDescription')}
980
- </react_native_1.Text>
981
- </react_native_1.View>
1322
+ {t('settings.general.darkModeDescription')}
1323
+ </react_native_1.Text>
982
1324
  </react_native_1.View>
1325
+ </react_native_1.View>
983
1326
 
984
- <TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle Dark Theme" accessibilityState={{ checked: isDark }} onPress={() => {
1327
+ <TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle Dark Theme" accessibilityState={{ checked: isDark }} onPress={() => {
985
1328
  const newTheme = !isDark;
986
1329
  setIsDark(newTheme);
987
1330
  (0, styles_1.toggleGlobalTheme)(newTheme);
@@ -996,7 +1339,7 @@ const SettingsPanel = () => {
996
1339
  justifyContent: 'center',
997
1340
  alignItems: isDark ? 'flex-end' : 'flex-start',
998
1341
  }}>
999
- <react_native_1.View style={{
1342
+ <react_native_1.View style={{
1000
1343
  width: 20,
1001
1344
  height: 20,
1002
1345
  borderRadius: 10,
@@ -1006,12 +1349,12 @@ const SettingsPanel = () => {
1006
1349
  shadowRadius: 2,
1007
1350
  shadowOffset: { width: 0, height: 1 },
1008
1351
  }}/>
1009
- </TouchableScale_1.default>
1010
- </react_native_1.View>
1352
+ </TouchableScale_1.default>
1011
1353
  </react_native_1.View>
1354
+ </react_native_1.View>
1012
1355
 
1013
- {/* Section 2: Window & Layout */}
1014
- <react_native_1.View style={{
1356
+ {/* Section 2: Window & Layout */}
1357
+ <react_native_1.View style={{
1015
1358
  backgroundColor: AppColors_1.AppColors.primaryLight,
1016
1359
  borderRadius: 14,
1017
1360
  borderWidth: 1,
@@ -1020,31 +1363,31 @@ const SettingsPanel = () => {
1020
1363
  padding: 14,
1021
1364
  gap: 14,
1022
1365
  }}>
1023
- <react_native_1.Text style={{
1366
+ <react_native_1.Text style={{
1024
1367
  fontFamily: AppFonts_1.AppFonts.interBold,
1025
1368
  fontSize: 11,
1026
1369
  lineHeight: 14,
1027
1370
  color: AppColors_1.AppColors.grayTextWeak,
1028
1371
  letterSpacing: 0.8,
1029
1372
  }}>
1030
- {t('settings.windowLayout')}
1031
- </react_native_1.Text>
1373
+ {t('settings.windowLayout')}
1374
+ </react_native_1.Text>
1032
1375
 
1033
- {/* Modal Height */}
1034
- <react_native_1.View style={{ gap: 8 }}>
1035
- <react_native_1.View style={{
1376
+ {/* Modal Height */}
1377
+ <react_native_1.View style={{ gap: 8 }}>
1378
+ <react_native_1.View style={{
1036
1379
  flexDirection: 'row',
1037
1380
  alignItems: 'center',
1038
1381
  justifyContent: 'space-between',
1039
1382
  gap: 10,
1040
1383
  }}>
1041
- <react_native_1.View style={{
1384
+ <react_native_1.View style={{
1042
1385
  flexDirection: 'row',
1043
1386
  alignItems: 'center',
1044
1387
  gap: 10,
1045
1388
  flex: 1,
1046
1389
  }}>
1047
- <react_native_1.View style={{
1390
+ <react_native_1.View style={{
1048
1391
  width: 32,
1049
1392
  height: 32,
1050
1393
  borderRadius: 8,
@@ -1052,30 +1395,30 @@ const SettingsPanel = () => {
1052
1395
  alignItems: 'center',
1053
1396
  justifyContent: 'center',
1054
1397
  }}>
1055
- <NetworkIcons_1.ScreenIcon color={AppColors_1.AppColors.purple} size={15}/>
1056
- </react_native_1.View>
1057
- <react_native_1.View style={{ flex: 1 }}>
1058
- <react_native_1.Text style={{
1398
+ <NetworkIcons_1.ScreenIcon color={AppColors_1.AppColors.purple} size={15}/>
1399
+ </react_native_1.View>
1400
+ <react_native_1.View style={{ flex: 1 }}>
1401
+ <react_native_1.Text style={{
1059
1402
  fontFamily: AppFonts_1.AppFonts.interBold,
1060
1403
  fontSize: 13.5,
1061
1404
  lineHeight: 18,
1062
1405
  color: AppColors_1.AppColors.primaryBlack,
1063
1406
  }}>
1064
- {t('settings.general.modalHeight')}
1065
- </react_native_1.Text>
1066
- <react_native_1.Text style={{
1407
+ {t('settings.general.modalHeight')}
1408
+ </react_native_1.Text>
1409
+ <react_native_1.Text style={{
1067
1410
  fontFamily: AppFonts_1.AppFonts.interRegular,
1068
1411
  fontSize: 11,
1069
1412
  lineHeight: 15,
1070
1413
  color: AppColors_1.AppColors.grayText,
1071
1414
  marginTop: 1,
1072
1415
  }}>
1073
- {t('settings.general.modalHeightDescription')}
1074
- </react_native_1.Text>
1075
- </react_native_1.View>
1416
+ {t('settings.general.modalHeightDescription')}
1417
+ </react_native_1.Text>
1076
1418
  </react_native_1.View>
1419
+ </react_native_1.View>
1077
1420
 
1078
- {stagedHeight !== modalHeightPercent && (<TouchableScale_1.default onPress={() => {
1421
+ {stagedHeight !== modalHeightPercent && (<TouchableScale_1.default onPress={() => {
1079
1422
  setModalHeightPercent(stagedHeight);
1080
1423
  }} style={{
1081
1424
  flexDirection: 'row',
@@ -1091,32 +1434,32 @@ const SettingsPanel = () => {
1091
1434
  shadowRadius: 2,
1092
1435
  elevation: 2,
1093
1436
  }}>
1094
- <NetworkIcons_1.CheckIcon size={11} color={AppColors_1.AppColors.white}/>
1095
- <react_native_1.Text style={{
1437
+ <NetworkIcons_1.CheckIcon size={11} color={AppColors_1.AppColors.white}/>
1438
+ <react_native_1.Text style={{
1096
1439
  fontFamily: AppFonts_1.AppFonts.interBold,
1097
1440
  fontSize: 11,
1098
1441
  color: AppColors_1.AppColors.white,
1099
- }}>
1100
- Save ({stagedHeight}%)
1101
- </react_native_1.Text>
1102
- </TouchableScale_1.default>)}
1103
- </react_native_1.View>
1442
+ }}>
1443
+ Save ({stagedHeight}%)
1444
+ </react_native_1.Text>
1445
+ </TouchableScale_1.default>)}
1446
+ </react_native_1.View>
1104
1447
 
1105
- <react_native_1.View style={{ marginTop: 6 }}>
1106
- <Slider_1.default value={stagedHeight} onValueChange={setStagedHeight} min={50} max={90} step={5} quickPresets={[50, 60, 70, 80, 90]} formatLabel={val => `${Math.round(val)}%`}/>
1107
- </react_native_1.View>
1448
+ <react_native_1.View style={{ marginTop: 6 }}>
1449
+ <Slider_1.default value={stagedHeight} onValueChange={setStagedHeight} min={50} max={90} step={5} quickPresets={[50, 60, 70, 80, 90]} formatLabel={val => `${Math.round(val)}%`}/>
1108
1450
  </react_native_1.View>
1451
+ </react_native_1.View>
1109
1452
 
1110
- <react_native_1.View style={{ height: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
1453
+ <react_native_1.View style={{ height: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
1111
1454
 
1112
- {/* Modal Animation */}
1113
- <react_native_1.View style={{ gap: 8 }}>
1114
- <react_native_1.View style={{
1455
+ {/* Modal Animation */}
1456
+ <react_native_1.View style={{ gap: 8 }}>
1457
+ <react_native_1.View style={{
1115
1458
  flexDirection: 'row',
1116
1459
  alignItems: 'center',
1117
1460
  gap: 10,
1118
1461
  }}>
1119
- <react_native_1.View style={{
1462
+ <react_native_1.View style={{
1120
1463
  width: 32,
1121
1464
  height: 32,
1122
1465
  borderRadius: 8,
@@ -1124,30 +1467,30 @@ const SettingsPanel = () => {
1124
1467
  alignItems: 'center',
1125
1468
  justifyContent: 'center',
1126
1469
  }}>
1127
- <NetworkIcons_1.MotionIcon color={AppColors_1.AppColors.purple} size={15}/>
1128
- </react_native_1.View>
1129
- <react_native_1.View style={{ flex: 1 }}>
1130
- <react_native_1.Text style={{
1470
+ <NetworkIcons_1.MotionIcon color={AppColors_1.AppColors.purple} size={15}/>
1471
+ </react_native_1.View>
1472
+ <react_native_1.View style={{ flex: 1 }}>
1473
+ <react_native_1.Text style={{
1131
1474
  fontFamily: AppFonts_1.AppFonts.interBold,
1132
1475
  fontSize: 13.5,
1133
1476
  lineHeight: 18,
1134
1477
  color: AppColors_1.AppColors.primaryBlack,
1135
1478
  }}>
1136
- {t('settings.general.modalAnimation')}
1137
- </react_native_1.Text>
1138
- <react_native_1.Text style={{
1479
+ {t('settings.general.modalAnimation')}
1480
+ </react_native_1.Text>
1481
+ <react_native_1.Text style={{
1139
1482
  fontFamily: AppFonts_1.AppFonts.interRegular,
1140
1483
  fontSize: 11,
1141
1484
  lineHeight: 15,
1142
1485
  color: AppColors_1.AppColors.grayText,
1143
1486
  marginTop: 1,
1144
1487
  }}>
1145
- {t('settings.general.modalAnimationDescription')}
1146
- </react_native_1.Text>
1147
- </react_native_1.View>
1488
+ {t('settings.general.modalAnimationDescription')}
1489
+ </react_native_1.Text>
1148
1490
  </react_native_1.View>
1491
+ </react_native_1.View>
1149
1492
 
1150
- <react_native_1.View style={{
1493
+ <react_native_1.View style={{
1151
1494
  flexDirection: 'row',
1152
1495
  backgroundColor: AppColors_1.AppColors.grayBackground,
1153
1496
  borderRadius: 10,
@@ -1155,7 +1498,7 @@ const SettingsPanel = () => {
1155
1498
  borderWidth: 1,
1156
1499
  borderColor: AppColors_1.AppColors.dividerColor,
1157
1500
  }}>
1158
- {[
1501
+ {[
1159
1502
  { key: 'slide', label: 'Slide Up' },
1160
1503
  { key: 'fade', label: 'Fade' },
1161
1504
  { key: 'none', label: 'None' },
@@ -1170,7 +1513,7 @@ const SettingsPanel = () => {
1170
1513
  ? AppColors_1.AppColors.purple
1171
1514
  : 'transparent',
1172
1515
  }}>
1173
- <react_native_1.Text style={{
1516
+ <react_native_1.Text style={{
1174
1517
  fontFamily: AppFonts_1.AppFonts.interBold,
1175
1518
  fontSize: 11.5,
1176
1519
  lineHeight: 15,
@@ -1178,16 +1521,16 @@ const SettingsPanel = () => {
1178
1521
  ? AppColors_1.AppColors.white
1179
1522
  : AppColors_1.AppColors.grayText,
1180
1523
  }}>
1181
- {opt.label}
1182
- </react_native_1.Text>
1183
- </TouchableScale_1.default>);
1524
+ {opt.label}
1525
+ </react_native_1.Text>
1526
+ </TouchableScale_1.default>);
1184
1527
  })}
1185
- </react_native_1.View>
1186
1528
  </react_native_1.View>
1187
1529
  </react_native_1.View>
1530
+ </react_native_1.View>
1188
1531
 
1189
- {/* Section 3: Default Startup Tab */}
1190
- <react_native_1.View style={{
1532
+ {/* Section 3: Default Startup Tab */}
1533
+ <react_native_1.View style={{
1191
1534
  backgroundColor: AppColors_1.AppColors.primaryLight,
1192
1535
  borderRadius: 14,
1193
1536
  borderWidth: 1,
@@ -1196,22 +1539,22 @@ const SettingsPanel = () => {
1196
1539
  padding: 14,
1197
1540
  gap: 12,
1198
1541
  }}>
1199
- <react_native_1.Text style={{
1542
+ <react_native_1.Text style={{
1200
1543
  fontFamily: AppFonts_1.AppFonts.interBold,
1201
1544
  fontSize: 11,
1202
1545
  lineHeight: 14,
1203
1546
  color: AppColors_1.AppColors.grayTextWeak,
1204
1547
  letterSpacing: 0.8,
1205
1548
  }}>
1206
- {t('settings.startupDefault')}
1207
- </react_native_1.Text>
1549
+ {t('settings.startupDefault')}
1550
+ </react_native_1.Text>
1208
1551
 
1209
- <react_native_1.View style={{
1552
+ <react_native_1.View style={{
1210
1553
  flexDirection: 'row',
1211
1554
  alignItems: 'center',
1212
1555
  gap: 10,
1213
1556
  }}>
1214
- <react_native_1.View style={{
1557
+ <react_native_1.View style={{
1215
1558
  width: 32,
1216
1559
  height: 32,
1217
1560
  borderRadius: 8,
@@ -1219,32 +1562,32 @@ const SettingsPanel = () => {
1219
1562
  alignItems: 'center',
1220
1563
  justifyContent: 'center',
1221
1564
  }}>
1222
- <NetworkIcons_1.LayersIcon color={AppColors_1.AppColors.purple} size={15}/>
1223
- </react_native_1.View>
1224
- <react_native_1.View style={{ flex: 1 }}>
1225
- <react_native_1.Text style={{
1565
+ <NetworkIcons_1.LayersIcon color={AppColors_1.AppColors.purple} size={15}/>
1566
+ </react_native_1.View>
1567
+ <react_native_1.View style={{ flex: 1 }}>
1568
+ <react_native_1.Text style={{
1226
1569
  fontFamily: AppFonts_1.AppFonts.interBold,
1227
1570
  fontSize: 13.5,
1228
1571
  lineHeight: 18,
1229
1572
  color: AppColors_1.AppColors.primaryBlack,
1230
1573
  }}>
1231
- {t('settings.general.defaultOpeningTab')}
1232
- </react_native_1.Text>
1233
- <react_native_1.Text style={{
1574
+ {t('settings.general.defaultOpeningTab')}
1575
+ </react_native_1.Text>
1576
+ <react_native_1.Text style={{
1234
1577
  fontFamily: AppFonts_1.AppFonts.interRegular,
1235
1578
  fontSize: 11,
1236
1579
  lineHeight: 15,
1237
1580
  color: AppColors_1.AppColors.grayText,
1238
1581
  marginTop: 1,
1239
1582
  }}>
1240
- {t('settings.general.defaultOpeningTabDesc')}
1241
- </react_native_1.Text>
1242
- </react_native_1.View>
1583
+ {t('settings.general.defaultOpeningTabDesc')}
1584
+ </react_native_1.Text>
1243
1585
  </react_native_1.View>
1586
+ </react_native_1.View>
1244
1587
 
1245
- {/* Sleek Interactive Dropdown Picker */}
1246
- <react_native_1.View style={{ marginTop: 6, gap: 6 }}>
1247
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`Default opening tab: ${allModules.find(m => m.key === defaultTab)?.label || 'APIs'}`} onPress={() => setIsDefaultTabDropdownOpen(prev => !prev)} style={{
1588
+ {/* Sleek Interactive Dropdown Picker */}
1589
+ <react_native_1.View style={{ marginTop: 6, gap: 6 }}>
1590
+ <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`Default opening tab: ${allModules.find(m => m.key === defaultTab)?.label || 'APIs'}`} onPress={() => setIsDefaultTabDropdownOpen(prev => !prev)} style={{
1248
1591
  flexDirection: 'row',
1249
1592
  alignItems: 'center',
1250
1593
  justifyContent: 'space-between',
@@ -1257,53 +1600,54 @@ const SettingsPanel = () => {
1257
1600
  paddingHorizontal: 14,
1258
1601
  paddingVertical: 11,
1259
1602
  }}>
1260
- <react_native_1.View style={{
1603
+ <react_native_1.View style={{
1261
1604
  flexDirection: 'row',
1262
1605
  alignItems: 'center',
1263
1606
  gap: 10,
1264
1607
  flex: 1,
1265
1608
  }}>
1266
- <react_native_1.View style={{
1609
+ <react_native_1.View style={{
1267
1610
  width: 8,
1268
1611
  height: 8,
1269
1612
  borderRadius: 4,
1270
1613
  backgroundColor: AppColors_1.AppColors.purple,
1271
1614
  }}/>
1272
- <react_native_1.Text style={{
1615
+ <react_native_1.Text style={{
1273
1616
  fontFamily: AppFonts_1.AppFonts.interBold,
1274
1617
  fontSize: 13.5,
1275
1618
  lineHeight: 18,
1276
1619
  color: AppColors_1.AppColors.primaryBlack,
1277
1620
  }}>
1278
- {allModules.find(m => m.key === defaultTab)?.label || 'APIs (Network)'}
1279
- </react_native_1.Text>
1280
- <react_native_1.View style={{
1621
+ {allModules.find(m => m.key === defaultTab)?.label ||
1622
+ 'APIs (Network)'}
1623
+ </react_native_1.Text>
1624
+ <react_native_1.View style={{
1281
1625
  backgroundColor: `${AppColors_1.AppColors.purple}14`,
1282
1626
  paddingHorizontal: 6,
1283
1627
  paddingVertical: 1.5,
1284
1628
  borderRadius: 6,
1285
1629
  }}>
1286
- <react_native_1.Text style={{
1630
+ <react_native_1.Text style={{
1287
1631
  fontFamily: AppFonts_1.AppFonts.interBold,
1288
1632
  fontSize: 8.5,
1289
1633
  color: AppColors_1.AppColors.purple,
1290
1634
  }}>
1291
- DEFAULT
1292
- </react_native_1.Text>
1293
- </react_native_1.View>
1635
+ DEFAULT
1636
+ </react_native_1.Text>
1294
1637
  </react_native_1.View>
1638
+ </react_native_1.View>
1295
1639
 
1296
- <react_native_1.View style={{
1640
+ <react_native_1.View style={{
1297
1641
  transform: [
1298
1642
  { rotate: isDefaultTabDropdownOpen ? '180deg' : '0deg' },
1299
1643
  ],
1300
1644
  }}>
1301
- <NetworkIcons_1.ChevronDownIcon color={AppColors_1.AppColors.grayText} size={15}/>
1302
- </react_native_1.View>
1303
- </TouchableScale_1.default>
1645
+ <NetworkIcons_1.ChevronDownIcon color={AppColors_1.AppColors.grayText} size={15}/>
1646
+ </react_native_1.View>
1647
+ </TouchableScale_1.default>
1304
1648
 
1305
- {/* Dropdown Options List */}
1306
- {isDefaultTabDropdownOpen && (<react_native_1.View style={{
1649
+ {/* Dropdown Options List */}
1650
+ {isDefaultTabDropdownOpen && (<react_native_1.View style={{
1307
1651
  backgroundColor: AppColors_1.AppColors.primaryLight,
1308
1652
  borderRadius: 10,
1309
1653
  borderWidth: 1,
@@ -1315,7 +1659,7 @@ const SettingsPanel = () => {
1315
1659
  shadowOffset: { width: 0, height: 3 },
1316
1660
  elevation: 4,
1317
1661
  }}>
1318
- {allModules
1662
+ {allModules
1319
1663
  .filter(tab => tab.key === 'apis' ||
1320
1664
  stagedTabVisibility?.[tab.key] ||
1321
1665
  tabVisibility?.[tab.key])
@@ -1337,12 +1681,12 @@ const SettingsPanel = () => {
1337
1681
  borderBottomWidth: isLast ? 0 : 1,
1338
1682
  borderBottomColor: AppColors_1.AppColors.dividerColor,
1339
1683
  }}>
1340
- <react_native_1.View style={{
1684
+ <react_native_1.View style={{
1341
1685
  flexDirection: 'row',
1342
1686
  alignItems: 'center',
1343
1687
  gap: 10,
1344
1688
  }}>
1345
- <react_native_1.View style={{
1689
+ <react_native_1.View style={{
1346
1690
  width: 6,
1347
1691
  height: 6,
1348
1692
  borderRadius: 3,
@@ -1350,7 +1694,7 @@ const SettingsPanel = () => {
1350
1694
  ? AppColors_1.AppColors.purple
1351
1695
  : AppColors_1.AppColors.grayTextWeak,
1352
1696
  }}/>
1353
- <react_native_1.Text style={{
1697
+ <react_native_1.Text style={{
1354
1698
  fontFamily: isActive
1355
1699
  ? AppFonts_1.AppFonts.interBold
1356
1700
  : AppFonts_1.AppFonts.interMedium,
@@ -1359,18 +1703,18 @@ const SettingsPanel = () => {
1359
1703
  ? AppColors_1.AppColors.purple
1360
1704
  : AppColors_1.AppColors.primaryBlack,
1361
1705
  }}>
1362
- {tab.label}
1363
- </react_native_1.Text>
1364
- </react_native_1.View>
1365
- {isActive && (<NetworkIcons_1.CheckIcon size={14} color={AppColors_1.AppColors.purple}/>)}
1366
- </TouchableScale_1.default>);
1706
+ {tab.label}
1707
+ </react_native_1.Text>
1708
+ </react_native_1.View>
1709
+ {isActive && (<NetworkIcons_1.CheckIcon size={14} color={AppColors_1.AppColors.purple}/>)}
1710
+ </TouchableScale_1.default>);
1367
1711
  })}
1368
- </react_native_1.View>)}
1369
- </react_native_1.View>
1712
+ </react_native_1.View>)}
1370
1713
  </react_native_1.View>
1714
+ </react_native_1.View>
1371
1715
 
1372
- {/* Section 4: Privacy & Diagnostics */}
1373
- <react_native_1.View style={{
1716
+ {/* Section 4: Privacy & Diagnostics */}
1717
+ <react_native_1.View style={{
1374
1718
  backgroundColor: AppColors_1.AppColors.primaryLight,
1375
1719
  borderRadius: 14,
1376
1720
  borderWidth: 1,
@@ -1379,29 +1723,29 @@ const SettingsPanel = () => {
1379
1723
  padding: 14,
1380
1724
  gap: 12,
1381
1725
  }}>
1382
- <react_native_1.Text style={{
1726
+ <react_native_1.Text style={{
1383
1727
  fontFamily: AppFonts_1.AppFonts.interBold,
1384
1728
  fontSize: 11,
1385
1729
  lineHeight: 14,
1386
1730
  color: AppColors_1.AppColors.grayTextWeak,
1387
1731
  letterSpacing: 0.8,
1388
1732
  }}>
1389
- PRIVACY & ANONYMOUS DIAGNOSTICS
1390
- </react_native_1.Text>
1733
+ PRIVACY & ANONYMOUS DIAGNOSTICS
1734
+ </react_native_1.Text>
1391
1735
 
1392
- <react_native_1.View style={{
1736
+ <react_native_1.View style={{
1393
1737
  flexDirection: 'row',
1394
1738
  alignItems: 'center',
1395
1739
  justifyContent: 'space-between',
1396
1740
  }}>
1397
- <react_native_1.View style={{
1741
+ <react_native_1.View style={{
1398
1742
  flexDirection: 'row',
1399
1743
  alignItems: 'center',
1400
1744
  gap: 10,
1401
1745
  flex: 1,
1402
1746
  marginRight: 10,
1403
1747
  }}>
1404
- <react_native_1.View style={{
1748
+ <react_native_1.View style={{
1405
1749
  width: 32,
1406
1750
  height: 32,
1407
1751
  borderRadius: 8,
@@ -1409,30 +1753,32 @@ const SettingsPanel = () => {
1409
1753
  alignItems: 'center',
1410
1754
  justifyContent: 'center',
1411
1755
  }}>
1412
- <NetworkIcons_1.ShieldAlertIcon color={AppColors_1.AppColors.purple} size={15}/>
1413
- </react_native_1.View>
1414
- <react_native_1.View style={{ flex: 1 }}>
1415
- <react_native_1.Text style={{
1756
+ <NetworkIcons_1.ShieldAlertIcon color={AppColors_1.AppColors.purple} size={15}/>
1757
+ </react_native_1.View>
1758
+ <react_native_1.View style={{ flex: 1 }}>
1759
+ <react_native_1.Text style={{
1416
1760
  fontFamily: AppFonts_1.AppFonts.interBold,
1417
1761
  fontSize: 13.5,
1418
1762
  lineHeight: 18,
1419
1763
  color: AppColors_1.AppColors.primaryBlack,
1420
1764
  }}>
1421
- Help Improve In-App Inspector
1422
- </react_native_1.Text>
1423
- <react_native_1.Text style={{
1765
+ Help Improve In-App Inspector
1766
+ </react_native_1.Text>
1767
+ <react_native_1.Text style={{
1424
1768
  fontFamily: AppFonts_1.AppFonts.interRegular,
1425
1769
  fontSize: 11,
1426
1770
  lineHeight: 15,
1427
1771
  color: AppColors_1.AppColors.grayText,
1428
1772
  marginTop: 1,
1429
1773
  }}>
1430
- Share non-identifiable technical metrics (RN version, JS engine, device model). No user data or network payloads are captured.
1431
- </react_native_1.Text>
1432
- </react_native_1.View>
1774
+ Share non-identifiable technical metrics (RN version, JS
1775
+ engine, device model). No user data or network payloads
1776
+ are captured.
1777
+ </react_native_1.Text>
1433
1778
  </react_native_1.View>
1779
+ </react_native_1.View>
1434
1780
 
1435
- <TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle Anonymous Telemetry" accessibilityState={{ checked: telemetryConsent }} onPress={handleToggleTelemetry} style={{
1781
+ <TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle Anonymous Telemetry" accessibilityState={{ checked: telemetryConsent }} onPress={handleToggleTelemetry} style={{
1436
1782
  width: 42,
1437
1783
  height: 24,
1438
1784
  borderRadius: 12,
@@ -1443,7 +1789,7 @@ const SettingsPanel = () => {
1443
1789
  justifyContent: 'center',
1444
1790
  alignItems: telemetryConsent ? 'flex-end' : 'flex-start',
1445
1791
  }}>
1446
- <react_native_1.View style={{
1792
+ <react_native_1.View style={{
1447
1793
  width: 20,
1448
1794
  height: 20,
1449
1795
  borderRadius: 10,
@@ -1453,12 +1799,12 @@ const SettingsPanel = () => {
1453
1799
  shadowRadius: 2,
1454
1800
  shadowOffset: { width: 0, height: 1 },
1455
1801
  }}/>
1456
- </TouchableScale_1.default>
1457
- </react_native_1.View>
1802
+ </TouchableScale_1.default>
1458
1803
  </react_native_1.View>
1804
+ </react_native_1.View>
1459
1805
 
1460
- {/* Section 5: Notifications & Toasts */}
1461
- <react_native_1.View style={{
1806
+ {/* Section 5: Notifications & Toasts */}
1807
+ <react_native_1.View style={{
1462
1808
  backgroundColor: AppColors_1.AppColors.primaryLight,
1463
1809
  borderRadius: 14,
1464
1810
  borderWidth: 1,
@@ -1467,29 +1813,29 @@ const SettingsPanel = () => {
1467
1813
  padding: 14,
1468
1814
  gap: 12,
1469
1815
  }}>
1470
- <react_native_1.Text style={{
1816
+ <react_native_1.Text style={{
1471
1817
  fontFamily: AppFonts_1.AppFonts.interBold,
1472
1818
  fontSize: 11,
1473
1819
  lineHeight: 14,
1474
1820
  color: AppColors_1.AppColors.grayTextWeak,
1475
1821
  letterSpacing: 0.8,
1476
1822
  }}>
1477
- NOTIFICATIONS & TOASTS
1478
- </react_native_1.Text>
1823
+ NOTIFICATIONS & TOASTS
1824
+ </react_native_1.Text>
1479
1825
 
1480
- <react_native_1.View style={{
1826
+ <react_native_1.View style={{
1481
1827
  flexDirection: 'row',
1482
1828
  alignItems: 'center',
1483
1829
  justifyContent: 'space-between',
1484
1830
  }}>
1485
- <react_native_1.View style={{
1831
+ <react_native_1.View style={{
1486
1832
  flexDirection: 'row',
1487
1833
  alignItems: 'center',
1488
1834
  gap: 10,
1489
1835
  flex: 1,
1490
1836
  marginRight: 10,
1491
1837
  }}>
1492
- <react_native_1.View style={{
1838
+ <react_native_1.View style={{
1493
1839
  width: 32,
1494
1840
  height: 32,
1495
1841
  borderRadius: 8,
@@ -1497,30 +1843,31 @@ const SettingsPanel = () => {
1497
1843
  alignItems: 'center',
1498
1844
  justifyContent: 'center',
1499
1845
  }}>
1500
- <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.purple} size={15}/>
1501
- </react_native_1.View>
1502
- <react_native_1.View style={{ flex: 1 }}>
1503
- <react_native_1.Text style={{
1846
+ <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.purple} size={15}/>
1847
+ </react_native_1.View>
1848
+ <react_native_1.View style={{ flex: 1 }}>
1849
+ <react_native_1.Text style={{
1504
1850
  fontFamily: AppFonts_1.AppFonts.interBold,
1505
1851
  fontSize: 13.5,
1506
1852
  lineHeight: 18,
1507
1853
  color: AppColors_1.AppColors.primaryBlack,
1508
1854
  }}>
1509
- NPM Update Toast
1510
- </react_native_1.Text>
1511
- <react_native_1.Text style={{
1855
+ NPM Update Toast
1856
+ </react_native_1.Text>
1857
+ <react_native_1.Text style={{
1512
1858
  fontFamily: AppFonts_1.AppFonts.interRegular,
1513
1859
  fontSize: 11,
1514
1860
  lineHeight: 15,
1515
1861
  color: AppColors_1.AppColors.grayText,
1516
1862
  marginTop: 1,
1517
1863
  }}>
1518
- Show a floating toast banner with countdown progress when a newer release is published on npm.
1519
- </react_native_1.Text>
1520
- </react_native_1.View>
1864
+ Show a floating toast banner with countdown progress when
1865
+ a newer release is published on npm.
1866
+ </react_native_1.Text>
1521
1867
  </react_native_1.View>
1868
+ </react_native_1.View>
1522
1869
 
1523
- <TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle NPM Update Toast" accessibilityState={{ checked: showUpdateToast }} onPress={() => setShowUpdateToast(prev => !prev)} style={{
1870
+ <TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle NPM Update Toast" accessibilityState={{ checked: showUpdateToast }} onPress={() => setShowUpdateToast(prev => !prev)} style={{
1524
1871
  width: 42,
1525
1872
  height: 24,
1526
1873
  borderRadius: 12,
@@ -1531,7 +1878,7 @@ const SettingsPanel = () => {
1531
1878
  justifyContent: 'center',
1532
1879
  alignItems: showUpdateToast ? 'flex-end' : 'flex-start',
1533
1880
  }}>
1534
- <react_native_1.View style={{
1881
+ <react_native_1.View style={{
1535
1882
  width: 20,
1536
1883
  height: 20,
1537
1884
  borderRadius: 10,
@@ -1541,15 +1888,137 @@ const SettingsPanel = () => {
1541
1888
  shadowRadius: 2,
1542
1889
  shadowOffset: { width: 0, height: 1 },
1543
1890
  }}/>
1544
- </TouchableScale_1.default>
1891
+ </TouchableScale_1.default>
1892
+ </react_native_1.View>
1893
+ </react_native_1.View>
1894
+
1895
+ {/* Section 6: NPM Package & Updates */}
1896
+ <react_native_1.View style={{
1897
+ backgroundColor: AppColors_1.AppColors.primaryLight,
1898
+ borderRadius: 14,
1899
+ borderWidth: 1,
1900
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
1901
+ overflow: 'hidden',
1902
+ padding: 14,
1903
+ gap: 12,
1904
+ }}>
1905
+ <react_native_1.Text style={{
1906
+ fontFamily: AppFonts_1.AppFonts.interBold,
1907
+ fontSize: 11,
1908
+ lineHeight: 14,
1909
+ color: AppColors_1.AppColors.grayTextWeak,
1910
+ letterSpacing: 0.8,
1911
+ }}>
1912
+ PACKAGE VERSION & UPDATES
1913
+ </react_native_1.Text>
1914
+
1915
+ <react_native_1.View style={{
1916
+ flexDirection: 'row',
1917
+ alignItems: 'center',
1918
+ justifyContent: 'space-between',
1919
+ }}>
1920
+ <react_native_1.View style={{
1921
+ flexDirection: 'row',
1922
+ alignItems: 'center',
1923
+ gap: 10,
1924
+ flex: 1,
1925
+ marginRight: 8,
1926
+ }}>
1927
+ <react_native_1.View style={{
1928
+ width: 32,
1929
+ height: 32,
1930
+ borderRadius: 8,
1931
+ backgroundColor: '#CB383715',
1932
+ alignItems: 'center',
1933
+ justifyContent: 'center',
1934
+ }}>
1935
+ <NetworkIcons_1.NpmIcon color="#CB3837" size={16}/>
1936
+ </react_native_1.View>
1937
+ <react_native_1.View style={{ flex: 1 }}>
1938
+ <react_native_1.View style={{
1939
+ flexDirection: 'row',
1940
+ alignItems: 'center',
1941
+ gap: 6,
1942
+ }}>
1943
+ <react_native_1.Text style={{
1944
+ fontFamily: AppFonts_1.AppFonts.interBold,
1945
+ fontSize: 13.5,
1946
+ lineHeight: 18,
1947
+ color: AppColors_1.AppColors.primaryBlack,
1948
+ }}>
1949
+ v{constants_1.LIB_VERSION}
1950
+ </react_native_1.Text>
1951
+ {updateAvailable ? (<react_native_1.View style={{
1952
+ backgroundColor: '#F59E0B20',
1953
+ paddingHorizontal: 6,
1954
+ paddingVertical: 1.5,
1955
+ borderRadius: 5,
1956
+ borderWidth: 1,
1957
+ borderColor: '#F59E0B60',
1958
+ }}>
1959
+ <react_native_1.Text style={{
1960
+ fontFamily: AppFonts_1.AppFonts.interBold,
1961
+ fontSize: 9.5,
1962
+ color: '#D97706',
1963
+ }}>
1964
+ v{latestNpmVersion} Available ⚡
1965
+ </react_native_1.Text>
1966
+ </react_native_1.View>) : (<react_native_1.View style={{
1967
+ backgroundColor: `${AppColors_1.AppColors.emerald500}20`,
1968
+ paddingHorizontal: 6,
1969
+ paddingVertical: 1.5,
1970
+ borderRadius: 5,
1971
+ borderWidth: 1,
1972
+ borderColor: `${AppColors_1.AppColors.emerald500}50`,
1973
+ }}>
1974
+ <react_native_1.Text style={{
1975
+ fontFamily: AppFonts_1.AppFonts.interBold,
1976
+ fontSize: 9.5,
1977
+ color: AppColors_1.AppColors.emerald600,
1978
+ }}>
1979
+ Up to date
1980
+ </react_native_1.Text>
1981
+ </react_native_1.View>)}
1982
+ </react_native_1.View>
1983
+ <react_native_1.Text style={{
1984
+ fontFamily: AppFonts_1.AppFonts.interRegular,
1985
+ fontSize: 11,
1986
+ lineHeight: 15,
1987
+ color: AppColors_1.AppColors.grayText,
1988
+ marginTop: 1,
1989
+ }}>
1990
+ {updateAvailable
1991
+ ? `A newer version (v${latestNpmVersion}) is available on npm registry.`
1992
+ : 'You are running the latest version from npm registry.'}
1993
+ </react_native_1.Text>
1994
+ </react_native_1.View>
1545
1995
  </react_native_1.View>
1996
+
1997
+ {updateAvailable && (<TouchableScale_1.default onPress={() => {
1998
+ (0, helpers_1.copyToClipboard)('npm install react-native-inapp-inspector@latest', 'Install Command');
1999
+ (0, toast_1.showToast)('Copied npm install command!');
2000
+ }} style={{
2001
+ backgroundColor: AppColors_1.AppColors.purple,
2002
+ paddingVertical: 6,
2003
+ paddingHorizontal: 10,
2004
+ borderRadius: 8,
2005
+ }}>
2006
+ <react_native_1.Text style={{
2007
+ fontFamily: AppFonts_1.AppFonts.interBold,
2008
+ fontSize: 11,
2009
+ color: AppColors_1.AppColors.white,
2010
+ }}>
2011
+ Copy Upgrade
2012
+ </react_native_1.Text>
2013
+ </TouchableScale_1.default>)}
1546
2014
  </react_native_1.View>
1547
- </react_native_1.View>)}
1548
- <react_native_1.View style={{ height: 48 }}/>
1549
- </react_native_1.ScrollView>
2015
+ </react_native_1.View>
2016
+ </react_native_1.View>)}
2017
+ <react_native_1.View style={{ height: 48 }}/>
2018
+ </react_native_1.ScrollView>
1550
2019
 
1551
- {/* Bottom Sticky Action Bar for Save Changes */}
1552
- {settingsActiveSubTab === 'module' && (<react_native_1.View style={{
2020
+ {/* Bottom Sticky Action Bar for Save Changes */}
2021
+ {settingsActiveSubTab === 'module' && (<react_native_1.View style={{
1553
2022
  paddingHorizontal: 16,
1554
2023
  paddingTop: 12,
1555
2024
  paddingBottom: react_native_1.Platform.OS === 'ios' ? 36 : 24,
@@ -1565,16 +2034,16 @@ const SettingsPanel = () => {
1565
2034
  shadowOffset: { width: 0, height: -3 },
1566
2035
  elevation: 8,
1567
2036
  }}>
1568
- <react_native_1.View style={{ flex: 1 }}>
1569
- <react_native_1.Text style={{
2037
+ <react_native_1.View style={{ flex: 1 }}>
2038
+ <react_native_1.Text style={{
1570
2039
  fontFamily: AppFonts_1.AppFonts.interBold,
1571
2040
  fontSize: 13,
1572
2041
  lineHeight: 17,
1573
2042
  color: AppColors_1.AppColors.primaryBlack,
1574
2043
  }}>
1575
- {stagedActiveCount} of {allModules.length} Modules Active
1576
- </react_native_1.Text>
1577
- <react_native_1.Text style={{
2044
+ {stagedActiveCount} of {allModules.length} Modules Active
2045
+ </react_native_1.Text>
2046
+ <react_native_1.Text style={{
1578
2047
  fontFamily: AppFonts_1.AppFonts.interRegular,
1579
2048
  fontSize: 11,
1580
2049
  lineHeight: 15,
@@ -1583,13 +2052,13 @@ const SettingsPanel = () => {
1583
2052
  : AppColors_1.AppColors.grayText,
1584
2053
  marginTop: 1,
1585
2054
  }}>
1586
- {hasUnsavedChanges
2055
+ {hasUnsavedChanges
1587
2056
  ? t('settings.unsavedPending')
1588
2057
  : t('settings.allSynchronized')}
1589
- </react_native_1.Text>
1590
- </react_native_1.View>
2058
+ </react_native_1.Text>
2059
+ </react_native_1.View>
1591
2060
 
1592
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel="Save Changes" onPress={handleSaveChanges} style={{
2061
+ <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel="Save Changes" onPress={handleSaveChanges} style={{
1593
2062
  flexDirection: 'row',
1594
2063
  alignItems: 'center',
1595
2064
  gap: 6,
@@ -1600,18 +2069,18 @@ const SettingsPanel = () => {
1600
2069
  paddingVertical: 10,
1601
2070
  borderRadius: 10,
1602
2071
  }}>
1603
- <NetworkIcons_1.CheckIcon size={14} color={hasUnsavedChanges ? AppColors_1.AppColors.white : AppColors_1.AppColors.purple}/>
1604
- <react_native_1.Text style={{
2072
+ <NetworkIcons_1.CheckIcon size={14} color={hasUnsavedChanges ? AppColors_1.AppColors.white : AppColors_1.AppColors.purple}/>
2073
+ <react_native_1.Text style={{
1605
2074
  fontFamily: AppFonts_1.AppFonts.interBold,
1606
2075
  fontSize: 13,
1607
2076
  lineHeight: 17,
1608
2077
  color: hasUnsavedChanges ? AppColors_1.AppColors.white : AppColors_1.AppColors.purple,
1609
2078
  }}>
1610
- {t('settings.saveChanges')}
1611
- </react_native_1.Text>
1612
- </TouchableScale_1.default>
1613
- </react_native_1.View>)}
1614
- </react_native_1.View>);
2079
+ {t('settings.saveChanges')}
2080
+ </react_native_1.Text>
2081
+ </TouchableScale_1.default>
2082
+ </react_native_1.View>)}
2083
+ </react_native_1.View>);
1615
2084
  let content = null;
1616
2085
  let title = '';
1617
2086
  let icon = null;
@@ -1653,7 +2122,9 @@ const SettingsPanel = () => {
1653
2122
  {renderSettingRow({
1654
2123
  icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1655
2124
  label: t('settings.apis.clearNetworkLogs'),
1656
- description: t('settings.apis.clearNetworkLogsDescription', { count: logs.length }),
2125
+ description: t('settings.apis.clearNetworkLogsDescription', {
2126
+ count: logs.length,
2127
+ }),
1657
2128
  isLast: true,
1658
2129
  onPress: () => {
1659
2130
  (0, networkLogger_1.clearNetworkLogs)();
@@ -1840,9 +2311,7 @@ const SettingsPanel = () => {
1840
2311
  : AppColors_1.AppColors.grayBorderSecondary,
1841
2312
  padding: 2,
1842
2313
  justifyContent: 'center',
1843
- alignItems: showDuplicateLogs
1844
- ? 'flex-end'
1845
- : 'flex-start',
2314
+ alignItems: showDuplicateLogs ? 'flex-end' : 'flex-start',
1846
2315
  }}>
1847
2316
  <react_native_1.View style={{
1848
2317
  width: 20,
@@ -1868,7 +2337,9 @@ const SettingsPanel = () => {
1868
2337
  {renderSettingRow({
1869
2338
  icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
1870
2339
  label: t('settings.logs.clearConsoleLogs'),
1871
- description: t('settings.logs.clearConsoleLogsDescription', { count: consoleLogs.length }),
2340
+ description: t('settings.logs.clearConsoleLogsDescription', {
2341
+ count: consoleLogs.length,
2342
+ }),
1872
2343
  isLast: true,
1873
2344
  onPress: () => {
1874
2345
  (0, consoleLogger_1.clearConsoleLogs)();
@@ -1911,7 +2382,9 @@ const SettingsPanel = () => {
1911
2382
  {renderSettingRow({
1912
2383
  icon: <NetworkIcons_1.AnalyticsIcon color={AppColors_1.AppColors.purple} size={16}/>,
1913
2384
  label: t('settings.analytics.maxAnalyticsEvents'),
1914
- description: t('settings.analytics.maxAnalyticsEventsDescription', { count: analyticsEvents.length }),
2385
+ description: t('settings.analytics.maxAnalyticsEventsDescription', {
2386
+ count: analyticsEvents.length,
2387
+ }),
1915
2388
  numericInput: {
1916
2389
  value: maxAnalyticsEventsLimit,
1917
2390
  onChange: setMaxAnalyticsEventsLimit,
@@ -1964,7 +2437,9 @@ const SettingsPanel = () => {
1964
2437
  else if (settingsPage === 'redux') {
1965
2438
  title = t('settings.redux.title');
1966
2439
  icon = <NetworkIcons_1.ReduxIcon color={AppColors_1.AppColors.white} size={16}/>;
1967
- rightInfo = t('settings.redux.reducers', { count: Object.keys(reduxState || {}).length });
2440
+ rightInfo = t('settings.redux.reducers', {
2441
+ count: Object.keys(reduxState || {}).length,
2442
+ });
1968
2443
  content = (<react_native_1.ScrollView style={{ flex: 1 }} contentContainerStyle={{ padding: 16, paddingBottom: 100, gap: 12 }}>
1969
2444
  <react_native_1.View style={{
1970
2445
  backgroundColor: AppColors_1.AppColors.primaryLight,
@@ -2109,7 +2584,9 @@ const SettingsPanel = () => {
2109
2584
  {renderSettingRow({
2110
2585
  icon: <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor} size={16}/>,
2111
2586
  label: t('settings.crash.clearHistory'),
2112
- description: t('settings.crash.clearHistoryDesc', { count: crashRecords?.length || 0 }),
2587
+ description: t('settings.crash.clearHistoryDesc', {
2588
+ count: crashRecords?.length || 0,
2589
+ }),
2113
2590
  isLast: true,
2114
2591
  onPress: () => {
2115
2592
  (0, crashHandler_1.clearCrashRecords)();