react-native-inapp-inspector 2.3.24 → 2.4.0

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 (207) hide show
  1. package/README.md +26 -5
  2. package/dist/commonjs/components/AnalyticsDetail.js +15 -12
  3. package/dist/commonjs/components/AnalyticsEventCard.js +11 -8
  4. package/dist/commonjs/components/AppHeaderLogo.js +4 -6
  5. package/dist/commonjs/components/ConsoleLogCard.d.ts +1 -0
  6. package/dist/commonjs/components/ConsoleLogCard.js +92 -80
  7. package/dist/commonjs/components/EndOfListFooter.d.ts +5 -1
  8. package/dist/commonjs/components/EndOfListFooter.js +27 -5
  9. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +1 -1
  10. package/dist/commonjs/components/Inspector/AnalyticsTab.js +27 -299
  11. package/dist/commonjs/components/Inspector/ConsoleTab.js +36 -94
  12. package/dist/commonjs/components/Inspector/CrashDetail.js +11 -10
  13. package/dist/commonjs/components/Inspector/CrashTab.js +43 -33
  14. package/dist/commonjs/components/Inspector/DebuggingTab.js +13 -13
  15. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +107 -71
  16. package/dist/commonjs/components/Inspector/FabLauncher.js +8 -9
  17. package/dist/commonjs/components/Inspector/InspectorHeader.js +93 -70
  18. package/dist/commonjs/components/Inspector/LogDetail.js +10 -7
  19. package/dist/commonjs/components/Inspector/MainScreen.js +66 -30
  20. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +1 -1
  21. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +3 -3
  22. package/dist/commonjs/components/Inspector/NetworkDetail.js +29 -28
  23. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +1 -1
  24. package/dist/commonjs/components/Inspector/NetworkTab.js +87 -85
  25. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +3 -3
  26. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +21 -22
  27. package/dist/commonjs/components/Inspector/PushCard.d.ts +4 -0
  28. package/dist/commonjs/components/Inspector/PushCard.js +89 -0
  29. package/dist/commonjs/components/Inspector/PushDetail.d.ts +4 -0
  30. package/dist/commonjs/components/Inspector/PushDetail.js +190 -0
  31. package/dist/commonjs/components/Inspector/PushTab.d.ts +3 -0
  32. package/dist/commonjs/components/Inspector/PushTab.js +45 -0
  33. package/dist/commonjs/components/Inspector/ReduxDetail.js +16 -13
  34. package/dist/commonjs/components/Inspector/ReduxTab.js +109 -106
  35. package/dist/commonjs/components/Inspector/SettingsPanel.js +230 -134
  36. package/dist/commonjs/components/Inspector/StorageTab.js +55 -51
  37. package/dist/commonjs/components/Inspector/TabBar.js +30 -26
  38. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -2
  39. package/dist/commonjs/components/JsonViewer.js +151 -159
  40. package/dist/commonjs/components/LogCard.js +34 -38
  41. package/dist/commonjs/components/LogSyntaxHighlighter.js +3 -3
  42. package/dist/commonjs/components/ModuleErrorBoundary.d.ts +24 -0
  43. package/dist/commonjs/components/ModuleErrorBoundary.js +33 -0
  44. package/dist/commonjs/components/NetworkIcons.d.ts +3 -3
  45. package/dist/commonjs/components/NetworkIcons.js +10 -6
  46. package/dist/commonjs/components/SegmentedTabs.d.ts +8 -2
  47. package/dist/commonjs/components/SegmentedTabs.js +11 -7
  48. package/dist/commonjs/components/ShareButton.d.ts +11 -0
  49. package/dist/commonjs/components/ShareButton.js +6 -0
  50. package/dist/commonjs/constants/index.js +1 -1
  51. package/dist/commonjs/constants/version.d.ts +1 -1
  52. package/dist/commonjs/constants/version.js +1 -1
  53. package/dist/commonjs/customHooks/crashHandler.js +4 -4
  54. package/dist/commonjs/customHooks/networkLogger.js +1 -2
  55. package/dist/commonjs/customHooks/pushNotificationLogger.d.ts +19 -0
  56. package/dist/commonjs/customHooks/pushNotificationLogger.js +1 -0
  57. package/dist/commonjs/helpers/index.d.ts +6 -0
  58. package/dist/commonjs/helpers/index.js +4 -4
  59. package/dist/commonjs/helpers/memoryManager.d.ts +2 -2
  60. package/dist/commonjs/helpers/memoryManager.js +1 -1
  61. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  62. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  63. package/dist/commonjs/helpers/settingsStore.js +1 -1
  64. package/dist/commonjs/helpers/shareFormatter.d.ts +13 -0
  65. package/dist/commonjs/helpers/shareFormatter.js +7 -0
  66. package/dist/commonjs/i18n/index.d.ts +35 -0
  67. package/dist/commonjs/i18n/index.js +1 -1
  68. package/dist/commonjs/i18n/locales/ar.json +1 -0
  69. package/dist/commonjs/i18n/locales/de.json +1 -0
  70. package/dist/commonjs/i18n/locales/en.json +1 -1
  71. package/dist/commonjs/i18n/locales/es.json +1 -0
  72. package/dist/commonjs/i18n/locales/fr.json +1 -0
  73. package/dist/commonjs/i18n/locales/hi.json +1 -0
  74. package/dist/commonjs/i18n/locales/ja.json +1 -0
  75. package/dist/commonjs/i18n/locales/ko.json +1 -0
  76. package/dist/commonjs/i18n/locales/pt.json +1 -0
  77. package/dist/commonjs/i18n/locales/ru.json +1 -0
  78. package/dist/commonjs/i18n/locales/zh.json +1 -0
  79. package/dist/commonjs/index.d.ts +6 -5
  80. package/dist/commonjs/index.js +4 -4
  81. package/dist/commonjs/push.d.ts +4 -0
  82. package/dist/commonjs/push.js +1 -0
  83. package/dist/commonjs/styles/AppColors.d.ts +40 -0
  84. package/dist/commonjs/styles/AppColors.js +1 -1
  85. package/dist/commonjs/styles/index.js +1 -1
  86. package/dist/commonjs/types/enums.d.ts +30 -20
  87. package/dist/commonjs/types/enums.js +1 -1
  88. package/dist/commonjs/types/index.d.ts +10 -0
  89. package/dist/commonjs/types/interfaces.d.ts +63 -7
  90. package/dist/esm/components/AnalyticsDetail.js +84 -81
  91. package/dist/esm/components/AnalyticsEventCard.js +20 -17
  92. package/dist/esm/components/AppHeaderLogo.js +5 -7
  93. package/dist/esm/components/ConsoleLogCard.d.ts +1 -0
  94. package/dist/esm/components/ConsoleLogCard.js +98 -86
  95. package/dist/esm/components/EndOfListFooter.d.ts +5 -1
  96. package/dist/esm/components/EndOfListFooter.js +36 -14
  97. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +14 -14
  98. package/dist/esm/components/Inspector/AnalyticsTab.js +44 -316
  99. package/dist/esm/components/Inspector/ConsoleTab.js +55 -113
  100. package/dist/esm/components/Inspector/CrashDetail.js +53 -52
  101. package/dist/esm/components/Inspector/CrashTab.js +74 -64
  102. package/dist/esm/components/Inspector/DebuggingTab.js +33 -33
  103. package/dist/esm/components/Inspector/DeviceInfoTab.js +174 -138
  104. package/dist/esm/components/Inspector/FabLauncher.js +41 -42
  105. package/dist/esm/components/Inspector/InspectorHeader.js +138 -115
  106. package/dist/esm/components/Inspector/LogDetail.js +24 -21
  107. package/dist/esm/components/Inspector/MainScreen.js +98 -62
  108. package/dist/esm/components/Inspector/MediaGalleryTab.js +1 -1
  109. package/dist/esm/components/Inspector/MediaPreviewModal.js +31 -31
  110. package/dist/esm/components/Inspector/NetworkDetail.js +88 -87
  111. package/dist/esm/components/Inspector/NetworkFilterModal.js +8 -8
  112. package/dist/esm/components/Inspector/NetworkTab.js +132 -130
  113. package/dist/esm/components/Inspector/NpmStarPrompt.js +42 -42
  114. package/dist/esm/components/Inspector/NpmUpdateToast.js +45 -46
  115. package/dist/esm/components/Inspector/PushCard.d.ts +4 -0
  116. package/dist/esm/components/Inspector/PushCard.js +89 -0
  117. package/dist/esm/components/Inspector/PushDetail.d.ts +4 -0
  118. package/dist/esm/components/Inspector/PushDetail.js +190 -0
  119. package/dist/esm/components/Inspector/PushTab.d.ts +3 -0
  120. package/dist/esm/components/Inspector/PushTab.js +45 -0
  121. package/dist/esm/components/Inspector/ReduxDetail.js +40 -37
  122. package/dist/esm/components/Inspector/ReduxTab.js +155 -152
  123. package/dist/esm/components/Inspector/SettingsPanel.js +380 -284
  124. package/dist/esm/components/Inspector/StorageTab.js +177 -173
  125. package/dist/esm/components/Inspector/TabBar.js +38 -34
  126. package/dist/esm/components/Inspector/UpdateAvailableModal.js +1 -1
  127. package/dist/esm/components/JsonViewer.js +161 -169
  128. package/dist/esm/components/LogCard.js +38 -42
  129. package/dist/esm/components/LogSyntaxHighlighter.js +1 -1
  130. package/dist/esm/components/ModuleErrorBoundary.d.ts +24 -0
  131. package/dist/esm/components/ModuleErrorBoundary.js +33 -0
  132. package/dist/esm/components/NetworkIcons.d.ts +3 -3
  133. package/dist/esm/components/NetworkIcons.js +7 -3
  134. package/dist/esm/components/SegmentedTabs.d.ts +8 -2
  135. package/dist/esm/components/SegmentedTabs.js +12 -8
  136. package/dist/esm/components/ShareButton.d.ts +11 -0
  137. package/dist/esm/components/ShareButton.js +6 -0
  138. package/dist/esm/constants/index.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.js +6 -6
  142. package/dist/esm/customHooks/networkLogger.js +1 -2
  143. package/dist/esm/customHooks/pushNotificationLogger.d.ts +19 -0
  144. package/dist/esm/customHooks/pushNotificationLogger.js +1 -0
  145. package/dist/esm/helpers/index.d.ts +6 -0
  146. package/dist/esm/helpers/index.js +4 -4
  147. package/dist/esm/helpers/memoryManager.d.ts +2 -2
  148. package/dist/esm/helpers/memoryManager.js +1 -1
  149. package/dist/esm/helpers/remoteConfig.js +1 -1
  150. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  151. package/dist/esm/helpers/settingsStore.js +1 -1
  152. package/dist/esm/helpers/shareFormatter.d.ts +13 -0
  153. package/dist/esm/helpers/shareFormatter.js +7 -0
  154. package/dist/esm/i18n/index.d.ts +35 -0
  155. package/dist/esm/i18n/index.js +1 -1
  156. package/dist/esm/i18n/locales/ar.json +1 -0
  157. package/dist/esm/i18n/locales/de.json +1 -0
  158. package/dist/esm/i18n/locales/en.json +1 -1
  159. package/dist/esm/i18n/locales/es.json +1 -0
  160. package/dist/esm/i18n/locales/fr.json +1 -0
  161. package/dist/esm/i18n/locales/hi.json +1 -0
  162. package/dist/esm/i18n/locales/ja.json +1 -0
  163. package/dist/esm/i18n/locales/ko.json +1 -0
  164. package/dist/esm/i18n/locales/pt.json +1 -0
  165. package/dist/esm/i18n/locales/ru.json +1 -0
  166. package/dist/esm/i18n/locales/zh.json +1 -0
  167. package/dist/esm/index.d.ts +6 -5
  168. package/dist/esm/index.js +7 -7
  169. package/dist/esm/push.d.ts +4 -0
  170. package/dist/esm/push.js +1 -0
  171. package/dist/esm/styles/AppColors.d.ts +40 -0
  172. package/dist/esm/styles/AppColors.js +1 -1
  173. package/dist/esm/styles/index.js +1 -1
  174. package/dist/esm/types/enums.d.ts +30 -20
  175. package/dist/esm/types/enums.js +1 -1
  176. package/dist/esm/types/index.d.ts +10 -0
  177. package/dist/esm/types/interfaces.d.ts +63 -7
  178. package/package.json +53 -24
  179. package/src/native/NativeInspector.ts +0 -1
  180. package/dist/commonjs/bundle.d.ts +0 -2
  181. package/dist/commonjs/bundle.js +0 -1
  182. package/dist/commonjs/components/BrandSquareIcon.d.ts +0 -5
  183. package/dist/commonjs/components/BrandSquareIcon.js +0 -112
  184. package/dist/commonjs/components/Inspector/BundleTab.d.ts +0 -48
  185. package/dist/commonjs/components/Inspector/BundleTab.js +0 -1297
  186. package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +0 -27
  187. package/dist/commonjs/components/Inspector/PerformanceTab.js +0 -454
  188. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -115
  189. package/dist/commonjs/customHooks/bundleAnalyzer.js +0 -1
  190. package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -144
  191. package/dist/commonjs/customHooks/performanceTracker.js +0 -63
  192. package/dist/commonjs/performance.d.ts +0 -2
  193. package/dist/commonjs/performance.js +0 -1
  194. package/dist/esm/bundle.d.ts +0 -2
  195. package/dist/esm/bundle.js +0 -1
  196. package/dist/esm/components/BrandSquareIcon.d.ts +0 -5
  197. package/dist/esm/components/BrandSquareIcon.js +0 -112
  198. package/dist/esm/components/Inspector/BundleTab.d.ts +0 -48
  199. package/dist/esm/components/Inspector/BundleTab.js +0 -1297
  200. package/dist/esm/components/Inspector/PerformanceTab.d.ts +0 -27
  201. package/dist/esm/components/Inspector/PerformanceTab.js +0 -454
  202. package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -115
  203. package/dist/esm/customHooks/bundleAnalyzer.js +0 -1
  204. package/dist/esm/customHooks/performanceTracker.d.ts +0 -144
  205. package/dist/esm/customHooks/performanceTracker.js +0 -63
  206. package/dist/esm/performance.d.ts +0 -2
  207. package/dist/esm/performance.js +0 -1
