@numueg/theme-sdk 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1993,6 +1993,45 @@ declare function collectBlocks<T extends Record<string, unknown>>(modules: T): R
1993
1993
  */
1994
1994
  declare function assetUrl(name: string): string;
1995
1995
 
1996
+ /**
1997
+ * focalSrc — build a URL for a server-side, focal-point-aware image transform.
1998
+ *
1999
+ * OPT-IN helper. A theme that wants a bandwidth-efficient SMART CROP for a big
2000
+ * image (typically a hero) calls this to point the <img src> at the storefront's
2001
+ * `/api/image-transform` endpoint with focal/aspect params. The endpoint honors
2002
+ * them only when Cloudflare Image Resizing is enabled on the zone
2003
+ * (NUMU_CF_IMAGE_RESIZING=1); otherwise it gracefully ignores them and serves a
2004
+ * plain resized image — so the theme's CSS `applyImageTransform` framing remains
2005
+ * the correctness baseline either way. This is purely a perf optimization.
2006
+ *
2007
+ * Returns a RELATIVE path (`/api/image-transform?...`) — the SDK runs
2008
+ * same-origin inside the storefront, matching how <Form>/useShop build URLs.
2009
+ *
2010
+ * @example
2011
+ * <img
2012
+ * src={focalSrc(hero.url, { width: 1600, focal: t?.focal, aspect: "16/9" })}
2013
+ * style={applyImageTransform(t, "cover")} // CSS still frames as fallback
2014
+ * />
2015
+ */
2016
+ interface FocalSrcOptions {
2017
+ /** Target width in px (e.g. 1600 for a desktop hero). Required for a crop. */
2018
+ width?: number;
2019
+ /** Focal point, normalized 0..1 (0.5,0.5 = center). */
2020
+ focal?: {
2021
+ x?: number;
2022
+ y?: number;
2023
+ };
2024
+ /** Target aspect ratio "W/H" (e.g. "16/9"); drives the crop box height. */
2025
+ aspect?: string;
2026
+ /** Crop mode. Default "cover". */
2027
+ fit?: "cover" | "contain";
2028
+ /** Quality 1..100. */
2029
+ quality?: number;
2030
+ /** Output format. */
2031
+ format?: "webp" | "avif" | "jpeg" | "jpg" | "png";
2032
+ }
2033
+ declare function focalSrc(url: string | null | undefined, options?: FocalSrcOptions): string;
2034
+
1996
2035
  /**
1997
2036
  * `applyGlobalStyleTokens(globalSettings, el)` — Phase 3.5.
1998
2037
  *
@@ -2097,4 +2136,4 @@ declare function pickTranslations(bundle: LocaleBundle, locale: string): LocaleM
2097
2136
  */
2098
2137
  declare function buildLocaleBundle<T extends Record<string, unknown>>(modules: T): LocaleBundle;
2099
2138
 
