@buoy-gg/react-query 7.0.33 → 7.0.34

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 (29) hide show
  1. package/lib/commonjs/react-query/components/modals/MutationBrowserFooter.js +7 -19
  2. package/lib/commonjs/react-query/components/modals/QueryBrowserFooter.js +7 -19
  3. package/lib/commonjs/react-query/components/modals/ReactQueryModalHeader.js +23 -71
  4. package/lib/commonjs/react-query/components/query-browser/MutationStatusCount.js +51 -87
  5. package/lib/commonjs/react-query/components/query-browser/QueryBrowser.js +2 -11
  6. package/lib/commonjs/react-query/components/query-browser/QueryStatusCount.js +66 -112
  7. package/lib/commonjs/react-query/components/query-browser/StorageStatusCount.js +22 -67
  8. package/lib/commonjs/react-query/stores/reactQueryEventStore.js +13 -22
  9. package/lib/commonjs/react-query/sync/snapshotProvider.js +17 -62
  10. package/lib/module/react-query/components/modals/MutationBrowserFooter.js +8 -20
  11. package/lib/module/react-query/components/modals/QueryBrowserFooter.js +8 -20
  12. package/lib/module/react-query/components/modals/ReactQueryModalHeader.js +25 -73
  13. package/lib/module/react-query/components/query-browser/MutationStatusCount.js +51 -87
  14. package/lib/module/react-query/components/query-browser/QueryBrowser.js +3 -12
  15. package/lib/module/react-query/components/query-browser/QueryStatusCount.js +66 -112
  16. package/lib/module/react-query/components/query-browser/StorageStatusCount.js +22 -67
  17. package/lib/module/react-query/stores/reactQueryEventStore.js +13 -22
  18. package/lib/module/react-query/sync/snapshotProvider.js +18 -63
  19. package/lib/typescript/react-query/components/modals/MutationBrowserFooter.d.ts.map +1 -1
  20. package/lib/typescript/react-query/components/modals/QueryBrowserFooter.d.ts.map +1 -1
  21. package/lib/typescript/react-query/components/modals/ReactQueryModalHeader.d.ts.map +1 -1
  22. package/lib/typescript/react-query/components/query-browser/MutationStatusCount.d.ts.map +1 -1
  23. package/lib/typescript/react-query/components/query-browser/QueryBrowser.d.ts.map +1 -1
  24. package/lib/typescript/react-query/components/query-browser/QueryStatusCount.d.ts.map +1 -1
  25. package/lib/typescript/react-query/components/query-browser/StorageStatusCount.d.ts.map +1 -1
  26. package/lib/typescript/react-query/stores/reactQueryEventStore.d.ts +3 -8
  27. package/lib/typescript/react-query/stores/reactQueryEventStore.d.ts.map +1 -1
  28. package/lib/typescript/react-query/sync/snapshotProvider.d.ts.map +1 -1
  29. package/package.json +3 -3
@@ -4,8 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _react = require("react");
8
- var _reactNative = require("react-native");
7
+ var _sharedUi = require("@buoy-gg/shared-ui");
9
8
  var _QueryStatus = _interopRequireDefault(require("./QueryStatus"));
10
9
  var _storageQueryUtils = require("../../utils/storageQueryUtils");
11
10
  var _jsxRuntime = require("react/jsx-runtime");