@@ -1,4 +1,4 @@
1
- import K,{useEffect as U,useRef as q}from"react";import{Animated as F,StyleSheet as $,Text as V,View as C}from"react-native";import{AppColors as e}from"../styles/AppColors";import{AppFonts as T}from"../styles/AppFonts";import{formatGap as Q,formatTime as X,getEventColor as Y,getEventCategory as Z,getCategoryColors as v}from"../helpers";import{useTranslation as ee}from"../i18n";import Ce from"./HighlightText";import Te from"./TouchableScale";import{CartIcon as L,MoneyIcon as Be,GlobeIcon as Ve,BoltIcon as Se,SparkleIcon as O,ClockIcon as Re}from"./NetworkIcons";const Ie=K.memo(function({event:o,onPress:j,isNew:I=!1,searchStr:A="",msSincePrev:W,computedScreenName:P}){const{t:S}=ee(),E=Y(o.name),_=o.params?Object.keys(o.params).length:0,D=o.userProperties?Object.keys(o.userProperties).length:0,z=Z(o.name),B=v(z),H=q(new F.Value(I?1:0)).current;U(()=>{I&&F.timing(H,{toValue:0,duration:1200,useNativeDriver:!1}).start()},[I]);const N=W!=null&&W>=2e3,G=S(z==="page_view"?"analytics.pageViewCategory":z==="ecommerce"?"analytics.ecommerceCategory":z==="system"?"analytics.systemCategory":"analytics.customCategory");return<C style={r.container}>
1
+ import K,{useEffect as U,useRef as q}from"react";import{Animated as F,StyleSheet as j,Text as V,View as C}from"react-native";import{AppColors as e}from"../styles/AppColors";import{AppFonts as T}from"../styles/AppFonts";import{formatGap as Q,formatTime as X,getEventColor as Y,getEventCategory as Z,getCategoryColors as v}from"../helpers";import{useTranslation as ee}from"../i18n";import Ce from"./HighlightText";import Te from"./TouchableScale";import{CartIcon as $,MoneyIcon as Be,GlobeIcon as Ve,BoltIcon as Se,SparkleIcon as L,ClockIcon as Ie,ForwardChevronIcon as Re}from"./NetworkIcons";const We=K.memo(function({event:o,onPress:O,isNew:R=!1,searchStr:A="",msSincePrev:W,computedScreenName:P}){const{t:S}=ee(),E=Y(o.name),_=o.params?Object.keys(o.params).length:0,H=o.userProperties?Object.keys(o.userProperties).length:0,z=Z(o.name),B=v(z),D=q(new F.Value(R?1:0)).current;U(()=>{R&&F.timing(D,{toValue:0,duration:1200,useNativeDriver:!1}).start()},[R]);const N=W!=null&&W>=2e3,G=S(z==="page_view"?"analytics.pageViewCategory":z==="ecommerce"?"analytics.ecommerceCategory":z==="system"?"analytics.systemCategory":"analytics.customCategory");return<C style={r.container}>
2
2
 
3
3
  {N&&<C style={r.gapContainer}>
4
4
  <C style={r.gapLine}/>
@@ -9,8 +9,8 @@ import K,{useEffect as U,useRef as q}from"react";import{Animated as F,StyleSheet
9
9
  </C>}
10
10
 
11
11
 
12
- <Te onPress={j}style={[r.modernCard,{borderLeftWidth:3.5,borderLeftColor:B.text}]}>
13
- {I&&<F.View style={[$.absoluteFill,{backgroundColor:E,opacity:H.interpolate({inputRange:[0,1],outputRange:[0,.08]})}]}/>}
12
+ <Te onPress={O}style={[r.modernCard,{borderLeftWidth:3.5,borderLeftColor:B.text}]}>
13
+ {R&&<F.View style={[j.absoluteFill,{backgroundColor:E,opacity:D.interpolate({inputRange:[0,1],outputRange:[0,.08]})}]}/>}
14
14
 
15
15
 
16
16
  <C style={r.cardHeader}>
@@ -24,7 +24,7 @@ import K,{useEffect as U,useRef as q}from"react";import{Animated as F,StyleSheet
24
24
 
25
25
 
26
26
  <C style={[r.iconBadge,{backgroundColor:B.bg,borderColor:B.border}]}>
27
- {z==="ecommerce"?<L color={B.text}size={12}/>:z==="page_view"?<Ve color={B.text}size={12}/>:z==="system"?<Se color={B.text}size={12}/>:<O color={B.text}size={12}/>}
27
+ {z==="ecommerce"?<$ color={B.text}size={12}/>:z==="page_view"?<Ve color={B.text}size={12}/>:z==="system"?<Se color={B.text}size={12}/>:<L color={B.text}size={12}/>}
28
28
  </C>
29
29
 
30
30
 
@@ -46,21 +46,24 @@ import K,{useEffect as U,useRef as q}from"react";import{Animated as F,StyleSheet
46
46
  </C>
47
47
 
48
48
 
49
- <C style={{flexDirection:"row",alignItems:"center",gap:3}}>
50
- <Re color={e.grayTextWeak}size={10}/>
51
- <V style={[r.timestamp,{color:e.grayTextWeak}]}>
52
- {X(o.timestamp)}
53
- </V>
49
+ <C style={{flexDirection:"row",alignItems:"center",gap:5}}>
50
+ <C style={{flexDirection:"row",alignItems:"center",gap:3}}>
51
+ <Ie color={e.grayTextWeak}size={10}/>
52
+ <V style={[r.timestamp,{color:e.grayTextWeak}]}>
53
+ {X(o.timestamp)}
54
+ </V>
55
+ </C>
56
+ <Re color={e.grayTextWeak}size={13}/>
54
57
  </C>
55
58
  </C>
56
59
 
57
60
 
58
61
  <C style={r.cardBody}>
59
62
  <C style={r.chipsRow}>
60
- {(()=>{const w=P||o.screenName||o.params?.firebase_screen||o.params?.screen_name||o.params?.firebase_screen_class;if(!w)return null;const R=typeof w=="object"?JSON.stringify(w):String(w);return<C style={[r.chip,{backgroundColor:`${e.amber500}12`,borderColor:`${e.amber500}2E`}]}>
63
+ {(()=>{const w=P||o.screenName||o.params?.firebase_screen||o.params?.screen_name||o.params?.firebase_screen_class;if(!w)return null;const I=typeof w=="object"?JSON.stringify(w):String(w);return<C style={[r.chip,{backgroundColor:`${e.amber500}12`,borderColor:`${e.amber500}2E`}]}>
61
64
  <C style={[r.screenDot,{backgroundColor:e.amber500}]}/>
62
65
  <V style={[r.chipText,{color:e.amber700,fontFamily:T.interBold}]}numberOfLines={1}>
63
- {R}
66
+ {I}
64
67
  </V>
65
68
  </C>})()}
66
69
 
@@ -70,22 +73,22 @@ import K,{useEffect as U,useRef as q}from"react";import{Animated as F,StyleSheet
70
73
  </V>
71
74
  </C>
72
75
 
73
- {D>0&&<C style={[r.chip,{backgroundColor:`${e.brandPurple}10`,borderColor:`${e.brandPurple}25`}]}>
74
- <O color={e.brandPurple}size={10}/>
76
+ {H>0&&<C style={[r.chip,{backgroundColor:`${e.brandPurple}10`,borderColor:`${e.brandPurple}25`}]}>
77
+ <L color={e.brandPurple}size={10}/>
75
78
  <V style={[r.chipText,{color:e.brandPurple,fontFamily:T.interBold}]}>
76
- {D} {S("analytics.props")}
79
+ {H} {S("analytics.props")}
77
80
  </V>
78
81
  </C>}
79
82
 
80
83
  {(()=>{const w=o.params?.items;return Array.isArray(w)&&w.length>0?<C style={[r.chip,{backgroundColor:e.amberBg,borderColor:e.amberBorder}]}>
81
- <L color={e.amber700}size={11}/>
84
+ <$ color={e.amber700}size={11}/>
82
85
  <V style={[r.chipText,{color:e.amber700,fontFamily:T.interBold}]}>
83
86
  {w.length}{" "}
84
87
  {w.length===1?S("analytics.item"):S("analytics.items")}
85
88
  </V>
86
89
  </C>:null})()}
87
90
 
88
- {(()=>{const w=o.params?.value??o.params?.price,R=o.params?.currency??"",M=typeof w=="string"||typeof w=="number";if(w!=null&&M&&String(w).trim()!==""){const J=typeof R=="string"&&R.trim()!==""?R.toUpperCase():"";return<C style={[r.chip,{backgroundColor:`${e.emerald500}15`,borderColor:`${e.emerald500}35`}]}>
91
+ {(()=>{const w=o.params?.value??o.params?.price,I=o.params?.currency??"",M=typeof w=="string"||typeof w=="number";if(w!=null&&M&&String(w).trim()!==""){const J=typeof I=="string"&&I.trim()!==""?I.toUpperCase():"";return<C style={[r.chip,{backgroundColor:`${e.emerald500}15`,borderColor:`${e.emerald500}35`}]}>
89
92
  <Be color={e.emerald600}size={11}/>
90
93
  <V style={[r.chipText,{color:e.emerald600,fontFamily:T.interBold}]}>
91
94
  {String(w)} {J}
@@ -94,4 +97,4 @@ import K,{useEffect as U,useRef as q}from"react";import{Animated as F,StyleSheet
94
97
  </C>
95
98
  </C>
96
99
  </Te>
97
- </C>}),r=$.create({container:{paddingHorizontal:10,paddingVertical:3},gapContainer:{flexDirection:"row",alignItems:"center",justifyContent:"center",marginVertical:6,gap:8},gapLine:{flex:1,height:1,backgroundColor:`${e.dividerColor}`},gapText:{fontFamily:T.interBold,fontSize:9.5,color:e.grayTextWeak,letterSpacing:.5},modernCard:{backgroundColor:e.white,borderRadius:10,borderWidth:1,borderColor:e.dividerColor,padding:10,shadowColor:e.black,shadowOpacity:.03,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1,overflow:"hidden",gap:8},cardHeader:{flexDirection:"row",justifyContent:"space-between",alignItems:"center"},iconBadge:{width:22,height:22,borderRadius:6,borderWidth:1,alignItems:"center",justifyContent:"center"},eventName:{fontFamily:T.interBold,fontSize:13,letterSpacing:.1,color:e.primaryBlack},timestamp:{fontFamily:T.interMedium,fontSize:10,color:e.grayTextWeak},highlight:{backgroundColor:e.yellowHighlight,color:e.primaryBlack,borderRadius:2},cardBody:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},chipsRow:{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:6,flex:1},chip:{flexDirection:"row",alignItems:"center",paddingHorizontal:6,paddingVertical:2.5,borderRadius:5,borderWidth:1,gap:3.5},chipText:{fontFamily:T.interMedium,fontSize:10,color:e.grayText},screenDot:{width:5,height:5,borderRadius:2.5},duplicateBadge:{backgroundColor:e.roseBg,borderColor:e.roseBorder,borderWidth:1,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4},duplicateText:{fontFamily:T.interBold,fontSize:9,color:e.rose600,textTransform:"uppercase"},idBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:6,backgroundColor:`${e.slate500}12`,borderWidth:1,borderColor:`${e.slate500}22`},idBadgeText:{fontFamily:T.interBold,fontSize:10,color:e.grayTextWeak,letterSpacing:.2},categoryBadge:{borderWidth:1,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4},categoryText:{fontFamily:T.interBold,fontSize:8.5,textTransform:"uppercase",letterSpacing:.4}});export default Ie;
100
+ </C>}),r=j.create({container:{paddingHorizontal:10,paddingVertical:4,height:86,justifyContent:"center"},gapContainer:{flexDirection:"row",alignItems:"center",justifyContent:"center",marginVertical:4,gap:8},gapLine:{flex:1,height:1,backgroundColor:`${e.dividerColor}`},gapText:{fontFamily:T.interBold,fontSize:9.5,color:e.grayTextWeak,letterSpacing:.5},modernCard:{backgroundColor:e.white,borderRadius:10,borderWidth:1,borderColor:e.dividerColor,paddingHorizontal:12,paddingVertical:9,shadowColor:e.black,shadowOpacity:.03,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1,overflow:"hidden",height:78,justifyContent:"space-between"},cardHeader:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",height:24},iconBadge:{width:22,height:22,borderRadius:6,borderWidth:1,alignItems:"center",justifyContent:"center"},eventName:{fontFamily:T.interBold,fontSize:13,lineHeight:17,letterSpacing:.1,color:e.primaryBlack},timestamp:{fontFamily:T.interMedium,fontSize:10.5,lineHeight:14,color:e.grayTextWeak},highlight:{backgroundColor:e.yellowHighlight,color:e.primaryBlack,borderRadius:2},cardBody:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:24,overflow:"hidden"},chipsRow:{flexDirection:"row",alignItems:"center",flexWrap:"nowrap",gap:6,flex:1,overflow:"hidden"},chip:{flexDirection:"row",alignItems:"center",paddingHorizontal:6,paddingVertical:2.5,borderRadius:4.5,borderWidth:1,gap:3.5},chipText:{fontFamily:T.interMedium,fontSize:10,lineHeight:13,color:e.grayText},screenDot:{width:5,height:5,borderRadius:2.5},duplicateBadge:{backgroundColor:e.roseBg,borderColor:e.roseBorder,borderWidth:1,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4},duplicateText:{fontFamily:T.interBold,fontSize:8.5,color:e.rose600,textTransform:"uppercase"},idBadge:{paddingHorizontal:5.5,paddingVertical:2,borderRadius:5,backgroundColor:`${e.slate500}12`,borderWidth:1,borderColor:`${e.slate500}22`},idBadgeText:{fontFamily:T.interBold,fontSize:9.5,color:e.grayTextWeak,letterSpacing:.2},categoryBadge:{borderWidth:1,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4},categoryText:{fontFamily:T.interBold,fontSize:8.5,textTransform:"uppercase",letterSpacing:.4}});export default We;
@@ -1,7 +1,5 @@
1
- import b from"react";import{Image as R,StyleSheet as A,View as C}from"react-native";import S from"./BrandSquareIcon";import{AppColors as o}from"../styles/AppColors";export const AppHeaderLogo=({size:e=46,customIcon:t})=>{const r=Math.round(e*.23);if(t){if(b.isValidElement(t)){const y=b.cloneElement(t,{size:e,width:e,height:e});return<C style={[i.container,{width:e,height:e,borderRadius:r}]}>
2
- {y}
3
- </C>}return<C style={[i.imageContainer,{width:e,height:e,borderRadius:r}]}>
4
- <R source={t}style={[i.image,{borderRadius:r-2}]}resizeMode="cover"/>
5
- </C>}return<C style={[i.container,{width:e,height:e,borderRadius:r}]}>
6
- <S size={e}/>
7
- </C>};const i=A.create({container:{overflow:"hidden",alignItems:"center",justifyContent:"center",borderWidth:1.5,borderColor:o.whiteAlpha33,backgroundColor:o.whiteAlpha12,shadowColor:o.shadowColorString,shadowOffset:{width:0,height:2},shadowOpacity:.35,shadowRadius:5,elevation:4},imageContainer:{overflow:"hidden",backgroundColor:o.whiteAlpha15,borderWidth:1.5,borderColor:o.whiteAlpha33,alignItems:"center",justifyContent:"center",shadowColor:o.shadowColorString,shadowOffset:{width:0,height:2},shadowOpacity:.3,shadowRadius:4,elevation:3,padding:1.5},image:{width:"100%",height:"100%"}});export default AppHeaderLogo;
1
+ import o from"react";import{Image as R,StyleSheet as V,View as C}from"react-native";import S from"./BrandCircleIcon";export const AppHeaderLogo=({size:e=52,customIcon:t})=>{const r=Math.round(e*.23);if(t){if(o.isValidElement(t)){const b=o.cloneElement(t,{size:e,width:e,height:e});return<C style={[n.container,{width:e,height:e,borderRadius:r}]}>
2
+ {b}
3
+ </C>}return<C style={[n.imageContainer,{width:e,height:e,borderRadius:r}]}>
4
+ <R source={t}style={[n.image,{borderRadius:r}]}resizeMode="cover"/>
5
+ </C>}return<S size={e}/>};const n=V.create({container:{overflow:"hidden",alignItems:"center",justifyContent:"center",backgroundColor:"transparent"},imageContainer:{overflow:"hidden",backgroundColor:"transparent",alignItems:"center",justifyContent:"center"},image:{width:"100%",height:"100%"}});export default AppHeaderLogo;
@@ -1,3 +1,4 @@
1
1
  import React from 'react';
2
2
  import { ConsoleLogCardProps } from '../types';
3
3
  export declare const ConsoleLogCard: React.NamedExoticComponent<ConsoleLogCardProps>;
4
+ export default ConsoleLogCard;
@@ -1,99 +1,111 @@
1
- import z,{useState as G}from"react";import{useTranslation as v}from"../i18n";import{Pressable as N,StyleSheet as K,Text as I,View as T}from"react-native";import{AppColors as o}from"../styles/AppColors";import{AppFonts as b}from"../styles/AppFonts";import{formatTime as j,getJsonContent as Y,getJsonPreviewText as X,parseStackLine as J,openInVSCode as Q}from"../helpers";import Z from"./CopyButton";import P from"./LogSyntaxHighlighter";import{ChevronIcon as D,ExternalLinkIcon as _,FlaskIcon as ee,ZapIcon as W,GlobeIcon as oe,DiceIcon as re,AtomIcon as H,BarChartIcon as te,KeyIcon as le,SmartphoneIcon as ae,AlertTriangleIcon as ne,BugIcon as ie,TagIcon as de,MapPinIcon as M,StorageIcon as ce,SignalIcon as se,FlameIcon as ge,MoneyIcon as pe,CircleCheckIcon as fe,RefreshCcwIcon as Te,PerformanceIcon as ue,ChipIcon as be,SettingsIcon as Ce,TerminalIcon as ye,InfoCircleIcon as Ie,ShieldAlertIcon as me,LayoutIcon as he,ClockIcon as Ee}from"./NetworkIcons";import{useInspector as Be}from"./Inspector/InspectorContext";const $=(B,t,E,F,S)=>{if(!B)return null;const h=/^((?:\[[^\]]+\]\s*)+)/,A=B.match(h);if(A){const C=A[1],R=B.substring(C.length),V=C.match(/\[[^\]]+\]/g)||[],u=O=>{const e=O.replace(/[\[\]]/g,"").trim().toUpperCase();return e==="AXIOS"?{color:o.emerald600,Icon:W,label:"AXIOS"}:e==="API"||e==="FETCH"||e==="HTTP"||e==="REST"||e==="NETWORK"?{color:o.sky600,Icon:oe,label:e}:e==="GRAPHQL"||e==="GQL"||e==="APOLLO"||e==="MUTATION"||e==="QUERY"?{color:o.pink500,Icon:H,label:e}:e==="WS"||e==="WEBSOCKET"||e==="SOCKET"||e==="SOCKET.IO"||e==="REALTIME"?{color:o.cyan600,Icon:se,label:e}:e==="REDUX"||e==="STORE"||e==="STATE"||e==="ZUSTAND"||e==="MOBX"||e==="RECOIL"||e==="ACTION"||e==="DISPATCH"?{color:o.violet600,Icon:H,label:e}:e==="ANALYTICS"||e==="FIREBASE"||e==="GA4"||e==="GA"||e==="SEGMENT"||e==="MIXPANEL"||e==="POSTHOG"||e==="TRACK"||e==="EVENT"?{color:o.teal600,Icon:te,label:e}:e==="AUTH"||e==="TOKEN"||e==="SESSION"||e==="JWT"||e==="LOGIN"||e==="LOGOUT"||e==="USER"?{color:o.amber600,Icon:le,label:e}:e==="SECURITY"||e==="SHIELD"||e==="PERMISSION"||e==="PERMISSIONS"?{color:o.indigo600Alt,Icon:me,label:e}:e==="NAV"||e==="NAVIGATION"||e==="ROUTE"||e==="SCREEN"||e==="ROUTER"||e==="DEEPLINK"?{color:o.indigo600Alt,Icon:M,label:e}:e==="STORAGE"||e==="ASYNCSTORAGE"||e==="MMKV"||e==="SQLITE"||e==="DB"||e==="DATABASE"||e==="REALM"||e==="CACHE"?{color:o.purple500,Icon:ce,label:e}:e==="PERF"||e==="RENDER"||e==="PERFORMANCE"||e==="FPS"||e==="MEMORY"?{color:o.violet500,Icon:ue,label:e}:e==="INIT"||e==="BOOT"||e==="STARTUP"||e==="LIFECYCLE"||e==="MOUNT"||e==="UNMOUNT"?{color:o.blue600,Icon:W,label:e}:e==="SYNC"||e==="REFRESH"||e==="BACKGROUND"||e==="JOB"||e==="WORKER"?{color:o.sky600,Icon:Te,label:e}:e==="PUSH"||e==="NOTIF"||e==="NOTIFICATION"||e==="FCM"||e==="APNS"?{color:o.darkOrange,Icon:ge,label:e}:e==="PAY"||e==="PAYMENT"||e==="STRIPE"||e==="IAP"||e==="BILLING"||e==="CHECKOUT"||e==="CART"?{color:o.emerald600,Icon:pe,label:e}:e==="DEVICE"||e==="HARDWARE"||e==="BLE"||e==="BLUETOOTH"||e==="NFC"||e==="SENSOR"?{color:o.slate600,Icon:be,label:e}:e==="LOCATION"||e==="GPS"||e==="GEO"?{color:o.emerald600,Icon:M,label:e}:e==="APP"?{color:o.indigo600Alt,Icon:ae,label:"APP"}:e==="UI"||e==="VIEW"||e==="THEME"||e==="STYLE"||e==="LAYOUT"?{color:o.pink600,Icon:he,label:e}:e==="TEST"||e==="MOCK"||e==="SPEC"?{color:o.emerald500,Icon:ee,label:"TEST"}:e==="SAMPLE"||e==="BATCH"?{color:o.indigo600Alt,Icon:re,label:e}:e==="CONFIG"||e==="ENV"||e==="SETTINGS"?{color:o.slate700,Icon:Ce,label:e}:e==="DEBUG"||e==="TRACE"?{color:o.purpleText,Icon:ye,label:e}:e==="INFO"?{color:o.sky600,Icon:Ie,label:"INFO"}:e==="SUCCESS"||e==="OK"||e==="DONE"||e==="PASSED"?{color:o.green600,Icon:fe,label:e}:e==="WARN"||e==="WARNING"?{color:o.amber600,Icon:ne,label:"WARN"}:e==="ERROR"||e==="CRASH"||e==="BUG"||e==="FATAL"||e==="EXCEPTION"||e==="FAIL"?{color:o.red600,Icon:ie,label:e==="CRASH"||e==="BUG"||e==="FATAL"||e==="EXCEPTION"||e==="FAIL"?e:"ERROR"}:{color:o.slate600,Icon:de,label:e}};return<T style={{flexDirection:"column",gap:6}}>
2
- <T style={{flexDirection:"row",flexWrap:"wrap",gap:5}}>
3
- {V.map((O,e)=>{const m=u(O),L=m.Icon;return<T key={e}style={[r.prefixTag,{backgroundColor:`${m.color}14`,borderColor:`${m.color}33`}]}>
4
- <L color={m.color}size={10}/>
5
- <I style={[r.prefixTagText,{color:m.color}]}>
6
- {m.label}
7
- </I>
1
+ import z from"react";import{useTranslation as G}from"../i18n";import{Pressable as K,StyleSheet as Y,Text as E,View as T}from"react-native";import{AppColors as r}from"../styles/AppColors";import{AppFonts as B}from"../styles/AppFonts";import{formatTime as X,getJsonContent as J,getJsonPreviewText as Q,parseStackLine as Z,openInVSCode as q,getSize as _,getCleanCallerDisplay as ee}from"../helpers";import Te from"./TouchableScale";import N from"./LogSyntaxHighlighter";import{ForwardChevronIcon as Ce,ExternalLinkIcon as Ie,FlaskIcon as he,ZapIcon as V,GlobeIcon as xe,DiceIcon as ye,AtomIcon as M,BarChartIcon as Se,KeyIcon as me,SmartphoneIcon as Ee,AlertTriangleIcon as Be,BugIcon as Re,TagIcon as Ae,MapPinIcon as $,StorageIcon as Oe,SignalIcon as Pe,FlameIcon as we,MoneyIcon as ke,CircleCheckIcon as U,CircleAlertIcon as Ne,CircleXIcon as Le,RefreshCcwIcon as He,PerformanceIcon as Ve,ChipIcon as Fe,SettingsIcon as De,TerminalIcon as ze,InfoCircleIcon as W,ShieldAlertIcon as Me,LayoutIcon as $e,ClockIcon as Ue,SizeIcon as We}from"./NetworkIcons";import{useInspector as Ge}from"./Inspector/InspectorContext";const ve=(w,C,O,F,L)=>{if(!w)return null;const x=/^((?:\[[^\]]+\]\s*)+)/,k=w.match(x);if(k){const I=k[1],D=w.substring(I.length),h=I.match(/\[[^\]]+\]/g)||[],H=P=>{const e=P.replace(/[\[\]]/g,"").trim().toUpperCase();return e==="AXIOS"?{color:r.emerald600,Icon:V,label:"AXIOS"}:e==="API"||e==="FETCH"||e==="HTTP"||e==="REST"||e==="NETWORK"?{color:r.sky600,Icon:xe,label:e}:e==="GRAPHQL"||e==="GQL"||e==="APOLLO"||e==="MUTATION"||e==="QUERY"?{color:r.pink500,Icon:M,label:e}:e==="WS"||e==="WEBSOCKET"||e==="SOCKET"||e==="SOCKET.IO"||e==="REALTIME"?{color:r.cyan600,Icon:Pe,label:e}:e==="REDUX"||e==="STORE"||e==="STATE"||e==="ZUSTAND"||e==="MOBX"||e==="RECOIL"||e==="ACTION"||e==="DISPATCH"?{color:r.violet600,Icon:M,label:e}:e==="ANALYTICS"||e==="FIREBASE"||e==="GA4"||e==="GA"||e==="SEGMENT"||e==="MIXPANEL"||e==="POSTHOG"||e==="TRACK"||e==="EVENT"?{color:r.teal600,Icon:Se,label:e}:e==="AUTH"||e==="TOKEN"||e==="SESSION"||e==="JWT"||e==="LOGIN"||e==="LOGOUT"||e==="USER"?{color:r.amber600,Icon:me,label:e}:e==="SECURITY"||e==="SHIELD"||e==="PERMISSION"||e==="PERMISSIONS"?{color:r.indigo600Alt,Icon:Me,label:e}:e==="NAV"||e==="NAVIGATION"||e==="ROUTE"||e==="SCREEN"||e==="ROUTER"||e==="DEEPLINK"?{color:r.indigo600Alt,Icon:$,label:e}:e==="STORAGE"||e==="ASYNCSTORAGE"||e==="MMKV"||e==="SQLITE"||e==="DB"||e==="DATABASE"||e==="REALM"||e==="CACHE"?{color:r.purple500,Icon:Oe,label:e}:e==="PERF"||e==="RENDER"||e==="PERFORMANCE"||e==="FPS"||e==="MEMORY"?{color:r.violet500,Icon:Ve,label:e}:e==="INIT"||e==="BOOT"||e==="STARTUP"||e==="LIFECYCLE"||e==="MOUNT"||e==="UNMOUNT"?{color:r.blue600,Icon:V,label:e}:e==="SYNC"||e==="REFRESH"||e==="BACKGROUND"||e==="JOB"||e==="WORKER"?{color:r.sky600,Icon:He,label:e}:e==="PUSH"||e==="NOTIF"||e==="NOTIFICATION"||e==="FCM"||e==="APNS"?{color:r.darkOrange,Icon:we,label:e}:e==="PAY"||e==="PAYMENT"||e==="STRIPE"||e==="IAP"||e==="BILLING"||e==="CHECKOUT"||e==="CART"?{color:r.emerald600,Icon:ke,label:e}:e==="DEVICE"||e==="HARDWARE"||e==="BLE"||e==="BLUETOOTH"||e==="NFC"||e==="SENSOR"?{color:r.slate600,Icon:Fe,label:e}:e==="LOCATION"||e==="GPS"||e==="GEO"?{color:r.emerald600,Icon:$,label:e}:e==="APP"?{color:r.indigo600Alt,Icon:Ee,label:"APP"}:e==="UI"||e==="VIEW"||e==="THEME"||e==="STYLE"||e==="LAYOUT"?{color:r.pink600,Icon:$e,label:e}:e==="TEST"||e==="MOCK"||e==="SPEC"?{color:r.emerald500,Icon:he,label:"TEST"}:e==="SAMPLE"||e==="BATCH"?{color:r.indigo600Alt,Icon:ye,label:e}:e==="CONFIG"||e==="ENV"||e==="SETTINGS"?{color:r.slate700,Icon:De,label:e}:e==="DEBUG"||e==="TRACE"?{color:r.purpleText,Icon:ze,label:e}:e==="INFO"?{color:r.sky600,Icon:W,label:"INFO"}:e==="SUCCESS"||e==="OK"||e==="DONE"||e==="PASSED"?{color:r.green600,Icon:U,label:e}:e==="WARN"||e==="WARNING"?{color:r.amber600,Icon:Be,label:"WARN"}:e==="ERROR"||e==="CRASH"||e==="BUG"||e==="FATAL"||e==="EXCEPTION"||e==="FAIL"?{color:r.red600,Icon:Re,label:e==="CRASH"||e==="BUG"||e==="FATAL"||e==="EXCEPTION"||e==="FAIL"?e:"ERROR"}:{color:r.slate600,Icon:Ae,label:e}};return<T style={{flexDirection:"column",gap:2}}>
2
+ <T style={{flexDirection:"row",gap:4,overflow:"hidden"}}>
3
+ {h.slice(0,2).map((P,e)=>{const R=H(P),S=R.Icon;return<T key={e}style={[o.prefixTag,{backgroundColor:`${R.color}12`,borderColor:`${R.color}30`}]}>
4
+ <S color={R.color}size={8.5}/>
5
+ <E style={[o.prefixTagText,{color:R.color}]}>
6
+ {R.label}
7
+ </E>
8
8
  </T>})}
9
9
  </T>
10
- <P text={R}search={t}style={E}numberOfLines={S}detectLinks={!0}/>
11
- </T>}return<P text={B}search={t}style={E}numberOfLines={S}detectLinks={!0}/>};export const ConsoleLogCard=z.memo(function({item:t,searchStr:E=""}){const{setSelectedLog:F}=Be(),{t:S}=v(),[h,A]=G(!1),C=Y(t.message),R=t.message.toLowerCase().includes("[analytics error]"),V=t.sourceMethod==="log",u=t.caller&&t.caller!=="Unknown"?J(t.caller,!0):null,e=(()=>{const y=(t.type||"log").toLowerCase(),x=(t.sourceMethod||y).toLowerCase();return R||y==="error"||x==="error"?{border:o.errorColor,badgeBg:`${o.errorColor}18`,badgeText:o.errorColor,label:"ERROR",cardBg:o.errorCardBg,methodBorder:`${o.errorColor}30`,methodBg:`${o.errorColor}12`,methodText:o.errorColor,textColor:o.redErrorText}:y==="warn"||x==="warn"?{border:o.amber600,badgeBg:`${o.amber600}18`,badgeText:o.amber800,label:"WARN",cardBg:o.warnCardBg,methodBorder:`${o.amber600}33`,methodBg:`${o.amber600}14`,methodText:o.amber800,textColor:o.amber800}:y==="debug"||x==="debug"?{border:o.purple500,badgeBg:`${o.purple500}18`,badgeText:o.purple,label:"DEBUG",cardBg:o.purpleTintBg,methodBorder:`${o.purple500}33`,methodBg:`${o.purple500}12`,methodText:o.purple,textColor:o.purpleText}:x==="info"||y==="info"&&x!=="log"?{border:o.sky500,badgeBg:`${o.sky500}18`,badgeText:o.sky600,label:"INFO",cardBg:o.blueTintBg,methodBorder:`${o.sky500}33`,methodBg:`${o.sky500}12`,methodText:o.sky600,textColor:o.blue800}:{border:o.indigo500,badgeBg:`${o.indigo500}15`,badgeText:o.indigo600Alt,label:"LOG",cardBg:o.white,methodBorder:o.dividerColor,methodBg:o.indigo50,methodText:o.indigo600Alt,textColor:o.primaryBlack}})(),m=C?X(C.data):null,L=()=>{F(t)},U=y=>{y?.stopPropagation?.(),A(x=>!x)};return<T style={r.container}>
12
- <N onPress={L}style={({pressed:y})=>[r.card,{borderLeftColor:e.border,borderLeftWidth:3.5,backgroundColor:e.cardBg},y&&r.cardPressed]}>
13
-
14
- <T style={r.cardHeader}>
15
- <T style={r.headerLeft}>
16
- <T style={r.idBadge}>
17
- <I style={r.idBadgeText}>
18
- #{t.id!=null?t.id+1:1}
19
- </I>
20
- </T>
21
- <T style={[r.typeChip,{backgroundColor:e.badgeBg}]}>
22
- <T style={[r.typeDot,{backgroundColor:e.badgeText}]}/>
23
- <I style={[r.typeChipText,{color:e.badgeText,fontFamily:b.interBold}]}>
24
- {e.label}
25
- </I>
10
+ <N text={D}search={C}style={O}numberOfLines={1}detectLinks={!1}/>
11
+ </T>}return<N text={w}search={C}style={O}numberOfLines={L||2}detectLinks={!1}/>};export const ConsoleLogCard=z.memo(function({item:C,searchStr:O=""}){const{setSelectedLog:F}=Ge(),{t:L}=G(),x=J(C.message),k=C.message.toLowerCase().includes("[analytics error]"),I=z.useMemo(()=>{const S=ee(C.caller);if(!S)return null;const A=Z(C.caller,!0);return{...A,display:S.display,fileName:S.fileName,lineNumber:S.lineNumber||A.lineNumber}},[C.caller]),h=(()=>{const S=(C.type||"log").toLowerCase(),A=(C.sourceMethod||S).toLowerCase();return k||S==="error"||A==="error"?{badgeColor:r.errorColor,border:r.errorColor,badgeBg:`${r.errorColor}18`,badgeText:r.errorColor,label:"ERROR",cardBg:r.errorCardBg,statusPillBg:`${r.errorColor}14`,statusPillBorder:`${r.errorColor}33`,statusPillText:r.errorColor,StatusIcon:Le}:S==="warn"||A==="warn"?{badgeColor:r.darkOrange,border:r.darkOrange,badgeBg:`${r.darkOrange}18`,badgeText:r.darkOrange,label:"WARN",cardBg:r.warnCardBg,statusPillBg:`${r.darkOrange}14`,statusPillBorder:`${r.darkOrange}33`,statusPillText:r.darkOrange,StatusIcon:Ne}:S==="debug"||A==="debug"?{badgeColor:r.purple,border:r.purple,badgeBg:`${r.purple}18`,badgeText:r.purple,label:"DEBUG",cardBg:r.purpleTintBg,statusPillBg:`${r.purple}14`,statusPillBorder:`${r.purple}33`,statusPillText:r.purple,StatusIcon:V}:A==="info"||S==="info"&&A!=="log"?{badgeColor:r.sky600,border:r.sky600,badgeBg:`${r.sky600}18`,badgeText:r.sky600,label:"INFO",cardBg:r.blueTintBg,statusPillBg:`${r.sky600}14`,statusPillBorder:`${r.sky600}33`,statusPillText:r.sky600,StatusIcon:W}:{badgeColor:r.brandPurple,border:r.brandPurple,badgeBg:`${r.brandPurple}15`,badgeText:r.brandPurple,label:"LOG",cardBg:r.white,statusPillBg:`${r.brandPurple}12`,statusPillBorder:`${r.brandPurple}2E`,statusPillText:r.brandPurple,StatusIcon:U}})(),H=h.StatusIcon,P=x?Q(x.data):null,e=()=>{F(C)},R=("sourceMethod"in C?C.sourceMethod:void 0)||C.type||"log";return<T style={o.container}>
12
+ <Te onPress={e}style={[o.card,{borderLeftWidth:3.5,borderLeftColor:h.border,backgroundColor:h.cardBg}]}>
13
+ <T style={o.cardBody}>
14
+
15
+ <T style={o.cardHeaderRow}>
16
+ <T style={o.cardHeaderLeft}>
17
+ <E style={o.serialNumber}>
18
+ #{C.id!=null?C.id+1:1}
19
+ </E>
20
+
21
+
22
+ <T style={[o.methodBadge,{backgroundColor:h.badgeColor}]}>
23
+ <E style={o.methodBadgeText}>{h.label}</E>
24
+ </T>
25
+
26
+
27
+ <T style={[o.chip,{backgroundColor:`${h.badgeColor}12`,borderColor:`${h.badgeColor}2E`}]}>
28
+ <E style={[o.chipText,{color:h.badgeColor}]}numberOfLines={1}>
29
+ console.{R}
30
+ </E>
31
+ </T>
32
+
33
+
34
+ {x&&<T style={[o.chip,{backgroundColor:`${r.teal600}14`,borderColor:`${r.teal600}33`}]}>
35
+ <E style={[o.chipText,{color:r.teal600}]}>
36
+ {Array.isArray(x.data)?`Array[${x.data.length}]`:`Object{${Object.keys(x.data).length}}`}
37
+ </E>
38
+ </T>}
39
+
40
+
41
+ {"duplicateCount"in C&&C.duplicateCount!=null&&C.duplicateCount>1&&<T style={o.dupBadge}>
42
+ <E style={o.dupBadgeText}>
43
+ ×{C.duplicateCount}
44
+ </E>
45
+ </T>}
26
46
  </T>
27
- <T style={[r.metaChip,{backgroundColor:e.methodBg,borderColor:e.methodBorder}]}>
28
- <I style={[r.metaChipText,{color:e.methodText,fontFamily:b.interBold}]}>
29
- console.
30
- {("sourceMethod"in t?t.sourceMethod:void 0)||t.type||"log"}
31
- </I>
47
+
48
+
49
+ <T style={o.cardHeaderRight}>
50
+ <T style={[o.statusPill,{backgroundColor:h.statusPillBg,borderColor:h.statusPillBorder}]}>
51
+ <H color={h.statusPillText}size={9.5}/>
52
+ <E style={[o.statusPillText,{color:h.statusPillText}]}>
53
+ {h.label}
54
+ </E>
55
+ </T>
56
+ <Ce color={r.grayTextWeak}size={13}/>
32
57
  </T>
33
- {C&&<T style={[r.metaChip,{backgroundColor:`${o.teal600}14`,borderColor:`${o.teal600}33`}]}>
34
- <I style={[r.metaChipText,{color:o.teal600,fontFamily:b.interBold}]}>
35
- {Array.isArray(C.data)?`Array[${C.data.length}]`:`Object{${Object.keys(C.data).length}}`}
36
- </I>
37
- </T>}
38
- {"duplicateCount"in t&&t.duplicateCount!=null&&t.duplicateCount>1&&<T style={[r.metaChip,{backgroundColor:`${o.purple}1A`,borderColor:`${o.purple}3D`}]}>
39
- <I style={[r.metaChipText,{color:o.purple,fontFamily:b.interBold}]}>
40
- ×{t.duplicateCount}
41
- </I>
42
- </T>}
43
58
  </T>
44
59
 
45
- <T style={r.headerRight}>
46
- <Z value={t.message}label={S("console.logMessage")}/>
47
- <D color={o.grayTextWeak}size={14}/>
60
+
61
+ <T style={o.messageBox}>
62
+ {x?<T style={o.jsonPreviewRow}>
63
+ {x.header?<N text={x.header}search={O}style={o.messageText}detectLinks={!1}numberOfLines={1}/>:null}
64
+ {P&&<N text={P.text.replace(/\s+/g," ")}search={O}style={o.jsonPreviewText}detectLinks={!1}numberOfLines={x.header?2:3}/>}
65
+ </T>:ve(C.message,O,o.messageText,o.highlight,3)}
48
66
  </T>
49
- </T>
50
67
 
51
-
52
- <T style={r.cardBody}>
53
- {C?<>
54
- {C.header?$(C.header,E,[r.messageText,{color:o.primaryBlack}],r.highlight,h?void 0:2):null}
55
- {m&&<T style={r.jsonPreviewContainer}>
56
- <P text={m.text}search={E}style={[r.jsonPreviewText,{color:o.primaryBlack}]}detectLinks={!1}numberOfLines={h?void 0:4}/>
57
- {m.text.split(`
58
- `).length>4&&<N onPress={U}hitSlop={6}style={r.expandToggle}>
59
- <I style={r.expandToggleText}>
60
- {h?"Show less":"Show full preview"}
61
- </I>
62
- <D color={o.purple}size={11}direction={h?"up":"down"}/>
63
- </N>}
64
- </T>}
65
- </>:$(t.message,E,[r.messageText,{color:o.primaryBlack}],r.highlight,h?void 0:4)}
66
- </T>
68
+
69
+ <T style={o.cardFooterRow}>
70
+ <T style={o.footerLeft}>
71
+ <T style={o.cardDateRow}>
72
+ <Ue color={r.grayTextWeak}size={10}/>
73
+ <E style={o.cardDateText}numberOfLines={1}>
74
+ {X(C.timestamp)}
75
+ </E>
76
+ </T>
67
77
 
68
-
69
- <T style={r.cardFooter}>
70
- <T style={r.footerLeft}>
71
- <Ee color={o.grayTextWeak}size={11}/>
72
- <I style={r.footerTime}>{j(t.timestamp)}</I>
73
- {u&&<>
74
- <T style={r.footerDot}/>
75
- <N onPress={y=>{y.stopPropagation?.(),Q(u.rawFilePath||u.fullPath||u.fileName,u.lineNumber,u.columnNumber)}}hitSlop={8}style={r.callerPill}>
76
- {u.fileExt&&u.fileExt!=="other"&&<T style={[r.extBadge,{backgroundColor:u.fileExt==="tsx"||u.fileExt==="ts"?`${o.brandPurple}22`:`${o.teal600}22`}]}>
77
- <I style={[r.extBadgeText,{color:u.fileExt==="tsx"||u.fileExt==="ts"?o.brandPurple:o.teal600}]}>
78
- {u.fileExt.toUpperCase()}
79
- </I>
78
+ {I&&<K onPress={S=>{S.stopPropagation?.(),q(I.rawFilePath||I.fullPath||I.fileName,I.lineNumber,I.columnNumber)}}hitSlop={8}style={o.callerChip}>
79
+ {I.fileExt&&I.fileExt!=="other"&&<T style={[o.extBadge,{backgroundColor:I.fileExt==="tsx"||I.fileExt==="ts"?`${r.brandPurple}22`:`${r.teal600}22`}]}>
80
+ <E style={[o.extBadgeText,{color:I.fileExt==="tsx"||I.fileExt==="ts"?r.brandPurple:r.teal600}]}>
81
+ {I.fileExt.toUpperCase()}
82
+ </E>
80
83
  </T>}
81
- <I style={r.callerFileName}numberOfLines={1}ellipsizeMode="middle">
82
- {u.fileName}
83
- {u.lineNumber?`:${u.lineNumber}`:""}
84
- </I>
85
- <_ color={o.sky600}size={8.5}/>
86
- </N>
87
- </>}
84
+ <E style={o.callerChipText}numberOfLines={1}ellipsizeMode="middle">
85
+ {I.display}
86
+ </E>
87
+ <Ie color={r.sky600}size={8}/>
88
+ </K>}
89
+ </T>
90
+
91
+ <T style={o.footerRight}>
92
+ {x&&<T style={o.metaStatChip}>
93
+ <We color={r.purple}size={8.5}/>
94
+ <E style={o.metaStatText}>
95
+ {_(x.data)}
96
+ </E>
97
+ </T>}
98
+
99
+ {k&&<T style={[o.chip,{backgroundColor:`${r.skyBlue}15`,borderColor:`${r.skyBlue}30`}]}>
100
+ <E style={[o.chipText,{color:r.skyBlue}]}>
101
+ {L("console.analyticsBadge")||"ANALYTICS"}
102
+ </E>
103
+ </T>}
104
+ </T>
88
105
  </T>
89
106
 
90
- {R&&<T style={r.footerRight}>
91
- <T style={[r.footerBadge,{backgroundColor:`${o.skyBlue}15`,borderColor:`${o.skyBlue}30`}]}>
92
- <I style={[r.footerBadgeText,{color:o.skyBlue}]}>
93
- {S("console.analyticsBadge")}
94
- </I>
95
- </T>
96
- </T>}
107
+
108
+ <T style={[o.bottomAccentBar,{backgroundColor:`${h.border}35`}]}/>
97
109
  </T>
98
- </N>
99
- </T>});const r=K.create({container:{paddingHorizontal:10,paddingVertical:3.5},card:{alignSelf:"stretch",borderRadius:11,borderWidth:1,borderColor:o.grayBorderSecondary,borderLeftWidth:3.5,paddingHorizontal:12,paddingTop:10,paddingBottom:9,backgroundColor:o.white,shadowColor:o.black,shadowOpacity:.04,shadowRadius:3,shadowOffset:{width:0,height:1.5},elevation:1.5},cardPressed:{opacity:.88,transform:[{scale:.995}]},cardHeader:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:6,gap:8},headerLeft:{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:6,flex:1},idBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:6,backgroundColor:`${o.slate500}12`,borderWidth:1,borderColor:`${o.slate500}22`},idBadgeText:{fontFamily:b.interBold,fontSize:10,color:o.grayTextWeak,letterSpacing:.2},headerRight:{flexDirection:"row",alignItems:"center",gap:6},typeChip:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:7,paddingVertical:2.5,borderRadius:6},typeDot:{width:5,height:5,borderRadius:2.5},typeChipText:{fontFamily:b.interBold,fontSize:9.5,letterSpacing:.5},metaChip:{paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1},metaChipText:{fontFamily:b.interBold,fontSize:9.5,letterSpacing:.2},cardBody:{paddingVertical:2},messageText:{fontFamily:b.interMedium,fontSize:12.5,color:o.primaryBlack,lineHeight:18},highlight:{backgroundColor:o.yellowHighlight,color:o.primaryBlack,borderRadius:2},jsonPreviewContainer:{marginTop:6,backgroundColor:o.grayBackground,borderRadius:8,borderWidth:1,borderColor:o.grayBorderSecondary,borderLeftWidth:3,borderLeftColor:o.teal600,paddingHorizontal:10,paddingVertical:7},jsonPreviewText:{fontFamily:b.interRegular,fontSize:11,color:o.primaryBlack,lineHeight:16},expandToggle:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:4,marginTop:5,paddingVertical:3,borderTopWidth:1,borderTopColor:o.dividerColor},expandToggleText:{fontFamily:b.interBold,fontSize:10.5,color:o.purple},cardFooter:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginTop:7,paddingTop:6,borderTopWidth:1,borderTopColor:`${o.dividerColor}88`,gap:6},footerLeft:{flexDirection:"row",alignItems:"center",gap:5,flex:1,flexWrap:"wrap"},footerRight:{flexDirection:"row",alignItems:"center",gap:4},footerDot:{width:3,height:3,borderRadius:1.5,backgroundColor:o.grayTextWeak,opacity:.6},footerId:{fontFamily:b.interBold,fontSize:10,color:o.grayTextWeak},footerTime:{fontFamily:b.interMedium,fontSize:10,color:o.grayTextWeak,letterSpacing:.1},callerPill:{flexDirection:"row",alignItems:"center",gap:4,maxWidth:185,backgroundColor:`${o.sky600}10`,borderColor:`${o.sky600}2B`,borderWidth:1,borderRadius:5,paddingHorizontal:5,paddingVertical:1.5},extBadge:{borderRadius:3,paddingHorizontal:3.5,paddingVertical:.5},extBadgeText:{fontFamily:b.interBold,fontSize:8},callerFileName:{fontFamily:b.interBold,color:o.sky600,fontSize:9.5},footerBadge:{paddingHorizontal:6,paddingVertical:1.5,borderRadius:5,borderWidth:1},footerBadgeText:{fontFamily:b.interBold,fontSize:9},prefixTag:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:6.5,paddingVertical:2,borderRadius:5,borderWidth:1},prefixTagText:{fontFamily:b.interBold,fontSize:9.5,letterSpacing:.3}});
110
+ </Te>
111
+ </T>});const o=Y.create({container:{paddingHorizontal:8,paddingVertical:4,height:148,justifyContent:"center"},card:{height:140,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:r.dividerColor,shadowColor:r.shadowColorString},cardBody:{height:"100%",paddingHorizontal:12,paddingTop:10,paddingBottom:8,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22},cardHeaderLeft:{flexDirection:"row",alignItems:"center",flex:1,marginRight:8,gap:6,minWidth:0,overflow:"hidden"},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},serialNumber:{fontFamily:B.interBold,color:r.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:7,paddingVertical:2.5,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:B.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:r.white},chip:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1},chipText:{fontFamily:B.interBold,fontSize:9,lineHeight:12},dupBadge:{backgroundColor:`${r.purple}14`,borderColor:`${r.purple}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},dupBadgeText:{fontFamily:B.interBold,fontSize:8.5,color:r.purple},statusPill:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:7,paddingVertical:2.5,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:B.interBold,fontSize:10,lineHeight:13},messageBox:{backgroundColor:r.grayBackground,borderRadius:7,borderWidth:1,borderColor:r.dividerColor,paddingHorizontal:10,paddingVertical:6,height:68,minHeight:68,maxHeight:68,justifyContent:"center",gap:2,overflow:"hidden"},messageText:{fontFamily:B.interMedium,fontSize:12,color:r.primaryBlack,lineHeight:17},highlight:{backgroundColor:r.yellowHighlight,color:r.primaryBlack,borderRadius:2},jsonPreviewRow:{flexDirection:"column",justifyContent:"center",gap:2},jsonPreviewText:{fontFamily:B.interMedium,fontSize:11,color:r.teal700,lineHeight:15},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:6},footerLeft:{flexDirection:"row",alignItems:"center",gap:6,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:5,flexShrink:0},cardDateRow:{flexDirection:"row",alignItems:"center",gap:3.5},cardDateText:{fontFamily:B.interRegular,fontSize:10,lineHeight:13,color:r.slate400},callerChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:r.skySoftBg,borderColor:r.skySoftBorder,borderWidth:1,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,flexShrink:1,minWidth:0},extBadge:{borderRadius:3,paddingHorizontal:3,paddingVertical:.5},extBadgeText:{fontFamily:B.interBold,fontSize:7.5},callerChipText:{color:r.skySoftText,fontSize:9,lineHeight:12,fontFamily:B.interBold},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:r.violetSoftBg,borderColor:r.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:B.interBold,color:r.violetSoftText,fontSize:9,lineHeight:12},prefixTag:{flexDirection:"row",alignItems:"center",gap:2.5,paddingHorizontal:5,paddingVertical:1.5,borderRadius:3.5,borderWidth:1},prefixTagText:{fontFamily:B.interBold,fontSize:8.5,letterSpacing:.3},bottomAccentBar:{height:2.5,width:"100%",borderRadius:1.5,marginTop:2}});export default ConsoleLogCard;
@@ -1,8 +1,12 @@
1
1
  import React from 'react';
2
- interface EndOfListFooterProps {
2
+ export interface EndOfListFooterProps {
3
3
  count?: number;
4
+ totalCount?: number;
4
5
  label?: string;
5
6
  message?: string;
7
+ hasMore?: boolean;
8
+ onLoadMore?: () => void;
9
+ loadMoreStep?: number;
6
10
  }
7
11
  export declare const EndOfListFooter: React.FC<EndOfListFooterProps>;
8
12
  export default EndOfListFooter;
@@ -1,15 +1,37 @@
1
- import B from"react";import{Platform as V,StyleSheet as v,Text as T,View as C}from"react-native";import{AppColors as e}from"../styles/AppColors";import{AppFonts as S}from"../styles/AppFonts";import{CheckIcon as L}from"./NetworkIcons";export const EndOfListFooter=B.memo(({count:w,label:b,message:k="You've reached the end of the list"})=><C style={o.container}>
2
- <C style={o.dividerLine}/>
3
- <C style={o.badgePill}>
4
- <C style={o.iconCircle}>
5
- <L color={e.purple}size={8}/>
6
- </C>
7
- <T style={o.messageText}>{k}</T>
8
- {w!=null&&w>0&&<C style={o.countBadge}>
9
- <T style={o.countText}>
10
- {w} {b?w===1?b.replace(/s$/,""):b:""}
1
+ import $ from"react";import{Platform as H,StyleSheet as j,Text as B,View as T}from"react-native";import{AppColors as o}from"../styles/AppColors";import{AppFonts as V}from"../styles/AppFonts";import{CheckIcon as A,ChevronIcon as D}from"./NetworkIcons";import E from"./TouchableScale";import{useTranslation as Y}from"../i18n";export const EndOfListFooter=$.memo(({count:C,totalCount:S,label:M="items",message:O,hasMore:F=!1,onLoadMore:z,loadMoreStep:v=10})=>{const{t:I}=Y(),L=O??I("footer.endOfList","You've reached the end of the list"),W=F||S!=null&&C!=null&&C<S&&!!z,P=S!=null&&C!=null?Math.max(0,S-C):v,R=Math.min(P||v,v);if(W&&z)return<T style={e.container}>
2
+ <T style={e.dividerLine}/>
3
+ <T style={e.loadMoreContainer}>
4
+ <E onPress={z}hitSlop={6}style={e.loadMoreBtn}>
5
+ <T style={e.loadMoreIconWrap}>
6
+ <D color={o.white}size={9}direction="down"/>
11
7
  </T>
12
- </C>}
13
- </C>
14
- <C style={o.dividerLine}/>
15
- </C>);const o=v.create({container:{flexDirection:"row",alignItems:"center",justifyContent:"center",paddingHorizontal:16,paddingTop:16,paddingBottom:V.OS==="ios"?44:32,gap:8},dividerLine:{flex:1,height:1,backgroundColor:e.dividerColor,opacity:.7},badgePill:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:10,paddingVertical:5,borderRadius:999,backgroundColor:e.primaryLight,borderWidth:1,borderColor:e.grayBorderSecondary,shadowColor:e.black,shadowOffset:{width:0,height:1},shadowOpacity:.04,shadowRadius:2,elevation:1},iconCircle:{width:14,height:14,borderRadius:7,backgroundColor:`${e.purple}18`,alignItems:"center",justifyContent:"center"},messageText:{fontFamily:S.interMedium,fontSize:11,color:e.grayTextWeak,letterSpacing:.1},countBadge:{paddingHorizontal:5,paddingVertical:1,borderRadius:6,backgroundColor:e.grayBackground,borderWidth:1,borderColor:e.grayBorderSecondary},countText:{fontFamily:S.interBold,fontSize:9.5,color:e.grayTextStrong}});export default EndOfListFooter;
8
+ <B style={e.loadMoreBtnText}>
9
+ {I("footer.loadMore",{count:R,defaultValue:`Load ${R} More`})}
10
+ </B>
11
+ {S!=null&&C!=null&&<T style={e.loadMoreCountBadge}>
12
+ <B style={e.loadMoreCountText}>
13
+ {C}/{S}
14
+ </B>
15
+ </T>}
16
+ </E>
17
+ {S!=null&&C!=null&&<B style={e.loadMoreSubtitle}>
18
+ {I("footer.showingOf",{count:C,total:S,label:M,defaultValue:`Showing ${C} of ${S} ${M}`})}
19
+ </B>}
20
+ </T>
21
+ <T style={e.dividerLine}/>
22
+ </T>;const k=C??S;return<T style={e.container}>
23
+ <T style={e.dividerLine}/>
24
+ <T style={e.badgePill}>
25
+ <T style={e.iconCircle}>
26
+ <A color={o.purple}size={8}/>
27
+ </T>
28
+ <B style={e.messageText}>{L}</B>
29
+ {k!=null&&k>0&&<T style={e.countBadge}>
30
+ <B style={e.countText}>
31
+ {k}{" "}
32
+ {M?k===1?M.replace(/s$/,""):M:""}
33
+ </B>
34
+ </T>}
35
+ </T>
36
+ <T style={e.dividerLine}/>
37
+ </T>});const e=j.create({container:{flexDirection:"row",alignItems:"center",justifyContent:"center",paddingHorizontal:16,paddingTop:14,paddingBottom:H.OS==="ios"?40:28,gap:8},dividerLine:{flex:1,height:1,backgroundColor:o.dividerColor,opacity:.7},loadMoreContainer:{alignItems:"center",gap:5},loadMoreBtn:{flexDirection:"row",alignItems:"center",backgroundColor:o.brandPurple,paddingVertical:6,paddingHorizontal:12,borderRadius:20,gap:6,shadowColor:o.brandPurple,shadowOffset:{width:0,height:2},shadowOpacity:.25,shadowRadius:4,elevation:2,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.2)"},loadMoreIconWrap:{width:15,height:15,borderRadius:7.5,backgroundColor:"rgba(255, 255, 255, 0.25)",alignItems:"center",justifyContent:"center"},loadMoreBtnText:{fontFamily:V.interBold,fontSize:11,color:o.white,letterSpacing:.2},loadMoreCountBadge:{backgroundColor:"rgba(255, 255, 255, 0.2)",paddingHorizontal:5,paddingVertical:1,borderRadius:10},loadMoreCountText:{fontFamily:V.interBold,fontSize:9.5,color:o.white},loadMoreSubtitle:{fontFamily:V.interMedium,fontSize:10,color:o.grayTextWeak,letterSpacing:.1},badgePill:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:10,paddingVertical:5,borderRadius:999,backgroundColor:o.primaryLight,borderWidth:1,borderColor:o.grayBorderSecondary,shadowColor:o.black,shadowOffset:{width:0,height:1},shadowOpacity:.04,shadowRadius:2,elevation:1},iconCircle:{width:14,height:14,borderRadius:7,backgroundColor:`${o.purple}18`,alignItems:"center",justifyContent:"center"},messageText:{fontFamily:V.interMedium,fontSize:11,color:o.grayTextWeak,letterSpacing:.1},countBadge:{paddingHorizontal:5,paddingVertical:1,borderRadius:6,backgroundColor:o.grayBackground,borderWidth:1,borderColor:o.grayBorderSecondary},countText:{fontFamily:V.interBold,fontSize:9.5,color:o.grayTextStrong}});export default EndOfListFooter;
@@ -1,4 +1,4 @@
1
- import{useEffect as Se,useMemo as q,useState as ve}from"react";import{Modal as Ce,Pressable as Ae,ScrollView as Ie,StyleSheet as Y,Text as T,TouchableOpacity as R,View as P}from"react-native";import{useInspector as ze}from"./InspectorContext";import{AppColors as l}from"../../styles/AppColors";import{AppFonts as A}from"../../styles/AppFonts";import{getEventCategory as Be}from"../../helpers";import{FilterIcon as Ve,CloseWhite as Re,CheckIcon as L,CartIcon as We,GlobeIcon as _e,BoltIcon as Z,SparkleIcon as J,MoneyIcon as M,ClockIcon as $,HourglassIcon as Oe,FlameIcon as Ee,PinIcon as K,RepeatIcon as De,TargetGoalIcon as X,UserIcon as Q,UserCheckIcon as Fe,PackageBoxIcon as Ue,CodeBracketsIcon as Te}from"../NetworkIcons";import S from"../TouchableScale";const Je={categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"},He=({visible:W,onClose:G})=>{const{analyticsEvents:z,analyticsSearch:_,analyticsFilters:v,setAnalyticsFilters:pe}=ze(),[t,C]=ve(()=>({...v,categories:new Set(v.categories),screens:new Set(v.screens),sources:new Set(v.sources||["all"]),userTypes:new Set(v.userTypes||["all"])}));Se(()=>{W&&C({...v,categories:new Set(v.categories),screens:new Set(v.screens),sources:new Set(v.sources||["all"]),userTypes:new Set(v.userTypes||["all"])})},[W,v]);const O=q(()=>{const s=new Set;for(const i of z){const r=i.screenName||i.params?.firebase_screen||i.params?.screen_name||i.params?.firebase_screen_class||i.screenClass;r&&typeof r=="string"&&r.trim()!==""&&s.add(r.trim())}return Array.from(s)},[z]),I=s=>{C(i=>{const r=new Set(i.categories);return s==="all"?{...i,categories:new Set(["all"])}:(r.delete("all"),r.has(s)?(r.delete(s),r.size===0&&r.add("all")):r.add(s),{...i,categories:r})})},me=s=>{C(i=>{const r=new Set(i.screens);return r.has(s)?r.delete(s):r.add(s),{...i,screens:r}})},E=s=>{C(i=>{const r=new Set(i.sources);return s==="all"?{...i,sources:new Set(["all"])}:(r.delete("all"),r.has(s)?(r.delete(s),r.size===0&&r.add("all")):r.add(s),{...i,sources:r})})},D=s=>{C(i=>{const r=new Set(i.userTypes);return s==="all"?{...i,userTypes:new Set(["all"])}:(r.delete("all"),r.has(s)?(r.delete(s),r.size===0&&r.add("all")):r.add(s),{...i,userTypes:r})})},k=s=>{C(i=>({...i,[s]:!i[s]}))},Pe=s=>{C(i=>({...i,timeWindow:s}))},we=s=>{C(i=>({...i,payloadComplexity:s}))},B=s=>{C(i=>({...i,sortBy:s}))},ge=()=>{C({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"})},xe=()=>{pe({...t,categories:new Set(t.categories),screens:new Set(t.screens),sources:new Set(t.sources),userTypes:new Set(t.userTypes)}),G()},V=()=>{C({...v,categories:new Set(v.categories),screens:new Set(v.screens),sources:new Set(v.sources||["all"]),userTypes:new Set(v.userTypes||["all"])}),G()},be=q(()=>{let s=z;if(_){const i=_.toLowerCase();s=s.filter(r=>r.name.toLowerCase().includes(i)||JSON.stringify(r.params||{}).toLowerCase().includes(i)||(r.screenName??"").toLowerCase().includes(i)||(r.pageTitle??"").toLowerCase().includes(i))}if(t.categories.size>0&&!t.categories.has("all")&&(s=s.filter(i=>{const r=Be(i.name);return t.categories.has(r)})),t.timeWindow!=="all"){const i=Date.now(),r=t.timeWindow==="1m"?i-60*1e3:t.timeWindow==="5m"?i-300*1e3:t.timeWindow==="15m"?i-900*1e3:i-3600*1e3;s=s.filter(N=>N.timestamp>=r)}if(t.sources.size>0&&!t.sources.has("all")&&(s=s.filter(i=>t.sources.has(i.source||"manual"))),t.userTypes.size>0&&!t.userTypes.has("all")&&(s=s.filter(i=>{const r=!!(i.userId&&i.userId.trim()!=="");return!!(t.userTypes.has("identified")&&r||t.userTypes.has("anonymous")&&!r)})),t.payloadComplexity!=="all"&&(s=s.filter(i=>{const r=i.params?Object.keys(i.params).length:0;return t.payloadComplexity==="none"?r===0:t.payloadComplexity==="simple"?r>=1&&r<=5:t.payloadComplexity==="heavy"?r>5:!0})),t.onlyConversions){const i=["purchase","item_purchase","ecommerce_purchase","sign_up","login","lead","generate_lead","tutorial_complete","add_payment_info","begin_checkout"];s=s.filter(r=>i.some(N=>r.name.toLowerCase().includes(N)))}return t.screens.size>0&&(s=s.filter(i=>{const r=i.screenName||i.params?.firebase_screen||i.params?.screen_name||i.params?.firebase_screen_class||i.screenClass||"";return t.screens.has(r)})),t.hasRevenue&&(s=s.filter(i=>{const r=i.params?.value??i.params?.price;return r!=null&&Number(r)>0})),t.hasItems&&(s=s.filter(i=>Array.isArray(i.params?.items)&&i.params.items.length>0)),t.hasUserProps&&(s=s.filter(i=>i.userProperties&&Object.keys(i.userProperties).length>0)),t.hasParams&&(s=s.filter(i=>i.params&&Object.keys(i.params).length>0)),s.length},[z,_,t]),F=t.categories.has("all")||t.categories.size===0,U=t.sources.has("all")||t.sources.size===0,H=t.userTypes.has("all")||t.userTypes.size===0;return<Ce visible={W}transparent animationType="fade"onRequestClose={V}>
1
+ import{useEffect as Se,useMemo as q,useState as ve}from"react";import{Modal as Ce,Pressable as Ae,ScrollView as Ie,StyleSheet as Y,Text as T,TouchableOpacity as R,View as P}from"react-native";import{useInspector as ze}from"./InspectorContext";import{AppColors as l}from"../../styles/AppColors";import{AppFonts as A}from"../../styles/AppFonts";import{getEventCategory as Be}from"../../helpers";import{FilterIcon as Ve,CloseWhite as Re,CheckIcon as L,CartIcon as We,GlobeIcon as Oe,BoltIcon as Z,SparkleIcon as J,MoneyIcon as M,ClockIcon as $,HourglassIcon as _e,FlameIcon as Ee,PinIcon as K,RepeatIcon as De,TargetGoalIcon as X,UserIcon as Q,UserCheckIcon as Fe,PackageBoxIcon as He,CodeBracketsIcon as Te}from"../NetworkIcons";import S from"../TouchableScale";const Ne=({visible:W,onClose:G})=>{const{analyticsEvents:z,analyticsSearch:O,analyticsFilters:v,setAnalyticsFilters:pe}=ze(),[t,C]=ve(()=>({...v,categories:new Set(v.categories),screens:new Set(v.screens),sources:new Set(v.sources||["all"]),userTypes:new Set(v.userTypes||["all"])}));Se(()=>{W&&C({...v,categories:new Set(v.categories),screens:new Set(v.screens),sources:new Set(v.sources||["all"]),userTypes:new Set(v.userTypes||["all"])})},[W,v]);const _=q(()=>{const s=new Set;for(const i of z){const r=i.screenName||i.params?.firebase_screen||i.params?.screen_name||i.params?.firebase_screen_class||i.screenClass;r&&typeof r=="string"&&r.trim()!==""&&s.add(r.trim())}return Array.from(s)},[z]),I=s=>{C(i=>{const r=new Set(i.categories);return s==="all"?{...i,categories:new Set(["all"])}:(r.delete("all"),r.has(s)?(r.delete(s),r.size===0&&r.add("all")):r.add(s),{...i,categories:r})})},me=s=>{C(i=>{const r=new Set(i.screens);return r.has(s)?r.delete(s):r.add(s),{...i,screens:r}})},E=s=>{C(i=>{const r=new Set(i.sources);return s==="all"?{...i,sources:new Set(["all"])}:(r.delete("all"),r.has(s)?(r.delete(s),r.size===0&&r.add("all")):r.add(s),{...i,sources:r})})},D=s=>{C(i=>{const r=new Set(i.userTypes);return s==="all"?{...i,userTypes:new Set(["all"])}:(r.delete("all"),r.has(s)?(r.delete(s),r.size===0&&r.add("all")):r.add(s),{...i,userTypes:r})})},k=s=>{C(i=>({...i,[s]:!i[s]}))},Pe=s=>{C(i=>({...i,timeWindow:s}))},we=s=>{C(i=>({...i,payloadComplexity:s}))},B=s=>{C(i=>({...i,sortBy:s}))},ge=()=>{C({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"})},xe=()=>{pe({...t,categories:new Set(t.categories),screens:new Set(t.screens),sources:new Set(t.sources),userTypes:new Set(t.userTypes)}),G()},V=()=>{C({...v,categories:new Set(v.categories),screens:new Set(v.screens),sources:new Set(v.sources||["all"]),userTypes:new Set(v.userTypes||["all"])}),G()},be=q(()=>{let s=z;if(O){const i=O.toLowerCase();s=s.filter(r=>r.name.toLowerCase().includes(i)||JSON.stringify(r.params||{}).toLowerCase().includes(i)||(r.screenName??"").toLowerCase().includes(i)||(r.pageTitle??"").toLowerCase().includes(i))}if(t.categories.size>0&&!t.categories.has("all")&&(s=s.filter(i=>{const r=Be(i.name);return t.categories.has(r)})),t.timeWindow!=="all"){const i=Date.now(),r=t.timeWindow==="1m"?i-60*1e3:t.timeWindow==="5m"?i-300*1e3:t.timeWindow==="15m"?i-900*1e3:i-3600*1e3;s=s.filter(U=>U.timestamp>=r)}if(t.sources.size>0&&!t.sources.has("all")&&(s=s.filter(i=>t.sources.has(i.source||"manual"))),t.userTypes.size>0&&!t.userTypes.has("all")&&(s=s.filter(i=>{const r=!!(i.userId&&i.userId.trim()!=="");return!!(t.userTypes.has("identified")&&r||t.userTypes.has("anonymous")&&!r)})),t.payloadComplexity!=="all"&&(s=s.filter(i=>{const r=i.params?Object.keys(i.params).length:0;return t.payloadComplexity==="none"?r===0:t.payloadComplexity==="simple"?r>=1&&r<=5:t.payloadComplexity==="heavy"?r>5:!0})),t.onlyConversions){const i=["purchase","item_purchase","ecommerce_purchase","sign_up","login","lead","generate_lead","tutorial_complete","add_payment_info","begin_checkout"];s=s.filter(r=>i.some(U=>r.name.toLowerCase().includes(U)))}return t.screens.size>0&&(s=s.filter(i=>{const r=i.screenName||i.params?.firebase_screen||i.params?.screen_name||i.params?.firebase_screen_class||i.screenClass||"";return t.screens.has(r)})),t.hasRevenue&&(s=s.filter(i=>{const r=i.params?.value??i.params?.price;return r!=null&&Number(r)>0})),t.hasItems&&(s=s.filter(i=>Array.isArray(i.params?.items)&&i.params.items.length>0)),t.hasUserProps&&(s=s.filter(i=>i.userProperties&&Object.keys(i.userProperties).length>0)),t.hasParams&&(s=s.filter(i=>i.params&&Object.keys(i.params).length>0)),s.length},[z,O,t]),F=t.categories.has("all")||t.categories.size===0,H=t.sources.has("all")||t.sources.size===0,N=t.userTypes.has("all")||t.userTypes.size===0;return<Ce visible={W}transparent animationType="fade"onRequestClose={V}>
2
2
  <P style={e.backdrop}>
3
3
  <Ae style={Y.absoluteFill}onPress={V}/>
4
4
 
@@ -67,7 +67,7 @@ import{useEffect as Se,useMemo as q,useState as ve}from"react";import{Modal as C
67
67
  </S>
68
68
 
69
69
  <S onPress={()=>I("page_view")}style={[e.filterPill,t.categories.has("page_view")&&e.filterPillActive]}>
70
- <_e color={t.categories.has("page_view")?l.white:l.sky600}size={13}/>
70
+ <Oe color={t.categories.has("page_view")?l.white:l.sky600}size={13}/>
71
71
  <T style={[e.filterPillText,t.categories.has("page_view")&&e.filterPillTextActive]}>
72
72
  Screens & Pages
73
73
  </T>
@@ -113,7 +113,7 @@ import{useEffect as Se,useMemo as q,useState as ve}from"react";import{Modal as C
113
113
  </S>
114
114
 
115
115
  <S onPress={()=>k("hasItems")}style={[e.filterPill,t.hasItems&&e.filterPillActive]}>
116
- <Ue color={t.hasItems?l.white:l.amber700}size={13}/>
116
+ <He color={t.hasItems?l.white:l.amber700}size={13}/>
117
117
  <T style={[e.filterPillText,t.hasItems&&e.filterPillTextActive]}>
118
118
  With Items Payload
119
119
  </T>
@@ -149,9 +149,9 @@ import{useEffect as Se,useMemo as q,useState as ve}from"react";import{Modal as C
149
149
  <T style={e.sectionTitle}>USER IDENTIFICATION</T>
150
150
  </P>
151
151
  <P style={e.chipsWrap}>
152
- <S onPress={()=>D("all")}style={[e.filterPill,H&&e.filterPillActive]}>
153
- {H&&<L color={l.white}size={12}/>}
154
- <T style={[e.filterPillText,H&&e.filterPillTextActive]}>
152
+ <S onPress={()=>D("all")}style={[e.filterPill,N&&e.filterPillActive]}>
153
+ {N&&<L color={l.white}size={12}/>}
154
+ <T style={[e.filterPillText,N&&e.filterPillTextActive]}>
155
155
  All Users
156
156
  </T>
157
157
  </S>
@@ -179,9 +179,9 @@ import{useEffect as Se,useMemo as q,useState as ve}from"react";import{Modal as C
179
179
  <T style={e.sectionTitle}>EVENT SOURCE</T>
180
180
  </P>
181
181
  <P style={e.chipsWrap}>
182
- <S onPress={()=>E("all")}style={[e.filterPill,U&&e.filterPillActive]}>
183
- {U&&<L color={l.white}size={12}/>}
184
- <T style={[e.filterPillText,U&&e.filterPillTextActive]}>
182
+ <S onPress={()=>E("all")}style={[e.filterPill,H&&e.filterPillActive]}>
183
+ {H&&<L color={l.white}size={12}/>}
184
+ <T style={[e.filterPillText,H&&e.filterPillTextActive]}>
185
185
  All Sources
186
186
  </T>
187
187
  </S>
@@ -216,15 +216,15 @@ import{useEffect as Se,useMemo as q,useState as ve}from"react";import{Modal as C
216
216
  </P>
217
217
 
218
218
 
219
- {O.length>0&&<P style={e.section}>
219
+ {_.length>0&&<P style={e.section}>
220
220
  <P style={e.sectionHeaderRow}>
221
221
  <K color={l.grayTextWeak}size={12}/>
222
222
  <T style={e.sectionTitle}>
223
- DISCOVERED SCREENS ({O.length})
223
+ DISCOVERED SCREENS ({_.length})
224
224
  </T>
225
225
  </P>
226
226
  <P style={e.chipsWrap}>
227
- {O.map(s=>{const i=t.screens.has(s);return<S key={s}onPress={()=>me(s)}style={[e.filterPill,i&&e.filterPillActive]}>
227
+ {_.map(s=>{const i=t.screens.has(s);return<S key={s}onPress={()=>me(s)}style={[e.filterPill,i&&e.filterPillActive]}>
228
228
  <K color={i?l.white:l.amber700}size={12}/>
229
229
  <T style={[e.filterPillText,i&&e.filterPillTextActive]}>
230
230
  {s}
@@ -248,7 +248,7 @@ import{useEffect as Se,useMemo as q,useState as ve}from"react";import{Modal as C
248
248
  </S>
249
249
 
250
250
  <S onPress={()=>B("time_asc")}style={[e.filterPill,t.sortBy==="time_asc"&&e.filterPillActive]}>
251
- <Oe color={t.sortBy==="time_asc"?l.white:l.grayText}size={12}/>
251
+ <_e color={t.sortBy==="time_asc"?l.white:l.grayText}size={12}/>
252
252
  <T style={[e.filterPillText,t.sortBy==="time_asc"&&e.filterPillTextActive]}>
253
253
  Oldest First
254
254
  </T>
@@ -285,4 +285,4 @@ import{useEffect as Se,useMemo as q,useState as ve}from"react";import{Modal as C
285
285
  </P>
286
286
  </P>
287
287
  </P>
288
- </Ce>},e=Y.create({backdrop:{flex:1,backgroundColor:`${l.primaryBlack}85`,justifyContent:"center",alignItems:"center",padding:16},modalCard:{width:"100%",maxWidth:440,backgroundColor:l.white,borderRadius:14,borderWidth:1,borderColor:l.dividerColor,shadowColor:l.black,shadowOpacity:.18,shadowRadius:12,shadowOffset:{width:0,height:4},elevation:8,overflow:"hidden"},header:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:14,paddingVertical:12,borderBottomWidth:1,borderBottomColor:l.dividerColor,backgroundColor:`${l.brandPurple}08`},headerIconBox:{width:28,height:28,borderRadius:7,backgroundColor:`${l.brandPurple}18`,alignItems:"center",justifyContent:"center"},headerTitle:{fontFamily:A.interBold,fontSize:13.5,color:l.primaryBlack},headerSubtitle:{fontFamily:A.interMedium,fontSize:10,color:l.grayTextWeak},resetBtn:{paddingHorizontal:8,paddingVertical:4,borderRadius:5,backgroundColor:`${l.darkOrange}14`,borderWidth:1,borderColor:`${l.darkOrange}30`},resetBtnText:{fontFamily:A.interBold,fontSize:10,color:l.darkOrange},closeBtn:{width:24,height:24,borderRadius:12,backgroundColor:`${l.primaryBlack}18`,alignItems:"center",justifyContent:"center"},scrollContent:{padding:14,gap:14},section:{gap:7},sectionHeaderRow:{flexDirection:"row",alignItems:"center",gap:5},sectionTitle:{fontFamily:A.interBold,fontSize:9.5,color:l.grayTextWeak,letterSpacing:.5},chipsWrap:{flexDirection:"row",flexWrap:"wrap",gap:6.5},filterPill:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:9,paddingVertical:5.5,borderRadius:7,backgroundColor:l.grayBackground,borderWidth:1,borderColor:l.dividerColor},filterPillActive:{backgroundColor:l.brandPurple,borderColor:l.brandPurple,shadowColor:l.brandPurple,shadowOffset:{width:0,height:1},shadowOpacity:.25,shadowRadius:3,elevation:2},filterPillText:{fontFamily:A.interMedium,fontSize:11,color:l.primaryBlack},filterPillTextActive:{color:l.white,fontFamily:A.interBold},footer:{flexDirection:"row",alignItems:"center",gap:10,paddingHorizontal:14,paddingVertical:12,borderTopWidth:1,borderTopColor:l.dividerColor,backgroundColor:l.grayBackground},discardBtn:{flex:1,paddingVertical:9.5,borderRadius:8,borderWidth:1,borderColor:l.dividerColor,backgroundColor:l.white,alignItems:"center",justifyContent:"center"},discardBtnText:{fontFamily:A.interBold,fontSize:12.5,color:l.grayTextStrong},applyBtn:{flex:2,backgroundColor:l.brandPurple,paddingVertical:9.5,borderRadius:8,alignItems:"center",justifyContent:"center",shadowColor:l.brandPurple,shadowOffset:{width:0,height:1},shadowOpacity:.25,shadowRadius:3,elevation:2},applyBtnText:{fontFamily:A.interBold,fontSize:12.5,color:l.white}});export default He;
288
+ </Ce>},e=Y.create({backdrop:{flex:1,backgroundColor:`${l.primaryBlack}85`,justifyContent:"center",alignItems:"center",padding:16},modalCard:{width:"100%",maxWidth:440,backgroundColor:l.white,borderRadius:14,borderWidth:1,borderColor:l.dividerColor,shadowColor:l.black,shadowOpacity:.18,shadowRadius:12,shadowOffset:{width:0,height:4},elevation:8,overflow:"hidden"},header:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:14,paddingVertical:12,borderBottomWidth:1,borderBottomColor:l.dividerColor,backgroundColor:`${l.brandPurple}08`},headerIconBox:{width:28,height:28,borderRadius:7,backgroundColor:`${l.brandPurple}18`,alignItems:"center",justifyContent:"center"},headerTitle:{fontFamily:A.interBold,fontSize:13.5,color:l.primaryBlack},headerSubtitle:{fontFamily:A.interMedium,fontSize:10,color:l.grayTextWeak},resetBtn:{paddingHorizontal:8,paddingVertical:4,borderRadius:5,backgroundColor:`${l.darkOrange}14`,borderWidth:1,borderColor:`${l.darkOrange}30`},resetBtnText:{fontFamily:A.interBold,fontSize:10,color:l.darkOrange},closeBtn:{width:24,height:24,borderRadius:12,backgroundColor:`${l.primaryBlack}18`,alignItems:"center",justifyContent:"center"},scrollContent:{padding:14,gap:14},section:{gap:7},sectionHeaderRow:{flexDirection:"row",alignItems:"center",gap:5},sectionTitle:{fontFamily:A.interBold,fontSize:9.5,color:l.grayTextWeak,letterSpacing:.5},chipsWrap:{flexDirection:"row",flexWrap:"wrap",gap:6.5},filterPill:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:9,paddingVertical:5.5,borderRadius:7,backgroundColor:l.grayBackground,borderWidth:1,borderColor:l.dividerColor},filterPillActive:{backgroundColor:l.brandPurple,borderColor:l.brandPurple,shadowColor:l.brandPurple,shadowOffset:{width:0,height:1},shadowOpacity:.25,shadowRadius:3,elevation:2},filterPillText:{fontFamily:A.interMedium,fontSize:11,color:l.primaryBlack},filterPillTextActive:{color:l.white,fontFamily:A.interBold},footer:{flexDirection:"row",alignItems:"center",gap:10,paddingHorizontal:14,paddingVertical:12,borderTopWidth:1,borderTopColor:l.dividerColor,backgroundColor:l.grayBackground},discardBtn:{flex:1,paddingVertical:9.5,borderRadius:8,borderWidth:1,borderColor:l.dividerColor,backgroundColor:l.white,alignItems:"center",justifyContent:"center"},discardBtnText:{fontFamily:A.interBold,fontSize:12.5,color:l.grayTextStrong},applyBtn:{flex:2,backgroundColor:l.brandPurple,paddingVertical:9.5,borderRadius:8,alignItems:"center",justifyContent:"center",shadowColor:l.brandPurple,shadowOffset:{width:0,height:1},shadowOpacity:.25,shadowRadius:3,elevation:2},applyBtnText:{fontFamily:A.interBold,fontSize:12.5,color:l.white}});export default Ne;