@fayz-ai/storefront 0.53.0 → 0.57.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.
@@ -1050,6 +1050,11 @@ var ptBR = {
1050
1050
  "cart.checkout": "Finalizar compra",
1051
1051
  "cart.missingForFree": "Faltam {{amount}} para frete gr\xE1tis",
1052
1052
  "cart.wonFree": "Voc\xEA ganhou frete gr\xE1tis!",
1053
+ "cart.minimumOrder": "Pedido m\xEDnimo para entrega: {{amount}}. Faltam {{missing}}.",
1054
+ "delivery.eta": "Entrega em ~{{duration}}",
1055
+ "delivery.etaUpTo": "Entrega em at\xE9 {{duration}}",
1056
+ "delivery.paused": "Delivery fechado no momento",
1057
+ "cart.deliveryPaused": "O delivery est\xE1 fechado no momento. Volte mais tarde para finalizar.",
1053
1058
  // Deliver to
1054
1059
  "country.deliverTo": "Enviar para",
1055
1060
  "country.change": "Trocar pa\xEDs",
@@ -1177,6 +1182,11 @@ var en = {
1177
1182
  "cart.checkout": "Checkout",
1178
1183
  "cart.missingForFree": "{{amount}} away from free shipping",
1179
1184
  "cart.wonFree": "You got free shipping!",
1185
+ "cart.minimumOrder": "Minimum order for delivery: {{amount}}. {{missing}} to go.",
1186
+ "delivery.eta": "Delivery in ~{{duration}}",
1187
+ "delivery.etaUpTo": "Delivery within {{duration}}",
1188
+ "delivery.paused": "Delivery closed right now",
1189
+ "cart.deliveryPaused": "Delivery is closed right now. Come back later to check out.",
1180
1190
  "country.deliverTo": "Deliver to",
1181
1191
  "country.change": "Change country",
1182
1192
  "country.label": "Delivery country"
@@ -1303,6 +1313,8 @@ var es = {
1303
1313
  "cart.checkout": "Finalizar compra",
1304
1314
  "cart.missingForFree": "Te faltan {{amount}} para el env\xEDo gratis",
1305
1315
  "cart.wonFree": "\xA1Tienes env\xEDo gratis!",
1316
+ "cart.minimumOrder": "Pedido m\xEDnimo para entrega: {{amount}}. Te faltan {{missing}}.",
1317
+ "delivery.eta": "Entrega en ~{{minutes}} min",
1306
1318
  "country.deliverTo": "Enviar a",
1307
1319
  "country.change": "Cambiar pa\xEDs",
1308
1320
  "country.label": "Pa\xEDs de env\xEDo"
@@ -6793,6 +6805,18 @@ function applyShippingSettings(config, shipping) {
6793
6805
  if (!shipping) return config;
6794
6806
  return { ...config, shipping: { flatRate: shipping.flatRate, freeAbove: shipping.freeAbove ?? void 0 } };
6795
6807
  }
6808
+ function applyDeliveryPolicy(config, policy) {
6809
+ if (!policy || !config.delivery) return config;
6810
+ return {
6811
+ ...config,
6812
+ delivery: {
6813
+ ...config.delivery,
6814
+ ...policy.etaMinutes ? { etaMinutes: policy.etaMinutes } : {},
6815
+ ...policy.minOrderTotal ? { minOrderTotal: policy.minOrderTotal } : {},
6816
+ ...policy.paused ? { paused: true } : {}
6817
+ }
6818
+ };
6819
+ }
6796
6820
  function applyBuyer(config, buyer) {
6797
6821
  if (!buyer) return config;
6798
6822
  const language = normalizeLanguage(buyer.language) ?? config.language;
@@ -6808,6 +6832,7 @@ function StorefrontConfigHost({
6808
6832
  }) {
6809
6833
  const [policy, setPolicy] = React38.useState(null);
6810
6834
  const [shipping, setShipping] = React38.useState(null);
6835
+ const [delivery, setDelivery] = React38.useState(null);
6811
6836
  React38.useEffect(() => {
6812
6837
  let cancelled = false;
6813
6838
  let provider;
@@ -6822,6 +6847,12 @@ function StorefrontConfigHost({
6822
6847
  }).catch(() => {
6823
6848
  });
6824
6849
  }
6850
+ if (config.delivery && typeof provider.getPublicDeliveryPolicy === "function") {
6851
+ void provider.getPublicDeliveryPolicy().then((saved) => {
6852
+ if (!cancelled) setDelivery(saved);
6853
+ }).catch(() => {
6854
+ });
6855
+ }
6825
6856
  if (typeof provider.getPublicStoreSettings !== "function") return;
6826
6857
  void provider.getPublicStoreSettings().then((settings) => {
6827
6858
  if (cancelled) return;
@@ -6840,8 +6871,8 @@ function StorefrontConfigHost({
6840
6871
  };
6841
6872
  }, [config]);
6842
6873
  const resolved = React38.useMemo(
6843
- () => applyBuyer(applyShippingSettings(applyStoreSettings(config, policy), shipping), buyer),
6844
- [config, policy, shipping, buyer?.language, buyer?.country]
6874
+ () => applyBuyer(applyDeliveryPolicy(applyShippingSettings(applyStoreSettings(config, policy), shipping), delivery), buyer),
6875
+ [config, policy, shipping, delivery, buyer?.language, buyer?.country]
6845
6876
  );
6846
6877
  return /* @__PURE__ */ jsx(StorefrontConfigProvider, { value: resolved, children: /* @__PURE__ */ jsx(MarketScope, { children }) });
6847
6878
  }
@@ -7879,6 +7910,9 @@ function CartDrawer() {
7879
7910
  if (!cart.isOpen) return null;
7880
7911
  const freeAbove = config.shipping.freeAbove;
7881
7912
  const missingForFree = freeAbove != null && subtotal < freeAbove ? freeAbove - subtotal : 0;
7913
+ const minOrder = config.delivery?.minOrderTotal ?? 0;
7914
+ const belowMinimum = minOrder > 0 && subtotal < minOrder;
7915
+ const paused = Boolean(config.delivery?.paused);
7882
7916
  const progress = freeAbove != null ? Math.min(100, subtotal / freeAbove * 100) : 0;
7883
7917
  return /* @__PURE__ */ jsxs("div", { className: "fixed inset-0 z-50", children: [
7884
7918
  /* @__PURE__ */ jsx(
@@ -8096,16 +8130,19 @@ function CartDrawer() {
8096
8130
  /* @__PURE__ */ jsx("dd", { "data-testid": TID.cartTotal, "data-price": total.toFixed(2), children: money(total) })
8097
8131
  ] })
8098
8132
  ] }),
8133
+ paused && /* @__PURE__ */ jsx("p", { "data-testid": "cart-delivery-paused", className: "mb-2 text-sm text-amber-700", children: t("cart.deliveryPaused") }),
8134
+ !paused && belowMinimum && /* @__PURE__ */ jsx("p", { "data-testid": "cart-minimum-order", className: "mb-2 text-sm text-amber-700", children: t("cart.minimumOrder", { amount: money(minOrder), missing: money(minOrder - subtotal) }) }),
8099
8135
  /* @__PURE__ */ jsx(
8100
8136
  "button",
8101
8137
  {
8102
8138
  type: "button",
8103
8139
  "data-testid": TID.goCheckout,
8140
+ disabled: belowMinimum || paused,
8104
8141
  onClick: () => {
8105
8142
  cart.closeDrawer();
8106
8143
  navigateTo("/checkout");
8107
8144
  },
8108
- className: "sf-cta w-full bg-primary py-3.5 font-semibold text-primary-foreground shadow-md transition-all hover:-translate-y-0.5 hover:shadow-lg",
8145
+ className: "sf-cta w-full bg-primary py-3.5 font-semibold text-primary-foreground shadow-md transition-all hover:-translate-y-0.5 hover:shadow-lg disabled:pointer-events-none disabled:opacity-50",
8109
8146
  style: { borderRadius: "var(--sf-radius-button)" },
8110
8147
  children: t("cart.checkout")
8111
8148
  }
@@ -10433,8 +10470,22 @@ function storeTime(iso, timeZone, options = {}) {
10433
10470
  timeZone
10434
10471
  }).format(new Date(iso));
10435
10472
  }
10473
+
10474
+ // src/lib/eta.ts
10475
+ function etaParts(minutes) {
10476
+ if (!Number.isFinite(minutes) || minutes <= 0) return null;
10477
+ const m = Math.round(minutes);
10478
+ if (m < 60) return { approx: true, text: `${m} min` };
10479
+ if (m < 1440) {
10480
+ const h = Math.floor(m / 60);
10481
+ const rest = m % 60;
10482
+ return { approx: true, text: rest ? `${h} h ${rest} min` : `${h} h` };
10483
+ }
10484
+ return { approx: false, text: `${Math.ceil(m / 60)} h` };
10485
+ }
10436
10486
  function StoreCover({ onShowHours }) {
10437
10487
  const config = useStorefrontConfig();
10488
+ const t = useT();
10438
10489
  const cover = config.delivery?.coverImage;
10439
10490
  const logo = config.delivery?.logoImage;
10440
10491
  const locality = config.delivery?.locality;
@@ -10472,6 +10523,13 @@ function StoreCover({ onShowHours }) {
10472
10523
  /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
10473
10524
  /* @__PURE__ */ jsx("h1", { className: "truncate text-xl font-bold leading-tight", children: config.name }),
10474
10525
  locality && /* @__PURE__ */ jsx("p", { className: "truncate text-sm text-white/70", children: locality }),
10526
+ config.delivery?.paused ? /* @__PURE__ */ jsxs("p", { "data-testid": "store-delivery-paused", className: "mt-0.5 inline-flex items-center gap-1.5 truncate text-sm font-semibold text-amber-300", children: [
10527
+ /* @__PURE__ */ jsx("span", { className: "h-2 w-2 shrink-0 rounded-full bg-amber-400", "aria-hidden": true }),
10528
+ t("delivery.paused")
10529
+ ] }) : (() => {
10530
+ const eta = type !== "pickup" && config.delivery?.etaMinutes ? etaParts(config.delivery.etaMinutes) : null;
10531
+ return eta ? /* @__PURE__ */ jsx("p", { "data-testid": "store-eta", className: "truncate text-sm text-white/80", children: t(eta.approx ? "delivery.eta" : "delivery.etaUpTo", { duration: eta.text }) }) : null;
10532
+ })(),
10475
10533
  showsHours && service.service && // O estado é o botão que abre a placa da porta. Um selo que diz
10476
10534
  // "Fechado" e não leva a lugar nenhum deixa a pessoa sem a única
10477
10535
  // pergunta seguinte que ela tem: então quando abre?
@@ -11140,7 +11198,8 @@ function ServiceHoursModal({ onClose }) {
11140
11198
  }
11141
11199
  function ClosedStoreDialog({
11142
11200
  onClose,
11143
- onShowHours
11201
+ onShowHours,
11202
+ paused = false
11144
11203
  }) {
11145
11204
  const state = useServiceStore();
11146
11205
  const tz = state.service?.timezone ?? "America/Sao_Paulo";
@@ -11153,9 +11212,9 @@ function ClosedStoreDialog({
11153
11212
  "data-testid": TID.serviceClosedGate,
11154
11213
  className: "fixed inset-0 z-[60] grid place-items-center bg-black/50 p-4",
11155
11214
  children: /* @__PURE__ */ jsxs("div", { className: "w-full max-w-sm rounded-2xl bg-background p-6 text-center", children: [
11156
- /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold", children: "Nossa loja est\xE1 fechada no momento" }),
11157
- /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: next ? `Abrimos ${storeTime(next, tz, { weekday: true })}. Enquanto isso, fique \xE0 vontade para olhar o card\xE1pio.` : "Enquanto isso, fique \xE0 vontade para olhar o card\xE1pio." }),
11158
- /* @__PURE__ */ jsx(
11215
+ /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold", children: paused ? "Nosso delivery est\xE1 fechado no momento" : "Nossa loja est\xE1 fechada no momento" }),
11216
+ /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: paused ? "Voltamos em breve. Enquanto isso, fique \xE0 vontade para olhar o card\xE1pio." : next ? `Abrimos ${storeTime(next, tz, { weekday: true })}. Enquanto isso, fique \xE0 vontade para olhar o card\xE1pio.` : "Enquanto isso, fique \xE0 vontade para olhar o card\xE1pio." }),
11217
+ !paused && /* @__PURE__ */ jsx(
11159
11218
  "button",
11160
11219
  {
11161
11220
  type: "button",
@@ -11164,7 +11223,7 @@ function ClosedStoreDialog({
11164
11223
  children: "Ver hor\xE1rios de funcionamento"
11165
11224
  }
11166
11225
  ),
11167
- /* @__PURE__ */ jsx("button", { type: "button", onClick: onClose, className: "mt-3 w-full py-2 text-sm font-medium", children: "OK, entendi" })
11226
+ /* @__PURE__ */ jsx("button", { type: "button", onClick: onClose, className: `${paused ? "mt-5" : "mt-3"} w-full py-2 text-sm font-medium`, children: "OK, entendi" })
11168
11227
  ] })
11169
11228
  }
11170
11229
  );
@@ -11462,7 +11521,8 @@ function MenuPage() {
11462
11521
  const [query, setQuery] = React38.useState("");
11463
11522
  const serviceState = useServiceStore();
11464
11523
  const refreshService = useServiceStore((s2) => s2.refresh);
11465
- const isOpen = selectIsOpen(serviceState);
11524
+ const paused = Boolean(config.delivery?.paused);
11525
+ const isOpen = selectIsOpen(serviceState) && !paused;
11466
11526
  React38.useEffect(() => {
11467
11527
  void refreshService();
11468
11528
  }, [refreshService]);
@@ -11626,7 +11686,7 @@ function MenuPage() {
11626
11686
  product: openProduct,
11627
11687
  onClose: () => setOpenProduct(null),
11628
11688
  disabled: !isOpen,
11629
- disabledReason: !isOpen ? "A loja est\xE1 fechada no momento." : void 0,
11689
+ disabledReason: !isOpen ? paused ? "O delivery est\xE1 fechado no momento." : "A loja est\xE1 fechada no momento." : void 0,
11630
11690
  onAdd: ({ quantity, options, notes }) => {
11631
11691
  guarded(() => {
11632
11692
  addToCart(openProduct, quantity, options, notes);
@@ -11662,6 +11722,7 @@ function MenuPage() {
11662
11722
  showClosed && /* @__PURE__ */ jsx(
11663
11723
  ClosedStoreDialog,
11664
11724
  {
11725
+ paused,
11665
11726
  onClose: () => setShowClosed(false),
11666
11727
  onShowHours: () => {
11667
11728
  setShowClosed(false);
@@ -14132,6 +14193,6 @@ ${formatErrors(report.errors)}`;
14132
14193
  return config;
14133
14194
  }
14134
14195
 
14135
- export { AddressForm, AddressSheet, AddressStrip, BEFORE_PLACE_ORDER_VALVE, BLOCK_STRUCTURAL_KEYS, BUYER_COUNTRY_COOKIE, BenefitsRow, BlockDataError, CART_LINE_ANNOTATION_POINT, CATALOG_BODY_BLOCK, CHECKOUT_FIELD_POINT, CartDrawer, CatalogPage, CategoryShowcase, CheckoutPage, ClosedStoreDialog, CollectionCta, CollectionHero, ContentPage, CountdownBand, CountrySelect, DeliverToPicker, EmailConfirmationRequiredError, EntityListBlock, FaqSection, FiltersPanel, FormBlock, HeroSection, ImageTiles, ItemSheet, Link, MESSAGES, ManifestoBlock, MediaCarousel, MenuItemRow, MenuPage, MenuToolbar, MotifStrip, MyPurchasesPage, NewsletterBand, ORDER_METADATA_POINT, OrderConfirmationPage, OrderTrackingTimeline, PAGE_DATA_SCRIPT_ID, PLACEHOLDER_ASPECTS, PRODUCT_BODY_BLOCK, PRODUCT_CARD_BADGE_POINT, PageDataScope, PaymentTerms, Price, ProductCard, ProductDetailPage, ProductEnquiryForm, ProductGallery, ProductGrid, ProductOptionSelector, ProductRail, ProductReviews, ProductSlider, ProductSpecs, ProductSpotlight, PromoBanner, QuantityInput, Reveal, STOREFRONT_COMPONENT_KEYS, STOREFRONT_PAGE_KINDS, STOREFRONT_SLOTS, STORE_BACKEND_PROVIDERS, STORE_COMMERCE_MODES, STORE_DOCUMENT_KIND, STORE_PAYMENT_METHOD_KINDS, STORE_PAYMENT_MODES, STORE_ROUTE_CHROMES, STORE_ROUTE_KINDS, STORE_SECTIONS, STORE_SECTION_NAMES, ScheduleSheet, SealsBand, SearchOverlay, ServiceHoursModal, Slot, SmoothImage, StepsSection, StoreCover, StorefrontConfigHost, StorefrontConfigProvider, StorefrontFooter, StorefrontHeader, StorefrontPage, StorefrontRouterProvider, StorefrontShell, StorefrontThemeStyle, StoryQuote, THEME_SCALE_FIELDS, THEME_SCALE_VAR_PREFIX, TID, Testimonials, TierCards, applyStoreSettings, bannerPlaceholder, blockInstanceId, buildEnquiryFromForm, checkPageBlocks, collectDataNeeds, collectOrderMetadata, contentPagePath, createStorefront, createStorefrontApp, currentStaticRenderPass, defaultPageBlocks, entityListBlockMeta, establishCustomerSession, exportStore, formatMoney, formatProductOptionSelection, getCartLineAnnotations, getCheckoutFieldContributions, getCustomerAuthAdapter, getProductCardBadges, getProductOptionGroups, hydrateStoreDocument, hydratedEntriesFor, initStorefrontRuntime, isJsonValue, isKnownPath, isNestedBlockRef, isPublicPath, isRecord, listSlots, marketForCountry, marketUnitPrice, matchContentPage, matchPath, matchesFacets, mergeCollectionFacet, mergePageTheme, navigateTo, nextMilestone, normalizeLanguage, normalizeProductOptionSelection, orderGalleryImages, overrideComponent, overrideProps, pageSeo, pageThemeSelector, pickProductCardImage, placeStorefrontOrder, prefersReducedMotion, primaryImageUrl, productCardComponentContract, productJsonLd, productOptionSelectionKey, productPlaceholder, productSeo, readHydratedPageData, registerStorefrontBlocks, registerStorefrontEntities, registerStorefrontExtensionPoints, registerStorefrontLoaders, resetPageDiagnostics, resetProductOptionsDeprecationWarnings, resetStorefrontExtensionPoints, resolveAuthAdapter, resolveConfig, resolveDataParams, resolveOverride, resolvePageData, resolvePageDataNeed, resolvePaymentTerms, resolveStorefrontProvider, resolveStorefrontRoute, resolveVariantForSelection, roundCents, routePathParams, runBeforePlaceOrderValve, sectionToJsonSchema, sectionsToBlocks, selectCount, selectDiscountTotal, selectIsOpen, selectRequiresShipping, selectShipping, selectShowsHours, selectSubtotal, selectTotal, selectionPrice, serializePageData, shellRouterAdapter, signInByEmail, signOutCustomer, signUpCustomer, slugifyStoreName, storefrontComponentContracts, storefrontPaths, themeToCss, toBlockNodes, toFacetMap, translate, useBlockData, useBuyerCountry, useBuyerStore, useCartStore, useCatalogStore, useCategories, useDeliveryStore, useDiscountValidator, useEnquiry, useHashPath, useInView, useLoader, useMarketProduct, useMarketStore, useMyOrders, useNavigate, usePopOnChange, useProduct, useProducts, useRoutePath, useRouterAdapter, useScrollToTopOnNavigate, useScrolled, useServiceStore, useSessionStore, useSlotContext, useStorefrontActions, useStorefrontConfig, useStorefrontConfigOptional, useStorefrontHead, useStorefrontPage, useStorefrontPageOptional, useT, usedSlots, validateStore, withFacet, withMarketPrice, withStaticRenderPass };
14136
- //# sourceMappingURL=chunk-PU7DSP2T.js.map
14137
- //# sourceMappingURL=chunk-PU7DSP2T.js.map
14196
+ export { AddressForm, AddressSheet, AddressStrip, BEFORE_PLACE_ORDER_VALVE, BLOCK_STRUCTURAL_KEYS, BUYER_COUNTRY_COOKIE, BenefitsRow, BlockDataError, CART_LINE_ANNOTATION_POINT, CATALOG_BODY_BLOCK, CHECKOUT_FIELD_POINT, CartDrawer, CatalogPage, CategoryShowcase, CheckoutPage, ClosedStoreDialog, CollectionCta, CollectionHero, ContentPage, CountdownBand, CountrySelect, DeliverToPicker, EmailConfirmationRequiredError, EntityListBlock, FaqSection, FiltersPanel, FormBlock, HeroSection, ImageTiles, ItemSheet, Link, MESSAGES, ManifestoBlock, MediaCarousel, MenuItemRow, MenuPage, MenuToolbar, MotifStrip, MyPurchasesPage, NewsletterBand, ORDER_METADATA_POINT, OrderConfirmationPage, OrderTrackingTimeline, PAGE_DATA_SCRIPT_ID, PLACEHOLDER_ASPECTS, PRODUCT_BODY_BLOCK, PRODUCT_CARD_BADGE_POINT, PageDataScope, PaymentTerms, Price, ProductCard, ProductDetailPage, ProductEnquiryForm, ProductGallery, ProductGrid, ProductOptionSelector, ProductRail, ProductReviews, ProductSlider, ProductSpecs, ProductSpotlight, PromoBanner, QuantityInput, Reveal, STOREFRONT_COMPONENT_KEYS, STOREFRONT_PAGE_KINDS, STOREFRONT_SLOTS, STORE_BACKEND_PROVIDERS, STORE_COMMERCE_MODES, STORE_DOCUMENT_KIND, STORE_PAYMENT_METHOD_KINDS, STORE_PAYMENT_MODES, STORE_ROUTE_CHROMES, STORE_ROUTE_KINDS, STORE_SECTIONS, STORE_SECTION_NAMES, ScheduleSheet, SealsBand, SearchOverlay, ServiceHoursModal, Slot, SmoothImage, StepsSection, StoreCover, StorefrontConfigHost, StorefrontConfigProvider, StorefrontFooter, StorefrontHeader, StorefrontPage, StorefrontRouterProvider, StorefrontShell, StorefrontThemeStyle, StoryQuote, THEME_SCALE_FIELDS, THEME_SCALE_VAR_PREFIX, TID, Testimonials, TierCards, applyDeliveryPolicy, applyStoreSettings, bannerPlaceholder, blockInstanceId, buildEnquiryFromForm, checkPageBlocks, collectDataNeeds, collectOrderMetadata, contentPagePath, createStorefront, createStorefrontApp, currentStaticRenderPass, defaultPageBlocks, entityListBlockMeta, establishCustomerSession, exportStore, formatMoney, formatProductOptionSelection, getCartLineAnnotations, getCheckoutFieldContributions, getCustomerAuthAdapter, getProductCardBadges, getProductOptionGroups, hydrateStoreDocument, hydratedEntriesFor, initStorefrontRuntime, isJsonValue, isKnownPath, isNestedBlockRef, isPublicPath, isRecord, listSlots, marketForCountry, marketUnitPrice, matchContentPage, matchPath, matchesFacets, mergeCollectionFacet, mergePageTheme, navigateTo, nextMilestone, normalizeLanguage, normalizeProductOptionSelection, orderGalleryImages, overrideComponent, overrideProps, pageSeo, pageThemeSelector, pickProductCardImage, placeStorefrontOrder, prefersReducedMotion, primaryImageUrl, productCardComponentContract, productJsonLd, productOptionSelectionKey, productPlaceholder, productSeo, readHydratedPageData, registerStorefrontBlocks, registerStorefrontEntities, registerStorefrontExtensionPoints, registerStorefrontLoaders, resetPageDiagnostics, resetProductOptionsDeprecationWarnings, resetStorefrontExtensionPoints, resolveAuthAdapter, resolveConfig, resolveDataParams, resolveOverride, resolvePageData, resolvePageDataNeed, resolvePaymentTerms, resolveStorefrontProvider, resolveStorefrontRoute, resolveVariantForSelection, roundCents, routePathParams, runBeforePlaceOrderValve, sectionToJsonSchema, sectionsToBlocks, selectCount, selectDiscountTotal, selectIsOpen, selectRequiresShipping, selectShipping, selectShowsHours, selectSubtotal, selectTotal, selectionPrice, serializePageData, shellRouterAdapter, signInByEmail, signOutCustomer, signUpCustomer, slugifyStoreName, storefrontComponentContracts, storefrontPaths, themeToCss, toBlockNodes, toFacetMap, translate, useBlockData, useBuyerCountry, useBuyerStore, useCartStore, useCatalogStore, useCategories, useDeliveryStore, useDiscountValidator, useEnquiry, useHashPath, useInView, useLoader, useMarketProduct, useMarketStore, useMyOrders, useNavigate, usePopOnChange, useProduct, useProducts, useRoutePath, useRouterAdapter, useScrollToTopOnNavigate, useScrolled, useServiceStore, useSessionStore, useSlotContext, useStorefrontActions, useStorefrontConfig, useStorefrontConfigOptional, useStorefrontHead, useStorefrontPage, useStorefrontPageOptional, useT, usedSlots, validateStore, withFacet, withMarketPrice, withStaticRenderPass };
14197
+ //# sourceMappingURL=chunk-XH6JP63K.js.map
14198
+ //# sourceMappingURL=chunk-XH6JP63K.js.map