react-native-inapp-inspector 2.4.2 → 2.5.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 (221) hide show
  1. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  2. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  3. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  4. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  5. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  6. package/android/.gradle/8.9/gc.properties +0 -0
  7. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  8. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  9. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  10. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  11. package/android/.gradle/9.2.0/gc.properties +0 -0
  12. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  13. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  14. package/android/.gradle/vcs-1/gc.properties +0 -0
  15. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  16. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +523 -2
  17. package/dist/commonjs/capture.d.ts +2 -0
  18. package/dist/commonjs/capture.js +1 -1
  19. package/dist/commonjs/components/AnalyticsDetail.js +23 -23
  20. package/dist/commonjs/components/AnalyticsEventCard.js +1 -1
  21. package/dist/commonjs/components/AnalyticsGraph.js +44 -44
  22. package/dist/commonjs/components/AnimatedBrandOwl.js +32 -32
  23. package/dist/commonjs/components/AppHeaderLogo.js +6 -6
  24. package/dist/commonjs/components/BrandCircleIcon.js +28 -28
  25. package/dist/commonjs/components/BrandSquareIcon.js +33 -33
  26. package/dist/commonjs/components/ConsoleLogCard.js +1 -1
  27. package/dist/commonjs/components/Inspector/AnalyticsTab.js +2 -2
  28. package/dist/commonjs/components/Inspector/ConfirmationModal.js +23 -25
  29. package/dist/commonjs/components/Inspector/ConsoleTab.js +5 -5
  30. package/dist/commonjs/components/Inspector/CrashTab.js +44 -11
  31. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +1 -1
  32. package/dist/commonjs/components/Inspector/FabLauncher.js +30 -25
  33. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
  34. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +54 -0
  35. package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
  36. package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.js +234 -0
  37. package/dist/commonjs/components/Inspector/InspectorHeader.js +137 -127
  38. package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +1 -1
  39. package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +114 -32
  40. package/dist/commonjs/components/Inspector/MainScreen.js +26 -19
  41. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +38 -35
  42. package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +36 -0
  43. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +345 -123
  44. package/dist/commonjs/components/Inspector/NetworkTab.js +14 -14
  45. package/dist/commonjs/components/Inspector/PushCard.js +1 -1
  46. package/dist/commonjs/components/Inspector/PushDetail.js +9 -9
  47. package/dist/commonjs/components/Inspector/PushTab.js +3 -3
  48. package/dist/commonjs/components/Inspector/ReduxTab.js +9 -7
  49. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
  50. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +43 -0
  51. package/dist/commonjs/components/Inspector/SettingsPanel.js +102 -73
  52. package/dist/commonjs/components/Inspector/SocketCard.js +1 -1
  53. package/dist/commonjs/components/Inspector/SocketDetail.js +73 -63
  54. package/dist/commonjs/components/Inspector/SocketTab.js +4 -4
  55. package/dist/commonjs/components/Inspector/StorageTab.js +10 -10
  56. package/dist/commonjs/components/Inspector/SupportModal.js +2 -2
  57. package/dist/commonjs/components/Inspector/SupportPage.js +1 -1
  58. package/dist/commonjs/components/JsonViewer.js +47 -45
  59. package/dist/commonjs/components/LogCard.js +22 -20
  60. package/dist/commonjs/components/ModuleErrorBoundary.js +5 -5
  61. package/dist/commonjs/components/NetworkIcons.d.ts +27 -0
  62. package/dist/commonjs/components/NetworkIcons.js +103 -5
  63. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  64. package/dist/commonjs/constants/telemetryConfig.js +1 -1
  65. package/dist/commonjs/constants/version.d.ts +1 -1
  66. package/dist/commonjs/constants/version.js +1 -1
  67. package/dist/commonjs/crash.d.ts +1 -1
  68. package/dist/commonjs/crash.js +1 -1
  69. package/dist/commonjs/customHooks/crashHandler.d.ts +2 -1
  70. package/dist/commonjs/customHooks/crashHandler.js +7 -7
  71. package/dist/commonjs/editor.d.ts +13 -0
  72. package/dist/commonjs/editor.js +1 -0
  73. package/dist/commonjs/helpers/index.d.ts +1 -0
  74. package/dist/commonjs/helpers/index.js +1 -1
  75. package/dist/commonjs/helpers/settingsStore.js +1 -1
  76. package/dist/commonjs/helpers/telemetry.js +1 -1
  77. package/dist/commonjs/i18n/index.js +1 -1
  78. package/dist/commonjs/i18n/locales/ar.json +1 -1
  79. package/dist/commonjs/i18n/locales/bn.json +1 -1
  80. package/dist/commonjs/i18n/locales/de.json +1 -1
  81. package/dist/commonjs/i18n/locales/en.json +1 -1
  82. package/dist/commonjs/i18n/locales/es.json +1 -1
  83. package/dist/commonjs/i18n/locales/fr.json +1 -1
  84. package/dist/commonjs/i18n/locales/gu.json +1 -1
  85. package/dist/commonjs/i18n/locales/hi.json +1 -1
  86. package/dist/commonjs/i18n/locales/id.json +1 -1
  87. package/dist/commonjs/i18n/locales/it.json +1 -1
  88. package/dist/commonjs/i18n/locales/ja.json +1 -1
  89. package/dist/commonjs/i18n/locales/kn.json +1 -1
  90. package/dist/commonjs/i18n/locales/ko.json +1 -1
  91. package/dist/commonjs/i18n/locales/ml.json +1 -1
  92. package/dist/commonjs/i18n/locales/mr.json +1 -1
  93. package/dist/commonjs/i18n/locales/nl.json +1 -1
  94. package/dist/commonjs/i18n/locales/pa.json +1 -1
  95. package/dist/commonjs/i18n/locales/pl.json +1 -1
  96. package/dist/commonjs/i18n/locales/pt.json +1 -1
  97. package/dist/commonjs/i18n/locales/ru.json +1 -1
  98. package/dist/commonjs/i18n/locales/ta.json +1 -1
  99. package/dist/commonjs/i18n/locales/te.json +1 -1
  100. package/dist/commonjs/i18n/locales/tr.json +1 -1
  101. package/dist/commonjs/i18n/locales/vi.json +1 -1
  102. package/dist/commonjs/i18n/locales/zh.json +1 -1
  103. package/dist/commonjs/index.d.ts +4 -1
  104. package/dist/commonjs/index.js +3 -3
  105. package/dist/commonjs/native/NativeInspector.d.ts +3 -0
  106. package/dist/commonjs/native/NativeInspector.js +1 -1
  107. package/dist/commonjs/native/NativeNetworkInspector.d.ts +4 -0
  108. package/dist/commonjs/styles/AppColors.d.ts +42 -2
  109. package/dist/commonjs/styles/AppColors.js +1 -1
  110. package/dist/commonjs/styles/common.js +1 -1
  111. package/dist/commonjs/styles/index.d.ts +7 -0
  112. package/dist/commonjs/styles/index.js +1 -1
  113. package/dist/commonjs/types/editor.d.ts +96 -0
  114. package/dist/commonjs/types/editor.js +1 -0
  115. package/dist/commonjs/types/interfaces.d.ts +21 -0
  116. package/dist/esm/capture.d.ts +2 -0
  117. package/dist/esm/capture.js +1 -1
  118. package/dist/esm/components/AnalyticsDetail.js +31 -31
  119. package/dist/esm/components/AnalyticsEventCard.js +1 -1
  120. package/dist/esm/components/AnalyticsGraph.js +74 -74
  121. package/dist/esm/components/AnimatedBrandOwl.js +114 -114
  122. package/dist/esm/components/AppHeaderLogo.js +7 -7
  123. package/dist/esm/components/BrandCircleIcon.js +70 -70
  124. package/dist/esm/components/BrandSquareIcon.js +61 -61
  125. package/dist/esm/components/ConsoleLogCard.js +1 -1
  126. package/dist/esm/components/Inspector/AnalyticsTab.js +14 -14
  127. package/dist/esm/components/Inspector/ConfirmationModal.js +23 -25
  128. package/dist/esm/components/Inspector/ConsoleTab.js +17 -17
  129. package/dist/esm/components/Inspector/CrashTab.js +202 -169
  130. package/dist/esm/components/Inspector/DeviceInfoTab.js +75 -75
  131. package/dist/esm/components/Inspector/FabLauncher.js +56 -51
  132. package/dist/esm/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
  133. package/dist/esm/components/Inspector/FloatingCaptureWidget.js +54 -0
  134. package/dist/esm/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
  135. package/dist/esm/components/Inspector/GlobalCrashScreenModal.js +234 -0
  136. package/dist/esm/components/Inspector/InspectorHeader.js +162 -152
  137. package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +1 -1
  138. package/dist/esm/components/Inspector/LanguageSelectorModal.js +140 -58
  139. package/dist/esm/components/Inspector/MainScreen.js +61 -54
  140. package/dist/esm/components/Inspector/MediaGalleryTab.js +55 -52
  141. package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +36 -0
  142. package/dist/esm/components/Inspector/MediaPreviewModal.js +345 -123
  143. package/dist/esm/components/Inspector/NetworkTab.js +74 -74
  144. package/dist/esm/components/Inspector/PushCard.js +1 -1
  145. package/dist/esm/components/Inspector/PushDetail.js +18 -18
  146. package/dist/esm/components/Inspector/PushTab.js +1 -1
  147. package/dist/esm/components/Inspector/ReduxTab.js +18 -16
  148. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
  149. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +43 -0
  150. package/dist/esm/components/Inspector/SettingsPanel.js +224 -195
  151. package/dist/esm/components/Inspector/SocketCard.js +8 -8
  152. package/dist/esm/components/Inspector/SocketDetail.js +106 -96
  153. package/dist/esm/components/Inspector/SocketTab.js +18 -18
  154. package/dist/esm/components/Inspector/StorageTab.js +47 -47
  155. package/dist/esm/components/Inspector/SupportModal.js +64 -64
  156. package/dist/esm/components/Inspector/SupportPage.js +5 -5
  157. package/dist/esm/components/JsonViewer.js +51 -49
  158. package/dist/esm/components/LogCard.js +41 -39
  159. package/dist/esm/components/ModuleErrorBoundary.js +10 -10
  160. package/dist/esm/components/NetworkIcons.d.ts +27 -0
  161. package/dist/esm/components/NetworkIcons.js +101 -3
  162. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  163. package/dist/esm/constants/telemetryConfig.js +1 -1
  164. package/dist/esm/constants/version.d.ts +1 -1
  165. package/dist/esm/constants/version.js +1 -1
  166. package/dist/esm/crash.d.ts +1 -1
  167. package/dist/esm/crash.js +1 -1
  168. package/dist/esm/customHooks/crashHandler.d.ts +2 -1
  169. package/dist/esm/customHooks/crashHandler.js +7 -7
  170. package/dist/esm/editor.d.ts +13 -0
  171. package/dist/esm/editor.js +1 -0
  172. package/dist/esm/helpers/index.d.ts +1 -0
  173. package/dist/esm/helpers/index.js +4 -4
  174. package/dist/esm/helpers/settingsStore.js +1 -1
  175. package/dist/esm/helpers/telemetry.js +1 -1
  176. package/dist/esm/i18n/index.js +1 -1
  177. package/dist/esm/i18n/locales/ar.json +1 -1
  178. package/dist/esm/i18n/locales/bn.json +1 -1
  179. package/dist/esm/i18n/locales/de.json +1 -1
  180. package/dist/esm/i18n/locales/en.json +1 -1
  181. package/dist/esm/i18n/locales/es.json +1 -1
  182. package/dist/esm/i18n/locales/fr.json +1 -1
  183. package/dist/esm/i18n/locales/gu.json +1 -1
  184. package/dist/esm/i18n/locales/hi.json +1 -1
  185. package/dist/esm/i18n/locales/id.json +1 -1
  186. package/dist/esm/i18n/locales/it.json +1 -1
  187. package/dist/esm/i18n/locales/ja.json +1 -1
  188. package/dist/esm/i18n/locales/kn.json +1 -1
  189. package/dist/esm/i18n/locales/ko.json +1 -1
  190. package/dist/esm/i18n/locales/ml.json +1 -1
  191. package/dist/esm/i18n/locales/mr.json +1 -1
  192. package/dist/esm/i18n/locales/nl.json +1 -1
  193. package/dist/esm/i18n/locales/pa.json +1 -1
  194. package/dist/esm/i18n/locales/pl.json +1 -1
  195. package/dist/esm/i18n/locales/pt.json +1 -1
  196. package/dist/esm/i18n/locales/ru.json +1 -1
  197. package/dist/esm/i18n/locales/ta.json +1 -1
  198. package/dist/esm/i18n/locales/te.json +1 -1
  199. package/dist/esm/i18n/locales/tr.json +1 -1
  200. package/dist/esm/i18n/locales/vi.json +1 -1
  201. package/dist/esm/i18n/locales/zh.json +1 -1
  202. package/dist/esm/index.d.ts +4 -1
  203. package/dist/esm/index.js +5 -5
  204. package/dist/esm/native/NativeInspector.d.ts +3 -0
  205. package/dist/esm/native/NativeInspector.js +1 -1
  206. package/dist/esm/native/NativeNetworkInspector.d.ts +4 -0
  207. package/dist/esm/styles/AppColors.d.ts +42 -2
  208. package/dist/esm/styles/AppColors.js +1 -1
  209. package/dist/esm/styles/common.js +1 -1
  210. package/dist/esm/styles/index.d.ts +7 -0
  211. package/dist/esm/styles/index.js +1 -1
  212. package/dist/esm/types/editor.d.ts +96 -0
  213. package/dist/esm/types/editor.js +1 -0
  214. package/dist/esm/types/interfaces.d.ts +21 -0
  215. package/editor.d.ts +1 -0
  216. package/editor.js +1 -0
  217. package/ios/NetworkInspectorModule.mm +429 -0
  218. package/package.json +10 -1
  219. package/react-native-inapp-inspector.podspec +1 -1
  220. package/src/native/NativeInspector.ts +57 -4
  221. package/src/native/NativeNetworkInspector.ts +4 -0
