react-native-inapp-inspector 2.5.10 → 2.5.12

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 (134) hide show
  1. package/README.ar.md +0 -8
  2. package/README.de.md +0 -8
  3. package/README.es.md +0 -8
  4. package/README.fr.md +0 -8
  5. package/README.hi.md +0 -8
  6. package/README.ja.md +0 -8
  7. package/README.ko.md +0 -8
  8. package/README.md +54 -26
  9. package/README.pt-BR.md +0 -8
  10. package/README.ru.md +0 -8
  11. package/README.zh-CN.md +0 -8
  12. package/dist/commonjs/components/ConsoleLogCard.js +32 -26
  13. package/dist/commonjs/components/ErrorBoundary.js +1 -1
  14. package/dist/commonjs/components/Inspector/ConsoleTab.js +19 -14
  15. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +4 -4
  16. package/dist/commonjs/components/Inspector/InspectorHeader.js +73 -65
  17. package/dist/commonjs/components/Inspector/MainScreen.js +9 -6
  18. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +187 -90
  19. package/dist/commonjs/components/Inspector/NetworkDetail.js +11 -8
  20. package/dist/commonjs/components/Inspector/NetworkTab.js +33 -31
  21. package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +2 -0
  22. package/dist/commonjs/components/Inspector/PerformanceTab.js +652 -0
  23. package/dist/commonjs/components/Inspector/SettingsPanel.js +346 -245
  24. package/dist/commonjs/components/Inspector/TabBar.js +17 -16
  25. package/dist/commonjs/components/LogCard.js +11 -8
  26. package/dist/commonjs/components/ModuleErrorBoundary.js +1 -1
  27. package/dist/commonjs/components/NetworkIcons.d.ts +9 -0
  28. package/dist/commonjs/components/NetworkIcons.js +51 -6
  29. package/dist/commonjs/constants/index.d.ts +1 -0
  30. package/dist/commonjs/constants/index.js +1 -1
  31. package/dist/commonjs/constants/version.d.ts +1 -1
  32. package/dist/commonjs/constants/version.js +1 -1
  33. package/dist/commonjs/customHooks/crashHandler.d.ts +9 -1
  34. package/dist/commonjs/customHooks/crashHandler.js +4 -4
  35. package/dist/commonjs/helpers/index.d.ts +3 -0
  36. package/dist/commonjs/helpers/index.js +8 -6
  37. package/dist/commonjs/helpers/performanceSampler.d.ts +88 -0
  38. package/dist/commonjs/helpers/performanceSampler.js +1 -0
  39. package/dist/commonjs/helpers/remoteConfig.d.ts +6 -0
  40. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  41. package/dist/commonjs/helpers/telemetry.js +1 -1
  42. package/dist/commonjs/i18n/locales/ar.json +1 -1
  43. package/dist/commonjs/i18n/locales/bn.json +1 -1
  44. package/dist/commonjs/i18n/locales/de.json +1 -1
  45. package/dist/commonjs/i18n/locales/en.json +1 -1
  46. package/dist/commonjs/i18n/locales/es.json +1 -1
  47. package/dist/commonjs/i18n/locales/fr.json +1 -1
  48. package/dist/commonjs/i18n/locales/gu.json +1 -1
  49. package/dist/commonjs/i18n/locales/hi.json +1 -1
  50. package/dist/commonjs/i18n/locales/id.json +1 -1
  51. package/dist/commonjs/i18n/locales/it.json +1 -1
  52. package/dist/commonjs/i18n/locales/ja.json +1 -1
  53. package/dist/commonjs/i18n/locales/kn.json +1 -1
  54. package/dist/commonjs/i18n/locales/ko.json +1 -1
  55. package/dist/commonjs/i18n/locales/ml.json +1 -1
  56. package/dist/commonjs/i18n/locales/mr.json +1 -1
  57. package/dist/commonjs/i18n/locales/nl.json +1 -1
  58. package/dist/commonjs/i18n/locales/pa.json +1 -1
  59. package/dist/commonjs/i18n/locales/pl.json +1 -1
  60. package/dist/commonjs/i18n/locales/pt.json +1 -1
  61. package/dist/commonjs/i18n/locales/ru.json +1 -1
  62. package/dist/commonjs/i18n/locales/ta.json +1 -1
  63. package/dist/commonjs/i18n/locales/te.json +1 -1
  64. package/dist/commonjs/i18n/locales/tr.json +1 -1
  65. package/dist/commonjs/i18n/locales/vi.json +1 -1
  66. package/dist/commonjs/i18n/locales/zh.json +1 -1
  67. package/dist/commonjs/index.d.ts +4 -2
  68. package/dist/commonjs/index.js +3 -3
  69. package/dist/commonjs/styles/index.js +1 -1
  70. package/dist/commonjs/types/enums.d.ts +1 -0
  71. package/dist/commonjs/types/enums.js +1 -1
  72. package/dist/commonjs/types/interfaces.d.ts +28 -0
  73. package/dist/esm/components/ConsoleLogCard.js +67 -61
  74. package/dist/esm/components/ErrorBoundary.js +10 -10
  75. package/dist/esm/components/Inspector/ConsoleTab.js +33 -28
  76. package/dist/esm/components/Inspector/FloatingCaptureWidget.js +22 -22
  77. package/dist/esm/components/Inspector/InspectorHeader.js +194 -186
  78. package/dist/esm/components/Inspector/MainScreen.js +61 -58
  79. package/dist/esm/components/Inspector/MediaGalleryTab.js +254 -157
  80. package/dist/esm/components/Inspector/NetworkDetail.js +62 -59
  81. package/dist/esm/components/Inspector/NetworkTab.js +39 -37
  82. package/dist/esm/components/Inspector/PerformanceTab.d.ts +2 -0
  83. package/dist/esm/components/Inspector/PerformanceTab.js +652 -0
  84. package/dist/esm/components/Inspector/SettingsPanel.js +407 -306
  85. package/dist/esm/components/Inspector/TabBar.js +4 -3
  86. package/dist/esm/components/LogCard.js +37 -34
  87. package/dist/esm/components/ModuleErrorBoundary.js +1 -1
  88. package/dist/esm/components/NetworkIcons.d.ts +9 -0
  89. package/dist/esm/components/NetworkIcons.js +48 -3
  90. package/dist/esm/constants/index.d.ts +1 -0
  91. package/dist/esm/constants/index.js +1 -1
  92. package/dist/esm/constants/version.d.ts +1 -1
  93. package/dist/esm/constants/version.js +1 -1
  94. package/dist/esm/customHooks/crashHandler.d.ts +9 -1
  95. package/dist/esm/customHooks/crashHandler.js +6 -6
  96. package/dist/esm/helpers/index.d.ts +3 -0
  97. package/dist/esm/helpers/index.js +8 -6
  98. package/dist/esm/helpers/performanceSampler.d.ts +88 -0
  99. package/dist/esm/helpers/performanceSampler.js +1 -0
  100. package/dist/esm/helpers/remoteConfig.d.ts +6 -0
  101. package/dist/esm/helpers/remoteConfig.js +1 -1
  102. package/dist/esm/helpers/telemetry.js +1 -1
  103. package/dist/esm/i18n/locales/ar.json +1 -1
  104. package/dist/esm/i18n/locales/bn.json +1 -1
  105. package/dist/esm/i18n/locales/de.json +1 -1
  106. package/dist/esm/i18n/locales/en.json +1 -1
  107. package/dist/esm/i18n/locales/es.json +1 -1
  108. package/dist/esm/i18n/locales/fr.json +1 -1
  109. package/dist/esm/i18n/locales/gu.json +1 -1
  110. package/dist/esm/i18n/locales/hi.json +1 -1
  111. package/dist/esm/i18n/locales/id.json +1 -1
  112. package/dist/esm/i18n/locales/it.json +1 -1
  113. package/dist/esm/i18n/locales/ja.json +1 -1
  114. package/dist/esm/i18n/locales/kn.json +1 -1
  115. package/dist/esm/i18n/locales/ko.json +1 -1
  116. package/dist/esm/i18n/locales/ml.json +1 -1
  117. package/dist/esm/i18n/locales/mr.json +1 -1
  118. package/dist/esm/i18n/locales/nl.json +1 -1
  119. package/dist/esm/i18n/locales/pa.json +1 -1
  120. package/dist/esm/i18n/locales/pl.json +1 -1
  121. package/dist/esm/i18n/locales/pt.json +1 -1
  122. package/dist/esm/i18n/locales/ru.json +1 -1
  123. package/dist/esm/i18n/locales/ta.json +1 -1
  124. package/dist/esm/i18n/locales/te.json +1 -1
  125. package/dist/esm/i18n/locales/tr.json +1 -1
  126. package/dist/esm/i18n/locales/vi.json +1 -1
  127. package/dist/esm/i18n/locales/zh.json +1 -1
  128. package/dist/esm/index.d.ts +4 -2
  129. package/dist/esm/index.js +8 -8
  130. package/dist/esm/styles/index.js +1 -1
  131. package/dist/esm/types/enums.d.ts +1 -0
  132. package/dist/esm/types/enums.js +1 -1
  133. package/dist/esm/types/interfaces.d.ts +28 -0
  134. package/package.json +24 -1