2100
- export { AddToCartButton, type AddressInput, type AnalyticsApi, type AnalyticsPayload, type AppManifestBlock, type AppPayload, type AppState, Block, BlockInstance, BlockProps$1 as BlockProps, BlockSchema, Cart, CartContext, type CheckoutAddress, type CheckoutApi, type CheckoutSessionState, type CheckoutStep, Collection, CollectionCard, type CollectionCardProps, type CollectionCardSlots, CollectionContext, CollectionProvider, type CurrencyConfig, type CurrencyState, CurrencySwitcher, type CurrencySwitcherProps, Customer, type CustomerAddress, type CustomerAddressesState, CustomerContext, type DefineBlockInput, type DefineSectionInput, type DefinedBlock, type DefinedSection, type DynamicResolveContext, type DynamicSourceRef, EditableImage, type EditableImageProps, EditableText, type EditableTextProps, Form, type GiftCardBalance, ICON_NAMES, Icon, IconMap, type IconProps, Image, Link, type LocaleBundle, type LocaleMessages, LocaleSwitcher, type LocaleSwitcherProps, LocalizationContext, type MenuItemData, Money, MountResult, NavigationContext, type NavigationItem, type NavigationState, NuMuProvider, type OrderDetail, type OrderListEntry, type OrderListState, type OrderState, Page, PageContext, type PlaceOrderResult, Product, ProductCard, type ProductCardProps, type ProductCardSlots, ProductContext, ProductProvider, ProductVariant, type RelatedProductsState, type ReorderResult, type ReorderSkipReason, type ReorderSkippedItem, RichText, type RichTextProps, type SearchResults, type SearchState, Section, SectionContext, SectionInstance, SectionProps$1 as SectionProps, SectionSchema, type ShippingRateOption, ShopContext, type ShopWithHelpers, Store, type ThemeMountContext, type ThemeMountPage, type ThemeRenderArgs, ThemeSettingsContext, ThemeSettingsV3, type UseGiftCardBalance, type UseReorder, type UseSearchOptions, type UseShippingRatesOptions, type UseShippingRatesState, type UseVariantSelection, type WishlistItem, type WishlistState, applyGlobalStyleTokens, assetUrl, availableValues, buildLocaleBundle, clearSdkSingleton, collectBlocks, collectSections, defaultVariant, defineBlock, defineSection, dynamicSource, findVariantByOptions, flattenMessages, getReactSingleton, getSdkSingleton, isDefinedBlock, isDefinedSection, isDynamicSource, isSdkAvailable, mountTheme, pickTranslations, registerReactSingleton, registerSdkSingleton, resolveDynamicValue, resolveFontStack, resolveSettingsMap, resolveSourcePath, sanitizeHtml, useAnalytics, useApp, useCart, useCheckout, useCollection, useCollectionOptional, useCollections, useCurrency, useCurrentTemplate, useCustomer, useCustomerActions, useCustomerAddresses, useDirection, useFieldTranslation, useGiftCardBalance, useImage, useLocale, useLocalization, useMoney, useNavigation, useNumberFormat, useOrder, useOrders, usePage, useProduct, useProductOptional, useProducts, useRelatedProducts, useReorder, useResolvedSettings, useSearch, useSection, useSectionOptional, useShippingRates, useShop, useThemeSettings, useTranslation, useVariantSelection, useWishlist };
2139
+ export { AddToCartButton, type AddressInput, type AnalyticsApi, type AnalyticsPayload, type AppManifestBlock, type AppPayload, type AppState, Block, BlockInstance, BlockProps$1 as BlockProps, BlockSchema, Cart, CartContext, type CheckoutAddress, type CheckoutApi, type CheckoutSessionState, type CheckoutStep, Collection, CollectionCard, type CollectionCardProps, type CollectionCardSlots, CollectionContext, CollectionProvider, type CurrencyConfig, type CurrencyState, CurrencySwitcher, type CurrencySwitcherProps, Customer, type CustomerAddress, type CustomerAddressesState, CustomerContext, type DefineBlockInput, type DefineSectionInput, type DefinedBlock, type DefinedSection, type DynamicResolveContext, type DynamicSourceRef, EditableImage, type EditableImageProps, EditableText, type EditableTextProps, type FocalSrcOptions, Form, type GiftCardBalance, ICON_NAMES, Icon, IconMap, type IconProps, Image, Link, type LocaleBundle, type LocaleMessages, LocaleSwitcher, type LocaleSwitcherProps, LocalizationContext, type MenuItemData, Money, MountResult, NavigationContext, type NavigationItem, type NavigationState, NuMuProvider, type OrderDetail, type OrderListEntry, type OrderListState, type OrderState, Page, PageContext, type PlaceOrderResult, Product, ProductCard, type ProductCardProps, type ProductCardSlots, ProductContext, ProductProvider, ProductVariant, type RelatedProductsState, type ReorderResult, type ReorderSkipReason, type ReorderSkippedItem, RichText, type RichTextProps, type SearchResults, type SearchState, Section, SectionContext, SectionInstance, SectionProps$1 as SectionProps, SectionSchema, type ShippingRateOption, ShopContext, type ShopWithHelpers, Store, type ThemeMountContext, type ThemeMountPage, type ThemeRenderArgs, ThemeSettingsContext, ThemeSettingsV3, type UseGiftCardBalance, type UseReorder, type UseSearchOptions, type UseShippingRatesOptions, type UseShippingRatesState, type UseVariantSelection, type WishlistItem, type WishlistState, applyGlobalStyleTokens, assetUrl, availableValues, buildLocaleBundle, clearSdkSingleton, collectBlocks, collectSections, defaultVariant, defineBlock, defineSection, dynamicSource, findVariantByOptions, flattenMessages, focalSrc, getReactSingleton, getSdkSingleton, isDefinedBlock, isDefinedSection, isDynamicSource, isSdkAvailable, mountTheme, pickTranslations, registerReactSingleton, registerSdkSingleton, resolveDynamicValue, resolveFontStack, resolveSettingsMap, resolveSourcePath, sanitizeHtml, useAnalytics, useApp, useCart, useCheckout, useCollection, useCollectionOptional, useCollections, useCurrency, useCurrentTemplate, useCustomer, useCustomerActions, useCustomerAddresses, useDirection, useFieldTranslation, useGiftCardBalance, useImage, useLocale, useLocalization, useMoney, useNavigation, useNumberFormat, useOrder, useOrders, usePage, useProduct, useProductOptional, useProducts, useRelatedProducts, useReorder, useResolvedSettings, useSearch, useSection, useSectionOptional, useShippingRates, useShop, useThemeSettings, useTranslation, useVariantSelection, useWishlist };
package/dist/index.d.ts CHANGED
@@ -1993,6 +1993,45 @@ declare function collectBlocks<T extends Record<string, unknown>>(modules: T): R
1993
1993
  */