@@ -1,4 +1,4 @@
1
- import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";import{Alert as E,Animated as ve,DevSettings as Le,Platform as Ze,ScrollView as N,StyleSheet as er,Text as T,TextInput as So,View as C}from"react-native";import To,{Path as Cr}from"react-native-svg";import{animateNextLayout as he,useInspector as zo}from"./InspectorContext";import B from"../TouchableScale";import Bo from"../Slider";import{toggleGlobalTheme as Vo}from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as S}from"../../styles/AppFonts";import{calculateRamBasedLimits as Ro}from"../../helpers/settingsStore";import{clearNetworkLogs as Fo}from"../../customHooks/networkLogger";import{clearConsoleLogs as Io}from"../../customHooks/consoleLogger";import{clearAnalyticsEvents as Ho,isAnalyticsConnected as wr}from"../../customHooks/analyticsLogger";import{clearCrashRecords as Do}from"../../customHooks/crashHandler";import{isReduxConnected as Sr}from"../../customHooks/reduxLogger";import{useTranslation as vo,SUPPORTED_LANGUAGES as kr,getLanguage as Lo}from"../../i18n";import{LanguageSelectorModal as $o}from"./LanguageSelectorModal";import{GlobeIcon as Wo,SignalIcon as Tr,TerminalIcon as Br,AnalyticsIcon as Vr,SettingsIcon as Po,SunIcon as Ao,MoonIcon as Oo,ScreenIcon as Rr,MotionIcon as Mo,LayersIcon as X,EyeIcon as $e,CheckIcon as K,TrashIcon as G,PackageIcon as Eo,ReduxIcon as Fr,CrashIcon as No,ShieldAlertIcon as Ir,ForwardChevronIcon as Hr,ChevronDownIcon as Go,BrainIcon as Dr,SmartphoneIcon as Uo,DatabaseIcon as Ko,QrCodeIcon as _o,FilmIcon as Lr,ScreencastIcon as Jo,CameraIcon as Ce,VideoCameraIcon as $r,MicrophoneIcon as Wr,GifIcon as Pr,ImageIcon as Ar,BellIcon as Or,WebsocketIcon as Mr,BoltIcon as We}from"../NetworkIcons";import{ScreenCapture as Pe}from"../../capture";import{triggerNativeHaptic as v}from"../../native/NativeInspector";import{isLocalDebugEnvironment as Qo}from"../../helpers";import{showToast as I}from"../../helpers/toast";import{pruneAllLogs as Xo}from"../../helpers/memoryManager";const Yo=()=>{const{t:w}=vo(),{settingsPage:P,setSettingsPage:Ae,settingsActiveSubTab:_,setSettingsActiveSubTab:Er,tabVisibility:V,toggleTabVisibility:Nr,defaultTab:J,setDefaultTab:jr,isDark:Y,setIsDark:Gr,modalHeightPercent:Z,setModalHeightPercent:Ur,modalAnimationType:qr,setModalAnimationType:Kr,showDuplicateLogs:we,setShowDuplicateLogs:_r,showUpdateToast:Se,setShowUpdateToast:Jr,showConsoleLevels:Qr,setShowConsoleLevels:Xr,closeModal:Yr,logs:ke,consoleLogs:xe,analyticsEvents:Te,reduxState:ee,maxConsoleLogs:ze,setMaxConsoleLogs:Zr,maxAnalyticsEventsLimit:Oe,setMaxAnalyticsEventsLimit:eo,isAutoRamLimitEnabled:$,setIsAutoRamLimitEnabled:ro,deviceFreeRamMb:Be,reduxAutoRefresh:Ve,setReduxAutoRefreshState:oo,reduxExpandDepth:Me,setReduxExpandDepth:to,setSelected:io,setSelectedEvent:lo,setReduxState:ao,crashRecords:re,maxCrashLogs:Ee,setMaxCrashLogs:no,pushRecords:oe,maxPushLogs:so,setMaxPushLogs:co,clearAllPushLogs:go,simulatePush:te,socketRecords:ie,maxSocketLogs:po,setMaxSocketLogs:yo,clearAllSocketLogs:uo,simulateSocket:le,captureImageFormat:Re,setCaptureImageFormat:Ne,captureAutoHide:W,setCaptureAutoHide:ae,captureAudioMode:je,setCaptureAudioMode:Ge,captureFps:Ue,setCaptureFps:qe,captureScale:Zo,setCaptureScale:et,captureBitrate:rt,setCaptureBitrate:ot,captureMaxDurationSeconds:tt,setCaptureMaxDurationSeconds:it,captureAutoGif:A,setCaptureAutoGif:ne}=zo(),[se,Ke]=ue(Z),[ho,_e]=ue(!1),bo=Lo(),Fe=kr.find(r=>r.code===bo)||kr[0];De(()=>{Ke(Z)},[Z]);const de=Ro(Be),L=ye(()=>[{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)"},{id:11,key:"socket",label:"WebSocket & Socket.IO",category:"telemetry",icon:"socket",desc:"Real-time WebSocket & Socket.IO message inspector, frames & event logger"}].filter(r=>r.key==="debugging"?Ze.OS==="android"&&Qo():!0),[]),[U,ce]=ue(()=>({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),push:!!(V?.push??!0),socket:!!(V?.socket??!1)}));De(()=>{ce({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),push:!!(V?.push??!0),socket:!!(V?.socket??!1)})},[V]);const Q=ye(()=>L.some(r=>!!U[r.key]!=!!V?.[r.key]),[U,V,L]),Je=L.filter(r=>r.key==="apis"||!!U[r.key]).length,ge=ye(()=>L.filter(r=>!(r.key==="apis"||r.key==="redux"&&!Sr()||r.key==="analytics"&&!wr())),[L]),M=ye(()=>ge.length===0?!1:ge.every(r=>!!U[r.key]),[ge,U]),Qe=()=>{const r=!M;ce(z=>{const H={...z};return ge.forEach(D=>{H[D.key]=r}),H})},mo=()=>{Q&&E.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:()=>{ce({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),push:!!(V?.push??!0),socket:!!(V?.socket??!1)})}},{text:"Save & Reload",style:"default",onPress:()=>{he(),L.forEach(r=>{if(r.key!=="apis"){const z=!!U[r.key],H=!!V?.[r.key];z!==H&&Nr(r.key)}}),Yr(),setTimeout(()=>{__DEV__&&Le&&Le.reload&&Le.reload()},350)}}])},[Ie,Xe]=ue(!1),R=r=><C style={{paddingVertical:12,borderBottomWidth:r.isLast?0:1,borderBottomColor:e.dividerColor}}>
1
+ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";import{Alert as N,Animated as Le,DevSettings as $e,Platform as er,ScrollView as G,StyleSheet as rr,Text as T,TextInput as To,View as C}from"react-native";import Vo,{Path as Cr}from"react-native-svg";import{animateNextLayout as me,useInspector as zo}from"./InspectorContext";import B from"../TouchableScale";import Sr from"../Slider";import{toggleGlobalTheme as Bo}from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as S}from"../../styles/AppFonts";import{calculateRamBasedLimits as Ro}from"../../helpers/settingsStore";import{clearNetworkLogs as Fo}from"../../customHooks/networkLogger";import{clearConsoleLogs as Io}from"../../customHooks/consoleLogger";import{clearAnalyticsEvents as Ho,isAnalyticsConnected as kr}from"../../customHooks/analyticsLogger";import{clearCrashRecords as Do}from"../../customHooks/crashHandler";import{isReduxConnected as xr}from"../../customHooks/reduxLogger";import{useTranslation as vo,SUPPORTED_LANGUAGES as Tr,getLanguage as Lo}from"../../i18n";import{LanguageSelectorModal as $o}from"./LanguageSelectorModal";import{GlobeIcon as Vr,SignalIcon as Br,TerminalIcon as Rr,AnalyticsIcon as Fr,SettingsIcon as Wo,SunIcon as Po,MoonIcon as Ao,ScreenIcon as Ir,MotionIcon as Oo,LayersIcon as Y,EyeIcon as Ce,CheckIcon as _,TrashIcon as U,PackageIcon as Mo,ReduxIcon as Hr,CrashIcon as Eo,ShieldAlertIcon as Dr,ForwardChevronIcon as Lr,ChevronDownIcon as No,BrainIcon as $r,SmartphoneIcon as Go,DatabaseIcon as Uo,QrCodeIcon as Ko,FilmIcon as Wr,ScreencastIcon as _o,CameraIcon as Se,VideoCameraIcon as Pr,MicrophoneIcon as Ar,GifIcon as Or,ImageIcon as Mr,BellIcon as Er,WebsocketIcon as Nr,BoltIcon as We}from"../NetworkIcons";import{ScreenCapture as Pe}from"../../capture";import{triggerNativeHaptic as L}from"../../native/NativeInspector";import{isLocalDebugEnvironment as Jo}from"../../helpers";import{showToast as H}from"../../helpers/toast";import{pruneAllLogs as Qo}from"../../helpers/memoryManager";const Xo=()=>{const{t:w}=vo(),{settingsPage:A,setSettingsPage:Ae,settingsActiveSubTab:J,setSettingsActiveSubTab:jr,tabVisibility:R,toggleTabVisibility:Gr,defaultTab:Q,setDefaultTab:Ur,isDark:Z,setIsDark:qr,modalHeightPercent:ee,setModalHeightPercent:Kr,modalAnimationType:_r,setModalAnimationType:Jr,showDuplicateLogs:ke,setShowDuplicateLogs:Qr,showUpdateToast:xe,setShowUpdateToast:Xr,showConsoleLevels:Yr,setShowConsoleLevels:Zr,closeModal:eo,logs:Te,consoleLogs:Ve,analyticsEvents:ze,reduxState:re,maxConsoleLogs:Be,setMaxConsoleLogs:ro,maxAnalyticsEventsLimit:Oe,setMaxAnalyticsEventsLimit:oo,isAutoRamLimitEnabled:W,setIsAutoRamLimitEnabled:to,deviceFreeRamMb:Re,reduxAutoRefresh:Fe,setReduxAutoRefreshState:io,reduxExpandDepth:Me,setReduxExpandDepth:lo,setSelected:ao,setSelectedEvent:no,setReduxState:so,crashRecords:oe,maxCrashLogs:Ee,setMaxCrashLogs:co,pushRecords:te,maxPushLogs:go,setMaxPushLogs:po,clearAllPushLogs:uo,simulatePush:ie,socketRecords:le,maxSocketLogs:yo,setMaxSocketLogs:ho,clearAllSocketLogs:bo,simulateSocket:ae,captureImageFormat:Ie,setCaptureImageFormat:Ne,captureAutoHide:P,setCaptureAutoHide:ne,captureAudioMode:je,setCaptureAudioMode:Ge,captureFps:Ue,setCaptureFps:qe,captureScale:Yo,setCaptureScale:Zo,captureBitrate:et,setCaptureBitrate:rt,captureMaxDurationSeconds:ot,setCaptureMaxDurationSeconds:tt,captureAutoGif:O,setCaptureAutoGif:se,peekOpacity:Ke,setPeekOpacity:mo}=zo(),[de,_e]=be(ee),[fo,Je]=be(!1),Co=Lo(),ce=Tr.find(r=>r.code===Co)||Tr[0];ve(()=>{_e(ee)},[ee]);const ge=Ro(Re),$=he(()=>[{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)"},{id:11,key:"socket",label:"WebSocket & Socket.IO",category:"telemetry",icon:"socket",desc:"Real-time WebSocket & Socket.IO message inspector, frames & event logger"}].filter(r=>r.key==="debugging"?er.OS==="android"&&Jo():!0),[]),[q,pe]=be(()=>({apis:!0,logs:!!(R?.logs??!0),analytics:!!(R?.analytics??!0),redux:!!(R?.redux??!0),storage:!!(R?.storage??!0),device:!!(R?.device??!0),crash:!!(R?.crash??!0),debugging:!!(R?.debugging??!0),media:!!(R?.media??!0),push:!!(R?.push??!0),socket:!!(R?.socket??!0)}));ve(()=>{pe({apis:!0,logs:!!(R?.logs??!0),analytics:!!(R?.analytics??!0),redux:!!(R?.redux??!0),storage:!!(R?.storage??!0),device:!!(R?.device??!0),crash:!!(R?.crash??!0),debugging:!!(R?.debugging??!0),media:!!(R?.media??!0),push:!!(R?.push??!0),socket:!!(R?.socket??!0)})},[R]);const X=he(()=>$.some(r=>!!q[r.key]!=!!R?.[r.key]),[q,R,$]),Qe=$.filter(r=>r.key==="apis"||!!q[r.key]).length,ue=he(()=>$.filter(r=>!(r.key==="apis"||r.key==="redux"&&!xr()||r.key==="analytics"&&!kr())),[$]),E=he(()=>ue.length===0?!1:ue.every(r=>!!q[r.key]),[ue,q]),Xe=()=>{const r=!E;pe(V=>{const D={...V};return ue.forEach(v=>{D[v.key]=r}),D})},wo=()=>{X&&N.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:()=>{pe({apis:!0,logs:!!R?.logs,analytics:!!R?.analytics,redux:!!R?.redux,storage:!!R?.storage,device:!!R?.device,crash:!!R?.crash,debugging:!!R?.debugging,media:!!(R?.media??!0),push:!!(R?.push??!0),socket:!!(R?.socket??!1)})}},{text:"Save & Reload",style:"default",onPress:()=>{me(),$.forEach(r=>{if(r.key!=="apis"){const V=!!q[r.key],D=!!R?.[r.key];V!==D&&Gr(r.key)}}),eo(),setTimeout(()=>{__DEV__&&$e&&$e.reload&&$e.reload()},350)}}])},[He,Ye]=be(!1),F=r=><C style={{paddingVertical:12,borderBottomWidth:r.isLast?0:1,borderBottomColor:e.dividerColor}}>
2
2
  <B 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}