@@ -1,5 +1,5 @@
1
- import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";import{Alert as N,Animated as Le,DevSettings as $e,Platform as er,ScrollView as G,StyleSheet as rr,Text as T,TextInput as To,View as C}from"react-native";import Vo,{Path as Cr}from"react-native-svg";import{animateNextLayout as me,useInspector as zo}from"./InspectorContext";import B from"../TouchableScale";import Sr from"../Slider";import{toggleGlobalTheme as Bo}from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as S}from"../../styles/AppFonts";import{calculateRamBasedLimits as Ro}from"../../helpers/settingsStore";import{clearNetworkLogs as Fo}from"../../customHooks/networkLogger";import{clearConsoleLogs as Io}from"../../customHooks/consoleLogger";import{clearAnalyticsEvents as Ho,isAnalyticsConnected as kr}from"../../customHooks/analyticsLogger";import{clearCrashRecords as Do}from"../../customHooks/crashHandler";import{isReduxConnected as xr}from"../../customHooks/reduxLogger";import{useTranslation as vo,SUPPORTED_LANGUAGES as Tr,getLanguage as Lo}from"../../i18n";import{LanguageSelectorModal as $o}from"./LanguageSelectorModal";import{GlobeIcon as Vr,SignalIcon as Br,TerminalIcon as Rr,AnalyticsIcon as Fr,SettingsIcon as Wo,SunIcon as Po,MoonIcon as Ao,ScreenIcon as Ir,MotionIcon as Oo,LayersIcon as Y,EyeIcon as Ce,CheckIcon as _,TrashIcon as U,PackageIcon as Mo,ReduxIcon as Hr,CrashIcon as Eo,ShieldAlertIcon as Dr,ForwardChevronIcon as Lr,ChevronDownIcon as No,BrainIcon as $r,SmartphoneIcon as Go,DatabaseIcon as Uo,QrCodeIcon as Ko,FilmIcon as Wr,ScreencastIcon as _o,CameraIcon as Se,VideoCameraIcon as Pr,MicrophoneIcon as Ar,GifIcon as Or,ImageIcon as Mr,BellIcon as Er,WebsocketIcon as Nr,BoltIcon as We}from"../NetworkIcons";import{ScreenCapture as Pe}from"../../capture";import{triggerNativeHaptic as L}from"../../native/NativeInspector";import{isLocalDebugEnvironment as Jo}from"../../helpers";import{showToast as H}from"../../helpers/toast";import{pruneAllLogs as Qo}from"../../helpers/memoryManager";const Xo=()=>{const{t:w}=vo(),{settingsPage:A,setSettingsPage:Ae,settingsActiveSubTab:J,setSettingsActiveSubTab:jr,tabVisibility:R,toggleTabVisibility:Gr,defaultTab:Q,setDefaultTab:Ur,isDark:Z,setIsDark:qr,modalHeightPercent:ee,setModalHeightPercent:Kr,modalAnimationType:_r,setModalAnimationType:Jr,showDuplicateLogs:ke,setShowDuplicateLogs:Qr,showUpdateToast:xe,setShowUpdateToast:Xr,showConsoleLevels:Yr,setShowConsoleLevels:Zr,closeModal:eo,logs:Te,consoleLogs:Ve,analyticsEvents:ze,reduxState:re,maxConsoleLogs:Be,setMaxConsoleLogs:ro,maxAnalyticsEventsLimit:Oe,setMaxAnalyticsEventsLimit:oo,isAutoRamLimitEnabled:W,setIsAutoRamLimitEnabled:to,deviceFreeRamMb:Re,reduxAutoRefresh:Fe,setReduxAutoRefreshState:io,reduxExpandDepth:Me,setReduxExpandDepth:lo,setSelected:ao,setSelectedEvent:no,setReduxState:so,crashRecords:oe,maxCrashLogs:Ee,setMaxCrashLogs:co,pushRecords:te,maxPushLogs:go,setMaxPushLogs:po,clearAllPushLogs:uo,simulatePush:ie,socketRecords:le,maxSocketLogs:yo,setMaxSocketLogs:ho,clearAllSocketLogs:bo,simulateSocket:ae,captureImageFormat:Ie,setCaptureImageFormat:Ne,captureAutoHide:P,setCaptureAutoHide:ne,captureAudioMode:je,setCaptureAudioMode:Ge,captureFps:Ue,setCaptureFps:qe,captureScale:Yo,setCaptureScale:Zo,captureBitrate:et,setCaptureBitrate:rt,captureMaxDurationSeconds:ot,setCaptureMaxDurationSeconds:tt,captureAutoGif:O,setCaptureAutoGif:se,peekOpacity:Ke,setPeekOpacity:mo}=zo(),[de,_e]=be(ee),[fo,Je]=be(!1),Co=Lo(),ce=Tr.find(r=>r.code===Co)||Tr[0];ve(()=>{_e(ee)},[ee]);const ge=Ro(Re),$=he(()=>[{id:1,key:"apis",label:"APIs (Network)",category:"core",icon:"apis",desc:"HTTP/HTTPS requests, GraphQL, Axios & WebSocket inspector"},{id:2,key:"logs",label:"Console Logs",category:"core",icon:"logs",desc:"Terminal console logs, warnings, errors & stack traces"},{id:3,key:"analytics",label:"Analytics Logger",category:"telemetry",icon:"analytics",desc:"Firebase & custom analytics events, user properties & params"},{id:4,key:"redux",label:"Redux Inspector",category:"telemetry",icon:"redux",desc:"Store state diffing, action history & reducer timeline"},{id:5,key:"storage",label:"Storage Inspector",category:"telemetry",icon:"storage",desc:"AsyncStorage & MMKV key-value store viewer with full CRUD support"},{id:6,key:"device",label:"Device Info",category:"diagnostic",icon:"device",desc:"Hardware specs, IP address, screen metrics, UDID & runtime stats"},{id:7,key:"crash",label:"Crash Protection",category:"diagnostic",icon:"crash",desc:"Runtime exception guard, breadcrumbs & memory snapshot"},{id:8,key:"debugging",label:"Multi-Device Debugging",category:"diagnostic",icon:"debugging",desc:"QR Code bridge for direct Debug APK download & Metro live-reload sync"},{id:9,key:"media",label:"Screencast",category:"diagnostic",icon:"media",desc:"Screenshots, video recordings, audio narration & animated GIFs"},{id:10,key:"push",label:"Push Notifications",category:"telemetry",icon:"push",desc:"Universal push & local notification logger (Salesforce, FCM, APNs, Braze, Expo)"},{id:11,key:"socket",label:"WebSocket & Socket.IO",category:"telemetry",icon:"socket",desc:"Real-time WebSocket & Socket.IO message inspector, frames & event logger"}].filter(r=>r.key==="debugging"?er.OS==="android"&&Jo():!0),[]),[q,pe]=be(()=>({apis:!0,logs:!!(R?.logs??!0),analytics:!!(R?.analytics??!0),redux:!!(R?.redux??!0),storage:!!(R?.storage??!0),device:!!(R?.device??!0),crash:!!(R?.crash??!0),debugging:!!(R?.debugging??!0),media:!!(R?.media??!0),push:!!(R?.push??!0),socket:!!(R?.socket??!0)}));ve(()=>{pe({apis:!0,logs:!!(R?.logs??!0),analytics:!!(R?.analytics??!0),redux:!!(R?.redux??!0),storage:!!(R?.storage??!0),device:!!(R?.device??!0),crash:!!(R?.crash??!0),debugging:!!(R?.debugging??!0),media:!!(R?.media??!0),push:!!(R?.push??!0),socket:!!(R?.socket??!0)})},[R]);const X=he(()=>$.some(r=>!!q[r.key]!=!!R?.[r.key]),[q,R,$]),Qe=$.filter(r=>r.key==="apis"||!!q[r.key]).length,ue=he(()=>$.filter(r=>!(r.key==="apis"||r.key==="redux"&&!xr()||r.key==="analytics"&&!kr())),[$]),E=he(()=>ue.length===0?!1:ue.every(r=>!!q[r.key]),[ue,q]),Xe=()=>{const r=!E;pe(V=>{const D={...V};return ue.forEach(v=>{D[v.key]=r}),D})},wo=()=>{X&&N.alert("Apply Changes & Reload","Are you sure you want to save module changes? The inspector will close and reload the app to apply the new configuration.",[{text:"Cancel",style:"cancel",onPress:()=>{pe({apis:!0,logs:!!R?.logs,analytics:!!R?.analytics,redux:!!R?.redux,storage:!!R?.storage,device:!!R?.device,crash:!!R?.crash,debugging:!!R?.debugging,media:!!(R?.media??!0),push:!!(R?.push??!0),socket:!!(R?.socket??!1)})}},{text:"Save & Reload",style:"default",onPress:()=>{me(),$.forEach(r=>{if(r.key!=="apis"){const V=!!q[r.key],D=!!R?.[r.key];V!==D&&Gr(r.key)}}),eo(),setTimeout(()=>{__DEV__&&$e&&$e.reload&&$e.reload()},350)}}])},[He,Ye]=be(!1),F=r=><C style={{paddingVertical:12,borderBottomWidth:r.isLast?0:1,borderBottomColor:e.dividerColor}}>
2
- <B disabled={!r.onPress}onPress={r.onPress}style={{flexDirection:"row",alignItems:"center",gap:12}}>
1
+ import{useMemo as Xe,useState as Me,useEffect as Ze,useRef as jr}from"react";import{Alert as j,Animated as _,Platform as Ur,ScrollView as J,StyleSheet as Gr,Switch as Tt,Text as T,TextInput as _r,View as C}from"react-native";import{animateNextLayout as Jr,useInspector as Rt}from"./InspectorContext";import V from"../TouchableScale";import Yr from"../Slider";import{toggleGlobalTheme as Vt}from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as S}from"../../styles/AppFonts";import{DEFAULT_HIDDEN_URL_PATTERNS as er}from"../../constants";import{calculateRamBasedLimits as zt}from"../../helpers/settingsStore";import{clearNetworkLogs as Bt}from"../../customHooks/networkLogger";import{clearConsoleLogs as Ft}from"../../customHooks/consoleLogger";import{clearAnalyticsEvents as It,isAnalyticsConnected as Kr}from"../../customHooks/analyticsLogger";import{clearCrashRecords as Dt}from"../../customHooks/crashHandler";import{isReduxConnected as Qr}from"../../customHooks/reduxLogger";import{useTranslation as $t,SUPPORTED_LANGUAGES as Xr,getLanguage as Ht}from"../../i18n";import{LanguageSelectorModal as Pt}from"./LanguageSelectorModal";import{GlobeIcon as Zr,SignalIcon as Co,TerminalIcon as So,AnalyticsIcon as To,SettingsIcon as Wt,SunIcon as Lt,MoonIcon as At,ScreenIcon as Ro,MotionIcon as Et,LayersIcon as X,EyeIcon as Ce,CheckIcon as Se,TrashIcon as O,PackageIcon as Ot,ReduxIcon as Vo,CrashIcon as Mt,ShieldAlertIcon as Bo,ShieldCheckIcon as Fo,ScaleBalanceIcon as Nt,VolumeMuteIcon as Ut,JsIcon as Gt,ChipIcon as _t,LayoutIcon as Jt,HourglassIcon as Yt,CodeBracketsIcon as Io,LockIcon as Kt,RefreshCcwIcon as Qt,ForwardChevronIcon as Do,ChevronDownIcon as Xt,BrainIcon as $o,SmartphoneIcon as Zt,DatabaseIcon as Ci,QrCodeIcon as Si,FilmIcon as Ho,ScreencastIcon as Ti,CameraIcon as Te,VideoCameraIcon as Cr,MicrophoneIcon as Po,GifIcon as Wo,ImageIcon as Lo,BellIcon as Ao,WebsocketIcon as Eo,SpeedometerIcon as Ri,BoltIcon as Sr}from"../NetworkIcons";import{ScreenCapture as kr}from"../../capture";import{triggerNativeHaptic as D}from"../../native/NativeInspector";import{isLocalDebugEnvironment as Vi}from"../../helpers";import{showToast as B}from"../../helpers/toast";import{pruneAllLogs as zi}from"../../helpers/memoryManager";const Bi=()=>{const{t:w}=$t(),{settingsPage:v,setSettingsPage:Oo,settingsActiveSubTab:q,setSettingsActiveSubTab:xr,tabVisibility:Y,toggleTabVisibility:Tr,defaultTab:K,setDefaultTab:Mo,isDark:Z,setIsDark:No,modalHeightPercent:Re,setModalHeightPercent:jo,modalAnimationType:Uo,setModalAnimationType:Go,showDuplicateLogs:Ne,setShowDuplicateLogs:_o,showUpdateToast:je,setShowUpdateToast:Jo,showConsoleLevels:qo,setShowConsoleLevels:Yo,closeModal:Fi,logs:Ue,consoleLogs:Ge,analyticsEvents:_e,reduxState:Ve,maxConsoleLogs:Rr,setMaxConsoleLogs:Ko,maxAnalyticsEventsLimit:Vr,setMaxAnalyticsEventsLimit:Qo,isAutoRamLimitEnabled:W,setIsAutoRamLimitEnabled:Xo,deviceFreeRamMb:Je,reduxAutoRefresh:qe,setReduxAutoRefreshState:Zo,reduxExpandDepth:et,setReduxExpandDepth:rt,setSelected:ot,setSelectedEvent:tt,setReduxState:it,crashRecords:ze,maxCrashLogs:zr,setMaxCrashLogs:Br,crashIgnoredTypes:H,setCrashIgnoredTypes:lt,crashModalTriggerPolicy:at,setCrashModalTriggerPolicyState:Fr,applyCrashPolicyPreset:Be,pushRecords:Fe,maxPushLogs:nt,setMaxPushLogs:st,clearAllPushLogs:dt,simulatePush:Ie,socketRecords:De,maxSocketLogs:ct,setMaxSocketLogs:gt,clearAllSocketLogs:pt,simulateSocket:$e,captureImageFormat:Ye,setCaptureImageFormat:Ir,captureAutoHide:L,setCaptureAutoHide:He,captureAudioMode:Dr,setCaptureAudioMode:$r,captureFps:Hr,setCaptureFps:Pr,captureScale:Ii,setCaptureScale:Di,captureBitrate:$i,setCaptureBitrate:Hi,captureMaxDurationSeconds:Pi,setCaptureMaxDurationSeconds:Wi,captureAutoGif:A,setCaptureAutoGif:Pe,captureWidgetEnabled:Q,setCaptureWidgetEnabled:Wr,peekOpacity:Lr,setPeekOpacity:yt,hiddenUrlPatterns:ee,setHiddenUrlPatterns:Ke}=Rt(),[We,vr]=Me(""),[Le,Ar]=Me(Re),[ut,Er]=Me(!1),ht=Ht(),ve=Xr.find(r=>r.code===ht)||Xr[0],Or=()=>{const r=We.trim();if(r){if(ee.includes(r)){B("Pattern already exists in filter list");return}try{new RegExp(r)}catch{}D("light"),Ke(R=>[...R,r]),vr(""),B("Hidden URL pattern added")}},bt=r=>{const R=ee[r];if(er.includes(R)){B("Default system filter cannot be removed");return}D("light"),Ke(I=>I.filter((P,E)=>E!==r)),B("Pattern removed")};Ze(()=>{Ar(Re)},[Re]);const M=jr(new _.Value(1)).current;Ze(()=>{M.setValue(0),_.spring(M,{toValue:1,friction:8,tension:65,useNativeDriver:!0}).start()},[q]);const Ae=zt(Je),N=Xe(()=>[{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:"perf",label:"Performance & FPS",category:"telemetry",icon:"perf",desc:"Live 60 FPS graph, JS event loop queue lag, memory heap & jank monitor"},{id:4,key:"analytics",label:"Analytics Logger",category:"telemetry",icon:"analytics",desc:"Firebase & custom analytics events, user properties & params"},{id:5,key:"redux",label:"Redux Inspector",category:"telemetry",icon:"redux",desc:"Store state diffing, action history & reducer timeline"},{id:6,key:"storage",label:"Storage Inspector",category:"telemetry",icon:"storage",desc:"AsyncStorage & MMKV key-value store viewer with full CRUD support"},{id:7,key:"device",label:"Device Info",category:"diagnostic",icon:"device",desc:"Hardware specs, IP address, screen metrics, UDID & runtime stats"},{id:8,key:"crash",label:"Crash Protection",category:"diagnostic",icon:"crash",desc:"Runtime exception guard, breadcrumbs & memory snapshot"},{id:9,key:"debugging",label:"Multi-Device Debugging",category:"diagnostic",icon:"debugging",desc:"QR Code bridge for direct Debug APK download & Metro live-reload sync"},{id:10,key:"media",label:"Screencast",category:"diagnostic",icon:"media",desc:"Screenshots, video recordings, audio narration & animated GIFs"},{id:11,key:"push",label:"Push Notifications",category:"telemetry",icon:"push",desc:"Universal push & local notification logger (Salesforce, FCM, APNs, Braze, Expo)"},{id:12,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"?Ur.OS==="android"&&Vi():!0),[]),mt={apis:{color:e.blue500,bg:`${e.blue500}14`,border:`${e.blue500}2E`},logs:{color:e.purple,bg:`${e.purple}14`,border:`${e.purple}2E`},perf:{color:e.purple,bg:`${e.purple}14`,border:`${e.purple}2E`},analytics:{color:e.amber600,bg:`${e.amber600}14`,border:`${e.amber600}2E`},redux:{color:e.violet600,bg:`${e.violet600}14`,border:`${e.violet600}2E`},storage:{color:e.cyan600,bg:`${e.cyan600}14`,border:`${e.cyan600}2E`},device:{color:e.emerald600,bg:`${e.emerald600}14`,border:`${e.emerald600}2E`},crash:{color:e.red600,bg:`${e.red600}14`,border:`${e.red600}2E`},debugging:{color:e.indigo600,bg:`${e.indigo600}14`,border:`${e.indigo600}2E`},media:{color:e.pink600,bg:`${e.pink600}14`,border:`${e.pink600}2E`},push:{color:e.orange600,bg:`${e.orange600}14`,border:`${e.orange600}2E`},socket:{color:e.teal600,bg:`${e.teal600}14`,border:`${e.teal600}2E`}},Ee=Xe(()=>N.filter(r=>!(r.key==="apis"||r.key==="redux"&&!Qr()||r.key==="analytics"&&!Kr())),[N]),ft=N.filter(r=>r.key==="apis"||!!Y?.[r.key]).length,re=Xe(()=>Ee.length===0?!1:Ee.every(r=>!!Y?.[r.key]),[Ee,Y]),Ct=r=>{r!=="apis"&&(D("light"),Tr(r))},wt=()=>{D("medium");const r=!re;Ee.forEach(R=>{!!Y?.[R.key]!==r&&Tr(R.key)}),B(r?"All modules enabled":"Optional modules disabled")},[Qe,Mr]=Me(!1),F=r=><C key={r.key}style={{paddingVertical:12,borderBottomWidth:r.isLast?0:1,borderBottomColor:e.dividerColor}}>
2
+ <V disabled={!r.onPress}onPress={r.onPress}style={{flexDirection:"row",alignItems:"center",gap:12}}>
3
3
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,borderWidth:1,borderColor:`${e.purple}2E`,alignItems:"center",justifyContent:"center"}}>
4
4
  {r.icon}
5
5
  </C>
@@ -12,10 +12,10 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
12
12
  </T>:null}
13
13
  </C>
14
14
  {r.right||null}
15
- </B>
15
+ </V>
16
16
  {r.numericInput&&<C style={{marginTop:10,gap:6}}>
17
17
  <C style={{flexDirection:"row",alignItems:"center",backgroundColor:e.grayBackground,borderRadius:8,borderWidth:1,borderColor:e.dividerColor,paddingHorizontal:12,paddingVertical:4}}>
18
- <To style={{flex:1,fontFamily:S.interMedium,fontSize:14,lineHeight:18,color:e.primaryBlack,paddingVertical:6}}value={String(r.numericInput.value||"")}onChangeText={V=>{const D=parseInt(V.replace(/[^0-9]/g,""),10);if(!isNaN(D)){const v=Math.max(r.numericInput?.min??1,Math.min(r.numericInput?.max??1e4,D));r.numericInput?.onChange(v)}}}keyboardType={r.numericInput.keyboardType??"number-pad"}placeholder={r.numericInput.placeholder}placeholderTextColor={e.grayTextWeak}maxLength={6}selectTextOnFocus/>
18
+ <_r style={{flex:1,fontFamily:S.interMedium,fontSize:14,lineHeight:18,color:e.primaryBlack,paddingVertical:6}}value={String(r.numericInput.value||"")}onChangeText={R=>{const I=parseInt(R.replace(/[^0-9]/g,""),10);if(!isNaN(I)){const P=Math.max(r.numericInput?.min??1,Math.min(r.numericInput?.max??1e4,I));r.numericInput?.onChange(P)}}}keyboardType={r.numericInput.keyboardType??"number-pad"}placeholder={r.numericInput.placeholder}placeholderTextColor={e.grayTextWeak}maxLength={6}selectTextOnFocus/>
19
19
  <T style={{fontFamily:S.interBold,fontSize:11,color:e.purple,marginLeft:6}}>
20
20
  MAX
21
21
  </T>
@@ -26,157 +26,128 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
26
26
  </T>:null}
27
27
  </C>}
28
28
  {r.picker&&<C style={{flexDirection:"row",backgroundColor:e.grayBackground,borderRadius:8,padding:2.5,marginTop:10,borderWidth:1,borderColor:e.dividerColor}}>
29
- {r.picker.options.map(V=>{const D=r.picker.selectedValue===V;return<B key={String(V)}onPress={()=>r.picker.onSelect(V)}style={{flex:1,paddingVertical:6,alignItems:"center",borderRadius:6,backgroundColor:D?e.purple:"transparent"}}>
30
- <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:D?e.white:e.grayText}}>
31
- {r.picker.formatLabel?r.picker.formatLabel(V):V}
29
+ {r.picker.options.map(R=>{const I=r.picker.selectedValue===R;return<V key={String(R)}onPress={()=>r.picker.onSelect(R)}style={{flex:1,paddingVertical:6,alignItems:"center",borderRadius:6,backgroundColor:I?e.purple:"transparent"}}>
30
+ <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:I?e.white:e.grayText}}>
31
+ {r.picker.formatLabel?r.picker.formatLabel(R):R}
32
32
  </T>
33
- </B>})}
33
+ </V>})}
34
34
  </C>}
35
- </C>,So=()=><C style={{flex:1,backgroundColor:e.grayBackground}}>
36
- <G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:14}}showsVerticalScrollIndicator={!1}>
35
+ </C>,St=()=><C style={{flex:1,backgroundColor:e.grayBackground}}>
36
+ <J style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:14}}showsVerticalScrollIndicator={!1}>
37
37
 
