@diffsome/react 1.1.3 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/context/DiffsomeContext.tsx
2
- import { createContext, useContext, useState, useEffect, useMemo } from "react";
2
+ import { createContext, useContext, useState, useEffect, useCallback, useMemo } from "react";
3
3
  import { Diffsome } from "@diffsome/sdk";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  var DiffsomeContext = createContext(null);
@@ -14,6 +14,10 @@ var getEnvVar = (key) => {
14
14
  };
15
15
  function DiffsomeProvider({ children, config = {} }) {
16
16
  const [isReady, setIsReady] = useState(false);
17
+ const [cart, setCart] = useState(null);
18
+ const [cartLoading, setCartLoading] = useState(true);
19
+ const [wishlistItems, setWishlistItems] = useState([]);
20
+ const [wishlistLoading, setWishlistLoading] = useState(true);
17
21
  const tenantId = config.tenantId || getEnvVar("DIFFSOME_TENANT_ID");
18
22
  const apiKey = config.apiKey || getEnvVar("DIFFSOME_API_KEY");
19
23
  const baseUrl = config.baseUrl || getEnvVar("DIFFSOME_BASE_URL");
@@ -31,13 +35,73 @@ function DiffsomeProvider({ children, config = {} }) {
31
35
  storageType: config.storageType ?? "localStorage"
32
36
  });
33
37
  }, [tenantId, baseUrl, apiKey, config.persistToken, config.storageType]);
38
+ const refreshCart = useCallback(async () => {
39
+ setCartLoading(true);
40
+ try {
41
+ const cartData = await client.shop.getCart();
42
+ setCart(cartData);
43
+ } catch (err) {
44
+ setCart(null);
45
+ } finally {
46
+ setCartLoading(false);
47
+ }
48
+ }, [client]);
49
+ const refreshWishlist = useCallback(async () => {
50
+ if (!client.isAuthenticated()) {
51
+ setWishlistItems([]);
52
+ setWishlistLoading(false);
53
+ return;
54
+ }
55
+ setWishlistLoading(true);
56
+ try {
57
+ const response = await client.shop.getWishlist({ per_page: 100 });
58
+ setWishlistItems(response.data);
59
+ } catch (err) {
60
+ setWishlistItems([]);
61
+ } finally {
62
+ setWishlistLoading(false);
63
+ }
64
+ }, [client]);
34
65
  useEffect(() => {
35
- setIsReady(true);
36
- }, []);
66
+ let mounted = true;
67
+ const init = async () => {
68
+ if (!mounted) return;
69
+ setIsReady(true);
70
+ try {
71
+ const cartData = await client.shop.getCart();
72
+ if (mounted) setCart(cartData);
73
+ } catch (err) {
74
+ if (mounted) setCart(null);
75
+ } finally {
76
+ if (mounted) setCartLoading(false);
77
+ }
78
+ if (client.isAuthenticated()) {
79
+ try {
80
+ const response = await client.shop.getWishlist({ per_page: 100 });
81
+ if (mounted) setWishlistItems(response.data);
82
+ } catch (err) {
83
+ if (mounted) setWishlistItems([]);
84
+ }
85
+ }
86
+ if (mounted) setWishlistLoading(false);
87
+ };
88
+ init();
89
+ return () => {
90
+ mounted = false;
91
+ };
92
+ }, [client]);
37
93
  const value = useMemo(() => ({
38
94
  client,
39
- isReady
40
- }), [client, isReady]);
95
+ isReady,
96
+ cart,
97
+ cartLoading,
98
+ setCart,
99
+ refreshCart,
100
+ wishlistItems,
101
+ wishlistLoading,
102
+ setWishlistItems,
103
+ refreshWishlist
104
+ }), [client, isReady, cart, cartLoading, refreshCart, wishlistItems, wishlistLoading, refreshWishlist]);
41
105
  return /* @__PURE__ */ jsx(DiffsomeContext.Provider, { value, children });
42
106
  }
