cloudcommerce 0.2.1 → 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.
Files changed (124) hide show
  1. package/.eslintrc.cjs +1 -93
  2. package/CHANGELOG.md +23 -0
  3. package/ecomplus-stores/monocard/functions/ssr/package.json +2 -1
  4. package/ecomplus-stores/tia-sonia/functions/ssr/package.json +2 -1
  5. package/package.json +6 -6
  6. package/packages/api/package.json +1 -1
  7. package/packages/apps/correios/package.json +2 -2
  8. package/packages/apps/custom-payment/package.json +1 -1
  9. package/packages/apps/custom-shipping/package.json +1 -1
  10. package/packages/apps/datafrete/package.json +4 -4
  11. package/packages/apps/discounts/package.json +1 -1
  12. package/packages/apps/emails/package.json +2 -2
  13. package/packages/apps/fb-conversions/package.json +4 -4
  14. package/packages/apps/frenet/package.json +4 -4
  15. package/packages/apps/galaxpay/lib/galaxpay-list-payments.d.ts +2 -2
  16. package/packages/apps/galaxpay/lib/galaxpay.d.ts +2 -2
  17. package/packages/apps/galaxpay/package.json +4 -4
  18. package/packages/apps/google-analytics/package.json +4 -4
  19. package/packages/apps/infinitepay/package.json +4 -4
  20. package/packages/apps/jadlog/package.json +2 -2
  21. package/packages/apps/loyalty-points/package.json +1 -1
  22. package/packages/apps/mercadopago/package.json +4 -4
  23. package/packages/apps/pagarme/package.json +4 -4
  24. package/packages/apps/paghiper/CHANGELOG.md +1 -0
  25. package/packages/apps/paghiper/README.md +1 -0
  26. package/packages/apps/paghiper/lib/functions-lib/create-axios.d.ts +2 -0
  27. package/packages/apps/paghiper/lib/functions-lib/create-axios.js +22 -0
  28. package/packages/apps/paghiper/lib/functions-lib/create-axios.js.map +1 -0
  29. package/packages/apps/paghiper/lib/functions-lib/handle-webhook.d.ts +3 -0
  30. package/packages/apps/paghiper/lib/functions-lib/handle-webhook.js +154 -0
  31. package/packages/apps/paghiper/lib/functions-lib/handle-webhook.js.map +1 -0
  32. package/packages/apps/paghiper/lib/index.d.ts +1 -0
  33. package/packages/apps/paghiper/lib/index.js +2 -0
  34. package/packages/apps/paghiper/lib/index.js.map +1 -0
  35. package/packages/apps/paghiper/lib/paghiper-create-transaction.d.ts +71 -0
  36. package/packages/apps/paghiper/lib/paghiper-create-transaction.js +199 -0
  37. package/packages/apps/paghiper/lib/paghiper-create-transaction.js.map +1 -0
  38. package/packages/apps/paghiper/lib/paghiper-list-payments.d.ts +7 -0
  39. package/packages/apps/paghiper/lib/paghiper-list-payments.js +97 -0
  40. package/packages/apps/paghiper/lib/paghiper-list-payments.js.map +1 -0
  41. package/packages/apps/paghiper/lib/paghiper-webhook.d.ts +5 -0
  42. package/packages/apps/paghiper/lib/paghiper-webhook.js +18 -0
  43. package/packages/apps/paghiper/lib/paghiper-webhook.js.map +1 -0
  44. package/packages/apps/paghiper/lib/paghiper.d.ts +76 -0
  45. package/packages/apps/paghiper/lib/paghiper.js +12 -0
  46. package/packages/apps/paghiper/lib/paghiper.js.map +1 -0
  47. package/packages/apps/paghiper/package.json +36 -0
  48. package/packages/apps/paghiper/src/functions-lib/create-axios.ts +21 -0
  49. package/packages/apps/paghiper/src/functions-lib/handle-webhook.ts +176 -0
  50. package/packages/apps/paghiper/src/index.ts +1 -0
  51. package/packages/apps/paghiper/src/paghiper-create-transaction.ts +242 -0
  52. package/packages/apps/paghiper/src/paghiper-list-payments.ts +127 -0
  53. package/packages/apps/paghiper/src/paghiper-webhook.ts +17 -0
  54. package/packages/apps/paghiper/src/paghiper.ts +12 -0
  55. package/packages/apps/paghiper/tsconfig.json +6 -0
  56. package/packages/apps/paghiper/types/config-app.d.ts +34 -0
  57. package/packages/apps/paghiper/webhook.js +1 -0
  58. package/packages/apps/pix/package.json +4 -4
  59. package/packages/apps/tiny-erp/lib/integration/post-tiny-erp.js.map +1 -1
  60. package/packages/apps/tiny-erp/package.json +4 -4
  61. package/packages/apps/tiny-erp/src/integration/post-tiny-erp.ts +1 -1
  62. package/packages/cli/package.json +1 -1
  63. package/packages/config/package.json +1 -1
  64. package/packages/emails/package.json +2 -2
  65. package/packages/events/lib/firebase.js +2 -0
  66. package/packages/events/lib/firebase.js.map +1 -1
  67. package/packages/events/package.json +4 -3
  68. package/packages/events/src/firebase.ts +2 -0
  69. package/packages/firebase/lib/config.d.ts +3 -0
  70. package/packages/firebase/lib/config.js +3 -0
  71. package/packages/firebase/lib/config.js.map +1 -1
  72. package/packages/firebase/package.json +3 -3
  73. package/packages/firebase/src/config.ts +3 -0
  74. package/packages/i18n/package.json +1 -1
  75. package/packages/modules/lib/firebase/call-app-module.js +12 -0
  76. package/packages/modules/lib/firebase/call-app-module.js.map +1 -1
  77. package/packages/modules/package.json +6 -5
  78. package/packages/modules/src/firebase/call-app-module.ts +12 -0
  79. package/packages/passport/package.json +3 -3
  80. package/packages/ssr/package.json +4 -4
  81. package/packages/storefront/.base.eslintrc.cjs +93 -0
  82. package/packages/storefront/.eslintrc.cjs +1 -1
  83. package/packages/storefront/astro.config.mjs +2 -0
  84. package/packages/storefront/client.d.ts +1 -1
  85. package/packages/storefront/config/storefront.cms.mjs +2 -2
  86. package/packages/storefront/dist/client/PitchBar.5ae15bda.js +1 -0
  87. package/packages/storefront/dist/client/Prices.248d1aae.js +1 -0
  88. package/packages/storefront/dist/client/ProductCard.4848304c.js +1 -0
  89. package/packages/storefront/dist/client/assets/{_...slug_.fea84512.css → _...slug_.b701cbb1.css} +1 -1
  90. package/packages/storefront/dist/client/chunks/Prices.vue_vue_type_script_setup_true_lang.2d01aaa2.js +1 -0
  91. package/packages/storefront/dist/client/chunks/ecom-utils.cd6787a7.js +1 -0
  92. package/packages/storefront/dist/client/chunks/modules-info.fcab5bba.js +1 -0
  93. package/packages/storefront/dist/client/chunks/runtime-dom.esm-bundler.923790dc.js +1 -0
  94. package/packages/storefront/dist/client/chunks/session-utm.ceebe967.js +1 -0
  95. package/packages/storefront/dist/client/client.2356f675.js +1 -0
  96. package/packages/storefront/dist/client/{hoisted.4671ed15.js → hoisted.11b849a7.js} +1 -1
  97. package/packages/storefront/dist/client/sw.js +1 -1
  98. package/packages/storefront/dist/server/entry.mjs +432 -92
  99. package/packages/storefront/package.json +3 -3
  100. package/packages/storefront/src/lib/components/Carousel.vue +1 -0
  101. package/packages/storefront/src/lib/components/CarouselControl.vue +1 -1
  102. package/packages/storefront/src/lib/components/PitchBar.vue +27 -10
  103. package/packages/storefront/src/lib/components/StickyHeader.vue +43 -0
  104. package/packages/storefront/src/lib/layouts/Base.astro +6 -0
  105. package/packages/storefront/src/lib/layouts/BaseBody.astro +0 -1
  106. package/packages/storefront/src/lib/layouts/PagesHeader.astro +24 -3
  107. package/packages/storefront/src/lib/scripts/modules-info-preset.ts +60 -0
  108. package/packages/storefront/src/lib/ssr/Picture.astro +13 -0
  109. package/packages/storefront/src/lib/ssr/image.ts +12 -2
  110. package/packages/storefront/src/lib/ssr-context.ts +18 -4
  111. package/packages/storefront/src/lib/state/modules-info.ts +44 -14
  112. package/packages/storefront/src/lib/types/cms-settings.d.ts +2 -1
  113. package/packages/storefront/storefront.config.mjs +20 -8
  114. package/packages/storefront/tailwind.config.cjs +1 -1
  115. package/packages/types/index.ts +17 -0
  116. package/packages/types/package.json +1 -1
  117. package/packages/storefront/dist/client/PitchBar.afe7ff5c.js +0 -1
  118. package/packages/storefront/dist/client/Prices.eaf8a32c.js +0 -1
  119. package/packages/storefront/dist/client/ProductCard.1106b153.js +0 -1
  120. package/packages/storefront/dist/client/chunks/Prices.vue_vue_type_script_setup_true_lang.781b6501.js +0 -1
  121. package/packages/storefront/dist/client/chunks/ecom-utils.63984324.js +0 -1
  122. package/packages/storefront/dist/client/chunks/runtime-core.esm-bundler.fa6cdb60.js +0 -1
  123. package/packages/storefront/dist/client/chunks/session-utm.2de8b604.js +0 -1
  124. package/packages/storefront/dist/client/client.367a6497.js +0 -1