38
-
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
- <G horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:2}}>
41
- {[{key:"module",label:w("settings.modulesAndTools","Modules & Tools"),Icon:Y,badge:`${$.filter(r=>q?.[r.key]||r.key==="apis").length}/${$.length}`},{key:"ui",label:w("settings.uiPreferences","UI Preferences"),Icon:Ir},{key:"limits",label:w("settings.ramLimits","RAM & Limits"),Icon:$r},{key:"capture",label:w("settings.screenVideoCapture","Screen & Video Capture"),Icon:Se}].map(r=>{const V=J===r.key,D=r.Icon;return<B key={r.key}accessible={!0}accessibilityRole="tab"accessibilityLabel={r.label}accessibilityState={{selected:V}}onPress={()=>{me(),jr(r.key)}}style={{paddingVertical:8,paddingHorizontal:14,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,borderRadius:9,backgroundColor:V?e.purple:"transparent"}}>
42
- <D color={V?e.white:e.grayText}size={13}/>
43
- <T style={{fontFamily:S.interBold,fontSize:12.5,lineHeight:16,color:V?e.white:e.grayText}}>
44
- {r.label}
45
- </T>
46
- {r.badge&&<C style={{backgroundColor:V?"rgba(255,255,255,0.25)":`${e.purple}18`,paddingHorizontal:5.5,paddingVertical:1,borderRadius:10}}>
47
- <T style={{fontFamily:S.interBold,fontSize:9.5,color:V?e.white:e.purple}}>
48
- {r.badge}
49
- </T>
50
- </C>}
51
- </B>})}
52
- </G>
38
+ <C style={{backgroundColor:e.primaryLight,borderRadius:12,padding:3,borderWidth:1,borderColor:e.grayBorderSecondary,flexDirection:"row",alignItems:"center",shadowColor:e.black,shadowOpacity:.04,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2}}>
39
+ {[{key:"module",label:w("settings.navModules","Modules"),Icon:X},{key:"ui",label:w("settings.navDisplay","Display"),Icon:Ro},{key:"limits",label:w("settings.navLimits","Limits"),Icon:$o},{key:"capture",label:w("settings.navCapture","Capture"),Icon:Te}].map(r=>{const R=q===r.key,I=r.Icon;return<V key={r.key}accessible={!0}accessibilityRole="tab"accessibilityLabel={r.label}accessibilityState={{selected:R}}onPress={()=>{D("light"),Jr(),xr(r.key)}}style={{flex:1,minWidth:0,paddingVertical:8,paddingHorizontal:2,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:4,borderRadius:9,backgroundColor:R?e.purple:"transparent"}}>
40
+ <I color={R?e.white:e.grayText}size={12}/>
41
+ <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:R?e.white:e.grayText}}numberOfLines={1}ellipsizeMode="tail">
42
+ {r.label}
43
+ </T>
44
+ </V>})}
53
45
  </C>
54
46
 
55
- {J==="module"&&<C style={{gap:12}}>
47
+ {q==="module"&&<_.View style={{gap:10,opacity:M,transform:[{translateY:M.interpolate({inputRange:[0,1],outputRange:[10,0]})}]}}>
56
48
 
57
- <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.primaryLight,borderRadius:12,paddingVertical:10,paddingHorizontal:14,borderWidth:1,borderColor:E?`${e.purple}40`:e.grayBorderSecondary,shadowColor:e.black,shadowOpacity:.02,shadowRadius:3,shadowOffset:{width:0,height:1}}}>
58
- <B accessible={!0}accessibilityRole="checkbox"accessibilityLabel="Toggle Select All Modules"accessibilityState={{checked:E}}onPress={Xe}style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
59
- <C style={{width:22,height:22,borderRadius:6,borderWidth:E?0:1.8,borderColor:e.grayBorderSecondary,backgroundColor:E?e.purple:e.grayBackground,alignItems:"center",justifyContent:"center"}}>
60
- {E&&<_ size={12}color={e.white}/>}
61
- </C>
62
- <C>
63
- <T style={{fontFamily:S.interBold,fontSize:13,color:e.primaryBlack}}>
64
- {E?"Deselect All Modules":"Select All Modules"}
65
- </T>
66
- <T style={{fontFamily:S.interRegular,fontSize:10.5,color:e.grayText,marginTop:1}}>
67
- {Qe} of {$.length} modules active
49
+ <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:4,paddingVertical:2}}>
50
+ <C style={{flexDirection:"row",alignItems:"center",gap:6}}>
51
+ <T style={{fontFamily:S.interBold,fontSize:12.5,lineHeight:16,color:e.primaryBlack}}>
52
+ Active Modules
53
+ </T>
54
+ <C style={{backgroundColor:`${e.purple}14`,paddingHorizontal:6,paddingVertical:1.5,borderRadius:10,borderWidth:1,borderColor:`${e.purple}25`}}>
55
+ <T style={{fontFamily:S.interBold,fontSize:9.5,color:e.purple}}>
56
+ {ft} of {N.length}
68
57
  </T>
69
58
  </C>
70
- </B>
59
+ </C>
71
60
 
72
- <B onPress={Xe}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:E?`${e.purple}14`:e.purple,borderWidth:1,borderColor:E?`${e.purple}30`:"transparent"}}>
73
- <T style={{fontFamily:S.interBold,fontSize:11,color:E?e.purple:e.white}}>
74
- {E?"Deselect All":"Select All"}
61
+ <V onPress={wt}hitSlop={6}style={{paddingHorizontal:10,paddingVertical:4.5,borderRadius:7,backgroundColor:re?`${e.purple}14`:e.purple,borderWidth:1,borderColor:re?`${e.purple}30`:"transparent"}}>
62
+ <T style={{fontFamily:S.interBold,fontSize:11,color:re?e.purple:e.white}}>
63
+ {re?"Deselect All":"Select All"}
75
64
  </T>
76
- </B>
65
+ </V>
77
66
  </C>
78
67
 
79
68
 
80
- <C style={{gap:10}}>
81
- {$.map(r=>{const V=xr(),D=kr(),v=r.key==="redux"&&!V||r.key==="analytics"&&!D,M=r.key==="apis"||v,I=r.key==="apis"||!!q?.[r.key]&&!v,De=r.key==="apis"?Te.length>0?`${Te.length} requests`:"":r.key==="logs"?Ve.length>0?`${Ve.length} logs \u2022 Limit: ${Be}`:"":r.key==="crash"?oe&&oe.length>0?`${oe.length} crashes recorded \u2022 Crash Guard`:"":r.key==="analytics"?ze.length>0?`${ze.length} events logged`:"":r.key==="redux"?re&&Object.keys(re).length>0?`${Object.keys(re).length} slices \u2022 Depth: ${Me}`:"":r.key==="push"?te&&te.length>0?`${te.length} notifications logged`:"":r.key==="socket"&&le&&le.length>0?`${le.length} connections active`:"";return<C key={r.key}style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1.5,borderColor:I?`${e.purple}38`:e.grayBorderSecondary,padding:14,gap:10,shadowColor:e.black,shadowOpacity:I?.04:.02,shadowRadius:5,shadowOffset:{width:0,height:2}}}>
69
+ <C style={{gap:8}}>
70
+ {N.map(r=>{const R=Qr(),I=Kr(),P=r.key==="redux"&&!R||r.key==="analytics"&&!I,E=r.key==="apis"||P,z=r.key==="apis"||!!Y?.[r.key]&&!P,$=mt[r.key]||{color:e.purple,bg:`${e.purple}14`,border:`${e.purple}2E`},G=r.key==="apis"||r.key==="logs"||r.key==="analytics"||r.key==="redux"||r.key==="crash"||r.key==="push"||r.key==="socket",oe=r.key==="apis"?Ue.length>0?`${Ue.length} requests`:"":r.key==="logs"?Ge.length>0?`${Ge.length} logs`:"":r.key==="crash"?ze&&ze.length>0?`${ze.length} crashes`:"":r.key==="analytics"?_e.length>0?`${_e.length} events`:"":r.key==="redux"?Ve&&Object.keys(Ve).length>0?`${Object.keys(Ve).length} slices`:"":r.key==="push"?Fe&&Fe.length>0?`${Fe.length} notifications`:"":r.key==="socket"&&De&&De.length>0?`${De.length} sockets`:"";return<C key={r.key}style={{backgroundColor:e.primaryLight,borderRadius:13,borderWidth:1,borderColor:z?`${$.color}38`:e.grayBorderSecondary,padding:12,gap:8,shadowColor:e.black,shadowOpacity:z?.03:.01,shadowRadius:3,shadowOffset:{width:0,height:1.5},elevation:1.5}}>
82
71
 
83
- <C style={{flexDirection:"row",alignItems:"flex-start",gap:10}}>
72
+ <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
84
73
 
85
- <B accessible={!0}accessibilityRole="checkbox"accessibilityLabel={`Select ${r.label}`}accessibilityState={{checked:I,disabled:M}}disabled={M}onPress={()=>{M||pe(Ze=>({...Ze,[r.key]:!Ze[r.key]}))}}hitSlop={8}style={{width:22,height:22,borderRadius:6,borderWidth:I?0:1.8,borderColor:M?e.dividerColor:e.grayBorderSecondary,backgroundColor:r.key==="apis"?`${e.blue500}22`:I?e.purple:e.grayBackground,alignItems:"center",justifyContent:"center",marginTop:7,shadowColor:I?e.purple:"transparent",shadowOpacity:I?.25:0,shadowRadius:2,elevation:I?2:0}}>
86
- {r.key==="apis"?<_ size={12}color={e.blue500}/>:I?<_ size={12}color={e.white}/>:M?<Vo width={10}height={10}viewBox="0 0 24 24"fill="none">
87
- <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
- </Vo>:null}
90
- </B>
74
+ <C style={{width:38,height:38,borderRadius:10,backgroundColor:z?$.bg:e.grayBackground,borderWidth:1,borderColor:z?$.border:e.grayBorderSecondary,alignItems:"center",justifyContent:"center",flexShrink:0}}>
75
+ {r.icon==="apis"&&<Co color={z?$.color:e.grayTextWeak}size={16}/>}
76
+ {r.icon==="logs"&&<So color={z?$.color:e.grayTextWeak}size={16}/>}
77
+ {r.icon==="perf"&&<Ri color={z?$.color:e.grayTextWeak}size={16}/>}
78
+ {r.icon==="crash"&&<Mt color={z?$.color:e.grayTextWeak}size={16}/>}
79
+ {r.icon==="analytics"&&<To color={z?$.color:e.grayTextWeak}size={16}/>}
80
+ {r.icon==="redux"&&<Vo color={z?$.color:e.grayTextWeak}size={16}/>}
81
+ {r.icon==="device"&&<Zt color={z?$.color:e.grayTextWeak}size={16}/>}
82
+ {r.icon==="storage"&&<Ci color={z?$.color:e.grayTextWeak}size={16}/>}
83
+ {r.icon==="debugging"&&<Si color={z?$.color:e.grayTextWeak}size={16}/>}
84
+ {r.icon==="media"&&<Ti color={z?$.color:e.grayTextWeak}size={16}/>}
85
+ {r.icon==="push"&&<Ao color={z?$.color:e.grayTextWeak}size={16}/>}
86
+ {r.icon==="socket"&&<Eo color={z?$.color:e.grayTextWeak}size={16}/>}
87
+ </C>
91
88
 
92
89
 
93
- <B accessible={!0}accessibilityRole="button"accessibilityLabel={`${r.label} settings`}disabled={v}onPress={()=>{me(),Ae(r.key)}}style={{flex:1,flexDirection:"row",alignItems:"flex-start",gap:10}}>
94
-
95
- <C style={{width:36,height:36,borderRadius:10,backgroundColor:M?`${e.grayBorderSecondary}4D`:I?`${e.purple}14`:e.grayBackground,borderWidth:1,borderColor:M?e.dividerColor:I?`${e.purple}33`:e.grayBorderSecondary,alignItems:"center",justifyContent:"center",marginTop:1}}>
96
- {r.icon==="apis"&&<Br color={I?e.purple:e.grayTextWeak}size={16}/>}
97
- {r.icon==="logs"&&<Rr color={I?e.purple:e.grayTextWeak}size={16}/>}
98
- {r.icon==="crash"&&<Eo color={I?e.purple:e.grayTextWeak}size={16}/>}
99
- {r.icon==="analytics"&&<Fr color={I?e.purple:e.grayTextWeak}size={16}/>}
100
- {r.icon==="redux"&&<Hr color={I?e.purple:e.grayTextWeak}size={16}/>}
101
- {r.icon==="device"&&<Go color={I?e.purple:e.grayTextWeak}size={16}/>}
102
- {r.icon==="storage"&&<Uo color={I?e.purple:e.grayTextWeak}size={16}/>}
103
- {r.icon==="debugging"&&<Ko color={I?e.purple:e.grayTextWeak}size={16}/>}
104
- {r.icon==="media"&&<_o color={I?e.purple:e.grayTextWeak}size={16}/>}
105
- {r.icon==="push"&&<Er color={I?e.purple:e.grayTextWeak}size={16}/>}
106
- {r.icon==="socket"&&<Nr color={I?e.purple:e.grayTextWeak}size={16}/>}
107
- </C>
90
+ <C style={{flex:1,minWidth:0,justifyContent:"center"}}>
91
+ <C style={{flexDirection:"row",alignItems:"center",gap:5}}>
92
+ <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:E?e.grayText:e.primaryBlack}}numberOfLines={1}>
93
+ {r.label}
94
+ </T>
108
95
 
109
-
110
- <C style={{flex:1,gap:2}}>
111
- <C style={{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"}}>
112
- <C style={{minWidth:22,height:22,paddingHorizontal:5,borderRadius:11,backgroundColor:I?`${e.purple}1C`:`${e.grayBorderSecondary}80`,borderWidth:1,borderColor:I?`${e.purple}44`:e.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
113
- <T style={{fontFamily:S.interBold,fontSize:10,lineHeight:13,color:I?e.purple:e.grayText}}>
114
- #{r.id}
96
+
97
+ {r.key==="apis"&&<C style={{backgroundColor:`${e.blue500}14`,paddingHorizontal:4.5,paddingVertical:1,borderRadius:4,borderWidth:1,borderColor:`${e.blue500}33`}}>
98
+ <T style={{fontFamily:S.interBold,fontSize:7.5,lineHeight:10,color:e.blue500,letterSpacing:.3}}>
99
+ CORE
115
100
  </T>
116
- </C>
117
- <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:M?e.grayText:e.primaryBlack}}>
118
- {r.label}
119
- </T>
101
+ </C>}
120
102
 
121
-
122
- {r.key===Q&&!v&&<C style={{flexDirection:"row",alignItems:"center",backgroundColor:`${e.purple}14`,borderRadius:12,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.purple}2E`,gap:3}}>
123
- <C style={{width:4,height:4,borderRadius:2,backgroundColor:e.purple}}/>
124
- <T style={{fontFamily:S.interBold,fontSize:8,lineHeight:11,color:e.purple,letterSpacing:.4}}>
125
- {w("settings.defaultBadge")}
126
- </T>
127
- </C>}
128
-
129
-
130
- {r.key==="apis"?<C style={{backgroundColor:`${e.blue500}14`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.blue500}33`}}>
131
- <T style={{fontFamily:S.interBold,fontSize:8,lineHeight:11,color:e.blue500,letterSpacing:.3}}>
132
- {w("settings.coreBadge")}
133
- </T>
134
- </C>:v?<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}}>
136
- {r.key==="redux"?w("settings.notConnectedBadge"):w("settings.notDetectedBadge")}
137
- </T>
138
- </C>:I?<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}}>
140
- {w("settings.activeBadge")}
141
- </T>
142
- </C>:<C style={{backgroundColor:`${e.grayTextWeak}18`,borderRadius:4,paddingHorizontal:5,paddingVertical:1.5,borderWidth:1,borderColor:`${e.grayTextWeak}2E`}}>
143
- <T style={{fontFamily:S.interBold,fontSize:8,lineHeight:11,color:e.grayTextWeak,letterSpacing:.3}}>
144
- {w("settings.dormantBadge")}
145
- </T>
146
- </C>}
147
- </C>
148
-
149
- <T style={{fontFamily:S.interRegular,fontSize:11,color:e.grayText,lineHeight:15,marginTop:1}}>
150
- {r.desc}
151
- </T>
103
+ {r.key===K&&<C style={{backgroundColor:`${e.purple}14`,paddingHorizontal:4.5,paddingVertical:1,borderRadius:4,borderWidth:1,borderColor:`${e.purple}2E`}}>
104
+ <T style={{fontFamily:S.interBold,fontSize:7.5,lineHeight:10,color:e.purple,letterSpacing:.3}}>
105
+ DEFAULT
106
+ </T>
107
+ </C>}
108
+
109
+ {P&&<C style={{backgroundColor:`${e.amber500}14`,paddingHorizontal:4.5,paddingVertical:1,borderRadius:4,borderWidth:1,borderColor:`${e.amber500}33`}}>
110
+ <T style={{fontFamily:S.interBold,fontSize:7.5,lineHeight:10,color:e.amber700,letterSpacing:.3}}>
111
+ OFFLINE
112
+ </T>
113
+ </C>}
152
114
  </C>
