cloudcommerce 2.2.1 → 2.2.3

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 (102) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/action.yml +74 -50
  3. package/ecomplus-stores/barra-doce/functions/many/package.json +3 -3
  4. package/ecomplus-stores/barra-doce/functions/ssr/package.json +6 -6
  5. package/ecomplus-stores/barra-doce/functions/ssr/src/components/AccountMenu.vue +5 -1
  6. package/ecomplus-stores/barra-doce/functions/ssr/src/components/SearchShowcase.vue +1 -1
  7. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopHeaderSubmenu.vue +4 -1
  8. package/ecomplus-stores/barra-doce/functions/with-apps/package.json +3 -3
  9. package/ecomplus-stores/barra-doce/package.json +2 -2
  10. package/package.json +2 -2
  11. package/packages/api/package.json +1 -1
  12. package/packages/apps/affiliate-program/package.json +1 -1
  13. package/packages/apps/correios/package.json +1 -1
  14. package/packages/apps/custom-payment/package.json +1 -1
  15. package/packages/apps/custom-shipping/package.json +1 -1
  16. package/packages/apps/datafrete/package.json +1 -1
  17. package/packages/apps/discounts/package.json +1 -1
  18. package/packages/apps/emails/package.json +1 -1
  19. package/packages/apps/fb-conversions/package.json +1 -1
  20. package/packages/apps/flash-courier/package.json +1 -1
  21. package/packages/apps/frenet/package.json +1 -1
  22. package/packages/apps/galaxpay/package.json +1 -1
  23. package/packages/apps/google-analytics/package.json +1 -1
  24. package/packages/apps/jadlog/package.json +1 -1
  25. package/packages/apps/loyalty-points/package.json +1 -1
  26. package/packages/apps/mandae/package.json +1 -1
  27. package/packages/apps/melhor-envio/package.json +1 -1
  28. package/packages/apps/mercadopago/package.json +1 -1
  29. package/packages/apps/pagarme/package.json +1 -1
  30. package/packages/apps/pagarme-v5/package.json +1 -1
  31. package/packages/apps/paghiper/package.json +1 -1
  32. package/packages/apps/pix/package.json +1 -1
  33. package/packages/apps/tiny-erp/package.json +1 -1
  34. package/packages/apps/webhooks/package.json +1 -1
  35. package/packages/cli/ci/bunny-config-base.sh +1 -1
  36. package/packages/cli/ci/bunny-prepare-ab.sh +1 -1
  37. package/packages/cli/ci/bunny-remove-ab.sh +1 -1
  38. package/packages/cli/ci/bunny-setup.sh +1 -1
  39. package/packages/cli/package.json +1 -1
  40. package/packages/config/package.json +1 -1
  41. package/packages/emails/package.json +1 -1
  42. package/packages/eslint/package.json +1 -1
  43. package/packages/events/package.json +1 -1
  44. package/packages/feeds/package.json +1 -1
  45. package/packages/firebase/package.json +1 -1
  46. package/packages/i18n/package.json +1 -1
  47. package/packages/modules/package.json +1 -1
  48. package/packages/passport/package.json +1 -1
  49. package/packages/ssr/lib/lib/cron-ssr-save-views.js +9 -1
  50. package/packages/ssr/lib/lib/cron-ssr-save-views.js.map +1 -1
  51. package/packages/ssr/package.json +2 -2
  52. package/packages/ssr/src/lib/cron-ssr-save-views.ts +12 -1
  53. package/packages/storefront/astro.config.mjs +2 -0
  54. package/packages/storefront/dist/client/_astro/{AccountPage.89hLh9p2.js → AccountPage.HcKW6HTE.js} +1 -1
  55. package/packages/storefront/dist/client/_astro/{CartSidebar.G25ZUnKP.js → CartSidebar.osvr0MUo.js} +1 -1
  56. package/packages/storefront/dist/client/_astro/{HeroSlider.XZb2xsyV.js → HeroSlider.I5mC8JdX.js} +1 -1
  57. package/packages/storefront/dist/client/_astro/{PitchBar.Nr7T3S3T.js → PitchBar.xC4J7MDy.js} +1 -1
  58. package/packages/storefront/dist/client/_astro/{Prices.Ye-m2HTo.js → Prices.Jt09rVKv.js} +1 -1
  59. package/packages/storefront/dist/client/_astro/{ProductDetails.ntFWLjla.js → ProductDetails.oouZY3cL.js} +1 -1
  60. package/packages/storefront/dist/client/_astro/ProductShelf.dYlXuNId.js +1 -0
  61. package/packages/storefront/dist/client/_astro/{ProductShelf.PPitdYxI.js → ProductShelf.vGE0E3Qf.js} +1 -1
  62. package/packages/storefront/dist/client/_astro/{QuantitySelector.tumfWDjC.js → QuantitySelector.OL4MN-C_.js} +1 -1
  63. package/packages/storefront/dist/client/_astro/{SearchModal.R55jFaBZ.js → SearchModal.d8lbvLay.js} +1 -1
  64. package/packages/storefront/dist/client/_astro/SearchShowcase.ynowXX4j.js +1 -0
  65. package/packages/storefront/dist/client/_astro/{ShopHeader.OLf0l4Ot.js → ShopHeader.l4KJGvUd.js} +2 -2
  66. package/packages/storefront/dist/client/_astro/_slug_.4W7qhV-L.css +1 -0
  67. package/packages/storefront/dist/client/_astro/{customer-session.AcETMuhI.js → customer-session.TRPGDX3c.js} +1 -1
  68. package/packages/storefront/dist/client/_astro/{hoisted.Wi6YpdWJ.js → hoisted.8pwSenCN.js} +1 -1
  69. package/packages/storefront/dist/client/_astro/{hoisted.WBjTfX6e.js → hoisted.SLwcAI01.js} +1 -1
  70. package/packages/storefront/dist/client/_astro/{hoisted.PxLuJZKI.js → hoisted.gqV7f6f3.js} +1 -1
  71. package/packages/storefront/dist/client/_astro/{modules-info.tVRhvxNm.js → modules-info.WWsUqEPZ.js} +1 -1
  72. package/packages/storefront/dist/client/_astro/sf-utils.luvTU5uS.js +1 -0
  73. package/packages/storefront/dist/client/_astro/{shopping-cart.dJsZkyuD.js → shopping-cart.ATTXCPd0.js} +1 -1
  74. package/packages/storefront/dist/client/_astro/use-analytics.WpkjGsWi.js +1 -0
  75. package/packages/storefront/dist/client/_astro/{use-product-card.WRVLjenR.js → use-product-card.BhUXhJIp.js} +1 -1
  76. package/packages/storefront/dist/client/app/account/index.html +58 -0
  77. package/packages/storefront/dist/client/app/index.html +98 -0
  78. package/packages/storefront/dist/client/blog/1/index.html +86 -0
  79. package/packages/storefront/dist/client/{~index.html → index.html} +11 -8
  80. package/packages/storefront/dist/client/macbook-apple-pro-15.4-intel-core-i7-2.6ghz-ram-16gb-ssd-512gb-mr972ll/a-prata/index.html +93 -0
  81. package/packages/storefront/dist/client/monitores-gamer/index.html +95 -0
  82. package/packages/storefront/dist/client/mouse-gamer-corsair-optico-harpoon-rgb-ch-9301011-na/index.html +93 -0
  83. package/packages/storefront/dist/client/p/contato/index.html +90 -0
  84. package/packages/storefront/dist/client/p/terms/index.html +101 -0
  85. package/packages/storefront/dist/client/posts/3/index.html +101 -0
  86. package/packages/storefront/dist/client/posts/4/index.html +101 -0
  87. package/packages/storefront/dist/client/{~fallback.html → ~fallback/index.html} +4 -3
  88. package/packages/storefront/package.json +2 -2
  89. package/packages/storefront/src/helpers/sf-utils.ts +7 -3
  90. package/packages/storefront/src/lib/components/QuantitySelector.vue +1 -1
  91. package/packages/storefront/src/lib/composables/use-sticky-header.ts +1 -1
  92. package/packages/storefront/src/lib/layouts/BaseHead.astro +1 -0
  93. package/packages/storefront/src/lib/pages/_vue.ts +2 -0
  94. package/packages/storefront/src/lib/ssr-context.ts +1 -0
  95. package/packages/storefront/src/vue-globals.d.ts +1 -0
  96. package/packages/test-base/package.json +1 -1
  97. package/packages/types/package.json +1 -1
  98. package/packages/storefront/dist/client/_astro/ProductShelf.xSxmHkTe.js +0 -1
  99. package/packages/storefront/dist/client/_astro/SearchShowcase.I1PPFu_n.js +0 -1
  100. package/packages/storefront/dist/client/_astro/_slug_.Hc-dqhcW.css +0 -1
  101. package/packages/storefront/dist/client/_astro/sf-utils.Z4H-dRBJ.js +0 -1
  102. package/packages/storefront/dist/client/_astro/use-analytics.uqK_2k_k.js +0 -1
