react-native-inapp-inspector 2.4.1 → 2.4.2

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