@@ -24,21 +23,13 @@ const StorageStatusCount = ({
24
23
  onStorageTypesChange,
25
24
  counts
26
25
  }) => {
27
- // Scroll state management like QueryStatusCount
28
- const [isScrolling, setIsScrolling] = (0, _react.useState)(false);
29
- const touchStartX = (0, _react.useRef)(0);
30
- const touchStartY = (0, _react.useRef)(0);
26
+ const {
27
+ scrollProps,
28
+ onTouchStart: handleTouchStart,
29
+ isTap
30
+ } = (0, _sharedUi.useChipTap)();
31
31
  const handleStorageTypeToggle = (storageType, event) => {
32
- if (event) {
33
- // Calculate distance moved during touch (like QueryStatusCount)
34
- const dx = Math.abs(event.nativeEvent.pageX - touchStartX.current);
35
- const dy = Math.abs(event.nativeEvent.pageY - touchStartY.current);
36
-
37
- // If touch moved more than 5px in any direction, it's a swipe, not a tap
38
- if (dx > 5 || dy > 5 || isScrolling) {
39
- return; // Don't trigger filter change
40
- }
41
- }
32
+ if (!isTap(event)) return;
42
33
  if (onStorageTypesChange) {
43
34
  const newStorageTypes = new Set(activeStorageTypes);
44
35
  if (newStorageTypes.has(storageType)) {
@@ -49,58 +40,22 @@ const StorageStatusCount = ({
49
40
  onStorageTypesChange(newStorageTypes);
50
41
  }
51
42
  };
52
- const handleTouchStart = event => {
53
- touchStartX.current = event.nativeEvent.pageX;
54
- touchStartY.current = event.nativeEvent.pageY;
55
- };
56
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
57
- style: styles.storageStatusContainer,
58
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
59
- "sentry-label": "ignore devtools storage status count scroll",
60
- horizontal: true,
61
- showsHorizontalScrollIndicator: false,
62
- style: styles.scrollView,
63
- contentContainerStyle: styles.scrollContent,
64
- onScrollBeginDrag: () => setIsScrolling(true),
65
- onScrollEndDrag: () => setTimeout(() => setIsScrolling(false), 300),
66
- onMomentumScrollBegin: () => setIsScrolling(true),
67
- onMomentumScrollEnd: () => setTimeout(() => setIsScrolling(false), 300),
68
- children: allStorageTypes.map(storageType => {
69
- const count = counts?.[storageType] ?? 0;
70
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryStatus.default, {
71
- label: (0, _storageQueryUtils.getStorageTypeLabel)(storageType),
72
- color: (0, _storageQueryUtils.getStorageTypeColor)(storageType),
73
- count: count // Show actual storage query counts
74
- ,
75
- isActive: activeStorageTypes.has(storageType),
76
- onPress: event => handleStorageTypeToggle(storageType, event),
77
- onTouchStart: handleTouchStart,
78
- showLabel: true
79
- }, storageType);
80
- })
43
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ChipStrip, {
44
+ scrollProps: scrollProps,
45
+ sentryLabel: "ignore devtools storage status count scroll",
46
+ children: allStorageTypes.map(storageType => {
47
+ const count = counts?.[storageType] ?? 0;
48
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryStatus.default, {
49
+ label: (0, _storageQueryUtils.getStorageTypeLabel)(storageType),
50
+ color: (0, _storageQueryUtils.getStorageTypeColor)(storageType),
51
+ count: count // Show actual storage query counts
52
+ ,
53
+ isActive: activeStorageTypes.has(storageType),
54
+ onPress: event => handleStorageTypeToggle(storageType, event),
55
+ onTouchStart: handleTouchStart,
56
+ showLabel: true
57
+ }, storageType);
81
58
  })
82
59
  });
83
60
  };
84
- const styles = _reactNative.StyleSheet.create({
85
- storageStatusContainer: {
86
- // Container for ScrollView - take full width
87
- flex: 1,
88
- minWidth: 0
89
- },
90
- scrollView: {
91
- // ScrollView itself styles
92
- flex: 1
93
- },
94
- scrollContent: {
95
- // ScrollView content styles
96
- flexDirection: "row",
97
- alignItems: "center",
98
- gap: 8,
99
- // Spacing between chips
100
- paddingHorizontal: 4,
101
- // Small padding on ends
102
- paddingVertical: 4,
103
- flexGrow: 1 // Allow content to grow to fill available space
104
- }
105
- });
106
61
  var _default = exports.default = StorageStatusCount;
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.subscribeToReactQueryEvents = exports.setQueryClient = exports.reactQueryEventStore = exports.isReactQueryConnected = exports.getReactQueryEvents = exports.disconnectQueryClient = exports.clearReactQueryEvents = void 0;
7
+ var _sharedUi = require("@buoy-gg/shared-ui");
7
8
  var _storageQueryUtils = require("../utils/storageQueryUtils");
8
9
  /**
9
10
  * React Query Event Store
@@ -29,13 +30,15 @@ let eventIdCounter = 0;
29
30
  function generateEventId() {
30
31
  return `rq-${Date.now()}-${++eventIdCounter}`;
31
32
  }
32
- class ReactQueryEventStore {
33
- events = [];
34
- listeners = new Set();
33
+ class ReactQueryEventStore extends _sharedUi.ChangeLog {
35
34
  queryClient = null;
36
35
  queryUnsubscribe = null;
37
36
  mutationUnsubscribe = null;
38
- maxEvents = 200;
37
+ constructor() {
38
+ super({
39
+ max: 200
40
+ });
41
+ }
39
42
 
40
43
  // Track fetch start times for duration calculation
41
44
  fetchStartTimes = new Map();
@@ -246,43 +249,31 @@ class ReactQueryEventStore {
246
249
  * Add an event to the store
247
250
  */