153
- </B>
115
+
116
+ <T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayTextWeak,marginTop:1.5}}numberOfLines={1}ellipsizeMode="tail">
117
+ {r.desc}
118
+ </T>
119
+ </C>
120
+
121
+
122
+ <Tt value={z}disabled={E}onValueChange={()=>Ct(r.key)}trackColor={{false:e.grayBorderSecondary,true:e.purple}}thumbColor={e.white}ios_backgroundColor={e.grayBorderSecondary}style={{transform:[{scaleX:.8},{scaleY:.8}]}}/>
154
123
  </C>
155
124
 
156
125
 
157
- {!v&&<C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingTop:8,borderTopWidth:1,borderTopColor:e.dividerColor}}>
126
+ {(oe||G||r.key==="media")&&<C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingTop:7,borderTopWidth:1,borderTopColor:`${e.dividerColor}99`,marginTop:1}}>
158
127
 
159
- {De&&De.trim().length>0?<C style={{flexDirection:"row",alignItems:"center",gap:6,flex:1}}>
160
- <C style={{width:6,height:6,borderRadius:3,backgroundColor:I?e.liveGreen:e.grayTextWeak}}/>
161
- <T style={{fontFamily:S.interMedium,fontSize:11,color:e.grayText,lineHeight:14}}>
162
- {De}
163
- </T>
164
- </C>:<C style={{flex:1}}/>}
128
+ <C style={{flexDirection:"row",alignItems:"center",gap:5,flex:1}}>
129
+ {oe?<C style={{flexDirection:"row",alignItems:"center",gap:5}}>
130
+ <C style={{width:5.5,height:5.5,borderRadius:3,backgroundColor:z?$.color:e.grayTextWeak}}/>
131
+ <T style={{fontFamily:S.interMedium,fontSize:10.5,lineHeight:14,color:z?e.grayTextStrong:e.grayTextWeak}}>
132
+ {oe}
133
+ </T>
134
+ </C>:<C/>}
135
+ </C>
165
136
 
166
137
 
167
- <B accessible={!0}accessibilityRole="button"accessibilityLabel={`Configure ${r.label} settings`}onPress={()=>{me(),Ae(r.key)}}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.purple}12`,paddingHorizontal:10,paddingVertical:5,borderRadius:8,borderWidth:1,borderColor:`${e.purple}26`}}>
168
- <Wo color={e.purple}size={11}/>
169
- <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.purple}}>
170
- {w("settings.configure")}
171
- </T>
172
- <Lr color={e.purple}size={9}/>
173
- </B>
138
+ {(G||r.key==="media")&&<V onPress={()=>{D("light"),r.key==="media"?(Jr(),xr("capture")):Oo(r.key)}}hitSlop={6}style={{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:8.5,paddingVertical:4,borderRadius:6.5,backgroundColor:`${$.color}14`,borderWidth:1,borderColor:`${$.color}2A`}}>
139
+ <Wt color={$.color}size={10}/>
140
+ <T style={{fontFamily:S.interBold,fontSize:10,lineHeight:13,color:$.color}}>
141
+ {w("settings.configure","Configure")}
142
+ </T>
143
+ <Do color={$.color}size={8}/>
144
+ </V>}
174
145
  </C>}
175
146
  </C>})}
176
147
  </C>
177
- </C>}
148
+ </_.View>}
178
149
 
179
- {J==="ui"&&<C style={{gap:14}}>
150
+ {q==="ui"&&<_.View style={{gap:14,opacity:M,transform:[{translateY:M.interpolate({inputRange:[0,1],outputRange:[10,0]})}]}}>
180
151
 
181
152
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:14,gap:12}}>
182
153
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
@@ -186,7 +157,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
186
157
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
187
158
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
188
159
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
189
- {Z?<Po color={e.purple}size={15}/>:<Ao color={e.purple}size={15}/>}
160
+ {Z?<Lt color={e.purple}size={15}/>:<At color={e.purple}size={15}/>}
190
161
  </C>
191
162
  <C style={{flex:1}}>
192
163
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -198,9 +169,9 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
198
169
  </C>
199
170
  </C>
200
171
 
201
- <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle Dark Theme"accessibilityState={{checked:Z}}onPress={()=>{const r=!Z;qr(r),Bo(r)}}style={{width:42,height:24,borderRadius:12,backgroundColor:Z?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:Z?"flex-end":"flex-start"}}>
172
+ <V accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle Dark Theme"accessibilityState={{checked:Z}}onPress={()=>{const r=!Z;No(r),Vt(r)}}style={{width:42,height:24,borderRadius:12,backgroundColor:Z?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:Z?"flex-end":"flex-start"}}>
202
173
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
203
- </B>
174
+ </V>
204
175
  </C>
205
176
 
206
177
  <C style={{height:1,backgroundColor:e.grayBorderSecondary,opacity:.6}}/>
@@ -209,7 +180,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
209
180
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
210
181
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
211
182
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:`${e.blue600}14`,alignItems:"center",justifyContent:"center"}}>
212
- <Vr color={e.blue600}size={15}/>
183
+ <Zr color={e.blue600}size={15}/>
213
184
  </C>
214
185
  <C style={{flex:1}}>
215
186
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -221,13 +192,13 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
221
192
  </C>
222
193
  </C>
223
194
 
224
- <B onPress={()=>{L("light"),Je(!0)}}style={{flexDirection:"row",alignItems:"center",backgroundColor:e.purpleShade50,paddingHorizontal:10,paddingVertical:6,borderRadius:8,gap:5,borderWidth:1,borderColor:`${e.purple}20`}}>
225
- {ce?.flag?<T style={{fontSize:13}}>{ce.flag}</T>:<Vr size={14}color={e.purple}/>}
195
+ <V onPress={()=>{D("light"),Er(!0)}}style={{flexDirection:"row",alignItems:"center",backgroundColor:e.purpleShade50,paddingHorizontal:10,paddingVertical:6,borderRadius:8,gap:5,borderWidth:1,borderColor:`${e.purple}20`}}>
196
+ {ve?.flag?<T style={{fontSize:13}}>{ve.flag}</T>:<Zr size={14}color={e.purple}/>}
226
197
  <T style={{fontFamily:S.interSemiBold,fontSize:12,color:e.purple}}>
227
- {ce?.nativeName||ce?.name||"English"}
198
+ {ve?.nativeName||ve?.name||"English"}
228
199
  </T>
229
- <Lr size={11}color={e.purple}/>
230
- </B>
200
+ <Do size={11}color={e.purple}/>
201
+ </V>
231
202
  </C>
232
203
  </C>
233
204
 
@@ -242,7 +213,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
242
213
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:10}}>
243
214
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
244
215
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
245
- <Ir color={e.purple}size={15}/>
216
+ <Ro color={e.purple}size={15}/>
246
217
  </C>
247
218
  <C style={{flex:1}}>
248
219
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -254,16 +225,16 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
254
225
  </C>
255
226
  </C>
256
227
 
257
- {de!==ee&&<B onPress={()=>{Kr(de)}}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:e.purple,paddingHorizontal:10,paddingVertical:5,borderRadius:7,shadowColor:e.purple,shadowOffset:{width:0,height:1},shadowOpacity:.28,shadowRadius:2,elevation:2}}>
258
- <_ size={11}color={e.white}/>
228
+ {Le!==Re&&<V onPress={()=>{jo(Le)}}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}}>
229
+ <Se size={11}color={e.white}/>
259
230
  <T style={{fontFamily:S.interBold,fontSize:11,color:e.white}}>
260
- Save ({de}%)
231
+ Save ({Le}%)
261
232
  </T>
262
- </B>}
233
+ </V>}
263
234
  </C>
264
235
 
265
236
  <C style={{marginTop:6}}>
266
- <Sr value={de}onValueChange={_e}min={50}max={90}step={5}quickPresets={[50,60,70,80,90]}formatLabel={r=>`${Math.round(r)}%`}/>
237
+ <Yr value={Le}onValueChange={Ar}min={50}max={90}step={5}quickPresets={[50,60,70,80,90]}formatLabel={r=>`${Math.round(r)}%`}/>
267
238
  </C>
268
239
  </C>
269
240
 
@@ -288,13 +259,13 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
288
259
 
289
260
  <C style={{backgroundColor:"rgba(6, 182, 212, 0.14)",paddingHorizontal:8,paddingVertical:3,borderRadius:6,borderWidth:1,borderColor:"rgba(6, 182, 212, 0.30)"}}>
290
261
  <T style={{fontFamily:S.interBold,fontSize:12,color:"#06B6D4"}}>
291
- {Ke.toFixed(1)}
262
+ {Lr.toFixed(1)}
292
263
  </T>
293
264
  </C>
294
265
  </C>
295
266
 
296
267
  <C style={{marginTop:6}}>
297
- <Sr value={Ke}onValueChange={r=>{const V=Math.round(r*10)/10;mo(V)}}min={.1}max={1}step={.1}quickPresets={[.1,.3,.5,.7,1]}formatLabel={r=>r.toFixed(1)}/>
268
+ <Yr value={Lr}onValueChange={r=>{const R=Math.round(r*10)/10;yt(R)}}min={.1}max={1}step={.1}quickPresets={[.1,.3,.5,.7,1]}formatLabel={r=>r.toFixed(1)}/>
298
269
  </C>
299
270
  </C>
300
271
 
@@ -304,7 +275,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
304
275
  <C style={{gap:8}}>
305
276
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
306
277
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
307
- <Oo color={e.purple}size={15}/>
278
+ <Et color={e.purple}size={15}/>
308
279
  </C>
309
280
  <C style={{flex:1}}>
310
281
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -317,11 +288,11 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
317
288
  </C>
318
289
 
319
290
  <C style={{flexDirection:"row",backgroundColor:e.grayBackground,borderRadius:10,padding:3,borderWidth:1,borderColor:e.dividerColor}}>
320
- {[{key:"slide",label:"Slide Up"},{key:"fade",label:"Fade"},{key:"none",label:"None"}].map(r=>{const V=_r===r.key;return<B key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Set transition animation to ${r.label}`}accessibilityState={{selected:V}}onPress={()=>Jr(r.key)}style={{flex:1,paddingVertical:7,alignItems:"center",borderRadius:8,backgroundColor:V?e.purple:"transparent"}}>
321
- <T style={{fontFamily:S.interBold,fontSize:11.5,lineHeight:15,color:V?e.white:e.grayText}}>
291
+ {[{key:"slide",label:"Slide Up"},{key:"fade",label:"Fade"},{key:"none",label:"None"}].map(r=>{const R=Uo===r.key;return<V key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Set transition animation to ${r.label}`}accessibilityState={{selected:R}}onPress={()=>Go(r.key)}style={{flex:1,paddingVertical:7,alignItems:"center",borderRadius:8,backgroundColor:R?e.purple:"transparent"}}>
292
+ <T style={{fontFamily:S.interBold,fontSize:11.5,lineHeight:15,color:R?e.white:e.grayText}}>
322
293
  {r.label}
323
294
  </T>
324
- </B>})}
295
+ </V>})}
325
296
  </C>
326
297
  </C>
327
298
  </C>
@@ -334,7 +305,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
334
305
 
335
306
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
336
307
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
337
- <Y color={e.purple}size={15}/>
308
+ <X color={e.purple}size={15}/>
338
309
  </C>
339
310
  <C style={{flex:1}}>
340
311
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -348,11 +319,11 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
348
319
 
349
320
 
350
321
  <C style={{marginTop:6,gap:6}}>
351
- <B accessible={!0}accessibilityRole="button"accessibilityLabel={`Default opening tab: ${$.find(r=>r.key===Q)?.label||"APIs"}`}onPress={()=>Ye(r=>!r)}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.grayBackground,borderRadius:10,borderWidth:1.5,borderColor:He?e.purple:e.grayBorderSecondary,paddingHorizontal:14,paddingVertical:11}}>
322
+ <V accessible={!0}accessibilityRole="button"accessibilityLabel={`Default opening tab: ${N.find(r=>r.key===K)?.label||"APIs"}`}onPress={()=>Mr(r=>!r)}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.grayBackground,borderRadius:10,borderWidth:1.5,borderColor:Qe?e.purple:e.grayBorderSecondary,paddingHorizontal:14,paddingVertical:11}}>
352
323
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
353
324
  <C style={{width:8,height:8,borderRadius:4,backgroundColor:e.purple}}/>
354
325
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
355
- {$.find(r=>r.key===Q)?`#${$.find(r=>r.key===Q)?.id} ${$.find(r=>r.key===Q)?.label}`:"#1 APIs (Network)"}
326
+ {N.find(r=>r.key===K)?`#${N.find(r=>r.key===K)?.id} ${N.find(r=>r.key===K)?.label}`:"#1 APIs (Network)"}
356
327
  </T>
357
328
  <C style={{backgroundColor:`${e.purple}14`,paddingHorizontal:6,paddingVertical:1.5,borderRadius:6}}>
358
329
  <T style={{fontFamily:S.interBold,fontSize:8.5,color:e.purple}}>
@@ -361,22 +332,22 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
361
332
  </C>
362
333
  </C>
363
334
 
364
- <C style={{transform:[{rotate:He?"180deg":"0deg"}]}}>
365
- <No color={e.grayText}size={15}/>
335
+ <C style={{transform:[{rotate:Qe?"180deg":"0deg"}]}}>
336
+ <Xt color={e.grayText}size={15}/>
366
337
  </C>
367
- </B>
338
+ </V>
368
339
 
369
340
 
370
- {He&&<C style={{backgroundColor:e.primaryLight,borderRadius:10,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",shadowColor:e.black,shadowOpacity:.08,shadowRadius:6,shadowOffset:{width:0,height:3},elevation:4}}>
371
- {$.filter(r=>r.key==="apis"||q?.[r.key]||R?.[r.key]).map((r,V,D)=>{const v=Q===r.key,M=V===D.length-1;return<B key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Select ${r.label} as default tab`}onPress={()=>{Ur(r.key),Ye(!1)}}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:14,paddingVertical:11,backgroundColor:v?`${e.purple}0F`:"transparent",borderBottomWidth:M?0:1,borderBottomColor:e.dividerColor}}>
341
+ {Qe&&<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
+ {N.filter(r=>r.key==="apis"||Y?.[r.key]).map((r,R,I)=>{const P=K===r.key,E=R===I.length-1;return<V key={r.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Select ${r.label} as default tab`}onPress={()=>{Mo(r.key),Mr(!1)}}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:14,paddingVertical:11,backgroundColor:P?`${e.purple}0F`:"transparent",borderBottomWidth:E?0:1,borderBottomColor:e.dividerColor}}>
372
343
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
373
- <C style={{width:6,height:6,borderRadius:3,backgroundColor:v?e.purple:e.grayTextWeak}}/>
374
- <T style={{fontFamily:v?S.interBold:S.interMedium,fontSize:13,color:v?e.purple:e.primaryBlack}}>
344
+ <C style={{width:6,height:6,borderRadius:3,backgroundColor:P?e.purple:e.grayTextWeak}}/>
345
+ <T style={{fontFamily:P?S.interBold:S.interMedium,fontSize:13,color:P?e.purple:e.primaryBlack}}>
375
346
  #{r.id} {r.label}
376
347
  </T>
377
348
  </C>
378
- {v&&<_ size={14}color={e.purple}/>}
379
- </B>})}
349
+ {P&&<Se size={14}color={e.purple}/>}
350
+ </V>})}
380
351
  </C>}
