cloudcommerce 2.3.1 → 2.3.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.
Files changed (150) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/ecomplus-stores/barra-doce/functions/many/package.json +3 -3
  3. package/ecomplus-stores/barra-doce/functions/ssr/package.json +6 -6
  4. package/ecomplus-stores/barra-doce/functions/with-apps/package.json +3 -3
  5. package/ecomplus-stores/barra-doce/package.json +2 -2
  6. package/package.json +6 -6
  7. package/packages/api/package.json +1 -1
  8. package/packages/apps/affiliate-program/package.json +1 -1
  9. package/packages/apps/correios/package.json +2 -2
  10. package/packages/apps/custom-payment/package.json +1 -1
  11. package/packages/apps/custom-shipping/package.json +1 -1
  12. package/packages/apps/datafrete/package.json +1 -1
  13. package/packages/apps/discounts/package.json +1 -1
  14. package/packages/apps/emails/package.json +1 -1
  15. package/packages/apps/fb-conversions/package.json +2 -2
  16. package/packages/apps/flash-courier/package.json +1 -1
  17. package/packages/apps/frenet/package.json +1 -1
  18. package/packages/apps/galaxpay/package.json +1 -1
  19. package/packages/apps/google-analytics/package.json +1 -1
  20. package/packages/apps/jadlog/package.json +1 -1
  21. package/packages/apps/loyalty-points/package.json +1 -1
  22. package/packages/apps/mandae/package.json +1 -1
  23. package/packages/apps/melhor-envio/package.json +1 -1
  24. package/packages/apps/mercadopago/package.json +1 -1
  25. package/packages/apps/pagarme/package.json +1 -1
  26. package/packages/apps/pagarme-v5/package.json +1 -1
  27. package/packages/apps/paghiper/package.json +1 -1
  28. package/packages/apps/pix/package.json +1 -1
  29. package/packages/apps/tiny-erp/package.json +1 -1
  30. package/packages/apps/webhooks/package.json +1 -1
  31. package/packages/cli/package.json +1 -1
  32. package/packages/config/package.json +1 -1
  33. package/packages/emails/package.json +1 -1
  34. package/packages/eslint/package.json +5 -5
  35. package/packages/events/package.json +1 -1
  36. package/packages/feeds/package.json +1 -1
  37. package/packages/firebase/package.json +2 -2
  38. package/packages/i18n/package.json +1 -1
  39. package/packages/modules/package.json +1 -1
  40. package/packages/passport/package.json +1 -1
  41. package/packages/ssr/lib/lib/analytics/send-to-ga4.js +2 -1
  42. package/packages/ssr/lib/lib/analytics/send-to-ga4.js.map +1 -1
  43. package/packages/ssr/lib/lib/analytics-events.js +11 -1
  44. package/packages/ssr/lib/lib/analytics-events.js.map +1 -1
  45. package/packages/ssr/lib/lib/serve-storefront.js +35 -21
  46. package/packages/ssr/lib/lib/serve-storefront.js.map +1 -1
  47. package/packages/ssr/package.json +3 -3
  48. package/packages/ssr/src/lib/analytics/send-to-ga4.ts +2 -0
  49. package/packages/ssr/src/lib/analytics-events.ts +11 -1
  50. package/packages/ssr/src/lib/serve-storefront.ts +36 -22
  51. package/packages/storefront/astro.config.mjs +4 -1
  52. package/packages/storefront/config/astro/vue-server.mjs +64 -0
  53. package/packages/storefront/dist/client/_astro/{AccountPage.3-eqV6OR.js → AccountPage.0M6_FdU6.js} +1 -1
  54. package/packages/storefront/dist/client/_astro/{CartSidebar.-Gy6eqIy.js → CartSidebar.L0Vbhsdt.js} +1 -1
  55. package/packages/storefront/dist/client/_astro/ProductDetails.FQtM5kpd.js +7 -0
  56. package/packages/storefront/dist/client/_astro/{ProductShelf.qbTNzuvn.js → ProductShelf.-4fsYkPB.js} +1 -1
  57. package/packages/storefront/dist/client/_astro/{ProductShelf.b77WjhZZ.js → ProductShelf.GAAhKdTN.js} +1 -1
  58. package/packages/storefront/dist/client/_astro/{SearchModal.WzDMBjqi.js → SearchModal.rasg5jV6.js} +1 -1
  59. package/packages/storefront/dist/client/_astro/SearchShowcase.kA6jICYo.js +1 -0
  60. package/packages/storefront/dist/client/_astro/ShopHeader.v_L96Y90.js +7 -0
  61. package/packages/storefront/dist/client/_astro/{_slug_.WkuZ8tvp.css → _slug_.4W7qhV-L.css} +1 -1
  62. package/packages/storefront/dist/client/_astro/customer-session.ZD6tLDQJ.js +7 -0
  63. package/packages/storefront/dist/client/_astro/{firebase-app.VduCDgof.js → firebase-app.iLdzDVjL.js} +1 -1
  64. package/packages/storefront/dist/client/_astro/hoisted.GaT7bmE3.js +1 -0
  65. package/packages/storefront/dist/client/_astro/{hoisted.xTPkED8g.js → hoisted.ICXGWNEA.js} +1 -1
  66. package/packages/storefront/dist/client/_astro/hoisted.XOXTrHqn.js +1 -0
  67. package/packages/storefront/dist/client/_astro/{index-dd468b12.fl8bpn8l.js → index-bea2a320.eWykogwr.js} +93 -93
  68. package/packages/storefront/dist/client/_astro/{shopping-cart.v-dB3kHB.js → shopping-cart.nSNNOrp9.js} +1 -1
  69. package/packages/storefront/dist/client/_astro/use-analytics.wTmoP8B1.js +1 -0
  70. package/packages/storefront/dist/client/_astro/{use-product-card.nNtSJVtB.js → use-product-card.UFr8SCuD.js} +1 -1
  71. package/packages/storefront/dist/client/_astro/use-text-value.lKqoIagH.js +4 -0
  72. package/packages/storefront/dist/server/chunks/{CartSidebar_blvgfFa-.mjs → CartSidebar_3_1aFp67.mjs} +1 -1
  73. package/packages/storefront/dist/server/chunks/{SearchModal_Sktaq643.mjs → SearchModal_2azP1u7P.mjs} +1 -1
  74. package/packages/storefront/dist/server/chunks/_.._19fCuQdO.mjs +5 -0
  75. package/packages/storefront/dist/server/chunks/{_page__9PfWVh79.mjs → _page__qqIVxbal.mjs} +1 -1
  76. package/packages/storefront/dist/server/chunks/{account_R4bpY7O1.mjs → account_vK6pmJlz.mjs} +1 -1
  77. package/packages/storefront/dist/server/chunks/astro/{assets-service_oQ4-9MNg.mjs → assets-service_631fRtTy.mjs} +66 -11
  78. package/packages/storefront/dist/server/chunks/{astro_ECsNQeA2.mjs → astro_u-oSb215.mjs} +8 -2
  79. package/packages/storefront/dist/server/chunks/{index__PeYBuja.mjs → index__05fnqFh.mjs} +1 -1
  80. package/packages/storefront/dist/server/chunks/{node_njrZIjT6.mjs → node_zqXXqc-u.mjs} +1 -1
  81. package/packages/storefront/dist/server/chunks/pages/{__XOsz50la.mjs → __ZucPYaOo.mjs} +380 -118
  82. package/packages/storefront/dist/server/chunks/pages/{_page__cIw_KTpN.mjs → _page__0sN9U0SD.mjs} +19 -3
  83. package/packages/storefront/dist/server/chunks/pages/account_OQr_6KN1.mjs +33 -0
  84. package/packages/storefront/dist/server/chunks/pages/{index_KP7Gn0ld.mjs → index_3IjgOEIq.mjs} +15 -4
  85. package/packages/storefront/dist/server/chunks/pages/node_OmjWRf8D.mjs +112 -0
  86. package/packages/storefront/dist/server/chunks/pages/~fallback_133FK-CP.mjs +59 -0
  87. package/packages/storefront/dist/server/chunks/~fallback_Wahcp9Wk.mjs +5 -0
  88. package/packages/storefront/dist/server/entry.mjs +9 -9
  89. package/packages/storefront/dist/server/manifest_9FASPYUE.mjs +202 -0
  90. package/packages/storefront/dist/server/renderers.mjs +45 -34
  91. package/packages/storefront/package.json +4 -4
  92. package/packages/storefront/server.d.ts +0 -1
  93. package/packages/storefront/src/lib/$storefront.d.ts +23 -16
  94. package/packages/storefront/src/lib/composables/use-pagination.ts +1 -3
  95. package/packages/storefront/src/lib/layouts/BaseHead.astro +5 -0
  96. package/packages/storefront/src/lib/scripts/push-analytics-events.ts +8 -6
  97. package/packages/storefront/src/lib/ssr-context.ts +46 -6
  98. package/packages/storefront/src/lib/state/use-analytics.ts +12 -11
  99. package/packages/storefront/src/lib/state/use-storage.ts +23 -9
  100. package/packages/test-base/package.json +1 -1
  101. package/packages/types/package.json +1 -1
  102. package/packages/storefront/dist/client/_astro/ProductDetails.ATGXfGhG.js +0 -7
  103. package/packages/storefront/dist/client/_astro/SearchShowcase.9gIA4Cq0.js +0 -1
  104. package/packages/storefront/dist/client/_astro/ShopHeader.Ee4OJr3q.js +0 -7
  105. package/packages/storefront/dist/client/_astro/customer-session.dSYHWdP4.js +0 -7
  106. package/packages/storefront/dist/client/_astro/ecom-icon_12falx.png +0 -0
  107. package/packages/storefront/dist/client/_astro/ecom-icon_15pqnO.png +0 -0
  108. package/packages/storefront/dist/client/_astro/ecom-icon_t3guw.png +0 -0
  109. package/packages/storefront/dist/client/_astro/headphone_T2Jjc.avif +0 -0
  110. package/packages/storefront/dist/client/_astro/headphone_Z1CG18r.webp +0 -0
  111. package/packages/storefront/dist/client/_astro/hoisted.d2SGwVMl.js +0 -1
  112. package/packages/storefront/dist/client/_astro/hoisted.x1b7VHef.js +0 -1
  113. package/packages/storefront/dist/client/_astro/logo_1UBsBq.webp +0 -0
  114. package/packages/storefront/dist/client/_astro/logo_Z1K5PE9.png +0 -0
  115. package/packages/storefront/dist/client/_astro/logo_Z1KIIl1.avif +0 -0
  116. package/packages/storefront/dist/client/_astro/passion_LHbe9.webp +0 -0
  117. package/packages/storefront/dist/client/_astro/passion_Z23MeUb.avif +0 -0
  118. package/packages/storefront/dist/client/_astro/rect8589_1TtOHY.png +0 -0
  119. package/packages/storefront/dist/client/_astro/rect8589_1f5opX.webp +0 -0
  120. package/packages/storefront/dist/client/_astro/rect8589_IUskt.webp +0 -0
  121. package/packages/storefront/dist/client/_astro/rect8589_Uxfdf.png +0 -0
  122. package/packages/storefront/dist/client/_astro/rect8589_Z15uApA.png +0 -0
  123. package/packages/storefront/dist/client/_astro/rect8589_Z1Ap1Im.avif +0 -0
  124. package/packages/storefront/dist/client/_astro/rect8589_Z1JT1HB.webp +0 -0
  125. package/packages/storefront/dist/client/_astro/rect8589_ZY9mtN.avif +0 -0
  126. package/packages/storefront/dist/client/_astro/rect8589_tMFW0.avif +0 -0
  127. package/packages/storefront/dist/client/_astro/rect859_1TgQXS.avif +0 -0
  128. package/packages/storefront/dist/client/_astro/rect859_2Nm1z.avif +0 -0
  129. package/packages/storefront/dist/client/_astro/rect859_DIqwR.png +0 -0
  130. package/packages/storefront/dist/client/_astro/rect859_Z1IKDb2.png +0 -0
  131. package/packages/storefront/dist/client/_astro/rect859_Z29FI4V.webp +0 -0
  132. package/packages/storefront/dist/client/_astro/rect859_Z2kFHGk.avif +0 -0
  133. package/packages/storefront/dist/client/_astro/rect859_ZkpPFI.webp +0 -0
  134. package/packages/storefront/dist/client/_astro/rect859_jXzBi.png +0 -0
  135. package/packages/storefront/dist/client/_astro/rect859_x1l16.webp +0 -0
  136. package/packages/storefront/dist/client/_astro/rect89_1TSfW7.avif +0 -0
  137. package/packages/storefront/dist/client/_astro/rect89_Z1re32x.webp +0 -0
  138. package/packages/storefront/dist/client/_astro/use-analytics._ef6TM4P.js +0 -1
  139. package/packages/storefront/dist/client/_astro/use-text-value.0OP9HCfP.js +0 -4
  140. package/packages/storefront/dist/client/~fallback.html +0 -99
  141. package/packages/storefront/dist/client/~index.html +0 -131
  142. package/packages/storefront/dist/server/chunks/_.._yTK2xBRC.mjs +0 -5
  143. package/packages/storefront/dist/server/chunks/pages/account_l-FHyDJd.mjs +0 -23
  144. package/packages/storefront/dist/server/chunks/pages/node_FoLtkdH1.mjs +0 -257
  145. package/packages/storefront/dist/server/chunks/pages/~fallback_KPp6Nh_p.mjs +0 -34
  146. package/packages/storefront/dist/server/chunks/~fallback_p7P7NIL5.mjs +0 -5
  147. package/packages/storefront/dist/server/images.dist.csv +0 -30
  148. package/packages/storefront/dist/server/images.src.csv +0 -11
  149. package/packages/storefront/dist/server/manifest_E6KbHQrT.mjs +0 -202
  150. package/packages/storefront/dist/server/static-builds.csv +0 -71
