react-native-inapp-inspector 2.3.25 → 2.4.1

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 (125) hide show
  1. package/README.md +26 -5
  2. package/dist/commonjs/components/AnalyticsDetail.js +9 -6
  3. package/dist/commonjs/components/AppHeaderLogo.js +4 -6
  4. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +1 -1
  5. package/dist/commonjs/components/Inspector/AnalyticsTab.js +18 -22
  6. package/dist/commonjs/components/Inspector/ConsoleTab.js +13 -16
  7. package/dist/commonjs/components/Inspector/CrashDetail.js +7 -6
  8. package/dist/commonjs/components/Inspector/CrashTab.js +23 -23
  9. package/dist/commonjs/components/Inspector/DebuggingTab.js +6 -6
  10. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +77 -43
  11. package/dist/commonjs/components/Inspector/FabLauncher.js +8 -9
  12. package/dist/commonjs/components/Inspector/InspectorHeader.js +93 -70
  13. package/dist/commonjs/components/Inspector/LogDetail.js +10 -7
  14. package/dist/commonjs/components/Inspector/MainScreen.js +67 -29
  15. package/dist/commonjs/components/Inspector/NetworkDetail.js +29 -28
  16. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +1 -1
  17. package/dist/commonjs/components/Inspector/NetworkTab.js +87 -85
  18. package/dist/commonjs/components/Inspector/PushCard.d.ts +4 -0
  19. package/dist/commonjs/components/Inspector/PushCard.js +89 -0
  20. package/dist/commonjs/components/Inspector/PushDetail.d.ts +4 -0
  21. package/dist/commonjs/components/Inspector/PushDetail.js +190 -0
  22. package/dist/commonjs/components/Inspector/PushTab.d.ts +3 -0
  23. package/dist/commonjs/components/Inspector/PushTab.js +45 -0
  24. package/dist/commonjs/components/Inspector/ReduxDetail.js +16 -13
  25. package/dist/commonjs/components/Inspector/ReduxTab.js +18 -28
  26. package/dist/commonjs/components/Inspector/SettingsPanel.js +253 -105
  27. package/dist/commonjs/components/Inspector/StorageTab.js +40 -40
  28. package/dist/commonjs/components/Inspector/TabBar.js +9 -8
  29. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -2
  30. package/dist/commonjs/components/JsonViewer.js +77 -90
  31. package/dist/commonjs/components/LogCard.js +9 -6
  32. package/dist/commonjs/components/ModuleErrorBoundary.d.ts +24 -0
  33. package/dist/commonjs/components/ModuleErrorBoundary.js +33 -0
  34. package/dist/commonjs/components/NetworkIcons.d.ts +3 -3
  35. package/dist/commonjs/components/NetworkIcons.js +10 -6
  36. package/dist/commonjs/components/SegmentedTabs.d.ts +4 -1
  37. package/dist/commonjs/components/SegmentedTabs.js +12 -8
  38. package/dist/commonjs/components/ShareButton.d.ts +11 -0
  39. package/dist/commonjs/components/ShareButton.js +6 -0
  40. package/dist/commonjs/constants/version.d.ts +1 -1
  41. package/dist/commonjs/constants/version.js +1 -1
  42. package/dist/commonjs/customHooks/crashHandler.js +4 -4
  43. package/dist/commonjs/customHooks/networkLogger.js +1 -1
  44. package/dist/commonjs/customHooks/pushNotificationLogger.d.ts +19 -0
  45. package/dist/commonjs/customHooks/pushNotificationLogger.js +1 -0
  46. package/dist/commonjs/helpers/memoryManager.d.ts +2 -1
  47. package/dist/commonjs/helpers/memoryManager.js +1 -1
  48. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  49. package/dist/commonjs/helpers/settingsStore.js +1 -1
  50. package/dist/commonjs/helpers/shareFormatter.d.ts +13 -0
  51. package/dist/commonjs/helpers/shareFormatter.js +7 -0
  52. package/dist/commonjs/i18n/locales/en.json +1 -1
  53. package/dist/commonjs/index.d.ts +5 -2
  54. package/dist/commonjs/index.js +4 -4
  55. package/dist/commonjs/push.d.ts +4 -0
  56. package/dist/commonjs/push.js +1 -0
  57. package/dist/commonjs/types/enums.d.ts +30 -0
  58. package/dist/commonjs/types/enums.js +1 -1
  59. package/dist/commonjs/types/index.d.ts +10 -0
  60. package/dist/commonjs/types/interfaces.d.ts +63 -7
  61. package/dist/esm/components/AnalyticsDetail.js +28 -25
  62. package/dist/esm/components/AppHeaderLogo.js +5 -7
  63. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +14 -14
  64. package/dist/esm/components/Inspector/AnalyticsTab.js +36 -40
  65. package/dist/esm/components/Inspector/ConsoleTab.js +52 -55
  66. package/dist/esm/components/Inspector/CrashDetail.js +11 -10
  67. package/dist/esm/components/Inspector/CrashTab.js +23 -23
  68. package/dist/esm/components/Inspector/DebuggingTab.js +10 -10
  69. package/dist/esm/components/Inspector/DeviceInfoTab.js +208 -174
  70. package/dist/esm/components/Inspector/FabLauncher.js +41 -42
  71. package/dist/esm/components/Inspector/InspectorHeader.js +138 -115
  72. package/dist/esm/components/Inspector/LogDetail.js +24 -21
  73. package/dist/esm/components/Inspector/MainScreen.js +100 -62
  74. package/dist/esm/components/Inspector/NetworkDetail.js +88 -87
  75. package/dist/esm/components/Inspector/NetworkFilterModal.js +8 -8
  76. package/dist/esm/components/Inspector/NetworkTab.js +136 -134
  77. package/dist/esm/components/Inspector/PushCard.d.ts +4 -0
  78. package/dist/esm/components/Inspector/PushCard.js +89 -0
  79. package/dist/esm/components/Inspector/PushDetail.d.ts +4 -0
  80. package/dist/esm/components/Inspector/PushDetail.js +190 -0
  81. package/dist/esm/components/Inspector/PushTab.d.ts +3 -0
  82. package/dist/esm/components/Inspector/PushTab.js +45 -0
  83. package/dist/esm/components/Inspector/ReduxDetail.js +40 -37
  84. package/dist/esm/components/Inspector/ReduxTab.js +109 -119
  85. package/dist/esm/components/Inspector/SettingsPanel.js +406 -258
  86. package/dist/esm/components/Inspector/StorageTab.js +174 -174
  87. package/dist/esm/components/Inspector/TabBar.js +28 -27
  88. package/dist/esm/components/Inspector/UpdateAvailableModal.js +1 -1
  89. package/dist/esm/components/JsonViewer.js +101 -114
  90. package/dist/esm/components/LogCard.js +25 -22
  91. package/dist/esm/components/ModuleErrorBoundary.d.ts +24 -0
  92. package/dist/esm/components/ModuleErrorBoundary.js +33 -0
  93. package/dist/esm/components/NetworkIcons.d.ts +3 -3
  94. package/dist/esm/components/NetworkIcons.js +7 -3
  95. package/dist/esm/components/SegmentedTabs.d.ts +4 -1
  96. package/dist/esm/components/SegmentedTabs.js +12 -8
  97. package/dist/esm/components/ShareButton.d.ts +11 -0
  98. package/dist/esm/components/ShareButton.js +6 -0
  99. package/dist/esm/constants/version.d.ts +1 -1
  100. package/dist/esm/constants/version.js +1 -1
  101. package/dist/esm/customHooks/crashHandler.js +6 -6
  102. package/dist/esm/customHooks/networkLogger.js +1 -1
  103. package/dist/esm/customHooks/pushNotificationLogger.d.ts +19 -0
  104. package/dist/esm/customHooks/pushNotificationLogger.js +1 -0
  105. package/dist/esm/helpers/memoryManager.d.ts +2 -1
  106. package/dist/esm/helpers/memoryManager.js +1 -1
  107. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  108. package/dist/esm/helpers/settingsStore.js +1 -1
  109. package/dist/esm/helpers/shareFormatter.d.ts +13 -0
  110. package/dist/esm/helpers/shareFormatter.js +7 -0
  111. package/dist/esm/i18n/locales/en.json +1 -1
  112. package/dist/esm/index.d.ts +5 -2
  113. package/dist/esm/index.js +7 -7
  114. package/dist/esm/push.d.ts +4 -0
  115. package/dist/esm/push.js +1 -0
  116. package/dist/esm/types/enums.d.ts +30 -0
  117. package/dist/esm/types/enums.js +1 -1
  118. package/dist/esm/types/index.d.ts +10 -0
  119. package/dist/esm/types/interfaces.d.ts +63 -7
  120. package/package.json +53 -10
  121. package/src/native/NativeInspector.ts +0 -1
  122. package/dist/commonjs/components/BrandSquareIcon.d.ts +0 -5
  123. package/dist/commonjs/components/BrandSquareIcon.js +0 -112
  124. package/dist/esm/components/BrandSquareIcon.d.ts +0 -5
  125. package/dist/esm/components/BrandSquareIcon.js +0 -112