381
352
  </C>
382
353
  </C>
@@ -390,7 +361,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
390
361
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
391
362
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1,marginRight:10}}>
392
363
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
393
- <Mo color={e.purple}size={15}/>
364
+ <Ot color={e.purple}size={15}/>
394
365
  </C>
395
366
  <C style={{flex:1}}>
396
367
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -403,14 +374,14 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
403
374
  </C>
404
375
  </C>
405
376
 
406
- <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle NPM Update Toast"accessibilityState={{checked:xe}}onPress={()=>Xr(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:xe?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:xe?"flex-end":"flex-start"}}>
377
+ <V accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle NPM Update Toast"accessibilityState={{checked:je}}onPress={()=>Jo(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:je?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:je?"flex-end":"flex-start"}}>
407
378
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
408
- </B>
379
+ </V>
409
380
  </C>
410
381
  </C>
411
- </C>}
382
+ </_.View>}
412
383
 
413
- {J==="limits"&&<C style={{gap:14}}>
384
+ {q==="limits"&&<_.View style={{gap:14,opacity:M,transform:[{translateY:M.interpolate({inputRange:[0,1],outputRange:[10,0]})}]}}>
414
385
 
415
386
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,overflow:"hidden",padding:14,gap:12}}>
416
387
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.grayTextWeak,letterSpacing:.8}}>
@@ -421,7 +392,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
421
392
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
422
393
  <C style={{flexDirection:"row",alignItems:"center",gap:10,flex:1}}>
423
394
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
424
- <$r color={e.purple}size={16}/>
395
+ <$o color={e.purple}size={16}/>
425
396
  </C>
426
397
  <C style={{flex:1}}>
427
398
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -434,9 +405,9 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
434
405
  </C>
435
406
  </C>
436
407
 
437
- <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle auto RAM limit calculation"accessibilityState={{checked:W}}onPress={()=>to(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:W?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:W?"flex-end":"flex-start"}}>
408
+ <V accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle auto RAM limit calculation"accessibilityState={{checked:W}}onPress={()=>Xo(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:W?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:W?"flex-end":"flex-start"}}>
438
409
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
439
- </B>
410
+ </V>
440
411
  </C>
441
412
 
442
413
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
@@ -444,19 +415,19 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
444
415
 
445
416
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
446
417
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:W?`${e.purple}14`:e.grayBackground,alignItems:"center",justifyContent:"center"}}>
447
- <Br color={W?e.purple:e.grayTextWeak}size={15}/>
418
+ <Co color={W?e.purple:e.grayTextWeak}size={15}/>
448
419
  </C>
449
420
  <C style={{flex:1}}>
450
421
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:W?e.primaryBlack:e.grayText}}>
451
422
  Detected Available RAM
452
423
  </T>
453
424
  <T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
454
- {Re} MB available on device
425
+ {Je} MB available on device
455
426
  </T>
456
427
  </C>
457
428
  <C style={{paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:W?`${e.purple}12`:e.grayBackground,borderWidth:1,borderColor:W?`${e.purple}26`:e.dividerColor}}>
458
429
  <T style={{fontFamily:S.interBold,fontSize:12,lineHeight:15,color:W?e.purple:e.grayText}}>
459
- {Re} MB
430
+ {Je} MB
460
431
  </T>
461
432
  </C>
462
433
  </C>
@@ -465,7 +436,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
465
436
  <C style={{marginTop:4,paddingTop:8,borderTopWidth:1,borderTopColor:e.dividerColor,gap:6}}>
466
437
  <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
467
438
  <T style={{fontFamily:S.interBold,fontSize:11.5,lineHeight:15,color:e.purple}}>
468
- Profile: {ge.profileName}
439
+ Profile: {Ae.profileName}
469
440
  </T>
470
441
  <C style={{backgroundColor:W?`${e.emerald500}18`:`${e.purple}18`,paddingHorizontal:7,paddingVertical:2.5,borderRadius:4}}>
471
442
  <T style={{fontFamily:S.interBold,fontSize:9.5,color:W?e.emerald500:e.purple}}>
@@ -475,7 +446,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
475
446
  </C>
476
447
 
477
448
  <C style={{flexDirection:"row",flexWrap:"wrap",gap:8,marginTop:4}}>
478
- {[{label:"Logs",value:W?ge.maxConsoleLogs:Be,color:e.sky500},{label:"Analytics",value:W?ge.maxAnalyticsEvents:Oe,color:e.purple},{label:"Crash",value:W?ge.maxCrashRecords:Ee,color:e.errorColor}].map(r=><C key={r.label}style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${r.color}14`,borderWidth:1,borderColor:`${r.color}33`}}>
449
+ {[{label:"Logs",value:W?Ae.maxConsoleLogs:Rr,color:e.sky500},{label:"Analytics",value:W?Ae.maxAnalyticsEvents:Vr,color:e.purple},{label:"Crash",value:W?Ae.maxCrashRecords:zr,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`}}>
479
450
  <T style={{fontFamily:S.interBold,fontSize:10.5,lineHeight:14,color:r.color}}>
480
451
  {r.label}:
481
452
  </T>
@@ -495,7 +466,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
495
466
 
496
467
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
497
468
  <C style={{width:32,height:32,borderRadius:8,backgroundColor:`${e.emerald500}14`,alignItems:"center",justifyContent:"center"}}>
498
- <Dr color={e.emerald500}size={15}/>
469
+ <Bo color={e.emerald500}size={15}/>
499
470
  </C>
500
471
  <C style={{flex:1}}>
501
472
  <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
@@ -525,21 +496,44 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
525
496
  {w("settings.memory.manualDescription","Prune older entries across all log stores and free RAM")}
526
497
  </T>
527
498
  </C>
528
- <B onPress={()=>{const r=Qo("manual",.5);H(w("settings.memory.pruned",{count:r.totalPruned},`Pruned ${r.totalPruned} items from memory`))}}style={{backgroundColor:e.purple,paddingHorizontal:12,paddingVertical:8,borderRadius:8,flexDirection:"row",alignItems:"center",gap:5}}>
529
- <U size={13}color={e.white}/>
499
+ <V onPress={()=>{const r=zi("manual",.5);B(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
+ <O size={13}color={e.white}/>
530
501
  <T style={{fontFamily:S.interBold,fontSize:11.5,color:e.white}}>
531
502
  Prune Now
532
503
  </T>
533
- </B>
504
+ </V>
534
505
  </C>
535
506
  </C>
536
- </C>}
537
- {J==="capture"&&<C style={{gap:12}}>
507
+ </_.View>}
508
+ {q==="capture"&&<_.View style={{gap:16,opacity:M,transform:[{translateY:M.interpolate({inputRange:[0,1],outputRange:[10,0]})}]}}>
509
+
510
+ <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
511
+ <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
512
+ <C style={{width:36,height:36,borderRadius:10,backgroundColor:`${e.rose500}1A`,alignItems:"center",justifyContent:"center"}}>
513
+ <Cr color={e.rose500}size={16}/>
514
+ </C>
515
+ <C style={{flex:1}}>
516
+ <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
517
+ {w("settings.media.floatingWidgetTitle","Floating Capture Widget")}
518
+ </T>
519
+ <T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
520
+ {w("settings.media.floatingWidgetDesc","On-screen floating button to quickly take screenshots and record videos (Disabled by default)")}
521
+ </T>
522
+ </C>
523
+ </C>
524
+
525
+ {F({icon:<Te color={e.purple}size={16}/>,label:w("settings.media.enableFloatingWidget","Enable Floating Widget"),description:w("settings.media.enableFloatingWidgetDesc","Shows draggable quick screenshot & video recording button on screen"),isLast:!0,onPress:()=>{D("light"),Wr(r=>!r),B(`Capture widget: ${Q?"OFF":"ON"}`)},right:<V onPress={()=>{D("light"),Wr(r=>!r),B(`Capture widget: ${Q?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:Q?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:Q?`${e.emerald500}4D`:`${e.grayText}33`}}>
526
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:Q?e.emerald500:e.grayText}}>
527
+ {Q?w("settings.media.enabled","ON"):"OFF"}
528
+ </T>
529
+ </V>})}
530
+ </C>
531
+
538
532
 
539
533
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
540
534
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
541
535
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
542
- <Se color={e.purple}size={16}/>
536
+ <Te color={e.purple}size={16}/>
543
537
  </C>
544
538
  <C style={{flex:1}}>
545
539
  <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
@@ -551,26 +545,26 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
551
545
  </C>
552
546
  </C>
553
547
 
554
- {F({icon:<Mr color={e.purple}size={16}/>,label:w("settings.media.imageFormat","Image Format"),description:w("settings.media.imageFormatDesc","Export formats (PNG lossless, JPEG lossy, WebP)"),right:<C style={{flexDirection:"row",gap:5}}>
555
- {["png","jpeg","webp"].map(r=>{const V=Ie===r;return<B key={r}onPress={()=>{L("light"),Ne(r),H(`Screenshot format: ${r.toUpperCase()}`)}}style={{paddingHorizontal:9,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
556
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
548
+ {F({icon:<Lo 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}}>
549
+ {["png","jpeg","webp"].map(r=>{const R=Ye===r;return<V key={r}onPress={()=>{D("light"),Ir(r),B(`Screenshot format: ${r.toUpperCase()}`)}}style={{paddingHorizontal:9,paddingVertical:5,borderRadius:7,backgroundColor:R?e.purple:`${e.purple}14`,borderWidth:1,borderColor:R?e.purple:`${e.purple}2E`}}>
550
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:R?e.white:e.purple}}>
557
551
  {r.toUpperCase()}
558
552
  </T>
559
- </B>})}
553
+ </V>})}
560
554
  </C>})}
561
555
 
562
- {F({icon:<Ce color={e.purple}size={16}/>,label:w("settings.media.autoHide","Auto-Hide Inspector During Capture"),description:w("settings.media.autoHideDesc","Temporarily hides the inspector overlay during screen capture"),isLast:!0,onPress:()=>{L("light"),ne(r=>!r),H(`Auto-hide overlay: ${P?"OFF":"ON"}`)},right:<B onPress={()=>{L("light"),ne(r=>!r),H(`Auto-hide overlay: ${P?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:P?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:P?`${e.emerald500}4D`:`${e.grayText}33`}}>
563
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:P?e.emerald500:e.grayText}}>
564
- {P?w("settings.media.enabled","ON"):"OFF"}
556
+ {F({icon:<Ce color={e.purple}size={16}/>,label:w("settings.media.autoHide","Auto-Hide Inspector During Capture"),description:w("settings.media.autoHideDesc","Temporarily hides the inspector overlay during screen capture"),isLast:!0,onPress:()=>{D("light"),He(r=>!r),B(`Auto-hide overlay: ${L?"OFF":"ON"}`)},right:<V onPress={()=>{D("light"),He(r=>!r),B(`Auto-hide overlay: ${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`}}>
557
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:L?e.emerald500:e.grayText}}>
558
+ {L?w("settings.media.enabled","ON"):"OFF"}
565
559
  </T>
566
- </B>})}
560
+ </V>})}
567
561
  </C>
568
562
 
569
563
 
570
564
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
571
565
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
572
566
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
573
- <Pr color={e.purple}size={16}/>
567
+ <Cr color={e.purple}size={16}/>
574
568
  </C>
575
569
  <C style={{flex:1}}>
576
570
  <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
@@ -582,78 +576,118 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
582
576
  </C>
583
577
  </C>
584
578
 
585
- {F({icon:<Ar color={e.purple}size={16}/>,label:w("settings.media.audioMode","Audio Source"),description:w("settings.media.audioModeDesc","Record video with muted, app audio, or microphone commentary"),right:<C style={{flexDirection:"row",gap:5}}>
586
- {[{key:"none",label:"Muted"},{key:"app",label:"App"},{key:"mic",label:"Mic"}].map(r=>{const V=je===r.key;return<B key={r.key}onPress={()=>{L("light"),Ge(r.key),H(`Audio source: ${r.label}`)}}style={{paddingHorizontal:8,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
587
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
579
+ {F({icon:<Po 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}}>
580
+ {[{key:"none",label:"Muted"},{key:"app",label:"App"},{key:"mic",label:"Mic"}].map(r=>{const R=Dr===r.key;return<V key={r.key}onPress={()=>{D("light"),$r(r.key),B(`Audio source: ${r.label}`)}}style={{paddingHorizontal:8,paddingVertical:5,borderRadius:7,backgroundColor:R?e.purple:`${e.purple}14`,borderWidth:1,borderColor:R?e.purple:`${e.purple}2E`}}>
581
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:R?e.white:e.purple}}>
588
582
  {r.label}
589
583
  </T>
590
- </B>})}
584
+ </V>})}
591
585
  </C>})}
592
586
 
593
- {F({icon:<Wr color={e.purple}size={16}/>,label:w("settings.media.frameRate","Recording Frame Rate (FPS)"),description:w("settings.media.frameRateDesc","Target video smoothness: 15, 24, 30, or 60 FPS"),right:<C style={{flexDirection:"row",gap:5}}>
594
- {[15,24,30,60].map(r=>{const V=Ue===r;return<B key={r}onPress={()=>{L("light"),qe(r),H(`Recording FPS: ${r}`)}}style={{paddingHorizontal:7,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
595
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
587
+ {F({icon:<Ho 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}}>
588
+ {[15,24,30,60].map(r=>{const R=Hr===r;return<V key={r}onPress={()=>{D("light"),Pr(r),B(`Recording FPS: ${r}`)}}style={{paddingHorizontal:7,paddingVertical:5,borderRadius:7,backgroundColor:R?e.purple:`${e.purple}14`,borderWidth:1,borderColor:R?e.purple:`${e.purple}2E`}}>
589
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:R?e.white:e.purple}}>
596
590
  {r}fps
597
591
  </T>
598
- </B>})}
592
+ </V>})}
599
593
  </C>})}
600
594
 
601
- {F({icon:<Or color={e.purple}size={16}/>,label:w("settings.media.gifAutoOpt","Auto GIF Optimization"),description:w("settings.media.gifAutoOptDesc","Automatic palette reduction and frame skip for lightweight animated GIFs"),isLast:!0,onPress:()=>{L("light"),se(r=>!r),H(`GIF optimization: ${O?"OFF":"ON"}`)},right:<B onPress={()=>{L("light"),se(r=>!r),H(`GIF optimization: ${O?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:O?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:O?`${e.emerald500}4D`:`${e.grayText}33`}}>
602
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:O?e.emerald500:e.grayText}}>
603
- {O?"ON":"OFF"}
595
+ {F({icon:<Wo 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:()=>{D("light"),Pe(r=>!r),B(`GIF optimization: ${A?"OFF":"ON"}`)},right:<V onPress={()=>{D("light"),Pe(r=>!r),B(`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`}}>
596
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:A?e.emerald500:e.grayText}}>
597
+ {A?"ON":"OFF"}
604
598
  </T>
605
- </B>})}
599
+ </V>})}
606
600
  </C>
607
601
 
608
602
 
609
603
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
610
- {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.media.purgeAll","Purge Captured Media Cache"),description:w("settings.media.purgeAllDesc","Delete all local screenshots, screen recordings and converted GIFs"),isLast:!0,onPress:()=>{N.alert(w("settings.media.purgeConfirmTitle","Purge Media Storage?"),w("settings.media.purgeConfirmMessage","This will permanently delete all captured screenshots and videos from disk."),[{text:w("common.cancel","Cancel"),style:"cancel"},{text:w("settings.media.purgeCacheBtn","Purge All"),style:"destructive",onPress:async()=>{await Pe.clearAllMedia(),H(w("settings.media.purgedSuccess","Media cache cleared successfully"))}}])},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
604
+ {F({icon:<O 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:()=>{j.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 kr.clearAllMedia(),B(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`}}>
611
605
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
612
606
  {w("settings.media.purgeCacheBtn","Purge All")}
613
607
  </T>
614
608
  </C>})}
615
609
  </C>
616
- </C>}
610
+ </_.View>}
611
+
617
612
  <C style={{height:48}}/>
618
- </G>
613
+ </J>
614
+ </C>;let U=null;if(v==="apis")U=<J style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
619
615
 
620
-
621
- {J==="module"&&<C style={{paddingHorizontal:16,paddingTop:12,paddingBottom:er.OS==="ios"?36:24,backgroundColor:e.primaryLight,borderTopWidth:1,borderTopColor:e.dividerColor,flexDirection:"row",alignItems:"center",gap:12,shadowColor:e.black,shadowOpacity:.08,shadowRadius:8,shadowOffset:{width:0,height:-3},elevation:8}}>
622
- <C style={{flex:1}}>
623
- <T style={{fontFamily:S.interBold,fontSize:13,lineHeight:17,color:e.primaryBlack}}>
624
- {Qe} of {$.length} Modules Active
625
- </T>
626
- <T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:X?e.purple:e.grayText,marginTop:1}}>
627
- {w(X?"settings.unsavedPending":"settings.allSynchronized")}
628
- </T>
616
+
617
+ <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16,gap:12}}>
618
+ <C style={{flexDirection:"row",alignItems:"flex-start",justifyContent:"space-between",gap:8}}>
619
+ <C style={{flexDirection:"row",alignItems:"center",gap:8,flex:1}}>
620
+ <Ce color={e.purple}size={16}/>
621
+ <C style={{flex:1}}>
622
+ <T style={{fontFamily:S.interBold,fontSize:13.5,lineHeight:18,color:e.primaryBlack}}>
623
+ {w("settings.apis.hideUrlRegexTitle","Hidden URL Filters (Regex)")}
624
+ </T>
625
+ <T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayTextWeak,marginTop:2}}>
626
+ {w("settings.apis.hideUrlRegexDesc","Hide matching URLs from Network list and search results (calls will still execute normally).")}
627
+ </T>
628
+ </C>
629
+ </C>
630
+ {ee.length>0&&<V onPress={()=>{D("light"),Ke([...er]),B(w("settings.apis.resetFilterToast","Reset to default URL filters"))}}hitSlop={8}style={{paddingHorizontal:8,paddingVertical:4.5,borderRadius:6,backgroundColor:`${e.purple}14`,borderWidth:1,borderColor:`${e.purple}33`,alignSelf:"flex-start"}}>
631
+ <T style={{fontFamily:S.interSemiBold,fontSize:10,lineHeight:13,color:e.purple}}>
632
+ {w("common.resetDefaults","Reset Defaults")}
633
+ </T>
634
+ </V>}
629
635
  </C>