1994
1994
  declare function assetUrl(name: string): string;
1995
1995
 
1996
+ /**
1997
+ * focalSrc — build a URL for a server-side, focal-point-aware image transform.
1998
+ *
1999
+ * OPT-IN helper. A theme that wants a bandwidth-efficient SMART CROP for a big
2000
+ * image (typically a hero) calls this to point the <img src> at the storefront's
2001
+ * `/api/image-transform` endpoint with focal/aspect params. The endpoint honors
2002
+ * them only when Cloudflare Image Resizing is enabled on the zone
2003
+ * (NUMU_CF_IMAGE_RESIZING=1); otherwise it gracefully ignores them and serves a
2004
+ * plain resized image — so the theme's CSS `applyImageTransform` framing remains
2005
+ * the correctness baseline either way. This is purely a perf optimization.
2006
+ *
2007
+ * Returns a RELATIVE path (`/api/image-transform?...`) — the SDK runs
2008
+ * same-origin inside the storefront, matching how <Form>/useShop build URLs.
2009
+ *
2010
+ * @example
2011
+ * <img
2012
+ * src={focalSrc(hero.url, { width: 1600, focal: t?.focal, aspect: "16/9" })}
2013
+ * style={applyImageTransform(t, "cover")} // CSS still frames as fallback
2014
+ * />
2015
+ */
2016
+ interface FocalSrcOptions {
2017
+ /** Target width in px (e.g. 1600 for a desktop hero). Required for a crop. */
2018
+ width?: number;
2019
+ /** Focal point, normalized 0..1 (0.5,0.5 = center). */
2020
+ focal?: {
2021
+ x?: number;
2022
+ y?: number;
2023
+ };
2024
+ /** Target aspect ratio "W/H" (e.g. "16/9"); drives the crop box height. */
2025
+ aspect?: string;
2026
+ /** Crop mode. Default "cover". */
2027
+ fit?: "cover" | "contain";
2028
+ /** Quality 1..100. */
2029
+ quality?: number;
2030
+ /** Output format. */
2031
+ format?: "webp" | "avif" | "jpeg" | "jpg" | "png";
2032
+ }
2033
+ declare function focalSrc(url: string | null | undefined, options?: FocalSrcOptions): string;
2034
+
1996
2035
  /**
1997
2036
  * `applyGlobalStyleTokens(globalSettings, el)` — Phase 3.5.
1998
2037
  *
@@ -2097,4 +2136,4 @@ declare function pickTranslations(bundle: LocaleBundle, locale: string): LocaleM
2097
2136
  */
2098
2137
  declare function buildLocaleBundle<T extends Record<string, unknown>>(modules: T): LocaleBundle;
2099
2138
 
