@behio/storefront-sdk 0.1.10 → 0.2.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/dist/react.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkQOEYSUF2js = require('./chunk-QOEYSUF2.js');
3
+ var _chunkR7H7E5BXjs = require('./chunk-R7H7E5BX.js');
4
4
 
5
5
  // src/react/provider.tsx
6
6
  var _react = require('react');
@@ -114,7 +114,7 @@ function BehioProvider({
114
114
  const storageAdapter = _react.useMemo.call(void 0, () => resolveStorage(storageOption), [storageOption]);
115
115
  const clientRef = _react.useRef.call(void 0, null);
116
116
  if (!clientRef.current) {
117
- clientRef.current = new (0, _chunkQOEYSUF2js.BehioStorefront)({
117
+ clientRef.current = new (0, _chunkR7H7E5BXjs.BehioStorefront)({
118
118
  apiKey,
119
119
  baseUrl,
120
120
  locale,
@@ -173,11 +173,11 @@ function useProducts(query) {
173
173
  enabled: enabled !== false
174
174
  });
175
175
  const items = _react.useMemo.call(void 0,
176
- () => _nullishCoalesce(_optionalChain([infinite, 'access', _ => _.data, 'optionalAccess', _2 => _2.pages, 'access', _3 => _3.flatMap, 'call', _4 => _4((p) => p.items)]), () => ( [])),
176
+ () => _nullishCoalesce(_optionalChain([infinite, 'access', _2 => _2.data, 'optionalAccess', _3 => _3.pages, 'access', _4 => _4.flatMap, 'call', _5 => _5((p) => p.items)]), () => ( [])),
177
177
  [infinite.data]
178
178
  );
179
- const lastPage = _optionalChain([infinite, 'access', _5 => _5.data, 'optionalAccess', _6 => _6.pages, 'access', _7 => _7[infinite.data.pages.length - 1]]);
180
- const firstPage = _optionalChain([infinite, 'access', _8 => _8.data, 'optionalAccess', _9 => _9.pages, 'access', _10 => _10[0]]);
179
+ const lastPage = _optionalChain([infinite, 'access', _6 => _6.data, 'optionalAccess', _7 => _7.pages, 'access', _8 => _8[infinite.data.pages.length - 1]]);
180
+ const firstPage = _optionalChain([infinite, 'access', _9 => _9.data, 'optionalAccess', _10 => _10.pages, 'access', _11 => _11[0]]);
181
181
  const loadMore = _react.useCallback.call(void 0, () => {
182
182
  if (infinite.hasNextPage && !infinite.isFetchingNextPage) {
183
183
  return infinite.fetchNextPage();
@@ -194,10 +194,10 @@ function useProducts(query) {
194
194
  /** Raw React Query data with all pages */
195
195
  data: infinite.data,
196
196
  /** Last loaded page meta */
197
- total: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _11 => _11.total]), () => ( 0)),
198
- totalPages: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _12 => _12.totalPages]), () => ( 0)),
199
- currentPage: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _13 => _13.page]), () => ( page)),
200
- limit: _nullishCoalesce(_nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _14 => _14.limit]), () => ( limit)), () => ( 20)),
197
+ total: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _12 => _12.total]), () => ( 0)),
198
+ totalPages: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _13 => _13.totalPages]), () => ( 0)),
199
+ currentPage: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _14 => _14.page]), () => ( page)),
200
+ limit: _nullishCoalesce(_nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _15 => _15.limit]), () => ( limit)), () => ( 20)),
201
201
  // --- Pagination controls ---
202
202
  /** Current page (manual pagination) */
203
203
  page,
@@ -229,11 +229,11 @@ function useProduct(slug, options) {
229
229
  return _reactquery.useQuery.call(void 0, {
230
230
  queryKey: ["behio", "product", slug],
231
231
  queryFn: () => client.catalog.getProduct(slug, {
232
- locale: _optionalChain([options, 'optionalAccess', _15 => _15.locale]),
233
- currency: _optionalChain([options, 'optionalAccess', _16 => _16.currency])
232
+ locale: _optionalChain([options, 'optionalAccess', _16 => _16.locale]),
233
+ currency: _optionalChain([options, 'optionalAccess', _17 => _17.currency])
234
234
  }),
235
- initialData: _optionalChain([options, 'optionalAccess', _17 => _17.initialData]),
236
- enabled: _optionalChain([options, 'optionalAccess', _18 => _18.enabled]) !== false && !!slug
235
+ initialData: _optionalChain([options, 'optionalAccess', _18 => _18.initialData]),
236
+ enabled: _optionalChain([options, 'optionalAccess', _19 => _19.enabled]) !== false && !!slug
237
237
  });
238
238
  }
239
239
 
@@ -247,15 +247,15 @@ function useCategories(locale, options) {
247
247
  const result = await client.catalog.getCategories(locale);
248
248
  return result.categories;
249
249
  },