@@ -0,0 +1,101 @@
1
+ <!DOCTYPE html>
2
+ <html lang="pt-br">
3
+ <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var i=t=>{let e=async()=>{await(await t())()};"requestIdleCallback"in window?window.requestIdleCallback(e):setTimeout(e,200)};(self.Astro||(self.Astro={})).idle=i;window.dispatchEvent(new Event("astro:idle"));})();;(()=>{var b=Object.defineProperty;var f=(c,o,i)=>o in c?b(c,o,{enumerable:!0,configurable:!0,writable:!0,value:i}):c[o]=i;var l=(c,o,i)=>(f(c,typeof o!="symbol"?o+"":o,i),i);var p;{let c={0:t=>m(t),1:t=>i(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(i(t)),5:t=>new Set(i(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t)},o=t=>{let[e,r]=t;return e in c?c[e](r):void 0},i=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([e,r])=>[e,o(r)]));customElements.get("astro-island")||customElements.define("astro-island",(p=class extends HTMLElement{constructor(){super(...arguments);l(this,"Component");l(this,"hydrator");l(this,"hydrate",async()=>{var d;if(!this.hydrator||!this.isConnected)return;let e=(d=this.parentElement)==null?void 0:d.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let r=this.querySelectorAll("astro-slot"),a={},h=this.querySelectorAll("template[data-astro-template]");for(let n of h){let s=n.closest(this.tagName);s!=null&&s.isSameNode(this)&&(a[n.getAttribute("data-astro-template")||"default"]=n.innerHTML,n.remove())}for(let n of r){let s=n.closest(this.tagName);s!=null&&s.isSameNode(this)&&(a[n.getAttribute("name")||"default"]=n.innerHTML)}let u;try{u=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(n){let s=this.getAttribute("component-url")||"<unknown>",y=this.getAttribute("component-export");throw y&&(s+=` (export ${y})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),n),n}await this.hydrator(this)(this.Component,u,a,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});l(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),r.disconnect(),this.childrenConnectedCallback()},r=new MutationObserver(()=>{var a;((a=this.lastChild)==null?void 0:a.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});r.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}start(){let e=JSON.parse(this.getAttribute("opts")),r=this.getAttribute("client");if(Astro[r]===void 0){window.addEventListener(`astro:${r}`,()=>this.start(),{once:!0});return}Astro[r](async()=>{let a=this.getAttribute("renderer-url"),[h,{default:u}]=await Promise.all([import(this.getAttribute("component-url")),a?import(a):()=>()=>{}]),d=this.getAttribute("component-export")||"default";if(!d.includes("."))this.Component=h[d];else{this.Component=h;for(let n of d.split("."))this.Component=this.Component[n]}return this.hydrator=u,this.hydrate},e,this)}attributeChangedCallback(){this.hydrate()}},l(p,"observedAttributes",["props"]),p))}})();</script><script>(()=>{var a=(s,o)=>{let n=async()=>{await(await s())()},r=()=>{let t=Array.isArray(o.value)?o.value:[o.value];for(let e=0;e<t.length;e++)if(typeof t[e]=="string"&&t[e].startsWith("data:")){let d=t[e].substring(5);if(!window.$storefront?.data?.[d]){window.addEventListener(`storefront:data:${d}`,r,{once:!0});return}}if(t.includes("idle")){if(typeof window.requestIdleCallback=="function"){setTimeout(()=>window.requestIdleCallback(n),9);return}setTimeout(n,200);return}n()},i=window.$storefront?.apiContext?.doc._id||null;if(window._firstLoadContextId===i&&window._emitedContextId===i){console.log("[ctx] first load"),r(),document.addEventListener("astro:beforeload",()=>{delete window._firstLoadContextId},{once:!0});return}window.addEventListener("storefront:apiContext",r,{once:!0})};(self.Astro||(self.Astro={})).context=a;window.dispatchEvent(new Event("astro:context"));})();
4
+ </script>
5
+ <head data-capo=""><meta charset="UTF-8"><meta name="viewport" content="width=device-width"><title>Blog 4 | E-Com Plus demoStore</title><script data-astro-transition-persist="astro-kvdive2p-1">
6
+ window.__sfId = 3;
7
+ window._emitApiContext = (id = null) => {
8
+ console.log('[ctx] emit ' + id);
9
+ window.dispatchEvent(new Event('storefront:apiContext'));
10
+ window._emitedContextId = id;
11
+ };
12
+ window.ECOM_STORE_ID = 1011;
13
+ window.ECOM_LANG = 'pt_br';
14
+ window.ECOM_CURRENCY = 'BRL';
15
+ window.ECOM_CURRENCY_SYMBOL = 'R$';
16
+ window.ECOM_COUNTRY_CODE = 'BR';
17
+ window.GIT_BRANCH = '';
18
+ window.$storefront = {"settings":{"domain":"demo.ecomplus.app","name":"E-Com Plus demoStore","description":"E-Com Plus é a plataforma de e-commerce API-first desenhada para modelos de negócio e experiências de compra únicas. Flexibilidade do código aberto com facilidade de SaaS para que você comece rápido, venda do seu jeito e escale sem limitações.","logo":"/img/uploads/logo.png","icon":"/img/uploads/ecom-icon.png","primaryColor":"#37003c","email":"","phone":"","address":"","corporateName":"","docNumber":"","lang":"pt_br","currency":"BRL","currencySymbol":"R$","countryCode":"BR","whatsapp":"(31) 9 8272-1558","instagram":"https://www.instagram.com/ecomclub/","facebook":"https://www.facebook.com/ecom.clubpage/","twitter":"","youtube":"https://www.youtube.com/channel/UCBlIxK5JAub0E1EX_qHdzmA","tiktok":"","pinterest":"","threads":"","serviceLinks":[{"title":"Fale conosco","href":"/p/contato"},{"title":"Privacidade e termos","href":"/p/terms"}],"paymentMethods":["pix","visa","mastercard","elo","amex","hipercard","boleto"],"modules":{"list_payments":{"installments_option":{"max_number":null,"monthly_interest":null,"min_installment":null},"discount_option":{"label":null,"apply_at":null,"type":null,"value":null},"loyalty_points_program":{"id":null,"name":null,"ratio":null,"earn_percentage":null}},"calculate_shipping":{"free_shipping_from_value":200}}},"data":{}};
19
+ window._firstLoadContextId = null;</script><script>
20
+ $storefront.apiContext = null;
21
+ delete $storefront.apiContext;
22
+ delete $storefront.context;
23
+ _emitApiContext();</script><script>
24
+ window.$firebaseConfig = {
25
+ apiKey: "AIzaSyCnvm7QrPKzSBrUi09Z3zTgjDST0t4Yikg",
26
+ authDomain: "ecom2-demo.firebaseapp.com",
27
+ projectId: "ecom2-demo",
28
+ storageBucket: "ecom2-demo.appspot.com",
29
+ messagingSenderId: "70369627313",
30
+ appId: "1:70369627313:web:06634033b9c6208fe7e690",
31
+ };
32
+ </script><link rel="stylesheet" href="/_astro/_slug_.4W7qhV-L.css"><script type="module" src="/_astro/hoisted.8pwSenCN.js"></script><meta name="theme-color" content="#37003c"><link rel="icon" type="image/png" href="/_image?f=png&#38;w=32&#38;h=32&#38;href=%2Fimg%2Fuploads%2Fecom-icon.png&#38;V=_" sizes="32x32"><link rel="icon" type="image/png" href="/_image?f=png&#38;w=192&#38;h=192&#38;href=%2Fimg%2Fuploads%2Fecom-icon.png&#38;V=_" sizes="192x192"><meta name="description" content="E-Com Plus é a plataforma de e-commerce API-first desenhada para modelos de negócio e experiências de compra únicas. Flexibilidade do código aberto com facilidade de SaaS para que você comece rápido, venda do seu jeito e escale sem limitações."><meta name="author" content="E-Com Plus demoStore"><meta name="generator" content="Astro v4.2.6"><link rel="canonical" href="https://demo.ecomplus.app/posts/4/"><link rel="apple-touch-icon" href="/_image?f=png&#38;w=192&#38;h=192&#38;href=%2Fimg%2Fuploads%2Fecom-icon.png&#38;V=_"><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" content="E-Com Plus demoStore"><meta property="og:url" content="https://demo.ecomplus.app/posts/4/"><meta property="og:title" content="Blog 4 | E-Com Plus demoStore"><meta property="og:description" content="E-Com Plus é a plataforma de e-commerce API-first desenhada para modelos de negócio e experiências de compra únicas. Flexibilidade do código aberto com facilidade de SaaS para que você comece rápido, venda do seu jeito e escale sem limitações."><meta property="og:type" content="website"><meta property="og:locale" content="ptBR"><meta name="twitter:card" content="summary"><meta name="ecom-store-id" content="1011"><script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","name":"E-Com Plus demoStore","url":"https://demo.ecomplus.app/","logo":"https://demo.ecomplus.app/img/uploads/logo.png"}</script><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="none"></head>
33
+ <body style="visibility:hidden" class="!visible"> <!-- Prevent FOUC -->
34
+ <div id="teleported-overlap" class="relative z-[59]"></div>
35
+ <div id="teleported-top" class="relative z-[19]"></div>
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+ <astro-island uid="2c4lhG" component-url="/_astro/PitchBar.xC4J7MDy.js" component-export="default" renderer-url="/_astro/client.ZhEmw4hZ.js" props="{&quot;slides&quot;:[1,[[0,{&quot;href&quot;:[0,&quot;/promotion&quot;],&quot;html&quot;:[0,&quot;Aproveite nossos descontos de até 50%!&quot;]}],[0,{&quot;href&quot;:[0,&quot;&quot;],&quot;html&quot;:[0,&quot;&lt;b&gt;Frete grátis&lt;/b&gt; &lt;d-md&gt;para todo Brasil&lt;/d-md&gt; a partir de {free_shipping_from_value}&quot;]}]]]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;PitchBar&quot;,&quot;value&quot;:true}" await-children=""><div class="bg-base-100 relative z-20"><div class="container mx-auto px-3 py-1 md:w-2/3"><div class="relative" data-carousel><ul class="m-0 flex snap-mandatory list-none scroll-smooth p-0 [&amp;&gt;*]:snap-start [&amp;&gt;*]:outline-none snap-x overflow-y-hidden overflow-x-scroll" style="scrollbar-width:none;-webkit-overflow-scrolling:touch;-ms-overflow-style:none;" data-carousel-wrapper><!--[--><!--[--><li class="h-full shrink-0 basis-full text-center"><a href="/promotion" class="inline-block px-8 hover:underline"><!--[--><span class="text-base-800 prose text-sm">Aproveite nossos descontos de até 50%!</span><!--]--></a></li><li class="h-full shrink-0 basis-full text-center"><span href class="inline-block px-8"><!--[--><span class="text-base-800 prose text-sm"><b>Frete grátis</b> <d-md>para todo Brasil</d-md> a partir de R$ 200,00</span><!--]--></span></li><!--]--><!--]--></ul><!--[--><div style="" class="text-base-400 text-xl leading-none"><button type="button" aria-label="Anterior" class="group absolute z-[11] left-0 top-0 bg-base-100 hover:text-base-700 pr-2" data-carousel-control="previous"><!--[--><i class="rotate-180 group-active:-translate-x-1 m-0 i-chevron-right"></i><!--]--></button><button type="button" aria-label="Próximo" class="group absolute z-[11] right-0 top-0 bg-base-100 hover:text-base-700 pl-2" data-carousel-control="next"><!--[--><i class="group-active:translate-x-1 m-0 i-chevron-right"></i><!--]--></button></div><!--]--></div></div></div><!--astro:end--></astro-island>
44
+
45
+
46
+ <script async>
47
+ window.$storefront.data['categories'] = [{"_id":"5c6ffa18c626be23430d4f4e","name":"Monitores","slug":"monitores","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007322374-rect836.png"}},{"_id":"5c6ffa2ac626be23430d4f50","name":"Monitores Gamer","parent":{"slug":"monitores"},"slug":"monitores-gamer","pictures":[]},{"_id":"5c6ffa45c626be23430d4f52","name":"Monitores Convencionais","parent":{"slug":"monitores"},"slug":"monitores-convencionais"},{"_id":"5c6ffa5bc626be23430d4f54","name":"Monitores TV","parent":{"slug":"monitores"},"slug":"monitores-tv"},{"_id":"5c6ffa6ec626be23430d4f56","name":"Notebooks","slug":"notebooks","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007351112-comp.png"}},{"_id":"5c6ffa8cc626be23430d4f58","name":"Notebooks gamers","parent":{"slug":"notebooks"},"slug":"notebooks-gamers"},{"_id":"5c6ffab6c626be23430d4f5c","name":"MacBook","parent":{"slug":"ultrabook"},"slug":"macbook","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1566932713325-macbook.jfif","size":"233x216"},"pictures":[{}]},{"_id":"5c7009bec626be23430d4f80","name":"Periféricos","slug":"perifericos","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007328003-keyb.png"},"pictures":[],"parent":{"slug":"fisicos"}},{"_id":"5c7009fdc626be23430d4f82","name":"Teclados","parent":{"slug":"perifericos"},"slug":"teclados"},{"_id":"5c700a11c626be23430d4f84","name":"Mouses","parent":{"slug":"perifericos"},"slug":"mouses"},{"_id":"5c700a37c626be23430d4f86","name":"Caixas de Som","parent":{"slug":"perifericos"},"slug":"caixas-de-som"},{"_id":"5c700a53c626be23430d4f88","name":"Headset","parent":{"slug":"perifericos"},"slug":"headset"},{"_id":"5c700a6bc626be23430d4f8a","name":"Cadeira Gamer","parent":{"slug":"perifericos"},"slug":"cadeira-gamer"},{"_id":"5c700a9cc626be23430d4f8c","name":"Smartphones","slug":"smartphones","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007321218-smartphone.png"}},{"_id":"5c701c9ec626be23430d4fe7","name":"Jogo","slug":"jogos/","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007332353-game.png"},"pictures":[]},{"_id":"5c701cb1c626be23430d4fe9","name":"Físicos","parent":{"slug":"jogos/"},"slug":"fisicos"},{"_id":"5c701cc6c626be23430d4feb","name":"Digitais","parent":{"slug":"jogos/"},"slug":"digitais"},{"_id":"5c701ce2c626be23430d4fed","name":"Usados","parent":{"slug":"jogos/"},"slug":"usados"},{"_id":"5ceecb3f887ef430f1f70c88","name":"Promoções","slug":"promocoes","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007326827-mony.png"},"pictures":[{}]},{"_id":"5d5714045753286eadbbdc77","name":"Ultrabook","parent":{"slug":"notebooks"},"slug":"ultrabook"},{"_id":"5f70f1417430f92180f5ba66","name":"Brasileiro"},{"_id":"5fb2b13b69274c73fcd6a051","name":"smartwatch"},{"_id":"60199592d6981740b4a030f4","name":"São Paulo","slug":"sao-paulo"},{"_id":"61de099d0c7c72722502397b","name":"MacBook Pro"},{"_id":"61de12450c7c727225025299","name":"Mac Stop"},{"_id":"6227a90a7963422eee367aaa","name":"capinhas"}];
48
+ window.dispatchEvent(new Event('storefront:data:categories'));</script>
49
+ <astro-island uid="YFvoh" component-url="/_astro/ShopHeader.l4KJGvUd.js" component-export="default" renderer-url="/_astro/client.ZhEmw4hZ.js" props="{&quot;menuCategorySlugs&quot;:[1,[]],&quot;menuRandomCategories&quot;:[0,7],&quot;isAlphabeticalSortSubmenu&quot;:[0,false]}" ssr="" client="context" opts="{&quot;name&quot;:&quot;ShopHeader&quot;,&quot;value&quot;:&quot;data:categories&quot;}" await-children=""><header class="relative top-0 z-50 transition-colors bg-white py-3 sm:py-4 md:py-5"><div class="mx-auto flex w-screen grid-flow-col grid-cols-3 items-center justify-between px-1 sm:pl-2 sm:pr-2.5 md:grid lg:w-[calc(100vw-1rem)] lg:auto-cols-max lg:grid-cols-none lg:px-1 xl:max-w-[82rem] 2xl:max-w-[85rem]"><div class="basis-1/4 lg:hidden"><button class="my-1 px-2" aria-label="Abrir/fechar menu"><i class="i-bars-3-bottom-left text-base-400 animate-pulse text-3xl transition-colors"></i></button></div><!--[--><astro-slot name="logo">
50
+ <a href="/">
51
+ <h2>
52
+ <picture>
53
+ <source type="image/avif" srcset="/_astro/logo_Z1KIIl1.avif 300w" sizes="150px"><source type="image/webp" srcset="/_astro/logo_1UBsBq.webp 300w" sizes="150px"><source type="image/png" srcset="/_astro/logo_Z1K5PE9.png 300w" sizes="150px">
54
+ <img src="/_astro/logo_Z1K5PE9.png" alt="E-Com Plus demoStore" loading="eager" decoding="async" fetchpriority="high" class="mx-auto max-w-[150px] hover:drop-shadow-sm" width="300" height="71">
55
+ </picture>
56
+ </h2>
57
+ </a>
58
+ </astro-slot><!--]--><nav class="hidden lg:block"><ul class="text-base text-base-700 flex gap-4 xl:gap-5"><!--[--><li><!--[--><!--[--><div data-headlessui-state><a href="/monitores" role="button"><!--[--><button class="outline-none" id="headlessui-popover-button-156" type="button" aria-expanded="false" data-headlessui-state><!--[--><span class="hover:text-primary group"><h3 class="inline group-hover:underline decoration-2">Monitores</h3><i class="text-base-400 i-chevron-right group-hover:text-primary-subtle ml-1 transition-transform rotate-90"></i></span><!--]--></button><!----><!--]--></a><div class="relative"><!----></div></div><!--]--><div style="position:fixed;top:1;left:1;width:1;height:0;padding:0;margin:-1;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;display:none;"></div><!--]--></li><li><!--[--><!--[--><div data-headlessui-state><a href="/notebooks" role="button"><!--[--><button class="outline-none" id="headlessui-popover-button-161" type="button" aria-expanded="false" data-headlessui-state><!--[--><span class="hover:text-primary group"><h3 class="inline group-hover:underline decoration-2">Notebooks</h3><i class="text-base-400 i-chevron-right group-hover:text-primary-subtle ml-1 transition-transform rotate-90"></i></span><!--]--></button><!----><!--]--></a><div class="relative"><!----></div></div><!--]--><div style="position:fixed;top:1;left:1;width:1;height:0;padding:0;margin:-1;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;display:none;"></div><!--]--></li><li><a href="/smartphones" class="decoration-2 hover:text-primary hover:underline"><h3 class="inline">Smartphones</h3></a></li><li><!--[--><!--[--><div data-headlessui-state><a href="/jogos/" role="button"><!--[--><button class="outline-none" id="headlessui-popover-button-166" type="button" aria-expanded="false" data-headlessui-state><!--[--><span class="hover:text-primary group"><h3 class="inline group-hover:underline decoration-2">Jogo</h3><i class="text-base-400 i-chevron-right group-hover:text-primary-subtle ml-1 transition-transform rotate-90"></i></span><!--]--></button><!----><!--]--></a><div class="relative"><!----></div></div><!--]--><div style="position:fixed;top:1;left:1;width:1;height:0;padding:0;margin:-1;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;display:none;"></div><!--]--></li><li><a href="/promocoes" class="decoration-2 hover:text-primary hover:underline"><h3 class="inline">Promoções</h3></a></li><li><a href="/sao-paulo" class="decoration-2 hover:text-primary hover:underline"><h3 class="inline">São Paulo</h3></a></li><!--]--></ul></nav><div class="text-base-800 flex basis-1/4 items-center justify-end gap-3 px-2 lg:gap-4"><form action="/s" method="get" class="relative"><label for="HeaderSearch" class="sr-only">Buscar produtos</label><div style="display:none;" class="absolute -right-0.5 -top-2.5 flex items-stretch"><div class="hidden w-12 bg-gradient-to-r from-transparent to-white sm:block"></div><input type="search" id="HeaderSearch" name="q" value="" class="border-1 border-primary/20 to-primary-50 w-72 max-w-md bg-gradient-to-r from-white py-3 pl-5 pr-12 text-base ring-0 md:w-screen" placeholder="Buscar produtos ..."></div><button type="submit" aria-label="Buscar produtos"><i class="i-magnifying-glass hover:text-primary size-7 hover:scale-110 active:scale-125"></i></button></form><div data-headlessui-state class="text-base-800 relative text-center text-sm hidden sm:block"><!----><a href="/app/account?" role="button"><!--[--><button id="headlessui-menu-button-171" type="button" aria-haspopup="menu" aria-expanded="false" data-headlessui-state class="outline-none" aria-label="Minha conta"><!--[--><i class="i-user-circle hover:text-primary size-7 hover:scale-110 active:scale-125"></i><!--]--></button><!--]--></a><!----></div><a href="/app/" aria-label="Abrir carrinho" class="group relative" role="button"><i class="i-shopping-bag group-hover:text-primary size-7 group-hover:scale-110 group-active:scale-125"></i><!----></a></div></div><!----><!----><!----></header><!--astro:end--></astro-island>
59
+ <main>
60
+
61
+
62
+ <article class="mb-9 mt-6 md:mb-12 md:mt-8">
63
+ <section class="ui-section"><article class="prose"><h1 class="not-prose ui-title my-4">Blog 4</h1><article class="!max-w-full overflow-x-auto prose"><div class="[&amp;_iframe]:max-w-full [&amp;_img]:max-w-full [&amp;_table]:max-w-full"><h2>Tendere quoque liquidus</h2>
64
+ <p>Lorem markdownum renascitur cineres, sed surgit muneribusque vidit laudatve
65
+ pectus verba, ad incerti Hyrie. Amici urbes micantes serpens incendia, neve opus
66
+ standi summa.</p>
67
+ <ol>
68
+ <li>Contenta adpellatque temptata vocabula</li>
69
+ <li>Caesae captatus quas Oenidae harenae</li>
70
+ <li>Coronida elabique retinebat sinat et ceditis vel</li>
71
+ <li>Fuerat operis evanuit harenosae illo</li>
72
+ <li>Hic possis ignotae terris Perseus aliquid</li>
73
+ </ol>
74
+ </div></article></article></section>
75
+ </article>
76
+ </main>
77
+ <footer class="border-base-100 bg-base-50 mt-auto w-screen border-t py-2"><div class="ui-section"><div class="border-base-200 flex flex-wrap justify-between gap-y-5 border-b pb-7 sm:gap-x-10 lg:flex-nowrap"><div class="shrink"><!--[-->
78
+ <a href="/">
79
+ <h3>
80
+ <picture>
81
+ <source type="image/avif" srcset="/_astro/logo_Z1KIIl1.avif 300w" sizes="150px"><source type="image/webp" srcset="/_astro/logo_1UBsBq.webp 300w" sizes="150px"><source type="image/png" srcset="/_astro/logo_Z1K5PE9.png 300w" sizes="150px">
82
+ <img src="/_astro/logo_Z1K5PE9.png" alt="E-Com Plus demoStore" loading="lazy" decoding="async" class="max-w-[150px]" width="300" height="71">
83
+ </picture>
84
+ </h3>
85
+ </a>
86
+ <!--]--><div class="prose"><p>E-Com Plus é a plataforma de e-commerce API-first desenhada para modelos de negócio e experiências de compra únicas. Flexibilidade do código aberto com facilidade de SaaS para que você comece rápido, venda do seu jeito e escale sem limitações.</p></div><div class="text-base-500 flex gap-2"><!--[--><span><a href="https://web.whatsapp.com/send?phone=%2B5531982721558" target="_blank" rel="noopener" class="hover:text-primary p-1"><!--[--><!--[--><i class="i-whatsapp"></i><!--[--><span class="text-base-600 ml-1 text-sm">(31) 9 8272-1558</span><!--]--><!--]--><!--]--></a></span><span><a href="https://www.instagram.com/ecomclub/" target="_blank" rel="noopener" class="hover:text-primary p-1"><!--[--><!--[--><i class="i-instagram"></i><!--[--><!--]--><!--]--><!--]--></a></span><span><a href="https://www.facebook.com/ecom.clubpage/" target="_blank" rel="noopener" class="hover:text-primary p-1"><!--[--><!--[--><i class="i-facebook"></i><!--[--><!--]--><!--]--><!--]--></a></span><span><a href="https://www.youtube.com/channel/UCBlIxK5JAub0E1EX_qHdzmA" target="_blank" rel="noopener" class="hover:text-primary p-1"><!--[--><!--[--><i class="i-youtube"></i><!--[--><!--]--><!--]--><!--]--></a></span><!--]--></div><!----></div><div class="basis-1/2 pr-2 sm:basis-auto sm:pr-0"><div class="mb-2.5 text-lg font-medium">Categorias</div><ul class="grid md:grid-cols-2 gap-x-5 gap-y-1.5 text-sm"><!--[--><li><a href="/monitores" class="text-base-600 ui-link">Monitores</a></li><li><a href="/notebooks" class="text-base-600 ui-link">Notebooks</a></li><li><a href="/smartphones" class="text-base-600 ui-link">Smartphones</a></li><li><a href="/jogos/" class="text-base-600 ui-link">Jogo</a></li><li><a href="/promocoes" class="text-base-600 ui-link">Promoções</a></li><li><a href="/sao-paulo" class="text-base-600 ui-link">São Paulo</a></li><!--]--><li><a href="/s" class="text-base-900 ui-link">Todos os produtos</a></li></ul></div><div class="basis-1/2 pl-2 sm:basis-auto sm:pl-0"><div class="mb-2.5 text-lg font-medium">Institucional</div><ul class="space-y-1.5 text-sm"><!--[--><li><a href="/p/contato" class="ui-link text-base-600"><!--[-->Contato<!--]--></a></li><li><a href="/p/terms" class="ui-link text-base-600"><!--[-->Privacidade e termos de serviço<!--]--></a></li><li><a href="/p/trocas" class="ui-link text-base-600"><!--[-->Trocas e devoluções<!--]--></a></li><li><a href="/blog/1/" class="ui-link text-base-900"><!--[-->Blog<!--]--></a></li><!--]--></ul></div></div></div><div class="ui-section"><div class="flex flex-wrap items-start justify-between gap-5 lg:flex-nowrap"><ul class="mx-auto flex items-center gap-x-6 gap-y-3 overflow-x-auto md:mx-0 md:flex-wrap md:overflow-hidden lg:gap-x-8"><!--[--><li><a href="/p/trocas"><!--[--><!--[--><!--]--><span class="flex items-center"><span class="[&amp;&gt;*]:from-success-200 [&amp;&gt;*]:to-success-700 mr-2 text-4xl [&amp;&gt;*]:bg-gradient-to-br"><i class="i-arrow-path-rounded-square"></i></span><span class="text-base-600 max-w-[140px] text-sm font-medium">Troca garantida <!----></span></span><!--]--></a></li><li><a href="https://transparencyreport.google.com/safe-browsing/search?url=demo.ecomplus.app" target="_blank" rel="noopener"><!--[--><!--[--><!--]--><span class="flex items-center"><span class="[&amp;&gt;*]:from-success-200 [&amp;&gt;*]:to-success-700 mr-2 text-4xl [&amp;&gt;*]:bg-gradient-to-br"><i class="i-check-badge"></i></span><span class="text-base-600 max-w-[140px] text-sm font-medium">Google Navegação Segura <i class="bg-base-400 i-arrow-top-right-on-square ml-0.5"></i></span></span><!--]--></a></li><li><span href><!--[--><!--[--><!--]--><span class="flex items-center"><span class="[&amp;&gt;*]:from-success-200 [&amp;&gt;*]:to-success-700 mr-2 text-4xl [&amp;&gt;*]:bg-gradient-to-br"><i class="i-lock-closed"></i></span><span class="text-base-600 max-w-[140px] text-sm font-medium">Conexão SSL <!----></span></span><!--]--></span></li><!--]--></ul><div class="mx-auto flex flex-wrap items-center justify-end gap-4 overflow-x-auto text-2xl md:mx-0 md:flex-nowrap md:overflow-hidden"><!--[--><i class="i-pix text-[#77B6A8]"></i><i class="i-visa"></i><i class="i-mastercard"></i><i class="i-elo"></i><i class="i-amex"></i><i class="i-hipercard"></i><b class="mb-1 text-[57%] leading-none tracking-tighter text-black">boleto</b><!--]--></div></div><div class="mt-7 justify-between gap-4 text-center text-xs md:flex md:text-left"><div class="mb-3 md:mb-0"> @ 2024 / </div><a href="https://www.ecomplus.io/" target="_blank" rel="noopener" class="italic text-[#37003c]"><!--[--> powered by <b>e-com.plus</b><!--]--></a></div></div></footer>
87
+
88
+
89
+
90
+
91
+
92
+
93
+ <div id="teleported-bottom" class="relative z-[19]"></div>
94
+ <picture data-alt="Icon" class="absolute hidden" style="bottom: -1000px">
95
+ <source type="image/png" srcset="/_astro/ecom-icon_t3guw.png 32w,/_astro/ecom-icon_12falx.png 192w,/_astro/ecom-icon_15pqnO.png 512w" sizes="32px">
96
+
97
+ </picture>
98
+ </body>
99
+
100
+
101
+ </html>
@@ -1,6 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="pt-br">
3
3
  <head data-capo=""><meta charset="UTF-8"><meta name="viewport" content="width=device-width"><title>Erro | E-Com Plus demoStore</title><script data-astro-transition-persist="astro-kvdive2p-1">
4
+ window.__sfId = -1;
4
5
  window._emitApiContext = (id = null) => {
5
6
  console.log('[ctx] emit ' + id);
6
7
  window.dispatchEvent(new Event('storefront:apiContext'));
@@ -26,7 +27,7 @@ window.$firebaseConfig = {
26
27
  messagingSenderId: "70369627313",
27
28
  appId: "1:70369627313:web:06634033b9c6208fe7e690",
28
29
  };
29
- </script><link rel="stylesheet" href="/_astro/_slug_.r344YGqG.css"><script type="module" src="/_astro/hoisted.WBjTfX6e.js"></script><meta name="theme-color" content="#37003c"><link rel="icon" type="image/png" href="/_image?f=png&#38;w=32&#38;h=32&#38;href=%2Fimg%2Fuploads%2Fecom-icon.png&#38;V=_" sizes="32x32"><link rel="icon" type="image/png" href="/_image?f=png&#38;w=192&#38;h=192&#38;href=%2Fimg%2Fuploads%2Fecom-icon.png&#38;V=_" sizes="192x192"><meta name="description" content="E-Com Plus é a plataforma de e-commerce API-first desenhada para modelos de negócio e experiências de compra únicas. Flexibilidade do código aberto com facilidade de SaaS para que você comece rápido, venda do seu jeito e escale sem limitações."><meta name="author" content="E-Com Plus demoStore"><meta name="generator" content="Astro v4.2.1"><link rel="canonical" href="https://demo.ecomplus.app/~fallback/"><link rel="apple-touch-icon" href="/_image?f=png&#38;w=192&#38;h=192&#38;href=%2Fimg%2Fuploads%2Fecom-icon.png&#38;V=_"><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" content="E-Com Plus demoStore"><meta property="og:url" content="https://demo.ecomplus.app/~fallback/"><meta property="og:title" content=""><meta property="og:description" content="E-Com Plus é a plataforma de e-commerce API-first desenhada para modelos de negócio e experiências de compra únicas. Flexibilidade do código aberto com facilidade de SaaS para que você comece rápido, venda do seu jeito e escale sem limitações."><meta property="og:type" content="website"><meta property="og:locale" content="ptBR"><meta name="twitter:card" content="summary"><meta name="ecom-store-id" content="1011"><script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","name":"E-Com Plus demoStore","url":"https://demo.ecomplus.app/","logo":"https://demo.ecomplus.app/img/uploads/logo.png"}</script><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="none"></head>
30
+ </script><link rel="stylesheet" href="/_astro/_slug_.4W7qhV-L.css"><script type="module" src="/_astro/hoisted.SLwcAI01.js"></script><meta name="theme-color" content="#37003c"><link rel="icon" type="image/png" href="/_image?f=png&#38;w=32&#38;h=32&#38;href=%2Fimg%2Fuploads%2Fecom-icon.png&#38;V=_" sizes="32x32"><link rel="icon" type="image/png" href="/_image?f=png&#38;w=192&#38;h=192&#38;href=%2Fimg%2Fuploads%2Fecom-icon.png&#38;V=_" sizes="192x192"><meta name="description" content="E-Com Plus é a plataforma de e-commerce API-first desenhada para modelos de negócio e experiências de compra únicas. Flexibilidade do código aberto com facilidade de SaaS para que você comece rápido, venda do seu jeito e escale sem limitações."><meta name="author" content="E-Com Plus demoStore"><meta name="generator" content="Astro v4.2.6"><link rel="canonical" href="https://demo.ecomplus.app/~fallback/"><link rel="apple-touch-icon" href="/_image?f=png&#38;w=192&#38;h=192&#38;href=%2Fimg%2Fuploads%2Fecom-icon.png&#38;V=_"><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" content="E-Com Plus demoStore"><meta property="og:url" content="https://demo.ecomplus.app/~fallback/"><meta property="og:title" content=""><meta property="og:description" content="E-Com Plus é a plataforma de e-commerce API-first desenhada para modelos de negócio e experiências de compra únicas. Flexibilidade do código aberto com facilidade de SaaS para que você comece rápido, venda do seu jeito e escale sem limitações."><meta property="og:type" content="website"><meta property="og:locale" content="ptBR"><meta name="twitter:card" content="summary"><meta name="ecom-store-id" content="1011"><script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","name":"E-Com Plus demoStore","url":"https://demo.ecomplus.app/","logo":"https://demo.ecomplus.app/img/uploads/logo.png"}</script><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="none"></head>
30
31
  <body style="visibility:hidden" class="!visible"> <!-- Prevent FOUC -->
31
32
  <div id="teleported-overlap" class="relative z-[59]"></div>
32
33
  <div id="teleported-top" class="relative z-[19]"></div>
@@ -37,14 +38,14 @@ window.$firebaseConfig = {
37
38
 
38
39
 
39
40
 
40
- <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var i=t=>{let e=async()=>{await(await t())()};"requestIdleCallback"in window?window.requestIdleCallback(e):setTimeout(e,200)};(self.Astro||(self.Astro={})).idle=i;window.dispatchEvent(new Event("astro:idle"));})();;(()=>{var b=Object.defineProperty;var f=(c,o,i)=>o in c?b(c,o,{enumerable:!0,configurable:!0,writable:!0,value:i}):c[o]=i;var l=(c,o,i)=>(f(c,typeof o!="symbol"?o+"":o,i),i);var p;{let c={0:t=>m(t),1:t=>i(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(i(t)),5:t=>new Set(i(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t)},o=t=>{let[e,r]=t;return e in c?c[e](r):void 0},i=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([e,r])=>[e,o(r)]));customElements.get("astro-island")||customElements.define("astro-island",(p=class extends HTMLElement{constructor(){super(...arguments);l(this,"Component");l(this,"hydrator");l(this,"hydrate",async()=>{var d;if(!this.hydrator||!this.isConnected)return;let e=(d=this.parentElement)==null?void 0:d.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let r=this.querySelectorAll("astro-slot"),a={},h=this.querySelectorAll("template[data-astro-template]");for(let n of h){let s=n.closest(this.tagName);s!=null&&s.isSameNode(this)&&(a[n.getAttribute("data-astro-template")||"default"]=n.innerHTML,n.remove())}for(let n of r){let s=n.closest(this.tagName);s!=null&&s.isSameNode(this)&&(a[n.getAttribute("name")||"default"]=n.innerHTML)}let u;try{u=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(n){let s=this.getAttribute("component-url")||"<unknown>",y=this.getAttribute("component-export");throw y&&(s+=` (export ${y})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),n),n}await this.hydrator(this)(this.Component,u,a,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});l(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),r.disconnect(),this.childrenConnectedCallback()},r=new MutationObserver(()=>{var a;((a=this.lastChild)==null?void 0:a.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});r.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}start(){let e=JSON.parse(this.getAttribute("opts")),r=this.getAttribute("client");if(Astro[r]===void 0){window.addEventListener(`astro:${r}`,()=>this.start(),{once:!0});return}Astro[r](async()=>{let a=this.getAttribute("renderer-url"),[h,{default:u}]=await Promise.all([import(this.getAttribute("component-url")),a?import(a):()=>()=>{}]),d=this.getAttribute("component-export")||"default";if(!d.includes("."))this.Component=h[d];else{this.Component=h;for(let n of d.split("."))this.Component=this.Component[n]}return this.hydrator=u,this.hydrate},e,this)}attributeChangedCallback(){this.hydrate()}},l(p,"observedAttributes",["props"]),p))}})();</script><astro-island uid="2c4lhG" component-url="/_astro/PitchBar.Nr7T3S3T.js" component-export="default" renderer-url="/_astro/client.ZhEmw4hZ.js" props="{&quot;slides&quot;:[1,[[0,{&quot;href&quot;:[0,&quot;/promotion&quot;],&quot;html&quot;:[0,&quot;Aproveite nossos descontos de até 50%!&quot;]}],[0,{&quot;href&quot;:[0,&quot;&quot;],&quot;html&quot;:[0,&quot;&lt;b&gt;Frete grátis&lt;/b&gt; &lt;d-md&gt;para todo Brasil&lt;/d-md&gt; a partir de {free_shipping_from_value}&quot;]}]]]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;PitchBar&quot;,&quot;value&quot;:true}" await-children=""><div class="bg-base-100 relative z-20"><div class="container mx-auto px-3 py-1 md:w-2/3"><div class="relative" data-carousel><ul class="m-0 flex snap-mandatory list-none scroll-smooth p-0 [&amp;&gt;*]:snap-start [&amp;&gt;*]:outline-none snap-x overflow-y-hidden overflow-x-scroll" style="scrollbar-width:none;-webkit-overflow-scrolling:touch;-ms-overflow-style:none;" data-carousel-wrapper><!--[--><!--[--><li class="h-full shrink-0 basis-full text-center"><a href="/promotion" class="inline-block px-8 hover:underline"><!--[--><span class="text-base-800 prose text-sm">Aproveite nossos descontos de até 50%!</span><!--]--></a></li><li class="h-full shrink-0 basis-full text-center"><span href class="inline-block px-8"><!--[--><span class="text-base-800 prose text-sm"><b>Frete grátis</b> <d-md>para todo Brasil</d-md> a partir de R$ 200,00</span><!--]--></span></li><!--]--><!--]--></ul><!--[--><div style="" class="text-base-400 text-xl leading-none"><button type="button" aria-label="Anterior" class="group absolute z-[11] left-0 top-0 bg-base-100 hover:text-base-700 pr-2" data-carousel-control="previous"><!--[--><i class="rotate-180 group-active:-translate-x-1 m-0 i-chevron-right"></i><!--]--></button><button type="button" aria-label="Próximo" class="group absolute z-[11] right-0 top-0 bg-base-100 hover:text-base-700 pl-2" data-carousel-control="next"><!--[--><i class="group-active:translate-x-1 m-0 i-chevron-right"></i><!--]--></button></div><!--]--></div></div></div><!--astro:end--></astro-island>
41
+ <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var i=t=>{let e=async()=>{await(await t())()};"requestIdleCallback"in window?window.requestIdleCallback(e):setTimeout(e,200)};(self.Astro||(self.Astro={})).idle=i;window.dispatchEvent(new Event("astro:idle"));})();;(()=>{var b=Object.defineProperty;var f=(c,o,i)=>o in c?b(c,o,{enumerable:!0,configurable:!0,writable:!0,value:i}):c[o]=i;var l=(c,o,i)=>(f(c,typeof o!="symbol"?o+"":o,i),i);var p;{let c={0:t=>m(t),1:t=>i(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(i(t)),5:t=>new Set(i(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t)},o=t=>{let[e,r]=t;return e in c?c[e](r):void 0},i=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([e,r])=>[e,o(r)]));customElements.get("astro-island")||customElements.define("astro-island",(p=class extends HTMLElement{constructor(){super(...arguments);l(this,"Component");l(this,"hydrator");l(this,"hydrate",async()=>{var d;if(!this.hydrator||!this.isConnected)return;let e=(d=this.parentElement)==null?void 0:d.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let r=this.querySelectorAll("astro-slot"),a={},h=this.querySelectorAll("template[data-astro-template]");for(let n of h){let s=n.closest(this.tagName);s!=null&&s.isSameNode(this)&&(a[n.getAttribute("data-astro-template")||"default"]=n.innerHTML,n.remove())}for(let n of r){let s=n.closest(this.tagName);s!=null&&s.isSameNode(this)&&(a[n.getAttribute("name")||"default"]=n.innerHTML)}let u;try{u=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(n){let s=this.getAttribute("component-url")||"<unknown>",y=this.getAttribute("component-export");throw y&&(s+=` (export ${y})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),n),n}await this.hydrator(this)(this.Component,u,a,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});l(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),r.disconnect(),this.childrenConnectedCallback()},r=new MutationObserver(()=>{var a;((a=this.lastChild)==null?void 0:a.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});r.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}start(){let e=JSON.parse(this.getAttribute("opts")),r=this.getAttribute("client");if(Astro[r]===void 0){window.addEventListener(`astro:${r}`,()=>this.start(),{once:!0});return}Astro[r](async()=>{let a=this.getAttribute("renderer-url"),[h,{default:u}]=await Promise.all([import(this.getAttribute("component-url")),a?import(a):()=>()=>{}]),d=this.getAttribute("component-export")||"default";if(!d.includes("."))this.Component=h[d];else{this.Component=h;for(let n of d.split("."))this.Component=this.Component[n]}return this.hydrator=u,this.hydrate},e,this)}attributeChangedCallback(){this.hydrate()}},l(p,"observedAttributes",["props"]),p))}})();</script><astro-island uid="2c4lhG" component-url="/_astro/PitchBar.xC4J7MDy.js" component-export="default" renderer-url="/_astro/client.ZhEmw4hZ.js" props="{&quot;slides&quot;:[1,[[0,{&quot;href&quot;:[0,&quot;/promotion&quot;],&quot;html&quot;:[0,&quot;Aproveite nossos descontos de até 50%!&quot;]}],[0,{&quot;href&quot;:[0,&quot;&quot;],&quot;html&quot;:[0,&quot;&lt;b&gt;Frete grátis&lt;/b&gt; &lt;d-md&gt;para todo Brasil&lt;/d-md&gt; a partir de {free_shipping_from_value}&quot;]}]]]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;PitchBar&quot;,&quot;value&quot;:true}" await-children=""><div class="bg-base-100 relative z-20"><div class="container mx-auto px-3 py-1 md:w-2/3"><div class="relative" data-carousel><ul class="m-0 flex snap-mandatory list-none scroll-smooth p-0 [&amp;&gt;*]:snap-start [&amp;&gt;*]:outline-none snap-x overflow-y-hidden overflow-x-scroll" style="scrollbar-width:none;-webkit-overflow-scrolling:touch;-ms-overflow-style:none;" data-carousel-wrapper><!--[--><!--[--><li class="h-full shrink-0 basis-full text-center"><a href="/promotion" class="inline-block px-8 hover:underline"><!--[--><span class="text-base-800 prose text-sm">Aproveite nossos descontos de até 50%!</span><!--]--></a></li><li class="h-full shrink-0 basis-full text-center"><span href class="inline-block px-8"><!--[--><span class="text-base-800 prose text-sm"><b>Frete grátis</b> <d-md>para todo Brasil</d-md> a partir de R$ 200,00</span><!--]--></span></li><!--]--><!--]--></ul><!--[--><div style="" class="text-base-400 text-xl leading-none"><button type="button" aria-label="Anterior" class="group absolute z-[11] left-0 top-0 bg-base-100 hover:text-base-700 pr-2" data-carousel-control="previous"><!--[--><i class="rotate-180 group-active:-translate-x-1 m-0 i-chevron-right"></i><!--]--></button><button type="button" aria-label="Próximo" class="group absolute z-[11] right-0 top-0 bg-base-100 hover:text-base-700 pl-2" data-carousel-control="next"><!--[--><i class="group-active:translate-x-1 m-0 i-chevron-right"></i><!--]--></button></div><!--]--></div></div></div><!--astro:end--></astro-island>
41
42
 
42
43
 
43
44
  <script async>
44
45
  window.$storefront.data['categories'] = [{"_id":"5c6ffa18c626be23430d4f4e","name":"Monitores","slug":"monitores","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007322374-rect836.png"}},{"_id":"5c6ffa2ac626be23430d4f50","name":"Monitores Gamer","parent":{"slug":"monitores"},"slug":"monitores-gamer","pictures":[]},{"_id":"5c6ffa45c626be23430d4f52","name":"Monitores Convencionais","parent":{"slug":"monitores"},"slug":"monitores-convencionais"},{"_id":"5c6ffa5bc626be23430d4f54","name":"Monitores TV","parent":{"slug":"monitores"},"slug":"monitores-tv"},{"_id":"5c6ffa6ec626be23430d4f56","name":"Notebooks","slug":"notebooks","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007351112-comp.png"}},{"_id":"5c6ffa8cc626be23430d4f58","name":"Notebooks gamers","parent":{"slug":"notebooks"},"slug":"notebooks-gamers"},{"_id":"5c6ffab6c626be23430d4f5c","name":"MacBook","parent":{"slug":"ultrabook"},"slug":"macbook","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1566932713325-macbook.jfif","size":"233x216"},"pictures":[{}]},{"_id":"5c7009bec626be23430d4f80","name":"Periféricos","slug":"perifericos","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007328003-keyb.png"},"pictures":[],"parent":{"slug":"fisicos"}},{"_id":"5c7009fdc626be23430d4f82","name":"Teclados","parent":{"slug":"perifericos"},"slug":"teclados"},{"_id":"5c700a11c626be23430d4f84","name":"Mouses","parent":{"slug":"perifericos"},"slug":"mouses"},{"_id":"5c700a37c626be23430d4f86","name":"Caixas de Som","parent":{"slug":"perifericos"},"slug":"caixas-de-som"},{"_id":"5c700a53c626be23430d4f88","name":"Headset","parent":{"slug":"perifericos"},"slug":"headset"},{"_id":"5c700a6bc626be23430d4f8a","name":"Cadeira Gamer","parent":{"slug":"perifericos"},"slug":"cadeira-gamer"},{"_id":"5c700a9cc626be23430d4f8c","name":"Smartphones","slug":"smartphones","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007321218-smartphone.png"}},{"_id":"5c701c9ec626be23430d4fe7","name":"Jogo","slug":"jogos/","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007332353-game.png"},"pictures":[]},{"_id":"5c701cb1c626be23430d4fe9","name":"Físicos","parent":{"slug":"jogos/"},"slug":"fisicos"},{"_id":"5c701cc6c626be23430d4feb","name":"Digitais","parent":{"slug":"jogos/"},"slug":"digitais"},{"_id":"5c701ce2c626be23430d4fed","name":"Usados","parent":{"slug":"jogos/"},"slug":"usados"},{"_id":"5ceecb3f887ef430f1f70c88","name":"Promoções","slug":"promocoes","icon":{"url":"https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007326827-mony.png"},"pictures":[{}]},{"_id":"5d5714045753286eadbbdc77","name":"Ultrabook","parent":{"slug":"notebooks"},"slug":"ultrabook"},{"_id":"5f70f1417430f92180f5ba66","name":"Brasileiro"},{"_id":"5fb2b13b69274c73fcd6a051","name":"smartwatch"},{"_id":"60199592d6981740b4a030f4","name":"São Paulo","slug":"sao-paulo"},{"_id":"61de099d0c7c72722502397b","name":"MacBook Pro"},{"_id":"61de12450c7c727225025299","name":"Mac Stop"},{"_id":"6227a90a7963422eee367aaa","name":"capinhas"}];
45
46
  window.dispatchEvent(new Event('storefront:data:categories'));</script>
46
47
  <script>(()=>{var a=(s,o)=>{let n=async()=>{await(await s())()},r=()=>{let t=Array.isArray(o.value)?o.value:[o.value];for(let e=0;e<t.length;e++)if(typeof t[e]=="string"&&t[e].startsWith("data:")){let d=t[e].substring(5);if(!window.$storefront?.data?.[d]){window.addEventListener(`storefront:data:${d}`,r,{once:!0});return}}if(t.includes("idle")){if(typeof window.requestIdleCallback=="function"){setTimeout(()=>window.requestIdleCallback(n),9);return}setTimeout(n,200);return}n()},i=window.$storefront?.apiContext?.doc._id||null;if(window._firstLoadContextId===i&&window._emitedContextId===i){console.log("[ctx] first load"),r(),document.addEventListener("astro:beforeload",()=>{delete window._firstLoadContextId},{once:!0});return}window.addEventListener("storefront:apiContext",r,{once:!0})};(self.Astro||(self.Astro={})).context=a;window.dispatchEvent(new Event("astro:context"));})();
47
- </script><astro-island uid="27IxkL" component-url="/_astro/ShopHeader.OLf0l4Ot.js" component-export="default" renderer-url="/_astro/client.ZhEmw4hZ.js" props="{&quot;menuCategorySlugs&quot;:[1,[]],&quot;menuRandomCategories&quot;:[0,7],&quot;isAlphabeticalSortSubmenu&quot;:[0,false]}" ssr="" client="context" opts="{&quot;name&quot;:&quot;ShopHeader&quot;,&quot;value&quot;:&quot;data:categories&quot;}" await-children=""><header class="relative top-0 z-50 transition-colors bg-white py-3 sm:py-4 md:py-5"><div class="mx-auto flex w-screen grid-flow-col grid-cols-3 items-center justify-between px-1 sm:pl-2 sm:pr-2.5 md:grid lg:w-[calc(100vw-1rem)] lg:auto-cols-max lg:grid-cols-none lg:px-1 xl:max-w-[82rem] 2xl:max-w-[85rem]"><div class="basis-1/4 lg:hidden"><button class="my-1 px-2" aria-label="Abrir/fechar menu"><i class="i-bars-3-bottom-left text-base-400 animate-pulse text-3xl transition-colors"></i></button></div><!--[--><astro-slot name="logo">
48
+ </script><astro-island uid="27IxkL" component-url="/_astro/ShopHeader.l4KJGvUd.js" component-export="default" renderer-url="/_astro/client.ZhEmw4hZ.js" props="{&quot;menuCategorySlugs&quot;:[1,[]],&quot;menuRandomCategories&quot;:[0,7],&quot;isAlphabeticalSortSubmenu&quot;:[0,false]}" ssr="" client="context" opts="{&quot;name&quot;:&quot;ShopHeader&quot;,&quot;value&quot;:&quot;data:categories&quot;}" await-children=""><header class="relative top-0 z-50 transition-colors bg-white py-3 sm:py-4 md:py-5"><div class="mx-auto flex w-screen grid-flow-col grid-cols-3 items-center justify-between px-1 sm:pl-2 sm:pr-2.5 md:grid lg:w-[calc(100vw-1rem)] lg:auto-cols-max lg:grid-cols-none lg:px-1 xl:max-w-[82rem] 2xl:max-w-[85rem]"><div class="basis-1/4 lg:hidden"><button class="my-1 px-2" aria-label="Abrir/fechar menu"><i class="i-bars-3-bottom-left text-base-400 animate-pulse text-3xl transition-colors"></i></button></div><!--[--><astro-slot name="logo">
48
49
  <a href="/">
49
50
  <h2>
50
51
  <picture>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/storefront",
3
3
  "type": "module",
4
- "version": "2.2.1",
4
+ "version": "2.2.3",
5
5
  "description": "E-Com Plus Cloud Commerce storefront with Astro",
6
6
  "bin": {
7
7
  "storefront": "./scripts/build-prod.sh"
@@ -43,7 +43,7 @@
43
43
  "@types/gtag.js": "^0.0.18",
44
44
  "@vite-pwa/astro": "^0.2.0",
45
45
  "@vueuse/core": "10.7.2",
46
- "astro": "4.2.6",
46
+ "astro": "4.2.7",
47
47
  "astro-capo": "^0.0.1",
48
48
  "chroma-js": "^2.4.2",
49
49
  "dotenv": "^16.4.1",
@@ -1,7 +1,11 @@
1
- let id = -1;
1
+ // See ssr-context.ts and BaseHead.astro
2
+ if (!globalThis.__sfIds) globalThis.__sfIds = {};
2
3
 
3
- /* eslint-disable-next-line no-plusplus */
4
- export const useId = () => String(++id);
4
+ export const useId = (prefix = '_') => {
5
+ if (typeof globalThis.__sfIds[prefix] !== 'number') globalThis.__sfIds[prefix] = -1;
6
+ /* eslint-disable-next-line no-plusplus */
7
+ return `${prefix}${++globalThis.__sfIds[prefix]}`;
8
+ };
5
9
 
6
10
  export const requestIdleCallback = (fn: (...args: any[]) => any, fallbackMs = 300) => {
7
11
  if (typeof window.requestIdleCallback === 'function') {
@@ -38,7 +38,7 @@ const emit = defineEmits<{
38
38
  'update:modelValue': [value: number]
39
39
  }>();
40
40
  const input = ref<HTMLInputElement | null>(null);
41
- const inputId = `NInput${useId()}`;
41
+ const inputId = useId('NInput');
42
42
  const value = computed({
43
43
  get() {
44
44
  return props.modelValue;
@@ -48,7 +48,7 @@ const useStickyHeader = (props: Props) => {
48
48
  watchDebounced(_y, (nextY) => {
49
49
  y.value = nextY;
50
50
  }, {
51
- debounce: isMobile ? 100 : 50,
51
+ debounce: isMobile ? 100 : 20,
52
52
  maxWait: isMobile ? 800 : 400,
53
53
  });
54
54
  const isSticky = computed(() => ready.value && y.value > staticY.value * 1.2);
@@ -91,6 +91,7 @@ window._emitApiContext = (id = null) => {
91
91
  console.log('[ctx] emit ' + id);
92
92
  window.dispatchEvent(new Event('storefront:apiContext'));
93
93
  window._emitedContextId = id;
94
+ window.__sfIds = {};
94
95
  };
95
96
  window.ECOM_STORE_ID = ${storeId};
96
97
  window.ECOM_LANG = '${lang}';
@@ -4,6 +4,7 @@ import Fade from '@@sf/components/globals/Fade.vue';
4
4
  import ALink from '@@sf/components/globals/ALink.vue';
5
5
  import AImg from '@@sf/components/globals/AImg.vue';
6
6
  import Skeleton from '@@sf/components/globals/Skeleton.vue';
7
+ import { useId } from '../../helpers/sf-utils';
7
8
 
8
9
  const formatPercentage = (value: number, digits = 1) => {
9
10
  return Number.isInteger(value) ? `${value}%` : `${value.toFixed(digits)}%`;
@@ -23,6 +24,7 @@ const createApp = (app: App) => {
23
24
  const { settings, apiContext } = globalThis.$storefront || {};
24
25
  app.config.globalProperties.$settings = settings;
25
26
  app.config.globalProperties.$apiContext = apiContext;
27
+ app.config.globalProperties.$useId = useId;
26
28
  },
27
29
  });
28
30
  app.component('Fade', Fade);
@@ -242,6 +242,7 @@ const loadRouteContext = async (
242
242
  };
243
243
  Astro.locals.routeContext = routeContext;
244
244
  emitter.emit('load', routeContext);
245
+ globalThis.__sfIds = {}; // see helpers/sf-utils.ts
245
246
  return routeContext;
246
247
  };
247
248
 
@@ -21,6 +21,7 @@ declare module '@vue/runtime-core' {
21
21
  $percentage: FormatPercentage;
22
22
  $settings: $Storefront['settings'];
23
23
  $apiContext: $Storefront['apiContext'];
24
+ $useId: (prefix?: string) => string;
24
25
  }
25
26
 
26
27
  export interface GlobalComponents {
@@ -2,7 +2,7 @@
2
2
  "name": "@cloudcommerce/test-base",
3
3
  "private": true,
4
4
  "type": "module",
5
- "version": "2.2.1",
5
+ "version": "2.2.3",
6
6
  "description": "E-Com Plus Cloud Commerce basic setup for testing",
7
7
  "main": "lib/index.js",
8
8
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/types",
3
3
  "type": "module",
4
- "version": "2.2.1",
4
+ "version": "2.2.3",
5
5
  "description": "E-Com Plus Cloud Commerce reusable type definitions",
6
6
  "main": "index.ts",
7
7
  "repository": {
@@ -1 +0,0 @@
1
- import{P as j}from"./ProductShelf.PPitdYxI.js";import"./_plugin-vue_export-helper.SO-0jCqa.js";import"./runtime-core.esm-bundler.XTSAdOlw.js";import"./index.R7A-Pg5V.js";import"./index.q6KIyKlJ.js";import"./customer-session.AcETMuhI.js";import"./sf-utils.Z4H-dRBJ.js";import"./use-product-card.WRVLjenR.js";import"./use-analytics.uqK_2k_k.js";import"./shopping-cart.dJsZkyuD.js";import"./price.Easct8WC.js";import"./afetch.5c8VmT0-.js";import"./name.urFqJ5yn.js";import"./i18n.Lxnz1oF-.js";import"./img.WnsidxCx.js";import"./Prices.Ye-m2HTo.js";import"./modules-info.tVRhvxNm.js";import"./format-money.iK5LGydz.js";export{j as default};
@@ -1 +0,0 @@
1
- import{_ as Y,w as te,b as oe,v as he}from"./_plugin-vue_export-helper.SO-0jCqa.js";import{u as ge}from"./index.R7A-Pg5V.js";import{a as xe,i as _e}from"./sf-utils.Z4H-dRBJ.js";import{i as ye,a as Oe,b as le,c as ke,d as Pe,e as Se,f as we,g as Le,h as Fe,j as Re,k as Ce,P as Ee}from"./ProductShelf.PPitdYxI.js";import{S as Te}from"./use-analytics.uqK_2k_k.js";import{a as L,c as g,d as z,a5 as Ae,H as ae,w as D,k as ie,X as I,a9 as Me,aa as Be,a4 as De,ab as j,E as N,L as je,a6 as Ue,M as se,N as k,O as P,R as h,U as E,V as C,T as q,Y as Q,P as w,S as V,Z as Ve,$ as G,W as ne,Q as U,a0 as Ie}from"./runtime-core.esm-bundler.XTSAdOlw.js";import{u as ue,g as $e}from"./index.q6KIyKlJ.js";import{g as ze}from"./grid-title.vGKBy72g.js";import{f as W}from"./format-money.iK5LGydz.js";import{u as $,f as Ne,c as T,w as Ke,a as We,h as qe,o as A,t as Qe,i as X,b as He,E as Ge,s as Xe,A as Z,T as Ye,d as re,e as Ze,l as Je,N as ce,p as et,g as tt,O as at,j as R,D as st}from"./use-text-value.XE_A2nDM.js";import"./customer-session.AcETMuhI.js";import"./use-product-card.WRVLjenR.js";import"./price.Easct8WC.js";import"./name.urFqJ5yn.js";import"./i18n.Lxnz1oF-.js";import"./img.WnsidxCx.js";import"./shopping-cart.dJsZkyuD.js";import"./Prices.Ye-m2HTo.js";import"./modules-info.tVRhvxNm.js";import"./afetch.5c8VmT0-.js";function nt(t,s,i){let a=L(i?.value),e=g(()=>t.value!==void 0);return[g(()=>e.value?t.value:a.value),function(r){return e.value||(a.value=r),s?.(r)}]}function de(t={},s=null,i=[]){for(let[a,e]of Object.entries(t))ve(i,pe(s,a),e);return i}function pe(t,s){return t?t+"["+s+"]":s}function ve(t,s,i){if(Array.isArray(i))for(let[a,e]of i.entries())ve(t,pe(s,a.toString()),e);else i instanceof Date?t.push([s,i.toISOString()]):typeof i=="boolean"?t.push([s,i?"1":"0"]):typeof i=="string"?t.push([s,i]):typeof i=="number"?t.push([s,`${i}`]):i==null?t.push([s,""]):de(i,s,t)}function rt(t,s){return t===s}var ot=(t=>(t[t.Open=0]="Open",t[t.Closed=1]="Closed",t))(ot||{}),lt=(t=>(t[t.Single=0]="Single",t[t.Multi=1]="Multi",t))(lt||{}),it=(t=>(t[t.Pointer=0]="Pointer",t[t.Other=1]="Other",t))(it||{});function ut(t){requestAnimationFrame(()=>requestAnimationFrame(t))}let fe=Symbol("ListboxContext");function J(t){let s=De(fe,null);if(s===null){let i=new Error(`<${t} /> is missing a parent <Listbox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(i,J),i}return s}let ct=z({name:"Listbox",emits:{"update:modelValue":t=>!0},props:{as:{type:[Object,String],default:"template"},disabled:{type:[Boolean],default:!1},by:{type:[String,Function],default:()=>rt},horizontal:{type:[Boolean],default:!1},modelValue:{type:[Object,String,Number,Boolean],default:void 0},defaultValue:{type:[Object,String,Number,Boolean],default:void 0},form:{type:String,optional:!0},name:{type:String,optional:!0},multiple:{type:[Boolean],default:!1}},inheritAttrs:!1,setup(t,{slots:s,attrs:i,emit:a}){let e=L(1),r=L(null),p=L(null),c=L(null),d=L([]),o=L(""),l=L(null),y=L(1);function f(b=n=>n){let n=l.value!==null?d.value[l.value]:null,u=at(b(d.value.slice()),_=>A(_.dataRef.domRef)),m=n?u.indexOf(n):null;return m===-1&&(m=null),{options:u,activeOptionIndex:m}}let v=g(()=>t.multiple?1:0),[O,S]=nt(g(()=>t.modelValue),b=>a("update:modelValue",b),g(()=>t.defaultValue)),B=g(()=>O.value===void 0?$(v.value,{1:[],0:void 0}):O.value),x={listboxState:e,value:B,mode:v,compare(b,n){if(typeof t.by=="string"){let u=t.by;return b?.[u]===n?.[u]}return t.by(b,n)},orientation:g(()=>t.horizontal?"horizontal":"vertical"),labelRef:r,buttonRef:p,optionsRef:c,disabled:g(()=>t.disabled),options:d,searchQuery:o,activeOptionIndex:l,activationTrigger:y,closeListbox(){t.disabled||e.value!==1&&(e.value=1,l.value=null)},openListbox(){t.disabled||e.value!==0&&(e.value=0)},goToOption(b,n,u){if(t.disabled||e.value===1)return;let m=f(),_=Ne(b===T.Specific?{focus:T.Specific,id:n}:{focus:b},{resolveItems:()=>m.options,resolveActiveIndex:()=>m.activeOptionIndex,resolveId:M=>M.id,resolveDisabled:M=>M.dataRef.disabled});o.value="",l.value=_,y.value=u??1,d.value=m.options},search(b){if(t.disabled||e.value===1)return;let n=o.value!==""?0:1;o.value+=b.toLowerCase();let u=(l.value!==null?d.value.slice(l.value+n).concat(d.value.slice(0,l.value+n)):d.value).find(_=>_.dataRef.textValue.startsWith(o.value)&&!_.dataRef.disabled),m=u?d.value.indexOf(u):-1;m===-1||m===l.value||(l.value=m,y.value=1)},clearSearch(){t.disabled||e.value!==1&&o.value!==""&&(o.value="")},registerOption(b,n){let u=f(m=>[...m,{id:b,dataRef:n}]);d.value=u.options,l.value=u.activeOptionIndex},unregisterOption(b){let n=f(u=>{let m=u.findIndex(_=>_.id===b);return m!==-1&&u.splice(m,1),u});d.value=n.options,l.value=n.activeOptionIndex,y.value=1},theirOnChange(b){t.disabled||S(b)},select(b){t.disabled||S($(v.value,{0:()=>b,1:()=>{let n=j(x.value.value).slice(),u=j(b),m=n.findIndex(_=>x.compare(u,j(_)));return m===-1?n.push(u):n.splice(m,1),n}}))}};Ke([p,c],(b,n)=>{var u;x.closeListbox(),We(n,qe.Loose)||(b.preventDefault(),(u=A(p))==null||u.focus())},g(()=>e.value===0)),Ae(fe,x),Qe(g(()=>$(e.value,{0:X.Open,1:X.Closed})));let F=g(()=>{var b;return(b=A(p))==null?void 0:b.closest("form")});return ae(()=>{D([F],()=>{if(!F.value||t.defaultValue===void 0)return;function b(){x.theirOnChange(t.defaultValue)}return F.value.addEventListener("reset",b),()=>{var n;(n=F.value)==null||n.removeEventListener("reset",b)}},{immediate:!0})}),()=>{let{name:b,modelValue:n,disabled:u,form:m,..._}=t,M={open:e.value===0,disabled:u,value:B.value};return ie(I,[...b!=null&&B.value!=null?de({[b]:B.value}).map(([K,ee])=>ie(He,Ge({features:Xe.Hidden,key:K,as:"input",type:"hidden",hidden:!0,readOnly:!0,form:m,name:K,value:ee}))):[],Z({ourProps:{},theirProps:{...i,...Ye(_,["defaultValue","onUpdate:modelValue","horizontal","multiple","by"])},slot:M,slots:s,attrs:i,name:"Listbox"})])}}}),dt=z({name:"ListboxButton",props:{as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-listbox-button-${re()}`}},setup(t,{attrs:s,slots:i,expose:a}){let e=J("ListboxButton");a({el:e.buttonRef,$el:e.buttonRef});function r(o){switch(o.key){case R.Space:case R.Enter:case R.ArrowDown:o.preventDefault(),e.openListbox(),N(()=>{var l;(l=A(e.optionsRef))==null||l.focus({preventScroll:!0}),e.value.value||e.goToOption(T.First)});break;case R.ArrowUp:o.preventDefault(),e.openListbox(),N(()=>{var l;(l=A(e.optionsRef))==null||l.focus({preventScroll:!0}),e.value.value||e.goToOption(T.Last)});break}}function p(o){switch(o.key){case R.Space:o.preventDefault();break}}function c(o){e.disabled.value||(e.listboxState.value===0?(e.closeListbox(),N(()=>{var l;return(l=A(e.buttonRef))==null?void 0:l.focus({preventScroll:!0})})):(o.preventDefault(),e.openListbox(),ut(()=>{var l;return(l=A(e.optionsRef))==null?void 0:l.focus({preventScroll:!0})})))}let d=Ze(g(()=>({as:t.as,type:s.type})),e.buttonRef);return()=>{var o,l;let y={open:e.listboxState.value===0,disabled:e.disabled.value,value:e.value.value},{id:f,...v}=t,O={ref:e.buttonRef,id:f,type:d.value,"aria-haspopup":"listbox","aria-controls":(o=A(e.optionsRef))==null?void 0:o.id,"aria-expanded":e.listboxState.value===0,"aria-labelledby":e.labelRef.value?[(l=A(e.labelRef))==null?void 0:l.id,f].join(" "):void 0,disabled:e.disabled.value===!0?!0:void 0,onKeydown:r,onKeyup:p,onClick:c};return Z({ourProps:O,theirProps:v,slot:y,attrs:s,slots:i,name:"ListboxButton"})}}}),pt=z({name:"ListboxOptions",props:{as:{type:[Object,String],default:"ul"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-listbox-options-${re()}`}},setup(t,{attrs:s,slots:i,expose:a}){let e=J("ListboxOptions"),r=L(null);a({el:e.optionsRef,$el:e.optionsRef});function p(o){switch(r.value&&clearTimeout(r.value),o.key){case R.Space:if(e.searchQuery.value!=="")return o.preventDefault(),o.stopPropagation(),e.search(o.key);case R.Enter:if(o.preventDefault(),o.stopPropagation(),e.activeOptionIndex.value!==null){let l=e.options.value[e.activeOptionIndex.value];e.select(l.dataRef.value)}e.mode.value===0&&(e.closeListbox(),N(()=>{var l;return(l=A(e.buttonRef))==null?void 0:l.focus({preventScroll:!0})}));break;case $(e.orientation.value,{vertical:R.ArrowDown,horizontal:R.ArrowRight}):return o.preventDefault(),o.stopPropagation(),e.goToOption(T.Next);case $(e.orientation.value,{vertical:R.ArrowUp,horizontal:R.ArrowLeft}):return o.preventDefault(),o.stopPropagation(),e.goToOption(T.Previous);case R.Home:case R.PageUp:return o.preventDefault(),o.stopPropagation(),e.goToOption(T.First);case R.End:case R.PageDown:return o.preventDefault(),o.stopPropagation(),e.goToOption(T.Last);case R.Escape:o.preventDefault(),o.stopPropagation(),e.closeListbox(),N(()=>{var l;return(l=A(e.buttonRef))==null?void 0:l.focus({preventScroll:!0})});break;case R.Tab:o.preventDefault(),o.stopPropagation();break;default:o.key.length===1&&(e.search(o.key),r.value=setTimeout(()=>e.clearSearch(),350));break}}let c=Je(),d=g(()=>c!==null?(c.value&X.Open)===X.Open:e.listboxState.value===0);return()=>{var o,l;let y={open:e.listboxState.value===0},{id:f,...v}=t,O={"aria-activedescendant":e.activeOptionIndex.value===null||(o=e.options.value[e.activeOptionIndex.value])==null?void 0:o.id,"aria-multiselectable":e.mode.value===1?!0:void 0,"aria-labelledby":(l=A(e.buttonRef))==null?void 0:l.id,"aria-orientation":e.orientation.value,id:f,onKeydown:p,role:"listbox",tabIndex:0,ref:e.optionsRef};return Z({ourProps:O,theirProps:v,slot:y,attrs:s,slots:i,features:ce.RenderStrategy|ce.Static,visible:d.value,name:"ListboxOptions"})}}}),vt=z({name:"ListboxOption",props:{as:{type:[Object,String],default:"li"},value:{type:[Object,String,Number,Boolean]},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-listbox.option-${re()}`}},setup(t,{slots:s,attrs:i,expose:a}){let e=J("ListboxOption"),r=L(null);a({el:r,$el:r});let p=g(()=>e.activeOptionIndex.value!==null?e.options.value[e.activeOptionIndex.value].id===t.id:!1),c=g(()=>$(e.mode.value,{0:()=>e.compare(j(e.value.value),j(t.value)),1:()=>j(e.value.value).some(x=>e.compare(j(x),j(t.value)))})),d=g(()=>$(e.mode.value,{1:()=>{var x;let F=j(e.value.value);return((x=e.options.value.find(b=>F.some(n=>e.compare(j(n),j(b.dataRef.value)))))==null?void 0:x.id)===t.id},0:()=>c.value})),o=et(r),l=g(()=>({disabled:t.disabled,value:t.value,get textValue(){return o()},domRef:r}));ae(()=>e.registerOption(t.id,l)),Me(()=>e.unregisterOption(t.id)),ae(()=>{D([e.listboxState,c],()=>{e.listboxState.value===0&&c.value&&$(e.mode.value,{1:()=>{d.value&&e.goToOption(T.Specific,t.id)},0:()=>{e.goToOption(T.Specific,t.id)}})},{immediate:!0})}),Be(()=>{e.listboxState.value===0&&p.value&&e.activationTrigger.value!==0&&N(()=>{var x,F;return(F=(x=A(r))==null?void 0:x.scrollIntoView)==null?void 0:F.call(x,{block:"nearest"})})});function y(x){if(t.disabled)return x.preventDefault();e.select(t.value),e.mode.value===0&&(e.closeListbox(),N(()=>{var F;return(F=A(e.buttonRef))==null?void 0:F.focus({preventScroll:!0})}))}function f(){if(t.disabled)return e.goToOption(T.Nothing);e.goToOption(T.Specific,t.id)}let v=tt();function O(x){v.update(x)}function S(x){v.wasMoved(x)&&(t.disabled||p.value||e.goToOption(T.Specific,t.id,0))}function B(x){v.wasMoved(x)&&(t.disabled||p.value&&e.goToOption(T.Nothing))}return()=>{let{disabled:x}=t,F={active:p.value,selected:c.value,disabled:x},{id:b,value:n,disabled:u,...m}=t,_={id:b,ref:r,role:"option",tabIndex:x===!0?void 0:-1,"aria-disabled":x===!0?!0:void 0,"aria-selected":c.value,disabled:void 0,onClick:y,onFocus:f,onPointerenter:O,onMouseenter:O,onPointermove:S,onMousemove:S,onPointerleave:B,onMouseleave:B};return Z({ourProps:_,theirProps:m,slot:F,attrs:i,slots:s,name:"ListboxOption"})}}});const me=({searchEngine:t,fixedParams:s})=>{const i=g(()=>{const e={};return Object.keys(t.params).forEach(r=>{if(s?.[r])return;const p=t.params[r];if(p!==void 0){switch(r){case"sort":case"term":case"limit":case"offset":case"count":case"buckets":case"fields":return}e[r]=p}}),e}),a=g(()=>{const e=Object.keys(i.value),r=[];return e.forEach(p=>{const c=p.replace(/[^\w.]/g,"");if(c==="specs"&&Array.isArray(i.value[p])){i.value[p].forEach(d=>{const[o]=d.split(":"),l=`specs.${o}`;r.includes(l)||r.push(l)});return}r.includes(c)||r.push(c)}),r.length});return{activeFilters:i,filtersCount:a}},ft=t=>{const{searchEngine:s,fixedParams:i}=t,a=g(()=>s.meta),e=g(()=>s.meta.buckets),{activeFilters:r,filtersCount:p}=me(t);D(s.params,()=>{s.fetch()});let c=null;const d=()=>{Object.keys(s.params).forEach(n=>{i?.[n]||delete s.params[n]}),c=null},o=({min:n,max:u})=>`${n||null}/${u||null}`,l=g(()=>{const{params:n}=s;return{min:Number(n["price>"]),max:Number(n["price<"])}}),y=L([]),f=ue(()=>{y.value.splice(0),e.value?.prices?.forEach(n=>{n.min&&(n.min=Math.round(n.min*100)/100),n.max&&(n.max=Math.round(n.max*100)/100),y.value.push({range:n,key:o(n)})}),Number.isNaN(l.value.min)||y.value.find(({range:u})=>u.min===l.value.min&&u.max===l.value.max)||y.value.unshift({range:{...l.value,count:a.value.count||0,avg:null},key:o(l.value)})},50);f();const v=L(o(l.value));D(v,()=>{c="price";const n=y.value.find(({range:u})=>o(u)===v.value);if(n){const{min:u,max:m}=n.range;u?s.params["price>"]=u:delete s.params["price>"],m?s.params["price<"]=m:delete s.params["price<"];return}delete s.params["price>"],delete s.params["price<"]});const O=({min:n,max:u})=>n&&u?u===n?W(u):`${W(n)} ${le.toLowerCase()} ${W(u)}`:!n&&u?`${le} ${W(u)}`:`${ke} ${W(n||0)}`,S=L([]),B=ue(()=>{for(let u=0;u<S.value.length;u++){const{field:m}=S.value[u];m!==c&&(S.value.splice(u,1),u-=1)}const n=e.value;if(n&&([["brands",ye],["categories",Oe]].forEach(([u,m])=>{const _=`${u}.name`;n[_]&&c!==_&&S.value.push({title:m,options:n[_],field:_})}),n.specs)){const{grids:u}=globalThis.$storefront.data;Object.keys(n.specs).forEach(m=>{const[_,M]=m.split(":");if(M){const K=`specs.${_}`;if(c===K)return;const ee=ze(_,u||[]);let H=S.value.find(be=>be.field===K);H||(H={title:ee,options:{},field:K},S.value.push(H)),H.options[M]=n.specs[m]}})}},50);B();const x=(n,u)=>{const[,m]=n.split(".");return["specs,",`${m}:${u}`]},F=(n,u)=>{n.startsWith("specs.")&&([n,u]=x(n,u));const m=r.value[n];return!!(m===u||Array.isArray(m)&&m.includes(u))},b=(n,u)=>{c=n,console.log({_lastParamChanged:c}),n.startsWith("specs.")&&([n,u]=x(n,u));const m=!F(n,u);let _=s.params[n];if(Array.isArray(_)||(_=[],s.params[n]=_),m)_.push(u);else for(let M=0;M<_.length;M++)if(_[M]===u){_.splice(M,1);break}};return D(e,()=>{c!=="price"&&f(),B()}),{resultMeta:a,resultBuckets:e,activeFilters:r,filtersCount:p,clearFilters:d,getPriceRangeKey:o,priceRanges:y,priceRangeKey:v,getPriceRangeLabel:O,filterOptions:S,checkFilterOption:F,toggleFilterOption:b}},mt=t=>{let{term:s}=t;const a=t.canUseUrlParams!==!1?ge("history"):null;t.ssrError&&(console.error(new Error(`SSR search error: ${t.ssrError}`)),window.location.pathname.startsWith("/s/")&&(window.location.href=`/s?q=${encodeURIComponent(s||"")}`));const e=je(t.products||[]),r=new Te({debounce:50});s===void 0&&(s=new URLSearchParams(window.location.search).get("q")||null),s!==void 0&&(r.term.value=s),Object.assign(r.params,t.fixedParams),a&&Object.keys(a).forEach(v=>{if(v==="sort"){r.params.sort=a.sort;return}if(v==="p"){const O=parseInt(String(a.p),10);O>=1&&(r.pageNumber.value=O);return}if(v.startsWith("f\\")){const O=v.substring(2);r.params[O]=a[v]}}),r.wasFetched.value||((t.products||t.resultMeta)&&r.setResult({result:t.products,meta:t.resultMeta}),t.products||r.fetch().catch(console.error)),r.isWithCount.value=!0,r.isWithBuckets.value=!0;const p=L({count:0,...t.resultMeta||r.meta});D(r.products,()=>{e.splice(0),r.products.forEach(v=>e.push(v)),p.value={count:0,...r.meta}});const c=g(()=>{const{count:v}=r.meta;return!v||e.length<2?1:Math.ceil(v/r.pageSize.value)});D(r.pageNumber,v=>{a&&(a.p=`${v}`),r.fetch()});const d=()=>{D(r.isFetching,v=>{const O=t.showcase?.value;!v&&O&&setTimeout(()=>{xe(O,_e?-25:0)},50)})};r.wasFetched.value?d():$e(r.wasFetched,d);const{activeFilters:o,filtersCount:l}=me({searchEngine:r,fixedParams:t.fixedParams});a&&D(o,v=>{a&&Object.keys(a).forEach(O=>{O.startsWith("f\\")&&delete a[O]}),Object.keys(v).forEach(O=>{const S=v[O];if(typeof S=="string"||typeof S=="number"){a[`f\\${O}`]=`${S}`;return}Array.isArray(S)&&typeof S[0]=="string"&&(a[`f\\${O}`]=S)})});const y=[{value:null,label:Pe},{value:"-sales",label:Se},{value:"price",label:we},{value:"-price",label:Le},{value:"-price_discount",label:Fe},{value:"-created_at",label:Re},{value:"name",label:Ce}],f=L(null);return D(f,()=>{r.params.sort=f.value||void 0,r.fetch()}),a&&(typeof a.sort=="string"&&a.sort&&(f.value=a.sort),D(r.params,v=>{delete a.sort,v.sort&&(a.sort=String(v.sort))})),{searchEngine:r,fetching:r.fetching.value,isFetching:r.isFetching,products:e,resultMeta:p,totalPages:c,activeFilters:o,filtersCount:l,sortOptions:y,sortOption:f}},bt=t=>{const s=g(()=>t.totalPages?t.totalPages:t.totalItems&&t.pageSize?Math.ceil(t.totalItems/t.pageSize):1),i=g(()=>{const f=t.page||1;return f<1?1:f>s.value?s.value:f}),a=g(()=>t.maxPages||10),e=g(()=>{if(s.value<=a.value)return 1;const f=Math.floor(a.value/2),v=Math.ceil(a.value/2)-1;return i.value<=f?1:i.value+v>=s.value?s.value-a.value+1:i.value-f}),r=g(()=>{if(s.value<=a.value)return s.value;const f=Math.floor(a.value/2),v=Math.ceil(a.value/2)-1;return i.value<=f?a.value:i.value+v>=s.value?s.value:i.value+v}),p=g(()=>Array.from(Array(r.value+1-e.value).keys()).map(f=>e.value+f)),c=L("");D(Ue(t.isUrlPath),()=>{const f=new URL(window.location.toString());t.isUrlPath&&!f.pathname.endsWith("/")?f.pathname+="/":f.searchParams.delete("p"),c.value=`${f.pathname}${f.search}`},{immediate:!0});const d=f=>t.isUrlPath?`../${f}`:`?p=${f}`,o=g(()=>p.value.map(f=>c.value+d(f))),l=g(()=>i.value<=1?null:c.value+d(i.value-1)),y=g(()=>i.value>=s.value?null:c.value+d(i.value+1));return{totalPages:s,startPage:e,endPage:r,pages:p,pageLinks:o,prevPageLink:l,nextPageLink:y}},ht=z({__name:"Pagination",props:{totalItems:{},totalPages:{},page:{default:1},pageSize:{},maxPages:{default:7},isUrlPath:{type:Boolean,default:!1}},emits:["update:page"],setup(t,{expose:s,emit:i}){s();const a=t,e=i,{pages:r,pageLinks:p,prevPageLink:c,nextPageLink:d}=bt(a),o={props:a,emit:e,pages:r,pageLinks:p,prevPageLink:c,nextPageLink:d};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),gt={class:"text-base-900 flex justify-center gap-1.5 text-center text-sm font-medium leading-9"},xt=h("i",{class:"i-arrow-right rotate-180"},null,-1),_t=h("span",{class:"ml-1.5 hidden md:inline"},w("Anterior"),-1),yt=h("span",{class:"mr-1.5 hidden md:inline"},w("Próximo"),-1),Ot=h("i",{class:"i-arrow-right"},null,-1);function kt(t,s,i,a,e,r){const p=se("ALink");return k(),P("ol",gt,[h("li",null,[E(p,{href:a.prevPageLink,onClick:s[0]||(s[0]=te(c=>a.prevPageLink&&a.emit("update:page",i.page-1),["prevent"])),class:q(["mr-1 block min-w-9 rounded border px-3",a.prevPageLink?"border-base-100 hover:bg-base-100":"border-transparent text-base-500"])},{default:C(()=>[xt,_t]),_:1},8,["href","class"])]),(k(!0),P(I,null,Q(a.pages,(c,d)=>(k(),P("li",{key:c},[E(p,{href:c!==i.page?a.pageLinks[d]:null,onClick:te(o=>a.emit("update:page",c),["prevent"]),class:q(["block w-9 rounded border ring-black/10",c===i.page?"bg-base-50 border-base-100 ring text-base-700":"border-transparent hover:bg-base-100"])},{default:C(()=>[V(w(c),1)]),_:2},1032,["href","onClick","class"])]))),128)),h("li",null,[E(p,{href:a.nextPageLink,onClick:s[1]||(s[1]=te(c=>a.nextPageLink&&a.emit("update:page",i.page+1),["prevent"])),class:q(["ml-1 block min-w-9 rounded border px-3",a.nextPageLink?"border-base-100 hover:bg-base-100":"border-transparent text-base-500"])},{default:C(()=>[yt,Ot]),_:1},8,["href","class"])])])}const Pt=Y(ht,[["render",kt]]),St=z({__name:"Collapse",props:{title:{}},setup(t,{expose:s}){s();const i={};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),wt={class:"group my-4 md:my-5 [&_i]:open:-rotate-90"},Lt={role:"button",class:"text-base-700 hover:text-base-800 [&>i]:hover:text-primary list-none text-2xl font-medium lowercase group-open:mb-3"},Ft=h("i",{class:"i-chevron-right mr-1 rotate-90"},null,-1);function Rt(t,s,i,a,e,r){return k(),P("details",wt,[h("summary",Lt,[Ft,h("span",null,w(i.title),1)]),Ve(t.$slots,"default")])}const Ct=Y(St,[["render",Rt]]),Et=z({__name:"SearchFilters",props:{searchEngine:{},fixedParams:{}},setup(t,{expose:s}){s();const i=t,{resultBuckets:a,activeFilters:e,filtersCount:r,clearFilters:p,priceRanges:c,priceRangeKey:d,getPriceRangeLabel:o,filterOptions:l,checkFilterOption:y,toggleFilterOption:f}=ft(i),v={props:i,resultBuckets:a,activeFilters:e,filtersCount:r,clearFilters:p,priceRanges:c,priceRangeKey:d,getPriceRangeLabel:o,filterOptions:l,checkFilterOption:y,toggleFilterOption:f,Collapse:Ct};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}}),Tt={class:"bg-base-50/40 h-screen overflow-y-auto"},At={class:"px-6 pb-3 pt-5 text-center"},Mt=h("i",{class:"i-trash ml-0.5"},null,-1),Bt={key:1,class:"text-base-500 border border-transparent pb-1 text-base font-semibold"},Dt={key:0,class:"px-6 pb-3"},jt={class:"space-y-1.5"},Ut=["id","value"],Vt=["for"],It={class:"text-base-500 font-medium"},$t={key:0,class:"flex items-center"},zt=h("label",{for:"priceRange-null",class:"cursor-pointer px-3 text-sm"},w("Qualquer preço"),-1),Nt={class:"space-y-1.5"},Kt=["id","value","checked","onChange"],Wt=["for"],qt={class:"text-base-500 font-medium"};function Qt(t,s,i,a,e,r){return k(),P("aside",Tt,[h("header",At,[a.filtersCount?(k(),P("button",{key:0,class:"ui-btn-sm ui-btn-danger py-1",onClick:s[0]||(s[0]=(...p)=>a.clearFilters&&a.clearFilters(...p))},[V(w("Limpar filtros")+" "),Mt])):(k(),P("p",Bt,w("Filtrar resultados")))]),a.resultBuckets?(k(),P("article",Dt,[a.priceRanges?(k(),G(a.Collapse,{key:0,title:"Preço",class:"[&>summary]:text-xl",open:""},{default:C(()=>[h("div",jt,[(k(!0),P(I,null,Q(a.priceRanges,({range:p,key:c})=>(k(),P("div",{key:`prices-${c}`,class:"flex items-center"},[ne(h("input",{type:"radio",id:`priceRange-${c}`,name:"priceRange",value:c,"onUpdate:modelValue":s[1]||(s[1]=d=>a.priceRangeKey=d)},null,8,Ut),[[oe,a.priceRangeKey]]),h("label",{for:`priceRange-${c}`,class:"cursor-pointer px-3 text-sm"},[V(w(a.getPriceRangeLabel(p))+" ",1),h("small",It," ("+w(p.count)+") ",1)],8,Vt)]))),128)),a.activeFilters["price<"]||a.activeFilters["price>"]?(k(),P("div",$t,[ne(h("input",{type:"radio",id:"priceRange-null",name:"priceRange",value:null,"onUpdate:modelValue":s[2]||(s[2]=p=>a.priceRangeKey=p)},null,512),[[oe,a.priceRangeKey]]),zt])):U("",!0)])]),_:1})):U("",!0),(k(!0),P(I,null,Q(a.filterOptions,({title:p,options:c,field:d})=>(k(),G(a.Collapse,{key:d,title:p,class:"[&>summary]:text-xl",open:!!a.activeFilters[d]},{default:C(()=>[h("div",Nt,[(k(!0),P(I,null,Q(c,(o,l,y)=>(k(),P("div",{key:`${d}-${y}`,class:"flex items-center"},[h("input",{type:"checkbox",id:`${d}-${l}`,value:l,checked:a.checkFilterOption(d,l),onChange:f=>a.toggleFilterOption(d,l)},null,40,Kt),h("label",{for:`${d}-${l}`,class:"cursor-pointer px-3 text-sm"},[V(w(l)+" ",1),h("small",qt," ("+w(o)+") ",1)],8,Wt)]))),128))])]),_:2},1032,["title","open"]))),128))])):U("",!0)])}const Ht=Y(Et,[["render",Qt]]),Gt=z({__name:"SearchShowcase",props:{term:{},fixedParams:{},products:{},resultMeta:{},ssrError:{},canUseUrlParams:{type:Boolean,default:!0},showcase:{}},async setup(t,{expose:s}){s();const i=t,a=L(null),{searchEngine:e,fetching:r,isFetching:p,products:c,resultMeta:d,totalPages:o,filtersCount:l,sortOptions:y,sortOption:f}=mt({...i,showcase:a}),v=g(()=>e.wasFetched.value),O=g(()=>e.term.value),S=g(()=>v&&!!(d.value.count>4||l.value)),B=L(!1),x={props:i,showcase:a,searchEngine:e,fetching:r,isFetching:p,products:c,resultMeta:d,totalPages:o,filtersCount:l,sortOptions:y,sortOption:f,wasFetched:v,searchTerm:O,hasFiltersBar:S,isFiltersOpen:B,get Listbox(){return ct},get ListboxButton(){return dt},get ListboxOptions(){return pt},get ListboxOption(){return vt},Drawer:st,Pagination:Pt,ProductShelf:Ee,SearchFilters:Ht};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}}),Xt={class:"text-base-800 inline font-bold italic"},Yt={key:1,class:"ui-section relative min-h-[300px]"},Zt={ref:"showcase",class:"relative"},Jt={key:0,class:"to-base-100 ui-section-slim sticky-header:translate-y-16 lg:sticky-header:translate-y-14 sticky top-0 z-[12] flex items-center justify-between rounded-b bg-white/80 px-6 py-4 shadow-sm backdrop-blur-sm transition-transform"},ea={class:"text-base-700 font-medium lowercase"},ta=h("span",{class:"hidden lg:inline"},w("Itens encontrados"),-1),aa=h("span",{class:"lg:hidden"},w("Produtos"),-1),sa={class:"flex items-center gap-4"},na=h("span",{class:"hidden text-xl leading-none md:block"},[h("i",{class:"text-base-600 i-adjustments-horizontal m-0"})],-1),ra=h("span",{class:"hidden md:inline"},w("Filtrar produtos"),-1),oa=h("span",{class:"md:hidden"},[h("i",{class:"i-adjustments-horizontal mr-1"}),V(" "+w("Filtrar"))],-1),la={key:0,class:"outline-3 outline-secondary/80 ui-badge-pill-sm absolute -right-1.5 -top-1 outline"},ia={class:"w-5"},ua={class:"i-check"},ca={key:0,class:"mt-3 lg:mt-4"},da={key:0,class:"absolute left-0 top-0 z-[14] size-full bg-white/40"};function pa(t,s,i,a,e,r){const p=se("Skeleton"),c=se("Fade");return k(),P(I,null,[a.searchTerm?(k(),P("section",{key:0,class:q(["text-base-700 ui-section-slim px-6 text-center text-xl lowercase",a.hasFiltersBar?"relative z-[14] -mb-4":"mb-0"])},[V(w("Buscando por")+" "),h("h1",Xt,w(a.searchTerm),1)],2)):U("",!0),a.isFetching&&!a.products.length?(k(),P("div",Yt,[E(p,{class:"absolute top-0 w-full px-5","is-bold":"","is-large":""})])):U("",!0),h("article",Zt,[E(c,null,{default:C(()=>[a.hasFiltersBar?(k(),P("section",Jt,[h("strong",ea,[a.resultMeta.count>1?(k(),P(I,{key:0},[V(w(a.resultMeta.count)+" ",1),ta,aa],64)):U("",!0)]),h("div",sa,[na,h("button",{onClick:s[0]||(s[0]=d=>a.isFiltersOpen=!a.isFiltersOpen),class:"ui-btn-sm ui-btn-secondary relative"},[ra,oa,a.filtersCount?(k(),P("span",la,w(a.filtersCount),1)):U("",!0)]),E(a.Listbox,{modelValue:a.sortOption,"onUpdate:modelValue":s[1]||(s[1]=d=>a.sortOption=d),as:"div",class:"text-base-800 relative text-sm"},{default:C(()=>[E(a.ListboxButton,{class:"ui-btn-sm ui-btn-secondary"},{default:C(()=>[V(w("Ordenar"))]),_:1}),E(c,null,{default:C(()=>[E(a.ListboxOptions,{class:"divide-base-100 absolute right-0 mt-2 divide-y rounded bg-white shadow ring-1 ring-black/5 focus:outline-none"},{default:C(()=>[(k(!0),P(I,null,Q(a.sortOptions,({label:d,value:o})=>(k(),G(a.ListboxOption,{key:o||"sort",value:o,as:"template"},{default:C(({selected:l,active:y})=>[h("li",null,[(k(),G(Ie(l?"div":"button"),{class:q(["flex w-full py-2 pl-3 pr-6",!l&&y&&"bg-secondary-100 text-secondary"])},{default:C(()=>[h("div",ia,[ne(h("i",ua,null,512),[[he,l]])]),V(" "+w(d),1)]),_:2},1032,["class"]))])]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1},8,["modelValue"])])])):U("",!0)]),_:1}),E(a.ProductShelf,{products:a.products,"is-grid":""},{append:C(()=>[E(c,{slide:"down"},{default:C(()=>[!a.isFetching&&a.totalPages>1?(k(),P("nav",ca,[E(a.Pagination,{page:a.searchEngine.pageNumber.value,"onUpdate:page":s[2]||(s[2]=d=>a.searchEngine.pageNumber.value=d),"total-pages":a.totalPages},null,8,["page","total-pages"])])):U("",!0)]),_:1})]),_:1},8,["products"]),E(c,null,{default:C(()=>[a.isFetching?(k(),P("div",da)):U("",!0)]),_:1})],512),E(a.Drawer,{modelValue:a.isFiltersOpen,"onUpdate:modelValue":s[3]||(s[3]=d=>a.isFiltersOpen=d),placement:"end","backdrop-target":null,"can-lock-scroll":!1,class:"!z-[80] bg-white shadow [&_[data-drawer-close]]:bg-white/80"},{default:C(()=>[E(a.SearchFilters,{"search-engine":a.searchEngine},null,8,["search-engine"])]),_:1},8,["modelValue"])],64)}const Aa=Y(Gt,[["render",pa]]);export{Aa as default};