248
251
  addEvent(event) {
249
- this.events = [event, ...this.events].slice(0, this.maxEvents);
250
- this.notifyListeners();
252
+ this.record(event);
251
253
  }
252
254
 
253
255
  /**
254
256
  * Get all events
255
257
  */
256
258
  getEvents() {
257
- return this.events;
259
+ return this.items;
258
260
  }
259
261
 
260
262
  /**
261
263
  * Subscribe to event changes
262
264
  */
263
265
  subscribe(listener) {
264
- this.listeners.add(listener);
266
+ const unsubscribe = super.subscribe(listener);
265
267
  // Immediately call with current events
266
- listener(this.events);
267
- return () => {
268
- this.listeners.delete(listener);
269
- };
270
- }
271
-
272
- /**
273
- * Notify all listeners
274
- */
275
- notifyListeners() {
276
- const events = this.events;
277
- this.listeners.forEach(listener => listener(events));
268
+ listener(this.items);
269
+ return unsubscribe;
278
270
  }
279
271
 
280
272
  /**
281
273
  * Clear all events
282
274
  */
283
275
  clearEvents() {
284
- this.events = [];
285
- this.notifyListeners();
276
+ this.clear();
286
277
  }
287
278
 
288
279
  /**
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.createQuerySnapshotProvider = createQuerySnapshotProvider;
7
7
  exports.registerQuerySnapshotProvider = registerQuerySnapshotProvider;
8
8
  var _sharedUi = require("@buoy-gg/shared-ui");
9
- var _dataViewer = require("@buoy-gg/shared-ui/dataViewer");
10
9
  var _dehydrate = require("./dehydrate");
11
10
  /**
12
11
  * Time Machine snapshot provider for React Query.
@@ -54,7 +53,6 @@ function queryLabel(queryKey, queryHash) {
54
53
  return queryHash;
55
54
  }
56
55
  }
57
- const ITEM_RENDER_BYTE_LIMIT = 256 * 1024;
58
56
 
59
57
  /**
60
58
  * A query `error` (and `fetchFailureReason`) usually holds the live
@@ -156,31 +154,15 @@ function createQuerySnapshotProvider(queryClient) {
156
154
  },
157
155
  async restore(data, options) {
158
156
  const snapshot = data;
159
- const excludedSet = new Set(options?.excludeKeys ?? []);
160
- const includedSet = options?.includeKeys ? new Set(options.includeKeys) : null;
161
- const touch = key => !excludedSet.has(key) && (!includedSet || includedSet.has(key));
162
- let excludedHits = 0;
163
- const result = {
164
- ok: true,
165
- applied: 0,
166
- skipped: [],
167
- warnings: []
168
- };
157
+ const scope = (0, _sharedUi.createRestoreScope)(options);
158
+ const result = (0, _sharedUi.emptyRestoreResult)();
169
159
  if (!snapshot?.queries) {
170
- return {
171
- ok: false,
172
- applied: 0,
173
- skipped: [],
174
- warnings: ["empty query snapshot"]
175
- };
160
+ return (0, _sharedUi.failedRestore)("empty query snapshot");
176
161
  }
177
162
  const cache = queryClient.getQueryCache();
178
163
  const snapHashes = new Set(snapshot.queries.map(q => q.queryHash));
179
164
  for (const snap of snapshot.queries) {
180
- if (!touch(snap.queryHash)) {
181
- excludedHits += 1;
182
- continue;
183
- }
165
+ if (!scope.allows(snap.queryHash)) continue;
184
166
  // Snapshots taken before the raw-capture fix hold a wire placeholder
185
167
  // instead of the data. Writing that into the cache hands the app an
186
168
  // object with none of its fields — leave the live query alone and say
@@ -221,10 +203,7 @@ function createQuerySnapshotProvider(queryClient) {
221
203
  // Cache entries the snapshot doesn't know about get removed; a mounted
222
204
  // observer will rebuild + refetch its query on next interaction.
223
205
  for (const query of cache.getAll().slice()) {
224
- if (!touch(query.queryHash)) {
225
- excludedHits += 1;
226
- continue;
227
- }
206
+ if (!scope.allows(query.queryHash)) continue;
228
207
  if (!snapHashes.has(query.queryHash)) {
229
208
  try {
230
209
  cache.remove(query);
@@ -242,9 +221,8 @@ function createQuerySnapshotProvider(queryClient) {
242
221
  queryClient.getMutationCache().clear();
243
222
  result.warnings.push(`mutation cache cleared (${mutationCount} mutation(s))`);
244
223
  }
245
- if (excludedHits > 0) {
246
- result.warnings.push(`${excludedHits} quer(y/ies) excluded by you`);
247
- }
224
+ const excludedWarning = scope.excludedWarning("quer(y/ies)");
225
+ if (excludedWarning) result.warnings.push(excludedWarning);
248
226
  return result;
249
227
  },
250
228
  /** Per-query restore preview. `base` omitted = compare against live cache. */
