react-native-inapp-inspector 2.2.2 → 2.2.4

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 (159) hide show
  1. package/dist/commonjs/components/AnalyticsDetail.js +5 -1
  2. package/dist/commonjs/components/AnalyticsEventCard.js +2 -1
  3. package/dist/commonjs/components/DiffViewer.js +1 -1
  4. package/dist/commonjs/components/Inspector/BundleTab.js +22 -0
  5. package/dist/commonjs/components/Inspector/DeviceInfoTab.d.ts +3 -0
  6. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +835 -0
  7. package/dist/commonjs/components/Inspector/InspectorHeader.js +12 -14
  8. package/dist/commonjs/components/Inspector/LogDetail.js +6 -3
  9. package/dist/commonjs/components/Inspector/MainScreen.js +7 -3
  10. package/dist/commonjs/components/Inspector/NetworkTab.js +92 -15
  11. package/dist/commonjs/components/Inspector/PerformanceTab.js +38 -12
  12. package/dist/commonjs/components/Inspector/SettingsPanel.js +440 -229
  13. package/dist/commonjs/components/Inspector/StorageTab.d.ts +3 -0
  14. package/dist/commonjs/components/Inspector/StorageTab.js +892 -0
  15. package/dist/commonjs/components/Inspector/TabBar.js +14 -0
  16. package/dist/commonjs/components/Inspector/TelemetryConsentModal.js +11 -2
  17. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +4 -1
  18. package/dist/commonjs/components/NetworkIcons.d.ts +6 -0
  19. package/dist/commonjs/components/NetworkIcons.js +30 -1
  20. package/dist/commonjs/constants/version.d.ts +1 -1
  21. package/dist/commonjs/constants/version.js +1 -1
  22. package/dist/commonjs/customHooks/bundleAnalyzer.js +44 -22
  23. package/dist/commonjs/customHooks/storageInspector.d.ts +67 -0
  24. package/dist/commonjs/customHooks/storageInspector.js +486 -0
  25. package/dist/commonjs/i18n/locales/en.json +8 -2
  26. package/dist/commonjs/index.d.ts +1 -0
  27. package/dist/commonjs/index.js +16 -1
  28. package/dist/commonjs/storage.d.ts +5 -0
  29. package/dist/commonjs/storage.js +18 -0
  30. package/dist/commonjs/types/enums.d.ts +5 -0
  31. package/dist/commonjs/types/enums.js +5 -0
  32. package/dist/esm/components/AnalyticsDetail.js +6 -2
  33. package/dist/esm/components/AnalyticsEventCard.js +2 -1
  34. package/dist/esm/components/DiffViewer.js +1 -1
  35. package/dist/esm/components/Inspector/BundleTab.js +22 -0
  36. package/dist/esm/components/Inspector/DeviceInfoTab.d.ts +3 -0
  37. package/dist/esm/components/Inspector/DeviceInfoTab.js +796 -0
  38. package/dist/esm/components/Inspector/InspectorHeader.js +13 -15
  39. package/dist/esm/components/Inspector/LogDetail.js +7 -4
  40. package/dist/esm/components/Inspector/MainScreen.js +7 -3
  41. package/dist/esm/components/Inspector/NetworkTab.js +93 -16
  42. package/dist/esm/components/Inspector/PerformanceTab.js +39 -13
  43. package/dist/esm/components/Inspector/SettingsPanel.js +441 -230
  44. package/dist/esm/components/Inspector/StorageTab.d.ts +3 -0
  45. package/dist/esm/components/Inspector/StorageTab.js +853 -0
  46. package/dist/esm/components/Inspector/TabBar.js +15 -1
  47. package/dist/esm/components/Inspector/TelemetryConsentModal.js +11 -2
  48. package/dist/esm/components/Inspector/UpdateAvailableModal.js +4 -1
  49. package/dist/esm/components/NetworkIcons.d.ts +6 -0
  50. package/dist/esm/components/NetworkIcons.js +23 -0
  51. package/dist/esm/constants/version.d.ts +1 -1
  52. package/dist/esm/constants/version.js +1 -1
  53. package/dist/esm/customHooks/bundleAnalyzer.js +44 -22
  54. package/dist/esm/customHooks/storageInspector.d.ts +67 -0
  55. package/dist/esm/customHooks/storageInspector.js +469 -0
  56. package/dist/esm/i18n/locales/en.json +8 -2
  57. package/dist/esm/index.d.ts +1 -0
  58. package/dist/esm/index.js +5 -0
  59. package/dist/esm/storage.d.ts +5 -0
  60. package/dist/esm/storage.js +5 -0
  61. package/dist/esm/types/enums.d.ts +5 -0
  62. package/dist/esm/types/enums.js +5 -0
  63. package/package.json +9 -1
  64. package/src/analytics.ts +35 -0
  65. package/src/bundle.ts +25 -0
  66. package/src/components/AnalyticsDetail.tsx +870 -0
  67. package/src/components/AnalyticsEventCard.tsx +442 -0
  68. package/src/components/AnalyticsGraph.tsx +583 -0
  69. package/src/components/AnimatedEntrance.tsx +64 -0
  70. package/src/components/AppHeaderLogo.tsx +109 -0
  71. package/src/components/BrandCircleIcon.tsx +144 -0
  72. package/src/components/BrandSquareIcon.tsx +144 -0
  73. package/src/components/CodeSnippet.tsx +725 -0
  74. package/src/components/ConsoleLogCard.tsx +628 -0
  75. package/src/components/CopyButton.tsx +87 -0
  76. package/src/components/DiffViewer.tsx +82 -0
  77. package/src/components/DomainHeader.tsx +237 -0
  78. package/src/components/EmptyState.tsx +73 -0
  79. package/src/components/EndOfListFooter.tsx +100 -0
  80. package/src/components/ErrorBoundary.tsx +688 -0
  81. package/src/components/HeadersSection.tsx +192 -0
  82. package/src/components/HighlightText.tsx +100 -0
  83. package/src/components/Inspector/AnalyticsFilterModal.tsx +1250 -0
  84. package/src/components/Inspector/AnalyticsTab.tsx +1336 -0
  85. package/src/components/Inspector/BundleTab.tsx +4760 -0
  86. package/src/components/Inspector/ConsoleTab.tsx +702 -0
  87. package/src/components/Inspector/CrashDetail.tsx +941 -0
  88. package/src/components/Inspector/CrashFilterModal.tsx +721 -0
  89. package/src/components/Inspector/CrashTab.tsx +871 -0
  90. package/src/components/Inspector/DeviceInfoTab.tsx +1204 -0
  91. package/src/components/Inspector/FabLauncher.tsx +80 -0
  92. package/src/components/Inspector/InspectorContext.tsx +28 -0
  93. package/src/components/Inspector/InspectorHeader.tsx +972 -0
  94. package/src/components/Inspector/LogDetail.tsx +1431 -0
  95. package/src/components/Inspector/MainScreen.tsx +262 -0
  96. package/src/components/Inspector/NavigationTracker.tsx +13 -0
  97. package/src/components/Inspector/NetworkDetail.tsx +794 -0
  98. package/src/components/Inspector/NetworkTab.tsx +1183 -0
  99. package/src/components/Inspector/NpmUpdateToast.tsx +392 -0
  100. package/src/components/Inspector/PerformanceTab.tsx +1928 -0
  101. package/src/components/Inspector/ReduxDetail.tsx +1651 -0
  102. package/src/components/Inspector/ReduxTab.tsx +954 -0
  103. package/src/components/Inspector/SettingsPanel.tsx +3447 -0
  104. package/src/components/Inspector/StorageTab.tsx +1048 -0
  105. package/src/components/Inspector/TabBar.tsx +207 -0
  106. package/src/components/Inspector/TelemetryConsentModal.tsx +416 -0
  107. package/src/components/Inspector/UpdateAvailableModal.tsx +557 -0
  108. package/src/components/JsonViewer.tsx +486 -0
  109. package/src/components/LogCard.tsx +491 -0
  110. package/src/components/LogSyntaxHighlighter.tsx +178 -0
  111. package/src/components/MetaAccordion.tsx +340 -0
  112. package/src/components/MiniBarChart.tsx +42 -0
  113. package/src/components/MiniLineChart.tsx +33 -0
  114. package/src/components/NetworkIcons.tsx +2221 -0
  115. package/src/components/SectionHeader.tsx +113 -0
  116. package/src/components/SegmentedTabs.tsx +83 -0
  117. package/src/components/Slider.tsx +300 -0
  118. package/src/components/SourcePageCard.tsx +148 -0
  119. package/src/components/Toast.tsx +131 -0
  120. package/src/components/TouchableScale.tsx +91 -0
  121. package/src/components/TreeNode.tsx +186 -0
  122. package/src/console.ts +24 -0
  123. package/src/constants/index.ts +38 -0
  124. package/src/constants/version.ts +3 -0
  125. package/src/crash.ts +32 -0
  126. package/src/customHooks/analyticsLogger.ts +336 -0
  127. package/src/customHooks/bundleAnalyzer.ts +1256 -0
  128. package/src/customHooks/consoleLogger.ts +497 -0
  129. package/src/customHooks/crashHandler.ts +944 -0
  130. package/src/customHooks/logFilters.ts +32 -0
  131. package/src/customHooks/networkLogger.ts +419 -0
  132. package/src/customHooks/performanceTracker.ts +1014 -0
  133. package/src/customHooks/reduxLogger.ts +406 -0
  134. package/src/customHooks/storageInspector.ts +509 -0
  135. package/src/customHooks/useAccordion.tsx +60 -0
  136. package/src/decorators/index.ts +184 -0
  137. package/src/helpers/gaAnalyticsRegistry.ts +204 -0
  138. package/src/helpers/index.ts +860 -0
  139. package/src/helpers/memoryManager.ts +138 -0
  140. package/src/helpers/searchQueryParser.ts +283 -0
  141. package/src/helpers/settingsStore.ts +171 -0
  142. package/src/helpers/telemetry.ts +505 -0
  143. package/src/helpers/toast.ts +17 -0
  144. package/src/i18n/index.ts +69 -0
  145. package/src/i18n/locales/en.json +1058 -0
  146. package/src/index.tsx +2356 -0
  147. package/src/native/NativeInspector.ts +397 -0
  148. package/src/native/NativeNetworkInspector.ts +24 -0
  149. package/src/network.ts +22 -0
  150. package/src/performance.ts +38 -0
  151. package/src/redux.ts +23 -0
  152. package/src/storage.ts +18 -0
  153. package/src/styles/AppColors.ts +408 -0
  154. package/src/styles/AppFonts.ts +8 -0
  155. package/src/styles/common.ts +209 -0
  156. package/src/styles/index.ts +1570 -0
  157. package/src/types/enums.ts +199 -0
  158. package/src/types/index.ts +34 -0
  159. package/src/types/interfaces.ts +515 -0