@@ -1,188 +1,189 @@
1
- import{useMemo as Qe,useState as We,useEffect as Ae,useRef as ro}from"react";import{Alert as A,Animated as Pe,DevSettings as $e,Platform as Me,ScrollView as P,StatusBar as oo,StyleSheet as Xe,Text as S,TextInput as Co,View as C}from"react-native";import So,{Path as Ye}from"react-native-svg";import{animateNextLayout as Q,useInspector as To}from"./InspectorContext";import I from"../TouchableScale";import Vo from"../Slider";import{toggleGlobalTheme as Bo}from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as k}from"../../styles/AppFonts";import{isPersistentStorageAvailable as Ro,calculateRamBasedLimits as zo}from"../../helpers/settingsStore";import{clearNetworkLogs as vo}from"../../customHooks/networkLogger";import{clearConsoleLogs as Io}from"../../customHooks/consoleLogger";import{clearAnalyticsEvents as Ho}from"../../customHooks/analyticsLogger";import{clearCrashRecords as Do}from"../../customHooks/crashHandler";import{isReduxConnected as Lo}from"../../customHooks/reduxLogger";import{isAnalyticsConnected as Fo}from"../../customHooks/analyticsLogger";import{useTranslation as Wo}from"../../i18n";import{SignalIcon as Z,TerminalIcon as Oe,AnalyticsIcon as Ee,SettingsIcon as Ao,SunIcon as Po,MoonIcon as $o,ScreenIcon as Ze,MotionIcon as Mo,LayersIcon as Ce,EyeIcon as Cr,CheckIcon as $,TrashIcon as M,PackageIcon as Oo,ReduxIcon as Ne,CrashIcon as Sr,ShieldAlertIcon as Tr,ForwardChevronIcon as Eo,ChevronDownIcon as No,BrainIcon as Vr,SmartphoneIcon as Go,DatabaseIcon as Uo,QrCodeIcon as Jo,FilmIcon as _o,ScreencastIcon as Ko,CameraIcon as Br,VideoCameraIcon as Qo,MicrophoneIcon as Xo,GifIcon as Yo,ImageIcon as Zo}from"../NetworkIcons";import{ScreenCapture as et}from"../../capture";import{isLocalDebugEnvironment as rt}from"../../helpers";import{showToast as Rr}from"../../helpers/toast";import{pruneAllLogs as ot}from"../../helpers/memoryManager";const tt=()=>{const{t:x}=Wo(),{settingsPage:F,setSettingsPage:xe,settingsActiveSubTab:O,setSettingsActiveSubTab:zr,tabVisibility:V,toggleTabVisibility:vr,defaultTab:E,setDefaultTab:Ir,isDark:G,setIsDark:Hr,modalHeightPercent:U,setModalHeightPercent:Dr,modalAnimationType:Lr,setModalAnimationType:Fr,showDuplicateLogs:ke,setShowDuplicateLogs:Wr,showUpdateToast:Se,setShowUpdateToast:Ar,showConsoleLevels:Pr,setShowConsoleLevels:$r,resetToDefaults:it,closeModal:Mr,storage:lt,logs:Te,consoleLogs:Ve,analyticsEvents:Be,reduxState:Re,maxNetworkLogs:ze,setMaxNetworkLogs:Or,maxConsoleLogs:ve,setMaxConsoleLogs:Er,maxAnalyticsEventsLimit:Ge,setMaxAnalyticsEventsLimit:jr,isAutoRamLimitEnabled:z,setIsAutoRamLimitEnabled:Nr,deviceFreeRamMb:Ie,reduxAutoRefresh:He,setReduxAutoRefreshState:Gr,reduxExpandDepth:Ue,setReduxExpandDepth:Ur,switchActiveTab:at,setSelected:qr,setSelectedEvent:Jr,setReduxState:_r,crashRecords:De,maxCrashLogs:qe,setMaxCrashLogs:Kr,updateAvailable:nt,latestNpmVersion:st}=To(),[X,Je]=We(U);Ae(()=>{Je(U)},[U]);const q=zo(Ie),dt=Ro(),Qr=Me.OS==="android"?oo.currentHeight||24:44,ct=U>=95?Qr:0,D=Qe(()=>[{id:1,key:"apis",label:"APIs (Network)",category:"core",icon:"apis",desc:"HTTP/HTTPS requests, GraphQL, Axios & WebSocket inspector"},{id:2,key:"logs",label:"Console Logs",category:"core",icon:"logs",desc:"Terminal console logs, warnings, errors & stack traces"},{id:3,key:"analytics",label:"Analytics Logger",category:"telemetry",icon:"analytics",desc:"Firebase & custom analytics events, user properties & params"},{id:4,key:"redux",label:"Redux Inspector",category:"telemetry",icon:"redux",desc:"Store state diffing, action history & reducer timeline"},{id:5,key:"storage",label:"Storage Inspector",category:"telemetry",icon:"storage",desc:"AsyncStorage & MMKV key-value store viewer with full CRUD support"},{id:6,key:"device",label:"Device Info",category:"diagnostic",icon:"device",desc:"Hardware specs, IP address, screen metrics, UDID & runtime stats"},{id:7,key:"crash",label:"Crash Protection",category:"diagnostic",icon:"crash",desc:"Runtime exception guard, breadcrumbs & memory snapshot"},{id:8,key:"debugging",label:"Multi-Device Debugging",category:"diagnostic",icon:"debugging",desc:"QR Code bridge for direct Debug APK download & Metro live-reload sync"},{id:9,key:"media",label:"Screencast",category:"diagnostic",icon:"media",desc:"Screenshots, video recordings, audio narration & animated GIFs"}].filter(r=>r.key==="debugging"?Me.OS==="android"&&rt():!0),[]),[W,Le]=We(()=>({apis:!0,logs:!!V?.logs,analytics:!!V?.analytics,redux:!!V?.redux,storage:!!V?.storage,device:!!V?.device,crash:!!V?.crash,debugging:!!V?.debugging,media:!!(V?.media??!0)}));Ae(()=>{Le({apis:!0,logs:!!V?.logs,analytics:!!V?.analytics,redux:!!V?.redux,storage:!!V?.storage,device:!!V?.device,crash:!!V?.crash,debugging:!!V?.debugging,media:!!(V?.media??!0)})},[V]);const j=Qe(()=>D.some(r=>!!W[r.key]!=!!V?.[r.key]),[W,V,D]),Xr=D.filter(r=>r.key==="apis"||!!W[r.key]).length,Yr=()=>{j&&A.alert("Apply Changes & Reload","Are you sure you want to save module changes? The inspector will close and reload the app to apply the new configuration.",[{text:"Cancel",style:"cancel",onPress:()=>{Le({apis:!0,logs:!!V?.logs,analytics:!!V?.analytics,redux:!!V?.redux,storage:!!V?.storage,device:!!V?.device,crash:!!V?.crash,debugging:!!V?.debugging,media:!!(V?.media??!0)})}},{text:"Save & Reload",style:"default",onPress:()=>{Q(),D.forEach(r=>{if(r.key!=="apis"){const T=!!W[r.key],H=!!V?.[r.key];T!==H&&vr(r.key)}}),Mr(),setTimeout(()=>{__DEV__&&$e&&$e.reload&&$e.reload()},350)}}])},[Fe,_e]=We(!1),gt=()=>{Q(),xe("main")},R=r=><C style={{paddingVertical:12,borderBottomWidth:r.isLast?0:1,borderBottomColor:e.dividerColor}}>
2
- <I disabled={!r.onPress}onPress={r.onPress}style={{flexDirection:"row",alignItems:"center",gap:12}}>
1
+ import{useMemo as Qe,useState as G,useEffect as Re,useRef as yo}from"react";import{Alert as O,Animated as Fe,DevSettings as He,Platform as Xe,ScrollView as M,StyleSheet as Ye,Text as S,TextInput as Co,View as C}from"react-native";import So,{Path as Ze}from"react-native-svg";import{animateNextLayout as ie,useInspector as ko}from"./InspectorContext";import V from"../TouchableScale";import To from"../Slider";import{toggleGlobalTheme as Vo}from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as x}from"../../styles/AppFonts";import{calculateRamBasedLimits as Bo}from"../../helpers/settingsStore";import{clearNetworkLogs as zo}from"../../customHooks/networkLogger";import{clearConsoleLogs as Ro}from"../../customHooks/consoleLogger";import{clearAnalyticsEvents as Fo}from"../../customHooks/analyticsLogger";import{clearCrashRecords as Ho}from"../../customHooks/crashHandler";import{isReduxConnected as Io}from"../../customHooks/reduxLogger";import{isAnalyticsConnected as vo}from"../../customHooks/analyticsLogger";import{useTranslation as Do}from"../../i18n";import{SignalIcon as Cr,TerminalIcon as Sr,AnalyticsIcon as Tr,SettingsIcon as Po,SunIcon as $o,MoonIcon as Lo,ScreenIcon as Vr,MotionIcon as Wo,LayersIcon as Q,EyeIcon as Ie,CheckIcon as U,TrashIcon as E,PackageIcon as Ao,ReduxIcon as Br,CrashIcon as Oo,ShieldAlertIcon as Rr,ForwardChevronIcon as Mo,ChevronDownIcon as Eo,BrainIcon as Fr,SmartphoneIcon as No,DatabaseIcon as Go,QrCodeIcon as Uo,FilmIcon as Hr,ScreencastIcon as Jo,CameraIcon as Ce,VideoCameraIcon as Ir,MicrophoneIcon as Dr,GifIcon as Pr,ImageIcon as $r,BellIcon as Lr}from"../NetworkIcons";import{ScreenCapture as ve}from"../../capture";import{triggerNativeHaptic as H}from"../../native/NativeInspector";import{isLocalDebugEnvironment as Ko}from"../../helpers";import{showToast as R}from"../../helpers/toast";import{pruneAllLogs as _o}from"../../helpers/memoryManager";const Qo=()=>{const{t:w}=Do(),{settingsPage:A,setSettingsPage:De,settingsActiveSubTab:q,setSettingsActiveSubTab:Wr,tabVisibility:T,toggleTabVisibility:Ar,defaultTab:J,setDefaultTab:Or,isDark:_,setIsDark:Mr,modalHeightPercent:X,setModalHeightPercent:Er,modalAnimationType:Nr,setModalAnimationType:Gr,showDuplicateLogs:we,setShowDuplicateLogs:jr,showUpdateToast:xe,setShowUpdateToast:Ur,showConsoleLevels:qr,setShowConsoleLevels:Jr,closeModal:Kr,logs:Pe,consoleLogs:$e,analyticsEvents:Le,reduxState:We,maxConsoleLogs:Se,setMaxConsoleLogs:_r,maxAnalyticsEventsLimit:Ae,setMaxAnalyticsEventsLimit:Qr,isAutoRamLimitEnabled:I,setIsAutoRamLimitEnabled:Xr,deviceFreeRamMb:ke,reduxAutoRefresh:Te,setReduxAutoRefreshState:Yr,reduxExpandDepth:Oe,setReduxExpandDepth:Zr,setSelected:eo,setSelectedEvent:ro,setReduxState:oo,crashRecords:Me,maxCrashLogs:Ee,setMaxCrashLogs:to,pushRecords:io,maxPushLogs:lo,setMaxPushLogs:ao,clearAllPushLogs:no,simulatePush:Y}=ko(),[Z,Ne]=G(X),[Ve,Ge]=G("PNG"),[P,ee]=G(!0),[je,Ue]=G("Muted"),[qe,Je]=G("30"),[L,re]=G(!0);Re(()=>{Ne(X)},[X]);const oe=Bo(ke),$=Qe(()=>[{id:1,key:"apis",label:"APIs (Network)",category:"core",icon:"apis",desc:"HTTP/HTTPS requests, GraphQL, Axios & WebSocket inspector"},{id:2,key:"logs",label:"Console Logs",category:"core",icon:"logs",desc:"Terminal console logs, warnings, errors & stack traces"},{id:3,key:"analytics",label:"Analytics Logger",category:"telemetry",icon:"analytics",desc:"Firebase & custom analytics events, user properties & params"},{id:4,key:"redux",label:"Redux Inspector",category:"telemetry",icon:"redux",desc:"Store state diffing, action history & reducer timeline"},{id:5,key:"storage",label:"Storage Inspector",category:"telemetry",icon:"storage",desc:"AsyncStorage & MMKV key-value store viewer with full CRUD support"},{id:6,key:"device",label:"Device Info",category:"diagnostic",icon:"device",desc:"Hardware specs, IP address, screen metrics, UDID & runtime stats"},{id:7,key:"crash",label:"Crash Protection",category:"diagnostic",icon:"crash",desc:"Runtime exception guard, breadcrumbs & memory snapshot"},{id:8,key:"debugging",label:"Multi-Device Debugging",category:"diagnostic",icon:"debugging",desc:"QR Code bridge for direct Debug APK download & Metro live-reload sync"},{id:9,key:"media",label:"Screencast",category:"diagnostic",icon:"media",desc:"Screenshots, video recordings, audio narration & animated GIFs"},{id:10,key:"push",label:"Push Notifications",category:"telemetry",icon:"push",desc:"Universal push & local notification logger (Salesforce, FCM, APNs, Braze, Expo)"}].filter(r=>r.key==="debugging"?Xe.OS==="android"&&Ko():!0),[]),[j,Be]=G(()=>({apis:!0,logs:!!T?.logs,analytics:!!T?.analytics,redux:!!T?.redux,storage:!!T?.storage,device:!!T?.device,crash:!!T?.crash,debugging:!!T?.debugging,media:!!(T?.media??!0),push:!!(T?.push??!0)}));Re(()=>{Be({apis:!0,logs:!!T?.logs,analytics:!!T?.analytics,redux:!!T?.redux,storage:!!T?.storage,device:!!T?.device,crash:!!T?.crash,debugging:!!T?.debugging,media:!!(T?.media??!0),push:!!(T?.push??!0)})},[T]);const K=Qe(()=>$.some(r=>!!j[r.key]!=!!T?.[r.key]),[j,T,$]),so=$.filter(r=>r.key==="apis"||!!j[r.key]).length,co=()=>{K&&O.alert("Apply Changes & Reload","Are you sure you want to save module changes? The inspector will close and reload the app to apply the new configuration.",[{text:"Cancel",style:"cancel",onPress:()=>{Be({apis:!0,logs:!!T?.logs,analytics:!!T?.analytics,redux:!!T?.redux,storage:!!T?.storage,device:!!T?.device,crash:!!T?.crash,debugging:!!T?.debugging,media:!!(T?.media??!0),push:!!(T?.push??!0)})}},{text:"Save & Reload",style:"default",onPress:()=>{ie(),$.forEach(r=>{if(r.key!=="apis"){const k=!!j[r.key],D=!!T?.[r.key];k!==D&&Ar(r.key)}}),Kr(),setTimeout(()=>{__DEV__&&He&&He.reload&&He.reload()},350)}}])},[ze,Ke]=G(!1),z=r=><C style={{paddingVertical:12,borderBottomWidth:r.isLast?0:1,borderBottomColor:e.dividerColor}}>
2
+ <V disabled={!r.onPress}onPress={r.onPress}style={{flexDirection:"row",alignItems:"center",gap:12}}>
3
3
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,borderWidth:1,borderColor:`${e.purple}2E`,alignItems:"center",justifyContent:"center"}}>
4
4
  {r.icon}
5
5
  </C>
6
6
  <C style={{flex:1}}>
7
- <S style={{fontFamily:k.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
7
+ <S style={{fontFamily:x.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
8
8
  {r.label}
9
9
  </S>
10
- {r.description?<S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
10
+ {r.description?<S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
11
11
  {r.description}
12
12
  </S>:null}
13
13
  </C>
14
14
  {r.right||null}
15
- </I>
15
+ </V>
16
16
  {r.numericInput&&<C style={{marginTop:10,gap:6}}>
17
17
  <C style={{flexDirection:"row",alignItems:"center",backgroundColor:e.grayBackground,borderRadius:8,borderWidth:1,borderColor:e.dividerColor,paddingHorizontal:12,paddingVertical:4}}>
18
- <Co style={{flex:1,fontFamily:k.interMedium,fontSize:14,lineHeight:18,color:e.primaryBlack,paddingVertical:6}}value={String(r.numericInput.value||"")}onChangeText={T=>{const H=parseInt(T.replace(/[^0-9]/g,""),10);if(!isNaN(H)){const v=Math.max(r.numericInput?.min??1,Math.min(r.numericInput?.max??1e4,H));r.numericInput?.onChange(v)}}}keyboardType={r.numericInput.keyboardType??"number-pad"}placeholder={r.numericInput.placeholder}placeholderTextColor={e.grayTextWeak}maxLength={6}selectTextOnFocus/>
19
- <S style={{fontFamily:k.interBold,fontSize:11,color:e.purple,marginLeft:6}}>
18
+ <Co style={{flex:1,fontFamily:x.interMedium,fontSize:14,lineHeight:18,color:e.primaryBlack,paddingVertical:6}}value={String(r.numericInput.value||"")}onChangeText={k=>{const D=parseInt(k.replace(/[^0-9]/g,""),10);if(!isNaN(D)){const F=Math.max(r.numericInput?.min??1,Math.min(r.numericInput?.max??1e4,D));r.numericInput?.onChange(F)}}}keyboardType={r.numericInput.keyboardType??"number-pad"}placeholder={r.numericInput.placeholder}placeholderTextColor={e.grayTextWeak}maxLength={6}selectTextOnFocus/>
19
+ <S style={{fontFamily:x.interBold,fontSize:11,color:e.purple,marginLeft:6}}>
20
20
  MAX
21
21
  </S>
22
22
  </C>
23
- {r.numericInput.min!==void 0||r.numericInput.max!==void 0?<S style={{fontFamily:k.interRegular,fontSize:10,lineHeight:13,color:e.grayTextWeak}}>
23
+ {r.numericInput.min!==void 0||r.numericInput.max!==void 0?<S style={{fontFamily:x.interRegular,fontSize:10,lineHeight:13,color:e.grayTextWeak}}>
24
24
  Range: {r.numericInput.min??1} -{" "}
25
25
  {r.numericInput.max??"\u221E"}
26
26
  </S>:null}
27
27
  </C>}
28
28
  {r.picker&&<C style={{flexDirection:"row",backgroundColor:e.grayBackground,borderRadius:8,padding:2.5,marginTop:10,borderWidth:1,borderColor:e.dividerColor}}>
29
- {r.picker.options.map(T=>{const H=r.picker.selectedValue===T;return<I key={String(T)}onPress={()=>r.picker.onSelect(T)}style={{flex:1,paddingVertical:6,alignItems:"center",borderRadius:6,backgroundColor:H?e.purple:"transparent"}}>
30
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:H?e.white:e.grayText}}>
31
- {r.picker.formatLabel?r.picker.formatLabel(T):T}
29
+ {r.picker.options.map(k=>{const D=r.picker.selectedValue===k;return<V key={String(k)}onPress={()=>r.picker.onSelect(k)}style={{flex:1,paddingVertical:6,alignItems:"center",borderRadius:6,backgroundColor:D?e.purple:"transparent"}}>
30
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:D?e.white:e.grayText}}>
31
+ {r.picker.formatLabel?r.picker.formatLabel(k):k}
32
32
  </S>
33
- </I>})}
33
+ </V>})}
34
34
  </C>}
35
- </C>,Zr=()=><C style={{flex:1,backgroundColor:e.grayBackground}}>
36
- <P style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:14}}showsVerticalScrollIndicator={!1}>
35
+ </C>,go=()=><C style={{flex:1,backgroundColor:e.grayBackground}}>
36
+ <M style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:14}}showsVerticalScrollIndicator={!1}>
37
37
 