250
- enabled: _optionalChain([options, 'optionalAccess', _19 => _19.enabled]) !== false
250
+ enabled: _optionalChain([options, 'optionalAccess', _20 => _20.enabled]) !== false
251
251
  });
252
252
  }
253
253
  function useCategory(slug, options) {
254
254
  const { client } = useBehio();
255
255
  return _reactquery.useQuery.call(void 0, {
256
- queryKey: ["behio", "category", slug, _optionalChain([options, 'optionalAccess', _20 => _20.locale])],
257
- queryFn: () => client.catalog.getCategory(slug, _optionalChain([options, 'optionalAccess', _21 => _21.locale])),
258
- enabled: _optionalChain([options, 'optionalAccess', _22 => _22.enabled]) !== false && !!slug
256
+ queryKey: ["behio", "category", slug, _optionalChain([options, 'optionalAccess', _21 => _21.locale])],
257
+ queryFn: () => client.catalog.getCategory(slug, _optionalChain([options, 'optionalAccess', _22 => _22.locale])),
258
+ enabled: _optionalChain([options, 'optionalAccess', _23 => _23.enabled]) !== false && !!slug
259
259
  });
260
260
  }
261
261
 
@@ -269,7 +269,7 @@ function useLabels(locale, options) {
269
269
  const result = await client.catalog.getLabels(locale);
270
270
  return result.labels;
271
271
  },
272
- enabled: _optionalChain([options, 'optionalAccess', _23 => _23.enabled]) !== false
272
+ enabled: _optionalChain([options, 'optionalAccess', _24 => _24.enabled]) !== false
273
273
  });
274
274
  }
275
275
 
@@ -278,13 +278,13 @@ function useLabels(locale, options) {
278
278
  function useFeatured(options) {
279
279
  const { client } = useBehio();
280
280
  return _reactquery.useQuery.call(void 0, {
281
- queryKey: ["behio", "featured", _optionalChain([options, 'optionalAccess', _24 => _24.locale]), _optionalChain([options, 'optionalAccess', _25 => _25.currency])],
281
+ queryKey: ["behio", "featured", _optionalChain([options, 'optionalAccess', _25 => _25.locale]), _optionalChain([options, 'optionalAccess', _26 => _26.currency])],
282
282
  queryFn: () => client.catalog.getFeatured({
283
- locale: _optionalChain([options, 'optionalAccess', _26 => _26.locale]),
284
- currency: _optionalChain([options, 'optionalAccess', _27 => _27.currency])
283
+ locale: _optionalChain([options, 'optionalAccess', _27 => _27.locale]),
284
+ currency: _optionalChain([options, 'optionalAccess', _28 => _28.currency])
285
285
  }),
286
- initialData: _optionalChain([options, 'optionalAccess', _28 => _28.initialData]),
287
- enabled: _optionalChain([options, 'optionalAccess', _29 => _29.enabled]) !== false
286
+ initialData: _optionalChain([options, 'optionalAccess', _29 => _29.initialData]),
287
+ enabled: _optionalChain([options, 'optionalAccess', _30 => _30.enabled]) !== false
288
288
  });
289
289
  }
290
290
 
@@ -298,7 +298,7 @@ function useFilters(options) {
298
298
  const result = await client.catalog.getFilters();
299
299
  return result.filters;
300
300
  },
301
- enabled: _optionalChain([options, 'optionalAccess', _30 => _30.enabled]) !== false
301
+ enabled: _optionalChain([options, 'optionalAccess', _31 => _31.enabled]) !== false
302
302
  });
303
303
  }
304
304
 
@@ -307,7 +307,7 @@ function useFilters(options) {
307
307
 
308
308
  function useSearch(query, options) {
309
309
  const { client } = useBehio();
310
- const debounceMs = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _31 => _31.debounceMs]), () => ( 300));
310
+ const debounceMs = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _32 => _32.debounceMs]), () => ( 300));
311
311
  const [debouncedQuery, setDebouncedQuery] = _react.useState.call(void 0, query);