@@ -15,7 +15,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
15
15
  </B>
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
- <So style={{flex:1,fontFamily:S.interMedium,fontSize:14,lineHeight:18,color:e.primaryBlack,paddingVertical:6}}value={String(r.numericInput.value||"")}onChangeText={z=>{const H=parseInt(z.replace(/[^0-9]/g,""),10);if(!isNaN(H)){const D=Math.max(r.numericInput?.min??1,Math.min(r.numericInput?.max??1e4,H));r.numericInput?.onChange(D)}}}keyboardType={r.numericInput.keyboardType??"number-pad"}placeholder={r.numericInput.placeholder}placeholderTextColor={e.grayTextWeak}maxLength={6}selectTextOnFocus/>
18
+ <To style={{flex:1,fontFamily:S.interMedium,fontSize:14,lineHeight:18,color:e.primaryBlack,paddingVertical:6}}value={String(r.numericInput.value||"")}onChangeText={V=>{const D=parseInt(V.replace(/[^0-9]/g,""),10);if(!isNaN(D)){const v=Math.max(r.numericInput?.min??1,Math.min(r.numericInput?.max??1e4,D));r.numericInput?.onChange(v)}}}keyboardType={r.numericInput.keyboardType??"number-pad"}placeholder={r.numericInput.placeholder}placeholderTextColor={e.grayTextWeak}maxLength={6}selectTextOnFocus/>
19
19
  <T style={{fontFamily:S.interBold,fontSize:11,color:e.purple,marginLeft:6}}>
20
20
  MAX
21
21
  </T>
@@ -26,100 +26,100 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
26
26
  </T>: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(z=>{const H=r.picker.selectedValue===z;return<B key={String(z)}onPress={()=>r.picker.onSelect(z)}style={{flex:1,paddingVertical:6,alignItems:"center",borderRadius:6,backgroundColor:H?e.purple:"transparent"}}>
30
- <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:H?e.white:e.grayText}}>
31
- {r.picker.formatLabel?r.picker.formatLabel(z):z}
29
+ {r.picker.options.map(V=>{const D=r.picker.selectedValue===V;return<B key={String(V)}onPress={()=>r.picker.onSelect(V)}style={{flex:1,paddingVertical:6,alignItems:"center",borderRadius:6,backgroundColor:D?e.purple:"transparent"}}>
30
+ <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:D?e.white:e.grayText}}>
31
+ {r.picker.formatLabel?r.picker.formatLabel(V):V}
32
32
  </T>
33
33
  </B>})}
34
34
  </C>}
35
- </C>,fo=()=><C style={{flex:1,backgroundColor:e.grayBackground}}>
36
- <N style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:14}}showsVerticalScrollIndicator={!1}>
35
+ </C>,So=()=><C style={{flex:1,backgroundColor:e.grayBackground}}>
36
+ <G 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
- <N horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:2}}>
41
- {[{key:"module",label:w("settings.modulesAndTools","Modules & Tools"),Icon:X,badge:`${L.filter(r=>U?.[r.key]||r.key==="apis").length}/${L.length}`},{key:"ui",label:w("settings.uiPreferences","UI Preferences"),Icon:Rr},{key:"limits",label:w("settings.ramLimits","RAM & Limits"),Icon:Dr},{key:"capture",label:w("settings.screenVideoCapture","Screen & Video Capture"),Icon:Ce}].map(r=>{const z=_===r.key,H=r.Icon;return<B key={r.key}accessible={!0}accessibilityRole="tab"accessibilityLabel={r.label}accessibilityState={{selected:z}}onPress={()=>{he(),Er(r.key)}}style={{paddingVertical:8,paddingHorizontal:14,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,borderRadius:9,backgroundColor:z?e.purple:"transparent"}}>
42
- <H color={z?e.white:e.grayText}size={13}/>
43
- <T style={{fontFamily:S.interBold,fontSize:12.5,lineHeight:16,color:z?e.white:e.grayText}}>
40
+ <G horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:2}}>
41
+ {[{key:"module",label:w("settings.modulesAndTools","Modules & Tools"),Icon:Y,badge:`${$.filter(r=>q?.[r.key]||r.key==="apis").length}/${$.length}`},{key:"ui",label:w("settings.uiPreferences","UI Preferences"),Icon:Ir},{key:"limits",label:w("settings.ramLimits","RAM & Limits"),Icon:$r},{key:"capture",label:w("settings.screenVideoCapture","Screen & Video Capture"),Icon:Se}].map(r=>{const V=J===r.key,D=r.Icon;return<B key={r.key}accessible={!0}accessibilityRole="tab"accessibilityLabel={r.label}accessibilityState={{selected:V}}onPress={()=>{me(),jr(r.key)}}style={{paddingVertical:8,paddingHorizontal:14,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,borderRadius:9,backgroundColor:V?e.purple:"transparent"}}>
42
+ <D color={V?e.white:e.grayText}size={13}/>
43
+ <T style={{fontFamily:S.interBold,fontSize:12.5,lineHeight:16,color:V?e.white:e.grayText}}>
44
44
  {r.label}
45
45
  </T>
46
- {r.badge&&<C style={{backgroundColor:z?"rgba(255,255,255,0.25)":`${e.purple}18`,paddingHorizontal:5.5,paddingVertical:1,borderRadius:10}}>
47
- <T style={{fontFamily:S.interBold,fontSize:9.5,color:z?e.white:e.purple}}>
46
+ {r.badge&&<C style={{backgroundColor:V?"rgba(255,255,255,0.25)":`${e.purple}18`,paddingHorizontal:5.5,paddingVertical:1,borderRadius:10}}>
47
+ <T style={{fontFamily:S.interBold,fontSize:9.5,color:V?e.white:e.purple}}>
48
48
  {r.badge}
49
49
  </T>
50
50
  </C>}
51
51
  </B>})}
52
- </N>
52
+ </G>
53
53
  </C>
54
54
 
55
- {_==="module"&&<C style={{gap:12}}>
55
+ {J==="module"&&<C style={{gap:12}}>
56
56
 
57
- <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.primaryLight,borderRadius:12,paddingVertical:10,paddingHorizontal:14,borderWidth:1,borderColor:M?`${e.purple}40`:e.grayBorderSecondary,shadowColor:e.black,shadowOpacity:.02,shadowRadius:3,shadowOffset:{width:0,height:1}}}>
58
- <B accessible={!0}accessibilityRole="checkbox"accessibilityLabel="Toggle Select All Modules"accessibilityState={{checked:M}}onPress={Qe}style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
59
- <C style={{width:22,height:22,borderRadius:6,borderWidth:M?0:1.8,borderColor:e.grayBorderSecondary,backgroundColor:M?e.purple:e.grayBackground,alignItems:"center",justifyContent:"center"}}>
60
- {M&&<K size={12}color={e.white}/>}
57
+ <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.primaryLight,borderRadius:12,paddingVertical:10,paddingHorizontal:14,borderWidth:1,borderColor:E?`${e.purple}40`:e.grayBorderSecondary,shadowColor:e.black,shadowOpacity:.02,shadowRadius:3,shadowOffset:{width:0,height:1}}}>
58
+ <B accessible={!0}accessibilityRole="checkbox"accessibilityLabel="Toggle Select All Modules"accessibilityState={{checked:E}}onPress={Xe}style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
59
+ <C style={{width:22,height:22,borderRadius:6,borderWidth:E?0:1.8,borderColor:e.grayBorderSecondary,backgroundColor:E?e.purple:e.grayBackground,alignItems:"center",justifyContent:"center"}}>
60
+ {E&&<_ size={12}color={e.white}/>}
61
61
  </C>
62
62
  <C>
63
63
  <T style={{fontFamily:S.interBold,fontSize:13,color:e.primaryBlack}}>
64
- {M?"Deselect All Modules":"Select All Modules"}
64
+ {E?"Deselect All Modules":"Select All Modules"}
65
65
  </T>
66
66
  <T style={{fontFamily:S.interRegular,fontSize:10.5,color:e.grayText,marginTop:1}}>
67
- {Je} of {L.length} modules active
67
+ {Qe} of {$.length} modules active
68
68
  </T>
69
69
  </C>
70
70
  </B>
71
71
 
72
- <B onPress={Qe}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:M?`${e.purple}14`:e.purple,borderWidth:1,borderColor:M?`${e.purple}30`:"transparent"}}>
73
- <T style={{fontFamily:S.interBold,fontSize:11,color:M?e.purple:e.white}}>
74
- {M?"Deselect All":"Select All"}
72
+ <B onPress={Xe}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:E?`${e.purple}14`:e.purple,borderWidth:1,borderColor:E?`${e.purple}30`:"transparent"}}>
73
+ <T style={{fontFamily:S.interBold,fontSize:11,color:E?e.purple:e.white}}>
74
+ {E?"Deselect All":"Select All"}
75
75
  </T>
76
76
  </B>
77
77
  </C>
78
78
 
79
79
 
80
80
  <C style={{gap:10}}>
