@buoy-gg/react-query 7.0.33 → 7.0.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.
Files changed (49) hide show
  1. package/lib/commonjs/react-query/components/DataEditorMode.js +2 -2
  2. package/lib/commonjs/react-query/components/FilterStatusBadge.js +1 -1
  3. package/lib/commonjs/react-query/components/MutationEditorMode.js +2 -2
  4. package/lib/commonjs/react-query/components/modals/MutationBrowserFooter.js +7 -19
  5. package/lib/commonjs/react-query/components/modals/QueryBrowserFooter.js +7 -19
  6. package/lib/commonjs/react-query/components/modals/ReactQueryModalHeader.js +23 -71
  7. package/lib/commonjs/react-query/components/query-browser/MutationButton.js +2 -2
  8. package/lib/commonjs/react-query/components/query-browser/MutationDetails.js +4 -4
  9. package/lib/commonjs/react-query/components/query-browser/MutationDetailsChips.js +1 -1
  10. package/lib/commonjs/react-query/components/query-browser/MutationInformation.js +1 -1
  11. package/lib/commonjs/react-query/components/query-browser/MutationStatusCount.js +51 -87
  12. package/lib/commonjs/react-query/components/query-browser/MutationsList.js +1 -1
  13. package/lib/commonjs/react-query/components/query-browser/QueryBrowser.js +3 -12
  14. package/lib/commonjs/react-query/components/query-browser/QueryDetails.js +4 -4
  15. package/lib/commonjs/react-query/components/query-browser/QueryDetailsChip.js +1 -1
  16. package/lib/commonjs/react-query/components/query-browser/QueryStatusCount.js +66 -112
  17. package/lib/commonjs/react-query/components/query-browser/StorageStatusCount.js +22 -67
  18. package/lib/commonjs/react-query/stores/reactQueryEventStore.js +13 -22
  19. package/lib/commonjs/react-query/sync/snapshotProvider.js +17 -62
  20. package/lib/module/react-query/components/DataEditorMode.js +3 -3
  21. package/lib/module/react-query/components/FilterStatusBadge.js +2 -2
  22. package/lib/module/react-query/components/MutationEditorMode.js +3 -3
  23. package/lib/module/react-query/components/modals/MutationBrowserFooter.js +8 -20
  24. package/lib/module/react-query/components/modals/QueryBrowserFooter.js +8 -20
  25. package/lib/module/react-query/components/modals/ReactQueryModalHeader.js +25 -73
  26. package/lib/module/react-query/components/query-browser/MutationButton.js +3 -3
  27. package/lib/module/react-query/components/query-browser/MutationDetails.js +5 -5
  28. package/lib/module/react-query/components/query-browser/MutationDetailsChips.js +2 -2
  29. package/lib/module/react-query/components/query-browser/MutationInformation.js +2 -2
  30. package/lib/module/react-query/components/query-browser/MutationStatusCount.js +51 -87
  31. package/lib/module/react-query/components/query-browser/MutationsList.js +2 -2
  32. package/lib/module/react-query/components/query-browser/QueryBrowser.js +4 -13
  33. package/lib/module/react-query/components/query-browser/QueryDetails.js +5 -5
  34. package/lib/module/react-query/components/query-browser/QueryDetailsChip.js +2 -2
  35. package/lib/module/react-query/components/query-browser/QueryStatusCount.js +66 -112
  36. package/lib/module/react-query/components/query-browser/StorageStatusCount.js +22 -67
  37. package/lib/module/react-query/stores/reactQueryEventStore.js +13 -22
  38. package/lib/module/react-query/sync/snapshotProvider.js +18 -63
  39. package/lib/typescript/react-query/components/modals/MutationBrowserFooter.d.ts.map +1 -1
  40. package/lib/typescript/react-query/components/modals/QueryBrowserFooter.d.ts.map +1 -1
  41. package/lib/typescript/react-query/components/modals/ReactQueryModalHeader.d.ts.map +1 -1
  42. package/lib/typescript/react-query/components/query-browser/MutationStatusCount.d.ts.map +1 -1
  43. package/lib/typescript/react-query/components/query-browser/QueryBrowser.d.ts.map +1 -1
  44. package/lib/typescript/react-query/components/query-browser/QueryStatusCount.d.ts.map +1 -1
  45. package/lib/typescript/react-query/components/query-browser/StorageStatusCount.d.ts.map +1 -1
  46. package/lib/typescript/react-query/stores/reactQueryEventStore.d.ts +3 -8
  47. package/lib/typescript/react-query/stores/reactQueryEventStore.d.ts.map +1 -1
  48. package/lib/typescript/react-query/sync/snapshotProvider.d.ts.map +1 -1
  49. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { View, StyleSheet } from "react-native";