@@ -11,22 +11,24 @@ import { bold, yellow, dim, cyan, red, reset } from 'kleur/colors';
11
11
  import 'string-width';
12
12
  import npath from 'path-browserify';
13
13
  import { Readable } from 'stream';
14
- import path, { resolve } from 'path';
14
+ import path, { resolve as resolve$1 } from 'path';
15
15
  import { fileURLToPath } from 'url';
16
16
  import http from 'http';
17
17
  import https from 'https';
18
18
  import send from 'send';
19
- import { defineComponent, computed, unref, useSSRContext, mergeProps, h as h$2, createSSRApp, inject, ref, watch, toRef, onMounted, onBeforeUnmount, provide, createVNode as createVNode$1, resolveDynamicComponent, withCtx, renderSlot as renderSlot$1, openBlock, createBlock, Fragment as Fragment$1, renderList, reactive, resolveComponent, toDisplayString, createCommentVNode, createTextVNode } from 'vue';
20
- import { ssrRenderSlotInner, ssrRenderAttrs, ssrRenderSlot, renderToString as renderToString$1, ssrRenderClass, ssrRenderVNode, ssrRenderComponent, ssrRenderList, ssrInterpolate, ssrRenderAttr } from 'vue/server-renderer';
19
+ import { defineComponent, computed, unref, useSSRContext, mergeProps, h as h$2, createSSRApp, reactive, inject, ref, watch, toRef, onMounted, onBeforeUnmount, provide, createVNode as createVNode$1, resolveDynamicComponent, withCtx, renderSlot as renderSlot$1, withDirectives, vShow, openBlock, createBlock, createCommentVNode, Fragment as Fragment$1, renderList, toRefs, resolveComponent, toDisplayString, createTextVNode } from 'vue';
20
+ import { ssrRenderSlotInner, ssrRenderAttrs, ssrRenderSlot, renderToString as renderToString$1, ssrRenderClass, ssrRenderVNode, ssrRenderComponent, ssrRenderStyle, ssrRenderList, ssrInterpolate, ssrRenderAttr } from 'vue/server-renderer';
21
21
  import { i18n, formatMoney, img, price, onPromotion } from '@ecomplus/utils';
22
22
  /* empty css */import sharp$1 from 'sharp';
23
+ import { EventEmitter } from 'node:events';
23
24
  import api from '@cloudcommerce/api';
25
+ import fs$1, { readFileSync } from 'node:fs';
26
+ import { resolve, join } from 'node:path';
24
27
  import config from '@cloudcommerce/config';
25
28
  import sizeOf from 'image-size';
26
29
  import 'http-cache-semantics';
27
30
  import 'node:fs/promises';
28
31
  import 'node:os';
29
- import 'node:path';
30
32
  import 'node:url';
31
33
  import 'magic-string';
32
34
  import 'slash';
@@ -10882,7 +10884,7 @@ const adapter = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
10882
10884
  start
10883
10885
  }, Symbol.toStringTag, { value: 'Module' }));
10884
10886
 
10885
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
10887
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
10886
10888
  __name: "Fade",
10887
10889
  __ssrInlineRender: true,
10888
10890
  props: {
@@ -10984,15 +10986,15 @@ const _export_sfc = (sfc, props) => {
10984
10986
  return target;
10985
10987
  };
10986
10988
 
10987
- const _sfc_setup$6 = _sfc_main$6.setup;
10988
- _sfc_main$6.setup = (props, ctx) => {
10989
+ const _sfc_setup$7 = _sfc_main$7.setup;
10990
+ _sfc_main$7.setup = (props, ctx) => {
10989
10991
  const ssrContext = useSSRContext();
10990
10992
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/lib/components/globals/Fade.vue");
10991
- return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
10993
+ return _sfc_setup$7 ? _sfc_setup$7(props, ctx) : void 0;
10992
10994
  };
10993
- const Fade = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-f3719df1"]]);
10995
+ const Fade = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-f3719df1"]]);
10994
10996
 
10995
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
10997
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
10996
10998
  __name: "ALink",
10997
10999
  __ssrInlineRender: true,
10998
11000
  props: {
@@ -11023,11 +11025,11 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
11023
11025
  }
11024
11026
  });
11025
11027
 
11026
- const _sfc_setup$5 = _sfc_main$5.setup;
11027
- _sfc_main$5.setup = (props, ctx) => {
11028
+ const _sfc_setup$6 = _sfc_main$6.setup;
11029
+ _sfc_main$6.setup = (props, ctx) => {
11028
11030
  const ssrContext = useSSRContext();
11029
11031
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/lib/components/globals/ALink.vue");
11030
- return _sfc_setup$5 ? _sfc_setup$5(props, ctx) : void 0;
11032
+ return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
11031
11033
  };
11032
11034
 
11033
11035
  const formatPercentage = (value, digits = 1) => {
@@ -11044,7 +11046,7 @@ const createApp = (app) => {
11044
11046
  }
11045
11047
  });
11046
11048
  app.component("Fade", Fade);
11047
- app.component("ALink", _sfc_main$5);
11049
+ app.component("ALink", _sfc_main$6);
11048
11050
  };
11049
11051
 
11050
11052
  /**
@@ -11339,10 +11341,10 @@ const getCMS = () => {
11339
11341
  const cms = (filename) => {
11340
11342
  if (filename.endsWith('/')) {
11341
11343
  const dirColl = resolve(dirContent, filename);
11342
- return fs.readdirSync(dirColl).map((_filename) => _filename.replace('.json', ''));
11344
+ return fs$1.readdirSync(dirColl).map((_filename) => _filename.replace('.json', ''));
11343
11345
  }
11344
11346
  const filepath = resolve(dirContent, `${filename}.json`);
11345
- return JSON.parse(fs.readFileSync(filepath, 'utf8'));
11347
+ return JSON.parse(fs$1.readFileSync(filepath, 'utf8'));
11346
11348
  };
11347
11349
 
11348
11350
  let settings;
@@ -11370,14 +11372,6 @@ const _getConfig = () => {
11370
11372
  config.set({ storeId: Number(VITE_ECOM_STORE_ID) });
11371
11373
  }
11372
11374
 
11373
- const {
11374
- storeId,
11375
- lang,
11376
- countryCode,
11377
- currency,
11378
- currencySymbol,
11379
- } = config.get();
11380
-
11381
11375
  const {
11382
11376
  domain,
11383
11377
  primaryColor,
@@ -11387,6 +11381,24 @@ const _getConfig = () => {
11387
11381
  } = getCMS();
11388
11382
  config.set({ cmsSettings: settings });
11389
11383
 
11384
+ let { storeId } = config.get();
11385
+ if (!storeId) {
11386
+ const configFilepath = join(process.cwd(), 'config.json');
11387
+ try {
11388
+ const mergeConfig = JSON.parse(readFileSync(configFilepath), 'utf8');
11389
+ if (mergeConfig.storeId) {
11390
+ storeId = mergeConfig.storeId;
11391
+ config.set({ storeId });
11392
+ }
11393
+ } catch { /* */ }
11394
+ }
11395
+ const {
11396
+ lang,
11397
+ countryCode,
11398
+ currency,
11399
+ currencySymbol,
11400
+ } = config.get();
11401
+
11390
11402
  return {
11391
11403
  storeId,
11392
11404
  lang,
@@ -11401,12 +11413,18 @@ const _getConfig = () => {
11401
11413
  };
11402
11414
  };