@@ -0,0 +1,442 @@
1
+ import React, {useEffect, useRef} from 'react';
2
+ import {Animated, StyleSheet, Text, View} from 'react-native';
3
+ import {AppColors} from '../styles/AppColors';
4
+ import {AppFonts} from '../styles/AppFonts';
5
+ import {AnalyticsEventCardProps} from '../types';
6
+ import {
7
+ formatGap,
8
+ formatTime,
9
+ getEventColor,
10
+ getEventCategory,
11
+ getCategoryColors,
12
+ } from '../helpers';
13
+ import {useTranslation} from '../i18n';
14
+ import HighlightText from './HighlightText';
15
+ import TouchableScale from './TouchableScale';
16
+ import {
17
+ CartIcon,
18
+ MoneyIcon,
19
+ GlobeIcon,
20
+ BoltIcon,
21
+ SparkleIcon,
22
+ ClockIcon,
23
+ } from './NetworkIcons';
24
+
25
+ // ─── Component ────────────────────────────────────────────────────────────────
26
+
27
+ const AnalyticsEventCard = React.memo(function AnalyticsEventCard({
28
+ event,
29
+ onPress,
30
+ isNew = false,
31
+ searchStr = '',
32
+ msSincePrev,
33
+ computedScreenName,
34
+ }: AnalyticsEventCardProps) {
35
+ const {t} = useTranslation();
36
+ const color = getEventColor(event.name);
37
+ const paramCount = event.params ? Object.keys(event.params).length : 0;
38
+ const userPropCount = event.userProperties
39
+ ? Object.keys(event.userProperties).length
40
+ : 0;
41
+
42
+ const catKey = getEventCategory(event.name);
43
+ const tagColors = getCategoryColors(catKey);
44
+
45
+ // Flash animation for newly logged events
46
+ const flashOpacity = useRef(new Animated.Value(isNew ? 1 : 0)).current;
47
+ useEffect(() => {
48
+ if (isNew) {
49
+ Animated.timing(flashOpacity, {
50
+ toValue: 0,
51
+ duration: 1200,
52
+ useNativeDriver: true,
53
+ }).start();
54
+ }
55
+ }, [isNew]);
56
+
57
+ const showGap = msSincePrev != null && msSincePrev >= 2000;
58
+
59
+ const categoryLabel =
60
+ catKey === 'page_view'
61
+ ? t('analytics.pageViewCategory')
62
+ : catKey === 'ecommerce'
63
+ ? t('analytics.ecommerceCategory')
64
+ : catKey === 'system'
65
+ ? t('analytics.systemCategory')
66
+ : t('analytics.customCategory');
67
+
68
+ return (
69
+ <View style={cardStyles.container}>
70
+ {/* ── Gap Indicator ─────────────────────────────────────────────────── */}
71
+ {showGap && (
72
+ <View style={cardStyles.gapContainer}>
73
+ <View style={cardStyles.gapLine} />
74
+ <Text style={[cardStyles.gapText, {color: AppColors.grayTextWeak}]}>
75
+ +{formatGap(msSincePrev)}
76
+ </Text>
77
+ <View style={cardStyles.gapLine} />
78
+ </View>
79
+ )}
80
+
81
+ {/* ── Main Card ─────────────────────────────────────────────────────── */}
82
+ <TouchableScale
83
+ onPress={onPress}
84
+ style={[
85
+ cardStyles.modernCard,
86
+ {
87
+ borderLeftWidth: 3.5,
88
+ borderLeftColor: tagColors.text,
89
+ },
90
+ ]}>
91
+ <Animated.View
92
+ style={[
93
+ StyleSheet.absoluteFill,
94
+ {
95
+ backgroundColor: color,
96
+ opacity: flashOpacity.interpolate({
97
+ inputRange: [0, 1],
98
+ outputRange: [0, 0.08],
99
+ }),
100
+ },
101
+ ]}
102
+ />
103
+
104
+ {/* Top Row: Icon Badge, Event Name, Category Badge & Timestamp */}
105
+ <View style={cardStyles.cardHeader}>
106
+ <View style={{flexDirection: 'row', alignItems: 'center', gap: 7, flex: 1}}>
107
+ {/* Category Icon Badge */}
108
+ <View
109
+ style={[
110
+ cardStyles.iconBadge,
111
+ {backgroundColor: tagColors.bg, borderColor: tagColors.border},
112
+ ]}>
113
+ {catKey === 'ecommerce' ? (
114
+ <CartIcon color={tagColors.text} size={12} />
115
+ ) : catKey === 'page_view' ? (
116
+ <GlobeIcon color={tagColors.text} size={12} />
117
+ ) : catKey === 'system' ? (
118
+ <BoltIcon color={tagColors.text} size={12} />
119
+ ) : (
120
+ <SparkleIcon color={tagColors.text} size={12} />
121
+ )}
122
+ </View>
123
+
124
+ {/* Event Name */}
125
+ <HighlightText
126
+ text={event.name}
127
+ search={searchStr}
128
+ style={[cardStyles.eventName, {color: AppColors.primaryBlack}]}
129
+ highlightStyle={cardStyles.highlight}
130
+ numberOfLines={1}
131
+ />
132
+
133
+ {/* Category Pill Tag */}
134
+ <View
135
+ style={[
136
+ cardStyles.categoryBadge,
137
+ {backgroundColor: tagColors.bg, borderColor: tagColors.border},
138
+ ]}>
139
+ <Text
140
+ style={[cardStyles.categoryText, {color: tagColors.text}]}>
141
+ {categoryLabel}
142
+ </Text>
143
+ </View>
144
+
145
+ {/* Duplicate Multiplier */}
146
+ {event.count !== undefined && event.count > 0 ? (
147
+ <View
148
+ style={[
149
+ cardStyles.duplicateBadge,
150
+ event.count === 1 && {
151
+ backgroundColor: AppColors.grayBackground,
152
+ borderColor: AppColors.grayBorderSecondary,
153
+ },
154
+ ]}>
155
+ <Text
156
+ style={[
157
+ cardStyles.duplicateText,
158
+ event.count === 1 && {color: AppColors.grayTextStrong},
159
+ ]}>
160
+ {event.count}×
161
+ </Text>
162
+ </View>
163
+ ) : null}
164
+ </View>
165
+
166
+ {/* Timestamp */}
167
+ <View style={{flexDirection: 'row', alignItems: 'center', gap: 3}}>
168
+ <ClockIcon color={AppColors.grayTextWeak} size={10} />
169
+ <Text style={[cardStyles.timestamp, {color: AppColors.grayTextWeak}]}>
170
+ {formatTime(event.timestamp)}
171
+ </Text>
172
+ </View>
173
+ </View>
174
+
175
+ {/* Bottom Row: Metadata Chips (Screen, Params, Value) */}
176
+ <View style={cardStyles.cardBody}>
177
+ <View style={cardStyles.chipsRow}>
178
+ {(() => {
179
+ const rawScreenName =
180
+ computedScreenName ||
181
+ event.screenName ||
182
+ event.params?.firebase_screen ||
183
+ event.params?.screen_name ||
184
+ event.params?.firebase_screen_class;
185
+ if (!rawScreenName) return null;
186
+ const screenNameStr =
187
+ typeof rawScreenName === 'object'
188
+ ? JSON.stringify(rawScreenName)
189
+ : String(rawScreenName);
190
+ return (
191
+ <View
192
+ style={[
193
+ cardStyles.chip,
194
+ {
195
+ backgroundColor: `${AppColors.amber500}12`,
196
+ borderColor: `${AppColors.amber500}2E`,
197
+ },
198
+ ]}>
199
+ <View
200
+ style={[cardStyles.screenDot, {backgroundColor: AppColors.amber500}]}
201
+ />
202
+ <Text
203
+ style={[cardStyles.chipText, {color: AppColors.amber700, fontFamily: AppFonts.interBold}]}
204
+ numberOfLines={1}>
205
+ {screenNameStr}
206
+ </Text>
207
+ </View>
208
+ );
209
+ })()}
210
+
211
+ <View
212
+ style={[
213
+ cardStyles.chip,
214
+ {
215
+ backgroundColor: AppColors.grayBackground,
216
+ borderColor: AppColors.grayBorderSecondary,
217
+ },
218
+ ]}>
219
+ <Text style={[cardStyles.chipText, {color: AppColors.grayText}]}>
220
+ {'{} '} {paramCount} {t('analytics.params')}
221
+ </Text>
222
+ </View>
223
+
224
+ {userPropCount > 0 && (
225
+ <View
226
+ style={[
227
+ cardStyles.chip,
228
+ {
229
+ backgroundColor: `${AppColors.brandPurple}10`,
230
+ borderColor: `${AppColors.brandPurple}25`,
231
+ },
232
+ ]}>
233
+ <SparkleIcon color={AppColors.brandPurple} size={10} />
234
+ <Text
235
+ style={[cardStyles.chipText, {color: AppColors.brandPurple, fontFamily: AppFonts.interBold}]}>
236
+ {userPropCount} {t('analytics.props')}
237
+ </Text>
238
+ </View>
239
+ )}
240
+
241
+ {(() => {
242
+ const items = event.params?.items;
243
+ if (Array.isArray(items) && items.length > 0) {
244
+ return (
245
+ <View
246
+ style={[
247
+ cardStyles.chip,
248
+ {
249
+ backgroundColor: AppColors.amberBg,
250
+ borderColor: AppColors.amberBorder,
251
+ },
252
+ ]}>
253
+ <CartIcon color={AppColors.amber700} size={11} />
254
+ <Text
255
+ style={[
256
+ cardStyles.chipText,
257
+ {
258
+ color: AppColors.amber700,
259
+ fontFamily: AppFonts.interBold,
260
+ },
261
+ ]}>
262
+ {items.length}{' '}
263
+ {items.length === 1
264
+ ? t('analytics.item')
265
+ : t('analytics.items')}
266
+ </Text>
267
+ </View>
268
+ );
269
+ }
270
+ return null;
271
+ })()}
272
+
273
+ {(() => {
274
+ const val = event.params?.value ?? event.params?.price;
275
+ const currency = event.params?.currency ?? '';
276
+ const isPrimitive =
277
+ typeof val === 'string' || typeof val === 'number';
278
+ if (val != null && isPrimitive && String(val).trim() !== '') {
279
+ const currencyStr =
280
+ typeof currency === 'string' && currency.trim() !== ''
281
+ ? currency.toUpperCase()
282
+ : '';
283
+ return (
284
+ <View
285
+ style={[
286
+ cardStyles.chip,
287
+ {
288
+ backgroundColor: `${AppColors.emerald500}15`,
289
+ borderColor: `${AppColors.emerald500}35`,
290
+ },
291
+ ]}>
292
+ <MoneyIcon color={AppColors.emerald600} size={11} />
293
+ <Text
294
+ style={[
295
+ cardStyles.chipText,
296
+ {
297
+ color: AppColors.emerald600,
298
+ fontFamily: AppFonts.interBold,
299
+ },
300
+ ]}>
301
+ {String(val)} {currencyStr}
302
+ </Text>
303
+ </View>
304
+ );
305
+ }
306
+ return null;
307
+ })()}
308
+ </View>
309
+ </View>
310
+ </TouchableScale>
311
+ </View>
312
+ );
313
+ });
314
+
315
+ // ─── Styles ───────────────────────────────────────────────────────────────────
316
+
317
+ const cardStyles = StyleSheet.create({
318
+ container: {
319
+ paddingHorizontal: 10,
320
+ paddingVertical: 3,
321
+ },
322
+ gapContainer: {
323
+ flexDirection: 'row',
324
+ alignItems: 'center',
325
+ justifyContent: 'center',
326
+ marginVertical: 6,
327
+ gap: 8,
328
+ },
329
+ gapLine: {
330
+ flex: 1,
331
+ height: 1,
332
+ backgroundColor: `${AppColors.dividerColor}`,
333
+ },
334
+ gapText: {
335
+ fontFamily: AppFonts.interBold,
336
+ fontSize: 9.5,
337
+ color: AppColors.grayTextWeak,
338
+ letterSpacing: 0.5,
339
+ },
340
+ modernCard: {
341
+ backgroundColor: AppColors.white,
342
+ borderRadius: 10,
343
+ borderWidth: 1,
344
+ borderColor: AppColors.dividerColor,
345
+ padding: 10,
346
+ shadowColor: AppColors.black,
347
+ shadowOpacity: 0.03,
348
+ shadowRadius: 3,
349
+ shadowOffset: {width: 0, height: 1},
350
+ elevation: 1,
351
+ overflow: 'hidden',
352
+ gap: 8,
353
+ },
354
+ cardHeader: {
355
+ flexDirection: 'row',
356
+ justifyContent: 'space-between',
357
+ alignItems: 'center',
358
+ },
359
+ iconBadge: {
360
+ width: 22,
361
+ height: 22,
362
+ borderRadius: 6,
363
+ borderWidth: 1,
364
+ alignItems: 'center',
365
+ justifyContent: 'center',
366
+ },
367
+ eventName: {
368
+ fontFamily: AppFonts.interBold,
369
+ fontSize: 13,
370
+ letterSpacing: 0.1,
371
+ color: AppColors.primaryBlack,
372
+ },
373
+ timestamp: {
374
+ fontFamily: AppFonts.interMedium,
375
+ fontSize: 10,
376
+ color: AppColors.grayTextWeak,
377
+ },
378
+ highlight: {
379
+ backgroundColor: AppColors.yellowHighlight,
380
+ color: AppColors.primaryBlack,
381
+ borderRadius: 2,
382
+ },
383
+ cardBody: {
384
+ flexDirection: 'row',
385
+ alignItems: 'center',
386
+ justifyContent: 'space-between',
387
+ },
388
+ chipsRow: {
389
+ flexDirection: 'row',
390
+ alignItems: 'center',
391
+ flexWrap: 'wrap',
392
+ gap: 6,
393
+ flex: 1,
394
+ },
395
+ chip: {
396
+ flexDirection: 'row',
397
+ alignItems: 'center',
398
+ paddingHorizontal: 6,
399
+ paddingVertical: 2.5,
400
+ borderRadius: 5,
401
+ borderWidth: 1,
402
+ gap: 3.5,
403
+ },
404
+ chipText: {
405
+ fontFamily: AppFonts.interMedium,
406
+ fontSize: 10,
407
+ color: AppColors.grayText,
408
+ },
409
+ screenDot: {
410
+ width: 5,
411
+ height: 5,
412
+ borderRadius: 2.5,
413
+ },
414
+ duplicateBadge: {
415
+ backgroundColor: AppColors.roseBg,
416
+ borderColor: AppColors.roseBorder,
417
+ borderWidth: 1,
418
+ paddingHorizontal: 5,
419
+ paddingVertical: 1.5,
420
+ borderRadius: 4,
421
+ },
422
+ duplicateText: {
423
+ fontFamily: AppFonts.interBold,
424
+ fontSize: 9,
425
+ color: AppColors.rose600,
426
+ textTransform: 'uppercase',
427
+ },
428
+ categoryBadge: {
429
+ borderWidth: 1,
430
+ paddingHorizontal: 5,
431
+ paddingVertical: 1.5,
432
+ borderRadius: 4,
433
+ },
434
+ categoryText: {
435
+ fontFamily: AppFonts.interBold,
436
+ fontSize: 8.5,
437
+ textTransform: 'uppercase',
438
+ letterSpacing: 0.4,
439
+ },
440
+ });
441
+
442
+ export default AnalyticsEventCard;