81
- {L.map(r=>{const z=Sr(),H=wr(),D=r.key==="redux"&&!z||r.key==="analytics"&&!H,O=r.key==="apis"||D,F=r.key==="apis"||!!U?.[r.key]&&!D,He=r.key==="apis"?ke.length>0?`${ke.length} requests`:"":r.key==="logs"?xe.length>0?`${xe.length} logs \u2022 Limit: ${ze}`:"":r.key==="crash"?re&&re.length>0?`${re.length} crashes recorded \u2022 Crash Guard`:"":r.key==="analytics"?Te.length>0?`${Te.length} events logged`:"":r.key==="redux"?ee&&Object.keys(ee).length>0?`${Object.keys(ee).length} slices \u2022 Depth: ${Me}`:"":r.key==="push"?oe&&oe.length>0?`${oe.length} notifications logged`:"":r.key==="socket"&&ie&&ie.length>0?`${ie.length} connections active`:"";return<C key={r.key}style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1.5,borderColor:F?`${e.purple}38`:e.grayBorderSecondary,padding:14,gap:10,shadowColor:e.black,shadowOpacity:F?.04:.02,shadowRadius:5,shadowOffset:{width:0,height:2}}}>
81
+ {$.map(r=>{const V=xr(),D=kr(),v=r.key==="redux"&&!V||r.key==="analytics"&&!D,M=r.key==="apis"||v,I=r.key==="apis"||!!q?.[r.key]&&!v,De=r.key==="apis"?Te.length>0?`${Te.length} requests`:"":r.key==="logs"?Ve.length>0?`${Ve.length} logs \u2022 Limit: ${Be}`:"":r.key==="crash"?oe&&oe.length>0?`${oe.length} crashes recorded \u2022 Crash Guard`:"":r.key==="analytics"?ze.length>0?`${ze.length} events logged`:"":r.key==="redux"?re&&Object.keys(re).length>0?`${Object.keys(re).length} slices \u2022 Depth: ${Me}`:"":r.key==="push"?te&&te.length>0?`${te.length} notifications logged`:"":r.key==="socket"&&le&&le.length>0?`${le.length} connections active`:"";return<C key={r.key}style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1.5,borderColor:I?`${e.purple}38`:e.grayBorderSecondary,padding:14,gap:10,shadowColor:e.black,shadowOpacity:I?.04:.02,shadowRadius:5,shadowOffset:{width:0,height:2}}}>
82
82
 
83
83
  <C style={{flexDirection:"row",alignItems:"flex-start",gap:10}}>
84
84
 
85
- <B accessible={!0}accessibilityRole="checkbox"accessibilityLabel={`Select ${r.label}`}accessibilityState={{checked:F,disabled:O}}disabled={O}onPress={()=>{O||ce(Ye=>({...Ye,[r.key]:!Ye[r.key]}))}}hitSlop={8}style={{width:22,height:22,borderRadius:6,borderWidth:F?0:1.8,borderColor:O?e.dividerColor:e.grayBorderSecondary,backgroundColor:r.key==="apis"?`${e.blue500}22`:F?e.purple:e.grayBackground,alignItems:"center",justifyContent:"center",marginTop:7,shadowColor:F?e.purple:"transparent",shadowOpacity:F?.25:0,shadowRadius:2,elevation:F?2:0}}>
86
- {r.key==="apis"?<K size={12}color={e.blue500}/>:F?<K size={12}color={e.white}/>:O?<To width={10}height={10}viewBox="0 0 24 24"fill="none">
85
+ <B accessible={!0}accessibilityRole="checkbox"accessibilityLabel={`Select ${r.label}`}accessibilityState={{checked:I,disabled:M}}disabled={M}onPress={()=>{M||pe(Ze=>({...Ze,[r.key]:!Ze[r.key]}))}}hitSlop={8}style={{width:22,height:22,borderRadius:6,borderWidth:I?0:1.8,borderColor:M?e.dividerColor:e.grayBorderSecondary,backgroundColor:r.key==="apis"?`${e.blue500}22`:I?e.purple:e.grayBackground,alignItems:"center",justifyContent:"center",marginTop:7,shadowColor:I?e.purple:"transparent",shadowOpacity:I?.25:0,shadowRadius:2,elevation:I?2:0}}>
86
+ {r.key==="apis"?<_ size={12}color={e.blue500}/>:I?<_ size={12}color={e.white}/>:M?<Vo width={10}height={10}viewBox="0 0 24 24"fill="none">
87
87
  <Cr d="M7 10V7a5 5 0 0 1 10 0v3"stroke={e.grayText}strokeWidth="2.2"strokeLinecap="round"/>
88
88
  <Cr d="M5 10h14v9a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z"fill={e.grayText}/>
89
- </To>:null}
89
+ </Vo>:null}
90
90
  </B>
91
91
 
92
92
 
93
- <B accessible={!0}accessibilityRole="button"accessibilityLabel={`${r.label} settings`}disabled={D}onPress={()=>{he(),Ae(r.key)}}style={{flex:1,flexDirection:"row",alignItems:"flex-start",gap:10}}>
93
+ <B accessible={!0}accessibilityRole="button"accessibilityLabel={`${r.label} settings`}disabled={v}onPress={()=>{me(),Ae(r.key)}}style={{flex:1,flexDirection:"row",alignItems:"flex-start",gap:10}}>
94
94
 
95
- <C style={{width:36,height:36,borderRadius:10,backgroundColor:O?`${e.grayBorderSecondary}4D`:F?`${e.purple}14`:e.grayBackground,borderWidth:1,borderColor:O?e.dividerColor:F?`${e.purple}33`:e.grayBorderSecondary,alignItems:"center",justifyContent:"center",marginTop:1}}>
96
- {r.icon==="apis"&&<Tr color={F?e.purple:e.grayTextWeak}size={16}/>}
97
- {r.icon==="logs"&&<Br color={F?e.purple:e.grayTextWeak}size={16}/>}
98
- {r.icon==="crash"&&<No color={F?e.purple:e.grayTextWeak}size={16}/>}
99
- {r.icon==="analytics"&&<Vr color={F?e.purple:e.grayTextWeak}size={16}/>}
100
- {r.icon==="redux"&&<Fr color={F?e.purple:e.grayTextWeak}size={16}/>}
101
- {r.icon==="device"&&<Uo color={F?e.purple:e.grayTextWeak}size={16}/>}
102
- {r.icon==="storage"&&<Ko color={F?e.purple:e.grayTextWeak}size={16}/>}
103
- {r.icon==="debugging"&&<_o color={F?e.purple:e.grayTextWeak}size={16}/>}
104
- {r.icon==="media"&&<Jo color={F?e.purple:e.grayTextWeak}size={16}/>}
105
- {r.icon==="push"&&<Or color={F?e.purple:e.grayTextWeak}size={16}/>}
106
- {r.icon==="socket"&&<Mr color={F?e.purple:e.grayTextWeak}size={16}/>}
95
+ <C style={{width:36,height:36,borderRadius:10,backgroundColor:M?`${e.grayBorderSecondary}4D`:I?`${e.purple}14`:e.grayBackground,borderWidth:1,borderColor:M?e.dividerColor:I?`${e.purple}33`:e.grayBorderSecondary,alignItems:"center",justifyContent:"center",marginTop:1}}>
96
+ {r.icon==="apis"&&<Br color={I?e.purple:e.grayTextWeak}size={16}/>}
97
+ {r.icon==="logs"&&<Rr color={I?e.purple:e.grayTextWeak}size={16}/>}
98
+ {r.icon==="crash"&&<Eo color={I?e.purple:e.grayTextWeak}size={16}/>}
99
+ {r.icon==="analytics"&&<Fr color={I?e.purple:e.grayTextWeak}size={16}/>}
100
+ {r.icon==="redux"&&<Hr color={I?e.purple:e.grayTextWeak}size={16}/>}
101
+ {r.icon==="device"&&<Go color={I?e.purple:e.grayTextWeak}size={16}/>}
102
+ {r.icon==="storage"&&<Uo color={I?e.purple:e.grayTextWeak}size={16}/>}
103
+ {r.icon==="debugging"&&<Ko color={I?e.purple:e.grayTextWeak}size={16}/>}
104
+ {r.icon==="media"&&<_o color={I?e.purple:e.grayTextWeak}size={16}/>}
105
+ {r.icon==="push"&&<Er color={I?e.purple:e.grayTextWeak}size={16}/>}
106
+ {r.icon==="socket"&&<Nr color={I?e.purple:e.grayTextWeak}size={16}/>}
107
107
  </C>
108
108
 
109
109
 
110
110
  <C style={{flex:1,gap:2}}>
111
111
  <C style={{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"}}>
112
- <C style={{minWidth:22,height:22,paddingHorizontal:5,borderRadius:11,backgroundColor:F?`${e.purple}1C`:`${e.grayBorderSecondary}80`,borderWidth:1,borderColor:F?`${e.purple}44`:e.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
113
- <T style={{fontFamily:S.interBold,fontSize:10,lineHeight:13,color:F?e.purple:e.grayText}}>
112
+ <C style={{minWidth:22,height:22,paddingHorizontal:5,borderRadius:11,backgroundColor:I?`${e.purple}1C`:`${e.grayBorderSecondary}80`,borderWidth:1,borderColor:I?`${e.purple}44`:e.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
113
+ <T style={{fontFamily:S.interBold,fontSize:10,lineHeight:13,color:I?e.purple:e.grayText}}>
114
114
  #{r.id}
115
115
  </T>
116
116
  </C>
117
- <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:O?e.grayText:e.primaryBlack}}>
117
+ <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:M?e.grayText:e.primaryBlack}}>
118
118
  {r.label}
119
119
  </T>
120
120
 
121
121
 
122
- {r.key===J&&!D&&<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}}>
122
+ {r.key===Q&&!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}}>
123
123
  <C style={{width:4,height:4,borderRadius:2,backgroundColor:e.purple}}/>
124
124
  <T style={{fontFamily:S.interBold,fontSize:8,lineHeight:11,color:e.purple,letterSpacing:.4}}>
125
125
  {w("settings.defaultBadge")}
@@ -131,11 +131,11 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
131
131
  <T style={{fontFamily:S.interBold,fontSize:8,lineHeight:11,color:e.blue500,letterSpacing:.3}}>
132
132
  {w("settings.coreBadge")}
133
133
  </T>
134
- </C>:D?<C style={{backgroundColor:`${e.amber500}18`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.amber500}35`}}>
134
+ </C>:v?<C style={{backgroundColor:`${e.amber500}18`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.amber500}35`}}>
135
135
  <T style={{fontFamily:S.interBold,fontSize:8,lineHeight:11,color:e.amber700,letterSpacing:.3}}>
136
136
  {r.key==="redux"?w("settings.notConnectedBadge"):w("settings.notDetectedBadge")}
137
137
  </T>
138
- </C>:F?<C style={{backgroundColor:`${e.liveGreen}18`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.liveGreen}38`}}>
138
+ </C>:I?<C style={{backgroundColor:`${e.liveGreen}18`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.liveGreen}38`}}>
139
139
  <T style={{fontFamily:S.interBold,fontSize:8,lineHeight:11,color:e.green700,letterSpacing:.3}}>
140
140
  {w("settings.activeBadge")}
141
141
  </T>
@@ -154,29 +154,29 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
154
154
  </C>
155
155
 
156
156
 
157
- {!D&&<C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingTop:8,borderTopWidth:1,borderTopColor:e.dividerColor}}>
157
+ {!v&&<C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingTop:8,borderTopWidth:1,borderTopColor:e.dividerColor}}>
158
158
 
159
- {He&&He.trim().length>0?<C style={{flexDirection:"row",alignItems:"center",gap:6,flex:1}}>
160
- <C style={{width:6,height:6,borderRadius:3,backgroundColor:F?e.liveGreen:e.grayTextWeak}}/>
159
+ {De&&De.trim().length>0?<C style={{flexDirection:"row",alignItems:"center",gap:6,flex:1}}>
160
+ <C style={{width:6,height:6,borderRadius:3,backgroundColor:I?e.liveGreen:e.grayTextWeak}}/>
161
161
  <T style={{fontFamily:S.interMedium,fontSize:11,color:e.grayText,lineHeight:14}}>
162
- {He}
162
+ {De}
163
163
  </T>
164
164
  </C>:<C style={{flex:1}}/>}
165
165
 
166
166
 
167
- <B accessible={!0}accessibilityRole="button"accessibilityLabel={`Configure ${r.label} settings`}onPress={()=>{he(),Ae(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`}}>
168
- <Po color={e.purple}size={11}/>
167
+ <B accessible={!0}accessibilityRole="button"accessibilityLabel={`Configure ${r.label} settings`}onPress={()=>{me(),Ae(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`}}>
168
+ <Wo color={e.purple}size={11}/>
169
169
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.purple}}>
170
170
  {w("settings.configure")}
171
171
  </T>
172
- <Hr color={e.purple}size={9}/>
172
+ <Lr color={e.purple}size={9}/>
173
173
  </B>
174
174
  </C>}
175
175
  </C>})}
176
176
  </C>
177
177
  </C>}
178
178
 
179
- {_==="ui"&&<C style={{gap:14}}>
179
+ {J==="ui"&&<C style={{gap:14}}>
180
180
 
181
181
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:14,gap:12}}>
182
182
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
@@ -186,7 +186,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
186
186
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
187
187
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
188
188
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
189
- {Y?<Ao color={e.purple}size={15}/>:<Oo color={e.purple}size={15}/>}
189
+ {Z?<Po color={e.purple}size={15}/>:<Ao color={e.purple}size={15}/>}
190
190
  </C>
191
191
  <C style={{flex:1}}>
192
192
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -198,7 +198,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
198
198
  </C>
199
199
  </C>
200
200
 
201
- <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle Dark Theme"accessibilityState={{checked:Y}}onPress={()=>{const r=!Y;Gr(r),Vo(r)}}style={{width:42,height:24,borderRadius:12,backgroundColor:Y?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:Y?"flex-end":"flex-start"}}>
201
+ <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle Dark Theme"accessibilityState={{checked:Z}}onPress={()=>{const r=!Z;qr(r),Bo(r)}}style={{width:42,height:24,borderRadius:12,backgroundColor:Z?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:Z?"flex-end":"flex-start"}}>
202
202
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
203
203
  </B>
204
204
  </C>
@@ -209,7 +209,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
209
209
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
210
210
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
211
211
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:`${e.blue600}14`,alignItems:"center",justifyContent:"center"}}>
212
- <Wo color={e.blue600}size={15}/>
212
+ <Vr color={e.blue600}size={15}/>
213
213
  </C>
214
214
  <C style={{flex:1}}>
215
215
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -221,14 +221,12 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
221
221
  </C>
222
222
  </C>
223
223
 
224
- <B onPress={()=>{v("light"),_e(!0)}}style={{flexDirection:"row",alignItems:"center",backgroundColor:e.purpleShade50,paddingHorizontal:10,paddingVertical:6,borderRadius:8,gap:5,borderWidth:1,borderColor:`${e.purple}20`}}>
225
- <T style={{fontSize:13}}>
226
- {Fe?.flag||"\u{1F310}"}
227
- </T>
224
+ <B onPress={()=>{L("light"),Je(!0)}}style={{flexDirection:"row",alignItems:"center",backgroundColor:e.purpleShade50,paddingHorizontal:10,paddingVertical:6,borderRadius:8,gap:5,borderWidth:1,borderColor:`${e.purple}20`}}>
225
+ {ce?.flag?<T style={{fontSize:13}}>{ce.flag}</T>:<Vr size={14}color={e.purple}/>}
228
226
  <T style={{fontFamily:S.interSemiBold,fontSize:12,color:e.purple}}>