312
312
  _react.useEffect.call(void 0, () => {
313
313
  if (debounceMs <= 0) {
@@ -318,12 +318,12 @@ function useSearch(query, options) {
318
318
  return () => clearTimeout(timer);
319
319
  }, [query, debounceMs]);
320
320
  return _reactquery.useQuery.call(void 0, {
321
- queryKey: ["behio", "search", debouncedQuery, _optionalChain([options, 'optionalAccess', _32 => _32.page]), _optionalChain([options, 'optionalAccess', _33 => _33.limit])],
321
+ queryKey: ["behio", "search", debouncedQuery, _optionalChain([options, 'optionalAccess', _33 => _33.page]), _optionalChain([options, 'optionalAccess', _34 => _34.limit])],
322
322
  queryFn: () => client.catalog.search(debouncedQuery, {
323
- page: _optionalChain([options, 'optionalAccess', _34 => _34.page]),
324
- limit: _optionalChain([options, 'optionalAccess', _35 => _35.limit])
323
+ page: _optionalChain([options, 'optionalAccess', _35 => _35.page]),
324
+ limit: _optionalChain([options, 'optionalAccess', _36 => _36.limit])
325
325
  }),
326
- enabled: _optionalChain([options, 'optionalAccess', _36 => _36.enabled]) !== false && debouncedQuery.length > 0
326
+ enabled: _optionalChain([options, 'optionalAccess', _37 => _37.enabled]) !== false && debouncedQuery.length > 0
327
327
  });
328
328
  }
329
329
 
@@ -342,7 +342,7 @@ function useCart(options) {
342
342
  queryKey: [...CART_KEY],
343
343
  queryFn: () => client.cart.get(),
344
344
  // Only fetch if we have a cart session or are logged in
345
- enabled: _optionalChain([options, 'optionalAccess', _37 => _37.enabled]) !== false && (!!client.getCartSession() || !!client.getAccessToken())
345
+ enabled: _optionalChain([options, 'optionalAccess', _38 => _38.enabled]) !== false && (!!client.getCartSession() || !!client.getAccessToken())
346
346
  });
347
347
  const addMutation = _reactquery.useMutation.call(void 0, {
348
348
  mutationFn: async ({ productId, quantity }) => {
@@ -375,7 +375,7 @@ function useCart(options) {
375
375
  return { previous };
376
376
  },
377
377
  onError: (_err, _vars, context) => {
378
- if (_optionalChain([context, 'optionalAccess', _38 => _38.previous])) {
378
+ if (_optionalChain([context, 'optionalAccess', _39 => _39.previous])) {
379
379
  queryClient.setQueryData([...CART_KEY], context.previous);
380
380
  }
381
381
  },
@@ -401,7 +401,7 @@ function useCart(options) {
401
401
  return { previous };
402
402
  },
403
403
  onError: (_err, _vars, context) => {
404
- if (_optionalChain([context, 'optionalAccess', _39 => _39.previous])) {
404
+ if (_optionalChain([context, 'optionalAccess', _40 => _40.previous])) {
405
405
  queryClient.setQueryData([...CART_KEY], context.previous);
406
406
  }
407
407
  },
@@ -478,7 +478,7 @@ function useCart(options) {
478
478
  removeDiscount,
479
479
  merge,
480
480
  // Computed
481
- itemCount: _nullishCoalesce(_optionalChain([cart, 'optionalAccess', _40 => _40.itemCount]), () => ( 0)),
481
+ itemCount: _nullishCoalesce(_optionalChain([cart, 'optionalAccess', _41 => _41.itemCount]), () => ( 0)),
482
482
  isEmpty: !cart || cart.items.length === 0,
483
483
  // Mutation states
484
484
  isAdding: addMutation.isPending,
@@ -497,10 +497,10 @@ function useCartCount(options) {
497
497
  const { data } = _reactquery.useQuery.call(void 0, {
498
498
  queryKey: [...CART_KEY2],
499
499
  queryFn: () => client.cart.get(),
500
- enabled: _optionalChain([options, 'optionalAccess', _41 => _41.enabled]) !== false && !cachedCart && (!!client.getCartSession() || !!client.getAccessToken())
500
+ enabled: _optionalChain([options, 'optionalAccess', _42 => _42.enabled]) !== false && !cachedCart && (!!client.getCartSession() || !!client.getAccessToken())
501
501
  });
502
502
  const cart = _nullishCoalesce(cachedCart, () => ( data));
503
- return _nullishCoalesce(_optionalChain([cart, 'optionalAccess', _42 => _42.itemCount]), () => ( 0));
503
+ return _nullishCoalesce(_optionalChain([cart, 'optionalAccess', _43 => _43.itemCount]), () => ( 0));
504
504
  }
505
505
 
506
506
  // src/react/hooks/use-auth.ts
@@ -638,7 +638,7 @@ function useCustomer(options) {
638
638
  } = _reactquery.useQuery.call(void 0, {
639
639
  queryKey: [...CUSTOMER_KEY2],
640
640
  queryFn: () => client.customer.getProfile(),
641
- enabled: _optionalChain([options, 'optionalAccess', _43 => _43.enabled]) !== false && !!client.getAccessToken()
641
+ enabled: _optionalChain([options, 'optionalAccess', _44 => _44.enabled]) !== false && !!client.getAccessToken()
642
642
  });
643
643
  const updateMutation = _reactquery.useMutation.call(void 0, {
644
644
  mutationFn: (data2) => client.customer.updateProfile(data2),
@@ -676,7 +676,7 @@ function useAddresses(options) {
676
676
  const result = await client.customer.getAddresses();
677
677
  return result.items;
678
678
  },
679
- enabled: _optionalChain([options, 'optionalAccess', _44 => _44.enabled]) !== false && !!client.getAccessToken()
679
+ enabled: _optionalChain([options, 'optionalAccess', _45 => _45.enabled]) !== false && !!client.getAccessToken()
680
680
  });
681
681
  const createMutation = _reactquery.useMutation.call(void 0, {
682
682
  mutationFn: (address) => client.customer.createAddress(address),
@@ -736,10 +736,10 @@ function useOrders(options) {
736
736
  enabled: enabled !== false && !!client.getAccessToken()
737
737
  });
738
738
  const items = _react.useMemo.call(void 0,
739
- () => _nullishCoalesce(_optionalChain([infinite, 'access', _45 => _45.data, 'optionalAccess', _46 => _46.pages, 'access', _47 => _47.flatMap, 'call', _48 => _48((p) => p.items)]), () => ( [])),
739
+ () => _nullishCoalesce(_optionalChain([infinite, 'access', _46 => _46.data, 'optionalAccess', _47 => _47.pages, 'access', _48 => _48.flatMap, 'call', _49 => _49((p) => p.items)]), () => ( [])),
740
740
  [infinite.data]
741
741
  );
742
- const lastPage = _optionalChain([infinite, 'access', _49 => _49.data, 'optionalAccess', _50 => _50.pages, 'access', _51 => _51[infinite.data.pages.length - 1]]);
742
+ const lastPage = _optionalChain([infinite, 'access', _50 => _50.data, 'optionalAccess', _51 => _51.pages, 'access', _52 => _52[infinite.data.pages.length - 1]]);
743
743
  const loadMore = _react.useCallback.call(void 0, () => {
744
744
  if (infinite.hasNextPage && !infinite.isFetchingNextPage) {
745
745
  return infinite.fetchNextPage();
@@ -752,10 +752,10 @@ function useOrders(options) {
752
752
  return {
753
753
  items,
754
754
  data: infinite.data,
755
- total: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _52 => _52.total]), () => ( 0)),
756
- totalPages: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _53 => _53.totalPages]), () => ( 0)),
757
- currentPage: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _54 => _54.page]), () => ( page)),
758
- limit: _nullishCoalesce(_nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _55 => _55.limit]), () => ( limit)), () => ( 20)),
755
+ total: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _53 => _53.total]), () => ( 0)),
756
+ totalPages: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _54 => _54.totalPages]), () => ( 0)),
757
+ currentPage: _nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _55 => _55.page]), () => ( page)),
758
+ limit: _nullishCoalesce(_nullishCoalesce(_optionalChain([lastPage, 'optionalAccess', _56 => _56.limit]), () => ( limit)), () => ( 20)),
759
759
  page,