38
38
 
39
39
  <C style={{backgroundColor:e.primaryLight,borderRadius:13,paddingVertical:4,paddingHorizontal:4,borderWidth:1,borderColor:e.grayBorderSecondary,shadowColor:e.black,shadowOpacity:.04,shadowRadius:4,shadowOffset:{width:0,height:2}}}>
40
- <P horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:2}}>
41
- {[{key:"module",label:x("settings.modulesAndTools","Modules & Tools"),Icon:Ce,badge:`${D.filter(r=>W?.[r.key]||r.key==="apis").length}/${D.length}`},{key:"ui",label:x("settings.uiPreferences","UI Preferences"),Icon:Ze},{key:"limits",label:x("settings.ramLimits","RAM & Limits"),Icon:Vr},{key:"capture",label:x("settings.screenVideoCapture","Screen & Video Capture"),Icon:Br}].map(r=>{const T=O===r.key,H=r.Icon;return<I key={r.key}accessible={!0}accessibilityRole="tab"accessibilityLabel={r.label}accessibilityState={{selected:T}}onPress={()=>{Q(),zr(r.key)}}style={{paddingVertical:8,paddingHorizontal:14,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,borderRadius:9,backgroundColor:T?e.purple:"transparent"}}>
42
- <H color={T?e.white:e.grayText}size={13}/>
43
- <S style={{fontFamily:k.interBold,fontSize:12.5,lineHeight:16,color:T?e.white:e.grayText}}>
40
+ <M horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:2}}>
41
+ {[{key:"module",label:w("settings.modulesAndTools","Modules & Tools"),Icon:Q,badge:`${$.filter(r=>j?.[r.key]||r.key==="apis").length}/${$.length}`},{key:"ui",label:w("settings.uiPreferences","UI Preferences"),Icon:Vr},{key:"limits",label:w("settings.ramLimits","RAM & Limits"),Icon:Fr},{key:"capture",label:w("settings.screenVideoCapture","Screen & Video Capture"),Icon:Ce}].map(r=>{const k=q===r.key,D=r.Icon;return<V key={r.key}accessible={!0}accessibilityRole="tab"accessibilityLabel={r.label}accessibilityState={{selected:k}}onPress={()=>{ie(),Wr(r.key)}}style={{paddingVertical:8,paddingHorizontal:14,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,borderRadius:9,backgroundColor:k?e.purple:"transparent"}}>
42
+ <D color={k?e.white:e.grayText}size={13}/>
43
+ <S style={{fontFamily:x.interBold,fontSize:12.5,lineHeight:16,color:k?e.white:e.grayText}}>
44
44
  {r.label}
45
45
  </S>
46
- {r.badge&&<C style={{backgroundColor:T?"rgba(255,255,255,0.25)":`${e.purple}18`,paddingHorizontal:5.5,paddingVertical:1,borderRadius:10}}>
47
- <S style={{fontFamily:k.interBold,fontSize:9.5,color:T?e.white:e.purple}}>
46
+ {r.badge&&<C style={{backgroundColor:k?"rgba(255,255,255,0.25)":`${e.purple}18`,paddingHorizontal:5.5,paddingVertical:1,borderRadius:10}}>
47
+ <S style={{fontFamily:x.interBold,fontSize:9.5,color:k?e.white:e.purple}}>
48
48
  {r.badge}
49
49
  </S>
50
50
  </C>}
51
- </I>})}
52
- </P>
51
+ </V>})}
52
+ </M>
53
53
  </C>
54
54
 
