cloudcommerce 0.6.3 → 0.6.4

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 (60) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +1 -1
  3. package/packages/api/lib/types/carts.d.ts +72 -20
  4. package/packages/api/lib/types/orders.d.ts +72 -20
  5. package/packages/api/lib/types/products.d.ts +82 -11
  6. package/packages/api/package.json +1 -1
  7. package/packages/api/src/types/carts.d.ts +72 -20
  8. package/packages/api/src/types/orders.d.ts +72 -20
  9. package/packages/api/src/types/products.d.ts +82 -11
  10. package/packages/apps/correios/package.json +1 -1
  11. package/packages/apps/custom-payment/package.json +1 -1
  12. package/packages/apps/custom-shipping/package.json +1 -1
  13. package/packages/apps/datafrete/package.json +1 -1
  14. package/packages/apps/discounts/package.json +1 -1
  15. package/packages/apps/emails/package.json +1 -1
  16. package/packages/apps/fb-conversions/package.json +1 -1
  17. package/packages/apps/frenet/package.json +1 -1
  18. package/packages/apps/galaxpay/package.json +1 -1
  19. package/packages/apps/google-analytics/package.json +1 -1
  20. package/packages/apps/infinitepay/package.json +1 -1
  21. package/packages/apps/jadlog/package.json +1 -1
  22. package/packages/apps/loyalty-points/package.json +1 -1
  23. package/packages/apps/melhor-envio/package.json +1 -1
  24. package/packages/apps/mercadopago/package.json +1 -1
  25. package/packages/apps/pagarme/package.json +1 -1
  26. package/packages/apps/paghiper/package.json +1 -1
  27. package/packages/apps/pix/package.json +1 -1
  28. package/packages/apps/tiny-erp/package.json +1 -1
  29. package/packages/apps/webhooks/package.json +1 -1
  30. package/packages/cli/package.json +1 -1
  31. package/packages/config/package.json +1 -1
  32. package/packages/emails/package.json +1 -1
  33. package/packages/events/package.json +1 -1
  34. package/packages/firebase/package.json +1 -1
  35. package/packages/i18n/package.json +1 -1
  36. package/packages/modules/package.json +1 -1
  37. package/packages/passport/package.json +1 -1
  38. package/packages/ssr/lib/firebase/serve-storefront.js +3 -2
  39. package/packages/ssr/lib/firebase/serve-storefront.js.map +1 -1
  40. package/packages/ssr/package.json +1 -1
  41. package/packages/ssr/src/firebase/serve-storefront.ts +3 -2
  42. package/packages/storefront/dist/client/_astro/PitchBar.b3636d56.js +1 -0
  43. package/packages/storefront/dist/client/_astro/ShopHeader.44e0873d.js +4 -0
  44. package/packages/storefront/dist/client/_astro/{_...slug_.a594715c.css → _...slug_.cd49465e.css} +1 -1
  45. package/packages/storefront/dist/client/_astro/client.14d15518.js +1 -0
  46. package/packages/storefront/dist/client/sw.js +1 -1
  47. package/packages/storefront/dist/server/chunks/pages/{all.f15e2c35.mjs → all.7f368e08.mjs} +114 -56
  48. package/packages/storefront/dist/server/entry.mjs +56 -14
  49. package/packages/storefront/package.json +1 -1
  50. package/packages/storefront/src/lib/components/CarouselControl.vue +4 -1
  51. package/packages/storefront/src/lib/components/globals/AImg.vue +53 -0
  52. package/packages/storefront/src/lib/layouts/BaseHead.astro +3 -1
  53. package/packages/storefront/src/lib/pages/_vue.ts +2 -0
  54. package/packages/storefront/src/vue-globals.d.ts +1 -0
  55. package/packages/types/package.json +1 -1
  56. package/packages/storefront/dist/client/_astro/PitchBar.5ced676e.js +0 -1
  57. package/packages/storefront/dist/client/_astro/ShopHeader.05d64cc8.js +0 -4
  58. package/packages/storefront/dist/client/_astro/client.79615b8a.js +0 -1
  59. package/packages/storefront/dist/client/fallback/index.html +0 -79
  60. package/packages/storefront/dist/server/chunks/prerender.2527d85d.mjs +0 -2
@@ -0,0 +1,53 @@
1
+ <script setup lang="ts">
2
+ import { type ImgHTMLAttributes, computed } from 'vue';
3
+ import {
4
+ img as getImg,
5
+ imgSizes as getImgSizes,
6
+ } from '@ecomplus/utils';
7
+
8
+ export interface PictureSize {
9
+ url: string;
10
+ alt?: string;
11
+ size?: string;
12
+ }
13
+
14
+ export interface Props {
15
+ picture: {
16
+ url: string;
17
+ alt?: string;
18
+ size?: string;
19
+ normal?: PictureSize;
20
+ big?: PictureSize;
21
+ zoom?: PictureSize;
22
+ small?: PictureSize;
23
+ _id?: string;
24
+ tag?: string;
25
+ };
26
+ loading?: 'lazy' | 'eager';
27
+ }
28
+
29
+ const props = withDefaults(defineProps<Props>(), {
30
+ loading: 'lazy',
31
+ });
32
+ const image = computed(() => {
33
+ if ((props.picture as PictureSize).url) {
34
+ return props.picture;
35
+ }
36
+ return getImg(props.picture) as PictureSize;
37
+ });
38
+ const dimensions = computed(() => {
39
+ return getImgSizes(image.value) as { width: number, height: number };
40
+ });
41
+ const attrs = computed<ImgHTMLAttributes>(() => ({
42
+ ...props,
43
+ width: dimensions.value.width || null,
44
+ height: dimensions.value.height || null,
45
+ src: image.value.url,
46
+ alt: image.value.alt,
47
+ picture: null,
48
+ }));
49
+ </script>
50
+
51
+ <template>
52
+ <img v-bind="attrs" />
53
+ </template>
@@ -73,8 +73,10 @@ if (!ogImage) {
73
73
  {cmsMetatags?.twitter_username &&
74
74
  <meta name="twitter:site" content={cmsMetatags.twitter_username} />}
75
75
  <meta name="ecom-store-id" content={String(storeId)}>
76
- {pwaInfo && <Fragment set:html={pwaInfo.webManifest.linkTag} />}
77
76
  <script>
78
77
  import { registerSW } from 'virtual:pwa-register';
79
78
  registerSW({ immediate: true });
80
79
  </script>
80
+ {pwaInfo && <Fragment set:html={pwaInfo.webManifest.linkTag} />}
81
+ {(!pwaInfo && !import.meta.env.DEV) &&
82
+ <link rel="manifest" href="/manifest.webmanifest" />}
@@ -2,6 +2,7 @@ import type { App } from 'vue';
2
2
  import { i18n, formatMoney } from '@ecomplus/utils';
3
3
  import Fade from '@@sf/components/globals/Fade.vue';
4
4
  import ALink from '@@sf/components/globals/ALink.vue';
5
+ import AImg from '@@sf/components/globals/AImg.vue';
5
6
 
6
7
  const formatPercentage = (value: number, digits = 1) => {
7
8
  return Number.isInteger(value) ? `${value}%` : `${value.toFixed(digits)}%`;
@@ -22,6 +23,7 @@ export default (app: App) => {
22
23
  });
23
24
  app.component('Fade', Fade);
24
25
  app.component('ALink', ALink);
26
+ app.component('AImg', AImg);
25
27
  };
26
28
 
27
29
  export type FormatPercentage = typeof formatPercentage;
@@ -23,6 +23,7 @@ declare module '@vue/runtime-core' {
23
23
  export interface GlobalComponents {
24
24
  Fade: typeof import('@@sf/components/globals/Fade.vue')['default'];
25
25
  ALink: typeof import('@@sf/components/globals/ALink.vue')['default'];
26
+ AImg: typeof import('@@sf/components/globals/AImg.vue')['default'];
26
27
  }
27
28
  }
28
29
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/types",
3
3
  "type": "module",
4
- "version": "0.6.3",
4
+ "version": "0.6.4",
5
5
  "description": "E-Com Plus Cloud Commerce reusable type definitions",
6
6
  "main": "index.ts",