@@ -270,39 +248,16 @@ function createQuerySnapshotProvider(queryClient) {
270
248
  continue;
271
249
  }
272
250
  const baseQ = baseByHash.get(q.queryHash);
273
- if (!baseQ) {
274
- items.push({
275
- key: q.queryHash,
276
- label,
277
- verdict: "added",
278
- newValue: comparableQuery(q)
279
- });
280
- continue;
281
- }
282
- const oldVal = comparableQuery(baseQ);
283
- const newVal = comparableQuery(q);
284
- if ((0, _dataViewer.boundedDeepEqual)(oldVal, newVal)) {
285
- items.push({
286
- key: q.queryHash,
287
- label,
288
- verdict: "unchanged"
289
- });
290
- } else if ((0, _dataViewer.jsonLikelyLargerThan)(oldVal, ITEM_RENDER_BYTE_LIMIT) || (0, _dataViewer.jsonLikelyLargerThan)(newVal, ITEM_RENDER_BYTE_LIMIT)) {
291
- items.push({
292
- key: q.queryHash,
293
- label,
294
- verdict: "too-large",
295
- reason: "query data too large to render a diff — restore still applies it"
296
- });
297
- } else {
298
- items.push({
299
- key: q.queryHash,
300
- label,
301
- verdict: "changed",
302
- oldValue: oldVal,
303
- newValue: newVal
304
- });
305
- }
251
+ items.push((0, _sharedUi.classifyPreviewItem)({
252
+ key: q.queryHash,
253
+ label,
254
+ oldValue: baseQ ? comparableQuery(baseQ) : undefined,
255
+ newValue: comparableQuery(q),
256
+ inOld: baseQ !== undefined,
257
+ inNew: true
258
+ }, {
259
+ tooLargeReason: "query data too large to render a diff — restore still applies it"
260
+ }));
306
261
  }
307
262
  for (const q of baseQueries) {
308
263
  if (!targetByHash.has(q.queryHash)) {
@@ -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 MutationStatusCount from "../query-browser/MutationStatusCount";
6
6
  import { useMemo } from "react";
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -28,13 +28,12 @@ export function MutationBrowserFooter({
28
28
  const paddingBottom = useMemo(() => {
29
29
  return !isFloatingMode ? insets.bottom : 0;
30
30
  }, [isFloatingMode, insets.bottom]);
31
- return /*#__PURE__*/_jsx(View, {
31
+ return /*#__PURE__*/_jsx(ToolFooter, {
32
32
  // Force re-render with key change
33
- style: [styles.filterFooter, {
34
- paddingBottom
35
- },
36
- // Remove border radius when docked to bottom
37
- !isFloatingMode && styles.dockedFooter],
33
+ floating: isFloatingMode,
34
+ safeArea: false,
35
+ paddingBottom: paddingBottom,
36
+ style: styles.filterFooter,
38
37
  children: /*#__PURE__*/_jsx(View, {
39
38
  style: styles.filterContainer,
40
39
  children: /*#__PURE__*/_jsx(MutationStatusCount, {
@@ -47,19 +46,8 @@ export function MutationBrowserFooter({
47
46
  }
48
47
  const styles = StyleSheet.create({
49
48
  filterFooter: {
50
- borderTopWidth: 1,
51
- borderTopColor: night.color.border,
52
- paddingVertical: 8,
53
- paddingHorizontal: 0,
54
- // Transparent so the night sheet's star field shows through.
55
- // Night glass bar — matches the shared EventStepperFooter backing.
56
- backgroundColor: "rgba(5, 5, 5, 0.92)",
57
- borderBottomLeftRadius: 14,
58
- borderBottomRightRadius: 14
59
- },
60
- dockedFooter: {
61
- borderBottomLeftRadius: 0,
62
- borderBottomRightRadius: 0
49
+ paddingTop: 8,
50
+ paddingHorizontal: 0
63
51
  },
64
52
  filterContainer: {
65
53
  minHeight: 32,
@@ -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