760
760
  setPage: goToPage,
761
761
  loadMore,
@@ -784,7 +784,7 @@ function useOrder(orderNumber, options) {
784
784
  } = _reactquery.useQuery.call(void 0, {
785
785
  queryKey: ["behio", "order", orderNumber],
786
786
  queryFn: () => client.orders.get(orderNumber),
787
- enabled: _optionalChain([options, 'optionalAccess', _56 => _56.enabled]) !== false && !!orderNumber && !!client.getAccessToken()
787
+ enabled: _optionalChain([options, 'optionalAccess', _57 => _57.enabled]) !== false && !!orderNumber && !!client.getAccessToken()
788
788
  });
789
789
  const cancelMutation = _reactquery.useMutation.call(void 0, {
790
790
  mutationFn: () => client.orders.cancel(orderNumber),
@@ -849,7 +849,7 @@ function usePages(locale, options) {
849
849
  const result = await client.pages.list(locale);
850
850
  return result.pages;
851
851
  },
852
- enabled: _optionalChain([options, 'optionalAccess', _57 => _57.enabled]) !== false
852
+ enabled: _optionalChain([options, 'optionalAccess', _58 => _58.enabled]) !== false
853
853
  });
854
854
  }
855
855
  function usePage(slug, locale, options) {
@@ -857,7 +857,7 @@ function usePage(slug, locale, options) {
857
857
  return _reactquery.useQuery.call(void 0, {
858
858
  queryKey: ["behio", "page", slug, locale],
859
859
  queryFn: () => client.pages.get(slug, locale),
860
- enabled: _optionalChain([options, 'optionalAccess', _58 => _58.enabled]) !== false && !!slug
860
+ enabled: _optionalChain([options, 'optionalAccess', _59 => _59.enabled]) !== false && !!slug
861
861
  });
862
862
  }
863
863
 
@@ -868,7 +868,7 @@ function useShopInfo(options) {
868
868
  return _reactquery.useQuery.call(void 0, {
869
869
  queryKey: ["behio", "shop-info"],
870
870
  queryFn: () => client.getShopInfo(),
871
- enabled: _optionalChain([options, 'optionalAccess', _59 => _59.enabled]) !== false
871
+ enabled: _optionalChain([options, 'optionalAccess', _60 => _60.enabled]) !== false
872
872
  });
873
873
  }
874
874
 
@@ -892,8 +892,8 @@ function useBundles(options) {
892
892
  return _reactquery.useQuery.call(void 0, {
893
893
  queryKey: ["behio", "bundles"],
894
894
  queryFn: () => client.catalog.getBundles(),
895
- enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _60 => _60.enabled]), () => ( true)),
896
- initialData: _optionalChain([options, 'optionalAccess', _61 => _61.initialData])
895
+ enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _61 => _61.enabled]), () => ( true)),
896
+ initialData: _optionalChain([options, 'optionalAccess', _62 => _62.initialData])
897
897
  });