@@ -1,18 +1,21 @@
1
1
  import { img, imgSizes, i18n, formatMoney, price, randomObjectId, nickname, inStock, gridTitle, categoriesList, name, onPromotion, variationsGrids, specTextValue, specValueByText } from '@ecomplus/utils';
2
- import { c as createAstro, b as createComponent, r as renderTemplate, d as addAttribute, u as unescapeHTML, e as renderComponent, f as createTransitionScope, s as spreadAttributes, g as renderSlotToString, h as renderAllHeadContent, m as maybeRenderHead, i as renderSlot$1, F as Fragment } from '../astro_ECsNQeA2.mjs';
2
+ import '@astrojs/internal-helpers/path';
3
+ import { A as AstroError, c as ExpectedImageOptions, E as ExpectedImage, d as InvalidImageService, e as createAstro, f as createComponent, g as ImageMissingAlt, r as renderTemplate, m as maybeRenderHead, h as addAttribute, s as spreadAttributes, u as unescapeHTML, i as renderComponent, j as createTransitionScope, k as renderSlotToString, l as renderAllHeadContent, n as renderSlot$1, F as Fragment } from '../astro_u-oSb215.mjs';
3
4
  import 'kleur/colors';
4
5
  import 'cssesc';
5
6
  import api from '@cloudcommerce/api';
6
7
  import { EventEmitter } from 'node:events';
7
- import fs, { readFileSync } from 'node:fs';
8
- import { resolve, join } from 'node:path';
8
+ import { useSSRContext, defineComponent, computed, createVNode, resolveDynamicComponent, mergeProps, withCtx, renderSlot, inject, ref, watch, toRef, onMounted, onBeforeUnmount, provide, getCurrentInstance, reactive, shallowRef, resolveComponent, withDirectives, vShow, openBlock, createBlock, createCommentVNode, Fragment as Fragment$1, renderList, nextTick, withModifiers, Teleport, createTextVNode, toDisplayString, defineAsyncComponent, vModelText, Suspense, createSlots, shallowReactive, withAsyncContext, vModelRadio } from 'vue';
9
+ import fs, { copyFileSync } from 'node:fs';
10
+ import { resolve, join, basename as basename$1 } from 'node:path';
9
11
  import { parse } from 'yaml';
10
12
  import config from '@cloudcommerce/config';
11
13
  import 'clsx';
12
14
  /* empty css */
13
15
  import { renderSync, parse as parse$1, ELEMENT_NODE, walkSync } from 'ultrahtml';
14
16
  import mime from 'mime/lite.js';
15
- import { useSSRContext, defineComponent, computed, createVNode, resolveDynamicComponent, mergeProps, withCtx, renderSlot, inject, ref, watch, toRef, onMounted, onBeforeUnmount, provide, reactive, shallowRef, resolveComponent, withDirectives, vShow, openBlock, createBlock, createCommentVNode, Fragment as Fragment$1, renderList, nextTick, withModifiers, Teleport, createTextVNode, toDisplayString, defineAsyncComponent, vModelText, Suspense, createSlots, shallowReactive, withAsyncContext, vModelRadio } from 'vue';
17
+ import { i as isESMImportedImage, a as isLocalService, b as isRemoteImage, D as DEFAULT_HASH_PROPS } from '../astro/assets-service_631fRtTy.mjs';
18
+ import imageSize from 'image-size';
16
19
  import { ssrRenderSlotInner, ssrRenderVNode, ssrRenderSlot, ssrRenderAttrs, ssrRenderClass, ssrRenderComponent, ssrRenderStyle, ssrRenderList, ssrIncludeBooleanAttr, ssrRenderAttr, ssrRenderTeleport, ssrInterpolate, ssrRenderSuspense, ssrLooseEqual } from 'vue/server-renderer';
17
20
  import { useScroll, useElementHover, useDebounceFn, watchDebounced, useTimeout, promiseTimeout, watchOnce, onClickOutside, useUrlSearchParams, createReusableTemplate } from '@vueuse/core';
18
21
  import mitt from 'mitt';
@@ -668,6 +671,153 @@ const mod = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
668
671
  default: createApp
669
672
  }, Symbol.toStringTag, { value: 'Module' }));
670
673
 