43
107
  function useDiffsome() {
@@ -52,15 +116,104 @@ function useClient() {
52
116
  return client;
53
117
  }
54
118
 
55
- // src/hooks/useAuth.ts
56
- import { useState as useState2, useEffect as useEffect2, useCallback as useCallback2 } from "react";
57
- function useAuth() {
119
+ // src/hooks/useSite.ts
120
+ import { useState as useState2, useCallback as useCallback2, useEffect as useEffect2 } from "react";
121
+ var DEFAULT_CURRENCY = {
122
+ code: "KRW",
123
+ symbol: "\u20A9",
124
+ position: "before",
125
+ decimals: 0
126
+ };
127
+ function useSite() {
58
128
  const client = useClient();
59
- const [user, setUser] = useState2(null);
129
+ const [site, setSite] = useState2(null);
60
130
  const [loading, setLoading] = useState2(true);
61
131
  const [error, setError] = useState2(null);
132
+ const fetchSite = useCallback2(async () => {
133
+ setLoading(true);
134
+ setError(null);
135
+ try {
136
+ const data = await client.site.getInfo();
137
+ setSite(data);
138
+ } catch (err) {
139
+ setError(err instanceof Error ? err : new Error("Failed to fetch site info"));
140
+ } finally {
141
+ setLoading(false);
142
+ }
143
+ }, [client]);
144
+ useEffect2(() => {
145
+ fetchSite();
146
+ }, [fetchSite]);
147
+ const currency = site?.currency ?? null;
148
+ const formatPrice = useCallback2((amount) => {
149
+ const curr = currency ?? DEFAULT_CURRENCY;
150
+ const formatted = amount.toLocaleString(void 0, {
151
+ minimumFractionDigits: curr.decimals,
152
+ maximumFractionDigits: curr.decimals
153
+ });
154
+ if (curr.position === "after") {
155
+ return `${formatted}${curr.symbol}`;
156
+ }
157
+ return `${curr.symbol}${formatted}`;
158
+ }, [currency]);
159
+ return {
160
+ site,
161
+ loading,
162
+ error,
163
+ refresh: fetchSite,
164
+ currency,
165
+ formatPrice
166
+ };
167
+ }
168
+ function useCurrency() {
169
+ const client = useClient();
170
+ const [currency, setCurrency] = useState2(null);
171
+ const [loading, setLoading] = useState2(true);
172
+ const [error, setError] = useState2(null);
173
+ const fetchCurrency = useCallback2(async () => {
174
+ setLoading(true);
175
+ setError(null);
176
+ try {
177
+ const data = await client.site.getCurrency();
178
+ setCurrency(data);
179
+ } catch (err) {
180
+ setError(err instanceof Error ? err : new Error("Failed to fetch currency"));
181
+ } finally {
182
+ setLoading(false);
183
+ }
184
+ }, [client]);
185
+ useEffect2(() => {
186
+ fetchCurrency();
187
+ }, [fetchCurrency]);
188
+ const formatPrice = useCallback2((amount) => {
189
+ const curr = currency ?? DEFAULT_CURRENCY;
190
+ const formatted = amount.toLocaleString(void 0, {
191
+ minimumFractionDigits: curr.decimals,
192
+ maximumFractionDigits: curr.decimals
193
+ });
194
+ if (curr.position === "after") {
195
+ return `${formatted}${curr.symbol}`;
196
+ }
197
+ return `${curr.symbol}${formatted}`;
198
+ }, [currency]);
199
+ return {
200
+ currency,
201
+ loading,
202
+ error,
203
+ formatPrice,
204
+ refresh: fetchCurrency
205
+ };
206
+ }
207
+
208
+ // src/hooks/useAuth.ts
209
+ import { useState as useState3, useEffect as useEffect3, useCallback as useCallback3 } from "react";
210
+ function useAuth() {
211
+ const client = useClient();
212
+ const [user, setUser] = useState3(null);
213
+ const [loading, setLoading] = useState3(true);
214
+ const [error, setError] = useState3(null);
62
215
  const isAuthenticated = !!user && client.isAuthenticated();
63
- const fetchProfile = useCallback2(async () => {
216
+ const fetchProfile = useCallback3(async () => {
64
217
  if (!client.isAuthenticated()) {
65
218
  setUser(null);
66
219
  setLoading(false);
@@ -77,10 +230,10 @@ function useAuth() {
77
230
  setLoading(false);
78
231
  }
79
232
  }, [client]);
80
- useEffect2(() => {
233
+ useEffect3(() => {
81
234
  fetchProfile();
82
235
  }, [fetchProfile]);
83
- const login = useCallback2(async (credentials) => {
236
+ const login = useCallback3(async (credentials) => {
84
237
  setLoading(true);
85
238
  setError(null);
86
239
  try {
@@ -95,7 +248,7 @@ function useAuth() {
95
248
  setLoading(false);
96
249
  }
97
250
  }, [client]);
98
- const register = useCallback2(async (data) => {
251
+ const register = useCallback3(async (data) => {
99
252
  setLoading(true);
100
253
  setError(null);
101
254
  try {
@@ -110,7 +263,7 @@ function useAuth() {
110
263
  setLoading(false);
111
264
  }
112
265
  }, [client]);
113
- const logout = useCallback2(async () => {
266
+ const logout = useCallback3(async () => {
114
267
  setLoading(true);
115
268
  try {
116
269
  await client.auth.logout();
@@ -119,23 +272,23 @@ function useAuth() {
119
272
  setLoading(false);
120
273
  }
121
274
  }, [client]);
122
- const getProfile = useCallback2(async () => {
275
+ const getProfile = useCallback3(async () => {
123
276
  const profile = await client.auth.me();
124
277
  setUser(profile);
125
278
  return profile;
126
279
  }, [client]);
127
- const updateProfile = useCallback2(async (data) => {
280
+ const updateProfile = useCallback3(async (data) => {
128
281
  const profile = await client.auth.updateProfile(data);
129
282
  setUser(profile);
130
283
  return profile;
131
284
  }, [client]);
132
- const forgotPassword = useCallback2(async (email) => {
285
+ const forgotPassword = useCallback3(async (email) => {
133
286
  return await client.auth.forgotPassword({ email });
134
287
  }, [client]);
135
- const resetPassword = useCallback2(async (data) => {
288
+ const resetPassword = useCallback3(async (data) => {
136
289
  return await client.auth.resetPassword(data);
137
290
  }, [client]);
138
- const refresh = useCallback2(async () => {
291
+ const refresh = useCallback3(async () => {
139
292
  await fetchProfile();
140
293
  }, [fetchProfile]);
141
294
  return {
@@ -155,13 +308,13 @@ function useAuth() {
155
308
  }
156
309
 
157
310
  // src/hooks/useSocialAuth.ts
158
- import { useState as useState3, useEffect as useEffect3, useCallback as useCallback3 } from "react";
311
+ import { useState as useState4, useEffect as useEffect4, useCallback as useCallback4 } from "react";
159
312
  function useSocialAuth() {
160
313
  const client = useClient();
161
- const [providers, setProviders] = useState3([]);
162
- const [loading, setLoading] = useState3(true);
163
- const [error, setError] = useState3(null);
164
- const fetchProviders = useCallback3(async () => {
314
+ const [providers, setProviders] = useState4([]);
315
+ const [loading, setLoading] = useState4(true);
316
+ const [error, setError] = useState4(null);
317
+ const fetchProviders = useCallback4(async () => {
165
318
  setLoading(true);
166
319
  setError(null);
167
320
  try {
@@ -173,14 +326,14 @@ function useSocialAuth() {
173
326
  setLoading(false);
174
327
  }
175
328
  }, [client]);
176
- useEffect3(() => {
329
+ useEffect4(() => {
177
330
  fetchProviders();
178
331
  }, [fetchProviders]);
179
- const getAuthUrl = useCallback3(async (provider) => {
332
+ const getAuthUrl = useCallback4(async (provider) => {
180
333
  const result = await client.auth.getSocialAuthUrl(provider);
181
334
  return result.url;
182
335
  }, [client]);
183
- const handleCallback = useCallback3(async (provider, code) => {
336
+ const handleCallback = useCallback4(async (provider, code) => {
184
337
  return await client.auth.socialCallback(provider, code);
185
338
  }, [client]);
186
339
  return {
@@ -194,28 +347,10 @@ function useSocialAuth() {
194
347
  }
195
348
 
196
349
  // src/hooks/useCart.ts
197
- import { useState as useState4, useEffect as useEffect4, useCallback as useCallback4 } from "react";
350
+ import { useCallback as useCallback5 } from "react";
198
351
  function useCart() {
199
- const client = useClient();
200
- const [cart, setCart] = useState4(null);
201
- const [loading, setLoading] = useState4(true);
202
- const [error, setError] = useState4(null);
203
- const fetchCart = useCallback4(async () => {
204
- try {
205
- const cartData = await client.shop.getCart();
206
- setCart(cartData);
207
- setError(null);
208
- } catch (err) {
209
- setCart(null);
210
- setError(err instanceof Error ? err : new Error("Failed to fetch cart"));
211
- } finally {
212
- setLoading(false);
213
- }
214
- }, [client]);
215
- useEffect4(() => {
216
- fetchCart();
217
- }, [fetchCart]);
218
- const addToCart = useCallback4(async (productId, quantity = 1, variantId, options) => {
352
+ const { client, cart, cartLoading, setCart, refreshCart } = useDiffsome();
353
+ const addToCart = useCallback5(async (productId, quantity = 1, variantId, options) => {
219
354
  const data = {
220
355
  product_id: productId,
221
356
  quantity,
@@ -225,32 +360,28 @@ function useCart() {
225
360
  const updatedCart = await client.shop.addToCart(data);
226
361
  setCart(updatedCart);
227
362
  return updatedCart;
228
- }, [client]);
229
- const updateItem = useCallback4(async (itemId, quantity) => {
363
+ }, [client, setCart]);
364
+ const updateItem = useCallback5(async (itemId, quantity) => {
230
365
  const updatedCart = await client.shop.updateCartItem(itemId, { quantity });
231
366
  setCart(updatedCart);
232
367
  return updatedCart;
233
- }, [client]);
234
- const removeItem = useCallback4(async (itemId) => {
368
+ }, [client, setCart]);
369
+ const removeItem = useCallback5(async (itemId) => {
235
370
  const updatedCart = await client.shop.removeFromCart(itemId);
236
371
  setCart(updatedCart);
237
372
  return updatedCart;
238
- }, [client]);
239
- const clearCart = useCallback4(async () => {
373
+ }, [client, setCart]);
374
+ const clearCart = useCallback5(async () => {
240
375
  await client.shop.clearCart();
241
376
  setCart(null);
242
- }, [client]);
243
- const refresh = useCallback4(async () => {
244
- setLoading(true);
245
- await fetchCart();
246
- }, [fetchCart]);
247
- const isInCart = useCallback4((productId, variantId) => {
377
+ }, [client, setCart]);
378
+ const isInCart = useCallback5((productId, variantId) => {
248
379
  if (!cart?.items) return false;
249
380
  return cart.items.some(
250
381
  (item) => item.product_id === productId && (variantId === void 0 || item.variant_id === variantId)
251
382
  );
252
383
  }, [cart]);
253
- const getItemQuantity = useCallback4((productId, variantId) => {
384
+ const getItemQuantity = useCallback5((productId, variantId) => {
254
385
  if (!cart?.items) return 0;
255
386
  const item = cart.items.find(
256
387
  (item2) => item2.product_id === productId && (variantId === void 0 || item2.variant_id === variantId)
@@ -265,117 +396,77 @@ function useCart() {
265
396
  subtotal: cart?.subtotal ?? 0,
266
397
  shippingFee: cart?.shipping_fee ?? 0,
267
398
  total: cart?.total ?? 0,
268
- loading,
269
- error,
399
+ loading: cartLoading,
270
400
  addToCart,
271
401
  updateItem,
272
402
  removeItem,
273
403
  clearCart,
274
- refresh,
404
+ refresh: refreshCart,
275
405
  isInCart,
276
406
  getItemQuantity
277
407
  };
278
408
  }
279
409
 
280
410
  // src/hooks/useWishlist.ts
281
- import { useState as useState5, useEffect as useEffect5, useCallback as useCallback5 } from "react";
411
+ import { useState as useState5, useCallback as useCallback6, useMemo as useMemo2 } from "react";
282
412
  function useWishlist() {
283
- const client = useClient();
284
- const [items, setItems] = useState5([]);
285
- const [loading, setLoading] = useState5(true);
413
+ const { client, wishlistItems, wishlistLoading, setWishlistItems, refreshWishlist, setCart } = useDiffsome();
286
414
  const [error, setError] = useState5(null);
287
- const [wishlistMap, setWishlistMap] = useState5({});
288
- const fetchWishlist = useCallback5(async () => {
289
- if (!client.isAuthenticated()) {
290
- setItems([]);
291
- setWishlistMap({});
292
- setLoading(false);
293
- return;
294
- }
295
- try {
296
- const response = await client.shop.getWishlist({ per_page: 100 });
297
- setItems(response.data);
298
- const map = {};
299
- response.data.forEach((item) => {
300
- const key = item.variant_id ? `${item.product_id}_${item.variant_id}` : String(item.product_id);
301
- map[key] = true;
302
- });
303
- setWishlistMap(map);
304
- setError(null);
305
- } catch (err) {
306
- setItems([]);
307
- setWishlistMap({});
308
- setError(err instanceof Error ? err : new Error("Failed to fetch wishlist"));
309
- } finally {
310
- setLoading(false);
311
- }
312
- }, [client]);
313
- useEffect5(() => {
314
- fetchWishlist();
315
- }, [fetchWishlist]);
316
- const isInWishlist = useCallback5((productId, variantId) => {
415
+ const wishlistMap = useMemo2(() => {
416
+ const map = {};
417
+ wishlistItems.forEach((item) => {
418
+ const key = item.variant_id ? `${item.product_id}_${item.variant_id}` : String(item.product_id);
419
+ map[key] = true;
420
+ });
421
+ return map;
422
+ }, [wishlistItems]);
423
+ const isInWishlist = useCallback6((productId, variantId) => {
317
424
  const key = variantId ? `${productId}_${variantId}` : String(productId);
318
425
  return wishlistMap[key] || false;
319
426
  }, [wishlistMap]);
320
- const toggleWishlist = useCallback5(async (productId, variantId) => {
427
+ const toggleWishlist = useCallback6(async (productId, variantId) => {
321
428
  const result = await client.shop.toggleWishlist(productId, variantId);
322
- const key = variantId ? `${productId}_${variantId}` : String(productId);
323
- setWishlistMap((prev) => ({
324
- ...prev,
325
- [key]: result.in_wishlist
326
- }));
327
429
  if (result.action === "added") {
328
- await fetchWishlist();
430
+ await refreshWishlist();
329
431
  } else {
330
- setItems((prev) => prev.filter(
432
+ setWishlistItems(wishlistItems.filter(
331
433
  (item) => !(item.product_id === productId && item.variant_id === variantId)
332
434
  ));
333
435
  }
334
436
  return result;
335
- }, [client, fetchWishlist]);
336
- const addToWishlist = useCallback5(async (productId, variantId, note) => {
437
+ }, [client, refreshWishlist, setWishlistItems, wishlistItems]);
438
+ const addToWishlist = useCallback6(async (productId, variantId, note) => {
337
439
  const item = await client.shop.addToWishlist({
338
440
  product_id: productId,
339
441
  variant_id: variantId,
340
442
  note
341
443
  });
342
- await fetchWishlist();
444
+ await refreshWishlist();
343
445
  return item;
344
- }, [client, fetchWishlist]);
345
- const removeFromWishlist = useCallback5(async (wishlistId) => {
346
- const item = items.find((i) => i.id === wishlistId);
446
+ }, [client, refreshWishlist]);
447
+ const removeFromWishlist = useCallback6(async (wishlistId) => {
347
448
  await client.shop.removeFromWishlist(wishlistId);
348
- if (item) {
349
- const key = item.variant_id ? `${item.product_id}_${item.variant_id}` : String(item.product_id);
350
- setWishlistMap((prev) => {
351
- const next = { ...prev };
352
- delete next[key];
353
- return next;
354
- });
355
- }
356
- setItems((prev) => prev.filter((i) => i.id !== wishlistId));
357
- }, [client, items]);
358
- const moveToCart = useCallback5(async (wishlistIds) => {
449
+ setWishlistItems(wishlistItems.filter((i) => i.id !== wishlistId));
450
+ }, [client, setWishlistItems, wishlistItems]);
451
+ const moveToCart = useCallback6(async (wishlistIds) => {
359
452
  const result = await client.shop.moveWishlistToCart(wishlistIds);
360
- await fetchWishlist();
453
+ await refreshWishlist();
454
+ const cartData = await client.shop.getCart();
455
+ setCart(cartData);
361
456
  return result;
362
- }, [client, fetchWishlist]);
363
- const updateNote = useCallback5(async (wishlistId, note) => {
457
+ }, [client, refreshWishlist, setCart]);
458
+ const updateNote = useCallback6(async (wishlistId, note) => {
364
459
  const item = await client.shop.updateWishlistNote(wishlistId, note);
365
- setItems((prev) => prev.map((i) => i.id === wishlistId ? item : i));
460
+ setWishlistItems(wishlistItems.map((i) => i.id === wishlistId ? item : i));
366
461
  return item;
367
- }, [client]);
368
- const getProductWishlistCount = useCallback5(async (productSlug) => {
462
+ }, [client, setWishlistItems, wishlistItems]);
463
+ const getProductWishlistCount = useCallback6(async (productSlug) => {
369
464
  return await client.shop.getProductWishlistCount(productSlug);
370
465
  }, [client]);
371
- const refresh = useCallback5(async () => {
372
- setLoading(true);
373
- await fetchWishlist();
374
- }, [fetchWishlist]);
375
466
  return {
376
- items,
377
- count: items.length,
378
- loading,
467
+ items: wishlistItems,
468
+ count: wishlistItems.length,
469
+ loading: wishlistLoading,
379
470
  error,
380
471
  isInWishlist,
381
472
  toggleWishlist,
@@ -384,12 +475,12 @@ function useWishlist() {
384
475
  moveToCart,
385
476
  updateNote,
386
477
  getProductWishlistCount,
387
- refresh
478
+ refresh: refreshWishlist
388
479
  };
389
480
  }
390
481
 
391
482
  // src/hooks/useProducts.ts
392
- import { useState as useState6, useEffect as useEffect6, useCallback as useCallback6 } from "react";
483
+ import { useState as useState6, useEffect as useEffect5, useCallback as useCallback7 } from "react";
393
484
  function useProducts(options = {}) {
394
485
  const { autoFetch = true, ...params } = options;
395
486
  const client = useClient();
@@ -398,7 +489,7 @@ function useProducts(options = {}) {
398
489
  const [loading, setLoading] = useState6(autoFetch);
399
490
  const [error, setError] = useState6(null);
400
491
  const [currentParams, setCurrentParams] = useState6(params);
401
- const fetchProducts = useCallback6(async (fetchParams, append = false) => {
492
+ const fetchProducts = useCallback7(async (fetchParams, append = false) => {
402
493
  setLoading(true);
403
494
  setError(null);
404
495
  try {
@@ -415,22 +506,22 @@ function useProducts(options = {}) {
415
506
  setLoading(false);
416
507
  }
417
508
  }, [client]);
418
- useEffect6(() => {
509
+ useEffect5(() => {
419
510
  if (autoFetch) {
420
511
  fetchProducts(params);
421
512
  }
422
513
  }, []);
423
514
  const hasMore = meta ? meta.current_page < meta.last_page : false;
424
- const loadMore = useCallback6(async () => {
515
+ const loadMore = useCallback7(async () => {
425
516
  if (!hasMore || loading) return;
426
517
  const nextPage = (meta?.current_page ?? 0) + 1;
427
518
  await fetchProducts({ ...currentParams, page: nextPage }, true);
428
519
  }, [hasMore, loading, meta, currentParams, fetchProducts]);
429
- const refresh = useCallback6(async () => {
520
+ const refresh = useCallback7(async () => {
430
521
  setCurrentParams(params);
431
522
  await fetchProducts(params);
432
523
  }, [params, fetchProducts]);
433
- const search = useCallback6(async (query) => {
524
+ const search = useCallback7(async (query) => {
434
525
  const searchParams = { ...params, search: query, page: 1 };
435
526
  setCurrentParams(searchParams);
436
527
  await fetchProducts(searchParams);
@@ -451,7 +542,7 @@ function useProduct(idOrSlug) {
451
542
  const [product, setProduct] = useState6(null);
452
543
  const [loading, setLoading] = useState6(true);
453
544
  const [error, setError] = useState6(null);
454
- const fetchProduct = useCallback6(async () => {
545
+ const fetchProduct = useCallback7(async () => {
455
546
  setLoading(true);
456
547
  setError(null);
457
548
  try {
@@ -463,7 +554,7 @@ function useProduct(idOrSlug) {
463
554
  setLoading(false);
464
555
  }
465
556
  }, [client, idOrSlug]);
466
- useEffect6(() => {
557
+ useEffect5(() => {
467
558
  fetchProduct();
468
559
  }, [fetchProduct]);
469
560
  return {
@@ -478,7 +569,7 @@ function useCategories() {
478
569
  const [categories, setCategories] = useState6([]);
479
570
  const [loading, setLoading] = useState6(true);
480
571
  const [error, setError] = useState6(null);
481
- const fetchCategories = useCallback6(async () => {
572
+ const fetchCategories = useCallback7(async () => {
482
573
  setLoading(true);
483
574
  setError(null);
484
575
  try {
@@ -490,7 +581,7 @@ function useCategories() {
490
581
  setLoading(false);
491
582
  }
492
583
  }, [client]);
493
- useEffect6(() => {
584
+ useEffect5(() => {
494
585
  fetchCategories();
495
586
  }, [fetchCategories]);
496
587
  return {
@@ -505,7 +596,7 @@ function useFeaturedProducts(limit = 8) {
505
596
  const [products, setProducts] = useState6([]);
506
597
  const [loading, setLoading] = useState6(true);
507
598
  const [error, setError] = useState6(null);
508
- const fetchProducts = useCallback6(async () => {
599
+ const fetchProducts = useCallback7(async () => {
509
600
  setLoading(true);
510
601
  setError(null);
511
602
  try {
@@ -517,7 +608,7 @@ function useFeaturedProducts(limit = 8) {
517
608
  setLoading(false);
518
609
  }
519
610
  }, [client, limit]);
520
- useEffect6(() => {
611
+ useEffect5(() => {
521
612
  fetchProducts();
522
613
  }, [fetchProducts]);
523
614
  return {
@@ -533,7 +624,7 @@ function useProductsByType(type, params) {
533
624
  const [meta, setMeta] = useState6(null);
534
625
  const [loading, setLoading] = useState6(true);
535
626
  const [error, setError] = useState6(null);
536
- const fetchProducts = useCallback6(async () => {
627
+ const fetchProducts = useCallback7(async () => {
537
628
  setLoading(true);
538
629
  setError(null);
539
630
  try {
@@ -546,7 +637,7 @@ function useProductsByType(type, params) {
546
637
  setLoading(false);
547
638
  }
548
639
  }, [client, type, params]);
549
- useEffect6(() => {
640
+ useEffect5(() => {
550
641
  fetchProducts();
551
642
  }, [fetchProducts]);
552
643
  return {
@@ -571,7 +662,7 @@ function useBundleItems(productSlug) {
571
662
  const [bundle, setBundle] = useState6(null);
572
663
  const [loading, setLoading] = useState6(true);
573
664
  const [error, setError] = useState6(null);
574
- const fetchBundle = useCallback6(async () => {
665
+ const fetchBundle = useCallback7(async () => {
575
666
  setLoading(true);
576
667
  setError(null);
577
668
  try {
@@ -583,7 +674,7 @@ function useBundleItems(productSlug) {
583
674
  setLoading(false);
584
675
  }
585
676
  }, [client, productSlug]);
586
- useEffect6(() => {
677
+ useEffect5(() => {
587
678
  fetchBundle();
588
679
  }, [fetchBundle]);
589
680
  return {
@@ -595,14 +686,14 @@ function useBundleItems(productSlug) {
595
686
  }
596
687
 
597
688
  // src/hooks/useOrders.ts
598
- import { useState as useState7, useEffect as useEffect7, useCallback as useCallback7 } from "react";
689
+ import { useState as useState7, useEffect as useEffect6, useCallback as useCallback8 } from "react";
599
690
  function useOrders(params) {
600
691
  const client = useClient();
601
692
  const [orders, setOrders] = useState7([]);
602
693
  const [meta, setMeta] = useState7(null);
603
694
  const [loading, setLoading] = useState7(true);
604
695
  const [error, setError] = useState7(null);
605
- const fetchOrders = useCallback7(async (fetchParams, append = false) => {
696
+ const fetchOrders = useCallback8(async (fetchParams, append = false) => {
606
697
  if (!client.isAuthenticated()) {
607
698
  setOrders([]);
608
699
  setLoading(false);
@@ -624,16 +715,16 @@ function useOrders(params) {
624
715
  setLoading(false);
625
716
  }
626
717
  }, [client]);
627
- useEffect7(() => {
718
+ useEffect6(() => {
628
719
  fetchOrders(params);
629
720
  }, []);
630
721
  const hasMore = meta ? meta.current_page < meta.last_page : false;
631
- const loadMore = useCallback7(async () => {
722
+ const loadMore = useCallback8(async () => {
632
723
  if (!hasMore || loading) return;
633
724
  const nextPage = (meta?.current_page ?? 0) + 1;
634
725
  await fetchOrders({ ...params, page: nextPage }, true);
635
726
  }, [hasMore, loading, meta, params, fetchOrders]);
636
- const refresh = useCallback7(async () => {
727
+ const refresh = useCallback8(async () => {
637
728
  await fetchOrders(params);
638
729
  }, [params, fetchOrders]);
639
730
  return {
@@ -651,7 +742,7 @@ function useOrder(idOrNumber) {
651
742
  const [order, setOrder] = useState7(null);
652
743
  const [loading, setLoading] = useState7(true);
653
744
  const [error, setError] = useState7(null);
654
- const fetchOrder = useCallback7(async () => {
745
+ const fetchOrder = useCallback8(async () => {
655
746
  setLoading(true);
656
747
  setError(null);
657
748
  try {
@@ -663,10 +754,10 @@ function useOrder(idOrNumber) {
663
754
  setLoading(false);
664
755
  }
665
756
  }, [client, idOrNumber]);
666
- useEffect7(() => {
757
+ useEffect6(() => {
667
758
  fetchOrder();
668
759
  }, [fetchOrder]);
669
- const cancel = useCallback7(async () => {
760
+ const cancel = useCallback8(async () => {
670
761
  if (!order) throw new Error("Order not loaded");
671
762
  const cancelled = await client.shop.cancelOrder(order.id);
672
763
  setOrder(cancelled);
@@ -684,7 +775,7 @@ function useCreateOrder() {
684
775
  const client = useClient();
685
776
  const [loading, setLoading] = useState7(false);
686
777
  const [error, setError] = useState7(null);
687
- const createOrder = useCallback7(async (data) => {
778
+ const createOrder = useCallback8(async (data) => {
688
779
  setLoading(true);
689
780
  setError(null);
690
781
  try {
@@ -705,13 +796,19 @@ function useCreateOrder() {
705
796
  }
706
797
 
707
798
  // src/hooks/usePayment.ts
708
- import { useState as useState8, useCallback as useCallback8 } from "react";
799
+ import { useState as useState8, useCallback as useCallback9 } from "react";
800
+ var DEFAULT_CURRENCY2 = {
801
+ code: "KRW",
802
+ symbol: "\u20A9",
803
+ position: "before",
804
+ decimals: 0
805
+ };
709
806
  function usePaymentStatus() {
710
807
  const client = useClient();
711
808
  const [status, setStatus] = useState8(null);
712
809
  const [loading, setLoading] = useState8(true);
713
810
  const [error, setError] = useState8(null);
714
- const fetchStatus = useCallback8(async () => {
811
+ const fetchStatus = useCallback9(async () => {
715
812
  setLoading(true);
716
813
  setError(null);
717
814
  try {
@@ -723,11 +820,25 @@ function usePaymentStatus() {
723
820
  setLoading(false);
724
821
  }
725
822
  }, [client]);
823
+ const currency = status?.currency ?? null;
824
+ const formatPrice = useCallback9((amount) => {
825
+ const curr = currency ?? DEFAULT_CURRENCY2;
826
+ const formatted = amount.toLocaleString(void 0, {
827
+ minimumFractionDigits: curr.decimals,
828
+ maximumFractionDigits: curr.decimals
829
+ });
830
+ if (curr.position === "after") {
831
+ return `${formatted}${curr.symbol}`;
832
+ }
833
+ return `${curr.symbol}${formatted}`;
834
+ }, [currency]);
726
835
  return {
727
836
  status,
728
837
  loading,
729
838
  error,
730
839
  refresh: fetchStatus,
840
+ currency,
841
+ formatPrice,
731
842
  isTossAvailable: status?.toss?.available ?? false,
732
843
  isStripeAvailable: status?.stripe?.available ?? false,
733
844
  stripePublishableKey: status?.stripe?.publishable_key ?? null
@@ -737,7 +848,7 @@ function useTossPayment() {
737
848
  const client = useClient();
738
849
  const [loading, setLoading] = useState8(false);
739
850
  const [error, setError] = useState8(null);
740
- const preparePayment = useCallback8(async (orderNumber, successUrl, failUrl) => {
851
+ const preparePayment = useCallback9(async (orderNumber, successUrl, failUrl) => {
741
852
  setLoading(true);
742
853
  setError(null);
743
854
  try {
@@ -754,7 +865,7 @@ function useTossPayment() {
754
865
  setLoading(false);
755
866
  }
756
867
  }, [client]);
757
- const confirmPayment = useCallback8(async (paymentKey, orderId, amount) => {
868
+ const confirmPayment = useCallback9(async (paymentKey, orderId, amount) => {
758
869
  setLoading(true);
759
870
  setError(null);
760
871
  try {
@@ -771,7 +882,7 @@ function useTossPayment() {
771
882
  setLoading(false);
772
883
  }
773
884
  }, [client]);
774
- const cancelPayment = useCallback8(async (orderNumber, reason, amount) => {
885
+ const cancelPayment = useCallback9(async (orderNumber, reason, amount) => {
775
886
  setLoading(true);
776
887
  setError(null);
777
888
  try {
@@ -796,7 +907,7 @@ function useStripePayment() {
796
907
  const client = useClient();
797
908
  const [loading, setLoading] = useState8(false);
798
909
  const [error, setError] = useState8(null);
799
- const createCheckout = useCallback8(async (orderNumber, successUrl, cancelUrl) => {
910
+ const createCheckout = useCallback9(async (orderNumber, successUrl, cancelUrl) => {
800
911
  setLoading(true);
801
912
  setError(null);
802
913
  try {
@@ -813,7 +924,7 @@ function useStripePayment() {
813
924
  setLoading(false);
814
925
  }
815
926
  }, [client]);
816
- const verifyPayment = useCallback8(async (sessionId) => {
927
+ const verifyPayment = useCallback9(async (sessionId) => {
817
928
  setLoading(true);
818
929
  setError(null);
819
930
  try {
@@ -826,7 +937,7 @@ function useStripePayment() {
826
937
  setLoading(false);
827
938
  }
828
939
  }, [client]);
829
- const refund = useCallback8(async (orderNumber, reason, amount) => {
940
+ const refund = useCallback9(async (orderNumber, reason, amount) => {
830
941
  setLoading(true);
831
942
  setError(null);
832
943
  try {
@@ -849,13 +960,13 @@ function useStripePayment() {
849
960
  }
850
961
 
851
962
  // src/hooks/useCoupons.ts
852
- import { useState as useState9, useEffect as useEffect8, useCallback as useCallback9 } from "react";
963
+ import { useState as useState9, useEffect as useEffect7, useCallback as useCallback10 } from "react";
853
964
  function useCoupons() {
854
965
  const client = useClient();
855
966
  const [coupons, setCoupons] = useState9([]);
856
967
  const [loading, setLoading] = useState9(true);
857
968
  const [error, setError] = useState9(null);
858
- const fetchCoupons = useCallback9(async () => {
969
+ const fetchCoupons = useCallback10(async () => {
859
970
  if (!client.isAuthenticated()) {
860
971
  setCoupons([]);
861
972
  setLoading(false);
@@ -872,7 +983,7 @@ function useCoupons() {
872
983
  setLoading(false);
873
984
  }
874
985
  }, [client]);
875
- useEffect8(() => {
986
+ useEffect7(() => {
876
987
  fetchCoupons();
877
988
  }, [fetchCoupons]);
878
989
  return {
@@ -887,7 +998,7 @@ function useValidateCoupon() {
887
998
  const [validation, setValidation] = useState9(null);
888
999
  const [loading, setLoading] = useState9(false);
889
1000
  const [error, setError] = useState9(null);
890
- const validate = useCallback9(async (code, orderAmount) => {
1001
+ const validate = useCallback10(async (code, orderAmount) => {
891
1002
  setLoading(true);
892
1003
  setError(null);
893
1004
  try {
@@ -903,7 +1014,7 @@ function useValidateCoupon() {
903
1014
  setLoading(false);
904
1015
  }
905
1016
  }, [client]);
906
- const reset = useCallback9(() => {
1017
+ const reset = useCallback10(() => {
907
1018
  setValidation(null);
908
1019
  setError(null);
909
1020
  }, []);
@@ -917,13 +1028,13 @@ function useValidateCoupon() {
917
1028
  }
918
1029
 
919
1030
  // src/hooks/useSubscriptions.ts
920
- import { useState as useState10, useEffect as useEffect9, useCallback as useCallback10 } from "react";
1031
+ import { useState as useState10, useEffect as useEffect8, useCallback as useCallback11 } from "react";
921
1032
  function useSubscriptions() {
922
1033
  const client = useClient();
923
1034
  const [subscriptions, setSubscriptions] = useState10([]);
924
1035
  const [loading, setLoading] = useState10(true);
925
1036
  const [error, setError] = useState10(null);
926
- const fetchSubscriptions = useCallback10(async () => {
1037
+ const fetchSubscriptions = useCallback11(async () => {
927
1038
  if (!client.isAuthenticated()) {
928
1039
  setSubscriptions([]);
929
1040
  setLoading(false);
@@ -940,7 +1051,7 @@ function useSubscriptions() {
940
1051
  setLoading(false);
941
1052
  }
942
1053
  }, [client]);
943
- useEffect9(() => {
1054
+ useEffect8(() => {
944
1055
  fetchSubscriptions();
945
1056
  }, [fetchSubscriptions]);
946
1057
  const activeSubscription = subscriptions.find((s) => s.is_active) ?? null;
@@ -959,7 +1070,7 @@ function useSubscription(id) {
959
1070
  const [subscription, setSubscription] = useState10(null);
960
1071
  const [loading, setLoading] = useState10(true);
961
1072
  const [error, setError] = useState10(null);
962
- const fetchSubscription = useCallback10(async () => {
1073
+ const fetchSubscription = useCallback11(async () => {
963
1074
  setLoading(true);
964
1075
  setError(null);
965
1076
  try {
@@ -971,20 +1082,20 @@ function useSubscription(id) {
971
1082
  setLoading(false);
972
1083
  }
973
1084
  }, [client, id]);
974
- useEffect9(() => {
1085
+ useEffect8(() => {
975
1086
  fetchSubscription();
976
1087
  }, [fetchSubscription]);
977
- const cancel = useCallback10(async (immediately = false) => {
1088
+ const cancel = useCallback11(async (immediately = false) => {
978
1089
  const updated = await client.shop.cancelSubscription(id, immediately);
979
1090
  setSubscription(updated);
980
1091
  return updated;
981
1092
  }, [client, id]);
982
- const pause = useCallback10(async () => {
1093
+ const pause = useCallback11(async () => {
983
1094
  const updated = await client.shop.pauseSubscription(id);
984
1095
  setSubscription(updated);
985
1096
  return updated;
986
1097
  }, [client, id]);
987
- const resume = useCallback10(async () => {
1098
+ const resume = useCallback11(async () => {
988
1099
  const updated = await client.shop.resumeSubscription(id);
989
1100
  setSubscription(updated);
990
1101
  return updated;
@@ -1003,7 +1114,7 @@ function useCreateSubscription() {
1003
1114
  const client = useClient();
1004
1115
  const [loading, setLoading] = useState10(false);
1005
1116
  const [error, setError] = useState10(null);
1006
- const createCheckout = useCallback10(async (planId, successUrl, cancelUrl) => {
1117
+ const createCheckout = useCallback11(async (planId, successUrl, cancelUrl) => {
1007
1118
  setLoading(true);
1008
1119
  setError(null);
1009
1120
  try {
@@ -1020,7 +1131,7 @@ function useCreateSubscription() {
1020
1131
  setLoading(false);
1021
1132
  }
1022
1133
  }, [client]);
1023
- const verifyCheckout = useCallback10(async (sessionId) => {
1134
+ const verifyCheckout = useCallback11(async (sessionId) => {
1024
1135
  setLoading(true);
1025
1136
  setError(null);
1026
1137
  try {
@@ -1034,7 +1145,7 @@ function useCreateSubscription() {
1034
1145
  setLoading(false);
1035
1146
  }
1036
1147
  }, [client]);
1037
- const createSetupIntent = useCallback10(async () => {
1148
+ const createSetupIntent = useCallback11(async () => {
1038
1149
  setLoading(true);
1039
1150
  setError(null);
1040
1151
  try {
@@ -1058,13 +1169,13 @@ function useCreateSubscription() {
1058
1169
  }
1059
1170
 
1060
1171
  // src/hooks/useDownloads.ts
1061
- import { useState as useState11, useEffect as useEffect10, useCallback as useCallback11 } from "react";
1172
+ import { useState as useState11, useEffect as useEffect9, useCallback as useCallback12 } from "react";
1062
1173
  function useDownloads() {
1063
1174
  const client = useClient();
1064
1175
  const [downloads, setDownloads] = useState11([]);
1065
1176
  const [loading, setLoading] = useState11(true);
1066
1177
  const [error, setError] = useState11(null);
1067
- const fetchDownloads = useCallback11(async () => {
1178
+ const fetchDownloads = useCallback12(async () => {
1068
1179
  if (!client.isAuthenticated()) {
1069
1180
  setDownloads([]);
1070
1181
  setLoading(false);
@@ -1081,13 +1192,13 @@ function useDownloads() {
1081
1192
  setLoading(false);
1082
1193
  }
1083
1194
  }, [client]);
1084
- useEffect10(() => {
1195
+ useEffect9(() => {
1085
1196
  fetchDownloads();
1086
1197
  }, [fetchDownloads]);
1087
- const getDownloadUrl = useCallback11((token) => {
1198
+ const getDownloadUrl = useCallback12((token) => {
1088
1199
  return client.shop.getDownloadUrl(token);
1089
1200
  }, [client]);
1090
- const getDownloadInfo = useCallback11(async (token) => {
1201
+ const getDownloadInfo = useCallback12(async (token) => {
1091
1202
  return await client.shop.getDownloadInfo(token);
1092
1203
  }, [client]);
1093
1204
  return {
@@ -1104,7 +1215,7 @@ function useOrderDownloads(orderNumber) {
1104
1215
  const [downloads, setDownloads] = useState11([]);
1105
1216
  const [loading, setLoading] = useState11(true);
1106
1217
  const [error, setError] = useState11(null);
1107
- const fetchDownloads = useCallback11(async () => {
1218
+ const fetchDownloads = useCallback12(async () => {
1108
1219
  if (!client.isAuthenticated()) {
1109
1220
  setDownloads([]);
1110
1221
  setLoading(false);
@@ -1121,13 +1232,13 @@ function useOrderDownloads(orderNumber) {
1121
1232
  setLoading(false);
1122
1233
  }
1123
1234
  }, [client, orderNumber]);
1124
- useEffect10(() => {
1235
+ useEffect9(() => {
1125
1236
  fetchDownloads();
1126
1237
  }, [fetchDownloads]);
1127
- const getDownloadUrl = useCallback11((token) => {
1238
+ const getDownloadUrl = useCallback12((token) => {
1128
1239
  return client.shop.getDownloadUrl(token);
1129
1240
  }, [client]);
1130
- const getDownloadInfo = useCallback11(async (token) => {
1241
+ const getDownloadInfo = useCallback12(async (token) => {
1131
1242
  return await client.shop.getDownloadInfo(token);
1132
1243
  }, [client]);
1133
1244
  return {
@@ -1141,7 +1252,7 @@ function useOrderDownloads(orderNumber) {
1141
1252
  }
1142
1253
 
1143
1254
  // src/hooks/useReviews.ts
1144
- import { useState as useState12, useEffect as useEffect11, useCallback as useCallback12 } from "react";
1255
+ import { useState as useState12, useEffect as useEffect10, useCallback as useCallback13 } from "react";
1145
1256
  function useProductReviews(productSlug, params) {
1146
1257
  const client = useClient();
1147
1258
  const [reviews, setReviews] = useState12([]);
@@ -1149,7 +1260,7 @@ function useProductReviews(productSlug, params) {
1149
1260
  const [meta, setMeta] = useState12(null);
1150
1261
  const [loading, setLoading] = useState12(true);
1151
1262
  const [error, setError] = useState12(null);
1152
- const fetchReviews = useCallback12(async () => {
1263
+ const fetchReviews = useCallback13(async () => {
1153
1264
  setLoading(true);
1154
1265
  setError(null);
1155
1266
  try {
@@ -1163,7 +1274,7 @@ function useProductReviews(productSlug, params) {
1163
1274
  setLoading(false);
1164
1275
  }
1165
1276
  }, [client, productSlug, params]);
1166
- useEffect11(() => {
1277
+ useEffect10(() => {
1167
1278
  fetchReviews();
1168
1279
  }, [fetchReviews]);
1169
1280
  return {
@@ -1181,7 +1292,7 @@ function useCanReview(productSlug) {
1181
1292
  const [reason, setReason] = useState12(null);
1182
1293
  const [loading, setLoading] = useState12(true);
1183
1294
  const [error, setError] = useState12(null);
1184
- const check = useCallback12(async () => {
1295
+ const check = useCallback13(async () => {
1185
1296
  setLoading(true);
1186
1297
  setError(null);
1187
1298
  try {
@@ -1196,7 +1307,7 @@ function useCanReview(productSlug) {
1196
1307
  setLoading(false);
1197
1308
  }
1198
1309
  }, [client, productSlug]);
1199
- useEffect11(() => {
1310
+ useEffect10(() => {
1200
1311
  if (client.isAuthenticated()) {
1201
1312
  check();
1202
1313
  } else {
@@ -1217,7 +1328,7 @@ function useCreateReview() {
1217
1328
  const client = useClient();
1218
1329
  const [loading, setLoading] = useState12(false);
1219
1330
  const [error, setError] = useState12(null);
1220
- const createReview = useCallback12(async (productSlug, data) => {
1331
+ const createReview = useCallback13(async (productSlug, data) => {
1221
1332
  setLoading(true);
1222
1333
  setError(null);
1223
1334
  try {
@@ -1242,7 +1353,7 @@ function useMyReviews(params) {
1242
1353
  const [meta, setMeta] = useState12(null);
1243
1354
  const [loading, setLoading] = useState12(true);
1244
1355
  const [error, setError] = useState12(null);
1245
- const fetchReviews = useCallback12(async () => {
1356
+ const fetchReviews = useCallback13(async () => {
1246
1357
  if (!client.isAuthenticated()) {
1247
1358
  setReviews([]);
1248
1359
  setLoading(false);
@@ -1260,14 +1371,14 @@ function useMyReviews(params) {
1260
1371
  setLoading(false);
1261
1372
  }
1262
1373
  }, [client, params]);
1263
- useEffect11(() => {
1374
+ useEffect10(() => {
1264
1375
  fetchReviews();
1265
1376
  }, [fetchReviews]);
1266
- const deleteReview = useCallback12(async (reviewId) => {
1377
+ const deleteReview = useCallback13(async (reviewId) => {
1267
1378
  await client.shop.deleteReview(reviewId);
1268
1379
  setReviews((prev) => prev.filter((r) => r.id !== reviewId));
1269
1380
  }, [client]);
1270
- const updateReview = useCallback12(async (reviewId, data) => {
1381
+ const updateReview = useCallback13(async (reviewId, data) => {
1271
1382
  const updated = await client.shop.updateReview(reviewId, data);
1272
1383
  setReviews((prev) => prev.map((r) => r.id === reviewId ? updated : r));
1273
1384
  return updated;
@@ -1284,7 +1395,7 @@ function useMyReviews(params) {
1284
1395
  }
1285
1396
 
1286
1397
  // src/hooks/useBlog.ts
1287
- import { useState as useState13, useEffect as useEffect12, useCallback as useCallback13 } from "react";
1398
+ import { useState as useState13, useEffect as useEffect11, useCallback as useCallback14 } from "react";
1288
1399
  function useBlog(options = {}) {
1289
1400
  const { autoFetch = true, ...params } = options;
1290
1401
  const client = useClient();
@@ -1293,7 +1404,7 @@ function useBlog(options = {}) {
1293
1404
  const [loading, setLoading] = useState13(autoFetch);
1294
1405
  const [error, setError] = useState13(null);
1295
1406
  const [currentParams, setCurrentParams] = useState13(params);
1296
- const fetchPosts = useCallback13(async (fetchParams, append = false) => {
1407
+ const fetchPosts = useCallback14(async (fetchParams, append = false) => {
1297
1408
  setLoading(true);
1298
1409
  setError(null);
1299
1410
  try {
@@ -1310,18 +1421,18 @@ function useBlog(options = {}) {
1310
1421
  setLoading(false);
1311
1422
  }
1312
1423
  }, [client]);
1313
- useEffect12(() => {
1424
+ useEffect11(() => {
1314
1425
  if (autoFetch) {
1315
1426
  fetchPosts(params);
1316
1427
  }
1317
1428
  }, []);
1318
1429
  const hasMore = meta ? meta.current_page < meta.last_page : false;
1319
- const loadMore = useCallback13(async () => {
1430
+ const loadMore = useCallback14(async () => {
1320
1431
  if (!hasMore || loading) return;
1321
1432
  const nextPage = (meta?.current_page ?? 0) + 1;
1322
1433
  await fetchPosts({ ...currentParams, page: nextPage }, true);
1323
1434
  }, [hasMore, loading, meta, currentParams, fetchPosts]);
1324
- const refresh = useCallback13(async () => {
1435
+ const refresh = useCallback14(async () => {
1325
1436
  setCurrentParams(params);
1326
1437
  await fetchPosts(params);
1327
1438
  }, [params, fetchPosts]);
@@ -1340,7 +1451,7 @@ function useBlogPost(slug) {
1340
1451
  const [post, setPost] = useState13(null);
1341
1452
  const [loading, setLoading] = useState13(true);
1342
1453
  const [error, setError] = useState13(null);
1343
- const fetchPost = useCallback13(async () => {
1454
+ const fetchPost = useCallback14(async () => {
1344
1455
  setLoading(true);
1345
1456
  setError(null);
1346
1457
  try {
@@ -1352,7 +1463,7 @@ function useBlogPost(slug) {
1352
1463
  setLoading(false);
1353
1464
  }
1354
1465
  }, [client, slug]);
1355
- useEffect12(() => {
1466
+ useEffect11(() => {
1356
1467
  fetchPost();
1357
1468
  }, [fetchPost]);
1358
1469
  return {
@@ -1367,7 +1478,7 @@ function useBlogCategories() {
1367
1478
  const [categories, setCategories] = useState13([]);
1368
1479
  const [loading, setLoading] = useState13(true);
1369
1480
  const [error, setError] = useState13(null);
1370
- const fetchCategories = useCallback13(async () => {
1481
+ const fetchCategories = useCallback14(async () => {
1371
1482
  setLoading(true);
1372
1483
  setError(null);
1373
1484
  try {
@@ -1379,7 +1490,7 @@ function useBlogCategories() {
1379
1490
  setLoading(false);
1380
1491
  }
1381
1492
  }, [client]);
1382
- useEffect12(() => {
1493
+ useEffect11(() => {
1383
1494
  fetchCategories();
1384
1495
  }, [fetchCategories]);
1385
1496
  return {
@@ -1394,7 +1505,7 @@ function useBlogTags() {
1394
1505
  const [tags, setTags] = useState13([]);
1395
1506
  const [loading, setLoading] = useState13(true);
1396
1507
  const [error, setError] = useState13(null);
1397
- const fetchTags = useCallback13(async () => {
1508
+ const fetchTags = useCallback14(async () => {
1398
1509
  setLoading(true);
1399
1510
  setError(null);
1400
1511
  try {
@@ -1406,7 +1517,7 @@ function useBlogTags() {
1406
1517
  setLoading(false);
1407
1518
  }
1408
1519
  }, [client]);
1409
- useEffect12(() => {
1520
+ useEffect11(() => {
1410
1521
  fetchTags();
1411
1522
  }, [fetchTags]);
1412
1523
  return {
@@ -1421,7 +1532,7 @@ function useFeaturedBlog(limit = 5) {
1421
1532
  const [posts, setPosts] = useState13([]);
1422
1533
  const [loading, setLoading] = useState13(true);
1423
1534
  const [error, setError] = useState13(null);
1424
- const fetchPosts = useCallback13(async () => {
1535
+ const fetchPosts = useCallback14(async () => {
1425
1536
  setLoading(true);
1426
1537
  setError(null);
1427
1538
  try {
@@ -1433,7 +1544,7 @@ function useFeaturedBlog(limit = 5) {
1433
1544
  setLoading(false);
1434
1545
  }
1435
1546
  }, [client, limit]);
1436
- useEffect12(() => {
1547
+ useEffect11(() => {
1437
1548
  fetchPosts();
1438
1549
  }, [fetchPosts]);
1439
1550
  return {
@@ -1449,7 +1560,7 @@ function useBlogSearch() {
1449
1560
  const [meta, setMeta] = useState13(null);
1450
1561
  const [loading, setLoading] = useState13(false);
1451
1562
  const [error, setError] = useState13(null);
1452
- const search = useCallback13(async (query) => {
1563
+ const search = useCallback14(async (query) => {
1453
1564
  setLoading(true);
1454
1565
  setError(null);
1455
1566
  try {
@@ -1472,13 +1583,13 @@ function useBlogSearch() {
1472
1583
  }
1473
1584
 
1474
1585
  // src/hooks/useBoards.ts
1475
- import { useState as useState14, useEffect as useEffect13, useCallback as useCallback14 } from "react";
1586
+ import { useState as useState14, useEffect as useEffect12, useCallback as useCallback15 } from "react";
1476
1587
  function useBoards(params) {
1477
1588
  const client = useClient();
1478
1589
  const [boards, setBoards] = useState14([]);
1479
1590
  const [loading, setLoading] = useState14(true);
1480
1591
  const [error, setError] = useState14(null);
1481
- const fetchBoards = useCallback14(async () => {
1592
+ const fetchBoards = useCallback15(async () => {
1482
1593
  setLoading(true);
1483
1594
  setError(null);
1484
1595
  try {
@@ -1490,7 +1601,7 @@ function useBoards(params) {
1490
1601
  setLoading(false);
1491
1602
  }
1492
1603
  }, [client, params]);
1493
- useEffect13(() => {
1604
+ useEffect12(() => {
1494
1605
  fetchBoards();
1495
1606
  }, [fetchBoards]);
1496
1607
  return {
@@ -1505,7 +1616,7 @@ function useBoard(slug) {
1505
1616
  const [board, setBoard] = useState14(null);
1506
1617
  const [loading, setLoading] = useState14(true);
1507
1618
  const [error, setError] = useState14(null);
1508
- const fetchBoard = useCallback14(async () => {
1619
+ const fetchBoard = useCallback15(async () => {
1509
1620
  setLoading(true);
1510
1621
  setError(null);
1511
1622
  try {
@@ -1517,7 +1628,7 @@ function useBoard(slug) {
1517
1628
  setLoading(false);
1518
1629
  }
1519
1630
  }, [client, slug]);
1520
- useEffect13(() => {
1631
+ useEffect12(() => {
1521
1632
  fetchBoard();
1522
1633
  }, [fetchBoard]);
1523
1634
  return {
@@ -1534,7 +1645,7 @@ function useBoardPosts(boardSlug, params) {
1534
1645
  const [loading, setLoading] = useState14(true);
1535
1646
  const [error, setError] = useState14(null);
1536
1647
  const [currentParams, setCurrentParams] = useState14(params);
1537
- const fetchPosts = useCallback14(async (fetchParams, append = false) => {
1648
+ const fetchPosts = useCallback15(async (fetchParams, append = false) => {
1538
1649
  setLoading(true);
1539
1650
  setError(null);
1540
1651
  try {
@@ -1551,16 +1662,16 @@ function useBoardPosts(boardSlug, params) {
1551
1662
  setLoading(false);
1552
1663
  }
1553
1664
  }, [client, boardSlug]);
1554
- useEffect13(() => {
1665
+ useEffect12(() => {
1555
1666
  fetchPosts(params);
1556
1667
  }, []);
1557
1668
  const hasMore = meta ? meta.current_page < meta.last_page : false;
1558
- const loadMore = useCallback14(async () => {
1669
+ const loadMore = useCallback15(async () => {
1559
1670
  if (!hasMore || loading) return;
1560
1671
  const nextPage = (meta?.current_page ?? 0) + 1;
1561
1672
  await fetchPosts({ ...currentParams, page: nextPage }, true);
1562
1673
  }, [hasMore, loading, meta, currentParams, fetchPosts]);
1563
- const refresh = useCallback14(async () => {
1674
+ const refresh = useCallback15(async () => {
1564
1675
  setCurrentParams(params);
1565
1676
  await fetchPosts(params);
1566
1677
  }, [params, fetchPosts]);
@@ -1579,7 +1690,7 @@ function useBoardPost(postId) {
1579
1690
  const [post, setPost] = useState14(null);
1580
1691
  const [loading, setLoading] = useState14(true);
1581
1692
  const [error, setError] = useState14(null);
1582
- const fetchPost = useCallback14(async () => {
1693
+ const fetchPost = useCallback15(async () => {
1583
1694
  setLoading(true);
1584
1695
  setError(null);
1585
1696
  try {
@@ -1591,7 +1702,7 @@ function useBoardPost(postId) {
1591
1702
  setLoading(false);
1592
1703
  }
1593
1704
  }, [client, postId]);
1594
- useEffect13(() => {
1705
+ useEffect12(() => {
1595
1706
  fetchPost();
1596
1707
  }, [fetchPost]);
1597
1708
  return {
@@ -1605,7 +1716,7 @@ function useCreateBoardPost() {
1605
1716
  const client = useClient();
1606
1717
  const [loading, setLoading] = useState14(false);
1607
1718
  const [error, setError] = useState14(null);
1608
- const createPost = useCallback14(async (data) => {
1719
+ const createPost = useCallback15(async (data) => {
1609
1720
  setLoading(true);
1610
1721
  setError(null);
1611
1722
  try {
@@ -1626,7 +1737,7 @@ function useCreateBoardPost() {
1626
1737
  }
1627
1738
 
1628
1739
  // src/hooks/useComments.ts
1629
- import { useState as useState15, useEffect as useEffect14, useCallback as useCallback15 } from "react";
1740
+ import { useState as useState15, useEffect as useEffect13, useCallback as useCallback16 } from "react";
1630
1741
  function useComments(options) {
1631
1742
  const { type, target, page, per_page } = options;
1632
1743
  const client = useClient();
@@ -1634,7 +1745,7 @@ function useComments(options) {
1634
1745
  const [meta, setMeta] = useState15(null);
1635
1746
  const [loading, setLoading] = useState15(true);
1636
1747
  const [error, setError] = useState15(null);
1637
- const fetchComments = useCallback15(async () => {
1748
+ const fetchComments = useCallback16(async () => {
1638
1749
  setLoading(true);
1639
1750
  setError(null);
1640
1751
  try {
@@ -1659,10 +1770,10 @@ function useComments(options) {
1659
1770
  setLoading(false);
1660
1771
  }
1661
1772
  }, [client, type, target, page, per_page]);
1662
- useEffect14(() => {
1773
+ useEffect13(() => {
1663
1774
  fetchComments();
1664
1775
  }, [fetchComments]);
1665
- const createComment = useCallback15(async (data) => {
1776
+ const createComment = useCallback16(async (data) => {
1666
1777
  let response;
1667
1778
  switch (type) {
1668
1779
  case "board":
@@ -1678,16 +1789,16 @@ function useComments(options) {
1678
1789
  await fetchComments();
1679
1790
  return response.data;
1680
1791
  }, [client, type, target, fetchComments]);
1681
- const updateComment = useCallback15(async (commentId, content) => {
1792
+ const updateComment = useCallback16(async (commentId, content) => {
1682
1793
  const response = await client.comments.update(commentId, { content });
1683
1794
  setComments((prev) => prev.map((c) => c.id === commentId ? response.data : c));
1684
1795
  return response.data;
1685
1796
  }, [client]);
1686
- const deleteComment = useCallback15(async (commentId, password) => {
1797
+ const deleteComment = useCallback16(async (commentId, password) => {
1687
1798
  await client.comments.delete(commentId, password ? { password } : void 0);
1688
1799
  setComments((prev) => prev.filter((c) => c.id !== commentId));
1689
1800
  }, [client]);
1690
- const likeComment = useCallback15(async (commentId) => {
1801
+ const likeComment = useCallback16(async (commentId) => {
1691
1802
  const response = await client.comments.like(commentId);
1692
1803
  setComments((prev) => prev.map(
1693
1804
  (c) => c.id === commentId ? { ...c, likes: response.data.likes } : c
@@ -1708,7 +1819,7 @@ function useComments(options) {
1708
1819
  }
1709
1820
 
1710
1821
  // src/hooks/useForms.ts
1711
- import { useState as useState16, useEffect as useEffect15, useCallback as useCallback16 } from "react";
1822
+ import { useState as useState16, useEffect as useEffect14, useCallback as useCallback17 } from "react";
1712
1823
  function useForm(formSlug) {
1713
1824
  const client = useClient();
1714
1825
  const [form, setForm] = useState16(null);
@@ -1716,7 +1827,7 @@ function useForm(formSlug) {
1716
1827
  const [error, setError] = useState16(null);
1717
1828
  const [submitting, setSubmitting] = useState16(false);
1718
1829
  const [submitted, setSubmitted] = useState16(false);
1719
- const fetchForm = useCallback16(async () => {
1830
+ const fetchForm = useCallback17(async () => {
1720
1831
  setLoading(true);
1721
1832
  setError(null);
1722
1833
  try {
@@ -1728,10 +1839,10 @@ function useForm(formSlug) {
1728
1839
  setLoading(false);
1729
1840
  }
1730
1841
  }, [client, formSlug]);
1731
- useEffect15(() => {
1842
+ useEffect14(() => {
1732
1843
  fetchForm();
1733
1844
  }, [fetchForm]);
1734
- const submit = useCallback16(async (data) => {
1845
+ const submit = useCallback17(async (data) => {
1735
1846
  setSubmitting(true);
1736
1847
  setError(null);
1737
1848
  try {
@@ -1746,7 +1857,7 @@ function useForm(formSlug) {
1746
1857
  setSubmitting(false);
1747
1858
  }
1748
1859
  }, [client, formSlug]);
1749
- const reset = useCallback16(() => {
1860
+ const reset = useCallback17(() => {
1750
1861
  setSubmitted(false);
1751
1862
  setError(null);
1752
1863
  }, []);
@@ -1762,13 +1873,13 @@ function useForm(formSlug) {
1762
1873
  }
1763
1874
 
1764
1875
  // src/hooks/useReservation.ts
1765
- import { useState as useState17, useEffect as useEffect16, useCallback as useCallback17 } from "react";
1876
+ import { useState as useState17, useEffect as useEffect15, useCallback as useCallback18 } from "react";
1766
1877
  function useReservationServices() {
1767
1878
  const client = useClient();
1768
1879
  const [services, setServices] = useState17([]);
1769
1880
  const [loading, setLoading] = useState17(true);
1770
1881
  const [error, setError] = useState17(null);
1771
- const fetchServices = useCallback17(async () => {
1882
+ const fetchServices = useCallback18(async () => {
1772
1883
  setLoading(true);
1773
1884
  setError(null);
1774
1885
  try {
@@ -1780,7 +1891,7 @@ function useReservationServices() {
1780
1891
  setLoading(false);
1781
1892
  }
1782
1893
  }, [client]);
1783
- useEffect16(() => {
1894
+ useEffect15(() => {
1784
1895
  fetchServices();
1785
1896
  }, [fetchServices]);
1786
1897
  return {
@@ -1795,7 +1906,7 @@ function useReservationStaffs() {
1795
1906
  const [staffs, setStaffs] = useState17([]);
1796
1907
  const [loading, setLoading] = useState17(true);
1797
1908
  const [error, setError] = useState17(null);
1798
- const fetchStaffs = useCallback17(async () => {
1909
+ const fetchStaffs = useCallback18(async () => {
1799
1910
  setLoading(true);
1800
1911
  setError(null);
1801
1912
  try {
@@ -1807,7 +1918,7 @@ function useReservationStaffs() {
1807
1918
  setLoading(false);
1808
1919
  }
1809
1920
  }, [client]);
1810
- useEffect16(() => {
1921
+ useEffect15(() => {
1811
1922
  fetchStaffs();
1812
1923
  }, [fetchStaffs]);
1813
1924
  return {
@@ -1822,7 +1933,7 @@ function useAvailableSlots(serviceId, date, staffId) {
1822
1933
  const [slots, setSlots] = useState17([]);
1823
1934
  const [loading, setLoading] = useState17(true);
1824
1935
  const [error, setError] = useState17(null);
1825
- const fetchSlots = useCallback17(async () => {
1936
+ const fetchSlots = useCallback18(async () => {
1826
1937
  if (!serviceId || !date) {
1827
1938
  setSlots([]);
1828
1939
  setLoading(false);
@@ -1843,7 +1954,7 @@ function useAvailableSlots(serviceId, date, staffId) {
1843
1954
  setLoading(false);
1844
1955
  }
1845
1956
  }, [client, serviceId, date, staffId]);
1846
- useEffect16(() => {
1957
+ useEffect15(() => {
1847
1958
  fetchSlots();
1848
1959
  }, [fetchSlots]);
1849
1960
  return {
@@ -1859,7 +1970,7 @@ function useMyReservations(params) {
1859
1970
  const [meta, setMeta] = useState17(null);
1860
1971
  const [loading, setLoading] = useState17(true);
1861
1972
  const [error, setError] = useState17(null);
1862
- const fetchReservations = useCallback17(async () => {
1973
+ const fetchReservations = useCallback18(async () => {
1863
1974
  if (!client.isAuthenticated()) {
1864
1975
  setReservations([]);
1865
1976
  setLoading(false);
@@ -1877,7 +1988,7 @@ function useMyReservations(params) {
1877
1988
  setLoading(false);
1878
1989
  }
1879
1990
  }, [client, params]);
1880
- useEffect16(() => {
1991
+ useEffect15(() => {
1881
1992
  fetchReservations();
1882
1993
  }, [fetchReservations]);
1883
1994
  return {
@@ -1892,7 +2003,7 @@ function useCreateReservation() {
1892
2003
  const client = useClient();
1893
2004
  const [loading, setLoading] = useState17(false);
1894
2005
  const [error, setError] = useState17(null);
1895
- const createReservation = useCallback17(async (data) => {
2006
+ const createReservation = useCallback18(async (data) => {
1896
2007
  setLoading(true);
1897
2008
  setError(null);
1898
2009
  try {
@@ -1917,7 +2028,7 @@ function useReservationSettings() {
1917
2028
  const [settings, setSettings] = useState17(null);
1918
2029
  const [loading, setLoading] = useState17(true);
1919
2030
  const [error, setError] = useState17(null);
1920
- const fetchSettings = useCallback17(async () => {
2031
+ const fetchSettings = useCallback18(async () => {
1921
2032
  setLoading(true);
1922
2033
  setError(null);
1923
2034
  try {
@@ -1929,7 +2040,7 @@ function useReservationSettings() {
1929
2040
  setLoading(false);
1930
2041
  }
1931
2042
  }, [client]);
1932
- useEffect16(() => {
2043
+ useEffect15(() => {
1933
2044
  fetchSettings();
1934
2045
  }, [fetchSettings]);
1935
2046
  return {
@@ -1941,7 +2052,7 @@ function useReservationSettings() {
1941
2052
  }
1942
2053
 
1943
2054
  // src/hooks/useMedia.ts
1944
- import { useState as useState18, useEffect as useEffect17, useCallback as useCallback18 } from "react";
2055
+ import { useState as useState18, useEffect as useEffect16, useCallback as useCallback19 } from "react";
1945
2056
  function useMedia(options = {}) {
1946
2057
  const { type, page, per_page, autoFetch = true } = options;
1947
2058
  const client = useClient();
@@ -1951,7 +2062,7 @@ function useMedia(options = {}) {
1951
2062
  const [error, setError] = useState18(null);
1952
2063
  const [uploading, setUploading] = useState18(false);
1953
2064
  const [uploadProgress, setUploadProgress] = useState18(0);
1954
- const fetchMedia = useCallback18(async () => {
2065
+ const fetchMedia = useCallback19(async () => {
1955
2066
  if (!client.isAuthenticated()) {
1956
2067
  setFiles([]);
1957
2068
  setLoading(false);
@@ -1969,12 +2080,12 @@ function useMedia(options = {}) {
1969
2080
  setLoading(false);
1970
2081
  }
1971
2082
  }, [client, type, page, per_page]);
1972
- useEffect17(() => {
2083
+ useEffect16(() => {
1973
2084
  if (autoFetch) {
1974
2085
  fetchMedia();
1975
2086
  }
1976
2087
  }, [autoFetch, fetchMedia]);
1977
- const upload = useCallback18(async (file) => {
2088
+ const upload = useCallback19(async (file) => {
1978
2089
  setUploading(true);
1979
2090
  setUploadProgress(0);
1980
2091
  setError(null);
@@ -1991,7 +2102,7 @@ function useMedia(options = {}) {
1991
2102
  setUploading(false);
1992
2103
  }
1993
2104
  }, [client]);
1994
- const uploadMultiple = useCallback18(async (filesToUpload) => {
2105
+ const uploadMultiple = useCallback19(async (filesToUpload) => {
1995
2106
  setUploading(true);
1996
2107
  setUploadProgress(0);
1997
2108
  setError(null);
@@ -2012,7 +2123,7 @@ function useMedia(options = {}) {
2012
2123
  setUploading(false);
2013
2124
  }
2014
2125
  }, [client]);
2015
- const deleteFile = useCallback18(async (mediaId) => {
2126
+ const deleteFile = useCallback19(async (mediaId) => {
2016
2127
  await client.media.delete(mediaId);
2017
2128
  setFiles((prev) => prev.filter((f) => f.id !== mediaId));
2018
2129
  }, [client]);
@@ -2031,13 +2142,13 @@ function useMedia(options = {}) {
2031
2142
  }
2032
2143
 
2033
2144
  // src/hooks/useEntities.ts
2034
- import { useState as useState19, useEffect as useEffect18, useCallback as useCallback19, useMemo as useMemo2 } from "react";
2145
+ import { useState as useState19, useEffect as useEffect17, useCallback as useCallback20, useMemo as useMemo3 } from "react";
2035
2146
  function useEntities() {
2036
2147
  const client = useClient();
2037
2148
  const [entities, setEntities] = useState19([]);
2038
2149
  const [loading, setLoading] = useState19(true);
2039
2150
  const [error, setError] = useState19(null);
2040
- const fetchEntities = useCallback19(async () => {
2151
+ const fetchEntities = useCallback20(async () => {
2041
2152
  setLoading(true);
2042
2153
  setError(null);
2043
2154
  try {
@@ -2049,7 +2160,7 @@ function useEntities() {
2049
2160
  setLoading(false);
2050
2161
  }
2051
2162
  }, [client]);
2052
- useEffect18(() => {
2163
+ useEffect17(() => {
2053
2164
  fetchEntities();
2054
2165
  }, [fetchEntities]);
2055
2166
  return {
@@ -2064,7 +2175,7 @@ function useEntity(slug) {
2064
2175
  const [entity, setEntity] = useState19(null);
2065
2176
  const [loading, setLoading] = useState19(true);
2066
2177
  const [error, setError] = useState19(null);
2067
- const fetchEntity = useCallback19(async () => {
2178
+ const fetchEntity = useCallback20(async () => {
2068
2179
  setLoading(true);
2069
2180
  setError(null);
2070
2181
  try {
@@ -2076,7 +2187,7 @@ function useEntity(slug) {
2076
2187
  setLoading(false);
2077
2188
  }
2078
2189
  }, [client, slug]);
2079
- useEffect18(() => {
2190
+ useEffect17(() => {
2080
2191
  fetchEntity();
2081
2192
  }, [fetchEntity]);
2082
2193
  return {
@@ -2093,7 +2204,7 @@ function useEntityRecords(slug, params) {
2093
2204
  const [loading, setLoading] = useState19(true);
2094
2205
  const [error, setError] = useState19(null);
2095
2206
  const [currentParams, setCurrentParams] = useState19(params);
2096
- const fetchRecords = useCallback19(async (fetchParams, append = false) => {
2207
+ const fetchRecords = useCallback20(async (fetchParams, append = false) => {
2097
2208
  setLoading(true);
2098
2209
  setError(null);
2099
2210
  try {
@@ -2110,30 +2221,30 @@ function useEntityRecords(slug, params) {
2110
2221
  setLoading(false);
2111
2222
  }
2112
2223
  }, [client, slug]);
2113
- useEffect18(() => {
2224
+ useEffect17(() => {
2114
2225
  fetchRecords(params);
2115
2226
  }, []);
2116
2227
  const hasMore = meta ? meta.current_page < meta.last_page : false;
2117
- const loadMore = useCallback19(async () => {
2228
+ const loadMore = useCallback20(async () => {
2118
2229
  if (!hasMore || loading) return;
2119
2230
  const nextPage = (meta?.current_page ?? 0) + 1;
2120
2231
  await fetchRecords({ ...currentParams, page: nextPage }, true);
2121
2232
  }, [hasMore, loading, meta, currentParams, fetchRecords]);
2122
- const createRecord = useCallback19(async (data) => {
2233
+ const createRecord = useCallback20(async (data) => {
2123
2234
  const record = await client.entities.createRecord(slug, data);
2124
2235
  setRecords((prev) => [record, ...prev]);
2125
2236
  return record;
2126
2237
  }, [client, slug]);
2127
- const updateRecord = useCallback19(async (id, data) => {
2238
+ const updateRecord = useCallback20(async (id, data) => {
2128
2239
  const record = await client.entities.updateRecord(slug, id, data);
2129
2240
  setRecords((prev) => prev.map((r) => r.id === id ? record : r));
2130
2241
  return record;
2131
2242
  }, [client, slug]);
2132
- const deleteRecord = useCallback19(async (id) => {
2243
+ const deleteRecord = useCallback20(async (id) => {
2133
2244
  await client.entities.deleteRecord(slug, id);
2134
2245
  setRecords((prev) => prev.filter((r) => r.id !== id));
2135
2246
  }, [client, slug]);
2136
- const refresh = useCallback19(async () => {
2247
+ const refresh = useCallback20(async () => {
2137
2248
  setCurrentParams(params);
2138
2249
  await fetchRecords(params);
2139
2250
  }, [params, fetchRecords]);
@@ -2155,7 +2266,7 @@ function useEntityRecord(slug, id) {
2155
2266
  const [record, setRecord] = useState19(null);
2156
2267
  const [loading, setLoading] = useState19(true);
2157
2268
  const [error, setError] = useState19(null);
2158
- const fetchRecord = useCallback19(async () => {
2269
+ const fetchRecord = useCallback20(async () => {
2159
2270
  setLoading(true);
2160
2271
  setError(null);
2161
2272
  try {
@@ -2167,10 +2278,10 @@ function useEntityRecord(slug, id) {
2167
2278
  setLoading(false);
2168
2279
  }
2169
2280
  }, [client, slug, id]);
2170
- useEffect18(() => {
2281
+ useEffect17(() => {
2171
2282
  fetchRecord();
2172
2283
  }, [fetchRecord]);
2173
- const update = useCallback19(async (data) => {
2284
+ const update = useCallback20(async (data) => {
2174
2285
  const updated = await client.entities.updateRecord(slug, id, data);
2175
2286
  setRecord(updated);
2176
2287
  return updated;
@@ -2185,7 +2296,7 @@ function useEntityRecord(slug, id) {
2185
2296
  }
2186
2297
  function useTypedEntity(slug) {
2187
2298
  const client = useClient();
2188
- return useMemo2(() => ({
2299
+ return useMemo3(() => ({
2189
2300
  useRecords: (params) => {
2190
2301
  const result = useEntityRecords(slug, params);
2191
2302
  return {
@@ -2238,6 +2349,7 @@ export {
2238
2349
  useCreateReservation,
2239
2350
  useCreateReview,
2240
2351
  useCreateSubscription,
2352
+ useCurrency,
2241
2353
  useDiffsome,
2242
2354
  useDigitalProducts,
2243
2355
  useDownloads,
@@ -2262,6 +2374,7 @@ export {
2262
2374
  useReservationServices,
2263
2375
  useReservationSettings,
2264
2376
  useReservationStaffs,
2377
+ useSite,
2265
2378
  useSocialAuth,
2266
2379
  useStripePayment,
2267
2380
  useSubscription,