2100
- export { AddToCartButton, type AddressInput, type AnalyticsApi, type AnalyticsPayload, type AppManifestBlock, type AppPayload, type AppState, Block, BlockInstance, BlockProps$1 as BlockProps, BlockSchema, Cart, CartContext, type CheckoutAddress, type CheckoutApi, type CheckoutSessionState, type CheckoutStep, Collection, CollectionCard, type CollectionCardProps, type CollectionCardSlots, CollectionContext, CollectionProvider, type CurrencyConfig, type CurrencyState, CurrencySwitcher, type CurrencySwitcherProps, Customer, type CustomerAddress, type CustomerAddressesState, CustomerContext, type DefineBlockInput, type DefineSectionInput, type DefinedBlock, type DefinedSection, type DynamicResolveContext, type DynamicSourceRef, EditableImage, type EditableImageProps, EditableText, type EditableTextProps, Form, type GiftCardBalance, ICON_NAMES, Icon, IconMap, type IconProps, Image, Link, type LocaleBundle, type LocaleMessages, LocaleSwitcher, type LocaleSwitcherProps, LocalizationContext, type MenuItemData, Money, MountResult, NavigationContext, type NavigationItem, type NavigationState, NuMuProvider, type OrderDetail, type OrderListEntry, type OrderListState, type OrderState, Page, PageContext, type PlaceOrderResult, Product, ProductCard, type ProductCardProps, type ProductCardSlots, ProductContext, ProductProvider, ProductVariant, type RelatedProductsState, type ReorderResult, type ReorderSkipReason, type ReorderSkippedItem, RichText, type RichTextProps, type SearchResults, type SearchState, Section, SectionContext, SectionInstance, SectionProps$1 as SectionProps, SectionSchema, type ShippingRateOption, ShopContext, type ShopWithHelpers, Store, type ThemeMountContext, type ThemeMountPage, type ThemeRenderArgs, ThemeSettingsContext, ThemeSettingsV3, type UseGiftCardBalance, type UseReorder, type UseSearchOptions, type UseShippingRatesOptions, type UseShippingRatesState, type UseVariantSelection, type WishlistItem, type WishlistState, applyGlobalStyleTokens, assetUrl, availableValues, buildLocaleBundle, clearSdkSingleton, collectBlocks, collectSections, defaultVariant, defineBlock, defineSection, dynamicSource, findVariantByOptions, flattenMessages, getReactSingleton, getSdkSingleton, isDefinedBlock, isDefinedSection, isDynamicSource, isSdkAvailable, mountTheme, pickTranslations, registerReactSingleton, registerSdkSingleton, resolveDynamicValue, resolveFontStack, resolveSettingsMap, resolveSourcePath, sanitizeHtml, useAnalytics, useApp, useCart, useCheckout, useCollection, useCollectionOptional, useCollections, useCurrency, useCurrentTemplate, useCustomer, useCustomerActions, useCustomerAddresses, useDirection, useFieldTranslation, useGiftCardBalance, useImage, useLocale, useLocalization, useMoney, useNavigation, useNumberFormat, useOrder, useOrders, usePage, useProduct, useProductOptional, useProducts, useRelatedProducts, useReorder, useResolvedSettings, useSearch, useSection, useSectionOptional, useShippingRates, useShop, useThemeSettings, useTranslation, useVariantSelection, useWishlist };
2139
+ export { AddToCartButton, type AddressInput, type AnalyticsApi, type AnalyticsPayload, type AppManifestBlock, type AppPayload, type AppState, Block, BlockInstance, BlockProps$1 as BlockProps, BlockSchema, Cart, CartContext, type CheckoutAddress, type CheckoutApi, type CheckoutSessionState, type CheckoutStep, Collection, CollectionCard, type CollectionCardProps, type CollectionCardSlots, CollectionContext, CollectionProvider, type CurrencyConfig, type CurrencyState, CurrencySwitcher, type CurrencySwitcherProps, Customer, type CustomerAddress, type CustomerAddressesState, CustomerContext, type DefineBlockInput, type DefineSectionInput, type DefinedBlock, type DefinedSection, type DynamicResolveContext, type DynamicSourceRef, EditableImage, type EditableImageProps, EditableText, type EditableTextProps, type FocalSrcOptions, Form, type GiftCardBalance, ICON_NAMES, Icon, IconMap, type IconProps, Image, Link, type LocaleBundle, type LocaleMessages, LocaleSwitcher, type LocaleSwitcherProps, LocalizationContext, type MenuItemData, Money, MountResult, NavigationContext, type NavigationItem, type NavigationState, NuMuProvider, type OrderDetail, type OrderListEntry, type OrderListState, type OrderState, Page, PageContext, type PlaceOrderResult, Product, ProductCard, type ProductCardProps, type ProductCardSlots, ProductContext, ProductProvider, ProductVariant, type RelatedProductsState, type ReorderResult, type ReorderSkipReason, type ReorderSkippedItem, RichText, type RichTextProps, type SearchResults, type SearchState, Section, SectionContext, SectionInstance, SectionProps$1 as SectionProps, SectionSchema, type ShippingRateOption, ShopContext, type ShopWithHelpers, Store, type ThemeMountContext, type ThemeMountPage, type ThemeRenderArgs, ThemeSettingsContext, ThemeSettingsV3, type UseGiftCardBalance, type UseReorder, type UseSearchOptions, type UseShippingRatesOptions, type UseShippingRatesState, type UseVariantSelection, type WishlistItem, type WishlistState, applyGlobalStyleTokens, assetUrl, availableValues, buildLocaleBundle, clearSdkSingleton, collectBlocks, collectSections, defaultVariant, defineBlock, defineSection, dynamicSource, findVariantByOptions, flattenMessages, focalSrc, getReactSingleton, getSdkSingleton, isDefinedBlock, isDefinedSection, isDynamicSource, isSdkAvailable, mountTheme, pickTranslations, registerReactSingleton, registerSdkSingleton, resolveDynamicValue, resolveFontStack, resolveSettingsMap, resolveSourcePath, sanitizeHtml, useAnalytics, useApp, useCart, useCheckout, useCollection, useCollectionOptional, useCollections, useCurrency, useCurrentTemplate, useCustomer, useCustomerActions, useCustomerAddresses, useDirection, useFieldTranslation, useGiftCardBalance, useImage, useLocale, useLocalization, useMoney, useNavigation, useNumberFormat, useOrder, useOrders, usePage, useProduct, useProductOptional, useProducts, useRelatedProducts, useReorder, useResolvedSettings, useSearch, useSection, useSectionOptional, useShippingRates, useShop, useThemeSettings, useTranslation, useVariantSelection, useWishlist };
package/dist/index.mjs CHANGED
@@ -1445,6 +1445,16 @@ var EMPTY_CART = {
1445
1445
  total: 0,
1446
1446
  currency: "EGP"
1447
1447
  };