898
898
  }
899
899
  function useBundle(slug, options) {
@@ -901,8 +901,8 @@ function useBundle(slug, options) {
901
901
  return _reactquery.useQuery.call(void 0, {
902
902
  queryKey: ["behio", "bundle", slug],
903
903
  queryFn: () => client.catalog.getBundle(slug),
904
- enabled: Boolean(slug) && (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _62 => _62.enabled]), () => ( true))),
905
- initialData: _optionalChain([options, 'optionalAccess', _63 => _63.initialData])
904
+ enabled: Boolean(slug) && (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _63 => _63.enabled]), () => ( true))),
905
+ initialData: _optionalChain([options, 'optionalAccess', _64 => _64.initialData])
906
906
  });
907
907
  }
908
908
 
@@ -913,8 +913,8 @@ function useCrossSell(productSlug, options) {
913
913
  return _reactquery.useQuery.call(void 0, {
914
914
  queryKey: ["behio", "cross-sell", productSlug],
915
915
  queryFn: () => client.catalog.getCrossSell(productSlug),
916
- enabled: Boolean(productSlug) && (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _64 => _64.enabled]), () => ( true))),
917
- initialData: _optionalChain([options, 'optionalAccess', _65 => _65.initialData])
916
+ enabled: Boolean(productSlug) && (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _65 => _65.enabled]), () => ( true))),
917
+ initialData: _optionalChain([options, 'optionalAccess', _66 => _66.initialData])
918
918
  });
919
919
  }
920
920
 
