@growsober/sdk 1.0.0
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/README.md +276 -0
- package/dist/__tests__/e2e.test.d.ts +7 -0
- package/dist/__tests__/e2e.test.js +472 -0
- package/dist/api/client.d.ts +11 -0
- package/dist/api/client.js +61 -0
- package/dist/api/mutations/admin.d.ts +167 -0
- package/dist/api/mutations/admin.js +326 -0
- package/dist/api/mutations/ambassadors.d.ts +52 -0
- package/dist/api/mutations/ambassadors.js +148 -0
- package/dist/api/mutations/auth.d.ts +267 -0
- package/dist/api/mutations/auth.js +332 -0
- package/dist/api/mutations/bookings.d.ts +59 -0
- package/dist/api/mutations/bookings.js +143 -0
- package/dist/api/mutations/event-chat.d.ts +35 -0
- package/dist/api/mutations/event-chat.js +147 -0
- package/dist/api/mutations/events.d.ts +87 -0
- package/dist/api/mutations/events.js +205 -0
- package/dist/api/mutations/grow90.d.ts +36 -0
- package/dist/api/mutations/grow90.js +132 -0
- package/dist/api/mutations/hubs.d.ts +111 -0
- package/dist/api/mutations/hubs.js +240 -0
- package/dist/api/mutations/index.d.ts +22 -0
- package/dist/api/mutations/index.js +39 -0
- package/dist/api/mutations/jack.d.ts +61 -0
- package/dist/api/mutations/jack.js +104 -0
- package/dist/api/mutations/library.d.ts +67 -0
- package/dist/api/mutations/library.js +168 -0
- package/dist/api/mutations/map.d.ts +153 -0
- package/dist/api/mutations/map.js +181 -0
- package/dist/api/mutations/matching.d.ts +130 -0
- package/dist/api/mutations/matching.js +204 -0
- package/dist/api/mutations/notifications.d.ts +63 -0
- package/dist/api/mutations/notifications.js +106 -0
- package/dist/api/mutations/offers.d.ts +26 -0
- package/dist/api/mutations/offers.js +47 -0
- package/dist/api/mutations/subscriptions.d.ts +127 -0
- package/dist/api/mutations/subscriptions.js +140 -0
- package/dist/api/mutations/support.d.ts +165 -0
- package/dist/api/mutations/support.js +307 -0
- package/dist/api/mutations/users.d.ts +211 -0
- package/dist/api/mutations/users.js +261 -0
- package/dist/api/queries/admin.d.ts +257 -0
- package/dist/api/queries/admin.js +320 -0
- package/dist/api/queries/ambassadors.d.ts +53 -0
- package/dist/api/queries/ambassadors.js +98 -0
- package/dist/api/queries/auth.d.ts +16 -0
- package/dist/api/queries/auth.js +25 -0
- package/dist/api/queries/bookings.d.ts +91 -0
- package/dist/api/queries/bookings.js +102 -0
- package/dist/api/queries/businesses.d.ts +212 -0
- package/dist/api/queries/businesses.js +154 -0
- package/dist/api/queries/event-chat.d.ts +19 -0
- package/dist/api/queries/event-chat.js +75 -0
- package/dist/api/queries/events.d.ts +322 -0
- package/dist/api/queries/events.js +221 -0
- package/dist/api/queries/grow90.d.ts +26 -0
- package/dist/api/queries/grow90.js +85 -0
- package/dist/api/queries/hubs.d.ts +165 -0
- package/dist/api/queries/hubs.js +143 -0
- package/dist/api/queries/index.d.ts +23 -0
- package/dist/api/queries/index.js +40 -0
- package/dist/api/queries/jack.d.ts +63 -0
- package/dist/api/queries/jack.js +92 -0
- package/dist/api/queries/library.d.ts +132 -0
- package/dist/api/queries/library.js +120 -0
- package/dist/api/queries/map.d.ts +216 -0
- package/dist/api/queries/map.js +278 -0
- package/dist/api/queries/matching.d.ts +136 -0
- package/dist/api/queries/matching.js +161 -0
- package/dist/api/queries/notifications.d.ts +78 -0
- package/dist/api/queries/notifications.js +88 -0
- package/dist/api/queries/offers.d.ts +91 -0
- package/dist/api/queries/offers.js +103 -0
- package/dist/api/queries/subscriptions.d.ts +56 -0
- package/dist/api/queries/subscriptions.js +73 -0
- package/dist/api/queries/support.d.ts +106 -0
- package/dist/api/queries/support.js +202 -0
- package/dist/api/queries/users.d.ts +293 -0
- package/dist/api/queries/users.js +370 -0
- package/dist/api/types.d.ts +464 -0
- package/dist/api/types.js +9 -0
- package/dist/hooks/useAuth.d.ts +5 -0
- package/dist/hooks/useAuth.js +39 -0
- package/dist/hooks/useUser.d.ts +43 -0
- package/dist/hooks/useUser.js +44 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.js +67 -0
- package/package.json +62 -0
- package/src/__tests__/e2e.test.ts +502 -0
- package/src/api/client.ts +71 -0
- package/src/api/mutations/admin.ts +531 -0
- package/src/api/mutations/ambassadors.ts +185 -0
- package/src/api/mutations/auth.ts +350 -0
- package/src/api/mutations/bookings.ts +190 -0
- package/src/api/mutations/event-chat.ts +177 -0
- package/src/api/mutations/events.ts +273 -0
- package/src/api/mutations/grow90.ts +169 -0
- package/src/api/mutations/hubs.ts +385 -0
- package/src/api/mutations/index.ts +23 -0
- package/src/api/mutations/jack.ts +130 -0
- package/src/api/mutations/library.ts +212 -0
- package/src/api/mutations/map.ts +230 -0
- package/src/api/mutations/matching.ts +271 -0
- package/src/api/mutations/notifications.ts +114 -0
- package/src/api/mutations/offers.ts +73 -0
- package/src/api/mutations/subscriptions.ts +162 -0
- package/src/api/mutations/support.ts +390 -0
- package/src/api/mutations/users.ts +271 -0
- package/src/api/queries/admin.ts +480 -0
- package/src/api/queries/ambassadors.ts +139 -0
- package/src/api/queries/auth.ts +24 -0
- package/src/api/queries/bookings.ts +135 -0
- package/src/api/queries/businesses.ts +203 -0
- package/src/api/queries/event-chat.ts +78 -0
- package/src/api/queries/events.ts +272 -0
- package/src/api/queries/grow90.ts +98 -0
- package/src/api/queries/hubs.ts +211 -0
- package/src/api/queries/index.ts +24 -0
- package/src/api/queries/jack.ts +127 -0
- package/src/api/queries/library.ts +166 -0
- package/src/api/queries/map.ts +331 -0
- package/src/api/queries/matching.ts +238 -0
- package/src/api/queries/notifications.ts +103 -0
- package/src/api/queries/offers.ts +136 -0
- package/src/api/queries/subscriptions.ts +91 -0
- package/src/api/queries/support.ts +235 -0
- package/src/api/queries/users.ts +393 -0
- package/src/api/types.ts +596 -0
- package/src/index.ts +57 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jackKeys = void 0;
|
|
4
|
+
exports.useJackConversations = useJackConversations;
|
|
5
|
+
exports.useJackConversation = useJackConversation;
|
|
6
|
+
exports.useJackHistory = useJackHistory;
|
|
7
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
8
|
+
const client_1 = require("../client");
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// QUERY KEY FACTORY
|
|
11
|
+
// ============================================================================
|
|
12
|
+
exports.jackKeys = {
|
|
13
|
+
all: ['jack'],
|
|
14
|
+
conversations: () => [...exports.jackKeys.all, 'conversations'],
|
|
15
|
+
conversation: (id) => [...exports.jackKeys.all, 'conversation', id],
|
|
16
|
+
history: () => [...exports.jackKeys.all, 'history'],
|
|
17
|
+
};
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// QUERY HOOKS
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Get all conversations with Jack
|
|
23
|
+
*
|
|
24
|
+
* @param limit - Maximum conversations to return (default: 20)
|
|
25
|
+
* @param options - TanStack Query options
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```tsx
|
|
29
|
+
* const { data: conversations } = useJackConversations();
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
function useJackConversations(limit = 20, options) {
|
|
33
|
+
return (0, react_query_1.useQuery)({
|
|
34
|
+
queryKey: exports.jackKeys.conversations(),
|
|
35
|
+
queryFn: async () => {
|
|
36
|
+
const client = (0, client_1.getApiClient)();
|
|
37
|
+
const response = await client.get('/api/v1/support/jack/conversations', {
|
|
38
|
+
params: { limit },
|
|
39
|
+
});
|
|
40
|
+
// API wraps response in { data: {...}, meta: {...} }
|
|
41
|
+
return response.data?.data || response.data;
|
|
42
|
+
},
|
|
43
|
+
...options,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a specific conversation with messages
|
|
48
|
+
*
|
|
49
|
+
* @param conversationId - The conversation ID
|
|
50
|
+
* @param options - TanStack Query options
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```tsx
|
|
54
|
+
* const { data: conversation } = useJackConversation('conv-123');
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
function useJackConversation(conversationId, options) {
|
|
58
|
+
return (0, react_query_1.useQuery)({
|
|
59
|
+
queryKey: exports.jackKeys.conversation(conversationId),
|
|
60
|
+
queryFn: async () => {
|
|
61
|
+
const client = (0, client_1.getApiClient)();
|
|
62
|
+
const response = await client.get(`/api/v1/support/jack/conversations/${conversationId}`);
|
|
63
|
+
// API wraps response in { data: {...}, meta: {...} }
|
|
64
|
+
return response.data?.data || response.data;
|
|
65
|
+
},
|
|
66
|
+
enabled: !!conversationId,
|
|
67
|
+
...options,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get the most recent active conversation with Jack
|
|
72
|
+
*
|
|
73
|
+
* @param options - TanStack Query options
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```tsx
|
|
77
|
+
* const { data: history } = useJackHistory();
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
function useJackHistory(options) {
|
|
81
|
+
return (0, react_query_1.useQuery)({
|
|
82
|
+
queryKey: exports.jackKeys.history(),
|
|
83
|
+
queryFn: async () => {
|
|
84
|
+
const client = (0, client_1.getApiClient)();
|
|
85
|
+
const response = await client.get('/api/v1/support/jack/history');
|
|
86
|
+
// API wraps response in { data: {...}, meta: {...} }
|
|
87
|
+
return response.data?.data || response.data;
|
|
88
|
+
},
|
|
89
|
+
...options,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcXVlcmllcy9qYWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXlEQSxvREFnQkM7QUFhRCxrREFlQztBQVlELHdDQWFDO0FBOUhELHVEQUFrRTtBQUNsRSxzQ0FBeUM7QUFFekMsK0VBQStFO0FBQy9FLG9CQUFvQjtBQUNwQiwrRUFBK0U7QUFFbEUsUUFBQSxRQUFRLEdBQUc7SUFDdEIsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFVO0lBQ3RCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFVO0lBQ2hFLFlBQVksRUFBRSxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQVU7SUFDNUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxnQkFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQVU7Q0FDckQsQ0FBQztBQThCRiwrRUFBK0U7QUFDL0UsY0FBYztBQUNkLCtFQUErRTtBQUUvRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLEtBQUssR0FBRyxFQUFFLEVBQ1YsT0FBMkU7SUFFM0UsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFDZCxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxhQUFhLEVBQUU7UUFDbEMsT0FBTyxFQUFFLEtBQUssSUFBaUMsRUFBRTtZQUMvQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLEVBQUU7Z0JBQ3RFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRTthQUNsQixDQUFDLENBQUM7WUFDSCxxREFBcUQ7WUFDckQsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzlDLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLG1CQUFtQixDQUNqQyxjQUFzQixFQUN0QixPQUE0RjtJQUU1RixPQUFPLElBQUEsc0JBQVEsRUFBQztRQUNkLFFBQVEsRUFBRSxnQkFBUSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7UUFDL0MsT0FBTyxFQUFFLEtBQUssSUFBa0QsRUFBRTtZQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDMUYscURBQXFEO1lBQ3JELE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxjQUFjO1FBQ3pCLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixjQUFjLENBQzVCLE9BQTRGO0lBRTVGLE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLGdCQUFRLENBQUMsT0FBTyxFQUFFO1FBQzVCLE9BQU8sRUFBRSxLQUFLLElBQWtELEVBQUU7WUFDaEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDbEUscURBQXFEO1lBQ3JELE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztRQUM5QyxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVF1ZXJ5LCBVc2VRdWVyeU9wdGlvbnMgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgS0VZIEZBQ1RPUllcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IGphY2tLZXlzID0ge1xuICBhbGw6IFsnamFjayddIGFzIGNvbnN0LFxuICBjb252ZXJzYXRpb25zOiAoKSA9PiBbLi4uamFja0tleXMuYWxsLCAnY29udmVyc2F0aW9ucyddIGFzIGNvbnN0LFxuICBjb252ZXJzYXRpb246IChpZDogc3RyaW5nKSA9PiBbLi4uamFja0tleXMuYWxsLCAnY29udmVyc2F0aW9uJywgaWRdIGFzIGNvbnN0LFxuICBoaXN0b3J5OiAoKSA9PiBbLi4uamFja0tleXMuYWxsLCAnaGlzdG9yeSddIGFzIGNvbnN0LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBKYWNrQ29udmVyc2F0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgbWVzc2FnZUNvdW50OiBudW1iZXI7XG4gIGxhc3RNZXNzYWdlQXQ6IHN0cmluZyB8IG51bGw7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICBpc0FyY2hpdmVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEphY2tNZXNzYWdlIHtcbiAgaWQ6IHN0cmluZztcbiAgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgcm9sZTogJ1VTRVInIHwgJ0FTU0lTVEFOVCcgfCAnU1lTVEVNJztcbiAgY29udGVudDogc3RyaW5nO1xuICBtb2RlbD86IHN0cmluZztcbiAgcHJvbXB0VG9rZW5zPzogbnVtYmVyO1xuICBjb21wbGV0aW9uVG9rZW5zPzogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKYWNrQ29udmVyc2F0aW9uV2l0aE1lc3NhZ2VzIGV4dGVuZHMgSmFja0NvbnZlcnNhdGlvbiB7XG4gIG1lc3NhZ2VzOiBKYWNrTWVzc2FnZVtdO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUVSWSBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEdldCBhbGwgY29udmVyc2F0aW9ucyB3aXRoIEphY2tcbiAqXG4gKiBAcGFyYW0gbGltaXQgLSBNYXhpbXVtIGNvbnZlcnNhdGlvbnMgdG8gcmV0dXJuIChkZWZhdWx0OiAyMClcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YTogY29udmVyc2F0aW9ucyB9ID0gdXNlSmFja0NvbnZlcnNhdGlvbnMoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSmFja0NvbnZlcnNhdGlvbnMoXG4gIGxpbWl0ID0gMjAsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxKYWNrQ29udmVyc2F0aW9uW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGphY2tLZXlzLmNvbnZlcnNhdGlvbnMoKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxKYWNrQ29udmVyc2F0aW9uW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KCcvYXBpL3YxL3N1cHBvcnQvamFjay9jb252ZXJzYXRpb25zJywge1xuICAgICAgICBwYXJhbXM6IHsgbGltaXQgfSxcbiAgICAgIH0pO1xuICAgICAgLy8gQVBJIHdyYXBzIHJlc3BvbnNlIGluIHsgZGF0YTogey4uLn0sIG1ldGE6IHsuLi59IH1cbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhPy5kYXRhIHx8IHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYSBzcGVjaWZpYyBjb252ZXJzYXRpb24gd2l0aCBtZXNzYWdlc1xuICpcbiAqIEBwYXJhbSBjb252ZXJzYXRpb25JZCAtIFRoZSBjb252ZXJzYXRpb24gSURcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YTogY29udmVyc2F0aW9uIH0gPSB1c2VKYWNrQ29udmVyc2F0aW9uKCdjb252LTEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VKYWNrQ29udmVyc2F0aW9uKFxuICBjb252ZXJzYXRpb25JZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8SmFja0NvbnZlcnNhdGlvbldpdGhNZXNzYWdlcyB8IG51bGw+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGphY2tLZXlzLmNvbnZlcnNhdGlvbihjb252ZXJzYXRpb25JZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8SmFja0NvbnZlcnNhdGlvbldpdGhNZXNzYWdlcyB8IG51bGw+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL3N1cHBvcnQvamFjay9jb252ZXJzYXRpb25zLyR7Y29udmVyc2F0aW9uSWR9YCk7XG4gICAgICAvLyBBUEkgd3JhcHMgcmVzcG9uc2UgaW4geyBkYXRhOiB7Li4ufSwgbWV0YTogey4uLn0gfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE/LmRhdGEgfHwgcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY29udmVyc2F0aW9uSWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBtb3N0IHJlY2VudCBhY3RpdmUgY29udmVyc2F0aW9uIHdpdGggSmFja1xuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YTogaGlzdG9yeSB9ID0gdXNlSmFja0hpc3RvcnkoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSmFja0hpc3RvcnkoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxKYWNrQ29udmVyc2F0aW9uV2l0aE1lc3NhZ2VzIHwgbnVsbD4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogamFja0tleXMuaGlzdG9yeSgpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPEphY2tDb252ZXJzYXRpb25XaXRoTWVzc2FnZXMgfCBudWxsPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCgnL2FwaS92MS9zdXBwb3J0L2phY2svaGlzdG9yeScpO1xuICAgICAgLy8gQVBJIHdyYXBzIHJlc3BvbnNlIGluIHsgZGF0YTogey4uLn0sIG1ldGE6IHsuLi59IH1cbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhPy5kYXRhIHx8IHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { UseQueryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { LibraryContentResponse, LibraryContentDetailResponse } from '../types';
|
|
3
|
+
export declare const libraryKeys: {
|
|
4
|
+
all: readonly ["library"];
|
|
5
|
+
lists: () => readonly ["library", "list"];
|
|
6
|
+
list: (filters?: LibraryFilters) => readonly ["library", "list", LibraryFilters | undefined];
|
|
7
|
+
featured: () => readonly ["library", "featured"];
|
|
8
|
+
categories: () => readonly ["library", "categories"];
|
|
9
|
+
details: () => readonly ["library", "detail"];
|
|
10
|
+
detail: (id: string) => readonly ["library", "detail", string];
|
|
11
|
+
};
|
|
12
|
+
export interface LibraryFilters {
|
|
13
|
+
page?: number;
|
|
14
|
+
limit?: number;
|
|
15
|
+
categoryId?: string;
|
|
16
|
+
type?: 'ARTICLE' | 'VIDEO' | 'PODCAST' | 'MEDITATION' | 'WORKSHEET';
|
|
17
|
+
search?: string;
|
|
18
|
+
isFeatured?: boolean;
|
|
19
|
+
drinkingIdentity?: 'SOBER' | 'SOBER_CURIOUS' | 'MINDFUL';
|
|
20
|
+
sortBy?: 'createdAt' | 'title' | 'viewCount';
|
|
21
|
+
sortOrder?: 'asc' | 'desc';
|
|
22
|
+
}
|
|
23
|
+
export interface PaginatedLibraryResponse {
|
|
24
|
+
content: LibraryContentResponse[];
|
|
25
|
+
total: number;
|
|
26
|
+
page: number;
|
|
27
|
+
limit: number;
|
|
28
|
+
totalPages: number;
|
|
29
|
+
}
|
|
30
|
+
export interface LibraryCategoryResponse {
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
slug: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
icon?: string;
|
|
36
|
+
contentCount?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get paginated list of library content with optional filters
|
|
40
|
+
*
|
|
41
|
+
* @param filters - Query parameters for filtering and pagination
|
|
42
|
+
* @param options - TanStack Query options
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```tsx
|
|
46
|
+
* const { data, isLoading } = useLibraryContent({
|
|
47
|
+
* page: 1,
|
|
48
|
+
* limit: 20,
|
|
49
|
+
* categoryId: 'cat-123',
|
|
50
|
+
* type: 'ARTICLE',
|
|
51
|
+
* isFeatured: true
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function useLibraryContent(filters?: LibraryFilters, options?: Omit<UseQueryOptions<PaginatedLibraryResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedLibraryResponse, Error>;
|
|
56
|
+
/**
|
|
57
|
+
* Get featured library content
|
|
58
|
+
*
|
|
59
|
+
* @param options - TanStack Query options
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```tsx
|
|
63
|
+
* const { data, isLoading } = useFeaturedContent();
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function useFeaturedContent(options?: Omit<UseQueryOptions<LibraryContentResponse[]>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
|
|
67
|
+
id: string;
|
|
68
|
+
title: string;
|
|
69
|
+
slug: string;
|
|
70
|
+
summary?: Record<string, never>;
|
|
71
|
+
coverImage?: Record<string, never>;
|
|
72
|
+
categoryId?: Record<string, never>;
|
|
73
|
+
type: "ARTICLE" | "GUIDE" | "VIDEO" | "PODCAST" | "TOOL" | "WORKSHEET";
|
|
74
|
+
tags: string[];
|
|
75
|
+
readTimeMinutes?: Record<string, never>;
|
|
76
|
+
drinkingIdentities: string[];
|
|
77
|
+
isPremium: boolean;
|
|
78
|
+
isPublished: boolean;
|
|
79
|
+
isFeatured: boolean;
|
|
80
|
+
viewCount: number;
|
|
81
|
+
likeCount: number;
|
|
82
|
+
authorName?: Record<string, never>;
|
|
83
|
+
authorImage?: Record<string, never>;
|
|
84
|
+
createdAt: string;
|
|
85
|
+
updatedAt: string;
|
|
86
|
+
publishedAt?: Record<string, never>;
|
|
87
|
+
}[], Error>;
|
|
88
|
+
/**
|
|
89
|
+
* Get all library categories
|
|
90
|
+
*
|
|
91
|
+
* @param options - TanStack Query options
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```tsx
|
|
95
|
+
* const { data, isLoading } = useLibraryCategories();
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function useLibraryCategories(options?: Omit<UseQueryOptions<LibraryCategoryResponse[]>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<LibraryCategoryResponse[], Error>;
|
|
99
|
+
/**
|
|
100
|
+
* Get a single library item by ID
|
|
101
|
+
*
|
|
102
|
+
* @param id - Library content ID
|
|
103
|
+
* @param options - TanStack Query options
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```tsx
|
|
107
|
+
* const { data, isLoading } = useLibraryItem('lib-123');
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export declare function useLibraryItem(id: string, options?: Omit<UseQueryOptions<LibraryContentDetailResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
|
|
111
|
+
id: string;
|
|
112
|
+
title: string;
|
|
113
|
+
slug: string;
|
|
114
|
+
summary?: Record<string, never>;
|
|
115
|
+
coverImage?: Record<string, never>;
|
|
116
|
+
categoryId?: Record<string, never>;
|
|
117
|
+
type: "ARTICLE" | "GUIDE" | "VIDEO" | "PODCAST" | "TOOL" | "WORKSHEET";
|
|
118
|
+
tags: string[];
|
|
119
|
+
readTimeMinutes?: Record<string, never>;
|
|
120
|
+
drinkingIdentities: string[];
|
|
121
|
+
isPremium: boolean;
|
|
122
|
+
isPublished: boolean;
|
|
123
|
+
isFeatured: boolean;
|
|
124
|
+
viewCount: number;
|
|
125
|
+
likeCount: number;
|
|
126
|
+
authorName?: Record<string, never>;
|
|
127
|
+
authorImage?: Record<string, never>;
|
|
128
|
+
createdAt: string;
|
|
129
|
+
updatedAt: string;
|
|
130
|
+
publishedAt?: Record<string, never>;
|
|
131
|
+
content: string;
|
|
132
|
+
}, Error>;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.libraryKeys = void 0;
|
|
4
|
+
exports.useLibraryContent = useLibraryContent;
|
|
5
|
+
exports.useFeaturedContent = useFeaturedContent;
|
|
6
|
+
exports.useLibraryCategories = useLibraryCategories;
|
|
7
|
+
exports.useLibraryItem = useLibraryItem;
|
|
8
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
9
|
+
const client_1 = require("../client");
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// QUERY KEY FACTORY
|
|
12
|
+
// ============================================================================
|
|
13
|
+
exports.libraryKeys = {
|
|
14
|
+
all: ['library'],
|
|
15
|
+
lists: () => [...exports.libraryKeys.all, 'list'],
|
|
16
|
+
list: (filters) => [...exports.libraryKeys.lists(), filters],
|
|
17
|
+
featured: () => [...exports.libraryKeys.all, 'featured'],
|
|
18
|
+
categories: () => [...exports.libraryKeys.all, 'categories'],
|
|
19
|
+
details: () => [...exports.libraryKeys.all, 'detail'],
|
|
20
|
+
detail: (id) => [...exports.libraryKeys.details(), id],
|
|
21
|
+
};
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// QUERY HOOKS
|
|
24
|
+
// ============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Get paginated list of library content with optional filters
|
|
27
|
+
*
|
|
28
|
+
* @param filters - Query parameters for filtering and pagination
|
|
29
|
+
* @param options - TanStack Query options
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```tsx
|
|
33
|
+
* const { data, isLoading } = useLibraryContent({
|
|
34
|
+
* page: 1,
|
|
35
|
+
* limit: 20,
|
|
36
|
+
* categoryId: 'cat-123',
|
|
37
|
+
* type: 'ARTICLE',
|
|
38
|
+
* isFeatured: true
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
function useLibraryContent(filters, options) {
|
|
43
|
+
return (0, react_query_1.useQuery)({
|
|
44
|
+
queryKey: exports.libraryKeys.list(filters),
|
|
45
|
+
queryFn: async () => {
|
|
46
|
+
const client = (0, client_1.getApiClient)();
|
|
47
|
+
const response = await client.get('/api/v1/library', {
|
|
48
|
+
params: filters,
|
|
49
|
+
});
|
|
50
|
+
return response.data;
|
|
51
|
+
},
|
|
52
|
+
...options,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get featured library content
|
|
57
|
+
*
|
|
58
|
+
* @param options - TanStack Query options
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```tsx
|
|
62
|
+
* const { data, isLoading } = useFeaturedContent();
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
function useFeaturedContent(options) {
|
|
66
|
+
return (0, react_query_1.useQuery)({
|
|
67
|
+
queryKey: exports.libraryKeys.featured(),
|
|
68
|
+
queryFn: async () => {
|
|
69
|
+
const client = (0, client_1.getApiClient)();
|
|
70
|
+
const response = await client.get('/api/v1/library/featured');
|
|
71
|
+
return response.data;
|
|
72
|
+
},
|
|
73
|
+
...options,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get all library categories
|
|
78
|
+
*
|
|
79
|
+
* @param options - TanStack Query options
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```tsx
|
|
83
|
+
* const { data, isLoading } = useLibraryCategories();
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
function useLibraryCategories(options) {
|
|
87
|
+
return (0, react_query_1.useQuery)({
|
|
88
|
+
queryKey: exports.libraryKeys.categories(),
|
|
89
|
+
queryFn: async () => {
|
|
90
|
+
const client = (0, client_1.getApiClient)();
|
|
91
|
+
const response = await client.get('/api/v1/library/categories');
|
|
92
|
+
return response.data;
|
|
93
|
+
},
|
|
94
|
+
...options,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get a single library item by ID
|
|
99
|
+
*
|
|
100
|
+
* @param id - Library content ID
|
|
101
|
+
* @param options - TanStack Query options
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```tsx
|
|
105
|
+
* const { data, isLoading } = useLibraryItem('lib-123');
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
function useLibraryItem(id, options) {
|
|
109
|
+
return (0, react_query_1.useQuery)({
|
|
110
|
+
queryKey: exports.libraryKeys.detail(id),
|
|
111
|
+
queryFn: async () => {
|
|
112
|
+
const client = (0, client_1.getApiClient)();
|
|
113
|
+
const response = await client.get(`/api/v1/library/${id}`);
|
|
114
|
+
return response.data;
|
|
115
|
+
},
|
|
116
|
+
enabled: !!id,
|
|
117
|
+
...options,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcXVlcmllcy9saWJyYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJFQSw4Q0FlQztBQVlELGdEQVlDO0FBWUQsb0RBWUM7QUFhRCx3Q0FjQztBQXJLRCx1REFBa0U7QUFDbEUsc0NBQXlDO0FBTXpDLCtFQUErRTtBQUMvRSxvQkFBb0I7QUFDcEIsK0VBQStFO0FBRWxFLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBVTtJQUN6QixLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBVTtJQUNsRCxJQUFJLEVBQUUsQ0FBQyxPQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQVU7SUFDOUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQVU7SUFDekQsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQVU7SUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQVU7SUFDdEQsTUFBTSxFQUFFLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQVU7Q0FDaEUsQ0FBQztBQW1DRiwrRUFBK0U7QUFDL0UsY0FBYztBQUNkLCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILFNBQWdCLGlCQUFpQixDQUMvQixPQUF3QixFQUN4QixPQUFpRjtJQUVqRixPQUFPLElBQUEsc0JBQVEsRUFBQztRQUNkLFFBQVEsRUFBRSxtQkFBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbkMsT0FBTyxFQUFFLEtBQUssSUFBdUMsRUFBRTtZQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ25ELE1BQU0sRUFBRSxPQUFPO2FBQ2hCLENBQUMsQ0FBQztZQUNILE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLGtCQUFrQixDQUNoQyxPQUFpRjtJQUVqRixPQUFPLElBQUEsc0JBQVEsRUFBQztRQUNkLFFBQVEsRUFBRSxtQkFBVyxDQUFDLFFBQVEsRUFBRTtRQUNoQyxPQUFPLEVBQUUsS0FBSyxJQUF1QyxFQUFFO1lBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQzlELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxPQUFrRjtJQUVsRixPQUFPLElBQUEsc0JBQVEsRUFBQztRQUNkLFFBQVEsRUFBRSxtQkFBVyxDQUFDLFVBQVUsRUFBRTtRQUNsQyxPQUFPLEVBQUUsS0FBSyxJQUF3QyxFQUFFO1lBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixjQUFjLENBQzVCLEVBQVUsRUFDVixPQUFxRjtJQUVyRixPQUFPLElBQUEsc0JBQVEsRUFBQztRQUNkLFFBQVEsRUFBRSxtQkFBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDaEMsT0FBTyxFQUFFLEtBQUssSUFBMkMsRUFBRTtZQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDYixHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUXVlcnksIFVzZVF1ZXJ5T3B0aW9ucyB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHR5cGUge1xuICBMaWJyYXJ5Q29udGVudFJlc3BvbnNlLFxuICBMaWJyYXJ5Q29udGVudERldGFpbFJlc3BvbnNlLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEtFWSBGQUNUT1JZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBsaWJyYXJ5S2V5cyA9IHtcbiAgYWxsOiBbJ2xpYnJhcnknXSBhcyBjb25zdCxcbiAgbGlzdHM6ICgpID0+IFsuLi5saWJyYXJ5S2V5cy5hbGwsICdsaXN0J10gYXMgY29uc3QsXG4gIGxpc3Q6IChmaWx0ZXJzPzogTGlicmFyeUZpbHRlcnMpID0+IFsuLi5saWJyYXJ5S2V5cy5saXN0cygpLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgZmVhdHVyZWQ6ICgpID0+IFsuLi5saWJyYXJ5S2V5cy5hbGwsICdmZWF0dXJlZCddIGFzIGNvbnN0LFxuICBjYXRlZ29yaWVzOiAoKSA9PiBbLi4ubGlicmFyeUtleXMuYWxsLCAnY2F0ZWdvcmllcyddIGFzIGNvbnN0LFxuICBkZXRhaWxzOiAoKSA9PiBbLi4ubGlicmFyeUtleXMuYWxsLCAnZGV0YWlsJ10gYXMgY29uc3QsXG4gIGRldGFpbDogKGlkOiBzdHJpbmcpID0+IFsuLi5saWJyYXJ5S2V5cy5kZXRhaWxzKCksIGlkXSBhcyBjb25zdCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlicmFyeUZpbHRlcnMge1xuICBwYWdlPzogbnVtYmVyO1xuICBsaW1pdD86IG51bWJlcjtcbiAgY2F0ZWdvcnlJZD86IHN0cmluZztcbiAgdHlwZT86ICdBUlRJQ0xFJyB8ICdWSURFTycgfCAnUE9EQ0FTVCcgfCAnTUVESVRBVElPTicgfCAnV09SS1NIRUVUJztcbiAgc2VhcmNoPzogc3RyaW5nO1xuICBpc0ZlYXR1cmVkPzogYm9vbGVhbjtcbiAgZHJpbmtpbmdJZGVudGl0eT86ICdTT0JFUicgfCAnU09CRVJfQ1VSSU9VUycgfCAnTUlOREZVTCc7XG4gIHNvcnRCeT86ICdjcmVhdGVkQXQnIHwgJ3RpdGxlJyB8ICd2aWV3Q291bnQnO1xuICBzb3J0T3JkZXI/OiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0ZWRMaWJyYXJ5UmVzcG9uc2Uge1xuICBjb250ZW50OiBMaWJyYXJ5Q29udGVudFJlc3BvbnNlW107XG4gIHRvdGFsOiBudW1iZXI7XG4gIHBhZ2U6IG51bWJlcjtcbiAgbGltaXQ6IG51bWJlcjtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpYnJhcnlDYXRlZ29yeVJlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBzbHVnOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBjb250ZW50Q291bnQ/OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IHBhZ2luYXRlZCBsaXN0IG9mIGxpYnJhcnkgY29udGVudCB3aXRoIG9wdGlvbmFsIGZpbHRlcnNcbiAqXG4gKiBAcGFyYW0gZmlsdGVycyAtIFF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZpbHRlcmluZyBhbmQgcGFnaW5hdGlvblxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUxpYnJhcnlDb250ZW50KHtcbiAqICAgcGFnZTogMSxcbiAqICAgbGltaXQ6IDIwLFxuICogICBjYXRlZ29yeUlkOiAnY2F0LTEyMycsXG4gKiAgIHR5cGU6ICdBUlRJQ0xFJyxcbiAqICAgaXNGZWF0dXJlZDogdHJ1ZVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUxpYnJhcnlDb250ZW50KFxuICBmaWx0ZXJzPzogTGlicmFyeUZpbHRlcnMsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQYWdpbmF0ZWRMaWJyYXJ5UmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGxpYnJhcnlLZXlzLmxpc3QoZmlsdGVycyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UGFnaW5hdGVkTGlicmFyeVJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCgnL2FwaS92MS9saWJyYXJ5Jywge1xuICAgICAgICBwYXJhbXM6IGZpbHRlcnMsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGZlYXR1cmVkIGxpYnJhcnkgY29udGVudFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nIH0gPSB1c2VGZWF0dXJlZENvbnRlbnQoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRmVhdHVyZWRDb250ZW50KFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8TGlicmFyeUNvbnRlbnRSZXNwb25zZVtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBsaWJyYXJ5S2V5cy5mZWF0dXJlZCgpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPExpYnJhcnlDb250ZW50UmVzcG9uc2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoJy9hcGkvdjEvbGlicmFyeS9mZWF0dXJlZCcpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIGxpYnJhcnkgY2F0ZWdvcmllc1xuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nIH0gPSB1c2VMaWJyYXJ5Q2F0ZWdvcmllcygpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VMaWJyYXJ5Q2F0ZWdvcmllcyhcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPExpYnJhcnlDYXRlZ29yeVJlc3BvbnNlW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGxpYnJhcnlLZXlzLmNhdGVnb3JpZXMoKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxMaWJyYXJ5Q2F0ZWdvcnlSZXNwb25zZVtdPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCgnL2FwaS92MS9saWJyYXJ5L2NhdGVnb3JpZXMnKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGEgc2luZ2xlIGxpYnJhcnkgaXRlbSBieSBJRFxuICpcbiAqIEBwYXJhbSBpZCAtIExpYnJhcnkgY29udGVudCBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUxpYnJhcnlJdGVtKCdsaWItMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUxpYnJhcnlJdGVtKFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8TGlicmFyeUNvbnRlbnREZXRhaWxSZXNwb25zZT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogbGlicmFyeUtleXMuZGV0YWlsKGlkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxMaWJyYXJ5Q29udGVudERldGFpbFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS9saWJyYXJ5LyR7aWR9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhaWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map Query Hooks
|
|
3
|
+
*
|
|
4
|
+
* TanStack Query hooks for map-related read operations.
|
|
5
|
+
* These hooks handle fetching map data including users, events, and businesses
|
|
6
|
+
* for display on the member map feature.
|
|
7
|
+
*
|
|
8
|
+
* @module api/queries/map
|
|
9
|
+
*/
|
|
10
|
+
import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
|
|
11
|
+
import type { MapUserResponse, MapEventResponse, MapHubResponse, MapBusinessResponse } from '../types';
|
|
12
|
+
/**
|
|
13
|
+
* Query key factory for map-related queries
|
|
14
|
+
*/
|
|
15
|
+
export declare const mapKeys: {
|
|
16
|
+
all: readonly ["map"];
|
|
17
|
+
members: (params?: MapMembersParams) => readonly ["map", "members", MapMembersParams | undefined];
|
|
18
|
+
events: (params?: MapEventsParams) => readonly ["map", "events", MapEventsParams | undefined];
|
|
19
|
+
hubs: (params?: MapHubsParams) => readonly ["map", "hubs", MapHubsParams | undefined];
|
|
20
|
+
businesses: (params?: MapBusinessesParams) => readonly ["map", "businesses", MapBusinessesParams | undefined];
|
|
21
|
+
};
|
|
22
|
+
export interface MapMembersParams {
|
|
23
|
+
lat: number;
|
|
24
|
+
lng: number;
|
|
25
|
+
radius?: number;
|
|
26
|
+
hubId?: string;
|
|
27
|
+
openToMeetOnly?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface MapEventsParams {
|
|
30
|
+
lat: number;
|
|
31
|
+
lng: number;
|
|
32
|
+
radius?: number;
|
|
33
|
+
hubId?: string;
|
|
34
|
+
upcoming?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface MapHubsParams {
|
|
37
|
+
lat: number;
|
|
38
|
+
lng: number;
|
|
39
|
+
radius?: number;
|
|
40
|
+
city?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface MapBusinessesParams {
|
|
43
|
+
lat: number;
|
|
44
|
+
lng: number;
|
|
45
|
+
radius?: number;
|
|
46
|
+
type?: string;
|
|
47
|
+
afDrinksOnly?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get members for map display
|
|
51
|
+
*
|
|
52
|
+
* @description
|
|
53
|
+
* Retrieves users who have opted to be visible on the member map.
|
|
54
|
+
* Only shows users who have enabled "open to meet" and shared their location.
|
|
55
|
+
* Premium feature.
|
|
56
|
+
*
|
|
57
|
+
* @endpoint GET /api/v1/map/members
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```tsx
|
|
61
|
+
* import { useMapMembers } from '@growsober/sdk';
|
|
62
|
+
*
|
|
63
|
+
* function MemberMap() {
|
|
64
|
+
* const { data: members, isLoading } = useMapMembers({
|
|
65
|
+
* lat: 51.5074,
|
|
66
|
+
* lng: -0.1278,
|
|
67
|
+
* radius: 50, // 50km radius
|
|
68
|
+
* });
|
|
69
|
+
*
|
|
70
|
+
* if (isLoading) return <MapLoader />;
|
|
71
|
+
*
|
|
72
|
+
* return (
|
|
73
|
+
* <Map>
|
|
74
|
+
* {members?.map(member => (
|
|
75
|
+
* <Marker
|
|
76
|
+
* key={member.id}
|
|
77
|
+
* position={[member.locationLat, member.locationLong]}
|
|
78
|
+
* >
|
|
79
|
+
* <Avatar src={member.avatar} />
|
|
80
|
+
* </Marker>
|
|
81
|
+
* ))}
|
|
82
|
+
* </Map>
|
|
83
|
+
* );
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @param params - Location and filter parameters
|
|
88
|
+
* @param options - TanStack Query options
|
|
89
|
+
* @returns TanStack Query result with array of map users
|
|
90
|
+
*/
|
|
91
|
+
export declare function useMapMembers(params: MapMembersParams, options?: Omit<UseQueryOptions<MapUserResponse[]>, 'queryKey' | 'queryFn'>): UseQueryResult<MapUserResponse[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Get events for map display
|
|
94
|
+
*
|
|
95
|
+
* @description
|
|
96
|
+
* Retrieves events with location data for display on the map.
|
|
97
|
+
* Shows upcoming events within the specified radius.
|
|
98
|
+
*
|
|
99
|
+
* @endpoint GET /api/v1/map/events
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```tsx
|
|
103
|
+
* import { useMapEvents } from '@growsober/sdk';
|
|
104
|
+
*
|
|
105
|
+
* function EventMap() {
|
|
106
|
+
* const { data: events, isLoading } = useMapEvents({
|
|
107
|
+
* lat: 51.5074,
|
|
108
|
+
* lng: -0.1278,
|
|
109
|
+
* radius: 25,
|
|
110
|
+
* upcoming: true,
|
|
111
|
+
* });
|
|
112
|
+
*
|
|
113
|
+
* return (
|
|
114
|
+
* <Map>
|
|
115
|
+
* {events?.map(event => (
|
|
116
|
+
* <Marker
|
|
117
|
+
* key={event.id}
|
|
118
|
+
* position={[event.locationLat, event.locationLong]}
|
|
119
|
+
* icon="event"
|
|
120
|
+
* >
|
|
121
|
+
* <EventPopup event={event} />
|
|
122
|
+
* </Marker>
|
|
123
|
+
* ))}
|
|
124
|
+
* </Map>
|
|
125
|
+
* );
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
128
|
+
*
|
|
129
|
+
* @param params - Location and filter parameters
|
|
130
|
+
* @param options - TanStack Query options
|
|
131
|
+
* @returns TanStack Query result with array of map events
|
|
132
|
+
*/
|
|
133
|
+
export declare function useMapEvents(params: MapEventsParams, options?: Omit<UseQueryOptions<MapEventResponse[]>, 'queryKey' | 'queryFn'>): UseQueryResult<MapEventResponse[]>;
|
|
134
|
+
/**
|
|
135
|
+
* Get hubs for map display
|
|
136
|
+
*
|
|
137
|
+
* @description
|
|
138
|
+
* Retrieves hubs with location data for display on the map.
|
|
139
|
+
* Shows active hubs within the specified radius.
|
|
140
|
+
*
|
|
141
|
+
* @endpoint GET /api/v1/map/hubs
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```tsx
|
|
145
|
+
* import { useMapHubs } from '@growsober/sdk';
|
|
146
|
+
*
|
|
147
|
+
* function HubMap() {
|
|
148
|
+
* const { data: hubs, isLoading } = useMapHubs({
|
|
149
|
+
* lat: 51.5074,
|
|
150
|
+
* lng: -0.1278,
|
|
151
|
+
* radius: 50,
|
|
152
|
+
* });
|
|
153
|
+
*
|
|
154
|
+
* return (
|
|
155
|
+
* <Map>
|
|
156
|
+
* {hubs?.map(hub => (
|
|
157
|
+
* <Marker
|
|
158
|
+
* key={hub.id}
|
|
159
|
+
* position={[hub.locationLat, hub.locationLong]}
|
|
160
|
+
* icon="hub"
|
|
161
|
+
* >
|
|
162
|
+
* <HubPopup hub={hub} />
|
|
163
|
+
* </Marker>
|
|
164
|
+
* ))}
|
|
165
|
+
* </Map>
|
|
166
|
+
* );
|
|
167
|
+
* }
|
|
168
|
+
* ```
|
|
169
|
+
*
|
|
170
|
+
* @param params - Location and filter parameters
|
|
171
|
+
* @param options - TanStack Query options
|
|
172
|
+
* @returns TanStack Query result with array of map hubs
|
|
173
|
+
*/
|
|
174
|
+
export declare function useMapHubs(params: MapHubsParams, options?: Omit<UseQueryOptions<MapHubResponse[]>, 'queryKey' | 'queryFn'>): UseQueryResult<MapHubResponse[]>;
|
|
175
|
+
/**
|
|
176
|
+
* Get businesses for map display
|
|
177
|
+
*
|
|
178
|
+
* @description
|
|
179
|
+
* Retrieves partner businesses with location data for display on the map.
|
|
180
|
+
* Can filter by type and whether they serve alcohol-free drinks.
|
|
181
|
+
*
|
|
182
|
+
* @endpoint GET /api/v1/map/businesses
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```tsx
|
|
186
|
+
* import { useMapBusinesses } from '@growsober/sdk';
|
|
187
|
+
*
|
|
188
|
+
* function BusinessMap() {
|
|
189
|
+
* const { data: businesses, isLoading } = useMapBusinesses({
|
|
190
|
+
* lat: 51.5074,
|
|
191
|
+
* lng: -0.1278,
|
|
192
|
+
* radius: 10,
|
|
193
|
+
* afDrinksOnly: true, // Only show AF-friendly venues
|
|
194
|
+
* });
|
|
195
|
+
*
|
|
196
|
+
* return (
|
|
197
|
+
* <Map>
|
|
198
|
+
* {businesses?.map(business => (
|
|
199
|
+
* <Marker
|
|
200
|
+
* key={business.id}
|
|
201
|
+
* position={[business.locationLat, business.locationLong]}
|
|
202
|
+
* icon={business.hasAfDrinks ? 'af-venue' : 'venue'}
|
|
203
|
+
* >
|
|
204
|
+
* <BusinessPopup business={business} />
|
|
205
|
+
* </Marker>
|
|
206
|
+
* ))}
|
|
207
|
+
* </Map>
|
|
208
|
+
* );
|
|
209
|
+
* }
|
|
210
|
+
* ```
|
|
211
|
+
*
|
|
212
|
+
* @param params - Location and filter parameters
|
|
213
|
+
* @param options - TanStack Query options
|
|
214
|
+
* @returns TanStack Query result with array of map businesses
|
|
215
|
+
*/
|
|
216
|
+
export declare function useMapBusinesses(params: MapBusinessesParams, options?: Omit<UseQueryOptions<MapBusinessResponse[]>, 'queryKey' | 'queryFn'>): UseQueryResult<MapBusinessResponse[]>;
|