229
- {Fe?.nativeName||Fe?.name||"English"}
227
+ {ce?.nativeName||ce?.name||"English"}
230
228
  </T>
231
- <Hr size={11}color={e.purple}/>
229
+ <Lr size={11}color={e.purple}/>
232
230
  </B>
233
231
  </C>
234
232
  </C>
@@ -244,7 +242,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
244
242
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:10}}>
245
243
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
246
244
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
247
- <Rr color={e.purple}size={15}/>
245
+ <Ir color={e.purple}size={15}/>
248
246
  </C>
249
247
  <C style={{flex:1}}>
250
248
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -256,16 +254,47 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
256
254
  </C>
257
255
  </C>
258
256
 
259
- {se!==Z&&<B onPress={()=>{Ur(se)}}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}}>
260
- <K size={11}color={e.white}/>
257
+ {de!==ee&&<B onPress={()=>{Kr(de)}}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}}>
258
+ <_ size={11}color={e.white}/>
261
259
  <T style={{fontFamily:S.interBold,fontSize:11,color:e.white}}>
262
- Save ({se}%)
260
+ Save ({de}%)
263
261
  </T>
264
262
  </B>}
265
263
  </C>
266
264
 
267
265
  <C style={{marginTop:6}}>
268
- <Bo value={se}onValueChange={Ke}min={50}max={90}step={5}quickPresets={[50,60,70,80,90]}formatLabel={r=>`${Math.round(r)}%`}/>
266
+ <Sr value={de}onValueChange={_e}min={50}max={90}step={5}quickPresets={[50,60,70,80,90]}formatLabel={r=>`${Math.round(r)}%`}/>
267
+ </C>
268
+ </C>
269
+
270
+ <C style={{height:1,backgroundColor:e.dividerColor}}/>
271
+
272
+
273
+ <C style={{gap:8}}>
274
+ <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:10}}>
275
+ <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
276
+ <C style={{width:32,height:32,borderRadius:8,backgroundColor:"rgba(6, 182, 212, 0.12)",alignItems:"center",justifyContent:"center"}}>
277
+ <Ce color={"#06B6D4"}size={15}/>
278
+ </C>
279
+ <C style={{flex:1}}>
280
+ <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
281
+ {w("settings.general.peekOpacity","Peek-Through Opacity")}
282
+ </T>
283
+ <T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
284
+ {w("settings.general.peekOpacityDescription","Transparency level when the eye icon is enabled")}
285
+ </T>
286
+ </C>
287
+ </C>
288
+
289
+ <C style={{backgroundColor:"rgba(6, 182, 212, 0.14)",paddingHorizontal:8,paddingVertical:3,borderRadius:6,borderWidth:1,borderColor:"rgba(6, 182, 212, 0.30)"}}>
290
+ <T style={{fontFamily:S.interBold,fontSize:12,color:"#06B6D4"}}>
291
+ {Ke.toFixed(1)}
292
+ </T>
293
+ </C>
294
+ </C>
295
+
296
+ <C style={{marginTop:6}}>
297
+ <Sr value={Ke}onValueChange={r=>{const V=Math.round(r*10)/10;mo(V)}}min={.1}max={1}step={.1}quickPresets={[.1,.3,.5,.7,1]}formatLabel={r=>r.toFixed(1)}/>
269
298
  </C>
270
299
  </C>
271
300
 
@@ -275,7 +304,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
275
304
  <C style={{gap:8}}>
276
305
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
277
306
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
278
- <Mo color={e.purple}size={15}/>
307
+ <Oo color={e.purple}size={15}/>
279
308
  </C>
280
309
  <C style={{flex:1}}>
281
310
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -288,8 +317,8 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
288
317
  </C>
289
318
 
290
319
  <C style={{flexDirection:"row",backgroundColor:e.grayBackground,borderRadius:10,padding:3,borderWidth:1,borderColor:e.dividerColor}}>
291
- {[{key:"slide",label:"Slide Up"},{key:"fade",label:"Fade"},{key:"none",label:"None"}].map(r=>{const z=qr===r.key;return<B key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Set transition animation to ${r.label}`}accessibilityState={{selected:z}}onPress={()=>Kr(r.key)}style={{flex:1,paddingVertical:7,alignItems:"center",borderRadius:8,backgroundColor:z?e.purple:"transparent"}}>
292
- <T style={{fontFamily:S.interBold,fontSize:11.5,lineHeight:15,color:z?e.white:e.grayText}}>
320
+ {[{key:"slide",label:"Slide Up"},{key:"fade",label:"Fade"},{key:"none",label:"None"}].map(r=>{const V=_r===r.key;return<B key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Set transition animation to ${r.label}`}accessibilityState={{selected:V}}onPress={()=>Jr(r.key)}style={{flex:1,paddingVertical:7,alignItems:"center",borderRadius:8,backgroundColor:V?e.purple:"transparent"}}>
321
+ <T style={{fontFamily:S.interBold,fontSize:11.5,lineHeight:15,color:V?e.white:e.grayText}}>
293
322
  {r.label}
294
323
  </T>
295
324
  </B>})}
@@ -305,7 +334,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
305
334
 
306
335
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
307
336
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
308
- <X color={e.purple}size={15}/>
337
+ <Y color={e.purple}size={15}/>
309
338
  </C>
310
339
  <C style={{flex:1}}>
311
340
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -319,11 +348,11 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
319
348
 
320
349
 
321
350
  <C style={{marginTop:6,gap:6}}>
322
- <B accessible={!0}accessibilityRole="button"accessibilityLabel={`Default opening tab: ${L.find(r=>r.key===J)?.label||"APIs"}`}onPress={()=>Xe(r=>!r)}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.grayBackground,borderRadius:10,borderWidth:1.5,borderColor:Ie?e.purple:e.grayBorderSecondary,paddingHorizontal:14,paddingVertical:11}}>
351
+ <B accessible={!0}accessibilityRole="button"accessibilityLabel={`Default opening tab: ${$.find(r=>r.key===Q)?.label||"APIs"}`}onPress={()=>Ye(r=>!r)}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.grayBackground,borderRadius:10,borderWidth:1.5,borderColor:He?e.purple:e.grayBorderSecondary,paddingHorizontal:14,paddingVertical:11}}>
323
352
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
324
353
  <C style={{width:8,height:8,borderRadius:4,backgroundColor:e.purple}}/>
325
354
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
326
- {L.find(r=>r.key===J)?`#${L.find(r=>r.key===J)?.id} ${L.find(r=>r.key===J)?.label}`:"#1 APIs (Network)"}
355
+ {$.find(r=>r.key===Q)?`#${$.find(r=>r.key===Q)?.id} ${$.find(r=>r.key===Q)?.label}`:"#1 APIs (Network)"}
327
356
  </T>
328
357
  <C style={{backgroundColor:`${e.purple}14`,paddingHorizontal:6,paddingVertical:1.5,borderRadius:6}}>
329
358
  <T style={{fontFamily:S.interBold,fontSize:8.5,color:e.purple}}>
@@ -332,21 +361,21 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
332
361
  </C>
333
362
  </C>
334
363
 
335
- <C style={{transform:[{rotate:Ie?"180deg":"0deg"}]}}>
336
- <Go color={e.grayText}size={15}/>
364
+ <C style={{transform:[{rotate:He?"180deg":"0deg"}]}}>
365
+ <No color={e.grayText}size={15}/>
337
366
  </C>
338
367
  </B>
339
368
 
340
369
 
341
- {Ie&&<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}}>
342
- {L.filter(r=>r.key==="apis"||U?.[r.key]||V?.[r.key]).map((r,z,H)=>{const D=J===r.key,O=z===H.length-1;return<B key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Select ${r.label} as default tab`}onPress={()=>{jr(r.key),Xe(!1)}}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:14,paddingVertical:11,backgroundColor:D?`${e.purple}0F`:"transparent",borderBottomWidth:O?0:1,borderBottomColor:e.dividerColor}}>
370
+ {He&&<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}}>
371
+ {$.filter(r=>r.key==="apis"||q?.[r.key]||R?.[r.key]).map((r,V,D)=>{const v=Q===r.key,M=V===D.length-1;return<B key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Select ${r.label} as default tab`}onPress={()=>{Ur(r.key),Ye(!1)}}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:14,paddingVertical:11,backgroundColor:v?`${e.purple}0F`:"transparent",borderBottomWidth:M?0:1,borderBottomColor:e.dividerColor}}>
343
372
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
344
- <C style={{width:6,height:6,borderRadius:3,backgroundColor:D?e.purple:e.grayTextWeak}}/>
345
- <T style={{fontFamily:D?S.interBold:S.interMedium,fontSize:13,color:D?e.purple:e.primaryBlack}}>
373
+ <C style={{width:6,height:6,borderRadius:3,backgroundColor:v?e.purple:e.grayTextWeak}}/>
374
+ <T style={{fontFamily:v?S.interBold:S.interMedium,fontSize:13,color:v?e.purple:e.primaryBlack}}>
346
375
  #{r.id} {r.label}
347
376
  </T>
348
377
  </C>
349
- {D&&<K size={14}color={e.purple}/>}
378
+ {v&&<_ size={14}color={e.purple}/>}
350
379
  </B>})}
351
380
  </C>}
352
381
  </C>
@@ -361,7 +390,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
361
390
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
362
391
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1,marginRight:10}}>
363
392
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
364
- <Eo color={e.purple}size={15}/>
393
+ <Mo color={e.purple}size={15}/>
365
394
  </C>
366
395
  <C style={{flex:1}}>
367
396
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -374,14 +403,14 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
374
403
  </C>
375
404
  </C>
376
405
 
377
- <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle NPM Update Toast"accessibilityState={{checked:Se}}onPress={()=>Jr(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"}}>
406
+ <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle NPM Update Toast"accessibilityState={{checked:xe}}onPress={()=>Xr(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"}}>
378
407
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
379
408
  </B>
380
409
  </C>
381
410
  </C>
382
411
  </C>}
383
412
 
384
- {_==="limits"&&<C style={{gap:14}}>
413
+ {J==="limits"&&<C style={{gap:14}}>
385
414
 
386
415
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:14,gap:12}}>
387
416
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
@@ -392,7 +421,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
392
421
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
393
422
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
394
423
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
395
- <Dr color={e.purple}size={16}/>
424
+ <$r color={e.purple}size={16}/>
396
425
  </C>
397
426
  <C style={{flex:1}}>
398
427
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -405,7 +434,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
405
434
  </C>
406
435
  </C>
407
436
 
408
- <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle auto RAM limit calculation"accessibilityState={{checked:$}}onPress={()=>ro(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:$?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:$?"flex-end":"flex-start"}}>
437
+ <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle auto RAM limit calculation"accessibilityState={{checked:W}}onPress={()=>to(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:W?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:W?"flex-end":"flex-start"}}>
409
438
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
410
439
  </B>
411
440
  </C>
@@ -414,20 +443,20 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
414
443
 
415
444
 
416
445
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
417
- <C style={{width:32,height:32,borderRadius:8,backgroundColor:$?`${e.purple}14`:e.grayBackground,alignItems:"center",justifyContent:"center"}}>
418
- <Tr color={$?e.purple:e.grayTextWeak}size={15}/>
446
+ <C style={{width:32,height:32,borderRadius:8,backgroundColor:W?`${e.purple}14`:e.grayBackground,alignItems:"center",justifyContent:"center"}}>
447
+ <Br color={W?e.purple:e.grayTextWeak}size={15}/>
419
448
  </C>
420
449
  <C style={{flex:1}}>
421
- <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:$?e.primaryBlack:e.grayText}}>
450
+ <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:W?e.primaryBlack:e.grayText}}>
422
451
  Detected Available RAM
423
452
  </T>
424
453
  <T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
425
- {Be} MB available on device
454
+ {Re} MB available on device
426
455
  </T>
427
456
  </C>
428
- <C style={{paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:$?`${e.purple}12`:e.grayBackground,borderWidth:1,borderColor:$?`${e.purple}26`:e.dividerColor}}>
429
- <T style={{fontFamily:S.interBold,fontSize:12,lineHeight:15,color:$?e.purple:e.grayText}}>
430
- {Be} MB
457
+ <C style={{paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:W?`${e.purple}12`:e.grayBackground,borderWidth:1,borderColor:W?`${e.purple}26`:e.dividerColor}}>
458
+ <T style={{fontFamily:S.interBold,fontSize:12,lineHeight:15,color:W?e.purple:e.grayText}}>
459
+ {Re} MB
431
460
  </T>
432
461
  </C>
433
462
  </C>
@@ -436,17 +465,17 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
436
465
  <C style={{marginTop:4,paddingTop:8,borderTopWidth:1,borderTopColor:e.dividerColor,gap:6}}>
437
466
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
438
467
  <T style={{fontFamily:S.interBold,fontSize:11.5,lineHeight:15,color:e.purple}}>