@@ -925,8 +925,133 @@ function useProductPromotions(productSlug, options) {
925
925
  return _reactquery.useQuery.call(void 0, {
926
926
  queryKey: ["behio", "product-promotions", productSlug],
927
927
  queryFn: () => client.catalog.getProductPromotions(productSlug),
928
- enabled: Boolean(productSlug) && (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _66 => _66.enabled]), () => ( true))),
929
- refetchInterval: _optionalChain([options, 'optionalAccess', _67 => _67.refetchIntervalMs])
928
+ enabled: Boolean(productSlug) && (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _67 => _67.enabled]), () => ( true))),
929
+ refetchInterval: _optionalChain([options, 'optionalAccess', _68 => _68.refetchIntervalMs])
930
+ });
931
+ }
932
+
933
+ // src/react/hooks/use-gift-card.ts
934
+
935
+ function useGiftCardBalance(code, options) {
936
+ const { client } = useBehio();
937
+ const trimmed = _optionalChain([code, 'optionalAccess', _69 => _69.trim, 'call', _70 => _70()]);
938
+ return _reactquery.useQuery.call(void 0, {
939
+ queryKey: ["behio", "gift-card-balance", trimmed],
940
+ queryFn: () => client.catalog.checkGiftCard(trimmed),
941
+ enabled: Boolean(trimmed && trimmed.length >= 6) && (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _71 => _71.enabled]), () => ( true)))
942
+ });
943
+ }
944
+
945
+ // src/react/hooks/use-wishlist.ts
946
+
947
+ function useWishlist(options) {
948
+ const { client } = useBehio();
949
+ const qc = _reactquery.useQueryClient.call(void 0, );
950
+ const query = _reactquery.useQuery.call(void 0, {
951
+ queryKey: ["behio", "wishlist"],
952
+ queryFn: () => client.wishlist.get(),
953
+ enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _72 => _72.enabled]), () => ( true))
954
+ });
955
+ const addMutation = _reactquery.useMutation.call(void 0, {
956
+ mutationFn: (productId) => client.wishlist.add(productId),
957
+ onSuccess: () => qc.invalidateQueries({ queryKey: ["behio", "wishlist"] })
958
+ });
959
+ const removeMutation = _reactquery.useMutation.call(void 0, {
960
+ mutationFn: (productId) => client.wishlist.remove(productId),
961
+ onSuccess: () => qc.invalidateQueries({ queryKey: ["behio", "wishlist"] })
962
+ });
963
+ return {
964
+ ...query,
965
+ add: addMutation.mutateAsync,
966
+ remove: removeMutation.mutateAsync,
967
+ isAdding: addMutation.isPending,
968
+ isRemoving: removeMutation.isPending
969
+ };
970
+ }
971
+ function useIsInWishlist(productId) {
972
+ const { client } = useBehio();
973
+ return _reactquery.useQuery.call(void 0, {
974
+ queryKey: ["behio", "wishlist-check", productId],
975
+ queryFn: () => client.wishlist.isInWishlist(productId),
976
+ enabled: Boolean(productId)
977
+ });
978
+ }
979
+
980
+ // src/react/hooks/use-reviews.ts
981
+
982
+ function useProductReviews(productId, options) {
983
+ const { client } = useBehio();
984
+ return _reactquery.useQuery.call(void 0, {
985
+ queryKey: ["behio", "reviews", productId, _nullishCoalesce(_optionalChain([options, 'optionalAccess', _73 => _73.page]), () => ( 1))],
986
+ queryFn: () => client.reviews.getProductReviews(productId, _optionalChain([options, 'optionalAccess', _74 => _74.page]), _optionalChain([options, 'optionalAccess', _75 => _75.limit])),
987
+ enabled: Boolean(productId) && (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _76 => _76.enabled]), () => ( true)))
988
+ });
989
+ }
990
+ function useSubmitReview() {
991
+ const { client } = useBehio();
992
+ const qc = _reactquery.useQueryClient.call(void 0, );
993
+ return _reactquery.useMutation.call(void 0, {
994
+ mutationFn: (input) => client.reviews.submit(input),
995
+ onSuccess: (_, input) => qc.invalidateQueries({ queryKey: ["behio", "reviews", input.productId] })
996
+ });
997
+ }
998
+
999
+ // src/react/hooks/use-returns.ts
1000
+
1001
+ function useSubmitReturn() {
1002
+ const { client } = useBehio();
1003
+ return _reactquery.useMutation.call(void 0, {
1004
+ mutationFn: (input) => client.returns.submit(input)
1005
+ });
1006
+ }
1007
+ function useReturnStatus(returnId, email) {
1008
+ const { client } = useBehio();
1009
+ return _reactquery.useQuery.call(void 0, {
1010
+ queryKey: ["behio", "return-status", returnId],
1011
+ queryFn: () => client.returns.getStatus(returnId, email),
1012
+ enabled: Boolean(returnId && email)
1013
+ });
1014
+ }
1015
+
1016
+ // src/react/hooks/use-consent.ts
1017
+
1018
+ function useCookieConsent(visitorId) {
1019
+ const { client } = useBehio();
1020
+ const qc = _reactquery.useQueryClient.call(void 0, );
1021
+ const query = _reactquery.useQuery.call(void 0, {
1022
+ queryKey: ["behio", "consent", visitorId],
1023
+ queryFn: () => client.consent.get(visitorId),
1024
+ enabled: Boolean(visitorId)
1025
+ });
1026
+ const recordMutation = _reactquery.useMutation.call(void 0, {
1027
+ mutationFn: (input) => client.consent.record(input),
1028
+ onSuccess: () => qc.invalidateQueries({ queryKey: ["behio", "consent"] })
1029
+ });
1030
+ const revokeMutation = _reactquery.useMutation.call(void 0, {
1031
+ mutationFn: () => client.consent.revoke(visitorId),
1032
+ onSuccess: () => qc.invalidateQueries({ queryKey: ["behio", "consent"] })
1033
+ });
1034
+ return {
1035
+ ...query,
1036
+ record: recordMutation.mutateAsync,
1037
+ revoke: revokeMutation.mutateAsync
1038
+ };
1039
+ }
1040
+
1041
+ // src/react/hooks/use-quotes.ts
1042
+
1043
+ function useSubmitQuote() {
1044
+ const { client } = useBehio();
1045
+ return _reactquery.useMutation.call(void 0, {
1046
+ mutationFn: (input) => client.quotes.submit(input)
1047
+ });
1048
+ }
1049
+ function useQuoteStatus(quoteId) {
1050
+ const { client } = useBehio();
1051
+ return _reactquery.useQuery.call(void 0, {
1052
+ queryKey: ["behio", "quote-status", quoteId],
1053
+ queryFn: () => client.quotes.getStatus(quoteId),
1054
+ enabled: Boolean(quoteId)
930
1055
  });
931
1056
  }
932
1057
 
