@buoy-gg/react-query 3.0.0 → 3.0.2

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 (36) hide show
  1. package/lib/commonjs/index.js +8 -0
  2. package/lib/commonjs/react-query/components/modals/MutationBrowserFooter.js +4 -2
  3. package/lib/commonjs/react-query/components/modals/QueryBrowserFooter.js +5 -2
  4. package/lib/commonjs/react-query/components/modals/ReactQueryModalHeader.js +24 -1
  5. package/lib/commonjs/react-query/components/modals/SwipeIndicator.js +2 -2
  6. package/lib/commonjs/react-query/components/query-browser/MutationStatusCount.js +10 -5
  7. package/lib/commonjs/react-query/components/query-browser/QueryStatus.js +25 -5
  8. package/lib/commonjs/react-query/components/query-browser/QueryStatusCount.js +12 -1
  9. package/lib/commonjs/react-query/sync/useReactQuerySyncAdapter.js +26 -0
  10. package/lib/module/index.js +1 -0
  11. package/lib/module/react-query/components/modals/MutationBrowserFooter.js +4 -2
  12. package/lib/module/react-query/components/modals/QueryBrowserFooter.js +5 -2
  13. package/lib/module/react-query/components/modals/ReactQueryModalHeader.js +24 -1
  14. package/lib/module/react-query/components/modals/SwipeIndicator.js +2 -1
  15. package/lib/module/react-query/components/query-browser/MutationStatusCount.js +10 -5
  16. package/lib/module/react-query/components/query-browser/QueryStatus.js +25 -5
  17. package/lib/module/react-query/components/query-browser/QueryStatusCount.js +12 -1
  18. package/lib/module/react-query/sync/useReactQuerySyncAdapter.js +23 -0
  19. package/lib/typescript/index.d.ts +1 -0
  20. package/lib/typescript/index.d.ts.map +1 -1
  21. package/lib/typescript/react-query/components/modals/MutationBrowserFooter.d.ts +3 -1
  22. package/lib/typescript/react-query/components/modals/MutationBrowserFooter.d.ts.map +1 -1
  23. package/lib/typescript/react-query/components/modals/QueryBrowserFooter.d.ts +4 -1
  24. package/lib/typescript/react-query/components/modals/QueryBrowserFooter.d.ts.map +1 -1
  25. package/lib/typescript/react-query/components/modals/ReactQueryModalHeader.d.ts +6 -1
  26. package/lib/typescript/react-query/components/modals/ReactQueryModalHeader.d.ts.map +1 -1
  27. package/lib/typescript/react-query/components/modals/SwipeIndicator.d.ts.map +1 -1
  28. package/lib/typescript/react-query/components/query-browser/MutationStatusCount.d.ts +2 -0
  29. package/lib/typescript/react-query/components/query-browser/MutationStatusCount.d.ts.map +1 -1
  30. package/lib/typescript/react-query/components/query-browser/QueryStatus.d.ts +5 -0
  31. package/lib/typescript/react-query/components/query-browser/QueryStatus.d.ts.map +1 -1
  32. package/lib/typescript/react-query/components/query-browser/QueryStatusCount.d.ts +2 -0
  33. package/lib/typescript/react-query/components/query-browser/QueryStatusCount.d.ts.map +1 -1
  34. package/lib/typescript/react-query/sync/useReactQuerySyncAdapter.d.ts +9 -0
  35. package/lib/typescript/react-query/sync/useReactQuerySyncAdapter.d.ts.map +1 -0
  36. package/package.json +3 -3
@@ -12,6 +12,7 @@ var _exportNames = {
12
12
  disconnectQueryClient: true,
13
13
  reactQueryEventStore: true,
14
14
  createReactQuerySyncAdapter: true,
15
+ useReactQuerySyncAdapter: true,
15
16
  ReactQueryModal: true,
16
17
  ReactQueryModalHeader: true,
17
18
  QueryBrowserModal: true,
@@ -491,6 +492,12 @@ Object.defineProperty(exports, "useReactQueryState", {
491
492
  return _useReactQueryState.useReactQueryState;
492
493
  }
493
494
  });