630
636
 
631
- <B accessible={!0}accessibilityRole="button"accessibilityLabel="Save Changes"onPress={wo}style={{flexDirection:"row",alignItems:"center",gap:6,backgroundColor:X?e.purple:`${e.purple}22`,paddingHorizontal:18,paddingVertical:10,borderRadius:10}}>
632
- <_ size={14}color={X?e.white:e.purple}/>
633
- <T style={{fontFamily:S.interBold,fontSize:13,lineHeight:17,color:X?e.white:e.purple}}>
634
- {w("settings.saveChanges")}
635
- </T>
636
- </B>
637
- </C>}
638
- </C>;let K=null;A==="apis"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
637
+
638
+ <C style={{flexDirection:"row",alignItems:"center",gap:8,backgroundColor:e.grayBackground,borderRadius:10,borderWidth:1,borderColor:e.grayBorderSecondary,paddingHorizontal:10,paddingVertical:Ur.OS==="ios"?8:4}}>
639
+ <Io size={14}color={e.grayTextWeak}/>
640
+ <_r style={{flex:1,fontFamily:S.interMedium,fontSize:12,lineHeight:16,color:e.primaryBlack,padding:0}}placeholder={w("settings.apis.addPatternPlaceholder","e.g. https://api.example.com or .*analytics.*")}placeholderTextColor={e.grayTextWeak}value={We}onChangeText={vr}autoCapitalize="none"autoCorrect={!1}onSubmitEditing={Or}returnKeyType="done"/>
641
+ <V onPress={Or}disabled={!We.trim()}style={{paddingHorizontal:10,paddingVertical:5.5,borderRadius:7,backgroundColor:We.trim()?e.purple:`${e.purple}33`}}>
642
+ <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.white}}>
643
+ {w("common.add","+ Add")}
644
+ </T>
645
+ </V>
646
+ </C>
647
+
648
+
649
+ <C style={{gap:6}}>
650
+ {ee.map((r,R)=>{const I=er.includes(r);return<C key={`${r}-${R}`}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:I?`${e.slate200}44`:e.grayBackground,borderRadius:8,paddingHorizontal:10,paddingVertical:7,borderWidth:1,borderColor:I?`${e.grayBorderSecondary}`:e.grayBorderSecondary,gap:8}}>
651
+ <C style={{flexDirection:"row",alignItems:"center",gap:6,flex:1,minWidth:0}}>
652
+ <C style={{paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,backgroundColor:I?`${e.blue500}18`:`${e.purple}1F`}}>
653
+ <T style={{fontFamily:S.interBold,fontSize:9,lineHeight:11,color:I?e.blue600:e.purple}}>
654
+ {I?"DEFAULT":"CUSTOM"}
655
+ </T>
656
+ </C>
657
+ <T style={{fontFamily:S.interMedium,fontSize:11.5,lineHeight:15,color:I?e.grayTextStrong:e.primaryBlack,flex:1}}numberOfLines={1}ellipsizeMode="middle">
658
+ {r}
659
+ </T>
660
+ </C>
661
+ {I?<C style={{padding:5,borderRadius:5,backgroundColor:`${e.grayTextWeak}18`,alignItems:"center",justifyContent:"center"}}>
662
+ <Kt size={12}color={e.grayTextWeak}/>
663
+ </C>:<V onPress={()=>bt(R)}hitSlop={8}style={{padding:5,borderRadius:5,backgroundColor:`${e.errorColor}14`}}>
664
+ <O size={12}color={e.errorColor}/>
665
+ </V>}
666
+ </C>})}
667
+ {ee.length===0&&<T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayTextWeak,textAlign:"center",paddingVertical:8}}>
668
+ {w("settings.apis.noFiltersActive","No URL filters active. All URLs will be displayed.")}
669
+ </T>}
670
+ </C>
671
+ </C>
639
672
 
673
+
640
674
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
641
- {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.apis.clearNetworkLogs"),description:w("settings.apis.clearNetworkLogsDescription",{count:Te.length}),isLast:!0,onPress:()=>{Fo(),ao(null),N.alert(w("common.success"),w("settings.apis.networkLogsCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
675
+ {F({icon:<O color={e.errorColor}size={16}/>,label:w("settings.apis.clearNetworkLogs"),description:w("settings.apis.clearNetworkLogsDescription",{count:Ue.length}),isLast:!0,onPress:()=>{Bt(),ot(null),j.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`}}>
642
676
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
643
677
  {w("common.clear")}
644
678
  </T>
645
679
  </C>})}
646
680
  </C>
647
681
  <C style={{height:48}}/>
648
- </G>:A==="logs"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
682
+ </J>;else if(v==="logs")U=<J style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
649
683
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
650
- {F({icon:<Rr color={e.purple}size={16}/>,label:w("settings.logs.maxConsoleLogs"),description:w("settings.logs.maxConsoleLogsDescription"),numericInput:{value:Be,onChange:ro,min:10,max:100,placeholder:"Enter max logs (10-100)"}})}
684
+ {F({icon:<So color={e.purple}size={16}/>,label:w("settings.logs.maxConsoleLogs"),description:w("settings.logs.maxConsoleLogsDescription"),numericInput:{value:Rr,onChange:Ko,min:10,max:100,placeholder:"Enter max logs (10-100)"}})}
651
685
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
652
686
  <T style={{fontFamily:S.interBold,fontSize:13,lineHeight:17,color:e.primaryBlack,paddingTop:6}}>
653
687
  {w("settings.logs.logLevels")}
654
688
  </T>
655
- {["info","warn","error"].map(r=>{const V=Yr?.[r],D=r==="error"?e.errorColor:r==="warn"?e.warningIconGold:e.skyBlue,v=w(r==="info"?"settings.logs.showInfo":r==="warn"?"settings.logs.showWarn":"settings.logs.showError"),M=w(r==="info"?"settings.logs.showInfoDesc":r==="warn"?"settings.logs.showWarnDesc":"settings.logs.showErrorDesc");return F({icon:<C style={{width:12,height:12,borderRadius:6,backgroundColor:D}}/>,label:v,description:M,isLast:r==="error",onPress:()=>Zr(I=>({...I,[r]:!I[r]})),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:V?e.purple:e.grayTextWeak,backgroundColor:V?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
656
- {V&&<_ size={12}color={e.purple}/>}
689
+ {["info","warn","error"].map(r=>{const R=qo?.[r],I=r==="error"?e.errorColor:r==="warn"?e.warningIconGold:e.skyBlue,P=w(r==="info"?"settings.logs.showInfo":r==="warn"?"settings.logs.showWarn":"settings.logs.showError"),E=w(r==="info"?"settings.logs.showInfoDesc":r==="warn"?"settings.logs.showWarnDesc":"settings.logs.showErrorDesc");return F({icon:<C style={{width:12,height:12,borderRadius:6,backgroundColor:I}}/>,label:P,description:E,isLast:r==="error",onPress:()=>Yo(z=>({...z,[r]:!z[r]})),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:R?e.purple:e.grayTextWeak,backgroundColor:R?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
690
+ {R&&<Se size={12}color={e.purple}/>}
657
691
  </C>})})}
658
692
  </C>
659
693
 
@@ -679,74 +713,141 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
679
713
  </C>
680
714
  </C>
681
715
 
682
- <B accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle show duplicate logs"accessibilityState={{checked:ke}}onPress={()=>Qr(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:ke?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:ke?"flex-end":"flex-start"}}>
716
+ <V accessible={!0}accessibilityRole="switch"accessibilityLabel="Toggle show duplicate logs"accessibilityState={{checked:Ne}}onPress={()=>_o(r=>!r)}style={{width:42,height:24,borderRadius:12,backgroundColor:Ne?e.purple:e.grayBorderSecondary,padding:2,justifyContent:"center",alignItems:Ne?"flex-end":"flex-start"}}>
683
717
  <C style={{width:20,height:20,borderRadius:10,backgroundColor:e.white,shadowColor:e.black,shadowOpacity:.18,shadowRadius:2,shadowOffset:{width:0,height:1}}}/>
684
- </B>
718
+ </V>
685
719
  </C>
686
720
  </C>
687
721
 
688
722
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
689
- {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.logs.clearConsoleLogs"),description:w("settings.logs.clearConsoleLogsDescription",{count:Ve.length}),isLast:!0,onPress:()=>{Io(),N.alert(w("common.success"),w("settings.logs.consoleLogsCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
723
+ {F({icon:<O color={e.errorColor}size={16}/>,label:w("settings.logs.clearConsoleLogs"),description:w("settings.logs.clearConsoleLogsDescription",{count:Ge.length}),isLast:!0,onPress:()=>{Ft(),j.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`}}>
690
724
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
691
725
  {w("common.clear")}
692
726
  </T>
693
727
  </C>})}
694
728
  </C>
695
729
  <C style={{height:48}}/>
696
- </G>:A==="analytics"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
730
+ </J>;else if(v==="analytics")U=<J style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
697
731
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary}}>
698
- {F({icon:<Fr color={e.purple}size={16}/>,label:w("settings.analytics.maxAnalyticsEvents"),description:w("settings.analytics.maxAnalyticsEventsDescription",{count:ze.length}),numericInput:{value:Oe,onChange:oo,min:10,max:75,placeholder:"Enter max events (10-75)"},isLast:!0})}
732
+ {F({icon:<To color={e.purple}size={16}/>,label:w("settings.analytics.maxAnalyticsEvents"),description:w("settings.analytics.maxAnalyticsEventsDescription",{count:_e.length}),numericInput:{value:Vr,onChange:Qo,min:10,max:75,placeholder:"Enter max events (10-75)"},isLast:!0})}
699
733
  </C>
700
734
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
701
- {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.analytics.clearAnalyticsEvents"),description:w("settings.analytics.clearAnalyticsEventsDescription"),isLast:!0,onPress:()=>{Ho(),no(null),N.alert(w("common.success"),w("settings.analytics.analyticsEventsCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
735
+ {F({icon:<O color={e.errorColor}size={16}/>,label:w("settings.analytics.clearAnalyticsEvents"),description:w("settings.analytics.clearAnalyticsEventsDescription"),isLast:!0,onPress:()=>{It(),tt(null),j.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`}}>
702
736
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
703
737
  {w("common.clear")}
704
738
  </T>
705
739
  </C>})}
706
740
  </C>
707
741
  <C style={{height:48}}/>
708
- </G>:A==="redux"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
742
+ </J>;else if(v==="redux")U=<J style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
709
743
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
710
- {F({icon:<Hr color={e.purple}size={16}/>,label:w("settings.redux.autoRefresh"),description:w("settings.redux.autoRefreshDescription"),onPress:()=>io(r=>!r),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:Fe?e.purple:e.grayTextWeak,backgroundColor:Fe?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
711
- {Fe&&<_ size={12}color={e.purple}/>}
744
+ {F({icon:<Vo color={e.purple}size={16}/>,label:w("settings.redux.autoRefresh"),description:w("settings.redux.autoRefreshDescription"),onPress:()=>Zo(r=>!r),right:<C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:qe?e.purple:e.grayTextWeak,backgroundColor:qe?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
745
+ {qe&&<Se size={12}color={e.purple}/>}
712
746
  </C>})}
713
747
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
714
- {F({icon:<Y color={e.purple}size={16}/>,label:w("settings.redux.defaultJsonExpandDepth"),description:w("settings.redux.defaultJsonExpandDepthDescription"),picker:{options:[1,2,3,5],selectedValue:Me,onSelect:lo},isLast:!0})}
748
+ {F({icon:<X color={e.purple}size={16}/>,label:w("settings.redux.defaultJsonExpandDepth"),description:w("settings.redux.defaultJsonExpandDepthDescription"),picker:{options:[1,2,3,5],selectedValue:et,onSelect:rt},isLast:!0})}
715
749
  </C>
716
750
 
717
751
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
718
- {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.redux.clearReduxState"),description:w(re?"settings.redux.clearReduxStateDescription":"settings.redux.clearReduxStateEmpty"),isLast:!0,onPress:()=>{so(null),N.alert(w("common.success"),w("settings.redux.reduxStateCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
752
+ {F({icon:<O color={e.errorColor}size={16}/>,label:w("settings.redux.clearReduxState"),description:w(Ve?"settings.redux.clearReduxStateDescription":"settings.redux.clearReduxStateEmpty"),isLast:!0,onPress:()=>{it(null),j.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`}}>
719
753
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
720
754
  {w("common.clear")}
721
755
  </T>
722
756
  </C>})}
723
757
  </C>
724
758
  <C style={{height:48}}/>