@@ -983,4 +1108,14 @@ function formatPrice(amount, currency, locale) {
983
1108
 
984
1109
 
985
1110
 
986
- exports.BehioProvider = BehioProvider; exports.cookieStorage = cookieStorage; exports.createMemoryStorage = createMemoryStorage; exports.detectStorage = detectStorage; exports.formatPrice = formatPrice; exports.localStorageAdapter = localStorageAdapter; exports.memoryStorage = memoryStorage; exports.useAddresses = useAddresses; exports.useAuth = useAuth; exports.useBehio = useBehio; exports.useBehioClient = useBehioClient; exports.useBundle = useBundle; exports.useBundles = useBundles; exports.useCart = useCart; exports.useCartCount = useCartCount; exports.useCategories = useCategories; exports.useCategory = useCategory; exports.useCheckout = useCheckout; exports.useCrossSell = useCrossSell; exports.useCustomer = useCustomer; exports.useFeatured = useFeatured; exports.useFilters = useFilters; exports.useLabels = useLabels; exports.useOrder = useOrder; exports.useOrders = useOrders; exports.usePage = usePage; exports.usePages = usePages; exports.useProduct = useProduct; exports.useProductPromotions = useProductPromotions; exports.useProducts = useProducts; exports.useSearch = useSearch; exports.useShopInfo = useShopInfo; exports.useShopSeo = useShopSeo;
1111
+
1112
+
1113
+
1114
+
1115
+
1116
+
1117
+
1118
+
1119
+
1120
+
1121
+ exports.BehioProvider = BehioProvider; exports.cookieStorage = cookieStorage; exports.createMemoryStorage = createMemoryStorage; exports.detectStorage = detectStorage; exports.formatPrice = formatPrice; exports.localStorageAdapter = localStorageAdapter; exports.memoryStorage = memoryStorage; exports.useAddresses = useAddresses; exports.useAuth = useAuth; exports.useBehio = useBehio; exports.useBehioClient = useBehioClient; exports.useBundle = useBundle; exports.useBundles = useBundles; exports.useCart = useCart; exports.useCartCount = useCartCount; exports.useCategories = useCategories; exports.useCategory = useCategory; exports.useCheckout = useCheckout; exports.useCookieConsent = useCookieConsent; exports.useCrossSell = useCrossSell; exports.useCustomer = useCustomer; exports.useFeatured = useFeatured; exports.useFilters = useFilters; exports.useGiftCardBalance = useGiftCardBalance; exports.useIsInWishlist = useIsInWishlist; exports.useLabels = useLabels; exports.useOrder = useOrder; exports.useOrders = useOrders; exports.usePage = usePage; exports.usePages = usePages; exports.useProduct = useProduct; exports.useProductPromotions = useProductPromotions; exports.useProductReviews = useProductReviews; exports.useProducts = useProducts; exports.useQuoteStatus = useQuoteStatus; exports.useReturnStatus = useReturnStatus; exports.useSearch = useSearch; exports.useShopInfo = useShopInfo; exports.useShopSeo = useShopSeo; exports.useSubmitQuote = useSubmitQuote; exports.useSubmitReturn = useSubmitReturn; exports.useSubmitReview = useSubmitReview; exports.useWishlist = useWishlist;
package/dist/react.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BehioStorefront
3
- } from "./chunk-HYKJO2IB.mjs";
3
+ } from "./chunk-EFFPOXWL.mjs";
4
4
 
5
5
  // src/react/provider.tsx
6
6
  import { useRef, useEffect, useMemo } from "react";
@@ -930,6 +930,131 @@ function useProductPromotions(productSlug, options) {
930
930
  });
931
931
  }
932
932
 