495
+ Object.defineProperty(exports, "useReactQuerySyncAdapter", {
496
+ enumerable: true,
497
+ get: function () {
498
+ return _useReactQuerySyncAdapter.useReactQuerySyncAdapter;
499
+ }
500
+ });
494
501
  Object.defineProperty(exports, "useStorageQueryCounts", {
495
502
  enumerable: true,
496
503
  get: function () {
@@ -512,6 +519,7 @@ Object.defineProperty(exports, "wifiTogglePreset", {
512
519
  var _preset = require("./preset");
513
520
  var _reactQueryEventStore = require("./react-query/stores/reactQueryEventStore");
514
521
  var _reactQuerySyncAdapter = require("./react-query/sync/reactQuerySyncAdapter");
522
+ var _useReactQuerySyncAdapter = require("./react-query/sync/useReactQuerySyncAdapter");
515
523
  var _ReactQueryModal = require("./react-query/components/modals/ReactQueryModal");
516
524
  var _ReactQueryModalHeader = require("./react-query/components/modals/ReactQueryModalHeader");
517
525
  var _QueryBrowserModal = require("./react-query/components/modals/QueryBrowserModal");
@@ -21,7 +21,8 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
21
21
  function MutationBrowserFooter({
22
22
  activeFilter,
23
23
  onFilterChange,
24
- modalMode
24
+ modalMode,
25
+ size = "default"
25
26
  }) {
26
27
  const isFloatingMode = modalMode === "floating";
27
28
  const insets = (0, _sharedUi.useSafeAreaInsets)({
@@ -43,7 +44,8 @@ function MutationBrowserFooter({
43
44
  style: styles.filterContainer,
44
45
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_MutationStatusCount.default, {
45
46
  activeFilter: activeFilter,
46
- onFilterChange: onFilterChange
47
+ onFilterChange: onFilterChange,
48
+ size: size
47
49
  })
48
50
  })
49
51
  }, `footer-${isFloatingMode ? "floating" : "docked"}`);
@@ -20,7 +20,9 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
20
20
  function QueryBrowserFooter({
21
21
  activeFilter,
22
22
  onFilterChange,
23
- isFloatingMode = true // Default to floating mode if not specified
23
+ isFloatingMode = true,
24
+ // Default to floating mode if not specified
25
+ size = "default"
24
26
  }) {
25
27
  // Use safe area insets with a minimum bottom padding of 16 for docked mode
26
28
  // This ensures proper spacing even on resized simulators or devices without home indicator
@@ -37,7 +39,8 @@ function QueryBrowserFooter({
37
39
  style: styles.filterContainer,
38
40
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryStatusCount.default, {
39
41
  activeFilter: activeFilter,
40
- onFilterChange: onFilterChange
42
+ onFilterChange: onFilterChange,
43
+ size: size
41
44
  })
42
45
  })
43
46
  });
@@ -7,6 +7,7 @@ exports.ReactQueryModalHeader = ReactQueryModalHeader;
7
7
  var _sharedUi = require("@buoy-gg/shared-ui");
8
8
  var _react = require("react");
9
9
  var _reactNative = require("react-native");
10
+ var _WifiToggle = require("../WifiToggle");
10
11
  var _jsxRuntime = require("react/jsx-runtime");
11
12
  /**
12
13
  * Shared header for all React Query modals. Handles tab switching when browsing and presents
@@ -22,7 +23,8 @@ function ReactQueryModalHeader({
22
23
  onSearchChange,
23
24
  onFilterPress,
24
25
  hasActiveFilters = false,
25
- onClearCache
26
+ onClearCache,
27
+ showWifiToggle = false
26
28
  }) {
27
29
  const [isSearchActive, setIsSearchActive] = (0, _react.useState)(false);
28
30
  const searchInputRef = (0, _react.useRef)(null);
@@ -112,6 +114,18 @@ function ReactQueryModalHeader({
112
114
  color: _sharedUi.buoyColors.textSecondary
113
115
  })
114
116
  }) : null]
117
+ }) : showWifiToggle ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
118
+ style: styles.tabRow,
119
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
120
+ style: styles.tabSelectorWrap,
121
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TabSelector, {
122
+ tabs: tabs,
123
+ activeTab: activeTab,
124
+ onTabChange: tab => onTabChange(tab)
125
+ })
126
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_WifiToggle.WifiToggle, {
127
+ size: 16
128
+ })]
115
129
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TabSelector, {
116
130
  tabs: tabs,
117
131
  activeTab: activeTab,
@@ -148,6 +162,15 @@ function ReactQueryModalHeader({
148
162
  });
149
163
  }
150
164
  const styles = _reactNative.StyleSheet.create({
165
+ tabRow: {
166
+ flex: 1,
167
+ flexDirection: "row",
168
+ alignItems: "center",
169
+ gap: 12
170
+ },
171
+ tabSelectorWrap: {
172
+ flex: 1
173
+ },
151
174
  headerSearchContainer: {
152
175
  flexDirection: "row",
153
176
  alignItems: "center",
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.SwipeIndicator = SwipeIndicator;
7
7
  var _reactNative = require("react-native");
8
- var _react = require("react");
9
8
  var _sharedUi = require("@buoy-gg/shared-ui");
9
+ var _react = require("react");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  /**
12
12
  * Morphing swipe indicator – thin line ➜ pill ➜ circle with a pop-out cue at
@@ -188,7 +188,7 @@ function SwipeIndicator({
188
188
  }
189
189
  const styles = _reactNative.StyleSheet.create({
190
190
  container: {
191
- ..._reactNative.StyleSheet.absoluteFillObject,
191
+ ..._sharedUi.absoluteFill,
192
192
  zIndex: 1000,
193
193
  justifyContent: "center",
194
194
  alignItems: "center"
@@ -16,7 +16,8 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
16
16
  */
17
17
  const MutationStatusCount = ({
18
18
  activeFilter,
19
- onFilterChange
19
+ onFilterChange,
20
+ size = "default"
20
21
  }) => {
21
22
  const {
22
23
  pending,
@@ -62,7 +63,8 @@ const MutationStatusCount = ({
62
63
  isActive: activeFilter === "pending",
63
64
  onPress: event => handleFilterClick("pending", event),
64
65
  onTouchStart: handleTouchStart,
65
- showLabel: true
66
+ showLabel: true,
67
+ size: size
66
68
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryStatus.default, {
67
69
  label: "Success",
68
70
  color: "green",
@@ -70,7 +72,8 @@ const MutationStatusCount = ({
70
72
  isActive: activeFilter === "success",
71
73
  onPress: event => handleFilterClick("success", event),
72
74
  onTouchStart: handleTouchStart,
73
- showLabel: true
75
+ showLabel: true,
76
+ size: size
74
77
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryStatus.default, {
75
78
  label: "Error",
76
79
  color: "red",
@@ -78,7 +81,8 @@ const MutationStatusCount = ({
78
81
  isActive: activeFilter === "error",
79
82
  onPress: event => handleFilterClick("error", event),
80
83
  onTouchStart: handleTouchStart,
81
- showLabel: true
84
+ showLabel: true,
85
+ size: size
82
86
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryStatus.default, {
83
87
  label: "Paused",
84
88
  color: "purple",
@@ -86,7 +90,8 @@ const MutationStatusCount = ({
86
90
  isActive: activeFilter === "paused",
87
91
  onPress: event => handleFilterClick("paused", event),
88
92
  onTouchStart: handleTouchStart,
89
- showLabel: true
93
+ showLabel: true,
94
+ size: size
90
95
  })]
91
96
  })
92
97
  });
@@ -17,8 +17,10 @@ const QueryStatus = ({
17
17
  showLabel = true,
18
18
  isActive = false,
19
19
  onPress,
20
- onTouchStart
20
+ onTouchStart,
21
+ size = "default"
21
22
  }) => {
23
+ const isLarge = size === "large";
22
24
  // Buoy theme color mapping for status indicators
23
25
  const getStatusColors = colorName => {
24
26
  const colorMap = {
@@ -64,7 +66,7 @@ const QueryStatus = ({
64
66
  const statusColors = getStatusColors(color);
65
67
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
66
68
  "sentry-label": "ignore devtools query status",
67
- style: [styles.queryStatusTag, isActive && {
69
+ style: [styles.queryStatusTag, isLarge && styles.queryStatusTagLarge, isActive && {
68
70
  backgroundColor: statusColors.dot + "15",
69
71
  borderColor: statusColors.dot + "40"
70
72
  }],
@@ -73,16 +75,16 @@ const QueryStatus = ({
73
75
  onPressIn: onTouchStart,
74
76
  activeOpacity: 0.7,
75
77
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
76
- style: [styles.dot, {
78
+ style: [styles.dot, isLarge && styles.dotLarge, {
77
79
  backgroundColor: statusColors.dot
78
80
  }]
79
81
  }), showLabel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
80
- style: [styles.label],
82
+ style: [styles.label, isLarge && styles.labelLarge],
81
83
  numberOfLines: 1,
82
84
  ellipsizeMode: "tail",
83
85
  children: label
84
86
  }), count > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
85
- style: [styles.count, {
87
+ style: [styles.count, isLarge && styles.countLarge, {
86
88
  color: statusColors.dot
87
89
  }],
88
90
  numberOfLines: 1,
@@ -103,23 +105,41 @@ const styles = _reactNative.StyleSheet.create({
103
105
  borderWidth: 1,
104
106
  borderColor: _sharedUi.buoyColors.textMuted + "20"
105
107
  },
108
+ queryStatusTagLarge: {
109
+ borderRadius: 18,
110
+ paddingHorizontal: 16,
111
+ paddingVertical: 9,
112
+ height: 40,
113
+ gap: 9
114
+ },
106
115
  dot: {
107
116
  width: 6,
108
117
  height: 6,
109
118
  borderRadius: 3
110
119
  },
120
+ dotLarge: {
121
+ width: 9,
122
+ height: 9,
123
+ borderRadius: 4.5
124
+ },
111
125
  label: {
112
126
  fontSize: 11,
113
127
  fontWeight: "500",
114
128
  color: _sharedUi.buoyColors.textSecondary,
115
129
  fontFamily: "system"
116
130
  },
131
+ labelLarge: {
132
+ fontSize: 15
133
+ },
117
134
  count: {
118
135
  fontSize: 11,
119
136
  fontVariant: ["tabular-nums"],
120
137
  fontWeight: "600",
121
138
  marginLeft: "auto",
122
139
  fontFamily: "system"
140
+ },
141
+ countLarge: {
142
+ fontSize: 15
123
143
  }
124
144
  });
125
145
  var _default = exports.default = QueryStatus;
@@ -15,7 +15,8 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
15
15
  */
16
16
  const QueryStatusCount = ({
17
17
  activeFilter,
18
- onFilterChange
18
+ onFilterChange,
19
+ size = "default"
19
20
  }) => {
20
21
  const {
21
22
  fresh,
@@ -69,6 +70,8 @@ const QueryStatusCount = ({
69
70
  onPress: event => handleFilterClick("fresh", event),
70
71
  onTouchStart: handleTouchStart,
71
72
  showLabel: true // Always show labels now
73
+ ,
74
+ size: size
72
75
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryStatus.default, {
73
76
  label: "Loading",
74
77
  color: "blue",
@@ -77,6 +80,8 @@ const QueryStatusCount = ({
77
80
  onPress: event => handleFilterClick("fetching", event),
78
81
  onTouchStart: handleTouchStart,
79
82
  showLabel: true // Always show labels now
83
+ ,
84
+ size: size
80
85
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryStatus.default, {
81
86
  label: "Paused",
82
87
  color: "purple",
@@ -85,6 +90,8 @@ const QueryStatusCount = ({
85
90
  onPress: event => handleFilterClick("paused", event),
86
91
  onTouchStart: handleTouchStart,
87
92
  showLabel: true // Always show labels now
93
+ ,
94
+ size: size
88
95
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryStatus.default, {
89
96
  label: "Stale",
90
97
  color: "yellow",
@@ -93,6 +100,8 @@ const QueryStatusCount = ({
93
100
  onPress: event => handleFilterClick("stale", event),
94
101
  onTouchStart: handleTouchStart,
95
102
  showLabel: true // Always show labels now
103
+ ,
104
+ size: size
96
105
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryStatus.default, {
97
106
  label: "Idle",
98
107
  color: "gray",
@@ -101,6 +110,8 @@ const QueryStatusCount = ({
101
110
  onPress: event => handleFilterClick("inactive", event),
102
111
  onTouchStart: handleTouchStart,
103
112
  showLabel: true // Always show labels now
113
+ ,
114
+ size: size
104
115
  })]
105
116
  })
106
117
  });
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useReactQuerySyncAdapter = useReactQuerySyncAdapter;
7
+ var _react = require("react");
8
+ var _reactQuery = require("@tanstack/react-query");
9
+ var _reactQuerySyncAdapter = require("./reactQuerySyncAdapter");
10
+ /**
11
+ * Context-based variant of createReactQuerySyncAdapter for zero-config
12
+ * wiring (FloatingDevTools' auto external sync): reads the QueryClient from
13
+ * the surrounding QueryClientProvider. Returns null when rendered outside a
14
+ * provider so callers can skip registering the query tool.
15
+ */
16
+ function useReactQuerySyncAdapter() {
17
+ let queryClient;
18
+ try {
19
+ // Just a context read — throws only when there is no provider above us,
20
+ // which never changes for a mounted tree, so hook order stays stable.
21
+ queryClient = (0, _reactQuery.useQueryClient)();
22
+ } catch {
23
+ queryClient = null;
24
+ }
25
+ return (0, _react.useMemo)(() => queryClient ? (0, _reactQuerySyncAdapter.createReactQuerySyncAdapter)(queryClient) : null, [queryClient]);
26
+ }
@@ -31,6 +31,7 @@ export { setQueryClient, disconnectQueryClient } from "./react-query/stores/reac
31
31
  // EXTERNAL SYNC (Adapter factory for @buoy-gg/external-sync's useExternalSync)
32
32
  // =============================================================================
33
33
  export { createReactQuerySyncAdapter } from "./react-query/sync/reactQuerySyncAdapter";
34
+ export { useReactQuerySyncAdapter } from "./react-query/sync/useReactQuerySyncAdapter";
34
35
  // =============================================================================
35
36
  // COMPONENTS (For custom UI implementations)
36
37
  // =============================================================================
@@ -16,7 +16,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
16
16
  export function MutationBrowserFooter({
17
17
  activeFilter,
18
18
  onFilterChange,
19
- modalMode
19
+ modalMode,
20
+ size = "default"
20
21
  }) {
21
22
  const isFloatingMode = modalMode === "floating";
22
23
  const insets = useSafeAreaInsets({
@@ -38,7 +39,8 @@ export function MutationBrowserFooter({
38
39
  style: styles.filterContainer,
39
40
  children: /*#__PURE__*/_jsx(MutationStatusCount, {
40
41
  activeFilter: activeFilter,
41
- onFilterChange: onFilterChange
42
+ onFilterChange: onFilterChange,
43
+ size: size
42
44
  })
43
45
  })
44
46
  }, `footer-${isFloatingMode ? "floating" : "docked"}`);
@@ -15,7 +15,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
15
15
  export function QueryBrowserFooter({
16
16
  activeFilter,
17
17
  onFilterChange,
18
- isFloatingMode = true // Default to floating mode if not specified
18
+ isFloatingMode = true,
19
+ // Default to floating mode if not specified
20
+ size = "default"
19
21
  }) {
20
22
  // Use safe area insets with a minimum bottom padding of 16 for docked mode
21
23
  // This ensures proper spacing even on resized simulators or devices without home indicator
@@ -32,7 +34,8 @@ export function QueryBrowserFooter({
32
34
  style: styles.filterContainer,
33
35
  children: /*#__PURE__*/_jsx(QueryStatusCount, {
34
36
  activeFilter: activeFilter,
35
- onFilterChange: onFilterChange
37
+ onFilterChange: onFilterChange,
38
+ size: size
36
39
  })
37
40
  })
38
41
  });
@@ -3,6 +3,7 @@
3
3
  import { ModalHeader, TabSelector, Search, X, Filter, Trash, buoyColors } from "@buoy-gg/shared-ui";
4
4
  import { useState, useRef, useEffect } from "react";
5
5
  import { View, TextInput, TouchableOpacity, StyleSheet } from "react-native";
6
+ import { WifiToggle } from "../WifiToggle";
6
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
8
  /**
8
9
  * Shared header for all React Query modals. Handles tab switching when browsing and presents
@@ -18,7 +19,8 @@ export function ReactQueryModalHeader({
18
19
  onSearchChange,
19
20
  onFilterPress,
20
21
  hasActiveFilters = false,
21
- onClearCache
22
+ onClearCache,
23
+ showWifiToggle = false
22
24
  }) {
23
25
  const [isSearchActive, setIsSearchActive] = useState(false);
24
26
  const searchInputRef = useRef(null);
@@ -108,6 +110,18 @@ export function ReactQueryModalHeader({
108
110
  color: buoyColors.textSecondary
109
111
  })
110
112
  }) : null]
113
+ }) : showWifiToggle ? /*#__PURE__*/_jsxs(View, {
114
+ style: styles.tabRow,
115
+ children: [/*#__PURE__*/_jsx(View, {
116
+ style: styles.tabSelectorWrap,
117
+ children: /*#__PURE__*/_jsx(TabSelector, {
118
+ tabs: tabs,
119
+ activeTab: activeTab,
120
+ onTabChange: tab => onTabChange(tab)
121
+ })
122
+ }), /*#__PURE__*/_jsx(WifiToggle, {
123
+ size: 16
124
+ })]
111
125
  }) : /*#__PURE__*/_jsx(TabSelector, {
112
126
  tabs: tabs,
113
127
  activeTab: activeTab,
@@ -144,6 +158,15 @@ export function ReactQueryModalHeader({
144
158
  });
145
159
  }
146
160
  const styles = StyleSheet.create({
161
+ tabRow: {
162
+ flex: 1,
163
+ flexDirection: "row",
164
+ alignItems: "center",
165
+ gap: 12
166
+ },
167
+ tabSelectorWrap: {
168
+ flex: 1
169
+ },
147
170
  headerSearchContainer: {
148
171
  flexDirection: "row",
149
172
  alignItems: "center",
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { View, StyleSheet, Animated } from "react-native";
4
+ import { absoluteFill } from "@buoy-gg/shared-ui";
4
5
  import { useMemo } from "react";
5
6
  import { ChevronLeft, ChevronRight, buoyColors } from "@buoy-gg/shared-ui";
6
7
 
@@ -184,7 +185,7 @@ export function SwipeIndicator({
184
185
  }
185
186
  const styles = StyleSheet.create({
186
187
  container: {
187
- ...StyleSheet.absoluteFillObject,
188
+ ...absoluteFill,
188
189
  zIndex: 1000,
189
190
  justifyContent: "center",
190
191
  alignItems: "center"
@@ -11,7 +11,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  */
12
12
  const MutationStatusCount = ({
13
13
  activeFilter,
14
- onFilterChange
14
+ onFilterChange,
15
+ size = "default"
15
16
  }) => {
16
17
  const {
17
18
  pending,
@@ -57,7 +58,8 @@ const MutationStatusCount = ({
57
58
  isActive: activeFilter === "pending",
58
59
  onPress: event => handleFilterClick("pending", event),
59
60
  onTouchStart: handleTouchStart,
60
- showLabel: true
61
+ showLabel: true,
62
+ size: size
61
63
  }), /*#__PURE__*/_jsx(QueryStatus, {
62
64
  label: "Success",
63
65
  color: "green",
@@ -65,7 +67,8 @@ const MutationStatusCount = ({
65
67
  isActive: activeFilter === "success",
66
68
  onPress: event => handleFilterClick("success", event),
67
69
  onTouchStart: handleTouchStart,
68
- showLabel: true
70
+ showLabel: true,
71
+ size: size
69
72
  }), /*#__PURE__*/_jsx(QueryStatus, {
70
73
  label: "Error",
71
74
  color: "red",
@@ -73,7 +76,8 @@ const MutationStatusCount = ({
73
76
  isActive: activeFilter === "error",
74
77
  onPress: event => handleFilterClick("error", event),
75
78
  onTouchStart: handleTouchStart,
76
- showLabel: true
79
+ showLabel: true,
80
+ size: size
77
81
  }), /*#__PURE__*/_jsx(QueryStatus, {
78
82
  label: "Paused",
79
83
  color: "purple",
@@ -81,7 +85,8 @@ const MutationStatusCount = ({
81
85
  isActive: activeFilter === "paused",
82
86
  onPress: event => handleFilterClick("paused", event),
83
87
  onTouchStart: handleTouchStart,
84
- showLabel: true
88
+ showLabel: true,
89
+ size: size
85
90
  })]
86
91
  })
87
92
  });
@@ -13,8 +13,10 @@ const QueryStatus = ({
13
13
  showLabel = true,
14
14
  isActive = false,
15
15
  onPress,
16
- onTouchStart
16
+ onTouchStart,
17
+ size = "default"
17
18
  }) => {
19
+ const isLarge = size === "large";
18
20
  // Buoy theme color mapping for status indicators
19
21
  const getStatusColors = colorName => {
20
22
  const colorMap = {
@@ -60,7 +62,7 @@ const QueryStatus = ({
60
62
  const statusColors = getStatusColors(color);
61
63
  return /*#__PURE__*/_jsxs(TouchableOpacity, {
62
64
  "sentry-label": "ignore devtools query status",
63
- style: [styles.queryStatusTag, isActive && {
65
+ style: [styles.queryStatusTag, isLarge && styles.queryStatusTagLarge, isActive && {
64
66
  backgroundColor: statusColors.dot + "15",
65
67
  borderColor: statusColors.dot + "40"
66
68
  }],
@@ -69,16 +71,16 @@ const QueryStatus = ({
69
71
  onPressIn: onTouchStart,
70
72
  activeOpacity: 0.7,
71
73
  children: [/*#__PURE__*/_jsx(View, {
72
- style: [styles.dot, {
74
+ style: [styles.dot, isLarge && styles.dotLarge, {
73
75
  backgroundColor: statusColors.dot
74
76
  }]
75
77
  }), showLabel && /*#__PURE__*/_jsx(Text, {
76
- style: [styles.label],
78
+ style: [styles.label, isLarge && styles.labelLarge],
77
79
  numberOfLines: 1,
78
80
  ellipsizeMode: "tail",
79
81
  children: label
80
82
  }), count > 0 && /*#__PURE__*/_jsx(Text, {
81
- style: [styles.count, {
83
+ style: [styles.count, isLarge && styles.countLarge, {
82
84
  color: statusColors.dot
83
85
  }],
84
86
  numberOfLines: 1,
@@ -99,23 +101,41 @@ const styles = StyleSheet.create({
99
101
  borderWidth: 1,
100
102
  borderColor: buoyColors.textMuted + "20"
101
103
  },
104
+ queryStatusTagLarge: {
105
+ borderRadius: 18,
106
+ paddingHorizontal: 16,
107
+ paddingVertical: 9,
108
+ height: 40,
109
+ gap: 9
110
+ },
102
111
  dot: {
103
112
  width: 6,
104
113
  height: 6,
105
114
  borderRadius: 3
106
115
  },
116
+ dotLarge: {
117
+ width: 9,
118
+ height: 9,
119
+ borderRadius: 4.5
120
+ },
107
121
  label: {
108
122
  fontSize: 11,
109
123
  fontWeight: "500",
110
124
  color: buoyColors.textSecondary,
111
125
  fontFamily: "system"
112
126
  },
127
+ labelLarge: {
128
+ fontSize: 15
129
+ },
113
130
  count: {
114
131
  fontSize: 11,
115
132
  fontVariant: ["tabular-nums"],
116
133
  fontWeight: "600",
117
134
  marginLeft: "auto",
118
135
  fontFamily: "system"
136
+ },
137
+ countLarge: {
138
+ fontSize: 15
119
139
  }
120
140
  });
121
141
  export default QueryStatus;
@@ -10,7 +10,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  */
11
11
  const QueryStatusCount = ({
12
12
  activeFilter,
13
- onFilterChange
13
+ onFilterChange,
14
+ size = "default"
14
15
  }) => {
15
16
  const {
16
17
  fresh,
@@ -64,6 +65,8 @@ const QueryStatusCount = ({
64
65
  onPress: event => handleFilterClick("fresh", event),
65
66
  onTouchStart: handleTouchStart,
66
67
  showLabel: true // Always show labels now
68
+ ,
69
+ size: size
67
70
  }), /*#__PURE__*/_jsx(QueryStatus, {
68
71
  label: "Loading",
69
72
  color: "blue",
@@ -72,6 +75,8 @@ const QueryStatusCount = ({
72
75
  onPress: event => handleFilterClick("fetching", event),
73
76
  onTouchStart: handleTouchStart,
74
77
  showLabel: true // Always show labels now
78
+ ,
79
+ size: size
75
80
  }), /*#__PURE__*/_jsx(QueryStatus, {
76
81
  label: "Paused",
77
82
  color: "purple",
@@ -80,6 +85,8 @@ const QueryStatusCount = ({
80
85
  onPress: event => handleFilterClick("paused", event),
81
86
  onTouchStart: handleTouchStart,
82
87
  showLabel: true // Always show labels now
88
+ ,
89
+ size: size
83
90
  }), /*#__PURE__*/_jsx(QueryStatus, {
84
91
  label: "Stale",
85
92
  color: "yellow",
@@ -88,6 +95,8 @@ const QueryStatusCount = ({
88
95
  onPress: event => handleFilterClick("stale", event),
89
96
  onTouchStart: handleTouchStart,
90
97
  showLabel: true // Always show labels now
98
+ ,
99
+ size: size
91
100
  }), /*#__PURE__*/_jsx(QueryStatus, {
92
101
  label: "Idle",
93
102
  color: "gray",
@@ -96,6 +105,8 @@ const QueryStatusCount = ({
96
105
  onPress: event => handleFilterClick("inactive", event),
97
106
  onTouchStart: handleTouchStart,
98
107
  showLabel: true // Always show labels now
108
+ ,
109
+ size: size
99
110
  })]
100
111
  })
101
112
  });
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from "react";
4
+ import { useQueryClient } from "@tanstack/react-query";
5
+ import { createReactQuerySyncAdapter } from "./reactQuerySyncAdapter";
6
+
7
+ /**
8
+ * Context-based variant of createReactQuerySyncAdapter for zero-config
9
+ * wiring (FloatingDevTools' auto external sync): reads the QueryClient from
10
+ * the surrounding QueryClientProvider. Returns null when rendered outside a
11
+ * provider so callers can skip registering the query tool.
12
+ */
13
+ export function useReactQuerySyncAdapter() {
14
+ let queryClient;
15
+ try {
16
+ // Just a context read — throws only when there is no provider above us,
17
+ // which never changes for a mounted tree, so hook order stays stable.
18
+ queryClient = useQueryClient();
19
+ } catch {
20
+ queryClient = null;
21
+ }
22
+ return useMemo(() => queryClient ? createReactQuerySyncAdapter(queryClient) : null, [queryClient]);
23
+ }
@@ -10,6 +10,7 @@
10
10
  export { reactQueryToolPreset, createReactQueryTool, wifiTogglePreset, createWifiToggleTool, } from "./preset";
11
11
  export { setQueryClient, disconnectQueryClient, type ReactQueryEvent, type ReactQueryEventType, } from "./react-query/stores/reactQueryEventStore";
12
12
  export { createReactQuerySyncAdapter } from "./react-query/sync/reactQuerySyncAdapter";
13
+ export { useReactQuerySyncAdapter } from "./react-query/sync/useReactQuerySyncAdapter";
13
14
  export type { DehydratedState, DehydratedQuery, DehydratedMutation, ObserverState, } from "./react-query/sync/dehydrate";
14
15
  export { ReactQueryModal } from "./react-query/components/modals/ReactQueryModal";
15
16
  export { ReactQueryModalHeader } from "./react-query/components/modals/ReactQueryModalHeader";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ interface MutationBrowserFooterProps {
3
3
  activeFilter?: string | null;
4
4
  onFilterChange?: (filter: string | null) => void;
5
5
  modalMode: ModalMode;
6
+ /** Badge size, forwarded to the status count chips. */
7
+ size?: "default" | "large";
6
8
  }
7
9
  /**
8
10
  * Footer component for MutationBrowserModal following composition principles
@@ -12,6 +14,6 @@ interface MutationBrowserFooterProps {
12
14
  * - Prefer Composition over Configuration: Specialized footer matching DataEditorMode pattern
13
15
  * - Extract Reusable Logic: Consistent footer styling across modal types
14
16
  */
15
- export declare function MutationBrowserFooter({ activeFilter, onFilterChange, modalMode, }: MutationBrowserFooterProps): import("react").JSX.Element;
17
+ export declare function MutationBrowserFooter({ activeFilter, onFilterChange, modalMode, size, }: MutationBrowserFooterProps): import("react").JSX.Element;
16
18
  export {};
17
19
  //# sourceMappingURL=MutationBrowserFooter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MutationBrowserFooter.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/modals/MutationBrowserFooter.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiC,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI9E,UAAU,0BAA0B;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,YAAY,EACZ,cAAc,EACd,SAAS,GACV,EAAE,0BAA0B,+BA2B5B"}
1
+ {"version":3,"file":"MutationBrowserFooter.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/modals/MutationBrowserFooter.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiC,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI9E,UAAU,0BAA0B;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,SAAS,EAAE,SAAS,CAAC;IACrB,uDAAuD;IACvD,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,YAAY,EACZ,cAAc,EACd,SAAS,EACT,IAAgB,GACjB,EAAE,0BAA0B,+BA4B5B"}
@@ -2,6 +2,8 @@ interface QueryBrowserFooterProps {
2
2
  activeFilter?: string | null;
3
3
  onFilterChange?: (filter: string | null) => void;
4
4
  isFloatingMode?: boolean;
5
+ /** Badge size, forwarded to the status count chips. */
6
+ size?: "default" | "large";
5
7
  }
6
8
  /**
7
9
  * Footer component for QueryBrowserModal following composition principles
@@ -11,6 +13,7 @@ interface QueryBrowserFooterProps {
11
13
  * - Prefer Composition over Configuration: Specialized footer matching DataEditorMode pattern
12
14
  * - Extract Reusable Logic: Consistent footer styling across modal types
13
15
  */
14
- export declare function QueryBrowserFooter({ activeFilter, onFilterChange, isFloatingMode, }: QueryBrowserFooterProps): import("react").JSX.Element;
16
+ export declare function QueryBrowserFooter({ activeFilter, onFilterChange, isFloatingMode, // Default to floating mode if not specified
17
+ size, }: QueryBrowserFooterProps): import("react").JSX.Element;
15
18
  export {};
16
19
  //# sourceMappingURL=QueryBrowserFooter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBrowserFooter.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/modals/QueryBrowserFooter.tsx"],"names":[],"mappings":"AAIA,UAAU,uBAAuB;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,YAAY,EACZ,cAAc,EACd,cAAqB,GACtB,EAAE,uBAAuB,+BAsBzB"}
1
+ {"version":3,"file":"QueryBrowserFooter.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/modals/QueryBrowserFooter.tsx"],"names":[],"mappings":"AAIA,UAAU,uBAAuB;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uDAAuD;IACvD,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,YAAY,EACZ,cAAc,EACd,cAAqB,EAAE,4CAA4C;AACnE,IAAgB,GACjB,EAAE,uBAAuB,+BAuBzB"}
@@ -10,11 +10,16 @@ interface ReactQueryModalHeaderProps {
10
10
  onFilterPress?: () => void;
11
11
  hasActiveFilters?: boolean;
12
12
  onClearCache?: () => void;
13
+ /**
14
+ * When true, renders a Wi-Fi toggle (React Query's onlineManager on/off) next
15
+ * to the Queries/Mutations tabs. Opt-in so existing consumers are unchanged.
16
+ */
17
+ showWifiToggle?: boolean;
13
18
  }
14
19
  /**
15
20
  * Shared header for all React Query modals. Handles tab switching when browsing and presents
16
21
  * breadcrumbs when a specific query or mutation is selected.
17
22
  */
18
- export declare function ReactQueryModalHeader({ selectedQuery, selectedMutation, activeTab, onTabChange, onBack, searchText, onSearchChange, onFilterPress, hasActiveFilters, onClearCache, }: ReactQueryModalHeaderProps): import("react").JSX.Element;
23
+ export declare function ReactQueryModalHeader({ selectedQuery, selectedMutation, activeTab, onTabChange, onBack, searchText, onSearchChange, onFilterPress, hasActiveFilters, onClearCache, showWifiToggle, }: ReactQueryModalHeaderProps): import("react").JSX.Element;
19
24
  export {};
20
25
  //# sourceMappingURL=ReactQueryModalHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReactQueryModalHeader.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/modals/ReactQueryModalHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAKxD,UAAU,0BAA0B;IAClC,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,gBAAgB,CAAC,EAAE,QAAQ,CAAC;IAC5B,SAAS,EAAE,SAAS,GAAG,WAAW,CAAC;IACnC,WAAW,EAAE,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,KAAK,IAAI,CAAC;IACpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,MAAM,EACN,UAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAwB,EACxB,YAAY,GACb,EAAE,0BAA0B,+BAyJ5B"}
1
+ {"version":3,"file":"ReactQueryModalHeader.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/modals/ReactQueryModalHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMxD,UAAU,0BAA0B;IAClC,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,gBAAgB,CAAC,EAAE,QAAQ,CAAC;IAC5B,SAAS,EAAE,SAAS,GAAG,WAAW,CAAC;IACnC,WAAW,EAAE,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,KAAK,IAAI,CAAC;IACpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,MAAM,EACN,UAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAwB,EACxB,YAAY,EACZ,cAAsB,GACvB,EAAE,0BAA0B,+BAsK5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"SwipeIndicator.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/modals/SwipeIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI1D;;;GAGG;AAEH,UAAU,mBAAmB;IAC3B,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAYD,wBAAgB,cAAc,CAAC,EAC7B,YAAY,EACZ,cAAwC,EACxC,YAAmB,EACnB,aAAoB,GACrB,EAAE,mBAAmB,+BAqLrB"}
1
+ {"version":3,"file":"SwipeIndicator.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/modals/SwipeIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK1D;;;GAGG;AAEH,UAAU,mBAAmB;IAC3B,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAYD,wBAAgB,cAAc,CAAC,EAC7B,YAAY,EACZ,cAAwC,EACxC,YAAmB,EACnB,aAAoB,GACrB,EAAE,mBAAmB,+BAqLrB"}
@@ -2,6 +2,8 @@ import { FC } from "react";
2
2
  interface MutationStatusCountProps {
3
3
  activeFilter?: string | null;
4
4
  onFilterChange?: (filter: string | null) => void;
5
+ /** Badge size, forwarded to each QueryStatus chip. */
6
+ size?: "default" | "large";
5
7
  }
6
8
  /**
7
9
  * Horizontal status filter bar tailored for mutations. Integrates scroll detection to avoid
@@ -1 +1 @@
1
- {"version":3,"file":"MutationStatusCount.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/query-browser/MutationStatusCount.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAoB,MAAM,OAAO,CAAC;AAE7C,UAAU,wBAAwB;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAClD;AAED;;;GAGG;AACH,QAAA,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAkFrD,CAAC;AAoBF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"MutationStatusCount.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/query-browser/MutationStatusCount.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAoB,MAAM,OAAO,CAAC;AAE7C,UAAU,wBAAwB;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,sDAAsD;IACtD,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,QAAA,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAuFrD,CAAC;AAoBF,eAAe,mBAAmB,CAAC"}
@@ -8,6 +8,11 @@ interface QueryStatusProps {
8
8
  isActive?: boolean;
9
9
  onPress?: (event: GestureResponderEvent) => void;
10
10
  onTouchStart?: (event: GestureResponderEvent) => void;
11
+ /**
12
+ * Visual size. "default" matches the compact mobile chip; "large" bumps the
13
+ * badge / dot / text up for roomier surfaces like the desktop dashboard.
14
+ */
15
+ size?: "default" | "large";
11
16
  }
12
17
  /**
13
18
  * Pill-like status badge used within status filter rows. Displays label, dot, and count.
@@ -1 +1 @@
1
- {"version":3,"file":"QueryStatus.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/query-browser/QueryStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAKL,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAGtB,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACvD;AAID;;GAEG;AACH,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAsFrC,CAAC;AAmCF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"QueryStatus.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/query-browser/QueryStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAKL,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAGtB,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACtD;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC5B;AAID;;GAEG;AACH,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAuGrC,CAAC;AAqDF,eAAe,WAAW,CAAC"}
@@ -2,6 +2,8 @@ import { FC } from "react";
2
2
  interface QueryStatusCountProps {
3
3
  activeFilter?: string | null;
4
4
  onFilterChange?: (filter: string | null) => void;
5
+ /** Badge size, forwarded to each QueryStatus chip. */
6
+ size?: "default" | "large";
5
7
  }
6
8
  /**
7
9
  * Horizontal status filter bar for queries with scroll-aware tap handling to prevent misfires.
@@ -1 +1 @@
1
- {"version":3,"file":"QueryStatusCount.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/query-browser/QueryStatusCount.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAoB,MAAM,OAAO,CAAC;AAU7C,UAAU,qBAAqB;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAClD;AAED;;GAEG;AACH,QAAA,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA+F/C,CAAC;AAuBF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"QueryStatusCount.d.ts","sourceRoot":"","sources":["../../../../../src/react-query/components/query-browser/QueryStatusCount.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAoB,MAAM,OAAO,CAAC;AAU7C,UAAU,qBAAqB;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,sDAAsD;IACtD,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,QAAA,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAqG/C,CAAC;AAuBF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { createReactQuerySyncAdapter } from "./reactQuerySyncAdapter";
2
+ /**
3
+ * Context-based variant of createReactQuerySyncAdapter for zero-config
4
+ * wiring (FloatingDevTools' auto external sync): reads the QueryClient from
5
+ * the surrounding QueryClientProvider. Returns null when rendered outside a
6
+ * provider so callers can skip registering the query tool.
7
+ */
8
+ export declare function useReactQuerySyncAdapter(): ReturnType<typeof createReactQuerySyncAdapter> | null;
9
+ //# sourceMappingURL=useReactQuerySyncAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReactQuerySyncAdapter.d.ts","sourceRoot":"","sources":["../../../../src/react-query/sync/useReactQuerySyncAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAEtE;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,UAAU,CACpD,OAAO,2BAA2B,CACnC,GAAG,IAAI,CAcP"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/react-query",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "description": "react-query package",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -26,8 +26,8 @@
26
26
  ],
27
27
  "sideEffects": false,
28
28
  "dependencies": {
29
- "@buoy-gg/floating-tools-core": "3.0.0",
30
- "@buoy-gg/shared-ui": "3.0.0"
29
+ "@buoy-gg/shared-ui": "3.0.2",
30
+ "@buoy-gg/floating-tools-core": "3.0.2"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@tanstack/react-query": ">=5.0.0",