react-native-inapp-inspector 1.1.34 → 1.1.35
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.
- package/dist/commonjs/components/ConsoleLogCard.js +57 -56
- package/dist/commonjs/components/CopyButton.js +7 -1
- package/dist/commonjs/components/Inspector/BundleTab.js +19 -19
- package/dist/commonjs/components/Inspector/CrashDetail.js +16 -12
- package/dist/commonjs/components/Inspector/InspectorHeader.js +16 -16
- package/dist/commonjs/components/Inspector/MainScreen.js +6 -2
- package/dist/commonjs/components/Inspector/NetworkTab.js +97 -1
- package/dist/commonjs/components/Inspector/ReduxDetail.js +24 -19
- package/dist/commonjs/components/Inspector/ReduxTab.js +12 -8
- package/dist/commonjs/components/Inspector/SettingsPanel.js +1243 -673
- package/dist/commonjs/components/LogCard.js +27 -9
- package/dist/commonjs/components/MetaAccordion.js +42 -0
- package/dist/commonjs/components/NetworkIcons.d.ts +9 -0
- package/dist/commonjs/components/NetworkIcons.js +48 -1
- package/dist/commonjs/components/Toast.js +3 -3
- package/dist/commonjs/components/TouchableScale.d.ts +4 -2
- package/dist/commonjs/components/TouchableScale.js +4 -4
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/analyticsLogger.d.ts +2 -0
- package/dist/commonjs/customHooks/analyticsLogger.js +10 -1
- package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +2 -0
- package/dist/commonjs/customHooks/bundleAnalyzer.js +26 -17
- package/dist/commonjs/customHooks/consoleLogger.d.ts +2 -0
- package/dist/commonjs/customHooks/consoleLogger.js +10 -1
- package/dist/commonjs/customHooks/crashHandler.d.ts +2 -0
- package/dist/commonjs/customHooks/crashHandler.js +10 -1
- package/dist/commonjs/customHooks/networkLogger.d.ts +2 -0
- package/dist/commonjs/customHooks/networkLogger.js +12 -1
- package/dist/commonjs/customHooks/performanceTracker.d.ts +3 -1
- package/dist/commonjs/customHooks/performanceTracker.js +18 -4
- package/dist/commonjs/customHooks/reduxLogger.d.ts +2 -0
- package/dist/commonjs/customHooks/reduxLogger.js +10 -1
- package/dist/commonjs/i18n/locales/en.json +96 -28
- package/dist/commonjs/index.js +78 -34
- package/dist/commonjs/styles/AppColors.d.ts +28 -0
- package/dist/commonjs/styles/AppColors.js +30 -0
- package/dist/esm/components/ConsoleLogCard.js +58 -57
- package/dist/esm/components/CopyButton.js +7 -1
- package/dist/esm/components/Inspector/BundleTab.js +19 -19
- package/dist/esm/components/Inspector/CrashDetail.js +16 -12
- package/dist/esm/components/Inspector/InspectorHeader.js +16 -16
- package/dist/esm/components/Inspector/MainScreen.js +6 -2
- package/dist/esm/components/Inspector/NetworkTab.js +99 -3
- package/dist/esm/components/Inspector/ReduxDetail.js +24 -19
- package/dist/esm/components/Inspector/ReduxTab.js +12 -8
- package/dist/esm/components/Inspector/SettingsPanel.js +1246 -676
- package/dist/esm/components/LogCard.js +27 -9
- package/dist/esm/components/MetaAccordion.js +42 -0
- package/dist/esm/components/NetworkIcons.d.ts +9 -0
- package/dist/esm/components/NetworkIcons.js +38 -0
- package/dist/esm/components/Toast.js +3 -3
- package/dist/esm/components/TouchableScale.d.ts +4 -2
- package/dist/esm/components/TouchableScale.js +4 -4
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/analyticsLogger.d.ts +2 -0
- package/dist/esm/customHooks/analyticsLogger.js +7 -0
- package/dist/esm/customHooks/bundleAnalyzer.d.ts +2 -0
- package/dist/esm/customHooks/bundleAnalyzer.js +23 -16
- package/dist/esm/customHooks/consoleLogger.d.ts +2 -0
- package/dist/esm/customHooks/consoleLogger.js +7 -0
- package/dist/esm/customHooks/crashHandler.d.ts +2 -0
- package/dist/esm/customHooks/crashHandler.js +7 -0
- package/dist/esm/customHooks/networkLogger.d.ts +2 -0
- package/dist/esm/customHooks/networkLogger.js +9 -0
- package/dist/esm/customHooks/performanceTracker.d.ts +3 -1
- package/dist/esm/customHooks/performanceTracker.js +15 -3
- package/dist/esm/customHooks/reduxLogger.d.ts +2 -0
- package/dist/esm/customHooks/reduxLogger.js +7 -0
- package/dist/esm/i18n/locales/en.json +96 -28
- package/dist/esm/index.js +64 -20
- package/dist/esm/styles/AppColors.d.ts +28 -0
- package/dist/esm/styles/AppColors.js +30 -0
- package/package.json +3 -2
|
@@ -50,6 +50,7 @@ const styles_1 = __importDefault(require("../../styles"));
|
|
|
50
50
|
const AppColors_1 = require("../../styles/AppColors");
|
|
51
51
|
const AppFonts_1 = require("../../styles/AppFonts");
|
|
52
52
|
const constants_1 = require("../../constants");
|
|
53
|
+
const i18n_1 = require("../../i18n");
|
|
53
54
|
const NetworkIcons_1 = require("../NetworkIcons");
|
|
54
55
|
const STATUS_META = {
|
|
55
56
|
ALL: { color: AppColors_1.AppColors.grayText, Icon: NetworkIcons_1.LayersIcon },
|
|
@@ -96,8 +97,43 @@ const FilterChip = react_1.default.memo(({ label, color, Icon, badge, active, on
|
|
|
96
97
|
});
|
|
97
98
|
const NetworkTab = react_1.default.memo(() => {
|
|
98
99
|
const { groupedData, search, setSearch, handleDelete, selectedLogs, sortOrder, setSortOrder, statusFilters, setStatusFilters, methodFilters, setMethodFilters, availableMethods, filteredLogs, logs, toggleSectionFilter, toggleSectionCollapse, minStart, totalRange, newLogIds, toggleSelect, setSelected, isNetworkPaused, setIsNetworkPaused, } = (0, InspectorContext_1.useInspector)();
|
|
100
|
+
const { t } = (0, i18n_1.useTranslation)();
|
|
99
101
|
const filtersAccordion = (0, useAccordion_1.default)(false, 300, 260);
|
|
100
102
|
const apisListRef = (0, react_1.useRef)(null);
|
|
103
|
+
const networkMetrics = (0, react_1.useMemo)(() => {
|
|
104
|
+
if (!logs || logs.length === 0)
|
|
105
|
+
return null;
|
|
106
|
+
let successCount = 0;
|
|
107
|
+
let completedCount = 0;
|
|
108
|
+
let totalDuration = 0;
|
|
109
|
+
let totalBytes = 0;
|
|
110
|
+
const durations = [];
|
|
111
|
+
logs.forEach(log => {
|
|
112
|
+
if (log.status != null) {
|
|
113
|
+
completedCount++;
|
|
114
|
+
const s = typeof log.status === 'number' ? log.status : parseInt(String(log.status), 10);
|
|
115
|
+
if (!isNaN(s)) {
|
|
116
|
+
if (s >= 200 && s < 400) {
|
|
117
|
+
successCount++;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (typeof log.duration === 'number' && log.duration > 0) {
|
|
122
|
+
durations.push(log.duration);
|
|
123
|
+
totalDuration += log.duration;
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
durations.sort((a, b) => a - b);
|
|
127
|
+
const avgDuration = durations.length > 0 ? Math.round(totalDuration / durations.length) : 0;
|
|
128
|
+
const p95 = durations.length > 0 ? durations[Math.floor(durations.length * 0.95)] : 0;
|
|
129
|
+
const successRate = completedCount > 0 ? Math.round((successCount / completedCount) * 100) : 100;
|
|
130
|
+
return {
|
|
131
|
+
successRate,
|
|
132
|
+
avgDuration,
|
|
133
|
+
p95,
|
|
134
|
+
totalCount: logs.length,
|
|
135
|
+
};
|
|
136
|
+
}, [logs]);
|
|
101
137
|
const renderItem = (0, react_1.useCallback)(({ item, index }) => {
|
|
102
138
|
if (item.type === 'header') {
|
|
103
139
|
return (<AnimatedEntrance_1.default index={index} distance={8}>
|
|
@@ -136,7 +172,67 @@ const NetworkTab = react_1.default.memo(() => {
|
|
|
136
172
|
setSelected,
|
|
137
173
|
]);
|
|
138
174
|
return (<react_native_1.View style={{ flex: 1 }}>
|
|
139
|
-
<react_native_1.FlatList ref={apisListRef} data={groupedData} keyExtractor={item => item?.id?.toString()} renderItem={renderItem} initialNumToRender={10} maxToRenderPerBatch={10} windowSize={5} removeClippedSubviews={true} ListHeaderComponent={<react_native_1.View style={{ marginTop:
|
|
175
|
+
<react_native_1.FlatList ref={apisListRef} data={groupedData} keyExtractor={item => item?.id?.toString()} renderItem={renderItem} initialNumToRender={10} maxToRenderPerBatch={10} windowSize={5} removeClippedSubviews={true} ListHeaderComponent={<react_native_1.View style={{ marginTop: 6 }}>
|
|
176
|
+
{/* Network Health & Telemetry Strip */}
|
|
177
|
+
{networkMetrics != null && networkMetrics.totalCount > 0 && (<react_native_1.View style={{
|
|
178
|
+
flexDirection: 'row',
|
|
179
|
+
alignItems: 'center',
|
|
180
|
+
justifyContent: 'space-between',
|
|
181
|
+
backgroundColor: AppColors_1.AppColors.grayBackground,
|
|
182
|
+
borderRadius: 8,
|
|
183
|
+
paddingHorizontal: 10,
|
|
184
|
+
paddingVertical: 5.5,
|
|
185
|
+
marginHorizontal: 12,
|
|
186
|
+
marginBottom: 6,
|
|
187
|
+
borderWidth: 1,
|
|
188
|
+
borderColor: AppColors_1.AppColors.dividerColor,
|
|
189
|
+
}}>
|
|
190
|
+
{/* Success Rate */}
|
|
191
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 4.5 }}>
|
|
192
|
+
<react_native_1.View style={{
|
|
193
|
+
width: 6,
|
|
194
|
+
height: 6,
|
|
195
|
+
borderRadius: 3,
|
|
196
|
+
backgroundColor: networkMetrics.successRate >= 95
|
|
197
|
+
? AppColors_1.AppColors.greenColor
|
|
198
|
+
: networkMetrics.successRate >= 80
|
|
199
|
+
? AppColors_1.AppColors.amber500
|
|
200
|
+
: AppColors_1.AppColors.errorColor,
|
|
201
|
+
}}/>
|
|
202
|
+
<react_native_1.Text style={{ fontFamily: AppFonts_1.AppFonts.interBold, fontSize: 10.5, color: AppColors_1.AppColors.primaryBlack }}>
|
|
203
|
+
{networkMetrics.successRate}%
|
|
204
|
+
</react_native_1.Text>
|
|
205
|
+
<react_native_1.Text style={{ fontFamily: AppFonts_1.AppFonts.interRegular, fontSize: 10, color: AppColors_1.AppColors.grayTextWeak }}>
|
|
206
|
+
{t('network.successRate')}
|
|
207
|
+
</react_native_1.Text>
|
|
208
|
+
</react_native_1.View>
|
|
209
|
+
|
|
210
|
+
<react_native_1.View style={{ width: 1, height: 11, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
|
|
211
|
+
|
|
212
|
+
{/* Avg Latency */}
|
|
213
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 4 }}>
|
|
214
|
+
<NetworkIcons_1.ClockIcon color={AppColors_1.AppColors.purple} size={10}/>
|
|
215
|
+
<react_native_1.Text style={{ fontFamily: AppFonts_1.AppFonts.interBold, fontSize: 10.5, color: AppColors_1.AppColors.purple }}>
|
|
216
|
+
{networkMetrics.avgDuration}ms
|
|
217
|
+
</react_native_1.Text>
|
|
218
|
+
<react_native_1.Text style={{ fontFamily: AppFonts_1.AppFonts.interRegular, fontSize: 10, color: AppColors_1.AppColors.grayTextWeak }}>
|
|
219
|
+
{t('network.avgLatency')}
|
|
220
|
+
</react_native_1.Text>
|
|
221
|
+
</react_native_1.View>
|
|
222
|
+
|
|
223
|
+
<react_native_1.View style={{ width: 1, height: 11, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
|
|
224
|
+
|
|
225
|
+
{/* P95 Latency */}
|
|
226
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 4 }}>
|
|
227
|
+
<react_native_1.Text style={{ fontFamily: AppFonts_1.AppFonts.interBold, fontSize: 10.5, color: AppColors_1.AppColors.primaryBlack }}>
|
|
228
|
+
{networkMetrics.p95}ms
|
|
229
|
+
</react_native_1.Text>
|
|
230
|
+
<react_native_1.Text style={{ fontFamily: AppFonts_1.AppFonts.interRegular, fontSize: 10, color: AppColors_1.AppColors.grayTextWeak }}>
|
|
231
|
+
P95
|
|
232
|
+
</react_native_1.Text>
|
|
233
|
+
</react_native_1.View>
|
|
234
|
+
</react_native_1.View>)}
|
|
235
|
+
|
|
140
236
|
<react_native_1.View style={styles_1.default.toolbarRow}>
|
|
141
237
|
<react_native_1.View style={styles_1.default.searchContainer}>
|
|
142
238
|
<NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak} size={16}/>
|
|
@@ -1014,30 +1014,30 @@ const reduxDetailStyles = react_native_1.StyleSheet.create({
|
|
|
1014
1014
|
flexDirection: 'row',
|
|
1015
1015
|
alignItems: 'center',
|
|
1016
1016
|
gap: 3.5,
|
|
1017
|
-
backgroundColor:
|
|
1017
|
+
backgroundColor: AppColors_1.AppColors.mintGreenBg,
|
|
1018
1018
|
paddingHorizontal: 6,
|
|
1019
1019
|
paddingVertical: 2,
|
|
1020
1020
|
borderRadius: 4,
|
|
1021
1021
|
borderWidth: 1,
|
|
1022
|
-
borderColor:
|
|
1022
|
+
borderColor: AppColors_1.AppColors.mintGreenBorder,
|
|
1023
1023
|
},
|
|
1024
1024
|
persistedChipText: {
|
|
1025
1025
|
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
1026
1026
|
fontSize: 9,
|
|
1027
|
-
color:
|
|
1027
|
+
color: AppColors_1.AppColors.mintGreenText,
|
|
1028
1028
|
},
|
|
1029
1029
|
inMemoryChip: {
|
|
1030
|
-
backgroundColor:
|
|
1030
|
+
backgroundColor: AppColors_1.AppColors.indigo50,
|
|
1031
1031
|
paddingHorizontal: 6,
|
|
1032
1032
|
paddingVertical: 2,
|
|
1033
1033
|
borderRadius: 4,
|
|
1034
1034
|
borderWidth: 1,
|
|
1035
|
-
borderColor:
|
|
1035
|
+
borderColor: AppColors_1.AppColors.blueBorder,
|
|
1036
1036
|
},
|
|
1037
1037
|
inMemoryChipText: {
|
|
1038
1038
|
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
1039
1039
|
fontSize: 9,
|
|
1040
|
-
color:
|
|
1040
|
+
color: AppColors_1.AppColors.indigo600Alt,
|
|
1041
1041
|
},
|
|
1042
1042
|
subStatsRow: {
|
|
1043
1043
|
flexDirection: 'row',
|
|
@@ -1050,12 +1050,17 @@ const reduxDetailStyles = react_native_1.StyleSheet.create({
|
|
|
1050
1050
|
alignItems: 'center',
|
|
1051
1051
|
gap: 4,
|
|
1052
1052
|
backgroundColor: AppColors_1.AppColors.grayBackground,
|
|
1053
|
-
paddingHorizontal:
|
|
1054
|
-
paddingVertical:
|
|
1055
|
-
borderRadius:
|
|
1053
|
+
paddingHorizontal: 6,
|
|
1054
|
+
paddingVertical: 2.5,
|
|
1055
|
+
borderRadius: 5,
|
|
1056
1056
|
borderWidth: 1,
|
|
1057
1057
|
borderColor: AppColors_1.AppColors.dividerColor,
|
|
1058
1058
|
},
|
|
1059
|
+
statPillText: {
|
|
1060
|
+
fontFamily: AppFonts_1.AppFonts.interMedium,
|
|
1061
|
+
fontSize: 10,
|
|
1062
|
+
color: AppColors_1.AppColors.grayText,
|
|
1063
|
+
},
|
|
1059
1064
|
statLabel: {
|
|
1060
1065
|
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
1061
1066
|
fontSize: 10,
|
|
@@ -1105,17 +1110,17 @@ const reduxDetailStyles = react_native_1.StyleSheet.create({
|
|
|
1105
1110
|
gap: 8,
|
|
1106
1111
|
},
|
|
1107
1112
|
actionBadge: {
|
|
1108
|
-
backgroundColor:
|
|
1113
|
+
backgroundColor: AppColors_1.AppColors.indigo50,
|
|
1109
1114
|
paddingHorizontal: 6,
|
|
1110
1115
|
paddingVertical: 2,
|
|
1111
1116
|
borderRadius: 4,
|
|
1112
1117
|
borderWidth: 1,
|
|
1113
|
-
borderColor:
|
|
1118
|
+
borderColor: AppColors_1.AppColors.blueBorder,
|
|
1114
1119
|
},
|
|
1115
1120
|
actionBadgeText: {
|
|
1116
1121
|
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
1117
1122
|
fontSize: 9.5,
|
|
1118
|
-
color:
|
|
1123
|
+
color: AppColors_1.AppColors.indigo600Alt,
|
|
1119
1124
|
},
|
|
1120
1125
|
actionTitle: {
|
|
1121
1126
|
flex: 1,
|
|
@@ -1196,22 +1201,22 @@ const reduxDetailStyles = react_native_1.StyleSheet.create({
|
|
|
1196
1201
|
textAlign: 'right',
|
|
1197
1202
|
},
|
|
1198
1203
|
persistedInfoCard: {
|
|
1199
|
-
backgroundColor:
|
|
1204
|
+
backgroundColor: AppColors_1.AppColors.mintGreenBg,
|
|
1200
1205
|
borderRadius: 8,
|
|
1201
1206
|
borderWidth: 1,
|
|
1202
|
-
borderColor:
|
|
1207
|
+
borderColor: AppColors_1.AppColors.mintGreenBorder,
|
|
1203
1208
|
padding: 10,
|
|
1204
1209
|
},
|
|
1205
1210
|
persistedInfoTitle: {
|
|
1206
1211
|
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
1207
1212
|
fontSize: 11,
|
|
1208
|
-
color:
|
|
1213
|
+
color: AppColors_1.AppColors.mintGreenText,
|
|
1209
1214
|
},
|
|
1210
1215
|
clearPersistMiniBtn: {
|
|
1211
1216
|
flexDirection: 'row',
|
|
1212
1217
|
alignItems: 'center',
|
|
1213
1218
|
gap: 3,
|
|
1214
|
-
backgroundColor:
|
|
1219
|
+
backgroundColor: AppColors_1.AppColors.errorCardBg,
|
|
1215
1220
|
paddingHorizontal: 6,
|
|
1216
1221
|
paddingVertical: 2.5,
|
|
1217
1222
|
borderRadius: 4,
|
|
@@ -1228,7 +1233,7 @@ const reduxDetailStyles = react_native_1.StyleSheet.create({
|
|
|
1228
1233
|
gap: 6,
|
|
1229
1234
|
backgroundColor: AppColors_1.AppColors.errorCardBg,
|
|
1230
1235
|
borderWidth: 1,
|
|
1231
|
-
borderColor:
|
|
1236
|
+
borderColor: AppColors_1.AppColors.errorBorder,
|
|
1232
1237
|
borderRadius: 8,
|
|
1233
1238
|
paddingVertical: 10,
|
|
1234
1239
|
marginTop: 14,
|
|
@@ -1262,8 +1267,8 @@ const reduxDetailStyles = react_native_1.StyleSheet.create({
|
|
|
1262
1267
|
lineHeight: 18,
|
|
1263
1268
|
},
|
|
1264
1269
|
highlight: {
|
|
1265
|
-
backgroundColor:
|
|
1266
|
-
color:
|
|
1270
|
+
backgroundColor: AppColors_1.AppColors.yellowHighlight,
|
|
1271
|
+
color: AppColors_1.AppColors.amber800Warm,
|
|
1267
1272
|
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
1268
1273
|
},
|
|
1269
1274
|
});
|
|
@@ -425,14 +425,16 @@ const ReduxTab = react_1.default.memo(() => {
|
|
|
425
425
|
<react_native_1.View style={reduxTabStyles.searchRow}>
|
|
426
426
|
<react_native_1.View style={styles_1.default.searchContainer}>
|
|
427
427
|
<NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak} size={15}/>
|
|
428
|
-
<react_native_1.TextInput placeholder="Search Redux slices or actions..." placeholderTextColor={AppColors_1.AppColors.grayTextWeak} value={reduxSearch} onChangeText={setReduxSearch} style={styles_1.default.searchInput} autoCorrect={false} autoCapitalize="none"/>
|
|
429
|
-
{reduxSearch.length > 0 && (<react_native_1.Pressable onPress={() => setReduxSearch('')} hitSlop={10}>
|
|
428
|
+
<react_native_1.TextInput accessible={true} accessibilityRole="search" accessibilityLabel="Search Redux slices or actions" accessibilityHint="Type to filter state slices in real time" placeholder="Search Redux slices or actions..." placeholderTextColor={AppColors_1.AppColors.grayTextWeak} value={reduxSearch} onChangeText={setReduxSearch} style={styles_1.default.searchInput} autoCorrect={false} autoCapitalize="none"/>
|
|
429
|
+
{reduxSearch.length > 0 && (<react_native_1.Pressable accessible={true} accessibilityRole="button" accessibilityLabel="Clear search input" onPress={() => setReduxSearch('')} hitSlop={10}>
|
|
430
430
|
<NetworkIcons_1.ClearIcon color={AppColors_1.AppColors.grayTextWeak} size={14}/>
|
|
431
431
|
</react_native_1.Pressable>)}
|
|
432
432
|
</react_native_1.View>
|
|
433
433
|
|
|
434
434
|
{/* Pause / Resume Live Updates Button */}
|
|
435
|
-
<react_native_1.TouchableOpacity
|
|
435
|
+
<react_native_1.TouchableOpacity accessible={true} accessibilityRole="button" accessibilityLabel={isReduxPaused
|
|
436
|
+
? 'Resume live Redux updates'
|
|
437
|
+
: 'Pause live Redux updates'} accessibilityHint="Toggles automatic recording of Redux state updates" style={[
|
|
436
438
|
styles_1.default.toolbarBtn,
|
|
437
439
|
isReduxPaused && {
|
|
438
440
|
backgroundColor: `${AppColors_1.AppColors.darkOrange}1F`,
|
|
@@ -445,7 +447,9 @@ const ReduxTab = react_1.default.memo(() => {
|
|
|
445
447
|
</react_native_1.TouchableOpacity>
|
|
446
448
|
|
|
447
449
|
{/* Sort Button */}
|
|
448
|
-
<react_native_1.TouchableOpacity
|
|
450
|
+
<react_native_1.TouchableOpacity accessible={true} accessibilityRole="button" accessibilityLabel={`Sort order: ${sortMode === 'latest'
|
|
451
|
+
? 'Recently updated first'
|
|
452
|
+
: 'Alphabetical A to Z'}`} accessibilityHint="Switches sorting between recently updated and alphabetical" style={[
|
|
449
453
|
styles_1.default.toolbarBtn,
|
|
450
454
|
sortMode === 'latest' && { backgroundColor: `${AppColors_1.AppColors.brandPurple}1F`, borderColor: AppColors_1.AppColors.brandPurple },
|
|
451
455
|
]} onPress={() => setSortMode(prev => (prev === 'latest' ? 'alpha' : 'latest'))} hitSlop={6}>
|
|
@@ -577,7 +581,7 @@ const reduxTabStyles = react_native_1.StyleSheet.create({
|
|
|
577
581
|
},
|
|
578
582
|
cardRecentlyUpdated: {
|
|
579
583
|
borderColor: `${AppColors_1.AppColors.brandPurple}66`,
|
|
580
|
-
backgroundColor:
|
|
584
|
+
backgroundColor: AppColors_1.AppColors.purpleTintBg,
|
|
581
585
|
},
|
|
582
586
|
cardHeader: {
|
|
583
587
|
flexDirection: 'row',
|
|
@@ -586,17 +590,17 @@ const reduxTabStyles = react_native_1.StyleSheet.create({
|
|
|
586
590
|
marginBottom: 8,
|
|
587
591
|
},
|
|
588
592
|
sliceBadge: {
|
|
589
|
-
backgroundColor:
|
|
593
|
+
backgroundColor: AppColors_1.AppColors.violetSoftBg,
|
|
590
594
|
paddingHorizontal: 6,
|
|
591
595
|
paddingVertical: 3,
|
|
592
596
|
borderRadius: 5,
|
|
593
597
|
borderWidth: 1,
|
|
594
|
-
borderColor:
|
|
598
|
+
borderColor: AppColors_1.AppColors.violetSoftBorder,
|
|
595
599
|
},
|
|
596
600
|
sliceBadgeText: {
|
|
597
601
|
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
598
602
|
fontSize: 9.5,
|
|
599
|
-
color:
|
|
603
|
+
color: AppColors_1.AppColors.purple700,
|
|
600
604
|
letterSpacing: 0.4,
|
|
601
605
|
},
|
|
602
606
|
sliceName: {
|