11403
11415
 
11416
+ const emitter = new EventEmitter();
11404
11417
  const getConfig = _getConfig;
11405
11418
  if (!globalThis.api_prefetch_endpoints) {
11406
11419
  globalThis.api_prefetch_endpoints = ["categories"];
11407
11420
  }
11408
11421
  if (!globalThis.storefront) {
11409
- globalThis.storefront = { settings: {} };
11422
+ globalThis.storefront = {
11423
+ settings: {},
11424
+ onLoad(callback) {
11425
+ emitter.on("load", callback);
11426
+ }
11427
+ };
11410
11428
  }
11411
11429
  const setResponseCache = (Astro, maxAge, sMaxAge) => {
11412
11430
  const headerName = "Cache-Control" ;
@@ -11422,6 +11440,7 @@ const loadPageContext = async (Astro, {
11422
11440
  } = {}) => {
11423
11441
  const startedAt = Date.now();
11424
11442
  const urlPath = Astro.url.pathname;
11443
+ const isHomepage = urlPath === "/";
11425
11444
  const { slug } = Astro.params;
11426
11445
  const config = getConfig();
11427
11446
  globalThis.storefront.settings = config.settings;
@@ -11480,18 +11499,21 @@ const loadPageContext = async (Astro, {
11480
11499
  Astro.response.headers.set("X-Load-Took", String(Date.now() - startedAt));
11481
11500
  if (urlPath === "/fallback") {
11482
11501
  setResponseCache(Astro, 3600, 86400);
11483
- } else if (urlPath === "/") {
11502
+ } else if (isHomepage) {
11484
11503
  setResponseCache(Astro, 180, 300);
11485
11504
  } else {
11486
11505
  setResponseCache(Astro, 120, 300);
11487
11506
  }
11488
- return {
11507
+ const pageContext = {
11489
11508
  ...config,
11509
+ isHomepage,
11490
11510
  cmsContent,
11491
11511
  apiResource,
11492
11512
  apiDoc,
11493
11513
  apiState
11494
11514
  };
11515
+ emitter.emit("load", pageContext);
11516
+ return pageContext;
11495
11517
  };
11496
11518
 
11497
11519
  const pwaInfo = {"pwaInDevEnvironment":false,"webManifest":{"href":"/manifest.webmanifest","useCredentials":false,"linkTag":"<link rel=\"manifest\" href=\"/manifest.webmanifest\">"}};
@@ -11499,6 +11521,21 @@ const pwaInfo = {"pwaInDevEnvironment":false,"webManifest":{"href":"/manifest.we
11499
11521
  function isRemoteImage(src) {
11500
11522
  return /^(https?:)?\/\//.test(src);
11501
11523
  }
11524
+ function removeQueryString(src) {
11525
+ const index = src.lastIndexOf("?");
11526
+ return index > 0 ? src.substring(0, index) : src;
11527
+ }
11528
+ function extname(src) {
11529
+ const base = basename(src);
11530
+ const index = base.lastIndexOf(".");
11531
+ if (index <= 0) {
11532
+ return "";
11533
+ }
11534
+ return base.substring(index);
11535
+ }
11536
+ function basename(src) {
11537
+ return removeQueryString(src.replace(/^.*[\\\/]/, ""));
11538
+ }
11502
11539
 
11503
11540
  function resolveSize(transform) {
11504
11541
  if (transform.width && transform.height) {
@@ -11602,18 +11639,92 @@ async function getImage$1(transform) {
11602
11639
  };
11603
11640
  }
11604
11641
 
11642
+ async function resolveAspectRatio({ src, aspectRatio }) {
11643
+ if (typeof src === "string") {
11644
+ return parseAspectRatio(aspectRatio);
11645
+ } else {
11646
+ const metadata = "then" in src ? (await src).default : src;
11647
+ return parseAspectRatio(aspectRatio) || metadata.width / metadata.height;
11648
+ }
11649
+ }
11650
+ async function resolveFormats({ src, formats }) {
11651
+ const unique = new Set(formats);
11652
+ if (typeof src === "string") {
11653
+ unique.add(extname(src).replace(".", ""));
11654
+ } else {
11655
+ const metadata = "then" in src ? (await src).default : src;
11656
+ unique.add(extname(metadata.src).replace(".", ""));
11657
+ }
11658
+ return Array.from(unique).filter(Boolean);
11659
+ }
11660
+ async function getPicture(params) {
11661
+ const { src, alt, widths, fit, position, background } = params;
11662
+ if (!src) {
11663
+ throw new Error("[@astrojs/image] `src` is required");
11664
+ }
11665
+ if (!widths || !Array.isArray(widths)) {
11666
+ throw new Error("[@astrojs/image] at least one `width` is required");
11667
+ }
11668
+ const aspectRatio = await resolveAspectRatio(params);
11669
+ if (!aspectRatio) {
11670
+ throw new Error("`aspectRatio` must be provided for remote images");
11671
+ }
11672
+ const allFormats = await resolveFormats(params);
11673
+ const lastFormat = allFormats[allFormats.length - 1];
11674
+ const maxWidth = Math.max(...widths);
11675
+ let image;
11676
+ async function getSource(format) {
11677
+ const imgs = await Promise.all(
11678
+ widths.map(async (width) => {
11679
+ const img = await getImage$1({
11680
+ src,
11681
+ alt,
11682
+ format,
11683
+ width,
11684
+ fit,
11685
+ position,
11686
+ background,
11687
+ aspectRatio
11688
+ });
11689
+ if (format === lastFormat && width === maxWidth) {
11690
+ image = img;
11691
+ }
11692
+ return `${img.src} ${width}w`;
11693
+ })
11694
+ );
11695
+ return {
11696
+ type: mime.getType(format) || format,
11697
+ srcset: imgs.join(",")
11698
+ };
11699
+ }
11700
+ const sources = await Promise.all(allFormats.map((format) => getSource(format)));
11701
+ return {
11702
+ sources,
11703
+ image
11704
+ };
11705
+ }
11706
+
11605
11707
  const tryImageSize = (src) => {
11606
11708
  let dimensions = {};
11607
11709
  if (typeof src === "string" && src.startsWith("/")) {
11608
11710
  const { STOREFRONT_BASE_DIR } = Object.assign({"BASE_URL":"/","MODE":"production","DEV":false,"PROD":true}, { STOREFRONT_BASE_DIR: process.env.STOREFRONT_BASE_DIR });
11609
11711
  try {
11610
- dimensions = sizeOf(resolve(STOREFRONT_BASE_DIR, `public${src}`));
11712
+ dimensions = sizeOf(resolve$1(STOREFRONT_BASE_DIR, `public${src}`));
11611
11713
  } catch (e) {
11612
11714
  dimensions = {};
11613
11715
  }
11614
11716
  }
11615
11717
  return dimensions;
11616
11718
  };
11719
+ const getAspectRatio = (src) => {
11720
+ if (typeof src === "string") {
11721
+ src = tryImageSize(src);
11722
+ }
11723
+ if (src.width) {
11724
+ return src.height ? src.width / src.height : 1;
11725
+ }
11726
+ return 0;
11727
+ };
11617
11728
  const getImage = async (options) => {
11618
11729
  if (!options.isLowResolution) {
11619
11730
  if (options.width) {
@@ -11629,7 +11740,7 @@ const getImage = async (options) => {
11629
11740
  if (!options.width) {
11630
11741
  options.width = width;
11631
11742
  }
11632
- options.aspectRatio = height ? width / height : 1;
11743
+ options.aspectRatio = getAspectRatio({ width, height });
11633
11744
  }
11634
11745
  }
11635
11746
  const imgAttrs = await getImage$1({ alt: "", ...options });
@@ -11644,9 +11755,9 @@ const getImage = async (options) => {
11644
11755
  return imgAttrs;
11645
11756
  };
11646
11757
 
11647
- const $$Astro$f = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseHead.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11758
+ const $$Astro$i = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseHead.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11648
11759
  const $$BaseHead = createComponent(async ($$result, $$props, $$slots) => {
11649
- const Astro2 = $$result.createAstro($$Astro$f, $$props, $$slots);
11760
+ const Astro2 = $$result.createAstro($$Astro$i, $$props, $$slots);
11650
11761
  Astro2.self = $$BaseHead;
11651
11762
  const {
11652
11763
  storeId,
@@ -11715,9 +11826,9 @@ var __freeze$1 = Object.freeze;
11715
11826
  var __defProp$1 = Object.defineProperty;
11716
11827
  var __template$1 = (cooked, raw) => __freeze$1(__defProp$1(cooked, "raw", { value: __freeze$1(raw || cooked.slice()) }));
11717
11828
  var _a$1;
11718
- const $$Astro$e = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseStateJson.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11829
+ const $$Astro$h = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseStateJson.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11719
11830
  const $$BaseStateJson = createComponent(async ($$result, $$props, $$slots) => {
11720
- const Astro2 = $$result.createAstro($$Astro$e, $$props, $$slots);
11831
+ const Astro2 = $$result.createAstro($$Astro$h, $$props, $$slots);
11721
11832
  Astro2.self = $$BaseStateJson;
11722
11833
  const {
11723
11834
  pageContext: {
@@ -11777,20 +11888,19 @@ window.storefront.context = ${JSON.stringify({
11777
11888
  return renderTemplate(_a$1 || (_a$1 = __template$1(["<script>", '<\/script>\n<script type="application/ld+json">', "<\/script>\n"])), unescapeHTML(inlineClientJS), unescapeHTML(inlineJSONLd));
11778
11889
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseStateJson.astro");
11779
11890
 
11780
- const $$Astro$d = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseBody.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11891
+ const $$Astro$g = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseBody.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11781
11892
  const $$BaseBody = createComponent(async ($$result, $$props, $$slots) => {
11782
- const Astro2 = $$result.createAstro($$Astro$d, $$props, $$slots);
11893
+ const Astro2 = $$result.createAstro($$Astro$g, $$props, $$slots);
11783
11894
  Astro2.self = $$BaseBody;
11784
11895
  return renderTemplate`${maybeRenderHead($$result)}<body>
11785
11896
  ${renderSlot($$result, $$slots["default"])}
11786
- ${maybeRenderHead($$result)}
11787
11897
  ${renderSlot($$result, $$slots["before-body-end"])}
11788
11898
  </body>`;
11789
11899
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseBody.astro");
11790
11900
 
11791
- const $$Astro$c = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/Base.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11901
+ const $$Astro$f = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/Base.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11792
11902
  const $$Base$1 = createComponent(async ($$result, $$props, $$slots) => {
11793
- const Astro2 = $$result.createAstro($$Astro$c, $$props, $$slots);
11903
+ const Astro2 = $$result.createAstro($$Astro$f, $$props, $$slots);
11794
11904
  Astro2.self = $$Base$1;
11795
11905
  const { pageContext, title } = Astro2.props;
11796
11906
  const { cms } = pageContext;
@@ -11800,25 +11910,28 @@ const $$Base$1 = createComponent(async ($$result, $$props, $$slots) => {
11800
11910
  ${renderComponent($$result, "BaseStateJson", $$BaseStateJson, { "pageContext": pageContext })}
11801
11911
  ${cmsCustomCode.css && renderTemplate`<style>{cmsCustomCode.css}</style>`}
11802
11912
  ${cmsCustomCode.html_head && renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": () => renderTemplate`${unescapeHTML(cmsCustomCode.html_head)}` })}`}
11913
+ ${renderSlot($$result, $$slots["base-head-scripts"])}
11803
11914
  ${renderSlot($$result, $$slots["before-head-end"])}
11804
11915
  ${renderHead($$result)}</head>
11805
- ${renderComponent($$result, "BaseBody", $$BaseBody, { "pageContext": pageContext }, { "default": () => renderTemplate`${renderSlot($$result, $$slots["default"])}${cmsCustomCode.html_body && renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": () => renderTemplate`${unescapeHTML(cmsCustomCode.html_body)}` })}`}${renderSlot($$result, $$slots["before-body-end"])}` })}`;
11916
+ ${renderComponent($$result, "BaseBody", $$BaseBody, { "pageContext": pageContext }, { "default": () => renderTemplate`${renderSlot($$result, $$slots["default"])}${cmsCustomCode.html_body && renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": () => renderTemplate`${unescapeHTML(cmsCustomCode.html_body)}` })}`}${renderSlot($$result, $$slots["base-body-scripts"], renderTemplate`
11917
+ ${maybeRenderHead($$result)}
11918
+ `)}${renderSlot($$result, $$slots["before-body-end"])}` })}`;
11806
11919
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/Base.astro");
11807
11920
 
11808
11921
  var __freeze = Object.freeze;
11809
11922
  var __defProp = Object.defineProperty;
11810
11923
  var __template = (cooked, raw) => __freeze(__defProp(cooked, "raw", { value: __freeze(raw || cooked.slice()) }));
11811
11924
  var _a;
11812
- const $$Astro$b = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/scripts/InlineScripts.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11925
+ const $$Astro$e = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/scripts/InlineScripts.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11813
11926
  const $$InlineScripts = createComponent(async ($$result, $$props, $$slots) => {
11814
- const Astro2 = $$result.createAstro($$Astro$b, $$props, $$slots);
11927
+ const Astro2 = $$result.createAstro($$Astro$e, $$props, $$slots);
11815
11928
  Astro2.self = $$InlineScripts;
11816
11929
  return renderTemplate(_a || (_a = __template(["<script>\n window.firebaseConfig = {\n apiKey: 'AIzaSyCrVzemDgpyp9i6ni7Yc5ZuEVfXYwl-4J0',\n authDomain: 'ecom2-002.firebaseapp.com',\n projectId: 'ecom2-002',\n storageBucket: 'ecom2-002.appspot.com',\n messagingSenderId: '402807248219',\n appId: '1:402807248219:web:cf7d57759751e74776367e',\n measurementId: 'G-SC592CE0GB',\n };\n<\/script>\n"])));
11817
11930
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/scripts/InlineScripts.astro");
11818
11931
 
11819
- const $$Astro$a = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/layouts/Base.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11932
+ const $$Astro$d = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/layouts/Base.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11820
11933
  const $$Base = createComponent(async ($$result, $$props, $$slots) => {
11821
- const Astro2 = $$result.createAstro($$Astro$a, $$props, $$slots);
11934
+ const Astro2 = $$result.createAstro($$Astro$d, $$props, $$slots);
11822
11935
  Astro2.self = $$Base;
11823
11936
  const { pageContext, title } = Astro2.props;
11824
11937
  return renderTemplate`${renderComponent($$result, "Base", $$Base$1, { "pageContext": pageContext, "title": title }, { "before-head-end": () => renderTemplate`${renderComponent($$result, "InlineScripts", $$InlineScripts, { "slot": "before-head-end" })}`, "default": () => renderTemplate`${renderSlot($$result, $$slots["default"])}` })}
@@ -11826,9 +11939,161 @@ const $$Base = createComponent(async ($$result, $$props, $$slots) => {
11826
11939
  `;
11827
11940
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/layouts/Base.astro");
11828
11941
 
11942
+ const $$Astro$c = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/node_modules/@astrojs/image/components/Image.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11943
+ const $$Image = createComponent(async ($$result, $$props, $$slots) => {
11944
+ const Astro2 = $$result.createAstro($$Astro$c, $$props, $$slots);
11945
+ Astro2.self = $$Image;
11946
+ const { loading = "lazy", decoding = "async", ...props } = Astro2.props;
11947
+ if (props.alt === void 0 || props.alt === null) {
11948
+ warnForMissingAlt();
11949
+ }
11950
+ const attrs = await getImage$1(props);
11951
+ return renderTemplate`${maybeRenderHead($$result)}<img${spreadAttributes(attrs)}${addAttribute(loading, "loading")}${addAttribute(decoding, "decoding")}>`;
11952
+ }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/node_modules/@astrojs/image/components/Image.astro");
11953
+
11954
+ const $$Astro$b = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/node_modules/@astrojs/image/components/Picture.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
11955
+ const $$Picture$1 = createComponent(async ($$result, $$props, $$slots) => {
11956
+ const Astro2 = $$result.createAstro($$Astro$b, $$props, $$slots);
11957
+ Astro2.self = $$Picture$1;
11958
+ const {
11959
+ src,
11960
+ alt,
11961
+ sizes,
11962
+ widths,
11963
+ aspectRatio,
11964
+ fit,
11965
+ background,
11966
+ position,
11967
+ formats = ["avif", "webp"],
11968
+ loading = "lazy",
11969
+ decoding = "async",
11970
+ ...attrs
11971
+ } = Astro2.props;
11972
+ if (alt === void 0 || alt === null) {
11973
+ warnForMissingAlt();
11974
+ }
11975
+ const { image, sources } = await getPicture({
11976
+ src,
11977
+ widths,
11978
+ formats,
11979
+ aspectRatio,
11980
+ fit,
11981
+ background,
11982
+ position
11983
+ });
11984
+ delete image.width;
11985
+ delete image.height;
11986
+ return renderTemplate`${maybeRenderHead($$result)}<picture>
11987
+ ${sources.map((attrs2) => renderTemplate`<source${spreadAttributes(attrs2)}${addAttribute(sizes, "sizes")}>`)}
11988
+ <img${spreadAttributes(image)}${addAttribute(loading, "loading")}${addAttribute(decoding, "decoding")}${addAttribute(alt, "alt")}${spreadAttributes(attrs)}>
11989
+ </picture>`;
11990
+ }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/node_modules/@astrojs/image/components/Picture.astro");
11991
+
11992
+ let altWarningShown = false;
11993
+ function warnForMissingAlt() {
11994
+ if (altWarningShown === true) {
11995
+ return;
11996
+ }
11997
+ altWarningShown = true;
11998
+ console.warn(`
11999
+ [@astrojs/image] "alt" text was not provided for an <Image> or <Picture> component.
12000
+
12001
+ A future release of @astrojs/image may throw a build error when "alt" text is missing.
12002
+
12003
+ The "alt" attribute holds a text description of the image, which isn't mandatory but is incredibly useful for accessibility. Set to an empty string (alt="") if the image is not a key part of the content (it's decoration or a tracking pixel).
12004
+ `);
12005
+ }
12006
+
12007
+ const $$Astro$a = createAstro("/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/ssr/Picture.astro", "https://ecom2-002.web.app/", "file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/");
12008
+ const $$Picture = createComponent(async ($$result, $$props, $$slots) => {
12009
+ const Astro2 = $$result.createAstro($$Astro$a, $$props, $$slots);
12010
+ Astro2.self = $$Picture;
12011
+ const props = Astro2.props;
12012
+ if (!props.aspectRatio && typeof props.src === "string") {
12013
+ props.aspectRatio = getAspectRatio(props.src);
12014
+ }
12015
+ return renderTemplate`${renderComponent($$result, "Picture", $$Picture$1, { ...props })}`;
12016
+ }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/ssr/Picture.astro");
12017
+
12018
+ const checkObjNotNull = (obj) => {
12019
+ return Object.values(obj).filter((val) => val).length;
12020
+ };
12021
+ const getModulesInfoPreset = (settingsModules = globalThis.storefront.settings.modules) => {
12022
+ const modulesInfoPreset = {};
12023
+ if (settingsModules) {
12024
+ const settingsPayments = settingsModules.list_payments;
12025
+ if (settingsPayments) {
12026
+ const settingsDiscount = settingsPayments.discount_option;
12027
+ if (settingsDiscount && checkObjNotNull(settingsDiscount)) {
12028
+ modulesInfoPreset.list_payments = { discount_option: settingsDiscount };
12029
+ }
12030
+ const settingsInstallments = settingsPayments.installments_option;
12031
+ if (settingsInstallments?.max_number) {
12032
+ if (!modulesInfoPreset.list_payments)
12033
+ modulesInfoPreset.list_payments = {};
12034
+ modulesInfoPreset.list_payments.installments_option = settingsInstallments;
12035
+ }
12036
+ const settingsPointsPrograms = settingsPayments.loyalty_points_programs || {};
12037
+ if (!Object.keys(settingsPointsPrograms).length) {
12038
+ const pointsProgram = { ...settingsPayments.loyalty_points_program };
12039
+ if (pointsProgram?.id && pointsProgram.ratio) {
12040
+ const { id } = pointsProgram;
12041
+ delete pointsProgram.id;
12042
+ settingsPointsPrograms[id] = pointsProgram;
12043
+ }
12044
+ }
12045
+ if (Object.keys(settingsPointsPrograms).length) {
12046
+ if (!modulesInfoPreset.list_payments)
12047
+ modulesInfoPreset.list_payments = {};
12048
+ modulesInfoPreset.list_payments.loyalty_points_programs = settingsPointsPrograms;
12049
+ }
12050
+ }
12051
+ const settingsShipping = settingsModules.calculate_shipping;
12052
+ if (settingsShipping && settingsShipping.free_shipping_from_value) {
12053
+ modulesInfoPreset.calculate_shipping = settingsShipping;
12054
+ }
12055
+ }
12056
+ return modulesInfoPreset;
12057
+ };
12058
+ const loadingGlobalInfoPreset = new Promise((resolve) => {
12059
+ {
12060
+ global.storefront.onLoad(() => {
12061
+ resolve(getModulesInfoPreset());
12062
+ });
12063
+ }
12064
+ });
12065
+
12066
+ const emptyInfo = {
12067
+ list_payments: {},
12068
+ calculate_shipping: {},
12069
+ apply_discount: {}
12070
+ };
12071
+ const modulesInfo = reactive(emptyInfo);
12072
+ loadingGlobalInfoPreset.then((modulesInfoPreset) => {
12073
+ Object.assign(modulesInfo, modulesInfoPreset);
12074
+ });
12075
+ const parsePhrase = (phrase, modName, varName, formatValue = formatMoney) => {
12076
+ return computed(() => {
12077
+ const searchString = `{{${varName}}}`;
12078
+ const index = phrase.indexOf(searchString);
12079
+ if (index > -1) {
12080
+ const fieldValue = modulesInfo[modName][varName];
12081
+ if (fieldValue) {
12082
+ const replacement = formatValue(fieldValue);
12083
+ return phrase.substring(0, index) + replacement + phrase.substring(index + searchString.length);
12084
+ }
12085
+ return "";
12086
+ }
12087
+ return phrase;
12088
+ });
12089
+ };
12090
+ const parseShippingPhrase = (phrase) => {
12091
+ return parsePhrase(phrase, "calculate_shipping", "free_shipping_from_value");
12092
+ };
12093
+
11829
12094
  const carouselKey = Symbol("carousel");
11830
12095
 
11831
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
12096
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
11832
12097
  __name: "CarouselControl",
11833
12098
  __ssrInlineRender: true,
11834
12099
  props: {
@@ -11843,21 +12108,21 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
11843
12108
  "data-carousel-control": __props.direction > 0 ? "next" : "previous"
11844
12109
  }, _attrs))}>`);
11845
12110
  ssrRenderSlot(_ctx.$slots, "default", {}, () => {
11846
- _push(`<i class="${ssrRenderClass([__props.direction > 0 ? "i-chevron-right" : "i-chevron-left", "mb-0 z-10"])}"></i>`);
12111
+ _push(`<i class="${ssrRenderClass([__props.direction > 0 ? "i-chevron-right" : "i-chevron-left", "m-0"])}"></i>`);
11847
12112
  }, _push, _parent);
11848
12113
  _push(`</button>`);
11849
12114
  };
11850
12115
  }
11851
12116
  });
11852
12117
 
11853
- const _sfc_setup$4 = _sfc_main$4.setup;
11854
- _sfc_main$4.setup = (props, ctx) => {
12118
+ const _sfc_setup$5 = _sfc_main$5.setup;
12119
+ _sfc_main$5.setup = (props, ctx) => {
11855
12120
  const ssrContext = useSSRContext();
11856
12121
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/lib/components/CarouselControl.vue");
11857
- return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
12122
+ return _sfc_setup$5 ? _sfc_setup$5(props, ctx) : void 0;
11858
12123
  };
11859
12124
 
11860
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
12125
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
11861
12126
  __name: "Carousel",
11862
12127
  __ssrInlineRender: true,
11863
12128
  props: {
@@ -12026,7 +12291,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
12026
12291
  _: 3
12027
12292
  }), _parent);
12028
12293
  ssrRenderSlot(_ctx.$slots, "controls", { changeSlide, isBoundLeft: isBoundLeft.value, isBoundRight: isBoundRight.value }, () => {
12029
- _push(ssrRenderComponent(_sfc_main$4, { direction: -1 }, {
12294
+ _push(ssrRenderComponent(_sfc_main$5, { direction: -1 }, {
12030
12295
  default: withCtx((_, _push2, _parent2, _scopeId) => {
12031
12296
  if (_push2) {
12032
12297
  ssrRenderSlot(_ctx.$slots, "previous", {}, null, _push2, _parent2, _scopeId);
@@ -12038,7 +12303,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
12038
12303
  }),
12039
12304
  _: 3
12040
12305
  }, _parent));
12041
- _push(ssrRenderComponent(_sfc_main$4, null, {
12306
+ _push(ssrRenderComponent(_sfc_main$5, null, {
12042
12307
  default: withCtx((_, _push2, _parent2, _scopeId) => {
12043
12308
  if (_push2) {
12044
12309
  ssrRenderSlot(_ctx.$slots, "next", {}, null, _push2, _parent2, _scopeId);
@@ -12056,43 +12321,56 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
12056
12321
  }
12057
12322
  });
12058
12323
 
12059
- const _sfc_setup$3 = _sfc_main$3.setup;
12060
- _sfc_main$3.setup = (props, ctx) => {
12324
+ const _sfc_setup$4 = _sfc_main$4.setup;
12325
+ _sfc_main$4.setup = (props, ctx) => {
12061
12326
  const ssrContext = useSSRContext();
12062
12327
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/lib/components/Carousel.vue");
12063
- return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
12328
+ return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
12064
12329
  };
12065
12330
 
12066
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
12331
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
12067
12332
  __name: "PitchBar",
12068
12333
  __ssrInlineRender: true,
12069
12334
  props: {
12070
12335
  slides: null
12071
12336
  },
12072
12337
  setup(__props) {
12338
+ const props = __props;
12339
+ const parsedContents = computed(() => {
12340
+ return props.slides.map(({ html }) => {
12341
+ return parseShippingPhrase(html).value;
12342
+ });
12343
+ });
12344
+ const countValidSlides = computed(() => {
12345
+ return parsedContents.value.filter((html) => html).length;
12346
+ });
12073
12347
  return (_ctx, _push, _parent, _attrs) => {
12074
12348
  _push(`<div${ssrRenderAttrs(mergeProps({
12075
12349
  "data-pitch-bar": "",
12076
12350
  class: "bg-base-100"
12077
12351
  }, _attrs))}><div class="container md:w-2/3 mx-auto px-3 py-1">`);
12078
- _push(ssrRenderComponent(_sfc_main$3, { autoplay: 7e3 }, {
12352
+ _push(ssrRenderComponent(_sfc_main$4, {
12353
+ autoplay: unref(countValidSlides) > 1 ? 7e3 : null
12354
+ }, {
12079
12355
  controls: withCtx((_, _push2, _parent2, _scopeId) => {
12080
12356
  if (_push2) {
12081
- _push2(`<div class="text-xl leading-none text-base-400"${_scopeId}>`);
12082
- _push2(ssrRenderComponent(_sfc_main$4, {
12357
+ _push2(`<div style="${ssrRenderStyle(unref(countValidSlides) > 1 ? null : { display: "none" })}" class="text-xl leading-none text-base-400"${_scopeId}>`);
12358
+ _push2(ssrRenderComponent(_sfc_main$5, {
12083
12359
  direction: -1,
12084
12360
  class: "pr-2 bg-base-100 hover:text-base-700"
12085
12361
  }, null, _parent2, _scopeId));
12086
- _push2(ssrRenderComponent(_sfc_main$4, { class: "pl-2 bg-base-100 hover:text-base-700" }, null, _parent2, _scopeId));
12362
+ _push2(ssrRenderComponent(_sfc_main$5, { class: "pl-2 bg-base-100 hover:text-base-700" }, null, _parent2, _scopeId));
12087
12363
  _push2(`</div>`);
12088
12364
  } else {
12089
12365
  return [
12090
- createVNode$1("div", { class: "text-xl leading-none text-base-400" }, [
12091
- createVNode$1(_sfc_main$4, {
12366
+ withDirectives(createVNode$1("div", { class: "text-xl leading-none text-base-400" }, [
12367
+ createVNode$1(_sfc_main$5, {
12092
12368
  direction: -1,
12093
12369
  class: "pr-2 bg-base-100 hover:text-base-700"
12094
12370
  }),
12095
- createVNode$1(_sfc_main$4, { class: "pl-2 bg-base-100 hover:text-base-700" })
12371
+ createVNode$1(_sfc_main$5, { class: "pl-2 bg-base-100 hover:text-base-700" })
12372
+ ], 512), [
12373
+ [vShow, unref(countValidSlides) > 1]
12096
12374
  ])
12097
12375
  ];
12098
12376
  }
@@ -12100,25 +12378,30 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
12100
12378
  default: withCtx((_, _push2, _parent2, _scopeId) => {
12101
12379
  if (_push2) {
12102
12380
  _push2(`<!--[-->`);
12103
- ssrRenderList(__props.slides, ({ href, target, html }, i) => {
12381
+ ssrRenderList(__props.slides, (slide, i) => {
12104
12382
  _push2(`<li${_scopeId}>`);
12105
- ssrRenderVNode(_push2, createVNode$1(resolveDynamicComponent(href ? "ALink" : "span"), {
12106
- href,
12107
- target,
12108
- class: href ? "hover:underline" : null
12383
+ ssrRenderVNode(_push2, createVNode$1(resolveDynamicComponent(slide.href ? "ALink" : "span"), {
12384
+ href: slide.href,
12385
+ target: slide.target,
12386
+ class: slide.href ? "hover:underline" : null
12109
12387
  }, {
12110
12388
  default: withCtx((_2, _push3, _parent3, _scopeId2) => {
12111
12389
  if (_push3) {
12112
- ssrRenderSlot(_ctx.$slots, "slide", {}, () => {
12113
- _push3(`<span class="prose text-sm text-base-800"${_scopeId2}>${html}</span>`);
12390
+ ssrRenderSlot(_ctx.$slots, "slide", { slide, i, parsedContents: unref(parsedContents) }, () => {
12391
+ if (unref(parsedContents)[i]) {
12392
+ _push3(`<span class="prose text-sm text-base-800"${_scopeId2}>${unref(parsedContents)[i]}</span>`);
12393
+ } else {
12394
+ _push3(`<!---->`);
12395
+ }
12114
12396
  }, _push3, _parent3, _scopeId2);
12115
12397
  } else {
12116
12398
  return [
12117
- renderSlot$1(_ctx.$slots, "slide", {}, () => [
12118
- createVNode$1("span", {
12119
- innerHTML: html,
12399
+ renderSlot$1(_ctx.$slots, "slide", { slide, i, parsedContents: unref(parsedContents) }, () => [
12400
+ unref(parsedContents)[i] ? (openBlock(), createBlock("span", {
12401
+ key: 0,
12402
+ innerHTML: unref(parsedContents)[i],
12120
12403
  class: "prose text-sm text-base-800"
12121
- }, null, 8, ["innerHTML"])
12404
+ }, null, 8, ["innerHTML"])) : createCommentVNode("", true)
12122
12405
  ])
12123
12406
  ];
12124
12407
  }
@@ -12130,19 +12413,20 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
12130
12413
  _push2(`<!--]-->`);
12131
12414
  } else {
12132
12415
  return [
12133
- (openBlock(true), createBlock(Fragment$1, null, renderList(__props.slides, ({ href, target, html }, i) => {
12416
+ (openBlock(true), createBlock(Fragment$1, null, renderList(__props.slides, (slide, i) => {
12134
12417
  return openBlock(), createBlock("li", { key: i }, [
12135
- (openBlock(), createBlock(resolveDynamicComponent(href ? "ALink" : "span"), {
12136
- href,
12137
- target,
12138
- class: href ? "hover:underline" : null
12418
+ (openBlock(), createBlock(resolveDynamicComponent(slide.href ? "ALink" : "span"), {
12419
+ href: slide.href,
12420
+ target: slide.target,
12421
+ class: slide.href ? "hover:underline" : null
12139
12422
  }, {
12140
12423
  default: withCtx(() => [
12141
- renderSlot$1(_ctx.$slots, "slide", {}, () => [
12142
- createVNode$1("span", {
12143
- innerHTML: html,
12424
+ renderSlot$1(_ctx.$slots, "slide", { slide, i, parsedContents: unref(parsedContents) }, () => [
12425
+ unref(parsedContents)[i] ? (openBlock(), createBlock("span", {
12426
+ key: 0,
12427
+ innerHTML: unref(parsedContents)[i],
12144
12428
  class: "prose text-sm text-base-800"
12145
- }, null, 8, ["innerHTML"])
12429
+ }, null, 8, ["innerHTML"])) : createCommentVNode("", true)
12146
12430
  ])
12147
12431
  ]),
12148
12432
  _: 2
@@ -12159,10 +12443,66 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
12159
12443
  }
12160
12444
  });
12161
12445
 
12446
+ const _sfc_setup$3 = _sfc_main$3.setup;
12447
+ _sfc_main$3.setup = (props, ctx) => {
12448
+ const ssrContext = useSSRContext();
12449
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/lib/components/PitchBar.vue");
12450
+ return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
12451
+ };
12452
+
12453
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
12454
+ __name: "StickyHeader",
12455
+ __ssrInlineRender: true,
12456
+ props: {
12457
+ logo: null,
12458
+ logoAltHeading: { default: "h2" }
12459
+ },
12460
+ setup(__props) {
12461
+ const props = __props;
12462
+ const { logo } = toRefs(props);
12463
+ return (_ctx, _push, _parent, _attrs) => {
12464
+ _push(`<header${ssrRenderAttrs(mergeProps({
12465
+ class: "header bg-opacity-90 backdrop-blur-md sticky top-0 z-50 py-1 sm:py-2",
12466
+ "data-sticky-header": ""
12467
+ }, _attrs))}><div class="container"><div class="grid grid-flow-col auto-cols-max justify-between items-center">`);
12468
+ ssrRenderSlot(_ctx.$slots, "aside", {}, () => {
12469
+ _push(`<div class="header__aside md:hidden"><div class="i-bars-3-bottom-left"></div></div>`);
12470
+ }, _push, _parent);
12471
+ ssrRenderSlot(_ctx.$slots, "logo", { logo: unref(logo) }, () => {
12472
+ if (unref(logo)) {
12473
+ _push(`<a href="/">`);
12474
+ ssrRenderVNode(_push, createVNode$1(resolveDynamicComponent(unref(logo).alt && __props.logoAltHeading || "span"), { class: "m-0" }, {
12475
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
12476
+ if (_push2) {
12477
+ _push2(`<img${ssrRenderAttrs(unref(logo))}${_scopeId}>`);
12478
+ } else {
12479
+ return [
12480
+ createVNode$1("img", unref(logo), null, 16)
12481
+ ];
12482
+ }
12483
+ }),
12484
+ _: 1
12485
+ }), _parent);
12486
+ _push(`</a>`);
12487
+ } else {
12488
+ _push(`<!---->`);
12489
+ }
12490
+ }, _push, _parent);
12491
+ _push(`<div class="flex items-center">`);
12492
+ ssrRenderSlot(_ctx.$slots, "actions", {}, () => {
12493
+ ssrRenderSlot(_ctx.$slots, "nav", {}, null, _push, _parent);
12494
+ ssrRenderSlot(_ctx.$slots, "search", {}, null, _push, _parent);
12495
+ ssrRenderSlot(_ctx.$slots, "buttons", {}, null, _push, _parent);
12496
+ }, _push, _parent);
12497
+ _push(`</div></div></div></header>`);
12498
+ };
12499
+ }
12500
+ });
12501
+
12162
12502
  const _sfc_setup$2 = _sfc_main$2.setup;
12163
12503
  _sfc_main$2.setup = (props, ctx) => {
12164
12504
  const ssrContext = useSSRContext();
12165
- (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/lib/components/PitchBar.vue");
12505
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/lib/components/StickyHeader.vue");
12166
12506
  return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
12167
12507
  };
12168
12508
 
@@ -12172,6 +12512,7 @@ const $$PagesHeader = createComponent(async ($$result, $$props, $$slots) => {
12172
12512
  Astro2.self = $$PagesHeader;
12173
12513
  const {
12174
12514
  pageContext: {
12515
+ isHomepage,
12175
12516
  apiState,
12176
12517
  settings,
12177
12518
  cms
@@ -12187,8 +12528,14 @@ const $$PagesHeader = createComponent(async ($$result, $$props, $$slots) => {
12187
12528
  html: header.marketing_stripe.text
12188
12529
  }];
12189
12530
  }
12531
+ const logoSrc = header.logo || settings.logo;
12532
+ const LogoHeading = Astro2.props.logoHeading || (isHomepage ? "h1" : "h2");
12190
12533
  return renderTemplate`${renderComponent($$result, "Fragment", Fragment, {}, { "default": () => renderTemplate`${renderSlot($$result, $$slots["pitch-bar"], renderTemplate`
12191
- ${pitchBar.slides.length && renderTemplate`${renderComponent($$result, "PitchBar", _sfc_main$2, { ...pitchBar, "client:idle": true, "client:component-hydration": "idle", "client:component-path": "@@sf/components/PitchBar.vue", "client:component-export": "default" })}`}
12534
+ ${pitchBar.slides.length && renderTemplate`${renderComponent($$result, "PitchBar", _sfc_main$3, { ...pitchBar, "client:idle": true, "client:component-hydration": "idle", "client:component-path": "@@sf/components/PitchBar.vue", "client:component-export": "default" })}`}
12535
+ `)}${renderSlot($$result, $$slots["sticky-header"], renderTemplate`
12536
+ ${renderComponent($$result, "StickyHeader", _sfc_main$2, {}, { "logo": () => renderTemplate`${renderComponent($$result, "Fragment", Fragment, { "slot": "logo" }, { "default": () => renderTemplate`${renderSlot($$result, $$slots["logo"], renderTemplate`
12537
+ ${renderComponent($$result, "LogoHeading", LogoHeading, {}, { "default": () => renderTemplate`${renderComponent($$result, "Picture", $$Picture, { "src": logoSrc, "alt": settings.name, "widths": [300], "sizes": "150px", "fetchpriority": "high" })}` })}
12538
+ `)}` })}` })}
12192
12539
  `)}` })}
12193
12540
  `;
12194
12541
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/PagesHeader.astro");
@@ -12203,13 +12550,6 @@ const $$Pages = createComponent(async ($$result, $$props, $$slots) => {
12203
12550
  `)}${renderSlot($$result, $$slots["default"])}` })}`;
12204
12551
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/layouts/Pages.astro");
12205
12552
 
12206
- const emptyInfo = {
12207
- list_payments: {},
12208
- calculate_shipping: {},
12209
- apply_discount: {}
12210
- };
12211
- const modulesInfo = reactive(emptyInfo);
12212
-
12213
12553
  const getPriceWithDiscount = (price, discount) => {
12214
12554
  const { type, value } = discount;
12215
12555
  let priceWithDiscount;
@@ -12960,7 +13300,7 @@ const _page5 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
12960
13300
  const pageMap = new Map([["../../node_modules/.pnpm/@astrojs+image@0.12.1_sharp@0.31.3/node_modules/@astrojs/image/dist/endpoint.js", _page0],["src/pages/index.astro", _page1],["src/pages/fallback.astro", _page2],["src/pages/app/index.astro", _page3],["src/pages/app/account.astro", _page4],["src/pages/[...slug].astro", _page5],]);
12961
13301
  const renderers = [Object.assign({"name":"astro:jsx","serverEntrypoint":"astro/jsx/server.js","jsxImportSource":"astro"}, { ssr: server_default }),Object.assign({"name":"@astrojs/vue","clientEntrypoint":"@astrojs/vue/client.js","serverEntrypoint":"@astrojs/vue/server.js"}, { ssr: _renderer1 }),];
12962
13302
 
12963
- const _manifest = Object.assign(deserializeManifest({"adapterName":"@astrojs/node","routes":[{"file":"","links":[],"scripts":[],"routeData":{"type":"endpoint","route":"/_image","pattern":"^\\/_image$","segments":[[{"content":"_image","dynamic":false,"spread":false}]],"params":[],"component":"../../node_modules/.pnpm/@astrojs+image@0.12.1_sharp@0.31.3/node_modules/@astrojs/image/dist/endpoint.js","pathname":"/_image","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":["assets/_...slug_.fea84512.css","assets/index.90df622b.css"],"scripts":[{"type":"external","value":"hoisted.4671ed15.js"}],"routeData":{"route":"/","type":"page","pattern":"^\\/$","segments":[],"params":[],"component":"src/pages/index.astro","pathname":"/","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":["assets/_...slug_.fea84512.css"],"scripts":[{"type":"external","value":"hoisted.4671ed15.js"}],"routeData":{"route":"/fallback","type":"page","pattern":"^\\/fallback\\/?$","segments":[[{"content":"fallback","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/fallback.astro","pathname":"/fallback","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"routeData":{"route":"/app","type":"page","pattern":"^\\/app\\/?$","segments":[[{"content":"app","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/app/index.astro","pathname":"/app","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"routeData":{"route":"/app/account","type":"page","pattern":"^\\/app\\/account\\/?$","segments":[[{"content":"app","dynamic":false,"spread":false}],[{"content":"account","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/app/account.astro","pathname":"/app/account","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":["assets/_...slug_.fea84512.css"],"scripts":[{"type":"external","value":"hoisted.4671ed15.js"}],"routeData":{"route":"/[...slug]","type":"page","pattern":"^(?:\\/(.*?))?\\/?$","segments":[[{"content":"...slug","dynamic":true,"spread":true}]],"params":["...slug"],"component":"src/pages/[...slug].astro","_meta":{"trailingSlash":"ignore"}}}],"site":"https://ecom2-002.web.app/","base":"/","markdown":{"drafts":false,"syntaxHighlight":"shiki","shikiConfig":{"langs":[],"theme":"github-dark","wrap":false},"remarkPlugins":[],"rehypePlugins":[],"remarkRehype":{},"extendDefaultPlugins":false,"isAstroFlavoredMd":false,"isExperimentalContentCollections":false,"contentDir":"file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/content/"},"pageMap":null,"renderers":[],"entryModules":{"\u0000@astrojs-ssr-virtual-entry":"entry.mjs","@@sf/components/Prices.vue":"Prices.eaf8a32c.js","@@sf/components/ProductCard.vue":"ProductCard.1106b153.js","@@sf/components/PitchBar.vue":"PitchBar.afe7ff5c.js","@astrojs/vue/client.js":"client.367a6497.js","/astro/hoisted.js?q=0":"hoisted.4671ed15.js","/home/leo/code/ecomplus/cloud-commerce/node_modules/workbox-window/build/workbox-window.prod.es5.mjs":"chunks/workbox-window.prod.es5.10f2e5ac.js","astro:scripts/before-hydration.js":""},"assets":["/assets/index.90df622b.css","/assets/server.4d9646d8.css","/assets/_...slug_.fea84512.css","/manifest.webmanifest","/registerSW.js","/PitchBar.afe7ff5c.js","/Prices.eaf8a32c.js","/ProductCard.1106b153.js","/client.367a6497.js","/hoisted.4671ed15.js","/robots.txt","/sw.js","/workbox-e2ee76b5.js","/admin/config.json","/assets/cms-preview.css","/assets/cms.css","/assets/cvv.png","/assets/img-placeholder.png","/assets/payments.png","/assets/ssl-safe.png","/chunks/Prices.vue_vue_type_script_setup_true_lang.781b6501.js","/chunks/ecom-utils.63984324.js","/chunks/runtime-core.esm-bundler.fa6cdb60.js","/chunks/session-utm.2de8b604.js","/chunks/workbox-window.prod.es5.10f2e5ac.js","/img/icon.png","/img/large-icon.png","/img/uploads/banner1.png","/img/uploads/banner2.png","/img/uploads/banner2.webp","/img/uploads/favicon.png","/img/uploads/headless.png","/img/uploads/headphone.png","/img/uploads/headphone.webp","/img/uploads/icon.png","/img/uploads/large-icon.png","/img/uploads/logo.png","/img/uploads/logo.webp","/img/uploads/og-image.png","/img/uploads/passion.png","/img/uploads/passion.webp","/img/uploads/pwa-reliable.png","/img/uploads/rect8589.png","/img/uploads/rect859.png","/img/uploads/rect89.png","/img/uploads/rect89.webp","/img/uploads/ssl-safe.png","/assets/icons/bootstrap-icons/font/storefront-icons.woff2","/assets/icons/feather-icons/font/storefront-icons.woff2","/assets/icons/font-awesome/font/storefront-icons.woff2","/assets/icons/line-awesome/font/storefront-icons.woff2","/assets/icons/tabler-icons/font/storefront-icons.woff2"]}), {
13303
+ const _manifest = Object.assign(deserializeManifest({"adapterName":"@astrojs/node","routes":[{"file":"","links":[],"scripts":[],"routeData":{"type":"endpoint","route":"/_image","pattern":"^\\/_image$","segments":[[{"content":"_image","dynamic":false,"spread":false}]],"params":[],"component":"../../node_modules/.pnpm/@astrojs+image@0.12.1_sharp@0.31.3/node_modules/@astrojs/image/dist/endpoint.js","pathname":"/_image","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":["assets/_...slug_.b701cbb1.css","assets/index.90df622b.css"],"scripts":[{"type":"external","value":"hoisted.11b849a7.js"}],"routeData":{"route":"/","type":"page","pattern":"^\\/$","segments":[],"params":[],"component":"src/pages/index.astro","pathname":"/","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":["assets/_...slug_.b701cbb1.css"],"scripts":[{"type":"external","value":"hoisted.11b849a7.js"}],"routeData":{"route":"/fallback","type":"page","pattern":"^\\/fallback\\/?$","segments":[[{"content":"fallback","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/fallback.astro","pathname":"/fallback","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"routeData":{"route":"/app","type":"page","pattern":"^\\/app\\/?$","segments":[[{"content":"app","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/app/index.astro","pathname":"/app","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"routeData":{"route":"/app/account","type":"page","pattern":"^\\/app\\/account\\/?$","segments":[[{"content":"app","dynamic":false,"spread":false}],[{"content":"account","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/app/account.astro","pathname":"/app/account","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":["assets/_...slug_.b701cbb1.css"],"scripts":[{"type":"external","value":"hoisted.11b849a7.js"}],"routeData":{"route":"/[...slug]","type":"page","pattern":"^(?:\\/(.*?))?\\/?$","segments":[[{"content":"...slug","dynamic":true,"spread":true}]],"params":["...slug"],"component":"src/pages/[...slug].astro","_meta":{"trailingSlash":"ignore"}}}],"site":"https://ecom2-002.web.app/","base":"/","markdown":{"drafts":false,"syntaxHighlight":"shiki","shikiConfig":{"langs":[],"theme":"github-dark","wrap":false},"remarkPlugins":[],"rehypePlugins":[],"remarkRehype":{},"extendDefaultPlugins":false,"isAstroFlavoredMd":false,"isExperimentalContentCollections":false,"contentDir":"file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/content/"},"pageMap":null,"renderers":[],"entryModules":{"\u0000@astrojs-ssr-virtual-entry":"entry.mjs","@@sf/components/Prices.vue":"Prices.248d1aae.js","@@sf/components/ProductCard.vue":"ProductCard.4848304c.js","@@sf/components/PitchBar.vue":"PitchBar.5ae15bda.js","@astrojs/vue/client.js":"client.2356f675.js","/astro/hoisted.js?q=0":"hoisted.11b849a7.js","/home/leo/code/ecomplus/cloud-commerce/node_modules/workbox-window/build/workbox-window.prod.es5.mjs":"chunks/workbox-window.prod.es5.10f2e5ac.js","astro:scripts/before-hydration.js":""},"assets":["/assets/index.90df622b.css","/assets/server.4d9646d8.css","/assets/_...slug_.b701cbb1.css","/manifest.webmanifest","/registerSW.js","/PitchBar.5ae15bda.js","/Prices.248d1aae.js","/ProductCard.4848304c.js","/client.2356f675.js","/hoisted.11b849a7.js","/robots.txt","/sw.js","/workbox-e2ee76b5.js","/admin/config.json","/assets/cms-preview.css","/assets/cms.css","/assets/cvv.png","/assets/img-placeholder.png","/assets/payments.png","/assets/ssl-safe.png","/chunks/Prices.vue_vue_type_script_setup_true_lang.2d01aaa2.js","/chunks/ecom-utils.cd6787a7.js","/chunks/modules-info.fcab5bba.js","/chunks/runtime-dom.esm-bundler.923790dc.js","/chunks/session-utm.ceebe967.js","/chunks/workbox-window.prod.es5.10f2e5ac.js","/img/icon.png","/img/large-icon.png","/img/uploads/banner1.png","/img/uploads/banner2.png","/img/uploads/banner2.webp","/img/uploads/favicon.png","/img/uploads/headless.png","/img/uploads/headphone.png","/img/uploads/headphone.webp","/img/uploads/icon.png","/img/uploads/large-icon.png","/img/uploads/logo.png","/img/uploads/logo.webp","/img/uploads/og-image.png","/img/uploads/passion.png","/img/uploads/passion.webp","/img/uploads/pwa-reliable.png","/img/uploads/rect8589.png","/img/uploads/rect859.png","/img/uploads/rect89.png","/img/uploads/rect89.webp","/img/uploads/ssl-safe.png","/assets/icons/bootstrap-icons/font/storefront-icons.woff2","/assets/icons/feather-icons/font/storefront-icons.woff2","/assets/icons/font-awesome/font/storefront-icons.woff2","/assets/icons/line-awesome/font/storefront-icons.woff2","/assets/icons/tabler-icons/font/storefront-icons.woff2"]}), {
12964
13304
  pageMap: pageMap,
12965
13305
  renderers: renderers
12966
13306
  });