7
7
  "repository": {
@@ -1 +0,0 @@
1
- import{v as G}from"./runtime-dom.esm-bundler.cb4db78a.js";import{p as J}from"./modules-info.01f8d523.js";import{c as g,d as z,_ as R,m as Q,o as u,a as p,p as x,e as I,n as D,j as d,q as b,s as O,u as X,v as Y,x as Z,y as ee,k as $,w as m,l as q,g as C,z as te,A as ae,B as oe,F as ne,C as re,b as se}from"./_plugin-vue_export-helper.43eaff51.js";import{u as le,a as ie,b as ue}from"./index.3243538d.js";/* empty css */import"./session-utm.72684b84.js";import"./idle-callback.889bf0ea.js";import"./format-money.060d67ef.js";const ce=o=>{const r=g(()=>o.slides.map(({html:e})=>J(e).value)),a=g(()=>r.value.filter(e=>e).length);return{parsedContents:r,countValidSlides:a}},K=Symbol("carousel"),de=z({__name:"CarouselControl",props:{direction:{default:1}},setup(o,{expose:r}){r();const{changeSlide:a}=Q(K),e={changeSlide:a};return Object.defineProperty(e,"__isScriptSetup",{enumerable:!1,value:!0}),e}}),fe=["aria-label","data-carousel-control"];function pe(o,r,a,e,s,n){return u(),p("button",{type:"button","aria-label":a.direction>0?"Próximo":"Anterior",onClick:r[0]||(r[0]=i=>e.changeSlide(a.direction)),"data-carousel-control":a.direction>0?"next":"previous"},[x(o.$slots,"default",{},()=>[I("i",{class:D(["m-0",a.direction>0?"i-chevron-right":"i-chevron-left"])},null,2)])],8,fe)}const U=R(de,[["render",pe]]),me=z({__name:"Carousel",props:{as:{default:"ul"},modelValue:{default:1},autoplay:null},emits:["update:modelValue"],setup(o,{expose:r,emit:a}){r();const e=o,s=d(e.modelValue-1);b(O(e,"modelValue"),t=>{s.value=t-1}),b(s,(t,l)=>{t!==l&&a("update:modelValue",t+1)});const n=d(null),{x:i,isScrolling:f,arrivedState:S}=le(n),y=g(()=>S.left),w=g(()=>S.right),h=d([]),B=d(0),P=d(0),V=d(0),j=()=>{B.value=n.value.scrollWidth,P.value=n.value.offsetWidth},A=()=>{const t=[...n.value.children];h.value=t.map(l=>({offsetLeft:l.offsetLeft,width:l.offsetWidth}))},E=t=>{const l=t>0?s.value:s.value+t,M=h.value[l]?.width||0;return M?M*t:0},L=()=>{const t=h.value.findIndex(l=>Math.abs(l.offsetLeft-i.value)<=5);t>-1&&(s.value=t||0)},T=()=>{const t=B.value-P.value;V.value=h.value.findIndex(({offsetLeft:l})=>l>=t-5)};let c=null;const v=()=>{e.autoplay&&(clearTimeout(c),c=setTimeout(()=>{_(1)},e.autoplay))},_=t=>{if(t<0){if(y.value){T(),s.value=V.value-1,_(1);return}}else if(w.value){s.value=1,_(-1);return}const l=E(t);l&&(n.value.scrollBy({left:l,behavior:"smooth"}),v())};b(f,t=>{t?clearTimeout(c):(L(),v())});const N=d(null),F=ie(N);b(F,t=>{t?clearTimeout(c):v()});const W=()=>{n.value&&(j(),A(),L(),T())},k=ue(W,400);X(()=>{W(),Y(()=>{[...n.value.children].forEach(t=>{t.setAttribute("tabindex","0")})}),v(),window.addEventListener("resize",k)}),Z(()=>{window.removeEventListener("resize",k),clearTimeout(c)}),ee(K,{autoplay:O(e,"autoplay"),changeSlide:_,isBoundLeft:y,isBoundRight:w});const H={props:e,emit:a,currentIndex:s,wrapper:n,currentPos:i,isScrolling:f,arrivedState:S,isBoundLeft:y,isBoundRight:w,slidesWidth:h,wrapperScrollWidth:B,wrapperVisibleWidth:P,indexCount:V,calcWrapperWidth:j,calcSlidesWidth:A,calcNextWidth:E,calcCurrentIndex:L,calcIndexCount:T,get autoplayTimer(){return c},set autoplayTimer(t){c=t},restartAutoplay:v,changeSlide:_,carousel:N,isHovered:F,calcOnInit:W,onResize:k,CarouselControl:U};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}}),he={ref:"carousel","data-carousel":""};function ve(o,r,a,e,s,n){return u(),p("div",he,[(u(),$(q(a.as),{ref:"wrapper","data-carousel-wrapper":""},{default:m(()=>[x(o.$slots,"default")]),_:3},512)),x(o.$slots,"controls",te(ae({changeSlide:e.changeSlide,isBoundLeft:e.isBoundLeft,isBoundRight:e.isBoundRight,currentPage:e.currentIndex+1,pageCount:e.indexCount+1})),()=>[C(e.CarouselControl,{direction:-1},{default:m(()=>[x(o.$slots,"previous")]),_:3}),C(e.CarouselControl,null,{default:m(()=>[x(o.$slots,"next")]),_:3})])],512)}const _e=R(me,[["render",ve]]),xe=z({__name:"PitchBar",props:{slides:null},setup(o,{expose:r}){r();const a=o,{parsedContents:e,countValidSlides:s}=ce(a),n={props:a,parsedContents:e,countValidSlides:s,Carousel:_e,CarouselControl:U};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),Ce={class:"bg-base-100 relative z-1"},be={class:"container md:w-2/3 mx-auto px-3 py-1"},ge=["innerHTML"],Se={class:"text-xl leading-none text-base-400"};function ye(o,r,a,e,s,n){return u(),p("div",Ce,[I("div",be,[C(e.Carousel,{autoplay:e.countValidSlides>1?7e3:null},{controls:m(()=>[oe(I("div",Se,[C(e.CarouselControl,{direction:-1,class:"pr-2 bg-base-100 hover:text-base-700"}),C(e.CarouselControl,{class:"pl-2 bg-base-100 hover:text-base-700"})],512),[[G,e.countValidSlides>1]])]),default:m(()=>[(u(!0),p(ne,null,re(a.slides,(i,f)=>(u(),p("li",{key:f},[(u(),$(q(i.href?"ALink":"span"),{href:i.href,target:i.target,class:D(["inline-block px-8",i.href?"hover:underline":null])},{default:m(()=>[e.parsedContents[f]?(u(),p("span",{key:0,innerHTML:e.parsedContents[f],class:"prose text-sm text-base-800"},null,8,ge)):se("",!0)]),_:2},1032,["href","target","class"]))]))),128))]),_:1},8,["autoplay"])])])}const Ie=R(xe,[["render",ye]]);export{Ie as default};
@@ -1,4 +0,0 @@
1
- import{c as qe,u as Xe,p as Qe,b as Ze}from"./index.3243538d.js";import{j as E,c as P,q as W,u as se,d as $,s as et,_ as G,r as de,o as w,k as z,w as L,a as k,n as C,e as y,p as oe,b as U,a3 as tt,g as B,h as Ee,l as nt,t as I,F as M,C as J,f as ot,a4 as at,G as te,m as pe,y as fe,a5 as X,P as Ne,a6 as rt,z as lt,A as st,a7 as Oe,a8 as it,a9 as ut}from"./_plugin-vue_export-helper.43eaff51.js";import{w as ct}from"./runtime-dom.esm-bundler.cb4db78a.js";import{_ as dt}from"./preload-helper.101896b7.js";import{i as pt}from"./idle-callback.889bf0ea.js";const ft=e=>{if(e){if(e.display_name)return e.display_name;if(e.name&&e.name.given_name)return e.name.given_name}return""},vt=ft,mt=e=>{const{header:o,canSetStyles:t,canCreateHeightDiv:n,isShownOnScrollDown:a}={canSetStyles:!0,canCreateHeightDiv:!0,...e},{ready:r,start:l}=qe(100,{controls:!0,immediate:!1}),s=E(0),i=E(0);let c;const{y:p}=Xe(document),v=P(()=>r.value&&p.value>i.value*1.2),h=E("none");W(v,async _=>{t&&(o.value.style.position=_?"sticky":null),c&&(c.style.height=_?`${s.value}px`:null),_?(await Qe(300),h.value="opacity var(--transition-slow), transform var(--transition)"):(l(),h.value="none")});const m=E(!1);return W(p,(_,g)=>{m.value=_>0&&_<g}),se(()=>{const _=()=>{s.value=o.value.offsetHeight,i.value=s.value+window.pageYOffset+o.value.getBoundingClientRect().top,l()},g=o.value.getElementsByTagName("IMG");let f=!0;for(let d=0;d<g.length;d++){const u=g[d];(!u.complete||u.naturalHeight===0)&&(f=!1,u.onload=_)}f&&_(),window.addEventListener("resize",Ze(_,300)),t&&(o.value.style.willChange="transform",W([v,m],([d,u])=>{let S=null,x=null;d&&(!u||a)&&(S="0",x="translateY(-100%)"),o.value.style.opacity=S,o.value.style.transform=x}),W(h,d=>{o.value.style.transition=d})),n&&(c=document.createElement("div"),o.value.parentElement.insertBefore(c,o.value))}),{staticHeight:s,staticY:i,isSticky:v,isScrollUp:m,transition:h}},ht=(e,o)=>{const t=e.filter(({slug:n,parent:a})=>n&&!a);return o?.length&&t.sort((n,a)=>{const r=o.indexOf(n.slug),l=o.indexOf(a.slug);return r>-1?l===-1||r<l?-1:1:l>-1?1:0}),t},gt=(e,o,t=!1)=>{const n=e.filter(({slug:a,parent:r})=>a&&r?r._id===o._id||r.slug&&r.slug===o.slug:!1);return t&&n.sort((a,r)=>a.name<r.name?-1:1),n},bt=({header:e,categories:o,menuCategorySlugs:t,menuRandomCategories:n=7,isAlphabeticalSortSubmenu:a})=>{const{isSticky:r,staticHeight:l,staticY:s}=mt({header:e}),i=P(()=>r.value?e.value.offsetHeight:s.value),c=ht(o,t),p=f=>gt(o,f,!!a),v=f=>({...f,subcategories:p(f).map(d=>v(d))}),h=c.map(v);let m=0;const _=h.filter(({slug:f})=>t?.includes(f)?!0:m<n?(m+=1,!0):!1),g=E(!1);return{isSticky:r,staticHeight:l,staticY:s,positionY:i,mainCategories:c,getSubcategories:p,getCategoryTree:v,categoryTrees:h,inlineMenuTrees:_,isSidenavOpen:g}},yt=$({__name:"Drawer",props:{modelValue:{type:Boolean,default:!1},placement:{default:"start"},position:{default:"fixed"},hasCloseButton:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(e,{expose:o,emit:t}){o();const n=e,a=()=>t("update:modelValue",!1),r=E(null),l=h=>{r.value?.contains(h.target)||a()},s=h=>{h.key==="Escape"&&a()};W(et(n,"modelValue"),async h=>{h?(document.body.style.overflow="hidden",setTimeout(()=>{document.addEventListener("click",l,{passive:!0}),document.addEventListener("keydown",s,{passive:!0})},500)):(document.body.style.overflow=null,document.removeEventListener("click",l),document.removeEventListener("keydown",s))});const i=P(()=>{switch(n.placement){case"start":return"left";case"end":return"right";case"top":return"up";default:return"down"}}),c=P(()=>n.position==="fixed"),p=P(()=>n.placement==="start"||n.placement==="end"),v={props:n,emit:t,close:a,drawer:r,outsideClickListener:l,escClickListener:s,slideTo:i,isFixed:c,isPlacementX:p};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}}),_t=["open","data-drawer"],wt={class:"relative h-full"},St=["onClick"],xt=y("i",{class:"i-close text-base-400 text-3xl"},null,-1),Pt={key:0,class:"fixed top-0 left-0 w-screen h-screen bg-black/50 z-40","data-drawer-backdrop":""};function kt(e,o,t,n,a,r){const l=de("Fade");return w(),z(l,{slide:n.slideTo,speed:"slow","is-floating":""},{default:L(()=>[t.modelValue?(w(),k("dialog",{key:0,ref:"drawer",class:C(["w-screen max-w-sm shadow p-0 m-0 z-50",[t.position,n.isFixed?`top-0 left-0 ${n.isPlacementX?"h-screen":""}`:null]]),open:t.modelValue,"data-drawer":t.placement},[y("div",wt,[t.hasCloseButton?(w(),k("button",{key:0,type:"button","aria-label":"Fechar",onClick:ct(n.close,["prevent"]),class:C(["absolute top-2",t.placement==="end"?"left-2":"right-2"]),"data-drawer-close":""},[oe(e.$slots,"close",{},()=>[xt])],10,St)):U("",!0),oe(e.$slots,"default")]),(w(),z(tt,{to:"#teleported-top"},[B(l,null,{default:L(()=>[t.modelValue?(w(),k("div",Pt)):U("",!0)]),_:1})]))],10,_t)):U("",!0)]),_:3},8,["slide"])}const Et=G(yt,[["render",kt]]);globalThis.__apiCache||(globalThis.__apiCache={});const ee={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SITE:'"https://ecom2-002.web.app"',SSR:!1};class Te extends Error{constructor(o,t,n,a=!1){t?(super(t.statusText),this.data=t.data,this.statusCode=t.status):super(n||"Request error"),this.config=o,this.response=t,this.isTimeout=a}}const Ot={middleware(e){const o={...e.headers};if(!e.isNoAuth)if(e.accessToken)o.Authorization=`Bearer ${e.accessToken}`;else{const r=e.authenticationId||ee.ECOM_AUTHENTICATION_ID,l=e.apiKey||ee.ECOM_API_KEY;if(r&&l){const s=`${r}:${l}`,i=typeof Buffer=="function"?Buffer.from(s).toString("base64"):btoa(s);o.Authorization=`Basic ${i}`}}let t=e.baseUrl||ee.API_BASE_URL||"https://ecomplus.io/v2";const{endpoint:n,params:a}=e;if(n!=="login"&&n!=="authenticate"&&n!=="ask-auth-callback"&&n!=="check-username"){const r=e.storeId||ee.ECOM_STORE_ID;if(!r)throw new Error("`storeId` must be set in config or `ECOM_STORE_ID` env var");t+=`/:${r}`;const l=e.lang||ee.ECOM_LANG;l&&(t+=`,lang:${l}`)}if(t+=`/${n}`,a){if(typeof a=="string")t+=`?${a}`;else if(typeof a=="object"){const r=new URLSearchParams;Object.keys(a).forEach(l=>{const s=a[l];Array.isArray(s)?s.forEach(i=>{r.append(l,i)}):r.append(l,s)}),t+=`?${r.toString()}`}}return{url:t,headers:o}}},A=async(e,o=0)=>{const{url:t,headers:n}=Ot.middleware(e),{method:a="get",timeout:r=2e4,maxRetries:l=3,cacheMaxAge:s=6e5}=e,i=a==="get"&&(e.canCache||e.canCache===void 0&&ee.SSR);let c;if(i){c=`${t}${JSON.stringify(n)}`;const f=globalThis.__apiCache[c];if(f&&Date.now()-f.timestamp<=s)return{...f.res,config:e}}const p=e.body||e.data;let v;p&&(v=JSON.stringify(p),n["Content-Type"]="application/json",n["Content-Length"]=v.length.toString());const h=new AbortController;let m=!1;const _=setTimeout(()=>{h.abort(),m=!0},r);let g;try{g=await(e.fetch||fetch)(t,{method:a,headers:n,body:v,signal:h.signal})}catch(f){throw new Te(e,g,f.message,m)}if(clearTimeout(_),g){if(g.ok){const d={...g,data:await g.json()};return i&&c&&(globalThis.__apiCache[c]={timestamp:Date.now(),res:d}),{...d,config:e}}const{status:f}=g;if(l<o&&(f===429||f>=500)){const d=g.headers.get("retry-after");return new Promise((u,S)=>{setTimeout(()=>{A(e,o+1).then(u).catch(S)},d&&parseInt(d,10)||5e3)})}}try{g.data=await g?.json()}catch{}throw new Te(e,g)},Tt=(e,o)=>A({...o,endpoint:e}),Ct=(e,o,t)=>A({...t,method:"post",endpoint:e,body:o}),$t=(e,o,t)=>A({...t,method:"put",endpoint:e,body:o}),It=(e,o,t)=>A({...t,method:"patch",endpoint:e,body:o}),Me=(e,o)=>A({...o,method:"delete",endpoint:e});A.get=Tt;A.post=Ct;A.put=$t;A.patch=It;A.del=Me;A.delete=Me;const At=(e,o,t=globalThis.localStorage)=>{if(!t)return Ee(o);let n;const a=t.getItem(e);if(a)try{n=JSON.parse(a)}catch{n=null,t.removeItem(e)}const r=Ee(n||o);return W(r,()=>{t.setItem(e,JSON.stringify(r))}),r},Fe="SESSION",ye={customer:{display_name:"",main_email:""},auth:null},N=At(Fe,ye),xe=P(()=>{const{auth:e}=N;return e&&new Date(e.expires).getTime()-Date.now()>1e3*10}),Le=P(()=>N.customer),_e=P(()=>vt(Le.value)),Ce=P({get(){return Le.value.main_email},set(e){N.customer.main_email=e}});let K;const Nt=P(()=>xe.value||!!K?.currentUser?.emailVerified),je=()=>{N.auth=ye.auth,N.customer=ye.customer,localStorage.removeItem(Fe),K.signOut()},De=async()=>{const e=await K.currentUser.getIdToken(),{domain:o}=window.storefront.settings;try{const t=await fetch(`https://${o}/api/passport/token`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`}});N.auth=await t.json()}catch(t){console.error(t)}},Mt=async()=>(xe.value||await De(),N.auth.access_token),Ft=async()=>{const e=await Mt(),{data:o}=await A.get(`customers/${N.auth.customer_id}`,{accessToken:e});return N.customer=o,o};let $e=!1;const Lt=(e=!window.location.pathname.startsWith("/app/"))=>{if($e)return;$e=!0;const o=()=>dt(()=>import("./firebase-app.7ce2ebb1.js"),[]).then(({getAuth:t,onAuthStateChanged:n,isSignInWithEmailLink:a,signInWithEmailLink:r})=>{if(K=t(),n(K,async l=>{if(l){if(l.displayName&&!_e.value&&(N.customer.display_name=l.displayName),l.email&&(!Ce.value||l.emailVerified)&&(N.customer.main_email=l.email),l.emailVerified){const s=l.email!==Ce.value;(s||!xe.value)&&(await De(),(s||!_e.value)&&await Ft())}}else je()}),a(K,window.location.href)){const s=new URLSearchParams(window.location.search).get("email");s&&r(K,s,window.location.href).then(()=>window.localStorage.removeItem("emailForSignIn")).catch(console.error)}}).catch(console.error);e?pt(o):o()},{settings:Ie,context:fo}=globalThis.storefront,jt=["whatsapp","instagram","facebook","twitter","youtube","tiktok","pinterest"],Pe={};jt.forEach(e=>{Ie[e]&&(Pe[e]=Ie[e])});let re;re=navigator.userAgent,document.body?document.body.offsetWidth:window.screen.width;re.includes("Safari")&&re.includes("Chrome");const Dt=/iPad|iPhone|iPod/.test(re)&&!window.MSStream,Bt=Dt||/Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(re),Ht=$({__name:"SocialNetworkIcon",props:{as:{default:"i"},network:null},setup(e,{expose:o}){o();const t=e,n=P(()=>{switch(t.network){case"facebook":return"i-facebook";case"instagram":return"i-instagram";case"whatsapp":return"i-whatsapp";case"youtube":return"i-youtube";case"pinterest":return"i-pinterest";case"tiktok":return"i-tiktok";case"twitter":return"i-twitter";default:return""}}),a={props:t,iconClassName:n};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}});function Rt(e,o,t,n,a,r){return w(),z(nt(t.as),{class:C(n.iconClassName)},null,8,["class"])}const Vt=G(Ht,[["render",Rt]]),Ut=$({__name:"SocialNetworkLink",props:{network:null,href:null,message:null},setup(e,{expose:o}){o();const t=e,n=P(()=>{let r=t.href||Pe[t.network];if(t.network==="whatsapp"){const l=r.replace(/[^+\d]/g,"");r=`https://${Bt?"api":"web"}.whatsapp.com/send?phone=`+encodeURIComponent(l.charAt(0)==="+"?l:`+55${l}`),t.message&&(r+=`&text=${encodeURIComponent(t.message)}`)}return r}),a={props:t,fixedHref:n,SocialNetworkIcon:Vt};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}});function zt(e,o,t,n,a,r){const l=de("ALink");return w(),z(l,{href:n.fixedHref},{default:L(()=>[oe(e.$slots,"default",{},()=>[B(n.SocialNetworkIcon,{network:t.network},null,8,["network"]),oe(e.$slots,"append")])]),_:3},8,["href"])}const Gt=G(Ut,[["render",zt]]),Wt=$({__name:"ShopSidenavCategory",props:{categoryTree:null},setup(e,{expose:o}){o();const t=E(!1),n=E(!0);W(t,r=>{r?setTimeout(()=>{n.value=!1},25):n.value=!0});const a={isOpen:t,isFaded:n};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),Kt={class:"text-lg text-base-800"},Yt=["src","alt"],Jt=["href"],qt=["href"],Xt=["src"],Qt={class:"inline"};function Zt(e,o,t,n,a,r){const l=de("ShopSidenavCategory",!0);return w(),k("li",Kt,[t.categoryTree.subcategories.length?(w(),k("details",{key:0,class:"bg-white overflow-y-auto overflow-x-hidden z-10 open:absolute open:top-0 open:left-0 open:w-full open:h-full",onToggle:o[0]||(o[0]=s=>n.isOpen=!n.isOpen)},[y("summary",{class:C(["cursor-pointer list-none px-6 py-3 active:bg-base-100 transition-colors",n.isOpen?"bg-base-100":null])},[y("i",{class:C(n.isOpen?"i-arrow-left text-lg":"i-arrow-right float-right mb-0 mt-1 text-xl text-base-500")},null,2),!n.isOpen&&t.categoryTree.icon?(w(),k("img",{key:0,loading:"lazy",src:t.categoryTree.icon.url,alt:t.categoryTree.icon.alt,class:"w-auto h-5 inline mr-3"},null,8,Yt)):U("",!0),y("h3",{class:C(["inline",n.isOpen?"ml-4 text-base":null])},I(t.categoryTree.name),3)],2),y("ul",{class:C(["mt-2 transition-opacity",n.isFaded?"opacity-20":"opacity-100"]),tabindex:"-1"},[(w(!0),k(M,null,J(t.categoryTree.subcategories,s=>(w(),z(l,{key:s._id,"category-tree":s},null,8,["category-tree"]))),128)),y("li",null,[y("a",{href:`/${t.categoryTree.slug}`,class:"block px-6 py-3 text-base underline active:bg-base-200"},I("Ver toda a categoria $1".replace("$1",t.categoryTree.name)),9,Jt)])],2)],32)):(w(),k("a",{key:1,href:`/${t.categoryTree.slug}`,class:"block px-6 py-3 active:bg-base-200"},[!n.isOpen&&t.categoryTree.icon?(w(),k("img",{key:0,loading:"lazy",src:t.categoryTree.icon.url,class:"w-auto h-5 inline mr-3"},null,8,Xt)):U("",!0),y("h3",Qt,I(t.categoryTree.name),1)],8,qt))])}const en=G(Wt,[["render",Zt]]),tn=$({__name:"ShopSidenav",props:{categoryTrees:null},setup(e,{expose:o}){o(),se(()=>Lt());const t={get customerName(){return _e},get isLogged(){return Nt},get logout(){return je},get socialNetworks(){return Pe},SocialNetworkLink:Gt,ShopSidenavCategory:en};return Object.defineProperty(t,"__isScriptSetup",{enumerable:!1,value:!0}),t}}),nn={class:"flex flex-col h-full"},on={class:"py-4 grow"},an={class:"relative h-full"},rn={class:"text-base"},ln={class:"flex items-center px-2 py-4 bg-base-100"},sn={href:"/app/account",class:"p-2 grow flex items-center gap-3"},un=y("i",{class:"i-account text-4xl text-base-500 m-0"},null,-1),cn={class:"leading-tight"},dn=y("small",{class:"block lowercase font-semibold text-primary"},I("Meus pedidos")+", "+I("Minha conta"),-1),pn=y("span",{class:"text-base-600"},I("Sair"),-1),fn=y("i",{class:"i-logout text-lg ml-1"},null,-1),vn=[pn,fn],mn={class:"flex gap-3 p-4 bg-base-200 text-xl text-base-700"};function hn(e,o,t,n,a,r){return w(),k("aside",nn,[y("nav",on,[y("ul",an,[(w(!0),k(M,null,J(t.categoryTrees,l=>(w(),z(n.ShopSidenavCategory,{key:l._id,"category-tree":l},null,8,["category-tree"]))),128))])]),y("footer",rn,[y("div",ln,[y("a",sn,[un,y("span",cn,[ot(I(`Olá ${n.customerName||"Visitante"}`)+" ",1),dn])]),n.isLogged?(w(),k("button",{key:0,onClick:o[0]||(o[0]=(...l)=>n.logout&&n.logout(...l)),class:"p-2 text-right text-base-800"},vn)):U("",!0)]),y("ul",mn,[(w(!0),k(M,null,J(n.socialNetworks,(l,s)=>(w(),k("li",{key:s},[B(n.SocialNetworkLink,{network:s,class:"p-1 active:text-primary"},null,8,["network"])]))),128))])])])}const gn=G(tn,[["render",hn]]);function H(e,o,...t){if(e in o){let a=o[e];return typeof a=="function"?a(...t):a}let n=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(o).map(a=>`"${a}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,H),n}var le=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(le||{}),bn=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(bn||{});function ae({visible:e=!0,features:o=0,ourProps:t,theirProps:n,...a}){var r;let l=He(n,t),s=Object.assign(a,{props:l});if(e||o&2&&l.static)return ge(s);if(o&1){let i=(r=l.unmount)==null||r?0:1;return H(i,{[0](){return null},[1](){return ge({...a,props:{...l,hidden:!0,style:{display:"none"}}})}})}return ge(s)}function ge({props:e,attrs:o,slots:t,slot:n,name:a}){var r,l;let{as:s,...i}=yn(e,["unmount","static"]),c=(r=t.default)==null?void 0:r.call(t,n),p={};if(n){let v=!1,h=[];for(let[m,_]of Object.entries(n))typeof _=="boolean"&&(v=!0),_===!0&&h.push(m);v&&(p["data-headlessui-state"]=h.join(" "))}if(s==="template"){if(c=Be(c??[]),Object.keys(i).length>0||Object.keys(o).length>0){let[v,...h]=c??[];if(!_n(v)||h.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${a} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(i).concat(Object.keys(o)).map(g=>g.trim()).filter((g,f,d)=>d.indexOf(g)===f).sort((g,f)=>g.localeCompare(f)).map(g=>` - ${g}`).join(`
2
- `),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map(g=>` - ${g}`).join(`
3
- `)].join(`
4
- `));let m=He((l=v.props)!=null?l:{},i),_=at(v,m);for(let g in m)g.startsWith("on")&&(_.props||(_.props={}),_.props[g]=m[g]);return _}return Array.isArray(c)&&c.length===1?c[0]:c}return te(s,Object.assign({},i,p),{default:()=>c})}function Be(e){return e.flatMap(o=>o.type===M?Be(o.children):[o])}function He(...e){if(e.length===0)return{};if(e.length===1)return e[0];let o={},t={};for(let n of e)for(let a in n)a.startsWith("on")&&typeof n[a]=="function"?(t[a]!=null||(t[a]=[]),t[a].push(n[a])):o[a]=n[a];if(o.disabled||o["aria-disabled"])return Object.assign(o,Object.fromEntries(Object.keys(t).map(n=>[n,void 0])));for(let n in t)Object.assign(o,{[n](a,...r){let l=t[n];for(let s of l){if(a instanceof Event&&a.defaultPrevented)return;s(a,...r)}}});return o}function yn(e,o=[]){let t=Object.assign({},e);for(let n of o)n in t&&delete t[n];return t}function _n(e){return e==null?!1:typeof e.type=="string"||typeof e.type=="object"||typeof e.type=="function"}let wn=0;function Sn(){return++wn}function ne(){return Sn()}var V=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(V||{});function b(e){var o;return e==null||e.value==null?null:(o=e.value.$el)!=null?o:e.value}let Re=Symbol("Context");var q=(e=>(e[e.Open=1]="Open",e[e.Closed=2]="Closed",e[e.Closing=4]="Closing",e[e.Opening=8]="Opening",e))(q||{});function Ve(){return pe(Re,null)}function xn(e){fe(Re,e)}function Ae(e,o){if(e)return e;let t=o??"button";if(typeof t=="string"&&t.toLowerCase()==="button")return"button"}function Pn(e,o){let t=E(Ae(e.value.type,e.value.as));return se(()=>{t.value=Ae(e.value.type,e.value.as)}),X(()=>{var n;t.value||!b(o)||b(o)instanceof HTMLButtonElement&&!((n=b(o))!=null&&n.hasAttribute("type"))&&(t.value="button")}),t}class kn{constructor(){this.current=this.detect(),this.currentId=0}set(o){this.current!==o&&(this.currentId=0,this.current=o)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current==="server"}get isClient(){return this.current==="client"}detect(){return typeof window>"u"||typeof document>"u"?"server":"client"}}let ve=new kn;function ie(e){if(ve.isServer)return null;if(e instanceof Node)return e.ownerDocument;if(e!=null&&e.hasOwnProperty("value")){let o=b(e);if(o)return o.ownerDocument}return document}let we=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var j=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(j||{}),ue=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(ue||{}),En=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(En||{});function me(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(we)).sort((o,t)=>Math.sign((o.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var ke=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(ke||{});function Ue(e,o=0){var t;return e===((t=ie(e))==null?void 0:t.body)?!1:H(o,{[0](){return e.matches(we)},[1](){let n=e;for(;n!==null;){if(n.matches(we))return!0;n=n.parentElement}return!1}})}let On=["textarea","input"].join(",");function Tn(e){var o,t;return(t=(o=e?.matches)==null?void 0:o.call(e,On))!=null?t:!1}function Cn(e,o=t=>t){return e.slice().sort((t,n)=>{let a=o(t),r=o(n);if(a===null||r===null)return 0;let l=a.compareDocumentPosition(r);return l&Node.DOCUMENT_POSITION_FOLLOWING?-1:l&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function Y(e,o,{sorted:t=!0,relativeTo:n=null,skipElements:a=[]}={}){var r;let l=(r=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e?.ownerDocument)!=null?r:document,s=Array.isArray(e)?t?Cn(e):e:me(e);a.length>0&&s.length>1&&(s=s.filter(_=>!a.includes(_))),n=n??l.activeElement;let i=(()=>{if(o&5)return 1;if(o&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),c=(()=>{if(o&1)return 0;if(o&2)return Math.max(0,s.indexOf(n))-1;if(o&4)return Math.max(0,s.indexOf(n))+1;if(o&8)return s.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),p=o&32?{preventScroll:!0}:{},v=0,h=s.length,m;do{if(v>=h||v+h<=0)return 0;let _=c+v;if(o&16)_=(_+h)%h;else{if(_<0)return 3;if(_>=h)return 1}m=s[_],m?.focus(p),v+=i}while(m!==l.activeElement);return o&6&&Tn(m)&&m.select(),m.hasAttribute("tabindex")||m.setAttribute("tabindex","0"),2}function be(e,o,t){ve.isServer||X(n=>{document.addEventListener(e,o,t),n(()=>document.removeEventListener(e,o,t))})}function $n(e,o,t=P(()=>!0)){function n(r,l){if(!t.value||r.defaultPrevented)return;let s=l(r);if(s===null||!s.getRootNode().contains(s))return;let i=function c(p){return typeof p=="function"?c(p()):Array.isArray(p)||p instanceof Set?p:[p]}(e);for(let c of i){if(c===null)continue;let p=c instanceof HTMLElement?c:b(c);if(p!=null&&p.contains(s)||r.composed&&r.composedPath().includes(p))return}return!Ue(s,ke.Loose)&&s.tabIndex!==-1&&r.preventDefault(),o(r,s)}let a=E(null);be("mousedown",r=>{var l,s;t.value&&(a.value=((s=(l=r.composedPath)==null?void 0:l.call(r))==null?void 0:s[0])||r.target)},!0),be("click",r=>{!a.value||(n(r,()=>a.value),a.value=null)},!0),be("blur",r=>n(r,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}var ce=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(ce||{});let Se=$({name:"Hidden",props:{as:{type:[Object,String],default:"div"},features:{type:Number,default:1}},setup(e,{slots:o,attrs:t}){return()=>{let{features:n,...a}=e,r={"aria-hidden":(n&2)===2?!0:void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(n&4)===4&&(n&2)!==2&&{display:"none"}}};return ae({ourProps:r,theirProps:a,slot:{},attrs:t,slots:o,name:"Hidden"})}}});function In(e,o,t){ve.isServer||X(n=>{window.addEventListener(e,o,t),n(()=>window.removeEventListener(e,o,t))})}var D=(e=>(e[e.Forwards=0]="Forwards",e[e.Backwards=1]="Backwards",e))(D||{});function ze(){let e=E(0);return In("keydown",o=>{o.key==="Tab"&&(e.value=o.shiftKey?1:0)}),e}function An(e,o,t,n){ve.isServer||X(a=>{e=e??window,e.addEventListener(o,t,n),a(()=>e.removeEventListener(o,t,n))})}var Nn=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Nn||{});let Ge=Symbol("PopoverContext");function he(e){let o=pe(Ge,null);if(o===null){let t=new Error(`<${e} /> is missing a parent <${Je.name} /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,he),t}return o}let We=Symbol("PopoverGroupContext");function Ke(){return pe(We,null)}let Ye=Symbol("PopoverPanelContext");function Mn(){return pe(Ye,null)}let Je=$({name:"Popover",props:{as:{type:[Object,String],default:"div"}},setup(e,{slots:o,attrs:t,expose:n}){var a;let r=E(null);n({el:r,$el:r});let l=E(1),s=E(null),i=E(null),c=E(null),p=E(null),v=P(()=>ie(r)),h=P(()=>{var u,S;if(!b(s)||!b(p))return!1;for(let Z of document.querySelectorAll("body > *"))if(Number(Z?.contains(b(s)))^Number(Z?.contains(b(p))))return!0;let x=me(),O=x.indexOf(b(s)),T=(O+x.length-1)%x.length,R=(O+1)%x.length,F=x[T],Q=x[R];return!((u=b(p))!=null&&u.contains(F))&&!((S=b(p))!=null&&S.contains(Q))}),m={popoverState:l,buttonId:E(null),panelId:E(null),panel:p,button:s,isPortalled:h,beforePanelSentinel:i,afterPanelSentinel:c,togglePopover(){l.value=H(l.value,{[0]:1,[1]:0})},closePopover(){l.value!==1&&(l.value=1)},close(u){m.closePopover();let S=(()=>u?u instanceof HTMLElement?u:u.value instanceof HTMLElement?b(u):b(m.button):b(m.button))();S?.focus()}};fe(Ge,m),xn(P(()=>H(l.value,{[0]:q.Open,[1]:q.Closed})));let _={buttonId:m.buttonId,panelId:m.panelId,close(){m.closePopover()}},g=Ke(),f=g?.registerPopover;function d(){var u,S,x,O;return(O=g?.isFocusWithinPopoverGroup())!=null?O:((u=v.value)==null?void 0:u.activeElement)&&(((S=b(s))==null?void 0:S.contains(v.value.activeElement))||((x=b(p))==null?void 0:x.contains(v.value.activeElement)))}return X(()=>f?.(_)),An((a=v.value)==null?void 0:a.defaultView,"focus",u=>{var S,x;l.value===0&&(d()||!s||!p||u.target!==window&&((S=b(m.beforePanelSentinel))!=null&&S.contains(u.target)||(x=b(m.afterPanelSentinel))!=null&&x.contains(u.target)||m.closePopover()))},!0),$n([s,p],(u,S)=>{var x;m.closePopover(),Ue(S,ke.Loose)||(u.preventDefault(),(x=b(s))==null||x.focus())},P(()=>l.value===0)),()=>{let u={open:l.value===0,close:m.close};return ae({theirProps:e,ourProps:{ref:r},slot:u,slots:o,attrs:t,name:"Popover"})}}}),Fn=$({name:"PopoverButton",props:{as:{type:[Object,String],default:"button"},disabled:{type:[Boolean],default:!1},id:{type:String,default:()=>`headlessui-popover-button-${ne()}`}},inheritAttrs:!1,setup(e,{attrs:o,slots:t,expose:n}){let a=he("PopoverButton"),r=P(()=>ie(a.button));n({el:a.button,$el:a.button}),se(()=>{a.buttonId.value=e.id}),Ne(()=>{a.buttonId.value=null});let l=Ke(),s=l?.closeOthers,i=Mn(),c=P(()=>i===null?!1:i.value===a.panelId.value),p=E(null),v=`headlessui-focus-sentinel-${ne()}`;c.value||X(()=>{a.button.value=p.value});let h=Pn(P(()=>({as:e.as,type:o.type})),p);function m(d){var u,S,x,O,T;if(c.value){if(a.popoverState.value===1)return;switch(d.key){case V.Space:case V.Enter:d.preventDefault(),(S=(u=d.target).click)==null||S.call(u),a.closePopover(),(x=b(a.button))==null||x.focus();break}}else switch(d.key){case V.Space:case V.Enter:d.preventDefault(),d.stopPropagation(),a.popoverState.value===1&&s?.(a.buttonId.value),a.togglePopover();break;case V.Escape:if(a.popoverState.value!==0)return s?.(a.buttonId.value);if(!b(a.button)||(O=r.value)!=null&&O.activeElement&&!((T=b(a.button))!=null&&T.contains(r.value.activeElement)))return;d.preventDefault(),d.stopPropagation(),a.closePopover();break}}function _(d){c.value||d.key===V.Space&&d.preventDefault()}function g(d){var u,S;e.disabled||(c.value?(a.closePopover(),(u=b(a.button))==null||u.focus()):(d.preventDefault(),d.stopPropagation(),a.popoverState.value===1&&s?.(a.buttonId.value),a.togglePopover(),(S=b(a.button))==null||S.focus()))}function f(d){d.preventDefault(),d.stopPropagation()}return()=>{let d=a.popoverState.value===0,u={open:d},{id:S,...x}=e,O=c.value?{ref:p,type:h.value,onKeydown:m,onClick:g}:{ref:p,id:S,type:h.value,"aria-expanded":e.disabled?void 0:a.popoverState.value===0,"aria-controls":b(a.panel)?a.panelId.value:void 0,disabled:e.disabled?!0:void 0,onKeydown:m,onKeyup:_,onClick:g,onMousedown:f},T=ze();function R(){let F=b(a.panel);if(!F)return;function Q(){H(T.value,{[D.Forwards]:()=>Y(F,j.First),[D.Backwards]:()=>Y(F,j.Last)})===ue.Error&&Y(me().filter(Z=>Z.dataset.headlessuiFocusGuard!=="true"),H(T.value,{[D.Forwards]:j.Next,[D.Backwards]:j.Previous}),{relativeTo:b(a.button)})}Q()}return te(M,[ae({ourProps:O,theirProps:{...o,...x},slot:u,attrs:o,slots:t,name:"PopoverButton"}),d&&!c.value&&a.isPortalled.value&&te(Se,{id:v,features:ce.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:R})])}}});$({name:"PopoverOverlay",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0}},setup(e,{attrs:o,slots:t}){let n=he("PopoverOverlay"),a=`headlessui-popover-overlay-${ne()}`,r=Ve(),l=P(()=>r!==null?(r.value&q.Open)===q.Open:n.popoverState.value===0);function s(){n.closePopover()}return()=>{let i={open:n.popoverState.value===0};return ae({ourProps:{id:a,"aria-hidden":!0,onClick:s},theirProps:e,slot:i,attrs:o,slots:t,features:le.RenderStrategy|le.Static,visible:l.value,name:"PopoverOverlay"})}}});let Ln=$({name:"PopoverPanel",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},focus:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-popover-panel-${ne()}`}},inheritAttrs:!1,setup(e,{attrs:o,slots:t,expose:n}){let{focus:a}=e,r=he("PopoverPanel"),l=P(()=>ie(r.panel)),s=`headlessui-focus-sentinel-before-${ne()}`,i=`headlessui-focus-sentinel-after-${ne()}`;n({el:r.panel,$el:r.panel}),se(()=>{r.panelId.value=e.id}),Ne(()=>{r.panelId.value=null}),fe(Ye,r.panelId),X(()=>{var f,d;if(!a||r.popoverState.value!==0||!r.panel)return;let u=(f=l.value)==null?void 0:f.activeElement;(d=b(r.panel))!=null&&d.contains(u)||Y(b(r.panel),j.First)});let c=Ve(),p=P(()=>c!==null?(c.value&q.Open)===q.Open:r.popoverState.value===0);function v(f){var d,u;switch(f.key){case V.Escape:if(r.popoverState.value!==0||!b(r.panel)||l.value&&!((d=b(r.panel))!=null&&d.contains(l.value.activeElement)))return;f.preventDefault(),f.stopPropagation(),r.closePopover(),(u=b(r.button))==null||u.focus();break}}function h(f){var d,u,S,x,O;let T=f.relatedTarget;!T||!b(r.panel)||(d=b(r.panel))!=null&&d.contains(T)||(r.closePopover(),((S=(u=b(r.beforePanelSentinel))==null?void 0:u.contains)!=null&&S.call(u,T)||(O=(x=b(r.afterPanelSentinel))==null?void 0:x.contains)!=null&&O.call(x,T))&&T.focus({preventScroll:!0}))}let m=ze();function _(){let f=b(r.panel);if(!f)return;function d(){H(m.value,{[D.Forwards]:()=>{var u;Y(f,j.First)===ue.Error&&((u=b(r.afterPanelSentinel))==null||u.focus())},[D.Backwards]:()=>{var u;(u=b(r.button))==null||u.focus({preventScroll:!0})}})}d()}function g(){let f=b(r.panel);if(!f)return;function d(){H(m.value,{[D.Forwards]:()=>{let u=b(r.button),S=b(r.panel);if(!u)return;let x=me(),O=x.indexOf(u),T=x.slice(0,O+1),R=[...x.slice(O+1),...T];for(let F of R.slice())if(F.dataset.headlessuiFocusGuard==="true"||S?.contains(F)){let Q=R.indexOf(F);Q!==-1&&R.splice(Q,1)}Y(R,j.First,{sorted:!1})},[D.Backwards]:()=>{var u;Y(f,j.Previous)===ue.Error&&((u=b(r.button))==null||u.focus())}})}d()}return()=>{let f={open:r.popoverState.value===0,close:r.close},{id:d,focus:u,...S}=e,x={ref:r.panel,id:d,onKeydown:v,onFocusout:a&&r.popoverState.value===0?h:void 0,tabIndex:-1};return ae({ourProps:x,theirProps:{...o,...S},attrs:o,slot:f,slots:{...t,default:(...O)=>{var T;return[te(M,[p.value&&r.isPortalled.value&&te(Se,{id:s,ref:r.beforePanelSentinel,features:ce.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:_}),(T=t.default)==null?void 0:T.call(t,...O),p.value&&r.isPortalled.value&&te(Se,{id:i,ref:r.afterPanelSentinel,features:ce.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:g})])]}},features:le.RenderStrategy|le.Static,visible:p.value,name:"PopoverPanel"})}}});$({name:"PopoverGroup",props:{as:{type:[Object,String],default:"div"}},setup(e,{attrs:o,slots:t,expose:n}){let a=E(null),r=rt([]),l=P(()=>ie(a));n({el:a,$el:a});function s(v){let h=r.value.indexOf(v);h!==-1&&r.value.splice(h,1)}function i(v){return r.value.push(v),()=>{s(v)}}function c(){var v;let h=l.value;if(!h)return!1;let m=h.activeElement;return(v=b(a))!=null&&v.contains(m)?!0:r.value.some(_=>{var g,f;return((g=h.getElementById(_.buttonId.value))==null?void 0:g.contains(m))||((f=h.getElementById(_.panelId.value))==null?void 0:f.contains(m))})}function p(v){for(let h of r.value)h.buttonId.value!==v&&h.close()}return fe(We,{registerPopover:i,unregisterPopover:s,isFocusWithinPopoverGroup:c,closeOthers:p}),()=>ae({ourProps:{ref:a},theirProps:e,slot:{},attrs:o,slots:t,name:"PopoverGroup"})}});const jn=e=>{const o=P(()=>e.categoryTree.pictures?.[0]),t=P(()=>e.categoryTree.subcategories.filter(({subcategories:i})=>i.length)),n=P(()=>{let i=t.value.length;return o.value&&(i+=1),t.value.length<e.categoryTree.subcategories.length&&(i+=1),i}),a=P(()=>(e.megaMenuMaxCols||7)>=n.value),r=P(()=>a.value?e.categoryTree.subcategories.filter(({subcategories:i})=>!i.length):e.categoryTree.subcategories),l=P(()=>a.value?e.categoryTree.subcategories.filter(({subcategories:i})=>i.length):e.categoryTree.subcategories),s=P(()=>a.value?n.value:o.value?2:1);return{categoryPicture:o,isMegaMenu:a,subcategoryLinks:r,subcategoryCols:l,countMenuCols:s}},Dn=$({__name:"ShopHeaderSubmenu",props:{categoryTree:null},setup(e,{expose:o}){o();const t=e,{categoryPicture:n,subcategoryLinks:a,subcategoryCols:r,countMenuCols:l}=jn(t),s={props:t,categoryPicture:n,subcategoryLinks:a,subcategoryCols:r,countMenuCols:l,get Popover(){return Je},get PopoverButton(){return Fn},get PopoverPanel(){return Ln}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),Bn={class:"relative"},Hn={class:"flex gap-6 w-full"},Rn={key:0,class:"flex-1"},Vn=["href"],Un=["href"],zn={class:"text-sm text-base-600 mt-1 mb-1.5"},Gn=["href"],Wn=["src","alt"],Kn=["href"];function Yn(e,o,t,n,a,r){const l=de("Fade");return w(),z(n.Popover,null,{default:L(({open:s})=>[B(n.PopoverButton,{class:"outline-none"},{default:L(()=>[oe(e.$slots,"button",lt(st({open:s})))]),_:2},1024),y("div",Bn,[B(l,null,{default:L(()=>[B(n.PopoverPanel,{class:C(["absolute z-20 top-3 left-1/2 -translate-x-1/2 !transform px-6 py-4 rounded-md shadow bg-white text-base text-base-700",n.countMenuCols===1?"w-60":n.countMenuCols===2?`w-screen ${n.categoryPicture?"max-w-lg":"max-w-sm"}`:n.countMenuCols===3?`w-screen ${n.categoryPicture?"max-w-xl":"max-w-md"}`:n.countMenuCols<6?"w-screen max-w-3xl":"w-screen max-w-5xl"])},{default:L(()=>[y("div",Hn,[n.subcategoryLinks.length?(w(),k("ul",Rn,[(w(!0),k(M,null,J(n.subcategoryLinks,(i,c)=>(w(),k("li",{key:`link-${c}`,class:C(n.subcategoryLinks.length>10?"text-sm mb-1":"mb-2")},[y("a",{href:`/${i.slug}`,class:"hover:text-primary"},[y("h3",null,I(i.name),1)],8,Vn)],2))),128))])):U("",!0),(w(!0),k(M,null,J(n.subcategoryCols,(i,c)=>(w(),k("div",{key:i._id,class:"flex-1"},[y("a",{href:`/${i.slug}`,class:"hover:text-primary"},[y("h3",null,I(i.name),1)],8,Un),y("ul",zn,[(w(!0),k(M,null,J(i.subcategories,(p,v)=>(w(),k("li",{key:`${c}-${v}`,class:"mb-0.5"},[y("a",{href:`/${p.slug}`,class:"hover:text-primary hover:underline"},[y("h3",null,I(p.name),1)],8,Gn)]))),128))])]))),128)),n.categoryPicture?(w(),k("div",{key:1,class:C(n.countMenuCols===2?"basis-1/2":n.countMenuCols<5?"basis-2/5":"basis-1/3")},[y("img",{loading:"lazy",src:n.categoryPicture.url,alt:n.categoryPicture.alt||t.categoryTree.name,class:"ml-auto rounded"},null,8,Wn)],2)):U("",!0)]),y("a",{href:`/${t.categoryTree.slug}`,class:"block mt-1 text-xs text-base-600 leading-snug underline"},I("Ver toda a categoria $1".replace("$1",t.categoryTree.name)),9,Kn)]),_:1},8,["class"])]),_:1})])]),_:3})}const Jn=G(Dn,[["render",Yn]]),qn=$({__name:"ShopHeaderMenu",props:{inlineMenuTrees:null},setup(e,{expose:o}){o();const t={ShopHeaderSubmenu:Jn};return Object.defineProperty(t,"__isScriptSetup",{enumerable:!1,value:!0}),t}}),Xn={class:"hover:text-primary group"},Qn=["href"],Zn={class:"inline"};function eo(e,o,t,n,a,r){return w(),k("nav",null,[y("ul",{class:C(["flex gap-4 xl:gap-5 text-base-700",t.inlineMenuTrees.length<7?"text-base":"text-sm"])},[(w(!0),k(M,null,J(t.inlineMenuTrees,(l,s)=>(w(),k("li",{key:s},[l.subcategories.length?(w(),z(n.ShopHeaderSubmenu,{key:0,"category-tree":l},{button:L(({open:i})=>[y("span",Xn,[y("h3",{class:C(["group-hover:underline inline",[t.inlineMenuTrees.length<7?"decoration-2":null,i?"underline":null]])},I(l.name),3),y("i",{class:C(["text-base-400 group-hover:text-primary-subtle ml-1",i?"i-chevron-up":"i-chevron-down"])},null,2)])]),_:2},1032,["category-tree"])):(w(),k("a",{key:1,href:`/${l.slug}`,class:"hover:text-primary hover:underline decoration-2"},[y("h3",Zn,I(l.name),1)],8,Qn))]))),128))],2)])}const to=G(qn,[["render",eo]]),no=$({__name:"ShopHeader",props:{categories:null,menuCategorySlugs:null,menuRandomCategories:null,isAlphabeticalSortSubmenu:{type:Boolean}},setup(e,{expose:o}){o();const t=e,n=E(null),{isSticky:a,positionY:r,categoryTrees:l,inlineMenuTrees:s,isSidenavOpen:i}=bt({...t,header:n}),c={props:t,header:n,isSticky:a,positionY:r,categoryTrees:l,inlineMenuTrees:s,isSidenavOpen:i,Drawer:Et,ShopSidenav:gn,ShopHeaderMenu:to};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}}),oo={class:"container lg:max-w-7xl mx-auto px-1 lg:pl-3 grid grid-flow-col grid-cols-3 justify-between items-center lg:grid-cols-none lg:auto-cols-max"},ao={class:"lg:hidden"},ro=ut('<div class="px-2 flex justify-end items-center gap-3 lg:gap-4 text-base-800"><button aria-label="Buscar produtos"><i class="i-search w-7 h-7 hover:text-primary hover:scale-110 active:scale-125"></i></button><button class="hidden sm:block" aria-label="Minha conta"><i class="i-account w-7 h-7 hover:text-primary hover:scale-110 active:scale-125"></i></button><button aria-label="Abrir carrinho"><i class="i-shopping-cart w-7 h-7 hover:text-primary hover:scale-110 active:scale-125"></i></button></div>',1);function lo(e,o,t,n,a,r){return w(),k("header",{ref:"header",class:C(["top-0 z-50 transition-colors",[n.isSticky&&!n.isSidenavOpen?"bg-white/80":"bg-white",n.isSticky?"backdrop-blur-md shadow py-2 md:py-3":"py-3 sm:py-4 md:py-5"]])},[y("div",oo,[y("div",ao,[y("button",{class:"px-2 my-1","aria-label":"Abrir/fechar menu",onClick:o[0]||(o[0]=l=>n.isSidenavOpen=!n.isSidenavOpen)},[y("i",{class:C(["text-base-500 text-3xl",n.isSidenavOpen?"i-close":"i-menu"])},null,2)])]),oe(e.$slots,"logo"),B(n.ShopHeaderMenu,Oe({class:"hidden lg:block"},{inlineMenuTrees:n.inlineMenuTrees}),null,16),ro]),B(n.Drawer,{modelValue:n.isSidenavOpen,"onUpdate:modelValue":o[1]||(o[1]=l=>n.isSidenavOpen=l),"has-close-button":!1,position:"absolute",class:"mt-3 -z-1",style:it({height:`calc(100vh - ${n.positionY}px + .5rem)`})},{default:L(()=>[B(n.ShopSidenav,Oe({class:"bg-white pt-6"},{categoryTrees:n.categoryTrees}),null,16)]),_:1},8,["modelValue","style"])],2)}const vo=G(no,[["render",lo]]);export{vo as default};
@@ -1 +0,0 @@
1
- import{T as L,u as C,c as P,a as B}from"./runtime-dom.esm-bundler.cb4db78a.js";/* empty css */import{aa as O,i as j,d as _,_ as $,c as a,k as x,w as H,o as A,p as E,$ as c,a as z,G as p}from"./_plugin-vue_export-helper.43eaff51.js";import{f as W}from"./format-money.060d67ef.js";const T=(t,r=j.get("lang"))=>{if(typeof t=="object"&&t!==null){const e=Object.keys(t)[0];if(/^[a-z]{2}(_[a-z]{2})?$/.test(e))return t[r]||t[O]||t[e];{const s=Array.isArray(t)?[]:{};for(const o in t)t[o]!==void 0&&(s[o]=T(t[o],r));return s}}return t},q=T,D=_({__name:"Fade",props:{speed:{default:"default"},slide:null,isFloating:{type:Boolean,default:!1},isLeaveTo:{type:Boolean,default:!0},isEnterFrom:{type:Boolean,default:!0}},setup(t,{expose:r}){r();const e=t;C(n=>({"68e3b484":c(F),"17a22876":c(s),bc2eb02a:c(f),da7ab968:c(d),43026547:c(y),"6e5955a6":c(w),"6f10697b":c(i),"95ff7e48":c(v)}));const s=a(()=>e.speed==="default"?"var(--transition, .2s linear)":`var(--transition-${e.speed}, .4s linear)`),o=a(()=>{switch(e.slide){case"down":return"translate3d(0, -100%, 0)";case"left":return"translate3d(-100%, 0, 0)";case"right":return"translate3d(100%, 0, 0)";case"up":return"translate3d(0, 100%, 0)";default:return"none"}}),u=a(()=>o.value!=="none"?.1:0),f=a(()=>e.isEnterFrom?u.value:1),i=a(()=>e.isLeaveTo?u.value:1),d=a(()=>e.isEnterFrom?o.value:"none"),v=a(()=>e.isLeaveTo?o.value:"none"),l=a(()=>e.slide==="down"||e.slide==="up"),g=a(()=>e.isFloating?null:l.value?0:"auto"),m=a(()=>e.isFloating?null:e.slide&&!l.value?0:"auto"),y=a(()=>e.isEnterFrom?g.value:"auto"),w=a(()=>e.isEnterFrom?m.value:"auto"),F=a(()=>{let n="opacity";return o.value!=="none"&&(n+=", transform"),g.value===0&&(n+=", height"),m.value===0&&(n+=", width"),n}),b={props:e,duration:s,transform:o,opacity:u,enterFromOpacity:f,leaveToOpacity:i,enterFromTransform:d,leaveToTransform:v,isSlideY:l,height:g,width:m,enterFromHeight:y,enterFromWidth:w,willChange:F,onEnter:n=>{if(e.slide&&!e.isFloating&&e.isEnterFrom){l.value?(n.style.width=getComputedStyle(n).width,n.style.height="auto"):(n.style.width="auto",n.style.height=getComputedStyle(n).height),n.style.position="absolute",n.style.visibility="hidden";const{width:h,height:k}=getComputedStyle(n);n.style.width=l.value?null:"0",n.style.height=l.value?"0":null,n.style.position=null,n.style.visibility=null,getComputedStyle(n)[l.value?"height":"width"],requestAnimationFrame(()=>{l.value?n.style.height=k:n.style.width=h})}},onAfterEnter:n=>{e.slide&&!e.isFloating&&e.isEnterFrom&&(n.style[l.value?"height":"width"]=null)},onLeave:n=>{if(e.slide&&!e.isFloating&&e.isLeaveTo){l.value?n.style.height=getComputedStyle(n).height:n.style.width=getComputedStyle(n).width;const h=l.value?"height":"width";getComputedStyle(n)[h],requestAnimationFrame(()=>{n.style[h]="0"})}}};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}});function G(t,r,e,s,o,u){return A(),x(L,{name:"sf-fade",onEnter:s.onEnter,onAfterEnter:s.onAfterEnter,onLeave:s.onLeave},{default:H(()=>[E(t.$slots,"default",{},void 0,!0)]),_:3})}const I=$(D,[["render",G],["__scopeId","data-v-d3912920"]]),M=_({__name:"ALink",props:{href:null,target:null},setup(t,{expose:r}){r();const e=t,s=a(()=>{if(e.target)return e.target;if(e.href.startsWith("http")){const u=globalThis.storefront.settings.domain||window.location.host;if(e.href.startsWith(`https://${u}`))return null}return"_blank"}),o={props:e,linkTarget:s};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),N=["href","target","rel"];function R(t,r,e,s,o,u){return A(),z("a",{href:e.href,target:s.linkTarget,rel:s.linkTarget==="_blank"?"noopener":null},[E(t.$slots,"default")],8,N)}const U=$(M,[["render",R]]),V=(t,r=1)=>Number.isInteger(t)?`${t}%`:`${t.toFixed(r)}%`,S=t=>{t.use({install:(r,e)=>{r.config.globalProperties.$t=(s,o)=>q(s,o||e?.lang),r.config.globalProperties.$money=W,r.config.globalProperties.$percentage=V}}),t.component("Fade",I),t.component("ALink",U)},Y=_({props:{value:String,name:String},setup({name:t,value:r}){return r?()=>p("astro-slot",{name:t,innerHTML:r}):()=>null}}),ne=t=>async(r,e,s,{client:o})=>{if(delete e.class,!t.hasAttribute("ssr"))return;const u=r.name?`${r.name} Host`:void 0,f={};for(const[i,d]of Object.entries(s))f[i]=()=>p(Y,{value:d,name:i==="default"?void 0:i});if(o==="only"){const i=P({name:u,render:()=>p(r,e,f)});await S(i),i.mount(t,!1)}else{const i=B({name:u,render:()=>p(r,e,f)});await S(i),i.mount(t,!0)}};export{ne as default};
@@ -1,79 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="pt-br">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width">
6
- <meta name="theme-color" content="#137c5c">
7
- <link rel="icon" href="/_image?f=png&#38;w=32&#38;h=32&#38;href=%2Fimg%2Fuploads%2Flarge-icon.png&#38;V=_">
8
- <title>My Shop</title>
9
- <meta name="description" content="My PWA Shop">
10
- <meta name="author" content="My Shop">
11
- <meta name="generator" content="Astro v2.0.14">
12
- <link rel="canonical" href="https://ecom2-002.web.app/fallback/">
13
- <link rel="apple-touch-icon" href="/img/uploads/large-icon.png">
14
- <meta name="apple-mobile-web-app-capable" content="yes">
15
- <meta name="apple-mobile-web-app-status-bar-style" content="default">
16
- <meta property="og:site_name" content="My Shop">
17
- <meta property="og:url" content="https://ecom2-002.web.app/fallback/">
18
- <meta property="og:title" content="My Shop">
19
- <meta property="og:description" content="My PWA Shop">
20
- <meta property="og:type" content="website">
21
- <meta property="og:locale" content="ptBR">
22
-
23
-
24
- <meta name="twitter:card" content="summary">
25
-
26
- <meta name="ecom-store-id" content="1011">
27
-
28
-
29
- <script>
30
- window.ECOM_STORE_ID = 1011;
31
- window.ECOM_LANG = 'pt_br';
32
- window.ECOM_CURRENCY = 'BRL';
33
- window.ECOM_CURRENCY_SYMBOL = 'R$';
34
- window.ECOM_COUNTRY_CODE = 'R$';
35
- window.storefront = {"settings":{"domain":"ecom2-002.web.app","name":"My Shop","description":"My PWA Shop","logo":"/img/uploads/logo.webp","icon":"/img/uploads/large-icon.png","primary_color":"#137c5c","email":"","phone":"","address":"","corporate_name":"","doc_number":"","lang":"pt_br","currency":"BRL","currency_symbol":"R$","country_code":"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":"","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":150}}}};</script>
36
- <script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","name":"My Shop","url":"https://ecom2-002.web.app/","logo":"https://ecom2-002.web.app/img/uploads/logo.webp"}</script>
37
-
38
-
39
-
40
- <script>
41
- window.firebaseConfig = {
42
- apiKey: 'AIzaSyCrVzemDgpyp9i6ni7Yc5ZuEVfXYwl-4J0',
43
- authDomain: 'ecom2-002.firebaseapp.com',
44
- projectId: 'ecom2-002',
45
- storageBucket: 'ecom2-002.appspot.com',
46
- messagingSenderId: '402807248219',
47
- appId: '1:402807248219:web:cf7d57759751e74776367e',
48
- measurementId: 'G-SC592CE0GB',
49
- };
50
- </script>
51
- <link rel="stylesheet" href="/_astro/_...slug_.a594715c.css" /><script type="module" src="/_astro/hoisted.721ad75d.js"></script></head>
52
- <body>
53
- <div id="teleported-overlap" class="relative z-50"></div>
54
- <div id="teleported-top" class="relative z-0"></div>
55
- <style>astro-island,astro-slot{display:contents}</style><script>(self.Astro=self.Astro||{}).idle=t=>{const e=async()=>{await(await t())()};"requestIdleCallback"in window?window.requestIdleCallback(e):setTimeout(e,200)},window.dispatchEvent(new Event("astro:idle"));var l;{const c={0:t=>t,1:t=>JSON.parse(t,o),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(JSON.parse(t,o)),5:t=>new Set(JSON.parse(t,o)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(JSON.parse(t)),9:t=>new Uint16Array(JSON.parse(t)),10:t=>new Uint32Array(JSON.parse(t))},o=(t,s)=>{if(t===""||!Array.isArray(s))return s;const[e,n]=s;return e in c?c[e](n):void 0};customElements.get("astro-island")||customElements.define("astro-island",(l=class extends HTMLElement{constructor(){super(...arguments);this.hydrate=()=>{if(!this.hydrator||this.parentElement&&this.parentElement.closest("astro-island[ssr]"))return;const s=this.querySelectorAll("astro-slot"),e={},n=this.querySelectorAll("template[data-astro-template]");for(const r of n){const i=r.closest(this.tagName);!i||!i.isSameNode(this)||(e[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(const r of s){const i=r.closest(this.tagName);!i||!i.isSameNode(this)||(e[r.getAttribute("name")||"default"]=r.innerHTML)}const a=this.hasAttribute("props")?JSON.parse(this.getAttribute("props"),o):{};this.hydrator(this)(this.Component,a,e,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),window.removeEventListener("astro:hydrate",this.hydrate),window.dispatchEvent(new CustomEvent("astro:hydrate"))}}connectedCallback(){!this.hasAttribute("await-children")||this.firstChild?this.childrenConnectedCallback():new MutationObserver((s,e)=>{e.disconnect(),this.childrenConnectedCallback()}).observe(this,{childList:!0})}async childrenConnectedCallback(){window.addEventListener("astro:hydrate",this.hydrate);let s=this.getAttribute("before-hydration-url");s&&await import(s),this.start()}start(){const s=JSON.parse(this.getAttribute("opts")),e=this.getAttribute("client");if(Astro[e]===void 0){window.addEventListener(`astro:${e}`,()=>this.start(),{once:!0});return}Astro[e](async()=>{const n=this.getAttribute("renderer-url"),[a,{default:r}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),i=this.getAttribute("component-export")||"default";if(!i.includes("."))this.Component=a[i];else{this.Component=a;for(const d of i.split("."))this.Component=this.Component[d]}return this.hydrator=r,this.hydrate},s,this)}attributeChangedCallback(){this.hydrator&&this.hydrate()}},l.observedAttributes=["props"],l))}</script><script>(self.Astro=self.Astro||{}).load=a=>{(async()=>await(await a())())()},window.dispatchEvent(new Event("astro:load"));</script>
56
-
57
- <astro-island uid="27Suhl" component-url="/_astro/PitchBar.5ced676e.js" component-export="default" renderer-url="/_astro/client.79615b8a.js" props="{&quot;slides&quot;:[1,&quot;[[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;]}]]&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;PitchBar&quot;,&quot;value&quot;:true}" await-children=""><div class="bg-base-100 relative z-1"><div class="container md:w-2/3 mx-auto px-3 py-1"><div data-carousel><ul data-carousel-wrapper><!--[--><!--[--><li><a href="/promotion" target="_blank" rel="noopener" class="inline-block px-8 hover:underline"><!--[--><span class="prose text-sm text-base-800">Aproveite nossos descontos de até 50%!</span><!--]--></a></li><li><span href class="inline-block px-8"><span class="prose text-sm text-base-800"><b>Frete grátis</b> <d-md>para todo Brasil</d-md> a partir de R$ 150,00</span></span></li><!--]--><!--]--></ul><!--[--><div style="" class="text-xl leading-none text-base-400"><button type="button" aria-label="Anterior" data-carousel-control="previous" class="pr-2 bg-base-100 hover:text-base-700"><!--[--><i class="i-chevron-left m-0"></i><!--]--></button><button type="button" aria-label="Próximo" data-carousel-control="next" class="pl-2 bg-base-100 hover:text-base-700"><!--[--><i class="i-chevron-right m-0"></i><!--]--></button></div><!--]--></div></div></div></astro-island>
58
-
59
-
60
- <astro-island uid="Upz6q" component-url="/_astro/ShopHeader.05d64cc8.js" component-export="default" renderer-url="/_astro/client.79615b8a.js" props="{&quot;categories&quot;:[1,&quot;[[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa18c626be23430d4f4e\&quot;],\&quot;name\&quot;:[0,\&quot;Monitores\&quot;],\&quot;slug\&quot;:[0,\&quot;monitores\&quot;],\&quot;icon\&quot;:[0,{\&quot;url\&quot;:[0,\&quot;https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007322374-rect836.png\&quot;]}]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa2ac626be23430d4f50\&quot;],\&quot;name\&quot;:[0,\&quot;Monitores Gamer\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa18c626be23430d4f4e\&quot;],\&quot;name\&quot;:[0,\&quot;Monitores\&quot;],\&quot;slug\&quot;:[0,\&quot;monitores\&quot;]}],\&quot;slug\&quot;:[0,\&quot;monitores-gamer\&quot;],\&quot;pictures\&quot;:[1,\&quot;[]\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa45c626be23430d4f52\&quot;],\&quot;name\&quot;:[0,\&quot;Monitores Convencionais\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa18c626be23430d4f4e\&quot;],\&quot;name\&quot;:[0,\&quot;Monitores\&quot;],\&quot;slug\&quot;:[0,\&quot;monitores\&quot;]}],\&quot;slug\&quot;:[0,\&quot;monitores-convencionais\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa5bc626be23430d4f54\&quot;],\&quot;name\&quot;:[0,\&quot;Monitores TV\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa18c626be23430d4f4e\&quot;],\&quot;name\&quot;:[0,\&quot;Monitores\&quot;],\&quot;slug\&quot;:[0,\&quot;monitores\&quot;]}],\&quot;slug\&quot;:[0,\&quot;monitores-tv\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa6ec626be23430d4f56\&quot;],\&quot;name\&quot;:[0,\&quot;Notebooks\&quot;],\&quot;slug\&quot;:[0,\&quot;notebooks\&quot;],\&quot;icon\&quot;:[0,{\&quot;url\&quot;:[0,\&quot;https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007351112-comp.png\&quot;]}]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa8cc626be23430d4f58\&quot;],\&quot;name\&quot;:[0,\&quot;Notebooks gamers\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa6ec626be23430d4f56\&quot;],\&quot;name\&quot;:[0,\&quot;Notebooks\&quot;],\&quot;slug\&quot;:[0,\&quot;notebooks\&quot;]}],\&quot;slug\&quot;:[0,\&quot;notebooks-gamers\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffab6c626be23430d4f5c\&quot;],\&quot;name\&quot;:[0,\&quot;MacBook\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5d5714045753286eadbbdc77\&quot;],\&quot;name\&quot;:[0,\&quot;Ultrabook\&quot;],\&quot;slug\&quot;:[0,\&quot;ultrabook\&quot;]}],\&quot;slug\&quot;:[0,\&quot;macbook\&quot;],\&quot;icon\&quot;:[0,{\&quot;url\&quot;:[0,\&quot;https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1566932713325-macbook.jfif\&quot;],\&quot;size\&quot;:[0,\&quot;233x216\&quot;],\&quot;alt\&quot;:[0,\&quot;macbook\&quot;]}],\&quot;pictures\&quot;:[1,\&quot;[[0,{}]]\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c7009bec626be23430d4f80\&quot;],\&quot;name\&quot;:[0,\&quot;Periféricos\&quot;],\&quot;slug\&quot;:[0,\&quot;perifericos\&quot;],\&quot;icon\&quot;:[0,{\&quot;url\&quot;:[0,\&quot;https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007328003-keyb.png\&quot;]}],\&quot;pictures\&quot;:[1,\&quot;[]\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c701cb1c626be23430d4fe9\&quot;],\&quot;name\&quot;:[0,\&quot;Físicos\&quot;],\&quot;slug\&quot;:[0,\&quot;fisicos\&quot;]}]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c7009fdc626be23430d4f82\&quot;],\&quot;name\&quot;:[0,\&quot;Teclados\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c7009bec626be23430d4f80\&quot;],\&quot;name\&quot;:[0,\&quot;Periféricos\&quot;],\&quot;slug\&quot;:[0,\&quot;perifericos\&quot;]}],\&quot;slug\&quot;:[0,\&quot;teclados\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c700a11c626be23430d4f84\&quot;],\&quot;name\&quot;:[0,\&quot;Mouses\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c7009bec626be23430d4f80\&quot;],\&quot;name\&quot;:[0,\&quot;Periféricos\&quot;],\&quot;slug\&quot;:[0,\&quot;perifericos\&quot;]}],\&quot;slug\&quot;:[0,\&quot;mouses\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c700a37c626be23430d4f86\&quot;],\&quot;name\&quot;:[0,\&quot;Caixas de Som\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c7009bec626be23430d4f80\&quot;],\&quot;name\&quot;:[0,\&quot;Periféricos\&quot;],\&quot;slug\&quot;:[0,\&quot;perifericos\&quot;]}],\&quot;slug\&quot;:[0,\&quot;caixas-de-som\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c700a53c626be23430d4f88\&quot;],\&quot;name\&quot;:[0,\&quot;Headset\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c7009bec626be23430d4f80\&quot;],\&quot;name\&quot;:[0,\&quot;Periféricos\&quot;],\&quot;slug\&quot;:[0,\&quot;perifericos\&quot;]}],\&quot;slug\&quot;:[0,\&quot;headset\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c700a6bc626be23430d4f8a\&quot;],\&quot;name\&quot;:[0,\&quot;Cadeira Gamer\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c7009bec626be23430d4f80\&quot;],\&quot;name\&quot;:[0,\&quot;Periféricos\&quot;],\&quot;slug\&quot;:[0,\&quot;perifericos\&quot;]}],\&quot;slug\&quot;:[0,\&quot;cadeira-gamer\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c700a9cc626be23430d4f8c\&quot;],\&quot;name\&quot;:[0,\&quot;Smartphones\&quot;],\&quot;slug\&quot;:[0,\&quot;smartphones\&quot;],\&quot;icon\&quot;:[0,{\&quot;url\&quot;:[0,\&quot;https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007321218-smartphone.png\&quot;]}]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c701c9ec626be23430d4fe7\&quot;],\&quot;name\&quot;:[0,\&quot;Jogo\&quot;],\&quot;slug\&quot;:[0,\&quot;jogos/\&quot;],\&quot;icon\&quot;:[0,{\&quot;url\&quot;:[0,\&quot;https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007332353-game.png\&quot;]}],\&quot;pictures\&quot;:[1,\&quot;[]\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c701cb1c626be23430d4fe9\&quot;],\&quot;name\&quot;:[0,\&quot;Físicos\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c701c9ec626be23430d4fe7\&quot;],\&quot;name\&quot;:[0,\&quot;Jogo\&quot;],\&quot;slug\&quot;:[0,\&quot;jogos/\&quot;]}],\&quot;slug\&quot;:[0,\&quot;fisicos\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c701cc6c626be23430d4feb\&quot;],\&quot;name\&quot;:[0,\&quot;Digitais\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c701c9ec626be23430d4fe7\&quot;],\&quot;name\&quot;:[0,\&quot;Jogo\&quot;],\&quot;slug\&quot;:[0,\&quot;jogos/\&quot;]}],\&quot;slug\&quot;:[0,\&quot;digitais\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5c701ce2c626be23430d4fed\&quot;],\&quot;name\&quot;:[0,\&quot;Usados\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c701c9ec626be23430d4fe7\&quot;],\&quot;name\&quot;:[0,\&quot;Jogo\&quot;],\&quot;slug\&quot;:[0,\&quot;jogos/\&quot;]}],\&quot;slug\&quot;:[0,\&quot;usados\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5ceecb3f887ef430f1f70c88\&quot;],\&quot;name\&quot;:[0,\&quot;Promoções\&quot;],\&quot;slug\&quot;:[0,\&quot;promocoes\&quot;],\&quot;icon\&quot;:[0,{\&quot;url\&quot;:[0,\&quot;https://ecom-jvxboxzk.sfo2.digitaloceanspaces.com/@1567007326827-mony.png\&quot;]}],\&quot;pictures\&quot;:[1,\&quot;[[0,{}]]\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5d5714045753286eadbbdc77\&quot;],\&quot;name\&quot;:[0,\&quot;Ultrabook\&quot;],\&quot;parent\&quot;:[0,{\&quot;_id\&quot;:[0,\&quot;5c6ffa6ec626be23430d4f56\&quot;],\&quot;name\&quot;:[0,\&quot;Notebooks\&quot;],\&quot;slug\&quot;:[0,\&quot;notebooks\&quot;]}],\&quot;slug\&quot;:[0,\&quot;ultrabook\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5f70f1417430f92180f5ba66\&quot;],\&quot;name\&quot;:[0,\&quot;Brasileiro\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;5fb2b13b69274c73fcd6a051\&quot;],\&quot;name\&quot;:[0,\&quot;smartwatch\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;60199592d6981740b4a030f4\&quot;],\&quot;name\&quot;:[0,\&quot;São Paulo\&quot;],\&quot;slug\&quot;:[0,\&quot;sao-paulo\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;61de099d0c7c72722502397b\&quot;],\&quot;name\&quot;:[0,\&quot;MacBook Pro\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;61de12450c7c727225025299\&quot;],\&quot;name\&quot;:[0,\&quot;Mac Stop\&quot;]}],[0,{\&quot;_id\&quot;:[0,\&quot;6227a90a7963422eee367aaa\&quot;],\&quot;name\&quot;:[0,\&quot;capinhas\&quot;]}]]&quot;],&quot;menuCategorySlugs&quot;:[1,&quot;[]&quot;],&quot;menuRandomCategories&quot;:[0,7],&quot;isAlphabeticalSortSubmenu&quot;:[0,false]}" ssr="" client="load" opts="{&quot;name&quot;:&quot;ShopHeader&quot;,&quot;value&quot;:true}" await-children=""><header class="top-0 z-50 transition-colors bg-white py-3 sm:py-4 md:py-5"><div class="container lg:max-w-7xl mx-auto px-1 lg:pl-3 grid grid-flow-col grid-cols-3 justify-between items-center lg:grid-cols-none lg:auto-cols-max"><div class="lg:hidden"><button class="px-2 my-1" aria-label="Abrir/fechar menu"><i class="i-menu text-base-500 text-3xl"></i></button></div><!--[--><astro-slot name="logo">
61
- <a href="/">
62
- <h2><picture>
63
- <source type="image/avif" srcset="/_image?f=avif&#38;w=300&#38;h=117&#38;ar=2.570281124497992&#38;href=%2Fimg%2Fuploads%2Flogo.webp 300w" sizes="150px"><source type="image/webp" srcset="/_image?f=webp&#38;w=300&#38;h=117&#38;ar=2.570281124497992&#38;href=%2Fimg%2Fuploads%2Flogo.webp 300w" sizes="150px">
64
- <img alt="My Shop" src="/_image?f=webp&#38;w=300&#38;h=117&#38;ar=2.570281124497992&#38;href=%2Fimg%2Fuploads%2Flogo.webp" loading="lazy" decoding="async" slot="logo-picture" fetchpriority="high" class="hover:drop-shadow-sm">
65
- </picture></h2>
66
- </a>
67
- </astro-slot><!--]--><nav class="hidden lg:block"><ul class="text-base flex gap-4 xl:gap-5 text-base-700"><!--[--><li><div data-headlessui-state><!--[--><button class="outline-none" id="headlessui-popover-button-1" type="button" aria-expanded="false" data-headlessui-state><!--[--><span class="hover:text-primary group"><h3 class="group-hover:underline inline decoration-2">Monitores</h3><i class="text-base-400 group-hover:text-primary-subtle ml-1 i-chevron-down"></i></span><!--]--></button><!----><!--]--><div class="relative"><!----></div></div></li><li><div data-headlessui-state><!--[--><button class="outline-none" id="headlessui-popover-button-6" type="button" aria-expanded="false" data-headlessui-state><!--[--><span class="hover:text-primary group"><h3 class="group-hover:underline inline decoration-2">Notebooks</h3><i class="text-base-400 group-hover:text-primary-subtle ml-1 i-chevron-down"></i></span><!--]--></button><!----><!--]--><div class="relative"><!----></div></div></li><li><a href="/smartphones" class="hover:text-primary hover:underline decoration-2"><h3 class="inline">Smartphones</h3></a></li><li><div data-headlessui-state><!--[--><button class="outline-none" id="headlessui-popover-button-11" type="button" aria-expanded="false" data-headlessui-state><!--[--><span class="hover:text-primary group"><h3 class="group-hover:underline inline decoration-2">Jogo</h3><i class="text-base-400 group-hover:text-primary-subtle ml-1 i-chevron-down"></i></span><!--]--></button><!----><!--]--><div class="relative"><!----></div></div></li><li><a href="/promocoes" class="hover:text-primary hover:underline decoration-2"><h3 class="inline">Promoções</h3></a></li><li><a href="/sao-paulo" class="hover:text-primary hover:underline decoration-2"><h3 class="inline">São Paulo</h3></a></li><!--]--></ul></nav><div class="px-2 flex justify-end items-center gap-3 lg:gap-4 text-base-800"><button aria-label="Buscar produtos"><i class="i-search w-7 h-7 hover:text-primary hover:scale-110 active:scale-125"></i></button><button class="hidden sm:block" aria-label="Minha conta"><i class="i-account w-7 h-7 hover:text-primary hover:scale-110 active:scale-125"></i></button><button aria-label="Abrir carrinho"><i class="i-shopping-cart w-7 h-7 hover:text-primary hover:scale-110 active:scale-125"></i></button></div></div><!----></header></astro-island>
68
-
69
- <main>
70
- <h1>Error :/</h1>
71
- <p class="instructions">
72
- Check out the <code>src/pages</code> directory to get started.<br>
73
- <strong>Code Challenge:</strong> Tweak the "Welcome to Astro" message above.
74
- </p>
75
- </main>
76
-
77
- <div id="teleported-bottom" class="relative z-0"></div>
78
- </body>
79
- </html>
@@ -1,2 +0,0 @@
1
- const noop = () => {};
2
- export const _ = noop;