439
- Profile: {de.profileName}
468
+ Profile: {ge.profileName}
440
469
  </T>
441
- <C style={{backgroundColor:$?`${e.emerald500}18`:`${e.purple}18`,paddingHorizontal:7,paddingVertical:2.5,borderRadius:4}}>
442
- <T style={{fontFamily:S.interBold,fontSize:9.5,color:$?e.emerald500:e.purple}}>
443
- {$?"AUTO-TUNED":"MANUAL"}
470
+ <C style={{backgroundColor:W?`${e.emerald500}18`:`${e.purple}18`,paddingHorizontal:7,paddingVertical:2.5,borderRadius:4}}>
471
+ <T style={{fontFamily:S.interBold,fontSize:9.5,color:W?e.emerald500:e.purple}}>
472
+ {W?"AUTO-TUNED":"MANUAL"}
444
473
  </T>
445
474
  </C>
446
475
  </C>
447
476
 
448
477
  <C style={{flexDirection:"row",flexWrap:"wrap",gap:8,marginTop:4}}>
449
- {[{label:"Logs",value:$?de.maxConsoleLogs:ze,color:e.sky500},{label:"Analytics",value:$?de.maxAnalyticsEvents:Oe,color:e.purple},{label:"Crash",value:$?de.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`}}>
478
+ {[{label:"Logs",value:W?ge.maxConsoleLogs:Be,color:e.sky500},{label:"Analytics",value:W?ge.maxAnalyticsEvents:Oe,color:e.purple},{label:"Crash",value:W?ge.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`}}>
450
479
  <T style={{fontFamily:S.interBold,fontSize:10.5,lineHeight:14,color:r.color}}>
451
480
  {r.label}:
452
481
  </T>
@@ -466,7 +495,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
466
495
 
467
496
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
468
497
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:`${e.emerald500}14`,alignItems:"center",justifyContent:"center"}}>
469
- <Ir color={e.emerald500}size={15}/>
498
+ <Dr color={e.emerald500}size={15}/>
470
499
  </C>
471
500
  <C style={{flex:1}}>
472
501
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -496,8 +525,8 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
496
525
  {w("settings.memory.manualDescription","Prune older entries across all log stores and free RAM")}
497
526
  </T>
498
527
  </C>
499
- <B onPress={()=>{const r=Xo("manual",.5);I(w("settings.memory.pruned",{count:r.totalPruned},`Pruned ${r.totalPruned} items from memory`))}}style={{backgroundColor:e.purple,paddingHorizontal:12,paddingVertical:8,borderRadius:8,flexDirection:"row",alignItems:"center",gap:5}}>
500
- <G size={13}color={e.white}/>
528
+ <B onPress={()=>{const r=Qo("manual",.5);H(w("settings.memory.pruned",{count:r.totalPruned},`Pruned ${r.totalPruned} items from memory`))}}style={{backgroundColor:e.purple,paddingHorizontal:12,paddingVertical:8,borderRadius:8,flexDirection:"row",alignItems:"center",gap:5}}>
529
+ <U size={13}color={e.white}/>
501
530
  <T style={{fontFamily:S.interBold,fontSize:11.5,color:e.white}}>
502
531
  Prune Now
503
532
  </T>
@@ -505,12 +534,12 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
505
534
  </C>
506
535
  </C>
507
536
  </C>}