674
+ async function getConfiguredImageService() {
675
+ if (!globalThis?.astroAsset?.imageService) {
676
+ const { default: service } = await import(
677
+ // @ts-expect-error
678
+ '../astro/assets-service_631fRtTy.mjs'
679
+ ).then(n => n.s).catch((e) => {
680
+ const error = new AstroError(InvalidImageService);
681
+ error.cause = e;
682
+ throw error;
683
+ });
684
+ if (!globalThis.astroAsset)
685
+ globalThis.astroAsset = {};
686
+ globalThis.astroAsset.imageService = service;
687
+ return service;
688
+ }
689
+ return globalThis.astroAsset.imageService;
690
+ }
691
+ async function getImage$1(options, imageConfig) {
692
+ if (!options || typeof options !== "object") {
693
+ throw new AstroError({
694
+ ...ExpectedImageOptions,
695
+ message: ExpectedImageOptions.message(JSON.stringify(options))
696
+ });
697
+ }
698
+ if (typeof options.src === "undefined") {
699
+ throw new AstroError({
700
+ ...ExpectedImage,
701
+ message: ExpectedImage.message(
702
+ options.src,
703
+ "undefined",
704
+ JSON.stringify(options)
705
+ )
706
+ });
707
+ }
708
+ const service = await getConfiguredImageService();
709
+ const resolvedOptions = {
710
+ ...options,
711
+ src: typeof options.src === "object" && "then" in options.src ? (await options.src).default ?? await options.src : options.src
712
+ };
713
+ const originalPath = isESMImportedImage(resolvedOptions.src) ? resolvedOptions.src.fsPath : resolvedOptions.src;
714
+ const clonedSrc = isESMImportedImage(resolvedOptions.src) ? (
715
+ // @ts-expect-error - clone is a private, hidden prop
716
+ resolvedOptions.src.clone ?? resolvedOptions.src
717
+ ) : resolvedOptions.src;
718
+ resolvedOptions.src = clonedSrc;
719
+ const validatedOptions = service.validateOptions ? await service.validateOptions(resolvedOptions, imageConfig) : resolvedOptions;
720
+ const srcSetTransforms = service.getSrcSet ? await service.getSrcSet(validatedOptions, imageConfig) : [];
721
+ let imageURL = await service.getURL(validatedOptions, imageConfig);
722
+ let srcSets = await Promise.all(
723
+ srcSetTransforms.map(async (srcSet) => ({
724
+ transform: srcSet.transform,
725
+ url: await service.getURL(srcSet.transform, imageConfig),
726
+ descriptor: srcSet.descriptor,
727
+ attributes: srcSet.attributes
728
+ }))
729
+ );
730
+ if (isLocalService(service) && globalThis.astroAsset.addStaticImage && !(isRemoteImage(validatedOptions.src) && imageURL === validatedOptions.src)) {
731
+ const propsToHash = service.propertiesToHash ?? DEFAULT_HASH_PROPS;
732
+ imageURL = globalThis.astroAsset.addStaticImage(validatedOptions, propsToHash, originalPath);
733
+ srcSets = srcSetTransforms.map((srcSet) => ({
734
+ transform: srcSet.transform,
735
+ url: globalThis.astroAsset.addStaticImage(srcSet.transform, propsToHash, originalPath),
736
+ descriptor: srcSet.descriptor,
737
+ attributes: srcSet.attributes
738
+ }));
739
+ }
740
+ return {
741
+ rawOptions: resolvedOptions,
742
+ options: validatedOptions,
743
+ src: imageURL,
744
+ srcSet: {
745
+ values: srcSets,
746
+ attribute: srcSets.map((srcSet) => `${srcSet.url} ${srcSet.descriptor}`).join(", ")
747
+ },
748
+ attributes: service.getHTMLAttributes !== void 0 ? await service.getHTMLAttributes(validatedOptions, imageConfig) : {}
749
+ };
750
+ }
751
+
752
+ const $$Astro$h = createAstro("https://demo.ecomplus.app");
753
+ const $$Image = createComponent(async ($$result, $$props, $$slots) => {
754
+ const Astro2 = $$result.createAstro($$Astro$h, $$props, $$slots);
755
+ Astro2.self = $$Image;
756
+ const props = Astro2.props;
757
+ if (props.alt === void 0 || props.alt === null) {
758
+ throw new AstroError(ImageMissingAlt);
759
+ }
760
+ if (typeof props.width === "string") {
761
+ props.width = parseInt(props.width);
762
+ }
763
+ if (typeof props.height === "string") {
764
+ props.height = parseInt(props.height);
765
+ }
766
+ const image = await getImage(props);
767
+ const additionalAttributes = {};
768
+ if (image.srcSet.values.length > 0) {
769
+ additionalAttributes.srcset = image.srcSet.attribute;
770
+ }
771
+ return renderTemplate`${maybeRenderHead()}<img${addAttribute(image.src, "src")}${spreadAttributes(additionalAttributes)}${spreadAttributes(image.attributes)}>`;
772
+ }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/node_modules/astro/components/Image.astro", void 0);
773
+
774
+ const $$Astro$g = createAstro("https://demo.ecomplus.app");
775
+ const $$Picture$1 = createComponent(async ($$result, $$props, $$slots) => {
776
+ const Astro2 = $$result.createAstro($$Astro$g, $$props, $$slots);
777
+ Astro2.self = $$Picture$1;
778
+ const defaultFormats = ["webp"];
779
+ const defaultFallbackFormat = "png";
780
+ const specialFormatsFallback = ["gif", "svg", "jpg", "jpeg"];
781
+ const { formats = defaultFormats, pictureAttributes = {}, fallbackFormat, ...props } = Astro2.props;
782
+ if (props.alt === void 0 || props.alt === null) {
783
+ throw new AstroError(ImageMissingAlt);
784
+ }
785
+ const optimizedImages = await Promise.all(
786
+ formats.map(
787
+ async (format) => await getImage({ ...props, format, widths: props.widths, densities: props.densities })
788
+ )
789
+ );
790
+ let resultFallbackFormat = fallbackFormat ?? defaultFallbackFormat;
791
+ if (!fallbackFormat && isESMImportedImage(props.src) && specialFormatsFallback.includes(props.src.format)) {
792
+ resultFallbackFormat = props.src.format;
793
+ }
794
+ const fallbackImage = await getImage({
795
+ ...props,
796
+ format: resultFallbackFormat,
797
+ widths: props.widths,
798
+ densities: props.densities
799
+ });
800
+ const imgAdditionalAttributes = {};
801
+ const sourceAdditionaAttributes = {};
802
+ if (props.sizes) {
803
+ sourceAdditionaAttributes.sizes = props.sizes;
804
+ }
805
+ if (fallbackImage.srcSet.values.length > 0) {
806
+ imgAdditionalAttributes.srcset = fallbackImage.srcSet.attribute;
807
+ }
808
+ return renderTemplate`${maybeRenderHead()}<picture${spreadAttributes(pictureAttributes)}>
809
+ ${Object.entries(optimizedImages).map(([_, image]) => {
810
+ const srcsetAttribute = props.densities || !props.densities && !props.widths ? `${image.src}${image.srcSet.values.length > 0 ? ", " + image.srcSet.attribute : ""}` : image.srcSet.attribute;
811
+ return renderTemplate`<source${addAttribute(srcsetAttribute, "srcset")}${addAttribute("image/" + image.options.format, "type")}${spreadAttributes(sourceAdditionaAttributes)}>`;
812
+ })}
813
+ <img${addAttribute(fallbackImage.src, "src")}${spreadAttributes(imgAdditionalAttributes)}${spreadAttributes(fallbackImage.attributes)}>
814
+ </picture>`;
815
+ }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/node_modules/astro/components/Picture.astro", void 0);
816
+
817
+ const imageConfig = {"service":{"entrypoint":"astro/assets/services/sharp","config":{}},"domains":[],"remotePatterns":[],"endpoint":"astro/assets/endpoint/node"};
818
+ const assetsDir = new URL("file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/dist/client/");
819
+ const getImage = async (options) => await getImage$1(options, imageConfig);
820
+
671
821
  const i19aboveOf = "Acima de";
672
822
  const i19brands = "Marcas";
673
823
  const i19categories = "Categorias";
@@ -851,14 +1001,32 @@ if (!globalThis.$apiMergeConfig) {
851
1001
  if (!globalThis.$apiPrefetchEndpoints) {
852
1002
  globalThis.$apiPrefetchEndpoints = [];
853
1003
  }
1004
+ const sessions = {};
854
1005
  if (!globalThis.$storefront) {
855
- globalThis.$storefront = {
1006
+ globalThis.$storefront = new Proxy({
856
1007
  settings: {},
857
- onLoad(callback) {
858
- emitter$1.once("load", callback);
1008
+ data: {},
1009
+ url: void 0,
1010
+ getSession(sid) {
1011
+ if (!sid && !!getCurrentInstance()) {
1012
+ sid = inject("sid");
1013
+ }
1014
+ return sid && sessions[sid] || global.__sfSession;
859
1015
  },
860
- data: {}
861
- };
1016
+ onLoad(callback, sid) {
1017
+ emitter$1.once(sid ? `load:${sid}` : "load", callback);
1018
+ }
1019
+ }, {
1020
+ get(target, prop) {
1021
+ if (prop === "apiContext") {
1022
+ return target.getSession().apiContext;
1023
+ }
1024
+ if (prop === "url") {
1025
+ return target.getSession().url;
1026
+ }
1027
+ return target[prop];
1028
+ }
1029
+ });
862
1030
  }
863
1031
  const setResponseCache = (Astro, maxAge, sMaxAge) => {
864
1032
  const headerName = "Cache-Control" ;
@@ -880,7 +1048,9 @@ const loadRouteContext = async (Astro, {
880
1048
  contentCollection,
881
1049
  apiPrefetchEndpoints = globalThis.$apiPrefetchEndpoints
882
1050
  } = {}) => {
883
- globalThis.astroUrl = Astro.url;
1051
+ const sid = `${Date.now() + Math.random()}`;
1052
+ sessions[sid] = { url: Astro.url };
1053
+ global.__sfSession = sessions[sid];
884
1054
  const startedAt = Date.now();
885
1055
  let urlPath = Astro.url.pathname;
886
1056
  const isPreview = urlPath.startsWith("/~preview");
@@ -937,11 +1107,15 @@ const loadRouteContext = async (Astro, {
937
1107
  }).catch(console.warn);
938
1108
  const apiDoc = apiContext.doc;
939
1109
  apiState[`${apiResource}/${apiDoc._id}`] = apiDoc;
940
- globalThis.$storefront.apiContext = {
1110
+ sessions[sid].apiContext = {
941
1111
  resource: apiResource,
942
1112
  doc: apiDoc,
943
1113
  timestamp: Date.now()
944
1114
  };
1115
+ setTimeout(() => {
1116
+ sessions[sid] = null;
1117
+ delete sessions[sid];
1118
+ }, 5e3);
945
1119
  resolve(null);
946
1120
  }).catch((err) => {
947
1121
  if (prefetchingsIndex > -1) {
@@ -1001,7 +1175,9 @@ const loadRouteContext = async (Astro, {
1001
1175
  }
1002
1176
  Astro.locals.assetsPrefix = assetsPrefix || "";
1003
1177
  }
1004
- if (urlPath === "/~fallback") {
1178
+ if (isPreview) {
1179
+ setResponseCache(Astro, 0);
1180
+ } else if (urlPath === "/~fallback") {
1005
1181
  setResponseCache(Astro, 3600, 86400);
1006
1182
  } else if (isHomepage) {
1007
1183
  setResponseCache(Astro, 180);
@@ -1017,11 +1193,14 @@ const loadRouteContext = async (Astro, {
1017
1193
  fetchingApiContext,
1018
1194
  apiContext,
1019
1195
  apiState,
1020
- isPreview
1196
+ isPreview,
1197
+ sid
1021
1198
  // Astro,
1022
1199
  };
1023
1200
  Astro.locals.routeContext = routeContext;
1201
+ Astro.cookies.set("sid", sid);
1024
1202
  emitter$1.emit("load", routeContext);
1203
+ emitter$1.emit(`load:${sid}`, routeContext);
1025
1204
  globalThis.__sfIds = {};
1026
1205
  return routeContext;
1027
1206
  };
@@ -1035,7 +1214,9 @@ const $$ViewTransitions = createComponent(async ($$result, $$props, $$slots) =>
1035
1214
  const Astro2 = $$result.createAstro($$Astro$f, $$props, $$slots);
1036
1215
  Astro2.self = $$ViewTransitions;
1037
1216
  const { fallback = "animate" } = Astro2.props;
1038
- return renderTemplate`<meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback"${addAttribute(fallback, "content")}>`;
1217
+ return renderTemplate`<meta name="astro-view-transitions-enabled" content="true">
1218
+ <meta name="astro-view-transitions-fallback"${addAttribute(fallback, "content")}>
1219
+ `;
1039
1220
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/components/ViewTransitions.astro", void 0);
1040
1221
 
1041
1222
  var __freeze$3 = Object.freeze;
@@ -1160,11 +1341,16 @@ setTimeout(() => {
1160
1341
  inlineClientJS += `
1161
1342
  window._firstLoadContextId = '${apiDoc._id}';`;
1162
1343
  contextInlineClientJS = `
1344
+ $storefront.url = new URL(window.location.toString());
1163
1345
  $storefront.apiContext = ${JSON.stringify({
1164
1346
  resource: apiContext.resource,
1165
1347
  doc: minifyApiDoc({ ...apiDoc }),
1166
1348
  timestamp: Date.now()
1167
1349
  })};
1350
+ $storefront.getSession = (/* sid */) => {
1351
+ url: $storefront.url,
1352
+ apiContext: $storefront.apiContext,
1353
+ };
1168
1354
  $storefront.context /* DEPRECATED */ = $storefront.apiContext;
1169
1355
  _emitApiContext('${apiDoc._id}');`;
1170
1356
  } else {
@@ -1187,7 +1373,7 @@ window.$isCmsPreview = true;`;
1187
1373
  url: `https://${domain}/`,
1188
1374
  logo: `https://${domain}${settings.logo}`
1189
1375
  });
1190
- return renderTemplate(_c || (_c = __template$3(['<meta charset="UTF-8"> <meta name="viewport" content="width=device-width"> <meta name="theme-color"', '> <link rel="icon" type="image/png"', ' sizes="32x32"> ', " ", " ", ' <meta name="author"', '> <meta name="generator"', '> <link rel="canonical"', "> ", ' <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="default"> <meta property="og:site_name"', '> <meta property="og:url"', '> <meta property="og:title"', '> <meta property="og:description"', '> <meta property="og:type" content="website"> <meta property="og:locale"', "> ", " ", ' <meta name="twitter:card" content="summary"> ', ' <meta name="ecom-store-id"', "> ", " <script", ">", '</script> <script type="application/ld+json">', "</script> ", " ", ""])), addAttribute(primaryColor, "content"), addAttribute(favicon, "href"), shortcutIcon && renderTemplate`<link rel="icon" type="image/png"${addAttribute(shortcutIcon, "href")} sizes="192x192">`, title && renderTemplate`<title>${title}</title>`, description && renderTemplate`<meta name="description"${addAttribute(description, "content")}>`, addAttribute(settings.name, "content"), addAttribute(Astro2.generator, "content"), addAttribute(canonicalUrl, "href"), shortcutIcon && renderTemplate`<link rel="apple-touch-icon"${addAttribute(shortcutIcon, "href")}>`, addAttribute(settings.name, "content"), addAttribute(canonicalUrl, "content"), addAttribute(title, "content"), addAttribute(description, "content"), addAttribute(ogLocale, "content"), ogImage && renderTemplate`<meta property="og:image"${addAttribute(ogImage, "content")}>`, metatagsContent?.fbAppId && renderTemplate`<meta property="fb:app_id"${addAttribute(metatagsContent.fbAppId, "content")}>`, metatagsContent?.twitterUsername && renderTemplate`<meta name="twitter:site"${addAttribute(metatagsContent.twitterUsername, "content")}>`, addAttribute(String(storeId), "content"), isPWA , addAttribute(createTransitionScope($$result, "kvdive2p"), "data-astro-transition-persist"), unescapeHTML(inlineClientJS), unescapeHTML(inlineJSONLd), hasViewTransitions && renderTemplate`${renderComponent($$result, "ViewTransitions", $$ViewTransitions, { "fallback": "none" })}`, contextInlineClientJS && renderTemplate(_b || (_b = __template$3(["<script>", "</script>"])), unescapeHTML(contextInlineClientJS)));
1376
+ return renderTemplate(_c || (_c = __template$3(['<meta charset="UTF-8">\n<meta name="viewport" content="width=device-width">\n<meta name="theme-color"', '>\n<link rel="icon" type="image/png"', ' sizes="32x32">\n', "\n", "\n", '\n<meta name="author"', '>\n<meta name="generator"', '>\n<link rel="canonical"', ">\n", '\n<meta name="apple-mobile-web-app-capable" content="yes">\n<meta name="apple-mobile-web-app-status-bar-style" content="default">\n<meta property="og:site_name"', '>\n<meta property="og:url"', '>\n<meta property="og:title"', '>\n<meta property="og:description"', '>\n<meta property="og:type" content="website">\n<meta property="og:locale"', ">\n", "\n", '\n<meta name="twitter:card" content="summary">\n', '\n<meta name="ecom-store-id"', ">\n\n", "\n\n<script", ">", '</script>\n<script type="application/ld+json">', "</script>\n\n", "\n", ""])), addAttribute(primaryColor, "content"), addAttribute(favicon, "href"), shortcutIcon && renderTemplate`<link rel="icon" type="image/png"${addAttribute(shortcutIcon, "href")} sizes="192x192">`, title && renderTemplate`<title>${title}</title>`, description && renderTemplate`<meta name="description"${addAttribute(description, "content")}>`, addAttribute(settings.name, "content"), addAttribute(Astro2.generator, "content"), addAttribute(canonicalUrl, "href"), shortcutIcon && renderTemplate`<link rel="apple-touch-icon"${addAttribute(shortcutIcon, "href")}>`, addAttribute(settings.name, "content"), addAttribute(canonicalUrl, "content"), addAttribute(title, "content"), addAttribute(description, "content"), addAttribute(ogLocale, "content"), ogImage && renderTemplate`<meta property="og:image"${addAttribute(ogImage, "content")}>`, metatagsContent?.fbAppId && renderTemplate`<meta property="fb:app_id"${addAttribute(metatagsContent.fbAppId, "content")}>`, metatagsContent?.twitterUsername && renderTemplate`<meta name="twitter:site"${addAttribute(metatagsContent.twitterUsername, "content")}>`, addAttribute(String(storeId), "content"), isPWA , addAttribute(createTransitionScope($$result, "kvdive2p"), "data-astro-transition-persist"), unescapeHTML(inlineClientJS), unescapeHTML(inlineJSONLd), hasViewTransitions && renderTemplate`${renderComponent($$result, "ViewTransitions", $$ViewTransitions, { "fallback": "none" })}`, contextInlineClientJS && renderTemplate(_b || (_b = __template$3(["<script>", "</script>"])), unescapeHTML(contextInlineClientJS)));
1191
1377
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseHead.astro", "self");
1192
1378
 
1193
1379
  function has(value) {
@@ -1424,54 +1610,6 @@ const createPictureGetter = (getImage) => {
1424
1610
  };
1425
1611
  };
1426
1612
 
1427
- const { STOREFRONT_BASE_DIR } = process.env;
1428
- const baseDir = STOREFRONT_BASE_DIR || process.cwd();
1429
- const builtImages = [];
1430
- const manifestFilepath = join(baseDir, "dist/server/images.dist.csv");
1431
- try {
1432
- readFileSync(manifestFilepath, "utf-8").split(/\n/).forEach((line) => {
1433
- const [filename, width, height] = line.split(",");
1434
- builtImages.push({
1435
- filename,
1436
- width: Number(width),
1437
- height: Number(height)
1438
- });
1439
- });
1440
- } catch (err) {
1441
- if (global.$renderStorefront) {
1442
- console.error(err);
1443
- }
1444
- }
1445
- builtImages.sort((a, b) => {
1446
- if (a.width < b.width)
1447
- return -1;
1448
- return 1;
1449
- });
1450
- const getBuiltImage = async ({ src, width, format }) => {
1451
- const filename = src.replace(/^.*\//, "").replace(/.\w+(\?.*)?$/, "");
1452
- const filenameRegExp = new RegExp(`[_.][a-z0-9]+\\.${format}$`, "i");
1453
- const matchFilename = (_builtImage) => {
1454
- return filename === _builtImage.filename.replace(filenameRegExp, "");
1455
- };
1456
- let builtImage = builtImages.find((_builtImage) => {
1457
- return _builtImage.width >= width && matchFilename(_builtImage);
1458
- });
1459
- if (!builtImage) {
1460
- builtImage = builtImages.find(matchFilename);
1461
- }
1462
- if (builtImage) {
1463
- return {
1464
- src: `/_astro/${builtImage.filename}`,
1465
- width: builtImage.width,
1466
- height: builtImage.height
1467
- };
1468
- }
1469
- console.warn(`Could not match built ${format} image for ${src} ${width}px`);
1470
- return { src, width };
1471
- };
1472
-
1473
- const getBuiltPicture = createPictureGetter(getBuiltImage);
1474
-
1475
1613
  const getAspectRatio = (src, tryImageSize) => {
1476
1614
  if (typeof src === "string") {
1477
1615
  src = tryImageSize(src);
@@ -1624,27 +1762,31 @@ const $$Astro$d = createAstro("https://demo.ecomplus.app");
1624
1762
  const $$Picture = createComponent(async ($$result, $$props, $$slots) => {
1625
1763
  const Astro2 = $$result.createAstro($$Astro$d, $$props, $$slots);
1626
1764
  Astro2.self = $$Picture;
1627
- const { STOREFRONT_BASE_DIR } = process.env;
1628
- const baseDir = STOREFRONT_BASE_DIR || process.cwd();
1629
- const originalImages = [];
1630
- const manifestFilepath = join(baseDir, "dist/server/images.src.csv");
1631
- readFileSync(manifestFilepath, "utf-8").split(/\n/).forEach((line) => {
1632
- const [filepath, width, height] = line.split(",");
1633
- originalImages.push({
1634
- filepath,
1635
- width: Number(width),
1636
- height: Number(height)
1637
- });
1638
- });
1765
+ const deployRand = {"BASE_URL": "/", "MODE": "production", "DEV": false, "PROD": true, "SSR": true, "SITE": "https://demo.ecomplus.app", "ASSETS_PREFIX": undefined}.DEPLOY_RAND;
1766
+ const versionSuffix = {"BASE_URL": "/", "MODE": "production", "DEV": false, "PROD": true, "SSR": true, "SITE": "https://demo.ecomplus.app", "ASSETS_PREFIX": undefined}.BUILD_OUTPUT !== "static" && deployRand ? `&V=${deployRand}` : "";
1767
+ const getImageFilepath = (src) => {
1768
+ const filepath = resolve(process.env.STOREFRONT_BASE_DIR, `public${src}`);
1769
+ if ({"BASE_URL": "/", "MODE": "production", "DEV": false, "PROD": true, "SSR": true, "SITE": "https://demo.ecomplus.app", "ASSETS_PREFIX": undefined}.BUILD_OUTPUT === "static") {
1770
+ try {
1771
+ copyFileSync(filepath, resolve(
1772
+ process.env.STOREFRONT_BASE_DIR,
1773
+ {"BASE_URL": "/", "MODE": "production", "DEV": false, "PROD": true, "SSR": true, "SITE": "https://demo.ecomplus.app", "ASSETS_PREFIX": undefined}.BUILD_OUT_DIR || "dist/client",
1774
+ "_astro",
1775
+ basename$1(filepath)
1776
+ ));
1777
+ } catch (err) {
1778
+ console.error(err);
1779
+ }
1780
+ }
1781
+ return filepath;
1782
+ };
1639
1783
  const tryImageSize = (src) => {
1640
1784
  let dimensions = {};
1641
1785
  if (typeof src === "string" && src.startsWith("/")) {
1642
- const originalImage = originalImages.find(({ filepath }) => {
1643
- return new RegExp(`^/${filepath}\\??.*`).test(src);
1644
- });
1645
- if (originalImage) {
1646
- const { width, height } = originalImage;
1647
- dimensions = { width, height };
1786
+ try {
1787
+ dimensions = imageSize(getImageFilepath(src));
1788
+ } catch (e) {
1789
+ dimensions = {};
1648
1790
  }
1649
1791
  }
1650
1792
  return dimensions;
@@ -1657,18 +1799,62 @@ const $$Picture = createComponent(async ($$result, $$props, $$slots) => {
1657
1799
  } = await useSSRPicture({
1658
1800
  ...Astro2.props,
1659
1801
  tryImageSize,
1660
- getPicture: getBuiltPicture,
1802
+ getPicture: createPictureGetter(async (imageOptions) => {
1803
+ let imageMetadata;
1804
+ if (imageOptions.src.startsWith("/")) {
1805
+ const imageFilepath = getImageFilepath(imageOptions.src);
1806
+ const { width: width2, height: height2 } = tryImageSize(imageOptions.src);
1807
+ if (width2 && height2) {
1808
+ const mimeType = mime.getType(imageFilepath);
1809
+ if (mimeType?.startsWith("image/")) {
1810
+ imageMetadata = {
1811
+ src: imageFilepath,
1812
+ width: width2,
1813
+ height: height2,
1814
+ // @ts-ignore
1815
+ format: mimeType.replace("image/", "")
1816
+ };
1817
+ }
1818
+ }
1819
+ }
1820
+ const {
1821
+ src,
1822
+ attributes: { width, height }
1823
+ } = await getImage({
1824
+ ...imageOptions,
1825
+ src: imageMetadata || imageOptions.src
1826
+ });
1827
+ return { src, width, height };
1828
+ }),
1661
1829
  assetsPrefix: Astro2.locals.assetsPrefix
1662
1830
  });
1663
- return renderTemplate`${maybeRenderHead()}<picture${spreadAttributes(pictureAttrs)}> ${sources.map((attrs) => renderTemplate`<source${spreadAttributes(attrs)}${addAttribute(sizes, "sizes")}>`)} ${imgAttrs && renderTemplate`<img${spreadAttributes(imgAttrs)}>`} </picture>`;
1664
- }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/images/Picture.runtime.astro", void 0);
1831
+ if (imgAttrs) {
1832
+ imgAttrs.src += versionSuffix;
1833
+ }
1834
+ return renderTemplate`${maybeRenderHead()}<picture${spreadAttributes(pictureAttrs)}>
1835
+ ${sources.map((attrs) => {
1836
+ if (versionSuffix) {
1837
+ attrs.srcset = attrs.srcset.replace(/\s(\w+)$/, `${versionSuffix} $1`);
1838
+ }
1839
+ return renderTemplate`<source${spreadAttributes(attrs)}${addAttribute(sizes, "sizes")}>`;
1840
+ })}
1841
+ ${imgAttrs && renderTemplate`<img${spreadAttributes(imgAttrs)}>`}
1842
+ </picture>`;
1843
+ }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/components/Picture.astro", void 0);
1665
1844
 
1666
1845
  const $$Astro$c = createAstro("https://demo.ecomplus.app");
1667
1846
  const $$BaseBody = createComponent(async ($$result, $$props, $$slots) => {
1668
1847
  const Astro2 = $$result.createAstro($$Astro$c, $$props, $$slots);
1669
1848
  Astro2.self = $$BaseBody;
1670
1849
  const { settings } = Astro2.locals.routeContext;
1671
- return renderTemplate`${maybeRenderHead()}<body style="visibility:hidden" class="!visible"> <!-- Prevent FOUC --> <div id="teleported-overlap" class="relative z-[59]"></div> <div id="teleported-top" class="relative z-[19]"></div> ${renderSlot$1($$result, $$slots["default"])} ${renderSlot$1($$result, $$slots["before-body-end"])} <div id="teleported-bottom" class="relative z-[19]"></div> ${settings.icon && renderTemplate`${renderComponent($$result, "Picture", $$Picture, { "src": settings.icon, "alt": "Icon", "formats": ["png"], "widths": [32, 192, 512], "sizes": "32px", "class": "absolute hidden", "style": "bottom: -1000px", "hasImg": false })}`} </body>`;
1850
+ return renderTemplate`${maybeRenderHead()}<body style="visibility:hidden" class="!visible"> <!-- Prevent FOUC -->
1851
+ <div id="teleported-overlap" class="relative z-[59]"></div>
1852
+ <div id="teleported-top" class="relative z-[19]"></div>
1853
+ ${renderSlot$1($$result, $$slots["default"])}
1854
+ ${renderSlot$1($$result, $$slots["before-body-end"])}
1855
+ <div id="teleported-bottom" class="relative z-[19]"></div>
1856
+ ${settings.icon && renderTemplate`${renderComponent($$result, "Picture", $$Picture, { "src": settings.icon, "alt": "Icon", "formats": ["png"], "widths": [32, 192, 512], "sizes": "32px", "class": "absolute hidden", "style": "bottom: -1000px", "hasImg": false })}`}
1857
+ </body>`;
1672
1858
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseBody.astro", void 0);
1673
1859
 
1674
1860
  const $$Astro$b = createAstro("https://demo.ecomplus.app");
@@ -1677,7 +1863,16 @@ const $$Base$1 = createComponent(async ($$result, $$props, $$slots) => {
1677
1863
  Astro2.self = $$Base$1;
1678
1864
  const { getContent } = Astro2.locals.routeContext;
1679
1865
  const { customCode } = await getContent("layout");
1680
- return renderTemplate`${renderComponent($$result, "Head", Head, {}, { "default": ($$result2) => renderTemplate` ${renderSlot$1($$result2, $$slots["base-head"])} ${customCode?.css && renderTemplate`<style>{customCode.css}</style>`}${customCode?.htmlHead && renderTemplate`${renderComponent($$result2, "Fragment", Fragment, {}, { "default": ($$result3) => renderTemplate`${unescapeHTML(customCode.htmlHead)}` })}`}${renderSlot$1($$result2, $$slots["base-head-scripts"])} ${renderSlot$1($$result2, $$slots["before-head-end"])} ` })} ${renderComponent($$result, "BaseBody", $$BaseBody, {}, { "default": ($$result2) => renderTemplate` ${renderSlot$1($$result2, $$slots["default"])} ${customCode?.htmlBody && renderTemplate`${renderComponent($$result2, "Fragment", Fragment, {}, { "default": ($$result3) => renderTemplate`${unescapeHTML(customCode.htmlBody)}` })}`}${renderSlot$1($$result2, $$slots["base-body-scripts"])} ${renderSlot$1($$result2, $$slots["before-body-end"])} ` })}`;
1866
+ return renderTemplate`${renderComponent($$result, "Head", Head, {}, { "default": ($$result2) => renderTemplate`
1867
+ ${renderSlot$1($$result2, $$slots["base-head"])}
1868
+ ${customCode?.css && renderTemplate`<style>{customCode.css}</style>`}${customCode?.htmlHead && renderTemplate`${renderComponent($$result2, "Fragment", Fragment, {}, { "default": ($$result3) => renderTemplate`${unescapeHTML(customCode.htmlHead)}` })}`}${renderSlot$1($$result2, $$slots["base-head-scripts"])}
1869
+ ${renderSlot$1($$result2, $$slots["before-head-end"])}
1870
+ ` })}
1871
+ ${renderComponent($$result, "BaseBody", $$BaseBody, {}, { "default": ($$result2) => renderTemplate`
1872
+ ${renderSlot$1($$result2, $$slots["default"])}
1873
+ ${customCode?.htmlBody && renderTemplate`${renderComponent($$result2, "Fragment", Fragment, {}, { "default": ($$result3) => renderTemplate`${unescapeHTML(customCode.htmlBody)}` })}`}${renderSlot$1($$result2, $$slots["base-body-scripts"])}
1874
+ ${renderSlot$1($$result2, $$slots["before-body-end"])}
1875
+ ` })}`;
1681
1876
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/Base.astro", void 0);
1682
1877
 
1683
1878
  var __freeze$2 = Object.freeze;
@@ -1695,7 +1890,13 @@ const $$Astro$9 = createAstro("https://demo.ecomplus.app");
1695
1890
  const $$Base = createComponent(async ($$result, $$props, $$slots) => {
1696
1891
  const Astro2 = $$result.createAstro($$Astro$9, $$props, $$slots);
1697
1892
  Astro2.self = $$Base;
1698
- return renderTemplate`${renderComponent($$result, "SfBase", $$Base$1, {}, { "base-head": ($$result2) => renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "slot": "base-head" }, { "default": ($$result3) => renderTemplate` ${renderSlot$1($$result3, $$slots["base-head"])} ` })}`, "before-head-end": ($$result2) => renderTemplate`${renderComponent($$result2, "InlineScripts", $$InlineScripts, { "slot": "before-head-end" })}`, "default": ($$result2) => renderTemplate` ${renderSlot$1($$result2, $$slots["default"])} ` })}`;
1893
+ return renderTemplate`${renderComponent($$result, "SfBase", $$Base$1, {}, { "base-head": ($$result2) => renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "slot": "base-head" }, { "default": ($$result3) => renderTemplate`
1894
+ ${renderSlot$1($$result3, $$slots["base-head"])}
1895
+ ` })}`, "before-head-end": ($$result2) => renderTemplate`${renderComponent($$result2, "InlineScripts", $$InlineScripts, { "slot": "before-head-end" })}`, "default": ($$result2) => renderTemplate`
1896
+
1897
+
1898
+ ${renderSlot$1($$result2, $$slots["default"])}
1899
+ ` })}`;
1699
1900
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/layouts/Base.astro", void 0);
1700
1901
 
1701
1902
  const emitter = new EventEmitter();
@@ -2050,23 +2251,36 @@ _sfc_main$A.setup = (props, ctx) => {
2050
2251
  };
2051
2252
  const PitchBar = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["ssrRender", _sfc_ssrRender$A]]);
2052
2253
 
2053
- const useStorage = (key, initialValue, storage = globalThis.localStorage) => {
2254
+ const useStorage = (key, initialValue, storage = globalThis.localStorage, isWithBroadcast = true) => {
2054
2255
  if (!storage) {
2055
2256
  return reactive(initialValue);
2056
2257
  }
2057
- let persistedValue;
2058
- const sessionJson = storage.getItem(key);
2059
- if (sessionJson) {
2060
- try {
2061
- persistedValue = JSON.parse(sessionJson);
2062
- } catch (e) {
2063
- persistedValue = null;
2064
- storage.removeItem(key);
2258
+ const getStorageItem = () => {
2259
+ const sessionJson = storage.getItem(key);
2260
+ if (sessionJson) {
2261
+ try {
2262
+ return JSON.parse(sessionJson);
2263
+ } catch (e) {
2264
+ storage.removeItem(key);
2265
+ return null;
2266
+ }
2065
2267
  }
2066
- }
2268
+ };
2269
+ const persistedValue = getStorageItem();
2067
2270
  const state = reactive(persistedValue || initialValue);
2271
+ let bc;
2272
+ if (isWithBroadcast && false) {
2273
+ bc = new BroadcastChannel(key);
2274
+ bc.onmessage = (event) => {
2275
+ if (event.data === "set") {
2276
+ Object.assign(state, getStorageItem());
2277
+ }
2278
+ };
2279
+ }
2068
2280
  watchDebounced(state, () => {
2069
2281
  storage.setItem(key, JSON.stringify(state));
2282
+ if (bc)
2283
+ bc.postMessage("set");
2070
2284
  }, {
2071
2285
  debounce: 50
2072
2286
  });
@@ -4147,8 +4361,8 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
4147
4361
  },
4148
4362
  setup(__props, { expose: __expose }) {
4149
4363
  __expose();
4150
- const SearchModal = defineAsyncComponent(() => import('../SearchModal_Sktaq643.mjs'));
4151
- const CartSidebar = defineAsyncComponent(() => import('../CartSidebar_blvgfFa-.mjs'));
4364
+ const SearchModal = defineAsyncComponent(() => import('../SearchModal_2azP1u7P.mjs'));
4365
+ const CartSidebar = defineAsyncComponent(() => import('../CartSidebar_3_1aFp67.mjs'));
4152
4366
  const props = __props;
4153
4367
  const header = ref(null);
4154
4368
  const searchInput = ref(null);
@@ -4423,7 +4637,13 @@ const $$PageHeader = createComponent(async ($$result, $$props, $$slots) => {
4423
4637
  shopHeader
4424
4638
  } = await usePageHeader({ routeContext });
4425
4639
  const { getInlineClientJS } = await useSharedData({ field: "categories" });
4426
- return renderTemplate`${renderSlot$1($$result, $$slots["pitch-bar"], renderTemplate(_a$1 || (_a$1 = __template$1([" ", "", " <script async>", "<\/script> ", ""])), pitchBar.slides.length > 1 && renderTemplate`${renderComponent($$result, "PitchBar", PitchBar, { ...pitchBar, "client:idle": true, "client:component-hydration": "idle", "client:component-path": "~/components/PitchBar.vue", "client:component-export": "default" })}`, pitchBar.slides.length === 1 && renderTemplate`${renderComponent($$result, "PitchBar", PitchBar, { ...pitchBar })}`, unescapeHTML(getInlineClientJS()), renderComponent($$result, "ShopHeader", ShopHeader, { ...shopHeader, "client:context": "data:categories", "client:component-hydration": "context", "client:component-path": "~/components/ShopHeader.vue", "client:component-export": "default" }, { "logo": ($$result2) => renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "slot": "logo" }, { "default": ($$result3) => renderTemplate` ${maybeRenderHead()}<a href="/"> ${renderComponent($$result3, "LogoHeading", LogoHeading, {}, { "default": ($$result4) => renderTemplate` ${renderComponent($$result4, "Picture", $$Picture, { "src": settings.logo, "alt": settings.name, "widths": [300], "fetchpriority": "high", "loading": "eager", "class": "mx-auto max-w-[150px] hover:drop-shadow-sm" })} ` })} </a> ` })}` })))}`;
4640
+ return renderTemplate`${renderSlot$1($$result, $$slots["pitch-bar"], renderTemplate(_a$1 || (_a$1 = __template$1(["\n ", "\n ", "\n\n<script async>", "<\/script>\n", ""])), pitchBar.slides.length > 1 && renderTemplate`${renderComponent($$result, "PitchBar", PitchBar, { ...pitchBar, "client:idle": true, "client:component-hydration": "idle", "client:component-path": "~/components/PitchBar.vue", "client:component-export": "default" })}`, pitchBar.slides.length === 1 && renderTemplate`${renderComponent($$result, "PitchBar", PitchBar, { ...pitchBar })}`, unescapeHTML(getInlineClientJS()), renderComponent($$result, "ShopHeader", ShopHeader, { ...shopHeader, "client:context": "data:categories", "client:component-hydration": "context", "client:component-path": "~/components/ShopHeader.vue", "client:component-export": "default" }, { "logo": ($$result2) => renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "slot": "logo" }, { "default": ($$result3) => renderTemplate`
4641
+ ${maybeRenderHead()}<a href="/">
4642
+ ${renderComponent($$result3, "LogoHeading", LogoHeading, {}, { "default": ($$result4) => renderTemplate`
4643
+ ${renderComponent($$result4, "Picture", $$Picture, { "src": settings.logo, "alt": settings.name, "widths": [300], "fetchpriority": "high", "loading": "eager", "class": "mx-auto max-w-[150px] hover:drop-shadow-sm" })}
4644
+ ` })}
4645
+ </a>
4646
+ ` })}` })))}`;
4427
4647
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/layouts/PageHeader.astro", void 0);
4428
4648
 
4429
4649
  const _sfc_main$p = /* @__PURE__ */ defineComponent({
@@ -4764,7 +4984,13 @@ const $$PageFooter = createComponent(async ($$result, $$props, $$slots) => {
4764
4984
  }
4765
4985
  }
4766
4986
  }
4767
- return renderTemplate`${renderComponent($$result, "ShopFooter", ShopFooter, { "stamps": stamps, "categories": mainCategories, "categoriesColTitle": categoriesList?.title, "pageLinks": pageLinks, "pagesColTitle": pagesList?.title }, { "logo": ($$result2) => renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "slot": "logo" }, { "default": ($$result3) => renderTemplate` ${maybeRenderHead()}<a href="/"> ${renderComponent($$result3, "LogoHeading", LogoHeading, {}, { "default": ($$result4) => renderTemplate` ${renderComponent($$result4, "Picture", $$Picture, { "src": settings.logo, "alt": settings.name, "widths": [300], "loading": "lazy", "class": "max-w-[150px]" })} ` })} </a> ` })}` })}`;
4987
+ return renderTemplate`${renderComponent($$result, "ShopFooter", ShopFooter, { "stamps": stamps, "categories": mainCategories, "categoriesColTitle": categoriesList?.title, "pageLinks": pageLinks, "pagesColTitle": pagesList?.title }, { "logo": ($$result2) => renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "slot": "logo" }, { "default": ($$result3) => renderTemplate`
4988
+ ${maybeRenderHead()}<a href="/">
4989
+ ${renderComponent($$result3, "LogoHeading", LogoHeading, {}, { "default": ($$result4) => renderTemplate`
4990
+ ${renderComponent($$result4, "Picture", $$Picture, { "src": settings.logo, "alt": settings.name, "widths": [300], "loading": "lazy", "class": "max-w-[150px]" })}
4991
+ ` })}
4992
+ </a>
4993
+ ` })}` })}`;
4768
4994
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/layouts/PageFooter.astro", void 0);
4769
4995
 
4770
4996
  const usePagination = (props) => {
@@ -4814,7 +5040,7 @@ const usePagination = (props) => {
4814
5040
  });
4815
5041
  const baseUrl = ref("");
4816
5042
  watch(toRef(props, "isUrlPath"), () => {
4817
- const url = global.astroUrl ;
5043
+ const { url } = globalThis.$storefront;
4818
5044
  if (props.isUrlPath && !url.pathname.endsWith("/")) {
4819
5045
  url.pathname += "/";
4820
5046
  } else {
@@ -5853,7 +6079,8 @@ const $$BannerPictures = createComponent(async ($$result, $$props, $$slots) => {
5853
6079
  mobileWidths = [640, 1024];
5854
6080
  }
5855
6081
  return renderTemplate`${img && renderTemplate`${renderComponent($$result, "Picture", $$Picture, { "src": img, "alt": alt || "", "widths": widths, "fetchpriority": index === 0 ? "high" : "low", "loading": index === 0 ? "eager" : "lazy", "class": `${mobileImg ? "hidden md:block " : ""}mx-auto
5856
- text-sm text-opacity-70 ${className}` })}`}${mobileImg && renderTemplate`${renderComponent($$result, "Picture", $$Picture, { "src": mobileImg, "alt": alt || "", "widths": mobileWidths, "fetchpriority": index === 0 ? "high" : "low", "loading": index === 0 ? "eager" : "lazy", "class": `mx-auto text-sm text-opacity-70 md:hidden ${mobileClass}` })}`}`;
6082
+ text-sm text-opacity-70 ${className}` })}`}
6083
+ ${mobileImg && renderTemplate`${renderComponent($$result, "Picture", $$Picture, { "src": mobileImg, "alt": alt || "", "widths": mobileWidths, "fetchpriority": index === 0 ? "high" : "low", "loading": index === 0 ? "eager" : "lazy", "class": `mx-auto text-sm text-opacity-70 md:hidden ${mobileClass}` })}`}`;
5857
6084
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/components/BannerPictures.astro", void 0);
5858
6085
 
5859
6086
  const useBanner = (props) => {
@@ -6154,7 +6381,13 @@ const $$BannersGrid = createComponent(async ($$result, $$props, $$slots) => {
6154
6381
  const Astro2 = $$result.createAstro($$Astro$3, $$props, $$slots);
6155
6382
  Astro2.self = $$BannersGrid;
6156
6383
  const { banners } = Astro2.props;
6157
- return renderTemplate`${maybeRenderHead()}<section class="ui-section"> <ul class="flex flex-wrap gap-4 lg:flex-nowrap"> ${banners.map((banner) => renderTemplate`<li class="lg:flex-1 [&_img]:w-full [&_img]:object-cover"> ${renderComponent($$result, "Banner", Banner, { ...banner }, { "picture": ($$result2) => renderTemplate`${renderComponent($$result2, "BannerPictures", $$BannerPictures, { ...banner, "slot": "picture" })}` })} </li>`)} </ul> </section>`;
6384
+ return renderTemplate`${maybeRenderHead()}<section class="ui-section">
6385
+ <ul class="flex flex-wrap gap-4 lg:flex-nowrap">
6386
+ ${banners.map((banner) => renderTemplate`<li class="lg:flex-1 [&_img]:w-full [&_img]:object-cover">
6387
+ ${renderComponent($$result, "Banner", Banner, { ...banner }, { "picture": ($$result2) => renderTemplate`${renderComponent($$result2, "BannerPictures", $$BannerPictures, { ...banner, "slot": "picture" })}` })}
6388
+ </li>`)}
6389
+ </ul>
6390
+ </section>`;
6158
6391
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/components/BannersGrid.astro", void 0);
6159
6392
 
6160
6393
  const useBreadcrumbs = async (props = {}) => {
@@ -7790,18 +8023,25 @@ _sfc_main$7.setup = (props, ctx) => {
7790
8023
  };
7791
8024
  const SkuSelector = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["ssrRender", _sfc_ssrRender$7]]);
7792
8025
 
7793
- const _sfc_main$6 = {};
7794
-
7795
- function _sfc_ssrRender$6(_ctx, _push, _parent, _attrs) {
8026
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
8027
+ __name: "ShippingCalculator",
8028
+ setup(__props, { expose: __expose }) {
8029
+ __expose();
8030
+ const __returned__ = {};
8031
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
8032
+ return __returned__;
8033
+ }
8034
+ });
8035
+ function _sfc_ssrRender$6(_ctx, _push, _parent, _attrs, $props, $setup, $data, $options) {
7796
8036
  _push(`<div${ssrRenderAttrs(_attrs)}></div>`);
7797
8037
  }
7798
8038
  const _sfc_setup$6 = _sfc_main$6.setup;
7799
8039
  _sfc_main$6.setup = (props, ctx) => {
7800
- const ssrContext = useSSRContext()
7801
- ;(ssrContext.modules || (ssrContext.modules = new Set())).add("src/components/ShippingCalculator.vue");
7802
- return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : undefined
8040
+ const ssrContext = useSSRContext();
8041
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/components/ShippingCalculator.vue");
8042
+ return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
7803
8043
  };
7804
- const ShippingCalculator = /*#__PURE__*/_export_sfc(_sfc_main$6, [['ssrRender',_sfc_ssrRender$6]]);
8044
+ const ShippingCalculator = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["ssrRender", _sfc_ssrRender$6]]);
7805
8045
 
7806
8046
  const _sfc_main$5 = /* @__PURE__ */ defineComponent({
7807
8047
  __name: "ProductDetails",
@@ -8787,7 +9027,8 @@ const $$Sections = createComponent(async ($$result, $$props, $$slots) => {
8787
9027
  }
8788
9028
  });
8789
9029
  const { cmsContent } = routeContext;
8790
- return renderTemplate`${maybeRenderHead()}<article class="mb-9 mt-6 md:mb-12 md:mt-8"> ${sections.map(async ({ type, props }, index) => {
9030
+ return renderTemplate`${maybeRenderHead()}<article class="mb-9 mt-6 md:mb-12 md:mt-8">
9031
+ ${sections.map(async ({ type, props }, index) => {
8791
9032
  switch (type) {
8792
9033
  case "product-shelf":
8793
9034
  return index === 0 || index < 2 && !cmsContent?.hero?.slides.length ? renderTemplate`${renderComponent($$result, "ProductShelf", ProductShelf, { ...props, "client:idle": true, "client:component-hydration": "idle", "client:component-path": "~/components/ProductShelf.vue", "client:component-export": "default" })}` : renderTemplate`${renderComponent($$result, "ProductShelf", ProductShelf, { ...props, "client:visible": true, "client:component-hydration": "visible", "client:component-path": "~/components/ProductShelf.vue", "client:component-export": "default" })}`;
@@ -8804,10 +9045,16 @@ const $$Sections = createComponent(async ($$result, $$props, $$slots) => {
8804
9045
  return renderTemplate`${renderComponent($$result, "DocBanners", DocBanners, {})}`;
8805
9046
  case "product-details":
8806
9047
  const { hasDescription, hasSpecifications, ...detailsProps } = props;
8807
- return renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": ($$result2) => renderTemplate` ${renderComponent($$result2, "ProductDetails", ProductDetails, { ...detailsProps, "client:context": true, "client:component-hydration": "context", "client:component-path": "~/components/ProductDetails.vue", "client:component-export": "default" }, { "description": ($$result3) => renderTemplate`${renderComponent($$result3, "Fragment", Fragment, { "slot": "description" }, { "default": ($$result4) => renderTemplate`${hasDescription && renderTemplate`${renderComponent($$result4, "DocDescription", DocDescription, {})}`}${hasSpecifications && renderTemplate`${renderComponent($$result4, "ProductSpecifications", ProductSpecifications, {})}`}` })}` })} ` })}`;
9048
+ return renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": ($$result2) => renderTemplate`
9049
+ ${renderComponent($$result2, "ProductDetails", ProductDetails, { ...detailsProps, "client:context": true, "client:component-hydration": "context", "client:component-path": "~/components/ProductDetails.vue", "client:component-export": "default" }, { "description": ($$result3) => renderTemplate`${renderComponent($$result3, "Fragment", Fragment, { "slot": "description" }, { "default": ($$result4) => renderTemplate`${hasDescription && renderTemplate`${renderComponent($$result4, "DocDescription", DocDescription, {})}`}${hasSpecifications && renderTemplate`${renderComponent($$result4, "ProductSpecifications", ProductSpecifications, {})}`}` })}` })}
9050
+ ` })}`;
8808
9051
  case "search-showcase":
8809
9052
  case "context-showcase":
8810
- return renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": ($$result2) => renderTemplate` <article class="min-h-[500px]"> ${renderComponent($$result2, "SearchShowcase", SearchShowcase, { ...props, "client:context": true, "client:component-hydration": "context", "client:component-path": "~/components/SearchShowcase.vue", "client:component-export": "default" })} </article> ` })}`;
9053
+ return renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": ($$result2) => renderTemplate`
9054
+ <article class="min-h-[500px]">
9055
+ ${renderComponent($$result2, "SearchShowcase", SearchShowcase, { ...props, "client:context": true, "client:component-hydration": "context", "client:component-path": "~/components/SearchShowcase.vue", "client:component-export": "default" })}
9056
+ </article>
9057
+ ` })}`;
8811
9058
  case "page-title":
8812
9059
  return renderTemplate`${renderComponent($$result, "PageTitle", PageTitle, { ...props })}`;
8813
9060
  case "content-entry":
@@ -8819,7 +9066,8 @@ const $$Sections = createComponent(async ($$result, $$props, $$slots) => {
8819
9066
  default:
8820
9067
  return renderTemplate`<div${addAttribute(type, "data-section")}></div>`;
8821
9068
  }
8822
- })} </article>`;
9069
+ })}
9070
+ </article>`;
8823
9071
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/main/content/Sections.astro", void 0);
8824
9072
 
8825
9073
  const $$Astro$1 = createAstro("https://demo.ecomplus.app");
@@ -8838,7 +9086,11 @@ const $$Main = createComponent(async ($$result, $$props, $$slots) => {
8838
9086
  ]);
8839
9087
  sharedData.grids = grids;
8840
9088
  }
8841
- return renderTemplate`${maybeRenderHead()}<main> ${Object.entries(sharedData).map(([field, value]) => renderTemplate`${renderComponent($$result, "SharedData", $$SharedData, { "field": field, "value": value })}`)} ${renderComponent($$result, "Hero", $$Hero, {})} ${renderComponent($$result, "Sections", $$Sections, {})} </main>`;
9089
+ return renderTemplate`${maybeRenderHead()}<main>
9090
+ ${Object.entries(sharedData).map(([field, value]) => renderTemplate`${renderComponent($$result, "SharedData", $$SharedData, { "field": field, "value": value })}`)}
9091
+ ${renderComponent($$result, "Hero", $$Hero, {})}
9092
+ ${renderComponent($$result, "Sections", $$Sections, {})}
9093
+ </main>`;
8842
9094
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/main/Main.astro", void 0);
8843
9095
 
8844
9096
  const $$Astro = createAstro("https://demo.ecomplus.app");
@@ -8894,7 +9146,17 @@ const $$ = createComponent(async ($$result, $$props, $$slots) => {
8894
9146
  }
8895
9147
  loadError = err;
8896
9148
  }
8897
- return renderTemplate`<html${addAttribute(routeContext?.lang.replace("_", "-"), "lang")}> ${routeContext && renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": ($$result2) => renderTemplate`${renderComponent($$result2, "Base", $$Base, {}, { "base-head": ($$result3) => renderTemplate`${renderComponent($$result3, "BaseHead", $$BaseHead, { "slot": "base-head" })}`, "default": ($$result3) => renderTemplate`${renderComponent($$result3, "PageHeader", $$PageHeader, {})}${renderComponent($$result3, "Main", $$Main, {})}${renderComponent($$result3, "PageFooter", $$PageFooter, {})}` })}` })}`}${loadError && renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": ($$result2) => renderTemplate`${unescapeHTML(loadError.responseHTML)}` })}`}</html>`;
9149
+ return renderTemplate`<html${addAttribute(routeContext?.lang.replace("_", "-"), "lang")}>
9150
+ ${routeContext && renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": ($$result2) => renderTemplate`
9151
+ ${renderComponent($$result2, "Base", $$Base, {}, { "base-head": ($$result3) => renderTemplate`${renderComponent($$result3, "BaseHead", $$BaseHead, { "slot": "base-head" })}`, "default": ($$result3) => renderTemplate`
9152
+
9153
+ ${renderComponent($$result3, "PageHeader", $$PageHeader, {})}
9154
+ ${renderComponent($$result3, "Main", $$Main, {})}
9155
+ ${renderComponent($$result3, "PageFooter", $$PageFooter, {})}
9156
+ ` })}
9157
+ ` })}`}
9158
+ ${loadError && renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": ($$result2) => renderTemplate`${unescapeHTML(loadError.responseHTML)}` })}`}
9159
+ </html>`;
8898
9160
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/pages/[...slug].astro", void 0);
8899
9161
  const $$file = "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/pages/[...slug].astro";
8900
9162
  const $$url = "/[...slug]";
@@ -8907,4 +9169,4 @@ const ____slug_ = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty(
8907
9169
  url: $$url
8908
9170
  }, Symbol.toStringTag, { value: 'Module' }));
8909
9171
 
8910
- export { $$Base as $, CheckoutLink as C, FooterStamps as F, Pagination as P, QuantitySelector as Q, SearchEngine as S, _export_sfc as _, $$BaseHead as a, $$PageHeader as b, $$PageFooter as c, $$Picture as d, i19shoppingCart as e, i19error as f, getConfig as g, i19errorMsg as h, i19myAccount as i, i19notFound as j, i19home as k, loadRouteContext as l, mod as m, createApp as n, clearAccents as o, getSearchUrl as p, ProductShelf as q, parseProduct as r, searchHistory as s, removeCartItem as t, Prices as u, freeShippingFromValue as v, shoppingCart as w, totalItems as x, ____slug_ as y };
9172
+ export { $$Base as $, ____slug_ as A, CheckoutLink as C, FooterStamps as F, Pagination as P, QuantitySelector as Q, SearchEngine as S, _export_sfc as _, $$BaseHead as a, $$PageHeader as b, $$PageFooter as c, $$Picture as d, i19shoppingCart as e, imageConfig as f, getConfig as g, assetsDir as h, i19myAccount as i, i19error as j, i19errorMsg as k, loadRouteContext as l, i19notFound as m, i19home as n, mod as o, createApp as p, clearAccents as q, getSearchUrl as r, searchHistory as s, ProductShelf as t, parseProduct as u, removeCartItem as v, Prices as w, freeShippingFromValue as x, shoppingCart as y, totalItems as z };