725
- </G>:A==="crash"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
759
+ </J>;else if(v==="crash"){const r=!!H?.js&&!H?.native&&!!H?.render&&!H?.promise&&!H?.custom,R=!H?.js&&!H?.native&&!H?.render&&!H?.promise&&!H?.custom,I=!!H?.js&&!!H?.native&&!!H?.render&&!!H?.promise&&!!H?.custom,P=["js","native","render","promise","custom"].filter(z=>!H?.[z]).length,E=[{key:"js",label:w("settings.crash.ignoreJs","Ignore JS Runtime Crashes"),desc:w("settings.crash.ignoreJsDesc","Bypasses unhandled JS runtime exceptions, TypeError, SyntaxError & ErrorUtils"),icon:<Gt size={16}color={e.yellow400}/>},{key:"native",label:w("settings.crash.ignoreNative","Ignore Native Platform Crashes"),desc:w("settings.crash.ignoreNativeDesc","Bypasses iOS Mach-O signals, SIGSEGV, NullPointerException & ExceptionsManager"),icon:<_t size={16}color={e.cyan600}/>},{key:"render",label:w("settings.crash.ignoreRender","Ignore React Render Errors"),desc:w("settings.crash.ignoreRenderDesc","Bypasses React component tree render failures & ErrorBoundary"),icon:<Jt size={16}color={e.purple400}/>},{key:"promise",label:w("settings.crash.ignorePromise","Ignore Promise Rejections"),desc:w("settings.crash.ignorePromiseDesc","Bypasses unhandled asynchronous Promise rejections"),icon:<Yt size={16}color={e.amber400}/>},{key:"custom",label:w("settings.crash.ignoreCustom","Ignore Custom Recorded Errors"),desc:w("settings.crash.ignoreCustomDesc","Bypasses manual recordCustomCrash exceptions & telemetry triggers"),icon:<Io size={16}color={e.emerald400}/>}];U=<J style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:14}}showsVerticalScrollIndicator={!1}>
760
+
761
+ <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
762
+ <C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
763
+ <C style={{flexDirection:"row",alignItems:"center",gap:8}}>
764
+ <Fo size={16}color={e.purple}/>
765
+ <T style={{fontFamily:S.interBold,fontSize:12.5,letterSpacing:.5,color:e.purple}}>
766
+ {w("settings.crash.governancePresets","GOVERNANCE PRESETS")}
767
+ </T>
768
+ </C>
769
+ <C style={{paddingHorizontal:8,paddingVertical:3,borderRadius:6,backgroundColor:`${e.purple}14`}}>
770
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:e.purple}}>
771
+ {P} / 5 PROTECTED
772
+ </T>
773
+ </C>
774
+ </C>
775
+
776
+
777
+ <C style={{flexDirection:"row",gap:8}}>
778
+ <V onPress={()=>Be("balanced")}style={{flex:1,paddingVertical:10,paddingHorizontal:6,borderRadius:10,borderWidth:1.5,borderColor:r?e.purple:e.grayBorderSecondary,backgroundColor:r?`${e.purple}12`:e.grayBackground,alignItems:"center",gap:4}}>
779
+ <Nt size={16}color={r?e.purple:e.grayText}/>
780
+ <T style={{fontFamily:S.interBold,fontSize:11,color:r?e.purple:e.primaryBlack}}>
781
+ {w("settings.crash.presetBalanced","Balanced")}
782
+ </T>
783
+ </V>
784
+
785
+ <V onPress={()=>Be("max_shield")}style={{flex:1,paddingVertical:10,paddingHorizontal:6,borderRadius:10,borderWidth:1.5,borderColor:R?e.greenColor:e.grayBorderSecondary,backgroundColor:R?`${e.greenColor}12`:e.grayBackground,alignItems:"center",gap:4}}>
786
+ <Fo size={16}color={R?e.greenColor:e.grayText}/>
787
+ <T style={{fontFamily:S.interBold,fontSize:11,color:R?e.greenColor:e.primaryBlack}}>
788
+ {w("settings.crash.presetMaxShield","Max Shield")}
789
+ </T>
790
+ </V>
791
+
792
+ <V onPress={()=>Be("silent")}style={{flex:1,paddingVertical:10,paddingHorizontal:6,borderRadius:10,borderWidth:1.5,borderColor:I?e.grayTextWeak:e.grayBorderSecondary,backgroundColor:I?`${e.grayTextWeak}1A`:e.grayBackground,alignItems:"center",gap:4}}>
793
+ <Ut size={16}color={I?e.grayText:e.grayTextWeak}/>
794
+ <T style={{fontFamily:S.interBold,fontSize:11,color:I?e.grayText:e.primaryBlack}}>
795
+ {w("settings.crash.presetSilent","Silent Mode")}
796
+ </T>
797
+ </V>
798
+ </C>
799
+
800
+ <T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayText}}>
801
+ {r?w("settings.crash.presetBalancedDesc","Recommended: Native & Promise protected; JS & Render ignored for clean dev workflow"):R?w("settings.crash.presetMaxShieldDesc","100% Protection: Intercepts & captures all 5 error categories"):I?w("settings.crash.presetSilentDesc","Bypasses all error modals & badges for screencasts & clean demos"):w("settings.crash.categoryMatrix","Customized rule matrix actively configured below")}
802
+ </T>
803
+ </C>
804
+
805
+
806
+ <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
807
+ <T style={{fontFamily:S.interBold,fontSize:12.5,letterSpacing:.5,color:e.purple,marginBottom:4}}>
808
+ {w("settings.crash.categoryMatrix","ERROR INTERCEPTION & IGNORED CATEGORIES")}
809
+ </T>
810
+
811
+ {E.map((z,$)=>{const G=!!H?.[z.key],oe=$===E.length-1;return F({key:z.key,icon:z.icon,label:z.label,description:z.desc,isLast:oe,onPress:()=>{lt(Nr=>({...Nr,[z.key]:!Nr[z.key]}))},right:<C style={{flexDirection:"row",alignItems:"center",gap:8}}>
812
+ <C style={{paddingHorizontal:6,paddingVertical:2.5,borderRadius:5,backgroundColor:G?`${e.warningIconGold}18`:`${e.greenColor}18`}}>
813
+ <T style={{fontFamily:S.interBold,fontSize:9.5,color:G?e.warningIconGold:e.greenColor}}>
814
+ {G?w("settings.crash.ignoredBadge","IGNORED"):w("settings.crash.protectedBadge","PROTECTED")}
815
+ </T>
816
+ </C>
817
+ <C style={{width:22,height:22,borderRadius:6,borderWidth:2,borderColor:G?e.purple:e.grayTextWeak,backgroundColor:G?`${e.purple}1A`:"transparent",alignItems:"center",justifyContent:"center"}}>
818
+ {G&&<Se size={12}color={e.purple}/>}
819
+ </C>
820
+ </C>})})}
821
+ </C>
822
+
823
+
824
+ <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary}}>
825
+ {F({icon:<Bo color={e.purple}size={16}/>,label:w("settings.crash.modalTriggerTitle","Modal Alert Display Policy"),description:w("settings.crash.modalTriggerDesc","Configure when the full-screen diagnostic modal appears"),isLast:!0,picker:{options:["fatal_only","all_errors","silent_tab_only"],selectedValue:at||"fatal_only",onSelect:z=>Fr(z),formatLabel:z=>z==="fatal_only"?w("settings.crash.policyFatalOnly","Fatal Only"):z==="all_errors"?w("settings.crash.policyAllErrors","All Caught"):w("settings.crash.policySilent","Silent Only")}})}
826
+ </C>
827
+
828
+
726
829
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
727
- {F({icon:<Y color={e.purple}size={16}/>,label:w("settings.crash.maxCrashLogs"),description:w("settings.crash.maxCrashLogsDesc"),numericInput:{value:Ee,onChange:co,min:5,max:50,placeholder:"Enter max crashes (5-50)"}})}
830
+ {F({icon:<X color={e.purple}size={16}/>,label:w("settings.crash.maxCrashLogs","Max Crash Logs Buffer"),description:w("settings.crash.maxCrashLogsDesc","How many crash records to preserve in history (5-100)"),numericInput:{value:zr,onChange:Br,min:5,max:100,placeholder:"Enter max crashes (5-100)"}})}
728
831
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
729
- {F({icon:<Dr color={e.greenColor}size={16}/>,label:w("settings.crash.globalGuard"),description:w("settings.crash.globalGuardDesc"),isLast:!0,right:<C style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${e.greenColor}1F`}}>
730
- <T style={{fontFamily:S.interBold,fontSize:10,lineHeight:13,color:e.greenColor}}>
731
- {w("settings.protectedBadge")}
832
+ {F({icon:<Qt color={e.purple}size={16}/>,label:w("settings.crash.resetDefaults","Reset to Defaults"),description:w("settings.crash.resetDefaultsDesc","Restore recommended balanced crash protection settings"),onPress:()=>{Be("balanced"),Br(50),Fr("fatal_only"),j.alert(w("common.success","Success"),w("settings.crash.resetDefaultsDesc","Restore recommended balanced crash protection settings"))},right:<C style={{paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:`${e.purple}14`,borderWidth:1,borderColor:`${e.purple}33`}}>
833
+ <T style={{fontFamily:S.interBold,fontSize:11,color:e.purple}}>
834
+ {w("settings.reset","Reset")}
732
835
  </T>
733
836
  </C>})}
734
- </C>
735
-
736
- <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
737
- {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.crash.clearHistory"),description:w("settings.crash.clearHistoryDesc",{count:oe?.length||0}),isLast:!0,onPress:()=>{Do(),N.alert(w("common.success"),w("settings.crash.historyCleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
837
+ <C style={{height:1,backgroundColor:e.dividerColor}}/>
838
+ {F({icon:<O color={e.errorColor}size={16}/>,label:w("settings.crash.clearHistory","Clear Crash History"),description:w("settings.crash.clearHistoryDesc",{count:ze?.length||0}),isLast:!0,onPress:()=>{Dt(),j.alert(w("common.success","Success"),w("settings.crash.historyCleared","Crash logs cleared."))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
738
839
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
739
- {w("common.clear")}
840
+ {w("common.clear","Clear")}
740
841
  </T>
741
842
  </C>})}
742
843
  </C>
743
844
  <C style={{height:48}}/>
744
- </G>:A==="push"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
845
+ </J>}else v==="push"?U=<J style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
745
846
 
746
847
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
747
- {F({icon:<Y color={e.purple}size={16}/>,label:"Max Push Notification Logs",description:"Buffer size limit for recorded push payloads (10-200)",numericInput:{value:go,onChange:po,min:10,max:200,placeholder:"Enter max logs (10-200)"}})}
848
+ {F({icon:<X color={e.purple}size={16}/>,label:"Max Push Notification Logs",description:"Buffer size limit for recorded push payloads (10-200)",numericInput:{value:nt,onChange:st,min:10,max:200,placeholder:"Enter max logs (10-200)"}})}
748
849
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
749
- {F({icon:<Er color={e.greenColor}size={16}/>,label:"Universal Ingestion Engine",description:"Captures any push domain (Salesforce, FCM, APNs, Expo, Braze, Custom)",isLast:!0,right:<C style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${e.greenColor}1F`}}>
850
+ {F({icon:<Ao 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`}}>
750
851
  <T style={{fontFamily:S.interBold,fontSize:10,lineHeight:13,color:e.greenColor}}>
751
852
  ACTIVE
752
853
  </T>
@@ -756,54 +857,54 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
756
857
 
757
858
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:8}}>
758
859
  <C style={{flexDirection:"row",alignItems:"center",gap:6,marginBottom:4}}>
759
- <We size={13}color={e.amber500}/>
860
+ <Sr size={13}color={e.amber500}/>
760
861
  <T style={{fontFamily:S.interBold,fontSize:12,color:e.primaryBlack}}>
761
862
  {w("settings.simulatePushTitle","SIMULATE TEST PUSH NOTIFICATIONS")}
762
863
  </T>
763
864
  </C>
764
865
 
765
866
  <C style={{flexDirection:"row",flexWrap:"wrap",gap:6}}>
766
- <B onPress={()=>{ie("salesforce"),H(w("settings.simulator.salesforce","Simulated Salesforce Marketing Cloud push"))}}style={{backgroundColor:`${e.sky600}14`,borderColor:`${e.sky600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
867
+ <V onPress={()=>{Ie("salesforce"),B(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}}>
767
868
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.sky600}}>
768
869
  + Salesforce MC
769
870
  </T>
770
- </B>
871
+ </V>
771
872
 
772
- <B onPress={()=>{ie("fcm"),H(w("settings.simulator.fcm","Simulated Firebase FCM push"))}}style={{backgroundColor:`${e.darkOrange}14`,borderColor:`${e.darkOrange}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
873
+ <V onPress={()=>{Ie("fcm"),B(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}}>
773
874
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.darkOrange}}>
774
875
  + Firebase FCM
775
876
  </T>
776
- </B>
877
+ </V>
777
878
 
778
- <B onPress={()=>{ie("apns"),H(w("settings.simulator.apns","Simulated Apple APNs push"))}}style={{backgroundColor:`${e.primaryBlack}10`,borderColor:`${e.primaryBlack}25`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
879
+ <V onPress={()=>{Ie("apns"),B(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}}>
779
880
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.primaryBlack}}>
780
881
  + Apple APNs
781
882
  </T>
782
- </B>
883
+ </V>
783
884
 
784
- <B onPress={()=>{ie("deeplink"),H(w("settings.simulator.deepLink","Simulated Deep Link push"))}}style={{backgroundColor:`${e.brandPurple}14`,borderColor:`${e.brandPurple}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
885
+ <V onPress={()=>{Ie("deeplink"),B(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}}>
785
886
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.brandPurple}}>
786
887
  + Deep Link
787
888
  </T>
788
- </B>
889
+ </V>
789
890
  </C>
790
891
  </C>
791
892
 
792
893
 
793
894
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
794
- {F({icon:<U color={e.errorColor}size={16}/>,label:w("push.clearTitle","Clear Push History"),description:`Permanently remove all ${te?.length||0} recorded notifications`,isLast:!0,onPress:()=>{uo(),N.alert(w("common.success","Success"),w("settings.pushHistoryCleared","Push notification history cleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
895
+ {F({icon:<O color={e.errorColor}size={16}/>,label:w("push.clearTitle","Clear Push History"),description:`Permanently remove all ${Fe?.length||0} recorded notifications`,isLast:!0,onPress:()=>{dt(),j.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`}}>
795
896
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
796
897
  {w("common.clear")}
797
898
  </T>
798
899
  </C>})}
799
900
  </C>
800
901
  <C style={{height:48}}/>
801
- </G>:A==="socket"?K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
902
+ </J>:v==="socket"?U=<J style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
802
903
 
803
904
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:4}}>
804
- {F({icon:<Y color={e.purple}size={16}/>,label:"Max WebSocket Connections",description:"Ring buffer limit for active & closed socket sessions (10-200)",numericInput:{value:yo,onChange:ho,min:10,max:200,placeholder:"Enter max sockets (10-200)"}})}
905
+ {F({icon:<X color={e.purple}size={16}/>,label:"Max WebSocket Connections",description:"Ring buffer limit for active & closed socket sessions (10-200)",numericInput:{value:ct,onChange:gt,min:10,max:200,placeholder:"Enter max sockets (10-200)"}})}
805
906
  <C style={{height:1,backgroundColor:e.dividerColor}}/>
806
- {F({icon:<Nr color={e.greenColor}size={16}/>,label:"Global WebSocket Interceptor",description:"Automatic capture for WebSocket, WSS & Socket.IO traffic",isLast:!0,right:<C style={{paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:`${e.greenColor}1F`}}>
907
+ {F({icon:<Eo 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`}}>
807
908
  <T style={{fontFamily:S.interBold,fontSize:10,lineHeight:13,color:e.greenColor}}>
808
909
  ACTIVE
809
910
  </T>
@@ -813,65 +914,65 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
813
914
 
814
915
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:8}}>
815
916
  <C style={{flexDirection:"row",alignItems:"center",gap:6,marginBottom:4}}>
816
- <We size={13}color={e.amber500}/>
917
+ <Sr size={13}color={e.amber500}/>
817
918
  <T style={{fontFamily:S.interBold,fontSize:12,color:e.primaryBlack}}>
818
919
  {w("settings.simulateSocketTitle","SIMULATE TEST SOCKET CONNECTIONS")}
819
920
  </T>
820
921
  </C>
821
922
 
822
923
  <C style={{flexDirection:"row",flexWrap:"wrap",gap:6}}>
823
- <B onPress={()=>{ae("chat"),H(w("settings.simulator.chat","Simulated Real-time Chat WebSocket session"))}}style={{backgroundColor:`${e.blue600}14`,borderColor:`${e.blue600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
924
+ <V onPress={()=>{$e("chat"),B(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}}>
824
925
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.blue600}}>
825
926
  + Chat Room (WS)
826
927
  </T>
827
- </B>
928
+ </V>
828
929
 
829
- <B onPress={()=>{ae("crypto"),H(w("settings.simulator.crypto","Simulated Binance Crypto Ticker stream"))}}style={{backgroundColor:`${e.emerald600}14`,borderColor:`${e.emerald600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
930
+ <V onPress={()=>{$e("crypto"),B(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}}>
830
931
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.emerald600}}>
831
932
  + Crypto Feed (WSS)
832
933
  </T>
833
- </B>
934
+ </V>
834
935
 
835
- <B onPress={()=>{ae("socketio"),H(w("settings.simulator.socketio","Simulated Socket.IO v4 session"))}}style={{backgroundColor:`${e.violet600}14`,borderColor:`${e.violet600}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
936
+ <V onPress={()=>{$e("socketio"),B(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}}>
836
937
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.violet600}}>
837
938
  + Socket.IO Room
838
939
  </T>
839
- </B>
940
+ </V>
840
941
 
841
- <B onPress={()=>{ae("echo"),H(w("settings.simulator.echo","Simulated WebSocket Echo test"))}}style={{backgroundColor:`${e.brandPurple}14`,borderColor:`${e.brandPurple}33`,borderWidth:1,paddingHorizontal:10,paddingVertical:6,borderRadius:8}}>
942
+ <V onPress={()=>{$e("echo"),B(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}}>
842
943
  <T style={{fontSize:11,fontFamily:S.interSemiBold,color:e.brandPurple}}>
843
944
  + Echo Test
844
945
  </T>
845
- </B>
946
+ </V>
846
947
  </C>
847
948
  </C>
848
949
 
849
950
 
850
951
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
851
- {F({icon:<U color={e.errorColor}size={16}/>,label:w("socket.clearTitle","Clear All WebSocket Logs").replace("All WebSocket Logs","Socket History"),description:`Permanently remove all ${le?.length||0} recorded sessions`,isLast:!0,onPress:()=>{bo(),N.alert(w("common.success","Success"),w("settings.socketHistoryCleared","WebSocket history cleared"))},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
952
+ {F({icon:<O color={e.errorColor}size={16}/>,label:w("socket.clearTitle","Clear All WebSocket Logs").replace("All WebSocket Logs","Socket History"),description:`Permanently remove all ${De?.length||0} recorded sessions`,isLast:!0,onPress:()=>{pt(),j.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`}}>
852
953
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
853
954
  {w("common.clear")}
854
955
  </T>
855
956
  </C>})}
856
957
  </C>
857
958
  <C style={{height:48}}/>
858
- </G>:A==="media"&&(K=<G style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
959
+ </J>:v==="media"&&(U=<J style={{flex:1}}contentContainerStyle={{padding:16,paddingBottom:100,gap:12}}>
859
960
 
860
961
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:8}}>
861
962
  <C style={{flexDirection:"row",alignItems:"center",gap:6,marginBottom:4}}>
862
- <We size={13}color={e.amber500}/>
963
+ <Sr size={13}color={e.amber500}/>
863
964
  <T style={{fontFamily:S.interBold,fontSize:12,color:e.primaryBlack}}>
864
965
  {w("settings.directCaptureShortcuts","DIRECT CAPTURE SHORTCUTS")}
865
966
  </T>
866
967
  </C>
867
968
 
868
969
  <C style={{flexDirection:"row",flexWrap:"wrap",gap:8}}>
869
- <B onPress={async()=>{L("light"),await Pe.takeScreenshot({format:Ie.toLowerCase(),quality:.9,hideInspector:P})&&(L("success"),H(w("settings.simulator.screenshotSaved","Screenshot captured and saved!")))}}style={{backgroundColor:`${e.purple}14`,borderColor:`${e.purple}33`,borderWidth:1,paddingHorizontal:12,paddingVertical:7,borderRadius:8,flexDirection:"row",alignItems:"center",gap:6}}>
870
- <Se color={e.purple}size={14}/>
970
+ <V onPress={async()=>{D("light"),await kr.takeScreenshot({format:Ye.toLowerCase(),quality:.9,hideInspector:L})&&(D("success"),B(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}}>
971
+ <Te color={e.purple}size={14}/>
871
972
  <T style={{fontSize:11,fontFamily:S.interBold,color:e.purple}}>
872
973
  Take Screenshot
873
974
  </T>
874
- </B>
975
+ </V>
875
976
  </C>
876
977
  </C>
877
978
 
@@ -879,7 +980,7 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
879
980
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
880
981
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
881
982
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
882
- <Se color={e.purple}size={16}/>
983
+ <Te color={e.purple}size={16}/>
883
984
  </C>
884
985
  <C style={{flex:1}}>
885
986
  <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
@@ -891,26 +992,26 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
891
992
  </C>
892
993
  </C>
893
994
 
894
- {F({icon:<Mr color={e.purple}size={16}/>,label:w("settings.media.imageFormat","Image Format"),description:w("settings.media.imageFormatDesc","Export formats (PNG lossless, JPEG lossy, WebP)"),right:<C style={{flexDirection:"row",gap:5}}>
895
- {["png","jpeg","webp"].map(r=>{const V=Ie===r;return<B key={r}onPress={()=>{L("light"),Ne(r),H(`Screenshot format: ${r.toUpperCase()}`)}}style={{paddingHorizontal:9,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
896
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
995
+ {F({icon:<Lo 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}}>
996
+ {["png","jpeg","webp"].map(r=>{const R=Ye===r;return<V key={r}onPress={()=>{D("light"),Ir(r),B(`Screenshot format: ${r.toUpperCase()}`)}}style={{paddingHorizontal:9,paddingVertical:5,borderRadius:7,backgroundColor:R?e.purple:`${e.purple}14`,borderWidth:1,borderColor:R?e.purple:`${e.purple}2E`}}>
997
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:R?e.white:e.purple}}>
897
998
  {r.toUpperCase()}
898
999
  </T>
899
- </B>})}
1000
+ </V>})}
900
1001
  </C>})}
901
1002
 
902
- {F({icon:<Ce color={e.purple}size={16}/>,label:w("settings.media.autoHide","Auto-Hide Inspector During Capture"),description:w("settings.media.autoHideDesc","Temporarily hides the inspector overlay during screen capture"),isLast:!0,onPress:()=>{L("light"),ne(r=>!r),H(`Auto-hide overlay: ${P?"OFF":"ON"}`)},right:<B onPress={()=>{L("light"),ne(r=>!r),H(`Auto-hide overlay: ${P?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:P?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:P?`${e.emerald500}4D`:`${e.grayText}33`}}>
903
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:P?e.emerald500:e.grayText}}>
904
- {P?w("settings.media.enabled","ON"):"OFF"}
1003
+ {F({icon:<Ce color={e.purple}size={16}/>,label:w("settings.media.autoHide","Auto-Hide Inspector During Capture"),description:w("settings.media.autoHideDesc","Temporarily hides the inspector overlay during screen capture"),isLast:!0,onPress:()=>{D("light"),He(r=>!r),B(`Auto-hide overlay: ${L?"OFF":"ON"}`)},right:<V onPress={()=>{D("light"),He(r=>!r),B(`Auto-hide overlay: ${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`}}>
1004
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:L?e.emerald500:e.grayText}}>
1005
+ {L?w("settings.media.enabled","ON"):"OFF"}
905
1006
  </T>
906
- </B>})}
1007
+ </V>})}
907
1008
  </C>
908
1009
 
909
1010
 
910
1011
  <C style={{backgroundColor:e.primaryLight,padding:16,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,gap:12}}>
911
1012
  <C style={{flexDirection:"row",alignItems:"center",gap:10}}>
912
1013
  <C style={{width:36,height:36,borderRadius:10,backgroundColor:e.purpleShade50,alignItems:"center",justifyContent:"center"}}>
913
- <Pr color={e.purple}size={16}/>
1014
+ <Cr color={e.purple}size={16}/>
914
1015
  </C>
915
1016
  <C style={{flex:1}}>
916
1017
  <T style={{fontFamily:S.interBold,fontSize:14,lineHeight:18,color:e.primaryBlack}}>
@@ -922,49 +1023,49 @@ import{useMemo as he,useState as be,useEffect as ve,useRef as ko}from"react";imp
922
1023
  </C>
923
1024
  </C>
924
1025
 
925
- {F({icon:<Ar color={e.purple}size={16}/>,label:w("settings.media.audioMode","Audio Source"),description:w("settings.media.audioModeDesc","Record video with muted, app audio, or microphone commentary"),right:<C style={{flexDirection:"row",gap:5}}>
926
- {[{key:"none",label:"Muted"},{key:"app",label:"App"},{key:"mic",label:"Mic"}].map(r=>{const V=je===r.key;return<B key={r.key}onPress={()=>{L("light"),Ge(r.key),H(`Audio source: ${r.label}`)}}style={{paddingHorizontal:8,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
927
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
1026
+ {F({icon:<Po 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}}>
1027
+ {[{key:"none",label:"Muted"},{key:"app",label:"App"},{key:"mic",label:"Mic"}].map(r=>{const R=Dr===r.key;return<V key={r.key}onPress={()=>{D("light"),$r(r.key),B(`Audio source: ${r.label}`)}}style={{paddingHorizontal:8,paddingVertical:5,borderRadius:7,backgroundColor:R?e.purple:`${e.purple}14`,borderWidth:1,borderColor:R?e.purple:`${e.purple}2E`}}>
1028
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:R?e.white:e.purple}}>
928
1029
  {r.label}
929
1030
  </T>
930
- </B>})}
1031
+ </V>})}
931
1032
  </C>})}
932
1033
 
933
- {F({icon:<Wr color={e.purple}size={16}/>,label:w("settings.media.frameRate","Recording Frame Rate (FPS)"),description:w("settings.media.frameRateDesc","Target video smoothness: 15, 24, 30, or 60 FPS"),right:<C style={{flexDirection:"row",gap:5}}>
934
- {[15,24,30,60].map(r=>{const V=Ue===r;return<B key={r}onPress={()=>{L("light"),qe(r),H(`Recording FPS: ${r}`)}}style={{paddingHorizontal:7,paddingVertical:5,borderRadius:7,backgroundColor:V?e.purple:`${e.purple}14`,borderWidth:1,borderColor:V?e.purple:`${e.purple}2E`}}>
935
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:V?e.white:e.purple}}>
1034
+ {F({icon:<Ho 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}}>
1035
+ {[15,24,30,60].map(r=>{const R=Hr===r;return<V key={r}onPress={()=>{D("light"),Pr(r),B(`Recording FPS: ${r}`)}}style={{paddingHorizontal:7,paddingVertical:5,borderRadius:7,backgroundColor:R?e.purple:`${e.purple}14`,borderWidth:1,borderColor:R?e.purple:`${e.purple}2E`}}>
1036
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:R?e.white:e.purple}}>
936
1037
  {r}fps
937
1038
  </T>
938
- </B>})}
1039
+ </V>})}
939
1040
  </C>})}
940
1041
 
941
- {F({icon:<Or color={e.purple}size={16}/>,label:w("settings.media.gifAutoOpt","Auto GIF Optimization"),description:w("settings.media.gifAutoOptDesc","Automatic palette reduction and frame skip for lightweight animated GIFs"),isLast:!0,onPress:()=>{L("light"),se(r=>!r),H(`GIF optimization: ${O?"OFF":"ON"}`)},right:<B onPress={()=>{L("light"),se(r=>!r),H(`GIF optimization: ${O?"OFF":"ON"}`)}}style={{paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:O?`${e.emerald500}26`:`${e.grayText}20`,borderWidth:1,borderColor:O?`${e.emerald500}4D`:`${e.grayText}33`}}>
942
- <T style={{fontFamily:S.interBold,fontSize:10.5,color:O?e.emerald500:e.grayText}}>
943
- {O?"ON":"OFF"}
1042
+ {F({icon:<Wo 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:()=>{D("light"),Pe(r=>!r),B(`GIF optimization: ${A?"OFF":"ON"}`)},right:<V onPress={()=>{D("light"),Pe(r=>!r),B(`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`}}>
1043
+ <T style={{fontFamily:S.interBold,fontSize:10.5,color:A?e.emerald500:e.grayText}}>
1044
+ {A?"ON":"OFF"}
944
1045
  </T>
945
- </B>})}
1046
+ </V>})}
946
1047
  </C>
947
1048
 
948
1049
 
949
1050
  <C style={{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:16}}>
950
- {F({icon:<U color={e.errorColor}size={16}/>,label:w("settings.media.purgeAll","Purge Captured Media Cache"),description:w("settings.media.purgeAllDesc","Delete all local screenshots, screen recordings and converted GIFs"),isLast:!0,onPress:()=>{N.alert(w("settings.media.purgeConfirmTitle","Purge Media Storage?"),w("settings.media.purgeConfirmMessage","This will permanently delete all captured screenshots and videos from disk."),[{text:w("common.cancel","Cancel"),style:"cancel"},{text:w("settings.media.purgeCacheBtn","Purge All"),style:"destructive",onPress:async()=>{await Pe.clearAllMedia(),H(w("settings.media.purgedSuccess","Media cache cleared successfully"))}}])},right:<C style={{paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}33`}}>
1051
+ {F({icon:<O 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:()=>{j.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 kr.clearAllMedia(),B(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`}}>
951
1052
  <T style={{fontFamily:S.interBold,fontSize:11,lineHeight:14,color:e.errorColor}}>
952
1053
  {w("settings.media.purgeCacheBtn","Purge All")}
953
1054
  </T>
954
1055
  </C>})}
955
1056
  </C>
956
1057
  <C style={{height:48}}/>
957
- </G>);const ye=ko(new Le.Value(0)).current;return ve(()=>{A!=="main"&&(ye.setValue(0),Le.spring(ye,{toValue:1,friction:8,tension:65,useNativeDriver:!0}).start())},[A]),<C style={{flex:1,backgroundColor:e.grayBackground}}>
1058
+ </J>);const Oe=jr(new _.Value(0)).current;return Ze(()=>{v!=="main"&&(Oe.setValue(0),_.spring(Oe,{toValue:1,friction:8,tension:65,useNativeDriver:!0}).start())},[v]),<C style={{flex:1,backgroundColor:e.grayBackground}}>
958
1059
 
959
- <C style={[rr.absoluteFill,A!=="main"&&{pointerEvents:"none"}]}>
960
- {So()}
1060
+ <C style={[Gr.absoluteFill,v!=="main"&&{pointerEvents:"none"}]}>
1061
+ {St()}
961
1062
  </C>
962
1063
 
963
1064
 
964
- {A!=="main"&&<Le.View style={[rr.absoluteFill,{backgroundColor:e.grayBackground,opacity:ye,transform:[{translateX:ye.interpolate({inputRange:[0,1],outputRange:[30,0]})}]}]}>
965
- {K}
966
- </Le.View>}
1065
+ {v!=="main"&&<_.View style={[Gr.absoluteFill,{backgroundColor:e.grayBackground,opacity:Oe,transform:[{translateX:Oe.interpolate({inputRange:[0,1],outputRange:[30,0]})}]}]}>
1066
+ {U}
1067
+ </_.View>}
967
1068
 
968
1069
 
969
- <$o visible={fo}onClose={()=>Je(!1)}/>
970
- </C>};export default Xo;
1070
+ <Pt visible={ut}onClose={()=>Er(!1)}/>
1071
+ </C>};export default Bi;