508
- {_==="capture"&&<C style={{gap:12}}>
537
+ {J==="capture"&&<C style={{gap:12}}>
509
538
 
510
539
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
511
540
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
512
541
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
513
- <Ce color={e.purple}size={16}/>
542
+ <Se color={e.purple}size={16}/>
514
543
  </C>
515
544
  <C style={{flex:1}}>
516
545
  <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
@@ -522,17 +551,17 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
522
551
  </C>
523
552
  </C>
524
553
 
525
- {R({icon:<Ar 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}}>
526
- {["png","jpeg","webp"].map(r=>{const z=Re===r;return<B key={r}onPress={()=>{v("light"),Ne(r),I(`Screenshot format: ${r.toUpperCase()}`)}}style={{paddingHorizontal:9,paddingVertical:5,borderRadius:7,backgroundColor:z?e.purple:`${e.purple}14`,borderWidth:1,borderColor:z?e.purple:`${e.purple}2E`}}>
527
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:z?e.white:e.purple}}>
554
+ {F({icon:<Mr 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}}>
555
+ {["png","jpeg","webp"].map(r=>{const V=Ie===r;return<B key={r}onPress={()=>{L("light"),Ne(r),H(`Screenshot format: ${r.toUpperCase()}`)}}style={{paddingHorizontal:9,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
556
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
528
557
  {r.toUpperCase()}
529
558
  </T>
530
559
  </B>})}
531
560
  </C>})}
532
561
 
533
- {R({icon:<$e 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:()=>{v("light"),ae(r=>!r),I(`Auto-hide overlay: ${W?"OFF":"ON"}`)},right:<B onPress={()=>{v("light"),ae(r=>!r),I(`Auto-hide overlay: ${W?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:W?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:W?`${e.emerald500}4D`:`${e.grayText}33`}}>
534
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:W?e.emerald500:e.grayText}}>
535
- {W?w("settings.media.enabled","ON"):"OFF"}
562
+ {F({icon:<Ce 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:()=>{L("light"),ne(r=>!r),H(`Auto-hide overlay: ${P?"OFF":"ON"}`)},right:<B onPress={()=>{L("light"),ne(r=>!r),H(`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`}}>
563
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:P?e.emerald500:e.grayText}}>
564
+ {P?w("settings.media.enabled","ON"):"OFF"}
536
565
  </T>
537
566
  </B>})}
538
567
  </C>
@@ -541,7 +570,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
541
570
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
542
571
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
543
572
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
544
- <$r color={e.purple}size={16}/>
573
+ <Pr color={e.purple}size={16}/>
545
574
  </C>
546
575
  <C style={{flex:1}}>
547
576
  <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
@@ -553,32 +582,32 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
553
582
  </C>
554
583
  </C>
555
584
 
556
- {R({icon:<Wr 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}}>
557
- {[{key:"none",label:"Muted"},{key:"app",label:"App"},{key:"mic",label:"Mic"}].map(r=>{const z=je===r.key;return<B key={r.key}onPress={()=>{v("light"),Ge(r.key),I(`Audio source: ${r.label}`)}}style={{paddingHorizontal:8,paddingVertical:5,borderRadius:7,backgroundColor:z?e.purple:`${e.purple}14`,borderWidth:1,borderColor:z?e.purple:`${e.purple}2E`}}>
558
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:z?e.white:e.purple}}>
585
+ {F({icon:<Ar 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}}>
586
+ {[{key:"none",label:"Muted"},{key:"app",label:"App"},{key:"mic",label:"Mic"}].map(r=>{const V=je===r.key;return<B key={r.key}onPress={()=>{L("light"),Ge(r.key),H(`Audio source: ${r.label}`)}}style={{paddingHorizontal:8,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
587
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
559
588
  {r.label}
560
589
  </T>
561
590
  </B>})}
562
591
  </C>})}
563
592
 
564
- {R({icon:<Lr 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}}>
565
- {[15,24,30,60].map(r=>{const z=Ue===r;return<B key={r}onPress={()=>{v("light"),qe(r),I(`Recording FPS: ${r}`)}}style={{paddingHorizontal:7,paddingVertical:5,borderRadius:7,backgroundColor:z?e.purple:`${e.purple}14`,borderWidth:1,borderColor:z?e.purple:`${e.purple}2E`}}>
566
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:z?e.white:e.purple}}>
593
+ {F({icon:<Wr 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}}>
594
+ {[15,24,30,60].map(r=>{const V=Ue===r;return<B key={r}onPress={()=>{L("light"),qe(r),H(`Recording FPS: ${r}`)}}style={{paddingHorizontal:7,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
595
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
567
596
  {r}fps
568
597
  </T>
569
598
  </B>})}
570
599
  </C>})}
571
600
 
572
- {R({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:()=>{v("light"),ne(r=>!r),I(`GIF optimization: ${A?"OFF":"ON"}`)},right:<B onPress={()=>{v("light"),ne(r=>!r),I(`GIF optimization: ${A?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:A?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:A?`${e.emerald500}4D`:`${e.grayText}33`}}>
573
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:A?e.emerald500:e.grayText}}>
574
- {A?"ON":"OFF"}
601
+ {F({icon:<Or 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:()=>{L("light"),se(r=>!r),H(`GIF optimization: ${O?"OFF":"ON"}`)},right:<B onPress={()=>{L("light"),se(r=>!r),H(`GIF optimization: ${O?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:O?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:O?`${e.emerald500}4D`:`${e.grayText}33`}}>
602
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:O?e.emerald500:e.grayText}}>
603
+ {O?"ON":"OFF"}
575
604
  </T>
576
605
  </B>})}
577
606
  </C>
578
607
 
579
608
 
580
609
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
581
- {R({icon:<G 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:()=>{E.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 Pe.clearAllMedia(),I(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`}}>
610
+ {F({icon:<U 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:()=>{N.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 Pe.clearAllMedia(),H(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`}}>
582
611
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
583
612
  {w("settings.media.purgeCacheBtn","Purge All")}
584
613
  </T>
@@ -586,45 +615,45 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
586
615
  </C>
587
616
  </C>}
588
617
  <C style={{height:48}}/>
589
- </N>
618
+ </G>
590
619
 
591
620
 
592
- {_==="module"&&<C style={{paddingHorizontal:16,paddingTop:12,paddingBottom:Ze.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}}>
621
+ {J==="module"&&<C style={{paddingHorizontal:16,paddingTop:12,paddingBottom:er.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}}>
593
622
  <C style={{flex:1}}>
594
623
  <T style={{fontFamily:S.interBold,fontSize:13,lineHeight:17,color:e.primaryBlack}}>
595
- {Je} of {L.length} Modules Active
624
+ {Qe} of {$.length} Modules Active
596
625
  </T>
597
- <T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:Q?e.purple:e.grayText,marginTop:1}}>
598
- {w(Q?"settings.unsavedPending":"settings.allSynchronized")}
626
+ <T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:X?e.purple:e.grayText,marginTop:1}}>
627
+ {w(X?"settings.unsavedPending":"settings.allSynchronized")}
599
628
  </T>
600
629
  </C>
601
630
 
602
- <B accessible={!0}accessibilityRole="button"accessibilityLabel="Save Changes"onPress={mo}style={{flexDirection:"row",alignItems:"center",gap:6,backgroundColor:Q?e.purple:`${e.purple}22`,paddingHorizontal:18,paddingVertical:10,borderRadius:10}}>
603
- <K size={14}color={Q?e.white:e.purple}/>
604
- <T style={{fontFamily:S.interBold,fontSize:13,lineHeight:17,color:Q?e.white:e.purple}}>
631
+ <B accessible={!0}accessibilityRole="button"accessibilityLabel="Save Changes"onPress={wo}style={{flexDirection:"row",alignItems:"center",gap:6,backgroundColor:X?e.purple:`${e.purple}22`,paddingHorizontal:18,paddingVertical:10,borderRadius:10}}>
632
+ <_ size={14}color={X?e.white:e.purple}/>
633
+ <T style={{fontFamily:S.interBold,fontSize:13,lineHeight:17,color:X?e.white:e.purple}}>
605
634
  {w("settings.saveChanges")}
606
635
  </T>
607
636
  </B>
608
637
  </C>}
609
- </C>;let q=null;P==="apis"?q=<N style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
638
+ </C>;let K=null;A==="apis"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
610
639
 
611
640
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
612
- {R({icon:<G color={e.errorColor}size={16}/>,label:w("settings.apis.clearNetworkLogs"),description:w("settings.apis.clearNetworkLogsDescription",{count:ke.length}),isLast:!0,onPress:()=>{Fo(),io(null),E.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`}}>
641
+ {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.apis.clearNetworkLogs"),description:w("settings.apis.clearNetworkLogsDescription",{count:Te.length}),isLast:!0,onPress:()=>{Fo(),ao(null),N.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`}}>
613
642
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
614
643
  {w("common.clear")}
615
644
  </T>
616
645
  </C>})}
617
646
  </C>
618
647
  <C style={{height:48}}/>
619
- </N>:P==="logs"?q=<N style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
648
+ </G>:A==="logs"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
620
649
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
621
- {R({icon:<Br color={e.purple}size={16}/>,label:w("settings.logs.maxConsoleLogs"),description:w("settings.logs.maxConsoleLogsDescription"),numericInput:{value:ze,onChange:Zr,min:10,max:100,placeholder:"Enter max logs (10-100)"}})}
650
+ {F({icon:<Rr color={e.purple}size={16}/>,label:w("settings.logs.maxConsoleLogs"),description:w("settings.logs.maxConsoleLogsDescription"),numericInput:{value:Be,onChange:ro,min:10,max:100,placeholder:"Enter max logs (10-100)"}})}
622
651
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
623
652
  <T style={{fontFamily:S.interBold,fontSize:13,lineHeight:17,color:e.primaryBlack,paddingTop:6}}>
624
653
  {w("settings.logs.logLevels")}
625
654
  </T>
626
- {["info","warn","error"].map(r=>{const z=Qr?.[r],H=r==="error"?e.errorColor:r==="warn"?e.warningIconGold:e.skyBlue,D=w(r==="info"?"settings.logs.showInfo":r==="warn"?"settings.logs.showWarn":"settings.logs.showError"),O=w(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:D,description:O,isLast:r==="error",onPress:()=>Xr(F=>({...F,[r]:!F[r]})),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:z?e.purple:e.grayTextWeak,backgroundColor:z?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
627
- {z&&<K size={12}color={e.purple}/>}
655
+ {["info","warn","error"].map(r=>{const V=Yr?.[r],D=r==="error"?e.errorColor:r==="warn"?e.warningIconGold:e.skyBlue,v=w(r==="info"?"settings.logs.showInfo":r==="warn"?"settings.logs.showWarn":"settings.logs.showError"),M=w(r==="info"?"settings.logs.showInfoDesc":r==="warn"?"settings.logs.showWarnDesc":"settings.logs.showErrorDesc");return F({icon:<C style={{width:12,height:12,borderRadius:6,backgroundColor:D}}/>,label:v,description:M,isLast:r==="error",onPress:()=>Zr(I=>({...I,[r]:!I[r]})),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:V?e.purple:e.grayTextWeak,backgroundColor:V?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
656
+ {V&&<_ size={12}color={e.purple}/>}
628
657
  </C>})})}
629
658
  </C>
630
659
 
@@ -638,7 +667,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
638
667
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
639
668
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
640
669
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
641
- <$e color={e.purple}size={15}/>
670
+ <Ce color={e.purple}size={15}/>
642
671
  </C>
643
672
  <C style={{flex:1}}>
644
673
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -650,54 +679,54 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
650
679
  </C>
651
680
  </C>
652
681
 
653
- <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle show duplicate logs"accessibilityState={{checked:we}}onPress={()=>_r(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"}}>
682
+ <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle show duplicate logs"accessibilityState={{checked:ke}}onPress={()=>Qr(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"}}>
654
683
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
655
684
  </B>
656
685
  </C>
657
686
  </C>
658
687
 
659
688
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
660
- {R({icon:<G color={e.errorColor}size={16}/>,label:w("settings.logs.clearConsoleLogs"),description:w("settings.logs.clearConsoleLogsDescription",{count:xe.length}),isLast:!0,onPress:()=>{Io(),E.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`}}>
689
+ {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.logs.clearConsoleLogs"),description:w("settings.logs.clearConsoleLogsDescription",{count:Ve.length}),isLast:!0,onPress:()=>{Io(),N.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`}}>
661
690
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
662
691
  {w("common.clear")}
663
692
  </T>
664
693
  </C>})}
665
694
  </C>
666
695
  <C style={{height:48}}/>
667
- </N>:P==="analytics"?q=<N style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
696
+ </G>:A==="analytics"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
668
697
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary}}>
669
- {R({icon:<Vr color={e.purple}size={16}/>,label:w("settings.analytics.maxAnalyticsEvents"),description:w("settings.analytics.maxAnalyticsEventsDescription",{count:Te.length}),numericInput:{value:Oe,onChange:eo,min:10,max:75,placeholder:"Enter max events (10-75)"},isLast:!0})}
698
+ {F({icon:<Fr color={e.purple}size={16}/>,label:w("settings.analytics.maxAnalyticsEvents"),description:w("settings.analytics.maxAnalyticsEventsDescription",{count:ze.length}),numericInput:{value:Oe,onChange:oo,min:10,max:75,placeholder:"Enter max events (10-75)"},isLast:!0})}
670
699
  </C>
671
700
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
672
- {R({icon:<G color={e.errorColor}size={16}/>,label:w("settings.analytics.clearAnalyticsEvents"),description:w("settings.analytics.clearAnalyticsEventsDescription"),isLast:!0,onPress:()=>{Ho(),lo(null),E.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`}}>
701
+ {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.analytics.clearAnalyticsEvents"),description:w("settings.analytics.clearAnalyticsEventsDescription"),isLast:!0,onPress:()=>{Ho(),no(null),N.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`}}>
673
702
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
674
703
  {w("common.clear")}
675
704
  </T>
676
705
  </C>})}
677
706
  </C>
678
707
  <C style={{height:48}}/>
679
- </N>:P==="redux"?q=<N style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
708
+ </G>:A==="redux"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
680
709
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
681
- {R({icon:<Fr color={e.purple}size={16}/>,label:w("settings.redux.autoRefresh"),description:w("settings.redux.autoRefreshDescription"),onPress:()=>oo(r=>!r),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:Ve?e.purple:e.grayTextWeak,backgroundColor:Ve?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
682
- {Ve&&<K size={12}color={e.purple}/>}
710
+ {F({icon:<Hr color={e.purple}size={16}/>,label:w("settings.redux.autoRefresh"),description:w("settings.redux.autoRefreshDescription"),onPress:()=>io(r=>!r),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:Fe?e.purple:e.grayTextWeak,backgroundColor:Fe?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
711
+ {Fe&&<_ size={12}color={e.purple}/>}
683
712
  </C>})}
684
713
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
685
- {R({icon:<X color={e.purple}size={16}/>,label:w("settings.redux.defaultJsonExpandDepth"),description:w("settings.redux.defaultJsonExpandDepthDescription"),picker:{options:[1,2,3,5],selectedValue:Me,onSelect:to},isLast:!0})}
714
+ {F({icon:<Y color={e.purple}size={16}/>,label:w("settings.redux.defaultJsonExpandDepth"),description:w("settings.redux.defaultJsonExpandDepthDescription"),picker:{options:[1,2,3,5],selectedValue:Me,onSelect:lo},isLast:!0})}
686
715
  </C>
687
716
 
688
717
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
689
- {R({icon:<G color={e.errorColor}size={16}/>,label:w("settings.redux.clearReduxState"),description:w(ee?"settings.redux.clearReduxStateDescription":"settings.redux.clearReduxStateEmpty"),isLast:!0,onPress:()=>{ao(null),E.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`}}>
718
+ {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.redux.clearReduxState"),description:w(re?"settings.redux.clearReduxStateDescription":"settings.redux.clearReduxStateEmpty"),isLast:!0,onPress:()=>{so(null),N.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`}}>
690
719
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
691
720
  {w("common.clear")}
692
721
  </T>
693
722
  </C>})}
694
723
  </C>
695
724
  <C style={{height:48}}/>
696
- </N>:P==="crash"?q=<N style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
725
+ </G>:A==="crash"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
697
726
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
698
- {R({icon:<X color={e.purple}size={16}/>,label:w("settings.crash.maxCrashLogs"),description:w("settings.crash.maxCrashLogsDesc"),numericInput:{value:Ee,onChange:no,min:5,max:50,placeholder:"Enter max crashes (5-50)"}})}
727
+ {F({icon:<Y color={e.purple}size={16}/>,label:w("settings.crash.maxCrashLogs"),description:w("settings.crash.maxCrashLogsDesc"),numericInput:{value:Ee,onChange:co,min:5,max:50,placeholder:"Enter max crashes (5-50)"}})}
699
728
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
700
- {R({icon:<Ir 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`}}>
729
+ {F({icon:<Dr 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`}}>
701
730
  <T style={{fontFamily:S.interBold,fontSize:10,lineHeight:13,color:e.greenColor}}>
702
731
  {w("settings.protectedBadge")}
703
732
  </T>
@@ -705,19 +734,19 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
705
734
  </C>
706
735
 
707
736
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
708
- {R({icon:<G color={e.errorColor}size={16}/>,label:w("settings.crash.clearHistory"),description:w("settings.crash.clearHistoryDesc",{count:re?.length||0}),isLast:!0,onPress:()=>{Do(),E.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`}}>
737
+ {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.crash.clearHistory"),description:w("settings.crash.clearHistoryDesc",{count:oe?.length||0}),isLast:!0,onPress:()=>{Do(),N.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`}}>
709
738
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
710
739
  {w("common.clear")}
711
740
  </T>
712
741
  </C>})}
713
742
  </C>
714
743
  <C style={{height:48}}/>
715
- </N>:P==="push"?q=<N style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
744
+ </G>:A==="push"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
716
745
 
717
746
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
718
- {R({icon:<X color={e.purple}size={16}/>,label:"Max Push Notification Logs",description:"Buffer size limit for recorded push payloads (10-200)",numericInput:{value:so,onChange:co,min:10,max:200,placeholder:"Enter max logs (10-200)"}})}
747
+ {F({icon:<Y color={e.purple}size={16}/>,label:"Max Push Notification Logs",description:"Buffer size limit for recorded push payloads (10-200)",numericInput:{value:go,onChange:po,min:10,max:200,placeholder:"Enter max logs (10-200)"}})}
719
748
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
720
- {R({icon:<Or 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`}}>
749
+ {F({icon:<Er 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`}}>
721
750
  <T style={{fontFamily:S.interBold,fontSize:10,lineHeight:13,color:e.greenColor}}>
722
751
  ACTIVE
723
752
  </T>
@@ -734,25 +763,25 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
734
763
  </C>
735
764
 
736
765
  <C style={{flexDirection:"row",flexWrap:"wrap",gap:6}}>
737
- <B onPress={()=>{te("salesforce"),I(w("settings.simulator.salesforce","Simulated Salesforce Marketing Cloud push"))}}style={{backgroundColor:`${e.sky600}14`,borderColor:`${e.sky600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
766
+ <B onPress={()=>{ie("salesforce"),H(w("settings.simulator.salesforce","Simulated Salesforce Marketing Cloud push"))}}style={{backgroundColor:`${e.sky600}14`,borderColor:`${e.sky600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
738
767
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.sky600}}>
739
768
  + Salesforce MC
740
769
  </T>
741
770
  </B>
742
771
 
743
- <B onPress={()=>{te("fcm"),I(w("settings.simulator.fcm","Simulated Firebase FCM push"))}}style={{backgroundColor:`${e.darkOrange}14`,borderColor:`${e.darkOrange}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
772
+ <B onPress={()=>{ie("fcm"),H(w("settings.simulator.fcm","Simulated Firebase FCM push"))}}style={{backgroundColor:`${e.darkOrange}14`,borderColor:`${e.darkOrange}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
744
773
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.darkOrange}}>
745
774
  + Firebase FCM
746
775
  </T>
747
776
  </B>
748
777
 
749
- <B onPress={()=>{te("apns"),I(w("settings.simulator.apns","Simulated Apple APNs push"))}}style={{backgroundColor:`${e.primaryBlack}10`,borderColor:`${e.primaryBlack}25`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
778
+ <B onPress={()=>{ie("apns"),H(w("settings.simulator.apns","Simulated Apple APNs push"))}}style={{backgroundColor:`${e.primaryBlack}10`,borderColor:`${e.primaryBlack}25`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
750
779
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.primaryBlack}}>
751
780
  + Apple APNs
752
781
  </T>
753
782
  </B>
754
783
 
755
- <B onPress={()=>{te("deeplink"),I(w("settings.simulator.deepLink","Simulated Deep Link push"))}}style={{backgroundColor:`${e.brandPurple}14`,borderColor:`${e.brandPurple}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
784
+ <B onPress={()=>{ie("deeplink"),H(w("settings.simulator.deepLink","Simulated Deep Link push"))}}style={{backgroundColor:`${e.brandPurple}14`,borderColor:`${e.brandPurple}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
756
785
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.brandPurple}}>
757
786
  + Deep Link
758
787
  </T>
@@ -762,19 +791,19 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
762
791
 
763
792
 
764
793
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
765
- {R({icon:<G color={e.errorColor}size={16}/>,label:w("push.clearTitle","Clear Push History"),description:`Permanently remove all ${oe?.length||0} recorded notifications`,isLast:!0,onPress:()=>{go(),E.alert(w("common.success","Success"),w("settings.pushHistoryCleared","Push notification history cleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
794
+ {F({icon:<U color={e.errorColor}size={16}/>,label:w("push.clearTitle","Clear Push History"),description:`Permanently remove all ${te?.length||0} recorded notifications`,isLast:!0,onPress:()=>{uo(),N.alert(w("common.success","Success"),w("settings.pushHistoryCleared","Push notification history cleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
766
795
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
767
796
  {w("common.clear")}
768
797
  </T>
769
798
  </C>})}
770
799
  </C>
771
800
  <C style={{height:48}}/>
772
- </N>:P==="socket"?q=<N style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
801
+ </G>:A==="socket"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
773
802
 
774
803
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
775
- {R({icon:<X color={e.purple}size={16}/>,label:"Max WebSocket Connections",description:"Ring buffer limit for active & closed socket sessions (10-200)",numericInput:{value:po,onChange:yo,min:10,max:200,placeholder:"Enter max sockets (10-200)"}})}
804
+ {F({icon:<Y color={e.purple}size={16}/>,label:"Max WebSocket Connections",description:"Ring buffer limit for active & closed socket sessions (10-200)",numericInput:{value:yo,onChange:ho,min:10,max:200,placeholder:"Enter max sockets (10-200)"}})}
776
805
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
777
- {R({icon:<Mr color={e.greenColor}size={16}/>,label:"Global WebSocket Interceptor",description:"Automatic capture for WebSocket, WSS & Socket.IO traffic",isLast:!0,right:<C style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${e.greenColor}1F`}}>
806
+ {F({icon:<Nr color={e.greenColor}size={16}/>,label:"Global WebSocket Interceptor",description:"Automatic capture for WebSocket, WSS & Socket.IO traffic",isLast:!0,right:<C style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${e.greenColor}1F`}}>
778
807
  <T style={{fontFamily:S.interBold,fontSize:10,lineHeight:13,color:e.greenColor}}>
779
808
  ACTIVE
780
809
  </T>
@@ -791,25 +820,25 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
791
820
  </C>
792
821
 
793
822
  <C style={{flexDirection:"row",flexWrap:"wrap",gap:6}}>
794
- <B onPress={()=>{le("chat"),I(w("settings.simulator.chat","Simulated Real-time Chat WebSocket session"))}}style={{backgroundColor:`${e.blue600}14`,borderColor:`${e.blue600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
823
+ <B onPress={()=>{ae("chat"),H(w("settings.simulator.chat","Simulated Real-time Chat WebSocket session"))}}style={{backgroundColor:`${e.blue600}14`,borderColor:`${e.blue600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
795
824
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.blue600}}>
796
825
  + Chat Room (WS)
797
826
  </T>
798
827
  </B>
799
828
 
800
- <B onPress={()=>{le("crypto"),I(w("settings.simulator.crypto","Simulated Binance Crypto Ticker stream"))}}style={{backgroundColor:`${e.emerald600}14`,borderColor:`${e.emerald600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
829
+ <B onPress={()=>{ae("crypto"),H(w("settings.simulator.crypto","Simulated Binance Crypto Ticker stream"))}}style={{backgroundColor:`${e.emerald600}14`,borderColor:`${e.emerald600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
801
830
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.emerald600}}>
802
831
  + Crypto Feed (WSS)
803
832
  </T>
804
833
  </B>
805
834
 
806
- <B onPress={()=>{le("socketio"),I(w("settings.simulator.socketio","Simulated Socket.IO v4 session"))}}style={{backgroundColor:`${e.violet600}14`,borderColor:`${e.violet600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
835
+ <B onPress={()=>{ae("socketio"),H(w("settings.simulator.socketio","Simulated Socket.IO v4 session"))}}style={{backgroundColor:`${e.violet600}14`,borderColor:`${e.violet600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
807
836
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.violet600}}>
808
837
  + Socket.IO Room
809
838
  </T>
810
839
  </B>
811
840
 
812
- <B onPress={()=>{le("echo"),I(w("settings.simulator.echo","Simulated WebSocket Echo test"))}}style={{backgroundColor:`${e.brandPurple}14`,borderColor:`${e.brandPurple}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
841
+ <B onPress={()=>{ae("echo"),H(w("settings.simulator.echo","Simulated WebSocket Echo test"))}}style={{backgroundColor:`${e.brandPurple}14`,borderColor:`${e.brandPurple}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
813
842
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.brandPurple}}>
814
843
  + Echo Test
815
844
  </T>
@@ -819,14 +848,14 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
819
848
 
820
849
 
821
850
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
822
- {R({icon:<G color={e.errorColor}size={16}/>,label:w("socket.clearTitle","Clear All WebSocket Logs").replace("All WebSocket Logs","Socket History"),description:`Permanently remove all ${ie?.length||0} recorded sessions`,isLast:!0,onPress:()=>{uo(),E.alert(w("common.success","Success"),w("settings.socketHistoryCleared","WebSocket history cleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
851
+ {F({icon:<U color={e.errorColor}size={16}/>,label:w("socket.clearTitle","Clear All WebSocket Logs").replace("All WebSocket Logs","Socket History"),description:`Permanently remove all ${le?.length||0} recorded sessions`,isLast:!0,onPress:()=>{bo(),N.alert(w("common.success","Success"),w("settings.socketHistoryCleared","WebSocket history cleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
823
852
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
824
853
  {w("common.clear")}
825
854
  </T>
826
855
  </C>})}
827
856
  </C>
828
857
  <C style={{height:48}}/>
829
- </N>:P==="media"&&(q=<N style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
858
+ </G>:A==="media"&&(K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
830
859
 
831
860
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:8}}>
832
861
  <C style={{flexDirection:"row",alignItems:"center",gap:6,marginBottom:4}}>
@@ -837,8 +866,8 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
837
866
  </C>
838
867
 
839
868
  <C style={{flexDirection:"row",flexWrap:"wrap",gap:8}}>
840
- <B onPress={async()=>{v("light"),await Pe.takeScreenshot({format:Re.toLowerCase(),quality:.9,hideInspector:W})&&(v("success"),I(w("settings.simulator.screenshotSaved","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}}>
841
- <Ce color={e.purple}size={14}/>
869
+ <B onPress={async()=>{L("light"),await Pe.takeScreenshot({format:Ie.toLowerCase(),quality:.9,hideInspector:P})&&(L("success"),H(w("settings.simulator.screenshotSaved","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}}>
870
+ <Se color={e.purple}size={14}/>
842
871
  <T style={{fontSize:11,fontFamily:S.interBold,color:e.purple}}>
843
872
  Take Screenshot
844
873
  </T>
@@ -850,7 +879,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
850
879
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
851
880
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
852
881
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
853
- <Ce color={e.purple}size={16}/>
882
+ <Se color={e.purple}size={16}/>
854
883
  </C>
855
884
  <C style={{flex:1}}>
856
885
  <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
@@ -862,17 +891,17 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
862
891
  </C>
863
892
  </C>
864
893
 
865
- {R({icon:<Ar 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}}>
866
- {["png","jpeg","webp"].map(r=>{const z=Re===r;return<B key={r}onPress={()=>{v("light"),Ne(r),I(`Screenshot format: ${r.toUpperCase()}`)}}style={{paddingHorizontal:9,paddingVertical:5,borderRadius:7,backgroundColor:z?e.purple:`${e.purple}14`,borderWidth:1,borderColor:z?e.purple:`${e.purple}2E`}}>
867
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:z?e.white:e.purple}}>
894
+ {F({icon:<Mr 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}}>
895
+ {["png","jpeg","webp"].map(r=>{const V=Ie===r;return<B key={r}onPress={()=>{L("light"),Ne(r),H(`Screenshot format: ${r.toUpperCase()}`)}}style={{paddingHorizontal:9,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
896
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
868
897
  {r.toUpperCase()}
869
898
  </T>
870
899
  </B>})}
871
900
  </C>})}
872
901
 
873
- {R({icon:<$e 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:()=>{v("light"),ae(r=>!r),I(`Auto-hide overlay: ${W?"OFF":"ON"}`)},right:<B onPress={()=>{v("light"),ae(r=>!r),I(`Auto-hide overlay: ${W?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:W?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:W?`${e.emerald500}4D`:`${e.grayText}33`}}>
874
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:W?e.emerald500:e.grayText}}>
875
- {W?w("settings.media.enabled","ON"):"OFF"}
902
+ {F({icon:<Ce 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:()=>{L("light"),ne(r=>!r),H(`Auto-hide overlay: ${P?"OFF":"ON"}`)},right:<B onPress={()=>{L("light"),ne(r=>!r),H(`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`}}>
903
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:P?e.emerald500:e.grayText}}>
904
+ {P?w("settings.media.enabled","ON"):"OFF"}
876
905
  </T>
877
906
  </B>})}
878
907
  </C>
@@ -881,7 +910,7 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
881
910
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
882
911
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
883
912
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
884
- <$r color={e.purple}size={16}/>
913
+ <Pr color={e.purple}size={16}/>
885
914
  </C>
886
915
  <C style={{flex:1}}>
887
916
  <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
@@ -893,49 +922,49 @@ import{useMemo as ye,useState as ue,useEffect as De,useRef as Co}from"react";imp
893
922
  </C>
894
923
  </C>
895
924
 
896
- {R({icon:<Wr 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}}>
897
- {[{key:"none",label:"Muted"},{key:"app",label:"App"},{key:"mic",label:"Mic"}].map(r=>{const z=je===r.key;return<B key={r.key}onPress={()=>{v("light"),Ge(r.key),I(`Audio source: ${r.label}`)}}style={{paddingHorizontal:8,paddingVertical:5,borderRadius:7,backgroundColor:z?e.purple:`${e.purple}14`,borderWidth:1,borderColor:z?e.purple:`${e.purple}2E`}}>
898
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:z?e.white:e.purple}}>
925
+ {F({icon:<Ar 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}}>
926
+ {[{key:"none",label:"Muted"},{key:"app",label:"App"},{key:"mic",label:"Mic"}].map(r=>{const V=je===r.key;return<B key={r.key}onPress={()=>{L("light"),Ge(r.key),H(`Audio source: ${r.label}`)}}style={{paddingHorizontal:8,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
927
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
899
928
  {r.label}
900
929
  </T>
901
930
  </B>})}
902
931
  </C>})}
903
932
 
904
- {R({icon:<Lr 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}}>
905
- {[15,24,30,60].map(r=>{const z=Ue===r;return<B key={r}onPress={()=>{v("light"),qe(r),I(`Recording FPS: ${r}`)}}style={{paddingHorizontal:7,paddingVertical:5,borderRadius:7,backgroundColor:z?e.purple:`${e.purple}14`,borderWidth:1,borderColor:z?e.purple:`${e.purple}2E`}}>
906
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:z?e.white:e.purple}}>
933
+ {F({icon:<Wr 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}}>
934
+ {[15,24,30,60].map(r=>{const V=Ue===r;return<B key={r}onPress={()=>{L("light"),qe(r),H(`Recording FPS: ${r}`)}}style={{paddingHorizontal:7,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
935
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
907
936
  {r}fps
908
937
  </T>
909
938
  </B>})}
910
939
  </C>})}
911
940
 
912
- {R({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:()=>{v("light"),ne(r=>!r),I(`GIF optimization: ${A?"OFF":"ON"}`)},right:<B onPress={()=>{v("light"),ne(r=>!r),I(`GIF optimization: ${A?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:A?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:A?`${e.emerald500}4D`:`${e.grayText}33`}}>
913
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:A?e.emerald500:e.grayText}}>
914
- {A?"ON":"OFF"}
941
+ {F({icon:<Or 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:()=>{L("light"),se(r=>!r),H(`GIF optimization: ${O?"OFF":"ON"}`)},right:<B onPress={()=>{L("light"),se(r=>!r),H(`GIF optimization: ${O?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:O?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:O?`${e.emerald500}4D`:`${e.grayText}33`}}>
942
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:O?e.emerald500:e.grayText}}>
943
+ {O?"ON":"OFF"}
915
944
  </T>
916
945
  </B>})}
917
946
  </C>
918
947
 
919
948
 
920
949
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
921
- {R({icon:<G 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:()=>{E.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 Pe.clearAllMedia(),I(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`}}>
950
+ {F({icon:<U 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:()=>{N.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 Pe.clearAllMedia(),H(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`}}>
922
951
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
923
952
  {w("settings.media.purgeCacheBtn","Purge All")}
924
953
  </T>
925
954
  </C>})}
926
955
  </C>
927
956
  <C style={{height:48}}/>
928
- </N>);const pe=Co(new ve.Value(0)).current;return De(()=>{P!=="main"&&(pe.setValue(0),ve.spring(pe,{toValue:1,friction:8,tension:65,useNativeDriver:!0}).start())},[P]),<C style={{flex:1,backgroundColor:e.grayBackground}}>
957
+ </G>);const ye=ko(new Le.Value(0)).current;return ve(()=>{A!=="main"&&(ye.setValue(0),Le.spring(ye,{toValue:1,friction:8,tension:65,useNativeDriver:!0}).start())},[A]),<C style={{flex:1,backgroundColor:e.grayBackground}}>
929
958
 
930
- <C style={[er.absoluteFill,P!=="main"&&{pointerEvents:"none"}]}>
931
- {fo()}
959
+ <C style={[rr.absoluteFill,A!=="main"&&{pointerEvents:"none"}]}>
960
+ {So()}
932
961
  </C>
933
962
 
934
963
 
935
- {P!=="main"&&<ve.View style={[er.absoluteFill,{backgroundColor:e.grayBackground,opacity:pe,transform:[{translateX:pe.interpolate({inputRange:[0,1],outputRange:[30,0]})}]}]}>
936
- {q}
937
- </ve.View>}
964
+ {A!=="main"&&<Le.View style={[rr.absoluteFill,{backgroundColor:e.grayBackground,opacity:ye,transform:[{translateX:ye.interpolate({inputRange:[0,1],outputRange:[30,0]})}]}]}>
965
+ {K}
966
+ </Le.View>}
938
967
 
939
968
 
940
- <$o visible={ho}onClose={()=>_e(!1)}/>
941
- </C>};export default Yo;
969
+ <$o visible={fo}onClose={()=>Je(!1)}/>
970
+ </C>};export default Xo;