react-native-inapp-inspector 2.3.15 → 2.3.16

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 (96) hide show
  1. package/README.md +1 -0
  2. package/dist/commonjs/components/Inspector/AnalyticsTab.js +0 -22
  3. package/dist/commonjs/components/Inspector/ConsoleTab.js +0 -22
  4. package/dist/commonjs/components/Inspector/CrashTab.js +0 -23
  5. package/dist/commonjs/components/Inspector/FeedbackModal.d.ts +7 -0
  6. package/dist/commonjs/components/Inspector/FeedbackModal.js +552 -0
  7. package/dist/commonjs/components/Inspector/InspectorHeader.js +56 -4
  8. package/dist/commonjs/components/Inspector/MainScreen.js +45 -3
  9. package/dist/commonjs/components/Inspector/NetworkTab.js +27 -38
  10. package/dist/commonjs/components/Inspector/NpmStarPrompt.d.ts +3 -0
  11. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +494 -0
  12. package/dist/commonjs/components/Inspector/PerformanceTab.js +8 -1
  13. package/dist/commonjs/components/Inspector/ReduxTab.js +0 -22
  14. package/dist/commonjs/components/Inspector/SettingsPanel.js +1035 -173
  15. package/dist/commonjs/components/Inspector/StorageTab.js +0 -23
  16. package/dist/commonjs/components/Inspector/TabBar.js +50 -15
  17. package/dist/commonjs/components/NetworkIcons.d.ts +5 -0
  18. package/dist/commonjs/components/NetworkIcons.js +33 -2
  19. package/dist/commonjs/constants/version.d.ts +1 -1
  20. package/dist/commonjs/constants/version.js +1 -1
  21. package/dist/commonjs/helpers/index.d.ts +1 -0
  22. package/dist/commonjs/helpers/index.js +1 -0
  23. package/dist/commonjs/helpers/remoteConfig.d.ts +4 -0
  24. package/dist/commonjs/helpers/remoteConfig.js +165 -0
  25. package/dist/commonjs/helpers/searchQueryParser.js +2 -0
  26. package/dist/commonjs/helpers/telemetry.d.ts +5 -0
  27. package/dist/commonjs/helpers/telemetry.js +339 -8
  28. package/dist/commonjs/index.d.ts +1 -0
  29. package/dist/commonjs/index.js +32 -2
  30. package/dist/commonjs/styles/AppFonts.d.ts +2 -0
  31. package/dist/commonjs/styles/AppFonts.js +1 -0
  32. package/dist/commonjs/styles/index.d.ts +22 -0
  33. package/dist/commonjs/styles/index.js +19 -0
  34. package/dist/commonjs/types/enums.d.ts +1 -0
  35. package/dist/commonjs/types/enums.js +1 -0
  36. package/dist/commonjs/types/interfaces.d.ts +12 -0
  37. package/dist/esm/components/Inspector/AnalyticsTab.js +1 -23
  38. package/dist/esm/components/Inspector/ConsoleTab.js +1 -23
  39. package/dist/esm/components/Inspector/CrashTab.js +1 -24
  40. package/dist/esm/components/Inspector/FeedbackModal.d.ts +7 -0
  41. package/dist/esm/components/Inspector/FeedbackModal.js +515 -0
  42. package/dist/esm/components/Inspector/InspectorHeader.js +57 -5
  43. package/dist/esm/components/Inspector/MainScreen.js +46 -4
  44. package/dist/esm/components/Inspector/NetworkTab.js +28 -39
  45. package/dist/esm/components/Inspector/NpmStarPrompt.d.ts +3 -0
  46. package/dist/esm/components/Inspector/NpmStarPrompt.js +454 -0
  47. package/dist/esm/components/Inspector/PerformanceTab.js +8 -1
  48. package/dist/esm/components/Inspector/ReduxTab.js +1 -23
  49. package/dist/esm/components/Inspector/SettingsPanel.js +1038 -176
  50. package/dist/esm/components/Inspector/StorageTab.js +0 -23
  51. package/dist/esm/components/Inspector/TabBar.js +50 -15
  52. package/dist/esm/components/NetworkIcons.d.ts +5 -0
  53. package/dist/esm/components/NetworkIcons.js +26 -0
  54. package/dist/esm/constants/version.d.ts +1 -1
  55. package/dist/esm/constants/version.js +1 -1
  56. package/dist/esm/helpers/index.d.ts +1 -0
  57. package/dist/esm/helpers/index.js +1 -0
  58. package/dist/esm/helpers/remoteConfig.d.ts +4 -0
  59. package/dist/esm/helpers/remoteConfig.js +160 -0
  60. package/dist/esm/helpers/searchQueryParser.js +2 -0
  61. package/dist/esm/helpers/telemetry.d.ts +5 -0
  62. package/dist/esm/helpers/telemetry.js +332 -9
  63. package/dist/esm/index.d.ts +1 -0
  64. package/dist/esm/index.js +30 -2
  65. package/dist/esm/styles/AppFonts.d.ts +2 -0
  66. package/dist/esm/styles/AppFonts.js +1 -0
  67. package/dist/esm/styles/index.d.ts +22 -0
  68. package/dist/esm/styles/index.js +19 -0
  69. package/dist/esm/types/enums.d.ts +1 -0
  70. package/dist/esm/types/enums.js +1 -0
  71. package/dist/esm/types/interfaces.d.ts +12 -0
  72. package/package.json +1 -1
  73. package/src/components/Inspector/AnalyticsTab.tsx +0 -23
  74. package/src/components/Inspector/ConsoleTab.tsx +0 -23
  75. package/src/components/Inspector/CrashTab.tsx +0 -23
  76. package/src/components/Inspector/FeedbackModal.tsx +626 -0
  77. package/src/components/Inspector/InspectorHeader.tsx +78 -2
  78. package/src/components/Inspector/MainScreen.tsx +59 -3
  79. package/src/components/Inspector/NetworkTab.tsx +69 -78
  80. package/src/components/Inspector/NpmStarPrompt.tsx +532 -0
  81. package/src/components/Inspector/PerformanceTab.tsx +8 -1
  82. package/src/components/Inspector/ReduxTab.tsx +0 -23
  83. package/src/components/Inspector/SettingsPanel.tsx +1162 -197
  84. package/src/components/Inspector/StorageTab.tsx +0 -23
  85. package/src/components/Inspector/TabBar.tsx +57 -20
  86. package/src/components/NetworkIcons.tsx +92 -0
  87. package/src/constants/version.ts +1 -1
  88. package/src/helpers/index.ts +1 -0
  89. package/src/helpers/remoteConfig.ts +212 -0
  90. package/src/helpers/searchQueryParser.ts +3 -0
  91. package/src/helpers/telemetry.ts +381 -10
  92. package/src/index.tsx +42 -0
  93. package/src/styles/AppFonts.ts +2 -0
  94. package/src/styles/index.ts +20 -1
  95. package/src/types/enums.ts +1 -0
  96. package/src/types/interfaces.ts +12 -0