4
- import { useSafeAreaInsets, night } from "@buoy-gg/shared-ui";
4
+ import { ToolFooter, useSafeAreaInsets } from "@buoy-gg/shared-ui";
5
5
  import QueryStatusCount from "../query-browser/QueryStatusCount";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  /**
@@ -24,12 +24,11 @@ export function QueryBrowserFooter({
24
24
  const insets = useSafeAreaInsets({
25
25
  minBottom: 16
26
26
  });
27
- return /*#__PURE__*/_jsx(View, {
28
- style: [styles.filterFooter, {
29
- paddingBottom: !isFloatingMode ? insets.bottom : 0
30
- },
31
- // Remove border radius when docked to bottom
32
- !isFloatingMode && styles.dockedFooter],
27
+ return /*#__PURE__*/_jsx(ToolFooter, {
28
+ floating: isFloatingMode,
29
+ safeArea: false,
30
+ paddingBottom: !isFloatingMode ? insets.bottom : 0,
31
+ style: styles.filterFooter,
33
32
  children: /*#__PURE__*/_jsx(View, {
34
33
  style: styles.filterContainer,
35
34
  children: /*#__PURE__*/_jsx(QueryStatusCount, {
@@ -42,19 +41,8 @@ export function QueryBrowserFooter({
42
41
  }
43
42
  const styles = StyleSheet.create({
44
43
  filterFooter: {
45
- borderTopWidth: 1,
46
- borderTopColor: night.color.border,
47
- paddingVertical: 8,
48
- paddingHorizontal: 0,
49
- // Transparent so the night sheet's star field shows through.
50
- // Night glass bar — matches the shared EventStepperFooter backing.
51
- backgroundColor: "rgba(5, 5, 5, 0.92)",
52
- borderBottomLeftRadius: 14,
53
- borderBottomRightRadius: 14
54
- },
55
- dockedFooter: {
56
- borderBottomLeftRadius: 0,
57
- borderBottomRightRadius: 0
44
+ paddingTop: 8,
45
+ paddingHorizontal: 0
58
46
  },
59
47
  filterContainer: {
60
48
  minHeight: 32,
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { ModalHeader, TabSelector, Search, X, Filter, Trash, night } from "@buoy-gg/shared-ui";
3
+ import { ModalHeader, TabSelector, Search, Filter, Trash, night } from "@buoy-gg/shared-ui";
4
4
  import { useState, useRef, useEffect } from "react";
5
- import { View, TextInput, TouchableOpacity, StyleSheet } from "react-native";
5
+ import { View, TouchableOpacity, StyleSheet } from "react-native";
6
6
  import { WifiToggle } from "../WifiToggle";
7
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
8
  /**
@@ -86,54 +86,29 @@ export function ReactQueryModalHeader({
86
86
  children: [/*#__PURE__*/_jsx(ModalHeader.Content, {
87
87
  title: "",
88
88
  noMargin: true,
89
- children: isSearchActive ? /*#__PURE__*/_jsxs(View, {
90
- style: styles.headerSearchContainer,
91
- testID: "buoy-rq-search-field",
92
- children: [/*#__PURE__*/_jsx(Search, {
93
- size: 14,
94
- color: night.color.textSecondary
95
- }), /*#__PURE__*/_jsx(TextInput, {
96
- ref: searchInputRef,
97
- testID: "buoy-rq-search",
98
- style: styles.headerSearchInput,
99
- placeholder: "Search query keys...",
100
- placeholderTextColor: night.color.textTertiary,
101
- value: searchText,
102
- onChangeText: handleSearch,
103
- onSubmitEditing: () => setIsSearchActive(false),
104
- onBlur: () => {
105
- if (!clearPressRef.current) setIsSearchActive(false);
106
- },
107
- "sentry-label": "ignore react query search header",
108
- accessibilityLabel: "Search queries and mutations",
109
- autoCapitalize: "none",
110
- autoCorrect: false,
111
- returnKeyType: "search"
112
- }), searchText.length > 0 ? /*#__PURE__*/_jsx(TouchableOpacity
113
- // react-native-web delays press-in ~50ms by default (native
114
- // fires it immediately), which would put it AFTER the blur.
115
- , {
116
- delayPressIn: 0,
117
- onPressIn: () => {
118
- clearPressRef.current = true;
119
- },
120
- onPressOut: () => {
121
- clearPressRef.current = false;
122
- },
123
- onPress: () => {
124
- handleSearch("");
125
- setIsSearchActive(false);
126
- },
127
- "sentry-label": "ignore clear search header",
128
- testID: "buoy-rq-search-clear",
129
- accessibilityRole: "button",
130
- accessibilityLabel: "Clear search",
131
- style: styles.headerSearchClear,
132
- children: /*#__PURE__*/_jsx(X, {
133
- size: 14,
134
- color: night.color.textSecondary
135
- })
136
- }) : null]
89
+ children: isSearchActive ? /*#__PURE__*/_jsx(ModalHeader.Search, {
90
+ value: searchText,
91
+ onChangeText: handleSearch,
92
+ onCancel: () => {
93
+ handleSearch("");
94
+ setIsSearchActive(false);
95
+ },
96
+ onDismiss: () => setIsSearchActive(false),
97
+ dismissOnBlur: true,
98
+ clearOnlyWhenText: true,
99
+ placeholder: "Search query keys...",
100
+ accessibilityLabel: "Search queries and mutations",
101
+ iconSize: 14
102
+ // These handles predate the shared field and are the reverse of
103
+ // its convention (container = "-field", input = bare); kept as-is
104
+ // so the e2e suite keeps its targets.
105
+ ,
106
+ testID: "buoy-rq-search",
107
+ containerTestID: "buoy-rq-search-field",
108
+ clearTestID: "buoy-rq-search-clear",
109
+ inputProps: {
110
+ "sentry-label": "ignore react query search header"
111
+ }
137
112
  }) : showWifiToggle ? /*#__PURE__*/_jsxs(View, {
138
113
  style: styles.tabRow,
139
114
  children: [/*#__PURE__*/_jsx(View, {
@@ -202,29 +177,6 @@ const styles = StyleSheet.create({
202
177
  tabSelectorWrap: {
203
178
  flex: 1
204
179
  },
205
- headerSearchContainer: {
206
- flexDirection: "row",
207
- alignItems: "center",
208
- backgroundColor: night.color.surfaceElevated,
209
- borderRadius: 6,
210
- paddingHorizontal: 8,
211
- paddingVertical: 4,
212
- gap: 6,
213
- marginHorizontal: 12,
214
- marginVertical: 8
215
- },
216
- headerSearchInput: {
217
- flex: 1,
218
- color: night.color.text,
219
- fontSize: 13,
220
- fontFamily: "monospace",
221
- padding: 0,
222
- margin: 0,
223
- minHeight: 18
224
- },
225
- headerSearchClear: {
226
- padding: 2
227
- },
228
180
  headerActionButton: {
229
181
  padding: 6,
230
182
  borderRadius: 4
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { TouchableOpacity, Text, View, StyleSheet } from "react-native";
4
4
  import { CheckCircle, LoadingCircle, PauseCircle, XCircle } from "./svgs";
5
- import { buoyColors, night, useRelativeTime } from "@buoy-gg/shared-ui";
5
+ import { buoyColors, night, useRelativeTime, monoFont } from "@buoy-gg/shared-ui";
6
6
  import { mutationRowTestID } from "../../utils/testIDs";
7
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
8
  const getMutationText = mutation => {
@@ -168,7 +168,7 @@ const styles = StyleSheet.create({
168
168
  paddingHorizontal: 12
169
169
  },
170
170
  mutationKey: {
171
- fontFamily: "monospace",
171
+ fontFamily: monoFont,
172
172
  fontSize: 12,
173
173
  color: night.color.text,
174
174
  lineHeight: 16
@@ -181,6 +181,6 @@ const styles = StyleSheet.create({
181
181
  bottomRightText: {
182
182
  fontSize: 9,
183
183
  color: night.color.textTertiary,
184
- fontFamily: "monospace"
184
+ fontFamily: monoFont
185
185
  }
186
186
  });
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { View, Text, ScrollView, StyleSheet } from "react-native";
4
- import { displayValue, night } from "@buoy-gg/shared-ui";
4
+ import { displayValue, night, monoFont } from "@buoy-gg/shared-ui";
5
5
  import MutationDetailsChips from "./MutationDetailsChips";
6
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  /**
@@ -73,7 +73,7 @@ const styles = StyleSheet.create({
73
73
  borderBottomColor: night.color.accent + "33",
74
74
  letterSpacing: 0.5,
75
75
  textTransform: "uppercase",
76
- fontFamily: "monospace"
76
+ fontFamily: monoFont
77
77
  },
78
78
  row: {
79
79
  flexDirection: "row",
@@ -91,7 +91,7 @@ const styles = StyleSheet.create({
91
91
  flexWrap: {
92
92
  fontSize: 12,
93
93
  color: night.color.text,
94
- fontFamily: "monospace",
94
+ fontFamily: monoFont,
95
95
  lineHeight: 18,
96
96
  flexShrink: 1,
97
97
  backgroundColor: night.color.accent + "15",
@@ -107,13 +107,13 @@ const styles = StyleSheet.create({
107
107
  fontWeight: "600",
108
108
  letterSpacing: 0.5,
109
109
  textTransform: "uppercase",
110
- fontFamily: "monospace"
110
+ fontFamily: monoFont
111
111
  },
112
112
  valueText: {
113
113
  fontSize: 12,
114
114
  color: night.color.text,
115
115
  fontWeight: "500",
116
116
  fontVariant: ["tabular-nums"],
117
- fontFamily: "monospace"
117
+ fontFamily: monoFont
118
118
  }
119
119
  });
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { Text, View, StyleSheet } from "react-native";
4
- import { buoyColors } from "@buoy-gg/shared-ui";
4
+ import { buoyColors, monoFont } from "@buoy-gg/shared-ui";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  const backgroundColors = {
7
7
  success: buoyColors.success + "15",
@@ -59,6 +59,6 @@ const styles = StyleSheet.create({
59
59
  fontWeight: "600",
60
60
  textTransform: "uppercase",
61
61
  letterSpacing: 0.5,
62
- fontFamily: "monospace"
62
+ fontFamily: monoFont
63
63
  }
64
64
  });
@@ -3,7 +3,7 @@
3
3
  import DataExplorer from "./Explorer";
4
4
  import { ScrollView, Text, View, StyleSheet } from "react-native";
5
5
  import MutationDetails from "./MutationDetails";
6
- import { night } from "@buoy-gg/shared-ui";
6
+ import { night, monoFont } from "@buoy-gg/shared-ui";
7
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
8
  /** Detailed information block for a selected mutation within the modal experience. */
9
9
  export default function MutationInformation({
@@ -97,7 +97,7 @@ const styles = StyleSheet.create({
97
97
  borderTopRightRadius: 8,
98
98
  borderBottomWidth: 1,
99
99
  borderBottomColor: night.color.accent + "33",
100
- fontFamily: "monospace",
100
+ fontFamily: monoFont,
101
101
  letterSpacing: 1,
102
102
  textTransform: "uppercase"
103
103
  },
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { View, StyleSheet, ScrollView } from "react-native";
3
+ import { ChipStrip, useChipTap } from "@buoy-gg/shared-ui";
4
4
  import QueryStatus from "./QueryStatus";
5
5
  import { useMutationStatusCounts } from "../../hooks/useQueryStatusCounts";
6
- import { useRef, useState } from "react";
7
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
7
  /**
9
8
  * Horizontal status filter bar tailored for mutations. Integrates scroll detection to avoid
@@ -20,96 +19,61 @@ const MutationStatusCount = ({
20
19
  error,
21
20
  paused
22
21
  } = useMutationStatusCounts();
23
- const [isScrolling, setIsScrolling] = useState(false);
24
- const touchStartX = useRef(0);
25
- const touchStartY = useRef(0);
22
+ const {
23
+ scrollProps,
24
+ onTouchStart: handleTouchStart,
25
+ isTap
26
+ } = useChipTap();
26
27
  const handleFilterClick = (filter, event) => {
27
- if (event) {
28
- const dx = Math.abs(event.nativeEvent.pageX - touchStartX.current);
29
- const dy = Math.abs(event.nativeEvent.pageY - touchStartY.current);
30
- if (dx > 5 || dy > 5 || isScrolling) {
31
- return;
32
- }
33
- }
28
+ if (!isTap(event)) return;
34
29
  if (onFilterChange) {
35
30
  onFilterChange(activeFilter === filter ? null : filter);
36
31
  }
37
32
  };
38
- const handleTouchStart = event => {
39
- touchStartX.current = event.nativeEvent.pageX;
40
- touchStartY.current = event.nativeEvent.pageY;
41
- };
42
- return /*#__PURE__*/_jsx(View, {
43
- style: styles.mutationStatusContainer,
44
- children: /*#__PURE__*/_jsxs(ScrollView, {
45
- "sentry-label": "ignore devtools mutation status count scroll",
46
- horizontal: true,
47
- showsHorizontalScrollIndicator: false,
48
- style: styles.scrollView,
49
- contentContainerStyle: styles.scrollContent,
50
- onScrollBeginDrag: () => setIsScrolling(true),
51
- onScrollEndDrag: () => setTimeout(() => setIsScrolling(false), 300),
52
- onMomentumScrollBegin: () => setIsScrolling(true),
53
- onMomentumScrollEnd: () => setTimeout(() => setIsScrolling(false), 300),
54
- children: [/*#__PURE__*/_jsx(QueryStatus, {
55
- label: "Pending",
56
- color: "blue",
57
- count: pending,
58
- isActive: activeFilter === "pending",
59
- onPress: event => handleFilterClick("pending", event),
60
- onTouchStart: handleTouchStart,
61
- testID: "buoy-rq-mstatus-pending",
62
- showLabel: true,
63
- size: size
64
- }), /*#__PURE__*/_jsx(QueryStatus, {
65
- label: "Success",
66
- color: "green",
67
- count: success,
68
- isActive: activeFilter === "success",
69
- onPress: event => handleFilterClick("success", event),
70
- onTouchStart: handleTouchStart,
71
- testID: "buoy-rq-mstatus-success",
72
- showLabel: true,
73
- size: size
74
- }), /*#__PURE__*/_jsx(QueryStatus, {
75
- label: "Error",
76
- color: "red",
77
- count: error,
78
- isActive: activeFilter === "error",
79
- onPress: event => handleFilterClick("error", event),
80
- onTouchStart: handleTouchStart,
81
- testID: "buoy-rq-mstatus-error",
82
- showLabel: true,
83
- size: size
84
- }), /*#__PURE__*/_jsx(QueryStatus, {
85
- label: "Paused",
86
- color: "purple",
87
- count: paused,
88
- isActive: activeFilter === "paused",
89
- onPress: event => handleFilterClick("paused", event),
90
- onTouchStart: handleTouchStart,
91
- testID: "buoy-rq-mstatus-paused",
92
- showLabel: true,
93
- size: size
94
- })]
95
- })
33
+ return /*#__PURE__*/_jsxs(ChipStrip, {
34
+ scrollProps: scrollProps,
35
+ sentryLabel: "ignore devtools mutation status count scroll",
36
+ children: [/*#__PURE__*/_jsx(QueryStatus, {
37
+ label: "Pending",
38
+ color: "blue",
39
+ count: pending,
40
+ isActive: activeFilter === "pending",
41
+ onPress: event => handleFilterClick("pending", event),
42
+ onTouchStart: handleTouchStart,
43
+ testID: "buoy-rq-mstatus-pending",
44
+ showLabel: true,
45
+ size: size
46
+ }), /*#__PURE__*/_jsx(QueryStatus, {
47
+ label: "Success",
48
+ color: "green",
49
+ count: success,
50
+ isActive: activeFilter === "success",
51
+ onPress: event => handleFilterClick("success", event),
52
+ onTouchStart: handleTouchStart,
53
+ testID: "buoy-rq-mstatus-success",
54
+ showLabel: true,
55
+ size: size
56
+ }), /*#__PURE__*/_jsx(QueryStatus, {
57
+ label: "Error",
58
+ color: "red",
59
+ count: error,
60
+ isActive: activeFilter === "error",
61
+ onPress: event => handleFilterClick("error", event),
62
+ onTouchStart: handleTouchStart,
63
+ testID: "buoy-rq-mstatus-error",
64
+ showLabel: true,
65
+ size: size
66
+ }), /*#__PURE__*/_jsx(QueryStatus, {
67
+ label: "Paused",
68
+ color: "purple",
69
+ count: paused,
70
+ isActive: activeFilter === "paused",
71
+ onPress: event => handleFilterClick("paused", event),
72
+ onTouchStart: handleTouchStart,
73
+ testID: "buoy-rq-mstatus-paused",
74
+ showLabel: true,
75
+ size: size
76
+ })]
96
77
  });
97
78
  };
98
- const styles = StyleSheet.create({
99
- mutationStatusContainer: {
100
- flex: 1,
101
- minWidth: 0
102
- },
103
- scrollView: {
104
- flex: 1
105
- },
106
- scrollContent: {
107
- flexDirection: "row",
108
- alignItems: "center",
109
- gap: 8,
110
- paddingHorizontal: 4,
111
- paddingVertical: 4,
112
- flexGrow: 1
113
- }
114
- });
115
79
  export default MutationStatusCount;
@@ -5,7 +5,7 @@ import { View, StyleSheet, PanResponder, Animated, Dimensions, FlatList } from "
5
5
  import MutationButton from "./MutationButton";
6
6
  import MutationInformation from "./MutationInformation";
7
7
  import useAllMutations from "../../hooks/useAllMutations";
8
- import { night, ToolEmptyState } from "@buoy-gg/shared-ui";
8
+ import { night, ToolEmptyState, monoFont } from "@buoy-gg/shared-ui";
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  /**
11
11
  * Virtualized list of mutations with filtering and selection support for the mutation browser.
@@ -209,7 +209,7 @@ const styles = StyleSheet.create({
209
209
  color: night.color.textTertiary,
210
210
  fontSize: 14,
211
211
  textAlign: "center",
212
- fontFamily: "monospace",
212
+ fontFamily: monoFont,
213
213
  letterSpacing: 0.5
214
214
  }
215
215
  });
@@ -5,7 +5,7 @@ import { StyleSheet, FlatList } from "react-native";
5
5
  import QueryRow from "./QueryRow";
6
6
  import useAllQueries from "../../hooks/useAllQueries";
7
7
  import { getQueryStatusLabel } from "../../utils/getQueryStatusLabel";
8
- import { night, ToolEmptyState } from "@buoy-gg/shared-ui";
8
+ import { night, ToolEmptyState, EVENT_LIST_PRESET, monoFont } from "@buoy-gg/shared-ui";
9
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
10
  /**
11
11
  * Scrollable list view of cached queries with filtering support and selection handling.
@@ -126,17 +126,8 @@ export default function QueryBrowser({
126
126
  isSelected: selectedQuery?.queryHash === query.queryHash,
127
127
  onSelect: handleQuerySelect
128
128
  }),
129
- showsVerticalScrollIndicator: true
130
- // Clipped cells fail Detox's hittability check even when they are on
131
- // screen, so e2e bundles (Metro with EXPO_PUBLIC_E2E=1) turn clipping
132
- // off. Inlined at bundle time; a non-inlining bundler keeps prod
133
- // behavior.
134
- ,
135
- removeClippedSubviews: !(typeof process !== "undefined" && process.env?.EXPO_PUBLIC_E2E),
136
- initialNumToRender: 12,
137
- maxToRenderPerBatch: 8,
138
- windowSize: 5,
139
- updateCellsBatchingPeriod: 50
129
+ showsVerticalScrollIndicator: true,
130
+ ...EVENT_LIST_PRESET
140
131
  })
141
132
  );
142
133
  }
@@ -179,7 +170,7 @@ const styles = StyleSheet.create({
179
170
  color: night.color.textTertiary,
180
171
  fontSize: 14,
181
172
  textAlign: "center",
182
- fontFamily: "monospace",
173
+ fontFamily: monoFont,
183
174
  letterSpacing: 0.5
184
175
  }
185
176
  });
@@ -2,7 +2,7 @@
2
2
 
3
3
  import QueryDetailsChip from "./QueryDetailsChip";
4
4
  import { View, Text, ScrollView, StyleSheet } from "react-native";
5
- import { displayValue, night } from "@buoy-gg/shared-ui";
5
+ import { displayValue, night, monoFont } from "@buoy-gg/shared-ui";
6
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  /**
8
8
  * Renders the primary metadata summary for a selected query, including fetch status and timings.
@@ -90,7 +90,7 @@ const styles = StyleSheet.create({
90
90
  borderBottomColor: night.color.accent + "33",
91
91
  letterSpacing: 0.5,
92
92
  textTransform: "uppercase",
93
- fontFamily: "monospace"
93
+ fontFamily: monoFont
94
94
  },
95
95
  row: {
96
96
  flexDirection: "row",
@@ -108,7 +108,7 @@ const styles = StyleSheet.create({
108
108
  queryKeyText: {
109
109
  fontSize: 12,
110
110
  color: night.color.text,
111
- fontFamily: "monospace",
111
+ fontFamily: monoFont,
112
112
  lineHeight: 18,
113
113
  flexShrink: 1,
114
114
  backgroundColor: night.color.accent + "15",
@@ -124,13 +124,13 @@ const styles = StyleSheet.create({
124
124
  fontWeight: "600",
125
125
  letterSpacing: 0.5,
126
126
  textTransform: "uppercase",
127
- fontFamily: "monospace"
127
+ fontFamily: monoFont
128
128
  },
129
129
  valueText: {
130
130
  fontSize: 12,
131
131
  color: night.color.text,
132
132
  fontWeight: "500",
133
133
  fontVariant: ["tabular-nums"],
134
- fontFamily: "monospace"
134
+ fontFamily: monoFont
135
135
  }
136
136
  });
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { getQueryStatusLabel } from "../../utils/getQueryStatusLabel";
4
4
  import { Text, View, StyleSheet } from "react-native";
5
- import { buoyColors } from "@buoy-gg/shared-ui";
5
+ import { buoyColors, monoFont } from "@buoy-gg/shared-ui";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  const backgroundColors = {
8
8
  fresh: buoyColors.success + "15",
@@ -69,6 +69,6 @@ const styles = StyleSheet.create({
69
69
  fontWeight: "600",
70
70
  textTransform: "uppercase",
71
71
  letterSpacing: 0.5,
72
- fontFamily: "monospace"
72
+ fontFamily: monoFont
73
73
  }
74
74
  });