933
+ // src/react/hooks/use-gift-card.ts
934
+ import { useQuery as useQuery19 } from "@tanstack/react-query";
935
+ function useGiftCardBalance(code, options) {
936
+ const { client } = useBehio();
937
+ const trimmed = code?.trim();
938
+ return useQuery19({
939
+ queryKey: ["behio", "gift-card-balance", trimmed],
940
+ queryFn: () => client.catalog.checkGiftCard(trimmed),
941
+ enabled: Boolean(trimmed && trimmed.length >= 6) && (options?.enabled ?? true)
942
+ });
943
+ }
944
+
945
+ // src/react/hooks/use-wishlist.ts
946
+ import { useQuery as useQuery20, useMutation as useMutation7, useQueryClient as useQueryClient8 } from "@tanstack/react-query";
947
+ function useWishlist(options) {
948
+ const { client } = useBehio();
949
+ const qc = useQueryClient8();
950
+ const query = useQuery20({
951
+ queryKey: ["behio", "wishlist"],
952
+ queryFn: () => client.wishlist.get(),
953
+ enabled: options?.enabled ?? true
954
+ });
955
+ const addMutation = useMutation7({
956
+ mutationFn: (productId) => client.wishlist.add(productId),
957
+ onSuccess: () => qc.invalidateQueries({ queryKey: ["behio", "wishlist"] })
958
+ });
959
+ const removeMutation = useMutation7({
960
+ mutationFn: (productId) => client.wishlist.remove(productId),
961
+ onSuccess: () => qc.invalidateQueries({ queryKey: ["behio", "wishlist"] })
962
+ });
963
+ return {
964
+ ...query,
965
+ add: addMutation.mutateAsync,
966
+ remove: removeMutation.mutateAsync,
967
+ isAdding: addMutation.isPending,
968
+ isRemoving: removeMutation.isPending
969
+ };
970
+ }
971
+ function useIsInWishlist(productId) {
972
+ const { client } = useBehio();
973
+ return useQuery20({
974
+ queryKey: ["behio", "wishlist-check", productId],
975
+ queryFn: () => client.wishlist.isInWishlist(productId),
976
+ enabled: Boolean(productId)
977
+ });
978
+ }
979
+
980
+ // src/react/hooks/use-reviews.ts
981
+ import { useQuery as useQuery21, useMutation as useMutation8, useQueryClient as useQueryClient9 } from "@tanstack/react-query";
982
+ function useProductReviews(productId, options) {
983
+ const { client } = useBehio();
984
+ return useQuery21({
985
+ queryKey: ["behio", "reviews", productId, options?.page ?? 1],
986
+ queryFn: () => client.reviews.getProductReviews(productId, options?.page, options?.limit),
987
+ enabled: Boolean(productId) && (options?.enabled ?? true)
988
+ });
989
+ }
990
+ function useSubmitReview() {
991
+ const { client } = useBehio();
992
+ const qc = useQueryClient9();
993
+ return useMutation8({
994
+ mutationFn: (input) => client.reviews.submit(input),
995
+ onSuccess: (_, input) => qc.invalidateQueries({ queryKey: ["behio", "reviews", input.productId] })
996
+ });
997
+ }
998
+
999
+ // src/react/hooks/use-returns.ts
1000
+ import { useQuery as useQuery22, useMutation as useMutation9 } from "@tanstack/react-query";
1001
+ function useSubmitReturn() {
1002
+ const { client } = useBehio();
1003
+ return useMutation9({
1004
+ mutationFn: (input) => client.returns.submit(input)
1005
+ });
1006
+ }
1007
+ function useReturnStatus(returnId, email) {
1008
+ const { client } = useBehio();
1009
+ return useQuery22({
1010
+ queryKey: ["behio", "return-status", returnId],
1011
+ queryFn: () => client.returns.getStatus(returnId, email),
1012
+ enabled: Boolean(returnId && email)
1013
+ });
1014
+ }
1015
+
1016
+ // src/react/hooks/use-consent.ts
1017
+ import { useQuery as useQuery23, useMutation as useMutation10, useQueryClient as useQueryClient10 } from "@tanstack/react-query";
1018
+ function useCookieConsent(visitorId) {
1019
+ const { client } = useBehio();
1020
+ const qc = useQueryClient10();
1021
+ const query = useQuery23({
1022
+ queryKey: ["behio", "consent", visitorId],
1023
+ queryFn: () => client.consent.get(visitorId),
1024
+ enabled: Boolean(visitorId)
1025
+ });
1026
+ const recordMutation = useMutation10({
1027
+ mutationFn: (input) => client.consent.record(input),
1028
+ onSuccess: () => qc.invalidateQueries({ queryKey: ["behio", "consent"] })
1029
+ });
1030
+ const revokeMutation = useMutation10({
1031
+ mutationFn: () => client.consent.revoke(visitorId),
1032
+ onSuccess: () => qc.invalidateQueries({ queryKey: ["behio", "consent"] })
1033
+ });
1034
+ return {
1035
+ ...query,
1036
+ record: recordMutation.mutateAsync,
1037
+ revoke: revokeMutation.mutateAsync
1038
+ };
1039
+ }
1040
+
1041
+ // src/react/hooks/use-quotes.ts
1042
+ import { useMutation as useMutation11, useQuery as useQuery24 } from "@tanstack/react-query";
1043
+ function useSubmitQuote() {
1044
+ const { client } = useBehio();
1045
+ return useMutation11({
1046
+ mutationFn: (input) => client.quotes.submit(input)
1047
+ });
1048
+ }
1049
+ function useQuoteStatus(quoteId) {
1050
+ const { client } = useBehio();
1051
+ return useQuery24({
1052
+ queryKey: ["behio", "quote-status", quoteId],
1053
+ queryFn: () => client.quotes.getStatus(quoteId),
1054
+ enabled: Boolean(quoteId)
1055
+ });
1056
+ }
1057
+
933
1058
  // src/react/hooks/use-behio-client.ts
934
1059
  function useBehioClient() {
935
1060
  return useBehio().client;
@@ -968,10 +1093,13 @@ export {
968
1093
  useCategories,
969
1094
  useCategory,
970
1095
  useCheckout,
1096
+ useCookieConsent,
971
1097
  useCrossSell,
972
1098
  useCustomer,
973
1099
  useFeatured,
974
1100
  useFilters,
1101
+ useGiftCardBalance,
1102
+ useIsInWishlist,
975
1103
  useLabels,
976
1104
  useOrder,
977
1105
  useOrders,
@@ -979,8 +1107,15 @@ export {
979
1107
  usePages,
980
1108
  useProduct,
981
1109
  useProductPromotions,
1110
+ useProductReviews,
982
1111
  useProducts,
1112
+ useQuoteStatus,
1113
+ useReturnStatus,
983
1114
  useSearch,
984
1115
  useShopInfo,
985
- useShopSeo
1116
+ useShopSeo,
1117
+ useSubmitQuote,
1118
+ useSubmitReturn,
1119
+ useSubmitReview,
1120
+ useWishlist
986
1121
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@behio/storefront-sdk",
3
- "version": "0.1.10",
3
+ "version": "0.2.0",
4
4
  "description": "TypeScript SDK for Behio Headless E-Shop — core client + React hooks",
5
5
  "author": "Behio",
6
6
  "license": "MIT",