55
- {O==="module"&&<C style={{gap:12}}>
55
+ {q==="module"&&<C style={{gap:12}}>
56
56
 
57
57
  <C style={{gap:10}}>
58
- {D.map(r=>{const T=Lo(),H=Fo(),v=r.key==="redux"&&!T||r.key==="analytics"&&!H,L=r.key==="apis"||v,B=r.key==="apis"||!!W?.[r.key]&&!v,eo=r.key==="apis"?`${Te.length} requests \u2022 Limit: ${ze}`:r.key==="logs"?`${Ve.length} logs \u2022 Limit: ${ve}`:r.key==="crash"?`${De?.length||0} crashes recorded \u2022 Crash Guard`:r.key==="analytics"?`${Be.length} events logged`:r.key==="redux"?`${Object.keys(Re||{}).length} slices \u2022 Depth: ${Ue}`:"";return<C key={r.key}style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1.5,borderColor:B?`${e.purple}38`:e.grayBorderSecondary,padding:14,gap:10,shadowColor:e.black,shadowOpacity:B?.04:.02,shadowRadius:5,shadowOffset:{width:0,height:2}}}>
58
+ {$.map(r=>{const k=Io(),D=vo(),F=r.key==="redux"&&!k||r.key==="analytics"&&!D,W=r.key==="apis"||F,B=r.key==="apis"||!!j?.[r.key]&&!F,po=r.key==="apis"?`${Pe.length} requests`:r.key==="logs"?`${$e.length} logs \u2022 Limit: ${Se}`:r.key==="crash"?`${Me?.length||0} crashes recorded \u2022 Crash Guard`:r.key==="analytics"?`${Le.length} events logged`:r.key==="redux"?`${Object.keys(We||{}).length} slices \u2022 Depth: ${Oe}`:"";return<C key={r.key}style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1.5,borderColor:B?`${e.purple}38`:e.grayBorderSecondary,padding:14,gap:10,shadowColor:e.black,shadowOpacity:B?.04:.02,shadowRadius:5,shadowOffset:{width:0,height:2}}}>
59
59
 
60
60
  <C style={{flexDirection:"row",alignItems:"flex-start",gap:10}}>
61
61
 
62
- <I accessible={!0}accessibilityRole="checkbox"accessibilityLabel={`Select ${r.label}`}accessibilityState={{checked:B,disabled:L}}disabled={L}onPress={()=>{L||Le(Ke=>({...Ke,[r.key]:!Ke[r.key]}))}}hitSlop={8}style={{width:22,height:22,borderRadius:6,borderWidth:B?0:1.8,borderColor:L?e.dividerColor:e.grayBorderSecondary,backgroundColor:r.key==="apis"?`${e.blue500}22`:B?e.purple:e.grayBackground,alignItems:"center",justifyContent:"center",marginTop:7,shadowColor:B?e.purple:"transparent",shadowOpacity:B?.25:0,shadowRadius:2,elevation:B?2:0}}>
63
- {r.key==="apis"?<$ size={12}color={e.blue500}/>:B?<$ size={12}color={e.white}/>:L?<So width={10}height={10}viewBox="0 0 24 24"fill="none">
64
- <Ye d="M7 10V7a5 5 0 0 1 10 0v3"stroke={e.grayText}strokeWidth="2.2"strokeLinecap="round"/>
65
- <Ye d="M5 10h14v9a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z"fill={e.grayText}/>
62
+ <V accessible={!0}accessibilityRole="checkbox"accessibilityLabel={`Select ${r.label}`}accessibilityState={{checked:B,disabled:W}}disabled={W}onPress={()=>{W||Be(_e=>({..._e,[r.key]:!_e[r.key]}))}}hitSlop={8}style={{width:22,height:22,borderRadius:6,borderWidth:B?0:1.8,borderColor:W?e.dividerColor:e.grayBorderSecondary,backgroundColor:r.key==="apis"?`${e.blue500}22`:B?e.purple:e.grayBackground,alignItems:"center",justifyContent:"center",marginTop:7,shadowColor:B?e.purple:"transparent",shadowOpacity:B?.25:0,shadowRadius:2,elevation:B?2:0}}>
63
+ {r.key==="apis"?<U size={12}color={e.blue500}/>:B?<U size={12}color={e.white}/>:W?<So width={10}height={10}viewBox="0 0 24 24"fill="none">
64
+ <Ze d="M7 10V7a5 5 0 0 1 10 0v3"stroke={e.grayText}strokeWidth="2.2"strokeLinecap="round"/>
65
+ <Ze d="M5 10h14v9a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z"fill={e.grayText}/>
66
66
  </So>:null}
67
- </I>
67
+ </V>
68
68
 
69
69
 
70
- <I accessible={!0}accessibilityRole="button"accessibilityLabel={`${r.label} settings`}disabled={v}onPress={()=>{Q(),xe(r.key)}}style={{flex:1,flexDirection:"row",alignItems:"flex-start",gap:10}}>
70
+ <V accessible={!0}accessibilityRole="button"accessibilityLabel={`${r.label} settings`}disabled={F}onPress={()=>{ie(),De(r.key)}}style={{flex:1,flexDirection:"row",alignItems:"flex-start",gap:10}}>
71
71
 
72
- <C style={{width:36,height:36,borderRadius:10,backgroundColor:L?`${e.grayBorderSecondary}4D`:B?`${e.purple}14`:e.grayBackground,borderWidth:1,borderColor:L?e.dividerColor:B?`${e.purple}33`:e.grayBorderSecondary,alignItems:"center",justifyContent:"center",marginTop:1}}>
73
- {r.icon==="apis"&&<Z color={B?e.purple:e.grayTextWeak}size={16}/>}
74
- {r.icon==="logs"&&<Oe color={B?e.purple:e.grayTextWeak}size={16}/>}
75
- {r.icon==="crash"&&<Sr color={B?e.purple:e.grayTextWeak}size={16}/>}
76
- {r.icon==="analytics"&&<Ee color={B?e.purple:e.grayTextWeak}size={16}/>}
77
- {r.icon==="redux"&&<Ne color={B?e.purple:e.grayTextWeak}size={16}/>}
78
- {r.icon==="device"&&<Go color={B?e.purple:e.grayTextWeak}size={16}/>}
79
- {r.icon==="storage"&&<Uo color={B?e.purple:e.grayTextWeak}size={16}/>}
80
- {r.icon==="debugging"&&<Jo color={B?e.purple:e.grayTextWeak}size={16}/>}
81
- {r.icon==="media"&&<Ko color={B?e.purple:e.grayTextWeak}size={16}/>}
72
+ <C style={{width:36,height:36,borderRadius:10,backgroundColor:W?`${e.grayBorderSecondary}4D`:B?`${e.purple}14`:e.grayBackground,borderWidth:1,borderColor:W?e.dividerColor:B?`${e.purple}33`:e.grayBorderSecondary,alignItems:"center",justifyContent:"center",marginTop:1}}>
73
+ {r.icon==="apis"&&<Cr color={B?e.purple:e.grayTextWeak}size={16}/>}
74
+ {r.icon==="logs"&&<Sr color={B?e.purple:e.grayTextWeak}size={16}/>}
75
+ {r.icon==="crash"&&<Oo color={B?e.purple:e.grayTextWeak}size={16}/>}
76
+ {r.icon==="analytics"&&<Tr color={B?e.purple:e.grayTextWeak}size={16}/>}
77
+ {r.icon==="redux"&&<Br color={B?e.purple:e.grayTextWeak}size={16}/>}
78
+ {r.icon==="device"&&<No color={B?e.purple:e.grayTextWeak}size={16}/>}
79
+ {r.icon==="storage"&&<Go color={B?e.purple:e.grayTextWeak}size={16}/>}
80
+ {r.icon==="debugging"&&<Uo color={B?e.purple:e.grayTextWeak}size={16}/>}
81
+ {r.icon==="media"&&<Jo color={B?e.purple:e.grayTextWeak}size={16}/>}
82
+ {r.icon==="push"&&<Lr color={B?e.purple:e.grayTextWeak}size={16}/>}
82
83
  </C>
83
84
 
84
85
 
85
86
  <C style={{flex:1,gap:2}}>
86
87
  <C style={{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"}}>
87
88
  <C style={{minWidth:22,height:22,paddingHorizontal:5,borderRadius:11,backgroundColor:B?`${e.purple}1C`:`${e.grayBorderSecondary}80`,borderWidth:1,borderColor:B?`${e.purple}44`:e.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
88
- <S style={{fontFamily:k.interBold,fontSize:10,lineHeight:13,color:B?e.purple:e.grayText}}>
89
+ <S style={{fontFamily:x.interBold,fontSize:10,lineHeight:13,color:B?e.purple:e.grayText}}>
89
90
  #{r.id}
90
91
  </S>
91
92
  </C>
92
- <S style={{fontFamily:k.interBold,fontSize:14,lineHeight:18,color:L?e.grayText:e.primaryBlack}}>
93
+ <S style={{fontFamily:x.interBold,fontSize:14,lineHeight:18,color:W?e.grayText:e.primaryBlack}}>
93
94
  {r.label}
94
95
  </S>
95
96
 
96
97
 
97
- {r.key===E&&!v&&<C style={{flexDirection:"row",alignItems:"center",backgroundColor:`${e.purple}14`,borderRadius:12,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.purple}2E`,gap:3}}>
98
+ {r.key===J&&!F&&<C style={{flexDirection:"row",alignItems:"center",backgroundColor:`${e.purple}14`,borderRadius:12,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.purple}2E`,gap:3}}>
98
99
  <C style={{width:4,height:4,borderRadius:2,backgroundColor:e.purple}}/>
99
- <S style={{fontFamily:k.interBold,fontSize:8,lineHeight:11,color:e.purple,letterSpacing:.4}}>
100
- {x("settings.defaultBadge")}
100
+ <S style={{fontFamily:x.interBold,fontSize:8,lineHeight:11,color:e.purple,letterSpacing:.4}}>
101
+ {w("settings.defaultBadge")}
101
102
  </S>
102
103
  </C>}
103
104
 
104
105
 
105
106
  {r.key==="apis"?<C style={{backgroundColor:`${e.blue500}14`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.blue500}33`}}>
106
- <S style={{fontFamily:k.interBold,fontSize:8,lineHeight:11,color:e.blue500,letterSpacing:.3}}>
107
- {x("settings.coreBadge")}
107
+ <S style={{fontFamily:x.interBold,fontSize:8,lineHeight:11,color:e.blue500,letterSpacing:.3}}>
108
+ {w("settings.coreBadge")}
108
109
  </S>
109
- </C>:v?<C style={{backgroundColor:`${e.amber500}18`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.amber500}35`}}>
110
- <S style={{fontFamily:k.interBold,fontSize:8,lineHeight:11,color:e.amber700,letterSpacing:.3}}>
111
- {r.key==="redux"?x("settings.notConnectedBadge"):x("settings.notDetectedBadge")}
110
+ </C>:F?<C style={{backgroundColor:`${e.amber500}18`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.amber500}35`}}>
111
+ <S style={{fontFamily:x.interBold,fontSize:8,lineHeight:11,color:e.amber700,letterSpacing:.3}}>
112
+ {r.key==="redux"?w("settings.notConnectedBadge"):w("settings.notDetectedBadge")}
112
113
  </S>
113
114
  </C>:B?<C style={{backgroundColor:`${e.liveGreen}18`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.liveGreen}38`}}>
114
- <S style={{fontFamily:k.interBold,fontSize:8,lineHeight:11,color:e.green700,letterSpacing:.3}}>
115
- {x("settings.activeBadge")}
115
+ <S style={{fontFamily:x.interBold,fontSize:8,lineHeight:11,color:e.green700,letterSpacing:.3}}>
116
+ {w("settings.activeBadge")}
116
117
  </S>
117
118
  </C>:<C style={{backgroundColor:`${e.grayTextWeak}18`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.grayTextWeak}2E`}}>
118
- <S style={{fontFamily:k.interBold,fontSize:8,lineHeight:11,color:e.grayTextWeak,letterSpacing:.3}}>
119
- {x("settings.dormantBadge")}
119
+ <S style={{fontFamily:x.interBold,fontSize:8,lineHeight:11,color:e.grayTextWeak,letterSpacing:.3}}>
120
+ {w("settings.dormantBadge")}
120
121
  </S>
121
122
  </C>}
122
123
  </C>
123
124
 
124
- <S style={{fontFamily:k.interRegular,fontSize:11,color:e.grayText,lineHeight:15,marginTop:1}}>
125
+ <S style={{fontFamily:x.interRegular,fontSize:11,color:e.grayText,lineHeight:15,marginTop:1}}>
125
126
  {r.desc}
126
127
  </S>
127
128
  </C>
128
- </I>
129
+ </V>
129
130
  </C>
130
131
 
131
132
 
132
- {!v&&<C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingTop:8,borderTopWidth:1,borderTopColor:e.dividerColor}}>
133
+ {!F&&<C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingTop:8,borderTopWidth:1,borderTopColor:e.dividerColor}}>
133
134
 
134
135
  <C style={{flexDirection:"row",alignItems:"center",gap:6,flex:1}}>
135
136
  <C style={{width:6,height:6,borderRadius:3,backgroundColor:B?e.liveGreen:e.grayTextWeak}}/>
136
- <S style={{fontFamily:k.interMedium,fontSize:11,color:e.grayText,lineHeight:14}}>
137
- {eo}
137
+ <S style={{fontFamily:x.interMedium,fontSize:11,color:e.grayText,lineHeight:14}}>
138
+ {po}
138
139
  </S>
139
140
  </C>
140
141
 
141
142
 
142
- <I accessible={!0}accessibilityRole="button"accessibilityLabel={`Configure ${r.label} settings`}onPress={()=>{Q(),xe(r.key)}}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.purple}12`,paddingHorizontal:10,paddingVertical:5,borderRadius:8,borderWidth:1,borderColor:`${e.purple}26`}}>
143
- <Ao color={e.purple}size={11}/>
144
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.purple}}>
145
- {x("settings.configure")}
143
+ <V accessible={!0}accessibilityRole="button"accessibilityLabel={`Configure ${r.label} settings`}onPress={()=>{ie(),De(r.key)}}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.purple}12`,paddingHorizontal:10,paddingVertical:5,borderRadius:8,borderWidth:1,borderColor:`${e.purple}26`}}>
144
+ <Po color={e.purple}size={11}/>
145
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.purple}}>
146
+ {w("settings.configure")}
146
147
  </S>
147
- <Eo color={e.purple}size={9}/>
148
- </I>
148
+ <Mo color={e.purple}size={9}/>
149
+ </V>
149
150
  </C>}
150
151
  </C>})}
151
152
  </C>
152
153
  </C>}
153
154
 
154
- {O==="ui"&&<C style={{gap:14}}>
155
+ {q==="ui"&&<C style={{gap:14}}>
155
156
 
156
157
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:14,gap:12}}>
157
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
158
- {x("settings.appearanceTheme")}
158
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
159
+ {w("settings.appearanceTheme")}
159
160
  </S>
160
161
 
161
162
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
162
163
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
163
164
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
164
- {G?<Po color={e.purple}size={15}/>:<$o color={e.purple}size={15}/>}
165
+ {_?<$o color={e.purple}size={15}/>:<Lo color={e.purple}size={15}/>}
165
166
  </C>
166
167
  <C style={{flex:1}}>
167
- <S style={{fontFamily:k.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
168
- {x("settings.general.darkMode")}
168
+ <S style={{fontFamily:x.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
169
+ {w("settings.general.darkMode")}
169
170
  </S>
170
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
171
- {x("settings.general.darkModeDescription")}
171
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
172
+ {w("settings.general.darkModeDescription")}
172
173
  </S>
173
174
  </C>
174
175
  </C>
175
176
 
176
- <I accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle Dark Theme"accessibilityState={{checked:G}}onPress={()=>{const r=!G;Hr(r),Bo(r)}}style={{width:42,height:24,borderRadius:12,backgroundColor:G?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:G?"flex-end":"flex-start"}}>
177
+ <V accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle Dark Theme"accessibilityState={{checked:_}}onPress={()=>{const r=!_;Mr(r),Vo(r)}}style={{width:42,height:24,borderRadius:12,backgroundColor:_?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:_?"flex-end":"flex-start"}}>
177
178
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
178
- </I>
179
+ </V>
179
180
  </C>
180
181
  </C>
181
182
 
182
183
 
183
184
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:14,gap:14}}>
184
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
185
- {x("settings.windowLayout")}
185
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
186
+ {w("settings.windowLayout")}
186
187
  </S>
187
188
 
188
189
 
@@ -190,28 +191,28 @@ import{useMemo as Qe,useState as We,useEffect as Ae,useRef as ro}from"react";imp
190
191
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:10}}>
191
192
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
192
193
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
193
- <Ze color={e.purple}size={15}/>
194
+ <Vr color={e.purple}size={15}/>
194
195
  </C>
195
196
  <C style={{flex:1}}>
196
- <S style={{fontFamily:k.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
197
- {x("settings.general.modalHeight")}
197
+ <S style={{fontFamily:x.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
198
+ {w("settings.general.modalHeight")}
198
199
  </S>
199
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
200
- {x("settings.general.modalHeightDescription")}
200
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
201
+ {w("settings.general.modalHeightDescription")}
201
202
  </S>
202
203
  </C>
203
204
  </C>
204
205
 
205
- {X!==U&&<I onPress={()=>{Dr(X)}}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:e.purple,paddingHorizontal:10,paddingVertical:5,borderRadius:7,shadowColor:e.purple,shadowOffset:{width:0,height:1},shadowOpacity:.28,shadowRadius:2,elevation:2}}>
206
- <$ size={11}color={e.white}/>
207
- <S style={{fontFamily:k.interBold,fontSize:11,color:e.white}}>
208
- Save ({X}%)
206
+ {Z!==X&&<V onPress={()=>{Er(Z)}}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:e.purple,paddingHorizontal:10,paddingVertical:5,borderRadius:7,shadowColor:e.purple,shadowOffset:{width:0,height:1},shadowOpacity:.28,shadowRadius:2,elevation:2}}>
207
+ <U size={11}color={e.white}/>
208
+ <S style={{fontFamily:x.interBold,fontSize:11,color:e.white}}>
209
+ Save ({Z}%)
209
210
  </S>
210
- </I>}
211
+ </V>}
211
212
  </C>
212
213
 
213
214
  <C style={{marginTop:6}}>
214
- <Vo value={X}onValueChange={Je}min={50}max={90}step={5}quickPresets={[50,60,70,80,90]}formatLabel={r=>`${Math.round(r)}%`}/>
215
+ <To value={Z}onValueChange={Ne}min={50}max={90}step={5}quickPresets={[50,60,70,80,90]}formatLabel={r=>`${Math.round(r)}%`}/>
215
216
  </C>
216
217
  </C>
217
218
 
@@ -221,116 +222,116 @@ import{useMemo as Qe,useState as We,useEffect as Ae,useRef as ro}from"react";imp
221
222
  <C style={{gap:8}}>
222
223
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
223
224
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
224
- <Mo color={e.purple}size={15}/>
225
+ <Wo color={e.purple}size={15}/>
225
226
  </C>
226
227
  <C style={{flex:1}}>
227
- <S style={{fontFamily:k.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
228
- {x("settings.general.modalAnimation")}
228
+ <S style={{fontFamily:x.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
229
+ {w("settings.general.modalAnimation")}
229
230
  </S>
230
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
231
- {x("settings.general.modalAnimationDescription")}
231
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
232
+ {w("settings.general.modalAnimationDescription")}
232
233
  </S>
233
234
  </C>
234
235
  </C>
235
236
 
236
237
  <C style={{flexDirection:"row",backgroundColor:e.grayBackground,borderRadius:10,padding:3,borderWidth:1,borderColor:e.dividerColor}}>
237
- {[{key:"slide",label:"Slide Up"},{key:"fade",label:"Fade"},{key:"none",label:"None"}].map(r=>{const T=Lr===r.key;return<I key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Set transition animation to ${r.label}`}accessibilityState={{selected:T}}onPress={()=>Fr(r.key)}style={{flex:1,paddingVertical:7,alignItems:"center",borderRadius:8,backgroundColor:T?e.purple:"transparent"}}>
238
- <S style={{fontFamily:k.interBold,fontSize:11.5,lineHeight:15,color:T?e.white:e.grayText}}>
238
+ {[{key:"slide",label:"Slide Up"},{key:"fade",label:"Fade"},{key:"none",label:"None"}].map(r=>{const k=Nr===r.key;return<V key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Set transition animation to ${r.label}`}accessibilityState={{selected:k}}onPress={()=>Gr(r.key)}style={{flex:1,paddingVertical:7,alignItems:"center",borderRadius:8,backgroundColor:k?e.purple:"transparent"}}>
239
+ <S style={{fontFamily:x.interBold,fontSize:11.5,lineHeight:15,color:k?e.white:e.grayText}}>
239
240
  {r.label}
240
241
  </S>
241
- </I>})}
242
+ </V>})}
242
243
  </C>
243
244
  </C>
244
245
  </C>
245
246
 
246
247
 
247
248
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:14,gap:12}}>
248
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
249
- {x("settings.startupDefault")}
249
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
250
+ {w("settings.startupDefault")}
250
251
  </S>
251
252
 
252
253
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
253
254
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
254
- <Ce color={e.purple}size={15}/>
255
+ <Q color={e.purple}size={15}/>
255
256
  </C>
256
257
  <C style={{flex:1}}>
257
- <S style={{fontFamily:k.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
258
- {x("settings.general.defaultOpeningTab")}
258
+ <S style={{fontFamily:x.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
259
+ {w("settings.general.defaultOpeningTab")}
259
260
  </S>
260
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
261
- {x("settings.general.defaultOpeningTabDesc")}
261
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
262
+ {w("settings.general.defaultOpeningTabDesc")}
262
263
  </S>
263
264
  </C>
264
265
  </C>
265
266
 
266
267
 
267
268
  <C style={{marginTop:6,gap:6}}>
268
- <I accessible={!0}accessibilityRole="button"accessibilityLabel={`Default opening tab: ${D.find(r=>r.key===E)?.label||"APIs"}`}onPress={()=>_e(r=>!r)}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.grayBackground,borderRadius:10,borderWidth:1.5,borderColor:Fe?e.purple:e.grayBorderSecondary,paddingHorizontal:14,paddingVertical:11}}>
269
+ <V accessible={!0}accessibilityRole="button"accessibilityLabel={`Default opening tab: ${$.find(r=>r.key===J)?.label||"APIs"}`}onPress={()=>Ke(r=>!r)}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.grayBackground,borderRadius:10,borderWidth:1.5,borderColor:ze?e.purple:e.grayBorderSecondary,paddingHorizontal:14,paddingVertical:11}}>
269
270
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
270
271
  <C style={{width:8,height:8,borderRadius:4,backgroundColor:e.purple}}/>
271
- <S style={{fontFamily:k.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
272
- {D.find(r=>r.key===E)?`#${D.find(r=>r.key===E)?.id} ${D.find(r=>r.key===E)?.label}`:"#1 APIs (Network)"}
272
+ <S style={{fontFamily:x.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
273
+ {$.find(r=>r.key===J)?`#${$.find(r=>r.key===J)?.id} ${$.find(r=>r.key===J)?.label}`:"#1 APIs (Network)"}
273
274
  </S>
274
275
  <C style={{backgroundColor:`${e.purple}14`,paddingHorizontal:6,paddingVertical:1.5,borderRadius:6}}>
275
- <S style={{fontFamily:k.interBold,fontSize:8.5,color:e.purple}}>
276
+ <S style={{fontFamily:x.interBold,fontSize:8.5,color:e.purple}}>
276
277
  DEFAULT
277
278
  </S>
278
279
  </C>
279
280
  </C>
280
281
 
281
- <C style={{transform:[{rotate:Fe?"180deg":"0deg"}]}}>
282
- <No color={e.grayText}size={15}/>
282
+ <C style={{transform:[{rotate:ze?"180deg":"0deg"}]}}>
283
+ <Eo color={e.grayText}size={15}/>
283
284
  </C>
284
- </I>
285
+ </V>
285
286
 
286
287
 
287
- {Fe&&<C style={{backgroundColor:e.primaryLight,borderRadius:10,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",shadowColor:e.black,shadowOpacity:.08,shadowRadius:6,shadowOffset:{width:0,height:3},elevation:4}}>
288
- {D.filter(r=>r.key==="apis"||W?.[r.key]||V?.[r.key]).map((r,T,H)=>{const v=E===r.key,L=T===H.length-1;return<I key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Select ${r.label} as default tab`}onPress={()=>{Ir(r.key),_e(!1)}}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:14,paddingVertical:11,backgroundColor:v?`${e.purple}0F`:"transparent",borderBottomWidth:L?0:1,borderBottomColor:e.dividerColor}}>
288
+ {ze&&<C style={{backgroundColor:e.primaryLight,borderRadius:10,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",shadowColor:e.black,shadowOpacity:.08,shadowRadius:6,shadowOffset:{width:0,height:3},elevation:4}}>
289
+ {$.filter(r=>r.key==="apis"||j?.[r.key]||T?.[r.key]).map((r,k,D)=>{const F=J===r.key,W=k===D.length-1;return<V key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Select ${r.label} as default tab`}onPress={()=>{Or(r.key),Ke(!1)}}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:14,paddingVertical:11,backgroundColor:F?`${e.purple}0F`:"transparent",borderBottomWidth:W?0:1,borderBottomColor:e.dividerColor}}>
289
290
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
290
- <C style={{width:6,height:6,borderRadius:3,backgroundColor:v?e.purple:e.grayTextWeak}}/>
291
- <S style={{fontFamily:v?k.interBold:k.interMedium,fontSize:13,color:v?e.purple:e.primaryBlack}}>
291
+ <C style={{width:6,height:6,borderRadius:3,backgroundColor:F?e.purple:e.grayTextWeak}}/>
292
+ <S style={{fontFamily:F?x.interBold:x.interMedium,fontSize:13,color:F?e.purple:e.primaryBlack}}>
292
293
  #{r.id} {r.label}
293
294
  </S>
294
295
  </C>
295
- {v&&<$ size={14}color={e.purple}/>}
296
- </I>})}
296
+ {F&&<U size={14}color={e.purple}/>}
297
+ </V>})}
297
298
  </C>}
298
299
  </C>
299
300
  </C>
300
301
 
301
302
 
302
303
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:14,gap:12}}>
303
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
304
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
304
305
  NOTIFICATIONS & TOASTS
305
306
  </S>
306
307
 
307
308
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
308
309
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1,marginRight:10}}>
309
310
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
310
- <Oo color={e.purple}size={15}/>
311
+ <Ao color={e.purple}size={15}/>
311
312
  </C>