@@ -12,9 +12,9 @@ import { LIB_VERSION } from '../../constants';
12
12
  import { getStatusColor, getAppName, formatTime, getSize, getAppVersionAndBuild, } from '../../helpers';
13
13
  import { getNativeDeviceMetrics } from '../../native/NativeInspector';
14
14
  import { UpdateAvailableModal } from './UpdateAvailableModal';
15
- import { WhiteBackNavigation, TrashIcon, SettingsIcon, CloseWhite, ClockIcon, SizeIcon, AppleIcon, AndroidIcon, NpmIcon, ResetIcon, BoltIcon, } from '../NetworkIcons';
15
+ import { WhiteBackNavigation, TrashIcon, SettingsIcon, CloseWhite, ClockIcon, SizeIcon, AppleIcon, AndroidIcon, NpmIcon, ResetIcon, BoltIcon, InfoCircleIcon, } from '../NetworkIcons';
16
16
  const InspectorHeader = React.memo(() => {
17
- const { modalHeightPercent, appIcon, selected, setSelected, selectedEvent, setSelectedEvent, selectedLog, setSelectedLog, selectedReduxSlice, setSelectedReduxSlice, selectedReduxAction, setSelectedReduxAction, reduxState, reduxLastActionMap, showHeaderInfo, setShowHeaderInfo, updateAvailable, latestNpmVersion, clearAnim, activePulseAnim, unreadPulseAnim, runClearAllWithAnimation, settingsPage, setSettingsPage, resetToDefaults, closeModal, detailTitle, activeTab, environment, visible, selectedCrash, setSelectedCrash, } = useInspector();
17
+ const { modalHeightPercent, appIcon, selected, setSelected, selectedEvent, setSelectedEvent, selectedLog, setSelectedLog, selectedReduxSlice, setSelectedReduxSlice, selectedReduxAction, setSelectedReduxAction, reduxState, reduxLastActionMap, showHeaderInfo, setShowHeaderInfo, updateAvailable, latestNpmVersion, clearAnim, activePulseAnim, unreadPulseAnim, runClearAllWithAnimation, settingsPage, setSettingsPage, setSettingsActiveSubTab, isFeedbackOpen, setIsFeedbackOpen, resetToDefaults, closeModal, detailTitle, activeTab, environment, visible, selectedCrash, setSelectedCrash, } = useInspector();
18
18
  const { width: windowWidth } = useWindowDimensions();
19
19
  const isNarrow = windowWidth < 360;
20
20
  const isCompact = windowWidth < 400;
@@ -75,7 +75,7 @@ const InspectorHeader = React.memo(() => {
75
75
  (selectedReduxSlice != null || selectedReduxAction != null)) ||
76
76
  (activeTab === 'crash' && selectedCrash != null);
77
77
  const isSettingsView = settingsPage !== null;
78
- const isAnySelected = isDetailView || isSettingsView;
78
+ const isAnySelected = isDetailView || isSettingsView || isFeedbackOpen;
79
79
  const settingsModuleTitle = useMemo(() => {
80
80
  switch (settingsPage) {
81
81
  case 'apis':
@@ -121,6 +121,10 @@ const InspectorHeader = React.memo(() => {
121
121
  },
122
122
  ]}>
123
123
  <TouchableScale onPress={() => {
124
+ if (isFeedbackOpen) {
125
+ setIsFeedbackOpen(false);
126
+ return;
127
+ }
124
128
  if (isSettingsView) {
125
129
  if (settingsPage === 'main') {
126
130
  setSettingsPage(null);
@@ -161,7 +165,41 @@ const InspectorHeader = React.memo(() => {
161
165
  <WhiteBackNavigation />
162
166
  </TouchableScale>
163
167
 
164
- {isSettingsView ? (<View style={{ gap: 2, flex: 1, minWidth: 0 }}>
168
+ {isFeedbackOpen ? (<View style={{ gap: 2, flex: 1, minWidth: 0 }}>
169
+ <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
170
+ <Text style={{
171
+ fontFamily: AppFonts.interBold,
172
+ fontSize: isNarrow ? 14 : 16,
173
+ color: AppColors.white,
174
+ letterSpacing: -0.2,
175
+ }} numberOfLines={1}>
176
+ Support & Feedback
177
+ </Text>
178
+ <View style={{
179
+ backgroundColor: `${AppColors.white}26`,
180
+ paddingHorizontal: isNarrow ? 4 : 6,
181
+ paddingVertical: 1.5,
182
+ borderRadius: 10,
183
+ borderWidth: 1,
184
+ borderColor: `${AppColors.white}20`,
185
+ }}>
186
+ <Text style={{
187
+ fontFamily: AppFonts.interBold,
188
+ fontSize: isNarrow ? 8 : 9,
189
+ color: AppColors.white,
190
+ }}>
191
+ v{LIB_VERSION}
192
+ </Text>
193
+ </View>
194
+ </View>
195
+ <Text style={{
196
+ fontFamily: AppFonts.interRegular,
197
+ fontSize: isNarrow ? 9.5 : 10.5,
198
+ color: `${AppColors.white}CC`,
199
+ }} numberOfLines={1}>
200
+ Direct line to maintainers & developers
201
+ </Text>
202
+ </View>) : isSettingsView ? (<View style={{ gap: 2, flex: 1, minWidth: 0 }}>
165
203
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
166
204
  <Text style={{
167
205
  fontFamily: AppFonts.interBold,
@@ -753,7 +791,7 @@ const InspectorHeader = React.memo(() => {
753
791
  </Animated.View>
754
792
  </TouchableScale>)}
755
793
 
756
- {!isAnySelected && (<TouchableScale onPress={() => setSettingsPage('main')} hitSlop={15} style={[
794
+ {!isAnySelected && (<TouchableScale accessible={true} accessibilityRole="button" accessibilityLabel="Settings" onPress={() => setSettingsPage('main')} hitSlop={15} style={[
757
795
  styles.closeButtonSquare,
758
796
  {
759
797
  width: buttonSize,
@@ -764,6 +802,20 @@ const InspectorHeader = React.memo(() => {
764
802
  <SettingsIcon color={AppColors.white} size={isNarrow ? 12 : 14}/>
765
803
  </TouchableScale>)}
766
804
 
805
+ {!isAnySelected && (<TouchableScale accessible={true} accessibilityRole="button" accessibilityLabel="About and System Specifications" onPress={() => {
806
+ setSettingsActiveSubTab('about');
807
+ setSettingsPage('main');
808
+ }} hitSlop={15} style={[
809
+ styles.closeButtonSquare,
810
+ {
811
+ width: buttonSize,
812
+ height: buttonSize,
813
+ borderRadius: isNarrow ? 6 : 7,
814
+ },
815
+ ]}>
816
+ <InfoCircleIcon color={AppColors.white} size={isNarrow ? 12 : 14}/>
817
+ </TouchableScale>)}
818
+
767
819
  <TouchableOpacity onPress={closeModal} hitSlop={{ top: 12, bottom: 12, left: 12, right: 12 }} activeOpacity={0.6} style={[
768
820
  styles.closeButtonSquare,
769
821
  {
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useRef } from 'react';
2
- import { Animated, Modal, Platform, Pressable, StatusBar, StyleSheet, View, } from 'react-native';
2
+ import { Animated, Modal, Platform, Pressable, StatusBar, StyleSheet, TouchableOpacity, View, } from 'react-native';
3
3
  import { useInspector } from './InspectorContext';
4
4
  import ErrorBoundary from '../ErrorBoundary';
5
5
  import FabLauncher from './FabLauncher';
@@ -22,13 +22,16 @@ import StorageTab from './StorageTab';
22
22
  import DebuggingTab from './DebuggingTab';
23
23
  import SettingsPanel from './SettingsPanel';
24
24
  import NpmUpdateToast from './NpmUpdateToast';
25
+ import NpmStarPrompt from './NpmStarPrompt';
26
+ import FeedbackModal from './FeedbackModal';
25
27
  import Toast from '../Toast';
28
+ import { HeadphonesIcon } from '../NetworkIcons';
26
29
  import styles from '../../styles';
27
30
  import { AppColors } from '../../styles/AppColors';
28
31
  import NavigationTracker from './NavigationTracker';
29
32
  import { isLocalDebugEnvironment } from '../../helpers';
30
33
  const MainScreen = () => {
31
- const { visible, modalAnimationType, closeModal, modalHeightPercent, selected, selectedEvent, selectedLog, selectedReduxSlice, selectedReduxAction, selectedCrash, settingsPage, activeTab, isReady, enabled, useNativeFab, hasNavigationContext, setNavState, } = useInspector();
34
+ const { visible, modalAnimationType, closeModal, modalHeightPercent, selected, selectedEvent, selectedLog, selectedReduxSlice, selectedReduxAction, selectedCrash, settingsPage, isFeedbackOpen, setIsFeedbackOpen, activeTab, isReady, enabled, useNativeFab, hasNavigationContext, setNavState, } = useInspector();
32
35
  const isDetailActive = (activeTab === 'apis' && selected != null) ||
33
36
  (activeTab === 'analytics' && selectedEvent != null) ||
34
37
  (activeTab === 'logs' && selectedLog != null) ||
@@ -58,6 +61,18 @@ const MainScreen = () => {
58
61
  }).start();
59
62
  }
60
63
  }, [settingsPage !== null]);
64
+ const feedbackAnim = useRef(new Animated.Value(0)).current;
65
+ useEffect(() => {
66
+ if (isFeedbackOpen) {
67
+ feedbackAnim.setValue(0);
68
+ Animated.spring(feedbackAnim, {
69
+ toValue: 1,
70
+ friction: 8,
71
+ tension: 65,
72
+ useNativeDriver: true,
73
+ }).start();
74
+ }
75
+ }, [isFeedbackOpen]);
61
76
  const tabAnim = useRef(new Animated.Value(1)).current;
62
77
  useEffect(() => {
63
78
  tabAnim.setValue(0);
@@ -90,7 +105,7 @@ const MainScreen = () => {
90
105
 
91
106
  <View style={{ flex: 1 }}>
92
107
 
93
- {!isDetailActive && <TabBar />}
108
+ {!isDetailActive && settingsPage === null && !isFeedbackOpen && <TabBar />}
94
109
 
95
110
  {isReady ? (<View style={{ flex: 1 }}>
96
111
 
@@ -107,7 +122,7 @@ const MainScreen = () => {
107
122
  },
108
123
  ],
109
124
  },
110
- (isDetailActive || settingsPage !== null) && {
125
+ (isDetailActive || settingsPage !== null || isFeedbackOpen) && {
111
126
  pointerEvents: 'none',
112
127
  },
113
128
  ]}>
@@ -167,6 +182,30 @@ const MainScreen = () => {
167
182
  ]}>
168
183
  <SettingsPanel />
169
184
  </Animated.View>)}
185
+
186
+
187
+ {isFeedbackOpen && (<Animated.View style={[
188
+ StyleSheet.absoluteFill,
189
+ {
190
+ backgroundColor: AppColors.primaryLight,
191
+ opacity: feedbackAnim,
192
+ transform: [
193
+ {
194
+ translateY: feedbackAnim.interpolate({
195
+ inputRange: [0, 1],
196
+ outputRange: [24, 0],
197
+ }),
198
+ },
199
+ ],
200
+ },
201
+ ]}>
202
+ <FeedbackModal onClose={() => setIsFeedbackOpen(false)}/>
203
+ </Animated.View>)}
204
+
205
+
206
+ {!isDetailActive && settingsPage === null && !isFeedbackOpen && (<TouchableOpacity activeOpacity={0.8} onPress={() => setIsFeedbackOpen(true)} hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }} style={styles.supportFab}>
207
+ <HeadphonesIcon color={AppColors.white} size={20}/>
208
+ </TouchableOpacity>)}
170
209
  </View>
171
210
 
172
211
 
@@ -174,6 +213,9 @@ const MainScreen = () => {
174
213
 
175
214
 
176
215
  <NpmUpdateToast />
216
+
217
+
218
+ <NpmStarPrompt />
177
219
  </View>
178
220
  </View>
179
221
  </ErrorBoundary>
@@ -13,7 +13,7 @@ import { AppColors } from '../../styles/AppColors';
13
13
  import { AppFonts } from '../../styles/AppFonts';
14
14
  import { METHOD_COLORS } from '../../constants';
15
15
  import { useTranslation } from '../../i18n';
16
- import { SearchIcon, ClearIcon, TrashIcon, SortArrowIcon, FilterIcon, ChevronIcon, CircleCheckIcon, CircleXIcon, LayersIcon, HeaderPauseIcon, ClockIcon, RequestIcon, ResponseIcon, AtomIcon, } from '../NetworkIcons';
16
+ import { SearchIcon, ClearIcon, TrashIcon, SortArrowIcon, FilterIcon, CircleCheckIcon, CircleXIcon, LayersIcon, HeaderPauseIcon, ClockIcon, RequestIcon, ResponseIcon, AtomIcon, } from '../NetworkIcons';
17
17
  const NetworkTab = React.memo(() => {
18
18
  const { groupedData, search, setSearch, searchScope, setSearchScope, isRegexSearch, setIsRegexSearch, isCaseSensitive, setIsCaseSensitive, quickFilter, setQuickFilter, handleDelete, selectedLogs, sortOrder, setSortOrder, statusFilters, setStatusFilters, methodFilters, setMethodFilters, availableMethods, filteredLogs, logs, toggleSectionFilter, toggleSectionCollapse, minStart, totalRange, newLogIds, toggleSelect, setSelected, isNetworkPaused, setIsNetworkPaused, } = useInspector();
19
19
  const { t } = useTranslation();
@@ -356,12 +356,18 @@ const NetworkTab = React.memo(() => {
356
356
  </View>
357
357
 
358
358
 
359
- <View style={{ marginBottom: 8 }}>
360
- <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={{
359
+ <View style={{
360
+ flexDirection: 'row',
361
+ alignItems: 'center',
362
+ marginBottom: 8,
361
363
  paddingHorizontal: 12,
364
+ gap: 6,
365
+ }}>
366
+ <ScrollView horizontal showsHorizontalScrollIndicator={false} style={{ flex: 1 }} contentContainerStyle={{
362
367
  flexDirection: 'row',
363
368
  alignItems: 'center',
364
369
  gap: 6,
370
+ paddingRight: 6,
365
371
  }}>
366
372
  {QUICK_CHIPS.map(chip => {
367
373
  const isActive = quickFilter === chip.id;
@@ -420,9 +426,10 @@ const NetworkTab = React.memo(() => {
420
426
  </View>
421
427
  </TouchableScale>);
422
428
  })}
429
+ </ScrollView>
423
430
 
424
- <TouchableScale onPress={() => setIsFilterModalOpen(true)}>
425
- <View style={{
431
+ <TouchableScale onPress={() => setIsFilterModalOpen(true)} style={{ flexShrink: 0 }}>
432
+ <View style={{
426
433
  flexDirection: 'row',
427
434
  alignItems: 'center',
428
435
  paddingHorizontal: 10,
@@ -436,36 +443,40 @@ const NetworkTab = React.memo(() => {
436
443
  ? AppColors.purple
437
444
  : AppColors.grayBorderSecondary,
438
445
  gap: 5,
446
+ shadowColor: AppColors.black,
447
+ shadowOpacity: 0.04,
448
+ shadowRadius: 2,
449
+ shadowOffset: { width: 0, height: 1 },
450
+ elevation: 1,
439
451
  }}>
440
- <FilterIcon size={11} color={statusFilters.size > 0 || methodFilters.size > 0
452
+ <FilterIcon size={11} color={statusFilters.size > 0 || methodFilters.size > 0
441
453
  ? AppColors.purple
442
454
  : AppColors.grayText}/>
443
- <Text style={{
455
+ <Text style={{
444
456
  fontFamily: AppFonts.interBold,
445
457
  fontSize: 10.5,
446
458
  color: statusFilters.size > 0 || methodFilters.size > 0
447
459
  ? AppColors.purple
448
460
  : AppColors.grayText,
449
461
  }}>
450
- More Filters
451
- </Text>
452
- {(statusFilters.size > 0 || methodFilters.size > 0) && (<View style={{
462
+ More Filters
463
+ </Text>
464
+ {(statusFilters.size > 0 || methodFilters.size > 0) && (<View style={{
453
465
  backgroundColor: AppColors.purple,
454
466
  paddingHorizontal: 4.5,
455
467
  paddingVertical: 1,
456
468
  borderRadius: 6,
457
469
  }}>
458
- <Text style={{
470
+ <Text style={{
459
471
  fontFamily: AppFonts.interBold,
460
472
  fontSize: 8.5,
461
473
  color: AppColors.white,
462
474
  }}>
463
- {statusFilters.size + methodFilters.size}
464
- </Text>
465
- </View>)}
466
- </View>
467
- </TouchableScale>
468
- </ScrollView>
475
+ {statusFilters.size + methodFilters.size}
476
+ </Text>
477
+ </View>)}
478
+ </View>
479
+ </TouchableScale>
469
480
  </View>
470
481
 
471
482
 
@@ -523,28 +534,6 @@ const NetworkTab = React.memo(() => {
523
534
  styles.listContent,
524
535
  filteredLogs.length === 0 && { flexGrow: 1 },
525
536
  ]} keyboardShouldPersistTaps="handled"/>
526
-
527
- <TouchableScale onPress={() => {
528
- try {
529
- apisListRef.current?.scrollToOffset({
530
- offset: 0,
531
- animated: true,
532
- });
533
- }
534
- catch {
535
- try {
536
- apisListRef.current?.scrollToIndex({
537
- index: 0,
538
- animated: true,
539
- });
540
- }
541
- catch { }
542
- }
543
- }} hitSlop={12} style={styles.scrollTopBtn}>
544
- <View style={{ transform: [{ rotate: '180deg' }] }}>
545
- <ChevronIcon color={AppColors.white} size={18}/>
546
- </View>
547
- </TouchableScale>
548
537
 
549
538
 
550
539
  <NetworkFilterModal visible={isFilterModalOpen} onClose={() => setIsFilterModalOpen(false)} filters={modalFilterState} onApply={handleApplyNetworkFilters} searchQuery={search}/>
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const NpmStarPrompt: React.FC;
3
+ export default NpmStarPrompt;