react-native-inapp-inspector 2.5.12 → 2.5.13

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 (186) hide show
  1. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  2. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  3. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  4. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  5. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  6. package/android/.gradle/8.9/gc.properties +0 -0
  7. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  8. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  9. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  10. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  11. package/android/.gradle/9.2.0/gc.properties +0 -0
  12. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  13. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  14. package/android/.gradle/vcs-1/gc.properties +0 -0
  15. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  16. package/android/src/main/AndroidManifest.xml +11 -0
  17. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +379 -19
  18. package/android/src/main/res/xml/inappinspector_file_paths.xml +7 -0
  19. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +47 -49
  20. package/dist/commonjs/components/Inspector/BoxModelVisualizer.d.ts +8 -0
  21. package/dist/commonjs/components/Inspector/BoxModelVisualizer.js +76 -0
  22. package/dist/commonjs/components/Inspector/ConsoleExportModal.js +51 -51
  23. package/dist/commonjs/components/Inspector/CrashTab.js +17 -17
  24. package/dist/commonjs/components/Inspector/DebuggingTab.js +24 -24
  25. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +2 -2
  26. package/dist/commonjs/components/Inspector/FabLauncher.js +2 -2
  27. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +2 -2
  28. package/dist/commonjs/components/Inspector/InspectorHeader.js +10 -10
  29. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +10 -10
  30. package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +1 -0
  31. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +222 -222
  32. package/dist/commonjs/components/Inspector/NetworkExportModal.d.ts +10 -0
  33. package/dist/commonjs/components/Inspector/NetworkExportModal.js +333 -0
  34. package/dist/commonjs/components/Inspector/NetworkTab.js +48 -41
  35. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +11 -12
  36. package/dist/commonjs/components/Inspector/ReduxDetail.js +17 -19
  37. package/dist/commonjs/components/Inspector/ReduxTab.js +5 -5
  38. package/dist/commonjs/components/Inspector/SettingsPanel.js +3 -6
  39. package/dist/commonjs/components/Inspector/SocketCard.js +2 -2
  40. package/dist/commonjs/components/Inspector/SupportPage.js +5 -5
  41. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.d.ts +7 -0
  42. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.js +97 -0
  43. package/dist/commonjs/components/Inspector/UiInspectorDetail.d.ts +2 -0
  44. package/dist/commonjs/components/Inspector/UiInspectorDetail.js +485 -0
  45. package/dist/commonjs/components/Inspector/UiInspectorOverlay.d.ts +2 -0
  46. package/dist/commonjs/components/Inspector/UiInspectorOverlay.js +199 -0
  47. package/dist/commonjs/components/Inspector/UiInspectorTab.d.ts +2 -0
  48. package/dist/commonjs/components/Inspector/UiInspectorTab.js +117 -0
  49. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.d.ts +10 -0
  50. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.js +148 -0
  51. package/dist/commonjs/components/Inspector/index.d.ts +28 -0
  52. package/dist/commonjs/components/Inspector/index.js +1 -0
  53. package/dist/commonjs/components/LogCard.js +9 -7
  54. package/dist/commonjs/constants/index.js +1 -1
  55. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  56. package/dist/commonjs/constants/telemetryConfig.js +1 -1
  57. package/dist/commonjs/constants/version.d.ts +1 -1
  58. package/dist/commonjs/constants/version.js +1 -1
  59. package/dist/commonjs/customHooks/crashHandler.d.ts +1 -1
  60. package/dist/commonjs/customHooks/crashHandler.js +6 -6
  61. package/dist/commonjs/customHooks/uiInspectorManager.d.ts +22 -0
  62. package/dist/commonjs/customHooks/uiInspectorManager.js +1 -0
  63. package/dist/commonjs/helpers/index.js +1 -3
  64. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -0
  65. package/dist/commonjs/helpers/searchQueryParser.js +7 -5
  66. package/dist/commonjs/helpers/shareFormatter.d.ts +16 -0
  67. package/dist/commonjs/helpers/shareFormatter.js +16 -9
  68. package/dist/commonjs/helpers/uiInspectorEngine.d.ts +62 -0
  69. package/dist/commonjs/helpers/uiInspectorEngine.js +19 -0
  70. package/dist/commonjs/i18n/locales/ar.json +1 -1
  71. package/dist/commonjs/i18n/locales/bn.json +1 -1
  72. package/dist/commonjs/i18n/locales/de.json +1 -1
  73. package/dist/commonjs/i18n/locales/en.json +1 -1
  74. package/dist/commonjs/i18n/locales/es.json +1 -1
  75. package/dist/commonjs/i18n/locales/fr.json +1 -1
  76. package/dist/commonjs/i18n/locales/gu.json +1 -1
  77. package/dist/commonjs/i18n/locales/hi.json +1 -1
  78. package/dist/commonjs/i18n/locales/id.json +1 -1
  79. package/dist/commonjs/i18n/locales/it.json +1 -1
  80. package/dist/commonjs/i18n/locales/ja.json +1 -1
  81. package/dist/commonjs/i18n/locales/kn.json +1 -1
  82. package/dist/commonjs/i18n/locales/ko.json +1 -1
  83. package/dist/commonjs/i18n/locales/ml.json +1 -1
  84. package/dist/commonjs/i18n/locales/mr.json +1 -1
  85. package/dist/commonjs/i18n/locales/nl.json +1 -1
  86. package/dist/commonjs/i18n/locales/pa.json +1 -1
  87. package/dist/commonjs/i18n/locales/pl.json +1 -1
  88. package/dist/commonjs/i18n/locales/pt.json +1 -1
  89. package/dist/commonjs/i18n/locales/ru.json +1 -1
  90. package/dist/commonjs/i18n/locales/ta.json +1 -1
  91. package/dist/commonjs/i18n/locales/te.json +1 -1
  92. package/dist/commonjs/i18n/locales/tr.json +1 -1
  93. package/dist/commonjs/i18n/locales/vi.json +1 -1
  94. package/dist/commonjs/i18n/locales/zh.json +1 -1
  95. package/dist/commonjs/index.d.ts +3 -1
  96. package/dist/commonjs/index.js +3 -3
  97. package/dist/commonjs/native/NativeInspector.d.ts +2 -0
  98. package/dist/commonjs/native/NativeInspector.js +1 -1
  99. package/dist/commonjs/native/NativeNetworkInspector.d.ts +2 -0
  100. package/dist/commonjs/types/editor.d.ts +31 -0
  101. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +73 -75
  102. package/dist/esm/components/Inspector/BoxModelVisualizer.d.ts +8 -0
  103. package/dist/esm/components/Inspector/BoxModelVisualizer.js +76 -0
  104. package/dist/esm/components/Inspector/ConsoleExportModal.js +67 -67
  105. package/dist/esm/components/Inspector/CrashTab.js +58 -58
  106. package/dist/esm/components/Inspector/DebuggingTab.js +89 -89
  107. package/dist/esm/components/Inspector/DeviceInfoTab.js +2 -2
  108. package/dist/esm/components/Inspector/FabLauncher.js +21 -21
  109. package/dist/esm/components/Inspector/FloatingCaptureWidget.js +23 -23
  110. package/dist/esm/components/Inspector/InspectorHeader.js +26 -26
  111. package/dist/esm/components/Inspector/MediaGalleryTab.js +151 -151
  112. package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +1 -0
  113. package/dist/esm/components/Inspector/MediaPreviewModal.js +468 -468
  114. package/dist/esm/components/Inspector/NetworkExportModal.d.ts +10 -0
  115. package/dist/esm/components/Inspector/NetworkExportModal.js +333 -0
  116. package/dist/esm/components/Inspector/NetworkTab.js +118 -111
  117. package/dist/esm/components/Inspector/NpmStarPrompt.js +32 -33
  118. package/dist/esm/components/Inspector/ReduxDetail.js +54 -56
  119. package/dist/esm/components/Inspector/ReduxTab.js +9 -9
  120. package/dist/esm/components/Inspector/SettingsPanel.js +3 -6
  121. package/dist/esm/components/Inspector/SocketCard.js +13 -13
  122. package/dist/esm/components/Inspector/SupportPage.js +5 -5
  123. package/dist/esm/components/Inspector/UiA11yAuditPanel.d.ts +7 -0
  124. package/dist/esm/components/Inspector/UiA11yAuditPanel.js +97 -0
  125. package/dist/esm/components/Inspector/UiInspectorDetail.d.ts +2 -0
  126. package/dist/esm/components/Inspector/UiInspectorDetail.js +422 -0
  127. package/dist/esm/components/Inspector/UiInspectorOverlay.d.ts +2 -0
  128. package/dist/esm/components/Inspector/UiInspectorOverlay.js +138 -0
  129. package/dist/esm/components/Inspector/UiInspectorTab.d.ts +2 -0
  130. package/dist/esm/components/Inspector/UiInspectorTab.js +117 -0
  131. package/dist/esm/components/Inspector/UiLiveStyleTweaker.d.ts +10 -0
  132. package/dist/esm/components/Inspector/UiLiveStyleTweaker.js +148 -0
  133. package/dist/esm/components/Inspector/index.d.ts +28 -0
  134. package/dist/esm/components/Inspector/index.js +1 -0
  135. package/dist/esm/components/LogCard.js +57 -55
  136. package/dist/esm/constants/index.js +1 -1
  137. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  138. package/dist/esm/constants/telemetryConfig.js +1 -1
  139. package/dist/esm/constants/version.d.ts +1 -1
  140. package/dist/esm/constants/version.js +1 -1
  141. package/dist/esm/customHooks/crashHandler.d.ts +1 -1
  142. package/dist/esm/customHooks/crashHandler.js +6 -6
  143. package/dist/esm/customHooks/uiInspectorManager.d.ts +22 -0
  144. package/dist/esm/customHooks/uiInspectorManager.js +1 -0
  145. package/dist/esm/helpers/index.js +4 -6
  146. package/dist/esm/helpers/searchQueryParser.d.ts +1 -0
  147. package/dist/esm/helpers/searchQueryParser.js +7 -5
  148. package/dist/esm/helpers/shareFormatter.d.ts +16 -0
  149. package/dist/esm/helpers/shareFormatter.js +20 -13
  150. package/dist/esm/helpers/uiInspectorEngine.d.ts +48 -0
  151. package/dist/esm/helpers/uiInspectorEngine.js +19 -0
  152. package/dist/esm/i18n/locales/ar.json +1 -1
  153. package/dist/esm/i18n/locales/bn.json +1 -1
  154. package/dist/esm/i18n/locales/de.json +1 -1
  155. package/dist/esm/i18n/locales/en.json +1 -1
  156. package/dist/esm/i18n/locales/es.json +1 -1
  157. package/dist/esm/i18n/locales/fr.json +1 -1
  158. package/dist/esm/i18n/locales/gu.json +1 -1
  159. package/dist/esm/i18n/locales/hi.json +1 -1
  160. package/dist/esm/i18n/locales/id.json +1 -1
  161. package/dist/esm/i18n/locales/it.json +1 -1
  162. package/dist/esm/i18n/locales/ja.json +1 -1
  163. package/dist/esm/i18n/locales/kn.json +1 -1
  164. package/dist/esm/i18n/locales/ko.json +1 -1
  165. package/dist/esm/i18n/locales/ml.json +1 -1
  166. package/dist/esm/i18n/locales/mr.json +1 -1
  167. package/dist/esm/i18n/locales/nl.json +1 -1
  168. package/dist/esm/i18n/locales/pa.json +1 -1
  169. package/dist/esm/i18n/locales/pl.json +1 -1
  170. package/dist/esm/i18n/locales/pt.json +1 -1
  171. package/dist/esm/i18n/locales/ru.json +1 -1
  172. package/dist/esm/i18n/locales/ta.json +1 -1
  173. package/dist/esm/i18n/locales/te.json +1 -1
  174. package/dist/esm/i18n/locales/tr.json +1 -1
  175. package/dist/esm/i18n/locales/vi.json +1 -1
  176. package/dist/esm/i18n/locales/zh.json +1 -1
  177. package/dist/esm/index.d.ts +3 -1
  178. package/dist/esm/index.js +7 -7
  179. package/dist/esm/native/NativeInspector.d.ts +2 -0
  180. package/dist/esm/native/NativeInspector.js +1 -1
  181. package/dist/esm/native/NativeNetworkInspector.d.ts +2 -0
  182. package/dist/esm/types/editor.d.ts +31 -0
  183. package/ios/NetworkInspectorModule.mm +314 -16
  184. package/package.json +1 -1
  185. package/src/native/NativeInspector.ts +37 -0
  186. package/src/native/NativeNetworkInspector.ts +2 -0