1448
+ function normalizeCartFromServer(cart) {
1449
+ const toMajor = (n) => typeof n === "number" ? n / 100 : 0;
1450
+ return {
1451
+ ...cart,
1452
+ subtotal: toMajor(cart.subtotal),
1453
+ total: toMajor(cart.total),
1454
+ ...cart.discount_amount != null ? { discount_amount: toMajor(cart.discount_amount) } : {},
1455
+ items: Array.isArray(cart.items) ? cart.items.map((it) => ({ ...it, price: toMajor(it.price) })) : []
1456
+ };
1457
+ }
1448
1458
  function readCsrfCookie() {
1449
1459
  if (typeof document === "undefined") return null;
1450
1460
  const match = document.cookie.match(/(?:^|;\s*)numu_csrf=([^;]+)/);
@@ -1647,7 +1657,7 @@ function NuMuProvider({
1647
1657
  if (!res.ok || cancelled) return;
1648
1658
  const data = await res.json();
1649
1659
  if (data && typeof data === "object") {
1650
- setCart(data);
1660
+ setCart(normalizeCartFromServer(data));
1651
1661
  }
1652
1662
  } catch {
1653
1663
  }
@@ -1668,7 +1678,7 @@ function NuMuProvider({
1668
1678
  return;
1669
1679
  }
1670
1680
  latestApplied.current = token;
1671
- setCart(newCart);
1681
+ setCart(normalizeCartFromServer(newCart));
1672
1682
  },
1673
1683
  []
1674
1684
  );
@@ -3322,6 +3332,23 @@ function assetUrl(name) {
3322
3332
  return `${cleanBase}${filename}`;
3323
3333
  }
3324
3334
 
3335
+ // src/utils/imageTransform.ts
3336
+ var clamp01 = (n) => Math.min(1, Math.max(0, n));
3337
+ function focalSrc(url, options = {}) {
3338
+ if (!url) return "";
3339
+ if (url.startsWith("data:") || /[?&](fp-x|fp-y)=/.test(url)) return url;
3340
+ const p = new URLSearchParams();
3341
+ p.set("url", url);
3342
+ if (options.width) p.set("w", String(Math.round(options.width)));
3343
+ if (options.focal?.x != null) p.set("fp-x", String(clamp01(options.focal.x)));
3344
+ if (options.focal?.y != null) p.set("fp-y", String(clamp01(options.focal.y)));
3345
+ if (options.aspect) p.set("ar", options.aspect);
3346
+ if (options.fit) p.set("fit", options.fit);
3347
+ if (options.quality) p.set("q", String(Math.min(100, Math.max(1, Math.round(options.quality)))));
3348
+ if (options.format) p.set("f", options.format.toLowerCase());
3349
+ return `/api/image-transform?${p.toString()}`;
3350
+ }
3351
+
3325
3352
  // src/utils/locales.ts
3326
3353
  function flattenMessages(source, prefix = "") {
3327
3354
  const out = {};
@@ -3366,6 +3393,6 @@ function buildLocaleBundle(modules) {
3366
3393
  return bundle;
3367
3394
  }
3368
3395
 
3369
- export { AddToCartButton, Block, CartContext, CollectionCard, CollectionContext, CollectionProvider, CurrencySwitcher, CustomerContext, EditableImage, EditableText, Form, ICON_NAMES, Icon, IconMap, Image, Link, LocaleSwitcher, LocalizationContext, MAX_BLOCK_DEPTH, Money, NavigationContext, NuMuProvider, PageContext, ProductCard, ProductContext, ProductProvider, RichText, Section, SectionContext, ShopContext, ThemeSettingsContext, applyGlobalStyleTokens, assetUrl, availableValues, buildLocaleBundle, clearSdkSingleton, collectBlocks, collectSections, defaultVariant, defineBlock, defineSection, dynamicSource, findVariantByOptions, flattenMessages, getReactSingleton, getSdkSingleton, isDefinedBlock, isDefinedSection, isDynamicSource, isSdkAvailable, mountTheme, pickTranslations, registerReactSingleton, registerSdkSingleton, resolveDynamicValue, resolveFontStack, resolveSettingsMap, resolveSourcePath, resolveThemeSettings, sanitizeHtml, useAnalytics, useApp, useCart, useCheckout, useCollection, useCollectionOptional, useCollections, useCurrency, useCurrentTemplate, useCustomer, useCustomerActions, useCustomerAddresses, useDirection, useFieldTranslation, useGiftCardBalance, useImage, useLocale, useLocalization, useMoney, useNavigation, useNumberFormat, useOrder, useOrders, usePage, useProduct, useProductOptional, useProducts, useRelatedProducts, useReorder, useResolvedSettings, useSearch, useSection, useSectionOptional, useShippingRates, useShop, useThemeSettings, useTranslation, useVariantSelection, useWishlist };
3396
+ export { AddToCartButton, Block, CartContext, CollectionCard, CollectionContext, CollectionProvider, CurrencySwitcher, CustomerContext, EditableImage, EditableText, Form, ICON_NAMES, Icon, IconMap, Image, Link, LocaleSwitcher, LocalizationContext, MAX_BLOCK_DEPTH, Money, NavigationContext, NuMuProvider, PageContext, ProductCard, ProductContext, ProductProvider, RichText, Section, SectionContext, ShopContext, ThemeSettingsContext, applyGlobalStyleTokens, assetUrl, availableValues, buildLocaleBundle, clearSdkSingleton, collectBlocks, collectSections, defaultVariant, defineBlock, defineSection, dynamicSource, findVariantByOptions, flattenMessages, focalSrc, getReactSingleton, getSdkSingleton, isDefinedBlock, isDefinedSection, isDynamicSource, isSdkAvailable, mountTheme, pickTranslations, registerReactSingleton, registerSdkSingleton, resolveDynamicValue, resolveFontStack, resolveSettingsMap, resolveSourcePath, resolveThemeSettings, sanitizeHtml, useAnalytics, useApp, useCart, useCheckout, useCollection, useCollectionOptional, useCollections, useCurrency, useCurrentTemplate, useCustomer, useCustomerActions, useCustomerAddresses, useDirection, useFieldTranslation, useGiftCardBalance, useImage, useLocale, useLocalization, useMoney, useNavigation, useNumberFormat, useOrder, useOrders, usePage, useProduct, useProductOptional, useProducts, useRelatedProducts, useReorder, useResolvedSettings, useSearch, useSection, useSectionOptional, useShippingRates, useShop, useThemeSettings, useTranslation, useVariantSelection, useWishlist };
3370
3397
  //# sourceMappingURL=index.mjs.map
3371
3398
  //# sourceMappingURL=index.mjs.map