312
313
  <C style={{flex:1}}>
313
- <S style={{fontFamily:k.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
314
+ <S style={{fontFamily:x.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
314
315
  NPM Update Toast
315
316
  </S>
316
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
317
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
317
318
  Show a floating toast banner with countdown progress when
318
319
  a newer release is published on npm.
319
320
  </S>
320
321
  </C>
321
322
  </C>
322
323
 
323
- <I accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle NPM Update Toast"accessibilityState={{checked:Se}}onPress={()=>Ar(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:Se?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:Se?"flex-end":"flex-start"}}>
324
+ <V accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle NPM Update Toast"accessibilityState={{checked:xe}}onPress={()=>Ur(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:xe?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:xe?"flex-end":"flex-start"}}>
324
325
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
325
- </I>
326
+ </V>
326
327
  </C>
327
328
  </C>
328
329
  </C>}
329
330
 
330
- {O==="limits"&&<C style={{gap:14}}>
331
+ {q==="limits"&&<C style={{gap:14}}>
331
332
 
332
333
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:14,gap:12}}>
333
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
334
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
334
335
  DEVICE MEMORY & AUTO PROFILES
335
336
  </S>
336
337
 
@@ -338,42 +339,42 @@ import{useMemo as Qe,useState as We,useEffect as Ae,useRef as ro}from"react";imp
338
339
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
339
340
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
340
341
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
341
- <Vr color={e.purple}size={16}/>
342
+ <Fr color={e.purple}size={16}/>
342
343
  </C>
343
344
  <C style={{flex:1}}>
344
- <S style={{fontFamily:k.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
345
+ <S style={{fontFamily:x.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
345
346
  Auto-Calculate Limits from RAM
346
347
  </S>
347
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
348
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
348
349
  Dynamically sets log limits according to available device
349
350
  memory
350
351
  </S>
351
352
  </C>
352
353
  </C>
353
354
 
354
- <I accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle auto RAM limit calculation"accessibilityState={{checked:z}}onPress={()=>Nr(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:z?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:z?"flex-end":"flex-start"}}>
355
+ <V accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle auto RAM limit calculation"accessibilityState={{checked:I}}onPress={()=>Xr(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:I?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:I?"flex-end":"flex-start"}}>
355
356
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
356
- </I>
357
+ </V>
357
358
  </C>
358
359
 
359
360
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
360
361
 
361
362
 
362
363
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
363
- <C style={{width:32,height:32,borderRadius:8,backgroundColor:z?`${e.purple}14`:e.grayBackground,alignItems:"center",justifyContent:"center"}}>
364
- <Z color={z?e.purple:e.grayTextWeak}size={15}/>
364
+ <C style={{width:32,height:32,borderRadius:8,backgroundColor:I?`${e.purple}14`:e.grayBackground,alignItems:"center",justifyContent:"center"}}>
365
+ <Cr color={I?e.purple:e.grayTextWeak}size={15}/>
365
366
  </C>
366
367
  <C style={{flex:1}}>
367
- <S style={{fontFamily:k.interBold,fontSize:13.5,lineHeight:18,color:z?e.primaryBlack:e.grayText}}>
368
+ <S style={{fontFamily:x.interBold,fontSize:13.5,lineHeight:18,color:I?e.primaryBlack:e.grayText}}>
368
369
  Detected Available RAM
369
370
  </S>
370
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
371
- {Ie} MB available on device
371
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
372
+ {ke} MB available on device
372
373
  </S>
373
374
  </C>
374
- <C style={{paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:z?`${e.purple}12`:e.grayBackground,borderWidth:1,borderColor:z?`${e.purple}26`:e.dividerColor}}>
375
- <S style={{fontFamily:k.interBold,fontSize:12,lineHeight:15,color:z?e.purple:e.grayText}}>
376
- {Ie} MB
375
+ <C style={{paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:I?`${e.purple}12`:e.grayBackground,borderWidth:1,borderColor:I?`${e.purple}26`:e.dividerColor}}>
376
+ <S style={{fontFamily:x.interBold,fontSize:12,lineHeight:15,color:I?e.purple:e.grayText}}>
377
+ {ke} MB
377
378
  </S>
378
379
  </C>
379
380
  </C>
@@ -381,22 +382,22 @@ import{useMemo as Qe,useState as We,useEffect as Ae,useRef as ro}from"react";imp
381
382
 
382
383
  <C style={{marginTop:4,paddingTop:8,borderTopWidth:1,borderTopColor:e.dividerColor,gap:6}}>
383
384
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
384
- <S style={{fontFamily:k.interBold,fontSize:11.5,lineHeight:15,color:e.purple}}>
385
- Profile: {q.profileName}
385
+ <S style={{fontFamily:x.interBold,fontSize:11.5,lineHeight:15,color:e.purple}}>
386
+ Profile: {oe.profileName}
386
387
  </S>
387
- <C style={{backgroundColor:z?`${e.emerald500}18`:`${e.purple}18`,paddingHorizontal:7,paddingVertical:2.5,borderRadius:4}}>
388
- <S style={{fontFamily:k.interBold,fontSize:9.5,color:z?e.emerald500:e.purple}}>
389
- {z?"AUTO-TUNED":"MANUAL"}
388
+ <C style={{backgroundColor:I?`${e.emerald500}18`:`${e.purple}18`,paddingHorizontal:7,paddingVertical:2.5,borderRadius:4}}>
389
+ <S style={{fontFamily:x.interBold,fontSize:9.5,color:I?e.emerald500:e.purple}}>
390
+ {I?"AUTO-TUNED":"MANUAL"}
390
391
  </S>
391
392
  </C>
392
393
  </C>
393
394
 
394
395
  <C style={{flexDirection:"row",flexWrap:"wrap",gap:8,marginTop:4}}>
395
- {[{label:"APIs",value:z?q.maxNetworkLogs:ze,color:e.blue500},{label:"Logs",value:z?q.maxConsoleLogs:ve,color:e.sky500},{label:"Analytics",value:z?q.maxAnalyticsEvents:Ge,color:e.purple},{label:"Crash",value:z?q.maxCrashRecords:qe,color:e.errorColor}].map(r=><C key={r.label}style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${r.color}14`,borderWidth:1,borderColor:`${r.color}33`}}>
396
- <S style={{fontFamily:k.interBold,fontSize:10.5,lineHeight:14,color:r.color}}>
396
+ {[{label:"Logs",value:I?oe.maxConsoleLogs:Se,color:e.sky500},{label:"Analytics",value:I?oe.maxAnalyticsEvents:Ae,color:e.purple},{label:"Crash",value:I?oe.maxCrashRecords:Ee,color:e.errorColor}].map(r=><C key={r.label}style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${r.color}14`,borderWidth:1,borderColor:`${r.color}33`}}>
397
+ <S style={{fontFamily:x.interBold,fontSize:10.5,lineHeight:14,color:r.color}}>
397
398
  {r.label}:
398
399
  </S>
399
- <S style={{fontFamily:k.interBold,fontSize:10.5,lineHeight:14,color:r.color}}>
400
+ <S style={{fontFamily:x.interBold,fontSize:10.5,lineHeight:14,color:r.color}}>
400
401
  {r.value} max
401
402
  </S>
402
403
  </C>)}
@@ -406,25 +407,25 @@ import{useMemo as Qe,useState as We,useEffect as Ae,useRef as ro}from"react";imp
406
407
 
407
408
 
408
409
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:14,gap:12}}>
409
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
410
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
410
411
  LOW MEMORY PRESSURE PROTECTION
411
412
  </S>
412
413
 
413
414
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
414
415
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:`${e.emerald500}14`,alignItems:"center",justifyContent:"center"}}>
415
- <Tr color={e.emerald500}size={15}/>
416
+ <Rr color={e.emerald500}size={15}/>
416
417
  </C>
417
418
  <C style={{flex:1}}>
418
- <S style={{fontFamily:k.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
419
+ <S style={{fontFamily:x.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
419
420
  OS Memory Warning Guard
420
421
  </S>
421
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
422
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
422
423
  Automatically prunes in-memory buffers by 50% when the OS
423
424
  signals low memory
424
425
  </S>
425
426
  </C>
426
427
  <C style={{paddingHorizontal:8,paddingVertical:3,borderRadius:6,backgroundColor:`${e.emerald500}18`}}>
427
- <S style={{fontFamily:k.interBold,fontSize:10,color:e.emerald500}}>
428
+ <S style={{fontFamily:x.interBold,fontSize:10,color:e.emerald500}}>
428
429
  ACTIVE
429
430
  </S>
430
431
  </C>
@@ -435,240 +436,387 @@ import{useMemo as Qe,useState as We,useEffect as Ae,useRef as ro}from"react";imp
435
436
 
436
437
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:10}}>
437
438
  <C style={{flex:1}}>
438
- <S style={{fontFamily:k.interBold,fontSize:13,color:e.primaryBlack}}>
439
+ <S style={{fontFamily:x.interBold,fontSize:13,color:e.primaryBlack}}>
439
440
  Manual Memory Cleanup
440
441
  </S>
441
- <S style={{fontFamily:k.interRegular,fontSize:11,color:e.grayText,marginTop:1}}>
442
+ <S style={{fontFamily:x.interRegular,fontSize:11,color:e.grayText,marginTop:1}}>
442
443
  Prune older entries across all log stores and free RAM
443
444
  </S>
444
445
  </C>
445
- <I onPress={()=>{const r=ot("manual",.5);Rr(`Pruned ${r.totalPruned} items from memory`)}}style={{backgroundColor:e.purple,paddingHorizontal:12,paddingVertical:8,borderRadius:8,flexDirection:"row",alignItems:"center",gap:5}}>
446
- <M size={13}color={e.white}/>
447
- <S style={{fontFamily:k.interBold,fontSize:11.5,color:e.white}}>
446
+ <V onPress={()=>{const r=_o("manual",.5);R(`Pruned ${r.totalPruned} items from memory`)}}style={{backgroundColor:e.purple,paddingHorizontal:12,paddingVertical:8,borderRadius:8,flexDirection:"row",alignItems:"center",gap:5}}>
447
+ <E size={13}color={e.white}/>
448
+ <S style={{fontFamily:x.interBold,fontSize:11.5,color:e.white}}>
448
449
  Prune Now
449
450
  </S>
450
- </I>
451
+ </V>
451
452
  </C>
452
453
  </C>
453
454
  </C>}
454
- {O==="capture"&&<C style={{gap:12}}>
455
+ {q==="capture"&&<C style={{gap:12}}>
455
456
 
456
457
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
457
458
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
458
459
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
459
- <Br color={e.purple}size={16}/>
460
+ <Ce color={e.purple}size={16}/>
460
461
  </C>
461
462
  <C style={{flex:1}}>
462
- <S style={{fontFamily:k.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
463
- {x("settings.media.screenshotCardTitle","Screenshot Capture Settings")}
463
+ <S style={{fontFamily:x.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
464
+ {w("settings.media.screenshotCardTitle","Screenshot Capture Settings")}
464
465
  </S>
465
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
466
- {x("settings.media.screenshotCardDesc","Image encoding format, compression quality and overlay auto-hide")}
466
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
467
+ {w("settings.media.screenshotCardDesc","Image encoding format, compression quality and overlay auto-hide")}
467
468
  </S>
468
469
  </C>
469
470
  </C>
470
471
 
471
- {R({icon:<Zo color={e.purple}size={16}/>,label:x("settings.media.imageFormat","Image Format"),description:x("settings.media.imageFormatDesc","Export formats (PNG lossless, JPEG lossy, WebP)"),right:<C style={{flexDirection:"row",gap:4}}>
472
- {["PNG","JPEG","WEBP"].map(r=><C key={r}style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:r==="PNG"?e.purple:`${e.purple}1A`}}>
473
- <S style={{fontFamily:k.interBold,fontSize:10,color:r==="PNG"?e.white:e.purple}}>
474
- {r}
475
- </S>
476
- </C>)}
472
+ {z({icon:<$r color={e.purple}size={16}/>,label:w("settings.media.imageFormat","Image Format"),description:w("settings.media.imageFormatDesc","Export formats (PNG lossless, JPEG lossy, WebP)"),right:<C style={{flexDirection:"row",gap:5}}>
473
+ {["PNG","JPEG","WEBP"].map(r=>{const k=Ve===r;return<V key={r}onPress={()=>{H("light"),Ge(r),R(`Screenshot format: ${r}`)}}style={{paddingHorizontal:9,paddingVertical:5,borderRadius:7,backgroundColor:k?e.purple:`${e.purple}14`,borderWidth:1,borderColor:k?e.purple:`${e.purple}2E`}}>
474
+ <S style={{fontFamily:x.interBold,fontSize:10.5,color:k?e.white:e.purple}}>
475
+ {r}
476
+ </S>
477
+ </V>})}
477
478
  </C>})}
478
479
 
479
- {R({icon:<Cr color={e.purple}size={16}/>,label:x("settings.media.autoHide","Auto-Hide Inspector During Capture"),description:x("settings.media.autoHideDesc","Temporarily hides the inspector overlay during screen capture"),isLast:!0,right:<C style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${e.emerald500}26`}}>
480
- <S style={{fontFamily:k.interBold,fontSize:10,color:e.emerald500}}>
481
- {x("settings.media.enabled","ON")}
480
+ {z({icon:<Ie color={e.purple}size={16}/>,label:w("settings.media.autoHide","Auto-Hide Inspector During Capture"),description:w("settings.media.autoHideDesc","Temporarily hides the inspector overlay during screen capture"),isLast:!0,onPress:()=>{H("light"),ee(r=>!r),R(`Auto-hide overlay: ${P?"OFF":"ON"}`)},right:<V onPress={()=>{H("light"),ee(r=>!r),R(`Auto-hide overlay: ${P?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:P?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:P?`${e.emerald500}4D`:`${e.grayText}33`}}>
481
+ <S style={{fontFamily:x.interBold,fontSize:10.5,color:P?e.emerald500:e.grayText}}>
482
+ {P?w("settings.media.enabled","ON"):"OFF"}
482
483
  </S>
483
- </C>})}
484
+ </V>})}
484
485
  </C>
485
486
 
486
487
 
487
488
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
488
489
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
489
490
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
490
- <Qo color={e.purple}size={16}/>
491
+ <Ir color={e.purple}size={16}/>
491
492
  </C>
492
493
  <C style={{flex:1}}>
493
- <S style={{fontFamily:k.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
494
- {x("settings.media.videoCardTitle","Video Recording & GIF Conversion")}
494
+ <S style={{fontFamily:x.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
495
+ {w("settings.media.videoCardTitle","Video Recording & GIF Conversion")}
495
496
  </S>
496
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
497
- {x("settings.media.videoCardDesc","ReplayKit hardware encoding, frame capture fallback and GIF generation")}
497
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
498
+ {w("settings.media.videoCardDesc","ReplayKit hardware encoding, frame capture fallback and GIF generation")}
498
499
  </S>
499
500
  </C>
500
501
  </C>
501
502
 
502
- {R({icon:<Xo color={e.purple}size={16}/>,label:x("settings.media.audioMode","Audio Source"),description:x("settings.media.audioModeDesc","Record video with muted, app audio, or microphone commentary"),right:<C style={{flexDirection:"row",gap:4}}>
503
- {["Muted","App","Mic"].map((r,T)=><C key={r}style={{paddingHorizontal:7,paddingVertical:4,borderRadius:6,backgroundColor:T===0?e.purple:`${e.purple}1A`}}>
504
- <S style={{fontFamily:k.interBold,fontSize:10,color:T===0?e.white:e.purple}}>
505
- {r}
506
- </S>
507
- </C>)}
503
+ {z({icon:<Dr color={e.purple}size={16}/>,label:w("settings.media.audioMode","Audio Source"),description:w("settings.media.audioModeDesc","Record video with muted, app audio, or microphone commentary"),right:<C style={{flexDirection:"row",gap:5}}>
504
+ {["Muted","App","Mic"].map(r=>{const k=je===r;return<V key={r}onPress={()=>{H("light"),Ue(r),R(`Audio source: ${r}`)}}style={{paddingHorizontal:8,paddingVertical:5,borderRadius:7,backgroundColor:k?e.purple:`${e.purple}14`,borderWidth:1,borderColor:k?e.purple:`${e.purple}2E`}}>
505
+ <S style={{fontFamily:x.interBold,fontSize:10.5,color:k?e.white:e.purple}}>
506
+ {r}
507
+ </S>
508
+ </V>})}
508
509
  </C>})}
509
510
 
510
- {R({icon:<_o color={e.purple}size={16}/>,label:x("settings.media.frameRate","Recording Frame Rate (FPS)"),description:x("settings.media.frameRateDesc","Target video smoothness: 15, 24, 30, or 60 FPS"),right:<C style={{flexDirection:"row",gap:4}}>
511
- {["15","24","30","60"].map(r=><C key={r}style={{paddingHorizontal:6,paddingVertical:4,borderRadius:6,backgroundColor:r==="24"?e.purple:`${e.purple}1A`}}>
512
- <S style={{fontFamily:k.interBold,fontSize:10,color:r==="24"?e.white:e.purple}}>
513
- {r}fps
514
- </S>
515
- </C>)}
511
+ {z({icon:<Hr color={e.purple}size={16}/>,label:w("settings.media.frameRate","Recording Frame Rate (FPS)"),description:w("settings.media.frameRateDesc","Target video smoothness: 15, 24, 30, or 60 FPS"),right:<C style={{flexDirection:"row",gap:5}}>
512
+ {["15","24","30","60"].map(r=>{const k=qe===r;return<V key={r}onPress={()=>{H("light"),Je(r),R(`Recording FPS: ${r}`)}}style={{paddingHorizontal:7,paddingVertical:5,borderRadius:7,backgroundColor:k?e.purple:`${e.purple}14`,borderWidth:1,borderColor:k?e.purple:`${e.purple}2E`}}>
513
+ <S style={{fontFamily:x.interBold,fontSize:10.5,color:k?e.white:e.purple}}>
514
+ {r}fps
515
+ </S>
516
+ </V>})}
516
517
  </C>})}
517
518
 
518
- {R({icon:<Yo color={e.purple}size={16}/>,label:x("settings.media.gifAutoOpt","Auto GIF Optimization"),description:x("settings.media.gifAutoOptDesc","Automatic palette reduction and frame skip for lightweight animated GIFs"),isLast:!0,right:<C style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${e.emerald500}26`}}>
519
- <S style={{fontFamily:k.interBold,fontSize:10,color:e.emerald500}}>
520
- ON
519
+ {z({icon:<Pr color={e.purple}size={16}/>,label:w("settings.media.gifAutoOpt","Auto GIF Optimization"),description:w("settings.media.gifAutoOptDesc","Automatic palette reduction and frame skip for lightweight animated GIFs"),isLast:!0,onPress:()=>{H("light"),re(r=>!r),R(`GIF optimization: ${L?"OFF":"ON"}`)},right:<V onPress={()=>{H("light"),re(r=>!r),R(`GIF optimization: ${L?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:L?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:L?`${e.emerald500}4D`:`${e.grayText}33`}}>
520
+ <S style={{fontFamily:x.interBold,fontSize:10.5,color:L?e.emerald500:e.grayText}}>
521
+ {L?"ON":"OFF"}
521
522
  </S>
522
- </C>})}
523
+ </V>})}
523
524
  </C>
524
525
 
525
526
 
526
527
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
527
- {R({icon:<M color={e.errorColor}size={16}/>,label:x("settings.media.purgeAll","Purge Captured Media Cache"),description:x("settings.media.purgeAllDesc","Delete all local screenshots, screen recordings and converted GIFs"),isLast:!0,onPress:()=>{A.alert(x("settings.media.purgeConfirmTitle","Purge Media Storage?"),x("settings.media.purgeConfirmMessage","This will permanently delete all captured screenshots and videos from disk."),[{text:x("common.cancel","Cancel"),style:"cancel"},{text:x("settings.media.purgeCacheBtn","Purge All"),style:"destructive",onPress:async()=>{await et.clearAllMedia(),Rr(x("settings.media.purgedSuccess","Media cache cleared successfully"))}}])},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
528
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
529
- {x("settings.media.purgeCacheBtn","Purge All")}
528
+ {z({icon:<E color={e.errorColor}size={16}/>,label:w("settings.media.purgeAll","Purge Captured Media Cache"),description:w("settings.media.purgeAllDesc","Delete all local screenshots, screen recordings and converted GIFs"),isLast:!0,onPress:()=>{O.alert(w("settings.media.purgeConfirmTitle","Purge Media Storage?"),w("settings.media.purgeConfirmMessage","This will permanently delete all captured screenshots and videos from disk."),[{text:w("common.cancel","Cancel"),style:"cancel"},{text:w("settings.media.purgeCacheBtn","Purge All"),style:"destructive",onPress:async()=>{await ve.clearAllMedia(),R(w("settings.media.purgedSuccess","Media cache cleared successfully"))}}])},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
529
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
530
+ {w("settings.media.purgeCacheBtn","Purge All")}
530
531
  </S>
531
532
  </C>})}
532
533
  </C>
533
534
  </C>}
534
535
  <C style={{height:48}}/>
535
- </P>
536
+ </M>
536
537
 
537
538
 
538
- {O==="module"&&<C style={{paddingHorizontal:16,paddingTop:12,paddingBottom:Me.OS==="ios"?36:24,backgroundColor:e.primaryLight,borderTopWidth:1,borderTopColor:e.dividerColor,flexDirection:"row",alignItems:"center",gap:12,shadowColor:e.black,shadowOpacity:.08,shadowRadius:8,shadowOffset:{width:0,height:-3},elevation:8}}>
539
+ {q==="module"&&<C style={{paddingHorizontal:16,paddingTop:12,paddingBottom:Xe.OS==="ios"?36:24,backgroundColor:e.primaryLight,borderTopWidth:1,borderTopColor:e.dividerColor,flexDirection:"row",alignItems:"center",gap:12,shadowColor:e.black,shadowOpacity:.08,shadowRadius:8,shadowOffset:{width:0,height:-3},elevation:8}}>
539
540
  <C style={{flex:1}}>
540
- <S style={{fontFamily:k.interBold,fontSize:13,lineHeight:17,color:e.primaryBlack}}>
541
- {Xr} of {D.length} Modules Active
541
+ <S style={{fontFamily:x.interBold,fontSize:13,lineHeight:17,color:e.primaryBlack}}>
542
+ {so} of {$.length} Modules Active
542
543
  </S>
543
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:j?e.purple:e.grayText,marginTop:1}}>
544
- {x(j?"settings.unsavedPending":"settings.allSynchronized")}
544
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:K?e.purple:e.grayText,marginTop:1}}>
545
+ {w(K?"settings.unsavedPending":"settings.allSynchronized")}
545
546
  </S>
546
547
  </C>
547
548
 
548
- <I accessible={!0}accessibilityRole="button"accessibilityLabel="Save Changes"onPress={Yr}style={{flexDirection:"row",alignItems:"center",gap:6,backgroundColor:j?e.purple:`${e.purple}22`,paddingHorizontal:18,paddingVertical:10,borderRadius:10}}>
549
- <$ size={14}color={j?e.white:e.purple}/>
550
- <S style={{fontFamily:k.interBold,fontSize:13,lineHeight:17,color:j?e.white:e.purple}}>
551
- {x("settings.saveChanges")}
549
+ <V accessible={!0}accessibilityRole="button"accessibilityLabel="Save Changes"onPress={co}style={{flexDirection:"row",alignItems:"center",gap:6,backgroundColor:K?e.purple:`${e.purple}22`,paddingHorizontal:18,paddingVertical:10,borderRadius:10}}>
550
+ <U size={14}color={K?e.white:e.purple}/>
551
+ <S style={{fontFamily:x.interBold,fontSize:13,lineHeight:17,color:K?e.white:e.purple}}>
552
+ {w("settings.saveChanges")}
552
553
  </S>
553
- </I>
554
+ </V>
554
555
  </C>}
555
- </C>;let N=null,J="",_=null,K="";F==="apis"?(J=x("settings.apis.title"),_=<Z color={e.white}size={16}/>,K=x("settings.apis.total",{count:Te.length}),N=<P style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
556
- <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary}}>
557
- {R({icon:<Z color={e.purple}size={16}/>,label:x("settings.apis.maxRequestLogs"),description:x("settings.apis.maxRequestLogsDescription"),numericInput:{value:ze,onChange:Or,min:10,max:100,placeholder:"Enter max requests (10-100)"},isLast:!0})}
558
- </C>
556
+ </C>;let N=null;A==="apis"?N=<M style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
559
557
 
560
558
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
561
- {R({icon:<M color={e.errorColor}size={16}/>,label:x("settings.apis.clearNetworkLogs"),description:x("settings.apis.clearNetworkLogsDescription",{count:Te.length}),isLast:!0,onPress:()=>{vo(),qr(null),A.alert(x("common.success"),x("settings.apis.networkLogsCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
562
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
563
- {x("common.clear")}
559
+ {z({icon:<E color={e.errorColor}size={16}/>,label:w("settings.apis.clearNetworkLogs"),description:w("settings.apis.clearNetworkLogsDescription",{count:Pe.length}),isLast:!0,onPress:()=>{zo(),eo(null),O.alert(w("common.success"),w("settings.apis.networkLogsCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
560
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
561
+ {w("common.clear")}
564
562
  </S>
565
563
  </C>})}
566
564
  </C>
567
565
  <C style={{height:48}}/>
568
- </P>):F==="logs"?(J=x("settings.logs.title"),_=<Oe color={e.white}size={16}/>,K=x("settings.logs.total",{count:Ve.length}),N=<P style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
566
+ </M>:A==="logs"?N=<M style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
569
567
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
570
- {R({icon:<Oe color={e.purple}size={16}/>,label:x("settings.logs.maxConsoleLogs"),description:x("settings.logs.maxConsoleLogsDescription"),numericInput:{value:ve,onChange:Er,min:10,max:100,placeholder:"Enter max logs (10-100)"}})}
568
+ {z({icon:<Sr color={e.purple}size={16}/>,label:w("settings.logs.maxConsoleLogs"),description:w("settings.logs.maxConsoleLogsDescription"),numericInput:{value:Se,onChange:_r,min:10,max:100,placeholder:"Enter max logs (10-100)"}})}
571
569
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
572
- <S style={{fontFamily:k.interBold,fontSize:13,lineHeight:17,color:e.primaryBlack,paddingTop:6}}>
573
- {x("settings.logs.logLevels")}
570
+ <S style={{fontFamily:x.interBold,fontSize:13,lineHeight:17,color:e.primaryBlack,paddingTop:6}}>
571
+ {w("settings.logs.logLevels")}
574
572
  </S>
575
- {["info","warn","error"].map(r=>{const T=Pr?.[r],H=r==="error"?e.errorColor:r==="warn"?e.warningIconGold:e.skyBlue,v=x(r==="info"?"settings.logs.showInfo":r==="warn"?"settings.logs.showWarn":"settings.logs.showError"),L=x(r==="info"?"settings.logs.showInfoDesc":r==="warn"?"settings.logs.showWarnDesc":"settings.logs.showErrorDesc");return R({icon:<C style={{width:12,height:12,borderRadius:6,backgroundColor:H}}/>,label:v,description:L,isLast:r==="error",onPress:()=>$r(B=>({...B,[r]:!B[r]})),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:T?e.purple:e.grayTextWeak,backgroundColor:T?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
576
- {T&&<$ size={12}color={e.purple}/>}
573
+ {["info","warn","error"].map(r=>{const k=qr?.[r],D=r==="error"?e.errorColor:r==="warn"?e.warningIconGold:e.skyBlue,F=w(r==="info"?"settings.logs.showInfo":r==="warn"?"settings.logs.showWarn":"settings.logs.showError"),W=w(r==="info"?"settings.logs.showInfoDesc":r==="warn"?"settings.logs.showWarnDesc":"settings.logs.showErrorDesc");return z({icon:<C style={{width:12,height:12,borderRadius:6,backgroundColor:D}}/>,label:F,description:W,isLast:r==="error",onPress:()=>Jr(B=>({...B,[r]:!B[r]})),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:k?e.purple:e.grayTextWeak,backgroundColor:k?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
574
+ {k&&<U size={12}color={e.purple}/>}
577
575
  </C>})})}
578
576
  </C>
579
577
 
580
578
 
581
579
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:16,gap:14}}>
582
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
583
- {x("settings.logFiltersDeduplication")}
580
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
581
+ {w("settings.logFiltersDeduplication")}
584
582
  </S>
585
583
 
586
584
 
587
585
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
588
586
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
589
587
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
590
- <Cr color={e.purple}size={15}/>
588
+ <Ie color={e.purple}size={15}/>
591
589
  </C>
592
590
  <C style={{flex:1}}>
593
- <S style={{fontFamily:k.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
594
- {x("settings.general.duplicateLogs")}
591
+ <S style={{fontFamily:x.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
592
+ {w("settings.general.duplicateLogs")}
595
593
  </S>
596
- <S style={{fontFamily:k.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
597
- {x("settings.general.duplicateLogsDescription")}
594
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
595
+ {w("settings.general.duplicateLogsDescription")}
598
596
  </S>
599
597
  </C>
600
598
  </C>
601
599
 
602
- <I accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle show duplicate logs"accessibilityState={{checked:ke}}onPress={()=>Wr(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:ke?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:ke?"flex-end":"flex-start"}}>
600
+ <V accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle show duplicate logs"accessibilityState={{checked:we}}onPress={()=>jr(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:we?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:we?"flex-end":"flex-start"}}>
603
601
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
604
- </I>
602
+ </V>
605
603
  </C>
606
604
  </C>
607
605
 
608
606
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
609
- {R({icon:<M color={e.errorColor}size={16}/>,label:x("settings.logs.clearConsoleLogs"),description:x("settings.logs.clearConsoleLogsDescription",{count:Ve.length}),isLast:!0,onPress:()=>{Io(),A.alert(x("common.success"),x("settings.logs.consoleLogsCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
610
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
611
- {x("common.clear")}
607
+ {z({icon:<E color={e.errorColor}size={16}/>,label:w("settings.logs.clearConsoleLogs"),description:w("settings.logs.clearConsoleLogsDescription",{count:$e.length}),isLast:!0,onPress:()=>{Ro(),O.alert(w("common.success"),w("settings.logs.consoleLogsCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
608
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
609
+ {w("common.clear")}
612
610
  </S>
613
611
  </C>})}
614
612
  </C>
615
613
  <C style={{height:48}}/>
616
- </P>):F==="analytics"?(J=x("settings.analytics.title"),_=<Ee color={e.white}size={16}/>,K=x("settings.analytics.total",{count:Be.length}),N=<P style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
614
+ </M>:A==="analytics"?N=<M style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
617
615
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary}}>
618
- {R({icon:<Ee color={e.purple}size={16}/>,label:x("settings.analytics.maxAnalyticsEvents"),description:x("settings.analytics.maxAnalyticsEventsDescription",{count:Be.length}),numericInput:{value:Ge,onChange:jr,min:10,max:75,placeholder:"Enter max events (10-75)"},isLast:!0})}
616
+ {z({icon:<Tr color={e.purple}size={16}/>,label:w("settings.analytics.maxAnalyticsEvents"),description:w("settings.analytics.maxAnalyticsEventsDescription",{count:Le.length}),numericInput:{value:Ae,onChange:Qr,min:10,max:75,placeholder:"Enter max events (10-75)"},isLast:!0})}
619
617
  </C>
620
618
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
621
- {R({icon:<M color={e.errorColor}size={16}/>,label:x("settings.analytics.clearAnalyticsEvents"),description:x("settings.analytics.clearAnalyticsEventsDescription"),isLast:!0,onPress:()=>{Ho(),Jr(null),A.alert(x("common.success"),x("settings.analytics.analyticsEventsCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
622
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
623
- {x("common.clear")}
619
+ {z({icon:<E color={e.errorColor}size={16}/>,label:w("settings.analytics.clearAnalyticsEvents"),description:w("settings.analytics.clearAnalyticsEventsDescription"),isLast:!0,onPress:()=>{Fo(),ro(null),O.alert(w("common.success"),w("settings.analytics.analyticsEventsCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
620
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
621
+ {w("common.clear")}
624
622
  </S>
625
623
  </C>})}
626
624
  </C>
627
625
  <C style={{height:48}}/>
628
- </P>):F==="redux"?(J=x("settings.redux.title"),_=<Ne color={e.white}size={16}/>,K=x("settings.redux.reducers",{count:Object.keys(Re||{}).length}),N=<P style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
626
+ </M>:A==="redux"?N=<M style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
629
627
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
630
- {R({icon:<Ne color={e.purple}size={16}/>,label:x("settings.redux.autoRefresh"),description:x("settings.redux.autoRefreshDescription"),onPress:()=>Gr(r=>!r),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:He?e.purple:e.grayTextWeak,backgroundColor:He?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
631
- {He&&<$ size={12}color={e.purple}/>}
628
+ {z({icon:<Br color={e.purple}size={16}/>,label:w("settings.redux.autoRefresh"),description:w("settings.redux.autoRefreshDescription"),onPress:()=>Yr(r=>!r),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:Te?e.purple:e.grayTextWeak,backgroundColor:Te?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
629
+ {Te&&<U size={12}color={e.purple}/>}
632
630
  </C>})}
633
631
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
634
- {R({icon:<Ce color={e.purple}size={16}/>,label:x("settings.redux.defaultJsonExpandDepth"),description:x("settings.redux.defaultJsonExpandDepthDescription"),picker:{options:[1,2,3,5],selectedValue:Ue,onSelect:Ur},isLast:!0})}
632
+ {z({icon:<Q color={e.purple}size={16}/>,label:w("settings.redux.defaultJsonExpandDepth"),description:w("settings.redux.defaultJsonExpandDepthDescription"),picker:{options:[1,2,3,5],selectedValue:Oe,onSelect:Zr},isLast:!0})}
635
633
  </C>
636
634
 
637
635
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
638
- {R({icon:<M color={e.errorColor}size={16}/>,label:x("settings.redux.clearReduxState"),description:x(Re?"settings.redux.clearReduxStateDescription":"settings.redux.clearReduxStateEmpty"),isLast:!0,onPress:()=>{_r(null),A.alert(x("common.success"),x("settings.redux.reduxStateCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
639
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
640
- {x("common.clear")}
636
+ {z({icon:<E color={e.errorColor}size={16}/>,label:w("settings.redux.clearReduxState"),description:w(We?"settings.redux.clearReduxStateDescription":"settings.redux.clearReduxStateEmpty"),isLast:!0,onPress:()=>{oo(null),O.alert(w("common.success"),w("settings.redux.reduxStateCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
637
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
638
+ {w("common.clear")}
641
639
  </S>
642
640
  </C>})}
643
641
  </C>
644
642
  <C style={{height:48}}/>
645
- </P>):F==="crash"&&(J=x("settings.crash.title"),_=<Sr color={e.white}size={16}/>,K=`Total: ${De?.length||0}`,N=<P style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
643
+ </M>:A==="crash"?N=<M style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
646
644
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
647
- {R({icon:<Ce color={e.purple}size={16}/>,label:x("settings.crash.maxCrashLogs"),description:x("settings.crash.maxCrashLogsDesc"),numericInput:{value:qe,onChange:Kr,min:5,max:50,placeholder:"Enter max crashes (5-50)"}})}
645
+ {z({icon:<Q color={e.purple}size={16}/>,label:w("settings.crash.maxCrashLogs"),description:w("settings.crash.maxCrashLogsDesc"),numericInput:{value:Ee,onChange:to,min:5,max:50,placeholder:"Enter max crashes (5-50)"}})}
648
646
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
649
- {R({icon:<Tr color={e.greenColor}size={16}/>,label:x("settings.crash.globalGuard"),description:x("settings.crash.globalGuardDesc"),isLast:!0,right:<C style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${e.greenColor}1F`}}>
650
- <S style={{fontFamily:k.interBold,fontSize:10,lineHeight:13,color:e.greenColor}}>
651
- {x("settings.protectedBadge")}
647
+ {z({icon:<Rr color={e.greenColor}size={16}/>,label:w("settings.crash.globalGuard"),description:w("settings.crash.globalGuardDesc"),isLast:!0,right:<C style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${e.greenColor}1F`}}>
648
+ <S style={{fontFamily:x.interBold,fontSize:10,lineHeight:13,color:e.greenColor}}>
649
+ {w("settings.protectedBadge")}
650
+ </S>
651
+ </C>})}
652
+ </C>
653
+
654
+ <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
655
+ {z({icon:<E color={e.errorColor}size={16}/>,label:w("settings.crash.clearHistory"),description:w("settings.crash.clearHistoryDesc",{count:Me?.length||0}),isLast:!0,onPress:()=>{Ho(),O.alert(w("common.success"),w("settings.crash.historyCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
656
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
657
+ {w("common.clear")}
658
+ </S>
659
+ </C>})}
660
+ </C>
661
+ <C style={{height:48}}/>
662
+ </M>:A==="push"?N=<M style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
663
+
664
+ <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
665
+ {z({icon:<Q color={e.purple}size={16}/>,label:"Max Push Notification Logs",description:"Buffer size limit for recorded push payloads (10-200)",numericInput:{value:lo,onChange:ao,min:10,max:200,placeholder:"Enter max logs (10-200)"}})}
666
+ <C style={{height:1,backgroundColor:e.dividerColor}}/>
667
+ {z({icon:<Lr color={e.greenColor}size={16}/>,label:"Universal Ingestion Engine",description:"Captures any push domain (Salesforce, FCM, APNs, Expo, Braze, Custom)",isLast:!0,right:<C style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${e.greenColor}1F`}}>
668
+ <S style={{fontFamily:x.interBold,fontSize:10,lineHeight:13,color:e.greenColor}}>
669
+ ACTIVE
670
+ </S>
671
+ </C>})}
672
+ </C>
673
+
674
+
675
+ <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:8}}>
676
+ <S style={{fontFamily:x.interBold,fontSize:12,color:e.primaryBlack,marginBottom:4}}>
677
+ ⚡ SIMULATE TEST PUSH NOTIFICATIONS
678
+ </S>
679
+
680
+ <C style={{flexDirection:"row",flexWrap:"wrap",gap:6}}>
681
+ <V onPress={()=>{Y("salesforce"),R("Simulated Salesforce Marketing Cloud push")}}style={{backgroundColor:`${e.sky600}14`,borderColor:`${e.sky600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
682
+ <S style={{fontSize:11,fontFamily:x.interSemiBold,color:e.sky600}}>
683
+ + Salesforce MC
684
+ </S>
685
+ </V>
686
+
687
+ <V onPress={()=>{Y("fcm"),R("Simulated Firebase FCM push")}}style={{backgroundColor:`${e.darkOrange}14`,borderColor:`${e.darkOrange}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
688
+ <S style={{fontSize:11,fontFamily:x.interSemiBold,color:e.darkOrange}}>
689
+ + Firebase FCM
690
+ </S>
691
+ </V>
692
+
693
+ <V onPress={()=>{Y("apns"),R("Simulated Apple APNs push")}}style={{backgroundColor:`${e.primaryBlack}10`,borderColor:`${e.primaryBlack}25`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
694
+ <S style={{fontSize:11,fontFamily:x.interSemiBold,color:e.primaryBlack}}>
695
+ + Apple APNs
696
+ </S>
697
+ </V>
698
+
699
+ <V onPress={()=>{Y("deeplink"),R("Simulated Deep Link push")}}style={{backgroundColor:`${e.brandPurple}14`,borderColor:`${e.brandPurple}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
700
+ <S style={{fontSize:11,fontFamily:x.interSemiBold,color:e.brandPurple}}>
701
+ + Deep Link
702
+ </S>
703
+ </V>
704
+ </C>
705
+ </C>
706
+
707
+
708
+ <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
709
+ {z({icon:<E color={e.errorColor}size={16}/>,label:"Clear Push History",description:`Permanently remove all ${io?.length||0} recorded notifications`,isLast:!0,onPress:()=>{no(),O.alert("Success","Push notification history cleared")},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
710
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
711
+ {w("common.clear")}
652
712
  </S>
653
713
  </C>})}
654
714
  </C>
715
+ <C style={{height:48}}/>
716
+ </M>:A==="media"&&(N=<M style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
717
+
718
+ <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:8}}>
719
+ <S style={{fontFamily:x.interBold,fontSize:12,color:e.primaryBlack,marginBottom:4}}>
720
+ ⚡ DIRECT CAPTURE SHORTCUTS
721
+ </S>
722
+
723
+ <C style={{flexDirection:"row",flexWrap:"wrap",gap:8}}>
724
+ <V onPress={async()=>{H("light"),await ve.takeScreenshot({format:Ve.toLowerCase(),quality:.9,hideInspector:P})&&(H("success"),R("Screenshot captured and saved!"))}}style={{backgroundColor:`${e.purple}14`,borderColor:`${e.purple}33`,borderWidth:1,paddingHorizontal:12,paddingVertical:7,borderRadius:8,flexDirection:"row",alignItems:"center",gap:6}}>
725
+ <Ce color={e.purple}size={14}/>
726
+ <S style={{fontSize:11,fontFamily:x.interBold,color:e.purple}}>
727
+ Take Screenshot
728
+ </S>
729
+ </V>
730
+ </C>
731
+ </C>
732
+
733
+
734
+ <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
735
+ <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
736
+ <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
737
+ <Ce color={e.purple}size={16}/>
738
+ </C>
739
+ <C style={{flex:1}}>
740
+ <S style={{fontFamily:x.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
741
+ {w("settings.media.screenshotCardTitle","Screenshot Capture Settings")}
742
+ </S>
743
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
744
+ {w("settings.media.screenshotCardDesc","Image encoding format, compression quality and overlay auto-hide")}
745
+ </S>
746
+ </C>
747
+ </C>
655
748
 
749
+ {z({icon:<$r color={e.purple}size={16}/>,label:w("settings.media.imageFormat","Image Format"),description:w("settings.media.imageFormatDesc","Export formats (PNG lossless, JPEG lossy, WebP)"),right:<C style={{flexDirection:"row",gap:5}}>
750
+ {["PNG","JPEG","WEBP"].map(r=>{const k=Ve===r;return<V key={r}onPress={()=>{H("light"),Ge(r),R(`Screenshot format: ${r}`)}}style={{paddingHorizontal:9,paddingVertical:5,borderRadius:7,backgroundColor:k?e.purple:`${e.purple}14`,borderWidth:1,borderColor:k?e.purple:`${e.purple}2E`}}>
751
+ <S style={{fontFamily:x.interBold,fontSize:10.5,color:k?e.white:e.purple}}>
752
+ {r}
753
+ </S>
754
+ </V>})}
755
+ </C>})}
756
+
757
+ {z({icon:<Ie color={e.purple}size={16}/>,label:w("settings.media.autoHide","Auto-Hide Inspector During Capture"),description:w("settings.media.autoHideDesc","Temporarily hides the inspector overlay during screen capture"),isLast:!0,onPress:()=>{H("light"),ee(r=>!r),R(`Auto-hide overlay: ${P?"OFF":"ON"}`)},right:<V onPress={()=>{H("light"),ee(r=>!r),R(`Auto-hide overlay: ${P?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:P?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:P?`${e.emerald500}4D`:`${e.grayText}33`}}>
758
+ <S style={{fontFamily:x.interBold,fontSize:10.5,color:P?e.emerald500:e.grayText}}>
759
+ {P?w("settings.media.enabled","ON"):"OFF"}
760
+ </S>
761
+ </V>})}
762
+ </C>
763
+
764
+
765
+ <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
766
+ <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
767
+ <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
768
+ <Ir color={e.purple}size={16}/>
769
+ </C>
770
+ <C style={{flex:1}}>
771
+ <S style={{fontFamily:x.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
772
+ {w("settings.media.videoCardTitle","Video Recording & GIF Conversion")}
773
+ </S>
774
+ <S style={{fontFamily:x.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
775
+ {w("settings.media.videoCardDesc","ReplayKit hardware encoding, frame capture fallback and GIF generation")}
776
+ </S>
777
+ </C>
778
+ </C>
779
+
780
+ {z({icon:<Dr color={e.purple}size={16}/>,label:w("settings.media.audioMode","Audio Source"),description:w("settings.media.audioModeDesc","Record video with muted, app audio, or microphone commentary"),right:<C style={{flexDirection:"row",gap:5}}>
781
+ {["Muted","App","Mic"].map(r=>{const k=je===r;return<V key={r}onPress={()=>{H("light"),Ue(r),R(`Audio source: ${r}`)}}style={{paddingHorizontal:8,paddingVertical:5,borderRadius:7,backgroundColor:k?e.purple:`${e.purple}14`,borderWidth:1,borderColor:k?e.purple:`${e.purple}2E`}}>
782
+ <S style={{fontFamily:x.interBold,fontSize:10.5,color:k?e.white:e.purple}}>
783
+ {r}
784
+ </S>
785
+ </V>})}
786
+ </C>})}
787
+
788
+ {z({icon:<Hr color={e.purple}size={16}/>,label:w("settings.media.frameRate","Recording Frame Rate (FPS)"),description:w("settings.media.frameRateDesc","Target video smoothness: 15, 24, 30, or 60 FPS"),right:<C style={{flexDirection:"row",gap:5}}>
789
+ {["15","24","30","60"].map(r=>{const k=qe===r;return<V key={r}onPress={()=>{H("light"),Je(r),R(`Recording FPS: ${r}`)}}style={{paddingHorizontal:7,paddingVertical:5,borderRadius:7,backgroundColor:k?e.purple:`${e.purple}14`,borderWidth:1,borderColor:k?e.purple:`${e.purple}2E`}}>
790
+ <S style={{fontFamily:x.interBold,fontSize:10.5,color:k?e.white:e.purple}}>
791
+ {r}fps
792
+ </S>
793
+ </V>})}
794
+ </C>})}
795
+
796
+ {z({icon:<Pr color={e.purple}size={16}/>,label:w("settings.media.gifAutoOpt","Auto GIF Optimization"),description:w("settings.media.gifAutoOptDesc","Automatic palette reduction and frame skip for lightweight animated GIFs"),isLast:!0,onPress:()=>{H("light"),re(r=>!r),R(`GIF optimization: ${L?"OFF":"ON"}`)},right:<V onPress={()=>{H("light"),re(r=>!r),R(`GIF optimization: ${L?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:L?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:L?`${e.emerald500}4D`:`${e.grayText}33`}}>
797
+ <S style={{fontFamily:x.interBold,fontSize:10.5,color:L?e.emerald500:e.grayText}}>
798
+ {L?"ON":"OFF"}
799
+ </S>
800
+ </V>})}
801
+ </C>
802
+
803
+
656
804
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
657
- {R({icon:<M color={e.errorColor}size={16}/>,label:x("settings.crash.clearHistory"),description:x("settings.crash.clearHistoryDesc",{count:De?.length||0}),isLast:!0,onPress:()=>{Do(),A.alert(x("common.success"),x("settings.crash.historyCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
658
- <S style={{fontFamily:k.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
659
- {x("common.clear")}
805
+ {z({icon:<E color={e.errorColor}size={16}/>,label:w("settings.media.purgeAll","Purge Captured Media Cache"),description:w("settings.media.purgeAllDesc","Delete all local screenshots, screen recordings and converted GIFs"),isLast:!0,onPress:()=>{O.alert(w("settings.media.purgeConfirmTitle","Purge Media Storage?"),w("settings.media.purgeConfirmMessage","This will permanently delete all captured screenshots and videos from disk."),[{text:w("common.cancel","Cancel"),style:"cancel"},{text:w("settings.media.purgeCacheBtn","Purge All"),style:"destructive",onPress:async()=>{await ve.clearAllMedia(),R(w("settings.media.purgedSuccess","Media cache cleared successfully"))}}])},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
806
+ <S style={{fontFamily:x.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
807
+ {w("settings.media.purgeCacheBtn","Purge All")}
660
808
  </S>
661
809
  </C>})}
662
810
  </C>
663
811
  <C style={{height:48}}/>
664
- </P>);const Y=ro(new Pe.Value(0)).current;return Ae(()=>{F!=="main"&&(Y.setValue(0),Pe.spring(Y,{toValue:1,friction:8,tension:65,useNativeDriver:!0}).start())},[F]),<C style={{flex:1,backgroundColor:e.grayBackground}}>
812
+ </M>);const te=yo(new Fe.Value(0)).current;return Re(()=>{A!=="main"&&(te.setValue(0),Fe.spring(te,{toValue:1,friction:8,tension:65,useNativeDriver:!0}).start())},[A]),<C style={{flex:1,backgroundColor:e.grayBackground}}>
665
813
 
666
- <C style={[Xe.absoluteFill,F!=="main"&&{pointerEvents:"none"}]}>
667
- {Zr()}
814
+ <C style={[Ye.absoluteFill,A!=="main"&&{pointerEvents:"none"}]}>
815
+ {go()}
668
816
  </C>
669
817
 
670
818
 
671
- {F!=="main"&&<Pe.View style={[Xe.absoluteFill,{backgroundColor:e.grayBackground,opacity:Y,transform:[{translateX:Y.interpolate({inputRange:[0,1],outputRange:[30,0]})}]}]}>
819
+ {A!=="main"&&<Fe.View style={[Ye.absoluteFill,{backgroundColor:e.grayBackground,opacity:te,transform:[{translateX:te.interpolate({inputRange:[0,1],outputRange:[30,0]})}]}]}>
672
820
  {N}
673
- </Pe.View>}
674
- </C>};export default tt;
821
+ </Fe.View>}
822
+ </C>};export default Qo;