@@ -1,5 +1,5 @@
1
- import He,{useCallback as Pe,useEffect as $e,useMemo as Y,useRef as Le,useState as A}from"react";import{FlatList as We,ScrollView as _,StyleSheet as De,Text as C,TextInput as Ae,TouchableOpacity as Me,View as T}from"react-native";import{useTranslation as je}from"../../i18n";import{useInspector as Ee}from"./InspectorContext";import H from"../TouchableScale";import Ne from"../AnimatedEntrance";import Oe from"../EndOfListFooter";import Je from"./FeatureUnderDevNotice";import Ge from"../HighlightText";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as k}from"../../styles/AppFonts";import{clearCrashRecords as Ue,simulateTestCrash as J}from"../../customHooks/crashHandler";import _e,{DEFAULT_CRASH_FILTERS as Z,isCrashFiltersDefault as M}from"./CrashFilterModal";import{ConfirmationModal as Qe}from"./ConfirmationModal";import{SearchIcon as Ke,ClearIcon as Xe,TrashIcon as Ye,TerminalIcon as Ze,LayersIcon as er,ClockIcon as Cr,ShieldAlertIcon as Tr,FlameIcon as Sr,JsIcon as Ce,HourglassIcon as Te,SkullIcon as kr,LayoutIcon as Se,ChipIcon as Be,AppleIcon as Br,AndroidIcon as Ir,RepeatIcon as Vr,CodeBracketsIcon as Fr,FilterIcon as Rr,ForwardChevronIcon as Hr}from"../NetworkIcons";const Pr=B=>{const P=Date.now(),N=Math.max(0,P-B),$=Math.floor(N/1e3),j=Math.floor($/60),D=Math.floor(j/60),E=Math.floor(D/24);return $<60?`${$}s ago`:j<60?`${j}m ago`:D<24?`${D}h ago`:`${E}d ago`},Ie=10,$r=He.memo(()=>{const{t:B}=je(),{crashRecords:P,setSelectedCrash:N,maxCrashLogs:$}=Ee(),j=$||50,D=Le(null),[E,Q]=A(j),[z,G]=A(""),[F,q]=A("all"),[S,K]=A(Z),[ze,X]=A(!1),[Ve,U]=A(!1);$e(()=>{Q($||50),D.current?.scrollToOffset({offset:0,animated:!1})},[z,F,S,$]);const V=Y(()=>{const t=P.length;let x=0,w=0,R=0,I=0,O=0;return P.forEach(W=>{W.isFatal&&x++,W.type==="js"?w++:W.type==="promise"?R++:W.type==="render"?I++:W.type==="native"&&O++}),{total:t,fatalCount:x,jsCount:w,promiseCount:R,renderCount:I,nativeCount:O}},[P]),L=Y(()=>{let t=P.filter(x=>{if(F==="fatal"&&!x.isFatal||F==="js"&&x.type!=="js"||F==="promise"&&x.type!=="promise"||F==="render"&&x.type!=="render"||F==="native"&&x.type!=="native"||S.types.size>0&&!S.types.has("all")&&!(S.types.has("fatal")&&x.isFatal||S.types.has("js")&&x.type==="js"||S.types.has("promise")&&x.type==="promise"||S.types.has("render")&&x.type==="render"||S.types.has("native")&&x.type==="native"))return!1;if(S.timeWindow!=="all"){const w=Date.now(),R=S.timeWindow==="15m"?w-900*1e3:S.timeWindow==="1h"?w-3600*1e3:S.timeWindow==="24h"?w-1440*60*1e3:w-10080*60*1e3;if(x.timestamp<R)return!1}if(S.platform!=="all"&&(x.deviceInfo?.platform||"").toLowerCase()!==S.platform)return!1;if(S.engine!=="all"){const w=x.deviceInfo?.isHermes;if(S.engine==="hermes"&&w!==!0||S.engine==="jsc"&&w===!0)return!1}if(z.trim().length>0){const w=z.trim().toLowerCase().split(/\s+/).filter(Boolean),R=[x.message||"",x.name||"",x.stack||"",x.type||"",x.deviceInfo?.platform||"",...(x.breadcrumbs||[]).map(I=>`${I.type||""} ${I.message||""}`)].join(" ").toLowerCase();return w.every(I=>R.includes(I))}return!0});return S.sortBy==="time_asc"&&(t=[...t].sort((x,w)=>x.timestamp-w.timestamp)),t},[P,F,z,S]),Fe=()=>{U(!0)},Re=Pe(({item:t,index:x})=>{const w=t.isFatal,R=t.type.toUpperCase(),I=t.parsedStack&&t.parsedStack.length>0?t.parsedStack.find(ve=>ve.isAppCode)||t.parsedStack[0]:null,O=t.type==="native"?`${e.errorColor}22`:t.type==="render"?`${e.purple}22`:t.type==="promise"?`${e.darkOrange}22`:`${e.offerPurple}22`,W=t.type==="native"?e.errorColor:t.type==="render"?e.purple:t.type==="promise"?e.darkOrange:e.offerPurple;return<Ne index={x}distance={8}>
2
- <H onPress={()=>{N(t)}}style={[r.cardContainer,w&&r.fatalCardBorder]}>
1
+ import Pe,{useCallback as He,useEffect as $e,useMemo as Y,useRef as Le,useState as A}from"react";import{FlatList as We,ScrollView as _,StyleSheet as De,Text as C,TextInput as Ae,TouchableOpacity as Me,View as T}from"react-native";import{useTranslation as je}from"../../i18n";import{useInspector as Ee}from"./InspectorContext";import P from"../TouchableScale";import Ne from"../AnimatedEntrance";import Oe from"../EndOfListFooter";import Je from"./FeatureUnderDevNotice";import Ge from"../HighlightText";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as B}from"../../styles/AppFonts";import{clearCrashRecords as Ue,simulateTestCrash as J}from"../../customHooks/crashHandler";import _e,{DEFAULT_CRASH_FILTERS as Z,isCrashFiltersDefault as M}from"./CrashFilterModal";import{ConfirmationModal as Qe}from"./ConfirmationModal";import{SearchIcon as Ke,ClearIcon as Xe,TrashIcon as Ye,TerminalIcon as Ze,LayersIcon as er,ClockIcon as Cr,ShieldAlertIcon as Tr,FlameIcon as Sr,JsIcon as Ce,HourglassIcon as Te,SkullIcon as kr,LayoutIcon as Se,ChipIcon as Be,AppleIcon as Br,AndroidIcon as Ir,RepeatIcon as Vr,CodeBracketsIcon as Fr,FilterIcon as Rr,ForwardChevronIcon as Pr}from"../NetworkIcons";const Hr=w=>{const H=Date.now(),N=Math.max(0,H-w),$=Math.floor(N/1e3),j=Math.floor($/60),D=Math.floor(j/60),E=Math.floor(D/24);return $<60?`${$}s ago`:j<60?`${j}m ago`:D<24?`${D}h ago`:`${E}d ago`},Ie=10,$r=Pe.memo(()=>{const{t:w}=je(),{crashRecords:H,setSelectedCrash:N,maxCrashLogs:$}=Ee(),j=$||50,D=Le(null),[E,Q]=A(j),[z,G]=A(""),[F,q]=A("all"),[k,K]=A(Z),[ze,X]=A(!1),[Ve,U]=A(!1);$e(()=>{Q($||50),D.current?.scrollToOffset({offset:0,animated:!1})},[z,F,k,$]);const V=Y(()=>{const t=H.length;let x=0,S=0,R=0,I=0,O=0;return H.forEach(W=>{W.isFatal&&x++,W.type==="js"?S++:W.type==="promise"?R++:W.type==="render"?I++:W.type==="native"&&O++}),{total:t,fatalCount:x,jsCount:S,promiseCount:R,renderCount:I,nativeCount:O}},[H]),L=Y(()=>{let t=H.filter(x=>{if(F==="fatal"&&!x.isFatal||F==="js"&&x.type!=="js"||F==="promise"&&x.type!=="promise"||F==="render"&&x.type!=="render"||F==="native"&&x.type!=="native"||k.types.size>0&&!k.types.has("all")&&!(k.types.has("fatal")&&x.isFatal||k.types.has("js")&&x.type==="js"||k.types.has("promise")&&x.type==="promise"||k.types.has("render")&&x.type==="render"||k.types.has("native")&&x.type==="native"))return!1;if(k.timeWindow!=="all"){const S=Date.now(),R=k.timeWindow==="15m"?S-900*1e3:k.timeWindow==="1h"?S-3600*1e3:k.timeWindow==="24h"?S-1440*60*1e3:S-10080*60*1e3;if(x.timestamp<R)return!1}if(k.platform!=="all"&&(x.deviceInfo?.platform||"").toLowerCase()!==k.platform)return!1;if(k.engine!=="all"){const S=x.deviceInfo?.isHermes;if(k.engine==="hermes"&&S!==!0||k.engine==="jsc"&&S===!0)return!1}if(z.trim().length>0){const S=z.trim().toLowerCase().split(/\s+/).filter(Boolean),R=[x.message||"",x.name||"",x.stack||"",x.type||"",x.deviceInfo?.platform||"",...(x.breadcrumbs||[]).map(I=>`${I.type||""} ${I.message||""}`)].join(" ").toLowerCase();return S.every(I=>R.includes(I))}return!0});return k.sortBy==="time_asc"&&(t=[...t].sort((x,S)=>x.timestamp-S.timestamp)),t},[H,F,z,k]),Fe=()=>{U(!0)},Re=He(({item:t,index:x})=>{const S=t.isFatal,R=t.type.toUpperCase(),I=t.parsedStack&&t.parsedStack.length>0?t.parsedStack.find(ve=>ve.isAppCode)||t.parsedStack[0]:null,O=t.type==="native"?`${e.errorColor}22`:t.type==="render"?`${e.purple}22`:t.type==="promise"?`${e.darkOrange}22`:`${e.offerPurple}22`,W=t.type==="native"?e.errorColor:t.type==="render"?e.purple:t.type==="promise"?e.darkOrange:e.offerPurple;return<Ne index={x}distance={8}>
2
+ <P onPress={()=>{N(t)}}style={[r.cardContainer,S&&r.fatalCardBorder]}>
3
3
 
4
4
  <T style={r.cardHeader}>
5
5
  <T style={r.badgeRow}>
@@ -7,11 +7,11 @@ import He,{useCallback as Pe,useEffect as $e,useMemo as Y,useRef as Le,useState
7
7
  <C style={r.sNoBadgeText}>#{x+1}</C>
8
8
  </T>
9
9
 
10
- {w?<T style={r.fatalBadge}>
10
+ {S?<T style={r.fatalBadge}>
11
11
  <Sr size={10}color={e.white}/>
12
- <C style={r.fatalBadgeText}>{B("crash.fatalBadge")}</C>
12
+ <C style={r.fatalBadgeText}>{w("crash.fatalBadge")}</C>
13
13
  </T>:<T style={r.caughtBadge}>
14
- <C style={r.caughtBadgeText}>{B("crash.handledBadge")}</C>
14
+ <C style={r.caughtBadgeText}>{w("crash.handledBadge")}</C>
15
15
  </T>}
16
16
 
17
17
  <T style={[r.typeBadge,{backgroundColor:O}]}>
@@ -27,15 +27,15 @@ import He,{useCallback as Pe,useEffect as $e,useMemo as Y,useRef as Le,useState
27
27
  {t.timeStr||new Date(t.timestamp).toLocaleTimeString()}
28
28
  </C>
29
29
  <C style={r.relativeTimeText}>
30
- {Pr(t.timestamp)}
30
+ {Hr(t.timestamp)}
31
31
  </C>
32
- <Hr size={13}color={e.grayTextWeak}/>
32
+ <Pr size={13}color={e.grayTextWeak}/>
33
33
  </T>
34
34
  </T>
35
35
 
36
36
 
37
37
  <T style={{marginVertical:6}}>
38
- <Ge text={t.message||B("crash.unknownException")}highlight={z}numberOfLines={3}style={r.errorMessageText}/>
38
+ <Ge text={t.message||w("crash.unknownException")}highlight={z}numberOfLines={3}style={r.errorMessageText}/>
39
39
  </T>
40
40
 
41
41
 
@@ -43,7 +43,7 @@ import He,{useCallback as Pe,useEffect as $e,useMemo as Y,useRef as Le,useState
43
43
  <Ze size={12}color={e.grayTextWeak}/>
44
44
  <C numberOfLines={1}ellipsizeMode="middle"style={r.locationText}>
45
45
  {I.method!=="<anonymous>"?`${I.method} `:""}
46
- <C style={{color:e.purple,fontFamily:k.interBold}}>
46
+ <C style={{color:e.purple,fontFamily:B.interBold}}>
47
47
  {I.file}:{I.lineNumber}
48
48
  </C>
49
49
  </C>
@@ -83,50 +83,50 @@ import He,{useCallback as Pe,useEffect as $e,useMemo as Y,useRef as Le,useState
83
83
  </T>}
84
84
  </T>
85
85
  </T>
86
- </H>
86
+ </P>
87
87
  </Ne>},[z,N]);return<T style={r.container}>
88
- {P.length>0&&<>
88
+ {H.length>0&&<>
89
89
 
90
90
  <T style={r.statsBar}>
91
91
  <_ horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={r.statsScrollContent}>
92
92
  <T style={[r.statChip,r.statChipActive]}>
93
93
  <C style={r.statChipValue}>{V.total}</C>
94
- <C style={r.statChipLabel}>{B("crash.statCrashes")}</C>
94
+ <C style={r.statChipLabel}>{w("crash.statCrashes")}</C>
95
95
  </T>
96
96
 
97
97
  <T style={r.statChip}>
98
98
  <C style={[r.statChipValue,{color:e.errorColor}]}>
99
99
  {V.fatalCount}
100
100
  </C>
101
- <C style={r.statChipLabel}>{B("crash.statFatal")}</C>
101
+ <C style={r.statChipLabel}>{w("crash.statFatal")}</C>
102
102
  </T>
103
103
 
104
104
  <T style={r.statChip}>
105
105
  <C style={[r.statChipValue,{color:e.offerPurple}]}>
106
106
  {V.jsCount}
107
107
  </C>
108
- <C style={r.statChipLabel}>{B("crash.statJsErrors")}</C>
108
+ <C style={r.statChipLabel}>{w("crash.statJsErrors")}</C>
109
109
  </T>
110
110
 
111
111
  <T style={r.statChip}>
112
112
  <C style={[r.statChipValue,{color:e.darkOrange}]}>
113
113
  {V.promiseCount}
114
114
  </C>
115
- <C style={r.statChipLabel}>{B("crash.statPromises")}</C>
115
+ <C style={r.statChipLabel}>{w("crash.statPromises")}</C>
116
116
  </T>
117
117
 
118
118
  <T style={r.statChip}>
119
119
  <C style={[r.statChipValue,{color:e.purple}]}>
120
120
  {V.renderCount}
121
121
  </C>
122
- <C style={r.statChipLabel}>{B("crash.statRender")}</C>
122
+ <C style={r.statChipLabel}>{w("crash.statRender")}</C>
123
123
  </T>
124
124
 
125
125
  <T style={r.statChip}>
126
126
  <C style={[r.statChipValue,{color:e.skyBlue}]}>
127
127
  {V.nativeCount}
128
128
  </C>
129
- <C style={r.statChipLabel}>{B("crash.statNative")}</C>
129
+ <C style={r.statChipLabel}>{w("crash.statNative")}</C>
130
130
  </T>
131
131
  </_>
132
132
  </T>
@@ -136,10 +136,10 @@ import He,{useCallback as Pe,useEffect as $e,useMemo as Y,useRef as Le,useState
136
136
  <T style={r.searchRow}>
137
137
  <T style={r.searchInputWrapper}>
138
138
  <Ke color={e.grayTextWeak}size={14}/>
139
- <Ae value={z}onChangeText={G}placeholder={B("crash.searchPlaceholder")}placeholderTextColor={e.grayTextWeak}style={r.searchInput}autoCapitalize="none"autoCorrect={!1}/>
139
+ <Ae value={z}onChangeText={G}placeholder={w("crash.searchPlaceholder")}placeholderTextColor={e.grayTextWeak}style={r.searchInput}autoCapitalize="none"autoCorrect={!1}/>
140
140
  {z.length>0&&<T style={{flexDirection:"row",alignItems:"center",gap:4}}>
141
141
  <T style={{backgroundColor:`${e.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
142
- <C style={{color:e.purple,fontSize:9.5,fontFamily:k.interBold}}>
142
+ <C style={{color:e.purple,fontSize:9.5,fontFamily:B.interBold}}>
143
143
  {L.length}
144
144
  </C>
145
145
  </T>
@@ -150,15 +150,15 @@ import He,{useCallback as Pe,useEffect as $e,useMemo as Y,useRef as Le,useState
150
150
  </T>
151
151
 
152
152
 
153
- <H onPress={()=>X(!0)}style={[r.filterButton,!M(S)&&{borderColor:`${e.brandPurple}60`,backgroundColor:`${e.brandPurple}15`}]}>
154
- <Rr size={14}color={M(S)?e.grayTextStrong:e.brandPurple}/>
155
- {!M(S)&&<T style={{position:"absolute",top:2,right:2,width:7,height:7,borderRadius:3.5,backgroundColor:e.darkOrange,borderWidth:1,borderColor:e.white}}/>}
156
- </H>
153
+ <P onPress={()=>X(!0)}style={[r.filterButton,!M(k)&&{borderColor:`${e.brandPurple}60`,backgroundColor:`${e.brandPurple}15`}]}>
154
+ <Rr size={14}color={M(k)?e.grayTextStrong:e.brandPurple}/>
155
+ {!M(k)&&<T style={{position:"absolute",top:2,right:2,width:7,height:7,borderRadius:3.5,backgroundColor:e.darkOrange,borderWidth:1,borderColor:e.white}}/>}
156
+ </P>
157
157
 
158
158
 
159
- <H onPress={Fe}style={r.clearButton}>
159
+ <P onPress={Fe}style={r.clearButton}>
160
160
  <Ye size={14}color={e.errorColor}/>
161
- </H>
161
+ </P>
162
162
  </T>
163
163
 
164
164
  <Je featureName="Crash & Exception Sentinel"/>
@@ -166,19 +166,19 @@ import He,{useCallback as Pe,useEffect as $e,useMemo as Y,useRef as Le,useState
166
166
 
167
167
  <T style={{flexDirection:"row",alignItems:"center",marginBottom:8,paddingHorizontal:12,gap:6}}>
168
168
  <_ horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
169
- {[{key:"all",label:B("crash.filterAll"),Icon:er,count:V.total,themeColor:e.purple},{key:"fatal",label:B("crash.filterFatal"),Icon:kr,count:V.fatalCount,themeColor:e.errorColor},{key:"js",label:B("crash.filterJsError"),Icon:Ce,count:V.jsCount,themeColor:e.amber600},{key:"promise",label:B("crash.filterPromise"),Icon:Te,count:V.promiseCount,themeColor:e.orange600},{key:"render",label:B("crash.filterRender"),Icon:Se,count:V.renderCount,themeColor:e.violet600},{key:"native",label:B("crash.filterNative"),Icon:Be,count:V.nativeCount,themeColor:e.cyan600}].map(t=>{const x=F===t.key,w=t.themeColor||e.purple,R=x?e.white:w,I=t.Icon;return<H key={t.key}onPress={()=>q(t.key)}>
170
- <T style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:x?w:`${w}12`,borderWidth:1,borderColor:x?w:`${w}30`,gap:5}}>
169
+ {[{key:"all",label:w("crash.filterAll"),Icon:er,count:V.total,themeColor:e.purple},{key:"fatal",label:w("crash.filterFatal"),Icon:kr,count:V.fatalCount,themeColor:e.errorColor},{key:"js",label:w("crash.filterJsError"),Icon:Ce,count:V.jsCount,themeColor:e.amber600},{key:"promise",label:w("crash.filterPromise"),Icon:Te,count:V.promiseCount,themeColor:e.orange600},{key:"render",label:w("crash.filterRender"),Icon:Se,count:V.renderCount,themeColor:e.violet600},{key:"native",label:w("crash.filterNative"),Icon:Be,count:V.nativeCount,themeColor:e.cyan600}].map(t=>{const x=F===t.key,S=t.themeColor||e.purple,R=x?e.white:S,I=t.Icon;return<P key={t.key}onPress={()=>q(t.key)}>
170
+ <T style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:x?S:`${S}12`,borderWidth:1,borderColor:x?S:`${S}30`,gap:5}}>
171
171
  <I size={11}color={R}/>
172
- <C style={{fontFamily:k.interBold,fontSize:10.5,color:x?e.white:e.primaryBlack}}>
172
+ <C style={{fontFamily:B.interBold,fontSize:10.5,color:x?e.white:e.primaryBlack}}>
173
173
  {t.label}
174
174
  </C>
175
- <T style={{backgroundColor:x?"rgba(255,255,255,0.25)":`${w}20`,paddingHorizontal:5,paddingVertical:1,borderRadius:8,alignItems:"center",justifyContent:"center"}}>
176
- <C style={{fontFamily:k.interBold,fontSize:9.5,color:x?e.white:w}}>
175
+ <T style={{backgroundColor:x?"rgba(255,255,255,0.25)":`${S}20`,paddingHorizontal:5,paddingVertical:1,borderRadius:8,alignItems:"center",justifyContent:"center"}}>
176
+ <C style={{fontFamily:B.interBold,fontSize:9.5,color:x?e.white:S}}>
177
177
  {t.count}
178
178
  </C>
179
179
  </T>
180
180
  </T>
181
- </H>})}
181
+ </P>})}
182
182
  </_>
183
183
  </T>
184
184
  </T>
@@ -190,47 +190,47 @@ import He,{useCallback as Pe,useEffect as $e,useMemo as Y,useRef as Le,useState
190
190
  <Tr size={38}color={e.greenColor}/>
191
191
  </T>
192
192
  <C style={r.emptyTitle}>
193
- {z.length>0?"No matching crash entries":F!=="all"||!M(S)?"No crashes match filters":B("crash.emptyTitle")}
193
+ {z.length>0?"No matching crash entries":F!=="all"||!M(k)?"No crashes match filters":w("crash.emptyTitle")}
194
194
  </C>
195
195
  <C style={r.emptySub}>
196
- {z?`No crash entries matched "${z}"`:F!=="all"||!M(S)?"Try adjusting your filters or search keywords.":B("crash.emptySubtitle")}
196
+ {z?`No crash entries matched "${z}"`:F!=="all"||!M(k)?"Try adjusting your filters or search keywords.":w("crash.emptySubtitle")}
197
197
  </C>
198
- {z.length>0||F!=="all"||!M(S)?<H onPress={()=>{G(""),q("all"),K(Z)}}style={{marginTop:10,paddingHorizontal:14,paddingVertical:7,borderRadius:8,backgroundColor:e.purple}}>
199
- <C style={{fontFamily:k.interBold,fontSize:11.5,color:e.white}}>
200
- Clear Search & Filters
198
+ {z.length>0||F!=="all"||!M(k)?<P onPress={()=>{G(""),q("all"),K(Z)}}style={{marginTop:10,paddingHorizontal:14,paddingVertical:7,borderRadius:8,backgroundColor:e.purple}}>
199
+ <C style={{fontFamily:B.interBold,fontSize:11.5,color:e.white}}>
200
+ {w("common.clearSearchFilters","Clear Search & Filters")}
201
201
  </C>
202
- </H>:<T style={{marginTop:18,alignItems:"center",width:"100%",paddingHorizontal:16}}>
203
- <C style={{fontFamily:k.interBold,fontSize:10.5,color:e.grayText,letterSpacing:.6,marginBottom:10}}>
204
- TEST CRASH SENTINEL
202
+ </P>:<T style={{marginTop:18,alignItems:"center",width:"100%",paddingHorizontal:16}}>
203
+ <C style={{fontFamily:B.interBold,fontSize:10.5,color:e.grayText,letterSpacing:.6,marginBottom:10}}>
204
+ {w("crash.testCrashSentinel","TEST CRASH SENTINEL")}
205
205
  </C>
206
206
  <T style={{flexDirection:"row",gap:7,flexWrap:"wrap",justifyContent:"center"}}>
207
- <H onPress={()=>J("js","Test JavaScript ReferenceError: variable is not defined",void 0,!0)}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.amber600}14`,borderWidth:1,borderColor:`${e.amber600}38`,paddingHorizontal:9,paddingVertical:6,borderRadius:8}}>
207
+ <P onPress={()=>J("js","Test JavaScript ReferenceError: variable is not defined",void 0,!0)}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.amber600}14`,borderWidth:1,borderColor:`${e.amber600}38`,paddingHorizontal:9,paddingVertical:6,borderRadius:8}}>
208
208
  <Ce size={11}color={e.amber600}/>
209
- <C style={{fontFamily:k.interBold,fontSize:10.5,color:e.primaryBlack}}>
210
- Simulate JS Crash
209
+ <C style={{fontFamily:B.interBold,fontSize:10.5,color:e.primaryBlack}}>
210
+ {w("crash.simulateJsCrash","Simulate JS Crash")}
211
211
  </C>
212
- </H>
212
+ </P>
213
213
 
214
- <H onPress={()=>J("native","Test Native Crash: SIGSEGV (Segmentation Fault)",void 0,!0)}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.cyan600}14`,borderWidth:1,borderColor:`${e.cyan600}38`,paddingHorizontal:9,paddingVertical:6,borderRadius:8}}>
214
+ <P onPress={()=>J("native","Test Native Crash: SIGSEGV (Segmentation Fault)",void 0,!0)}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.cyan600}14`,borderWidth:1,borderColor:`${e.cyan600}38`,paddingHorizontal:9,paddingVertical:6,borderRadius:8}}>
215
215
  <Be size={11}color={e.cyan600}/>
216
- <C style={{fontFamily:k.interBold,fontSize:10.5,color:e.primaryBlack}}>
217
- Simulate Native Crash
216
+ <C style={{fontFamily:B.interBold,fontSize:10.5,color:e.primaryBlack}}>
217
+ {w("crash.simulateNativeCrash","Simulate Native Crash")}
218
218
  </C>
219
- </H>
219
+ </P>
220
220
 
221
- <H onPress={()=>J("promise","Unhandled Promise Rejection: Gateway connection timed out",void 0,!0)}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.orange600}14`,borderWidth:1,borderColor:`${e.orange600}38`,paddingHorizontal:9,paddingVertical:6,borderRadius:8}}>
221
+ <P onPress={()=>J("promise","Unhandled Promise Rejection: Gateway connection timed out",void 0,!0)}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.orange600}14`,borderWidth:1,borderColor:`${e.orange600}38`,paddingHorizontal:9,paddingVertical:6,borderRadius:8}}>
222
222
  <Te size={11}color={e.orange600}/>
223
- <C style={{fontFamily:k.interBold,fontSize:10.5,color:e.primaryBlack}}>
224
- Simulate Promise
223
+ <C style={{fontFamily:B.interBold,fontSize:10.5,color:e.primaryBlack}}>
224
+ {w("crash.simulatePromise","Simulate Promise")}
225
225
  </C>
226
- </H>
226
+ </P>
227
227
 
228
- <H onPress={()=>J("render","Render Error: Cannot read property of undefined in Component",void 0,!0)}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.violet600}14`,borderWidth:1,borderColor:`${e.violet600}38`,paddingHorizontal:9,paddingVertical:6,borderRadius:8}}>
228
+ <P onPress={()=>J("render","Render Error: Cannot read property of undefined in Component",void 0,!0)}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${e.violet600}14`,borderWidth:1,borderColor:`${e.violet600}38`,paddingHorizontal:9,paddingVertical:6,borderRadius:8}}>
229
229
  <Se size={11}color={e.violet600}/>
230
- <C style={{fontFamily:k.interBold,fontSize:10.5,color:e.primaryBlack}}>
231
- Simulate Render
230
+ <C style={{fontFamily:B.interBold,fontSize:10.5,color:e.primaryBlack}}>
231
+ {w("crash.simulateRender","Simulate Render")}
232
232
  </C>
233
- </H>
233
+ </P>
234
234
  </T>
235
235
  </T>}
236
236
  </_>:<>
@@ -238,7 +238,7 @@ import He,{useCallback as Pe,useEffect as $e,useMemo as Y,useRef as Le,useState
238
238
  </>}
239
239
 
240
240
 
241
- <_e visible={ze}onClose={()=>X(!1)}filters={S}onApply={K}searchQuery={z}/>
241
+ <_e visible={ze}onClose={()=>X(!1)}filters={k}onApply={K}searchQuery={z}/>
242
242
 
243
- <Qe visible={Ve}title={B("crash.clearTitle","Clear Crash Records")}message={B("crash.clearMessage","Are you sure you want to clear all intercepted crash records?")}confirmText={B("crash.clearConfirm","Clear All")}cancelText={B("crash.clearCancel","Cancel")}isDestructive={!0}icon="trash"onConfirm={()=>{U(!1),Ue()}}onCancel={()=>U(!1)}/>
244
- </T>});export default $r;const r=De.create({container:{flex:1,backgroundColor:e.grayBackground},statsBar:{backgroundColor:e.primaryLight,borderBottomWidth:1,borderBottomColor:e.grayBorderSecondary,paddingVertical:10},statsScrollContent:{paddingHorizontal:8,gap:6},statChip:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:e.purpleShade50,borderWidth:1,borderColor:`${e.purple}14`},statChipActive:{backgroundColor:`${e.purple}14`,borderColor:`${e.purple}33`},statChipValue:{fontFamily:k.interBold,fontSize:13,color:e.primaryBlack},statChipLabel:{fontFamily:k.interMedium,fontSize:11,color:e.grayText},controlsContainer:{paddingHorizontal:8,paddingTop:10,paddingBottom:6,backgroundColor:e.grayBackground},searchRow:{flexDirection:"row",alignItems:"center",gap:8},searchInputWrapper:{flex:1,flexDirection:"row",alignItems:"center",backgroundColor:e.primaryLight,borderWidth:1,borderColor:e.grayBorderSecondary,borderRadius:10,paddingHorizontal:10,height:38,gap:8},searchInput:{flex:1,fontFamily:k.interRegular,fontSize:13,color:e.primaryBlack,paddingVertical:0},clearButton:{width:38,height:38,borderRadius:10,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}22`,alignItems:"center",justifyContent:"center"},filterButton:{width:38,height:38,borderRadius:10,backgroundColor:`${e.brandPurple}0F`,borderWidth:1,borderColor:`${e.brandPurple}30`,alignItems:"center",justifyContent:"center"},filterScrollContent:{paddingVertical:10,gap:6},filterChip:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:10,paddingVertical:5.5,borderRadius:8,backgroundColor:e.primaryLight,borderWidth:1,borderColor:e.grayBorderSecondary},filterChipActive:{backgroundColor:e.purple,borderColor:e.purple},filterChipText:{fontFamily:k.interMedium,fontSize:12,color:e.grayText},filterChipTextActive:{fontFamily:k.interBold,color:e.white},listContent:{paddingHorizontal:8,paddingTop:4,paddingBottom:24,gap:8},cardContainer:{backgroundColor:e.primaryLight,borderRadius:12,borderWidth:1,borderColor:e.grayBorderSecondary,padding:10,shadowColor:e.shadowColorString,shadowOffset:{width:0,height:1},shadowOpacity:.05,shadowRadius:3,elevation:2},fatalCardBorder:{borderColor:`${e.errorColor}44`},cardHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},badgeRow:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:1},sNoBadge:{backgroundColor:e.grayBackground,borderWidth:1,borderColor:e.grayBorderSecondary,paddingHorizontal:6,paddingVertical:3,borderRadius:5},sNoBadgeText:{fontFamily:k.interBold,fontSize:9.5,color:e.grayText,letterSpacing:.3},fatalBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:e.errorColor,paddingHorizontal:6,paddingVertical:3,borderRadius:5},fatalBadgeText:{fontFamily:k.interBold,fontSize:9.5,color:e.white,letterSpacing:.5},caughtBadge:{backgroundColor:`${e.greenColor}1F`,paddingHorizontal:6,paddingVertical:3,borderRadius:5},caughtBadgeText:{fontFamily:k.interBold,fontSize:9.5,color:e.greenColor,letterSpacing:.5},typeBadge:{paddingHorizontal:6,paddingVertical:3,borderRadius:5},typeBadgeText:{fontFamily:k.interBold,fontSize:9.5,letterSpacing:.5},timeRow:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:1},timestampText:{fontFamily:k.interRegular,fontSize:11,color:e.grayTextWeak},relativeTimeText:{fontFamily:k.interBold,fontSize:10,color:e.grayTextWeak,backgroundColor:e.grayBackground,paddingHorizontal:5,paddingVertical:1,borderRadius:4,overflow:"hidden"},errorMessageText:{fontFamily:k.interBold,fontSize:13.5,color:e.primaryBlack,lineHeight:18},locationRow:{flexDirection:"row",alignItems:"center",gap:6,marginTop:2,marginBottom:6,backgroundColor:e.purpleShade50,paddingHorizontal:8,paddingVertical:4,borderRadius:6},locationText:{fontFamily:k.interRegular,fontSize:11,color:e.grayText,flex:1},cardFooter:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginTop:6,paddingTop:8,borderTopWidth:1,borderTopColor:e.dividerColor},metaPill:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:e.purpleShade50,paddingHorizontal:6,paddingVertical:2,borderRadius:4},metaPillText:{fontFamily:k.interMedium,fontSize:10,color:e.grayTextWeak},emptyContainer:{flexGrow:1,alignItems:"center",justifyContent:"center",padding:32,paddingBottom:80},emptyIconCircle:{width:72,height:72,borderRadius:36,backgroundColor:`${e.greenColor}1F`,alignItems:"center",justifyContent:"center",marginBottom:16},emptyTitle:{fontFamily:k.interBold,fontSize:17,color:e.primaryBlack,marginBottom:6},emptySub:{fontFamily:k.interRegular,fontSize:13,color:e.grayText,textAlign:"center",lineHeight:18,maxWidth:280}});
243
+ <Qe visible={Ve}title={w("crash.clearTitle","Clear Crash Records")}message={w("crash.clearMessage","Are you sure you want to clear all intercepted crash records?")}confirmText={w("crash.clearConfirm","Clear All")}cancelText={w("crash.clearCancel","Cancel")}isDestructive={!0}icon="trash"onConfirm={()=>{U(!1),Ue()}}onCancel={()=>U(!1)}/>
244
+ </T>});export default $r;const r=De.create({container:{flex:1,backgroundColor:e.grayBackground},statsBar:{backgroundColor:e.primaryLight,borderBottomWidth:1,borderBottomColor:e.grayBorderSecondary,paddingVertical:10},statsScrollContent:{paddingHorizontal:8,gap:6},statChip:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:e.purpleShade50,borderWidth:1,borderColor:`${e.purple}14`},statChipActive:{backgroundColor:`${e.purple}14`,borderColor:`${e.purple}33`},statChipValue:{fontFamily:B.interBold,fontSize:13,color:e.primaryBlack},statChipLabel:{fontFamily:B.interMedium,fontSize:11,color:e.grayText},controlsContainer:{paddingHorizontal:8,paddingTop:10,paddingBottom:6,backgroundColor:e.grayBackground},searchRow:{flexDirection:"row",alignItems:"center",gap:8},searchInputWrapper:{flex:1,flexDirection:"row",alignItems:"center",backgroundColor:e.primaryLight,borderWidth:1,borderColor:e.grayBorderSecondary,borderRadius:10,paddingHorizontal:10,height:38,gap:8},searchInput:{flex:1,fontFamily:B.interRegular,fontSize:13,color:e.primaryBlack,paddingVertical:0},clearButton:{width:38,height:38,borderRadius:10,backgroundColor:`${e.errorColor}14`,borderWidth:1,borderColor:`${e.errorColor}22`,alignItems:"center",justifyContent:"center"},filterButton:{width:38,height:38,borderRadius:10,backgroundColor:`${e.brandPurple}0F`,borderWidth:1,borderColor:`${e.brandPurple}30`,alignItems:"center",justifyContent:"center"},filterScrollContent:{paddingVertical:10,gap:6},filterChip:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:10,paddingVertical:5.5,borderRadius:8,backgroundColor:e.primaryLight,borderWidth:1,borderColor:e.grayBorderSecondary},filterChipActive:{backgroundColor:e.purple,borderColor:e.purple},filterChipText:{fontFamily:B.interMedium,fontSize:12,color:e.grayText},filterChipTextActive:{fontFamily:B.interBold,color:e.white},listContent:{paddingHorizontal:8,paddingTop:4,paddingBottom:24,gap:8},cardContainer:{backgroundColor:e.primaryLight,borderRadius:12,borderWidth:1,borderColor:e.grayBorderSecondary,padding:10,shadowColor:e.shadowColorString,shadowOffset:{width:0,height:1},shadowOpacity:.05,shadowRadius:3,elevation:2},fatalCardBorder:{borderColor:`${e.errorColor}44`},cardHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},badgeRow:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:1},sNoBadge:{backgroundColor:e.grayBackground,borderWidth:1,borderColor:e.grayBorderSecondary,paddingHorizontal:6,paddingVertical:3,borderRadius:5},sNoBadgeText:{fontFamily:B.interBold,fontSize:9.5,color:e.grayText,letterSpacing:.3},fatalBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:e.errorColor,paddingHorizontal:6,paddingVertical:3,borderRadius:5},fatalBadgeText:{fontFamily:B.interBold,fontSize:9.5,color:e.white,letterSpacing:.5},caughtBadge:{backgroundColor:`${e.greenColor}1F`,paddingHorizontal:6,paddingVertical:3,borderRadius:5},caughtBadgeText:{fontFamily:B.interBold,fontSize:9.5,color:e.greenColor,letterSpacing:.5},typeBadge:{paddingHorizontal:6,paddingVertical:3,borderRadius:5},typeBadgeText:{fontFamily:B.interBold,fontSize:9.5,letterSpacing:.5},timeRow:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:1},timestampText:{fontFamily:B.interRegular,fontSize:11,color:e.grayTextWeak},relativeTimeText:{fontFamily:B.interBold,fontSize:10,color:e.grayTextWeak,backgroundColor:e.grayBackground,paddingHorizontal:5,paddingVertical:1,borderRadius:4,overflow:"hidden"},errorMessageText:{fontFamily:B.interBold,fontSize:13.5,color:e.primaryBlack,lineHeight:18},locationRow:{flexDirection:"row",alignItems:"center",gap:6,marginTop:2,marginBottom:6,backgroundColor:e.purpleShade50,paddingHorizontal:8,paddingVertical:4,borderRadius:6},locationText:{fontFamily:B.interRegular,fontSize:11,color:e.grayText,flex:1},cardFooter:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginTop:6,paddingTop:8,borderTopWidth:1,borderTopColor:e.dividerColor},metaPill:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:e.purpleShade50,paddingHorizontal:6,paddingVertical:2,borderRadius:4},metaPillText:{fontFamily:B.interMedium,fontSize:10,color:e.grayTextWeak},emptyContainer:{flexGrow:1,alignItems:"center",justifyContent:"center",padding:32,paddingBottom:80},emptyIconCircle:{width:72,height:72,borderRadius:36,backgroundColor:`${e.greenColor}1F`,alignItems:"center",justifyContent:"center",marginBottom:16},emptyTitle:{fontFamily:B.interBold,fontSize:17,color:e.primaryBlack,marginBottom:6},emptySub:{fontFamily:B.interRegular,fontSize:13,color:e.grayText,textAlign:"center",lineHeight:18,maxWidth:280}});