cloudcommerce 0.4.0 → 0.4.1

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 (101) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/package.json +8 -8
  3. package/packages/api/package.json +1 -1
  4. package/packages/apps/correios/package.json +2 -2
  5. package/packages/apps/custom-payment/package.json +1 -1
  6. package/packages/apps/custom-shipping/package.json +1 -1
  7. package/packages/apps/datafrete/package.json +3 -3
  8. package/packages/apps/discounts/package.json +1 -1
  9. package/packages/apps/emails/package.json +1 -1
  10. package/packages/apps/fb-conversions/package.json +2 -2
  11. package/packages/apps/frenet/package.json +3 -3
  12. package/packages/apps/galaxpay/package.json +3 -3
  13. package/packages/apps/google-analytics/package.json +3 -3
  14. package/packages/apps/infinitepay/lib/ip-create-transaction.js +1 -1
  15. package/packages/apps/infinitepay/lib/ip-create-transaction.js.map +1 -1
  16. package/packages/apps/infinitepay/package.json +3 -3
  17. package/packages/apps/infinitepay/src/ip-create-transaction.ts +1 -1
  18. package/packages/apps/jadlog/package.json +2 -2
  19. package/packages/apps/loyalty-points/package.json +1 -1
  20. package/packages/apps/melhor-envio/package.json +3 -3
  21. package/packages/apps/mercadopago/package.json +3 -3
  22. package/packages/apps/pagarme/package.json +3 -3
  23. package/packages/apps/paghiper/package.json +3 -3
  24. package/packages/apps/pix/package.json +3 -3
  25. package/packages/apps/tiny-erp/package.json +3 -3
  26. package/packages/apps/webhooks/CHANGELOG.md +1 -0
  27. package/packages/apps/webhooks/README.md +1 -0
  28. package/packages/apps/webhooks/lib/app-webhooks.js +9 -0
  29. package/packages/apps/webhooks/lib/app-webhooks.js.map +1 -0
  30. package/packages/apps/webhooks/lib/events-to-webhooks-app.js +127 -0
  31. package/packages/apps/webhooks/lib/events-to-webhooks-app.js.map +1 -0
  32. package/packages/apps/webhooks/lib/index.js +2 -0
  33. package/packages/apps/webhooks/lib/index.js.map +1 -0
  34. package/packages/apps/webhooks/package.json +32 -0
  35. package/packages/apps/webhooks/src/app-webhooks.ts +14 -0
  36. package/packages/apps/webhooks/src/events-to-webhooks-app.ts +178 -0
  37. package/packages/apps/webhooks/src/index.ts +1 -0
  38. package/packages/apps/webhooks/tsconfig.json +3 -0
  39. package/packages/cli/lib/setup-gcloud.js +120 -20
  40. package/packages/cli/package.json +1 -1
  41. package/packages/cli/src/cli.ts +1 -1
  42. package/packages/cli/src/setup-gcloud.ts +146 -21
  43. package/packages/config/package.json +1 -1
  44. package/packages/emails/package.json +2 -2
  45. package/packages/emails/tests/assets/order.json +1 -1
  46. package/packages/events/lib/firebase.js +2 -0
  47. package/packages/events/lib/firebase.js.map +1 -1
  48. package/packages/events/package.json +3 -2
  49. package/packages/events/src/firebase.ts +2 -0
  50. package/packages/firebase/lib/config.d.ts +4 -0
  51. package/packages/firebase/lib/config.js +10 -1
  52. package/packages/firebase/lib/config.js.map +1 -1
  53. package/packages/firebase/lib/handlers/check-store-events.js +13 -4
  54. package/packages/firebase/lib/handlers/check-store-events.js.map +1 -1
  55. package/packages/firebase/package.json +2 -2
  56. package/packages/firebase/src/config.ts +10 -7
  57. package/packages/firebase/src/handlers/check-store-events.ts +14 -4
  58. package/packages/i18n/package.json +1 -1
  59. package/packages/modules/lib/firebase/checkout.js +4 -4
  60. package/packages/modules/lib/firebase/checkout.js.map +1 -1
  61. package/packages/modules/package.json +3 -3
  62. package/packages/modules/schemas/@checkout.cjs +0 -5
  63. package/packages/modules/schemas/create_transaction.cjs +6 -1
  64. package/packages/modules/src/firebase/checkout.ts +4 -4
  65. package/packages/passport/package.json +2 -2
  66. package/packages/ssr/package.json +7 -7
  67. package/packages/storefront/dist/client/_astro/{PitchBar.103168e6.js → PitchBar.004b6ea4.js} +1 -1
  68. package/packages/storefront/dist/client/_astro/Prices.f311909a.js +1 -0
  69. package/packages/storefront/dist/client/_astro/{Prices.vue_vue_type_script_setup_true_lang.054033ef.js → Prices.vue_vue_type_script_setup_true_lang.ef47de70.js} +1 -1
  70. package/packages/storefront/dist/client/_astro/{ProductCard.9138ec25.js → ProductCard.34de5097.js} +1 -1
  71. package/packages/storefront/dist/client/_astro/ShopHeader.cbfee289.js +1 -0
  72. package/packages/storefront/dist/client/_astro/{_...slug_.39c46f54.css → _...slug_.bcc33d9d.css} +1 -1
  73. package/packages/storefront/dist/client/_astro/{client.eba0daa7.js → client.56d86c9b.js} +1 -1
  74. package/packages/storefront/dist/client/_astro/{index.7577af70.js → index.2d12be6c.js} +1 -1
  75. package/packages/storefront/dist/client/_astro/{modules-info.0c999f60.js → modules-info.0debb0b0.js} +1 -1
  76. package/packages/storefront/dist/client/_astro/runtime-core.esm-bundler.a0432a8e.js +1 -0
  77. package/packages/storefront/dist/client/_astro/{runtime-dom.esm-bundler.0869e112.js → runtime-dom.esm-bundler.0e5774ce.js} +1 -1
  78. package/packages/storefront/dist/client/fallback/index.html +8 -7
  79. package/packages/storefront/dist/client/sw.js +1 -1
  80. package/packages/storefront/dist/server/chunks/{astro.89bd9221.mjs → astro.0f5b754a.mjs} +871 -826
  81. package/packages/storefront/dist/server/chunks/pages/{all.6379e666.mjs → all.671e6bc1.mjs} +53 -15
  82. package/packages/storefront/dist/server/chunks/{prerender.a1ec39e0.mjs → prerender.fd8cdc24.mjs} +0 -0
  83. package/packages/storefront/dist/server/entry.mjs +20 -12
  84. package/packages/storefront/package.json +11 -11
  85. package/packages/storefront/src/lib/components/Drawer.vue +9 -0
  86. package/packages/storefront/src/lib/components/ShopHeader.vue +8 -7
  87. package/packages/storefront/src/lib/layouts/BaseBody.astro +3 -2
  88. package/packages/types/index.ts +1 -0
  89. package/packages/types/modules/@checkout:params.d.ts +1 -5
  90. package/packages/types/modules/apply_discount:params.d.ts +1 -1
  91. package/packages/types/modules/apply_discount:response.d.ts +1 -1
  92. package/packages/types/modules/calculate_shipping:params.d.ts +1 -1
  93. package/packages/types/modules/calculate_shipping:response.d.ts +1 -1
  94. package/packages/types/modules/create_transaction:params.d.ts +6 -2
  95. package/packages/types/modules/create_transaction:response.d.ts +1 -1
  96. package/packages/types/modules/list_payments:params.d.ts +1 -1
  97. package/packages/types/modules/list_payments:response.d.ts +1 -1
  98. package/packages/types/package.json +1 -1
  99. package/packages/storefront/dist/client/_astro/Prices.b75d44d6.js +0 -1
  100. package/packages/storefront/dist/client/_astro/ShopHeader.65213f83.js +0 -1
  101. package/packages/storefront/dist/client/_astro/runtime-core.esm-bundler.4da3640b.js +0 -1
@@ -9,11 +9,10 @@ import 'node:os';
9
9
  import sizeOf from 'image-size';
10
10
  import 'magic-string';
11
11
  import 'node:stream';
12
- import 'slash';
13
- import { c as createAstro, a as createComponent, r as renderTemplate, b as addAttribute, d as renderComponent, u as unescapeHTML, F as Fragment, m as maybeRenderHead, e as renderSlot, f as renderHead, s as spreadAttributes } from '../astro.89bd9221.mjs';
12
+ import { c as createAstro, a as createComponent, r as renderTemplate, b as addAttribute, d as renderComponent, u as unescapeHTML, F as Fragment, m as maybeRenderHead, e as renderSlot, f as renderHead, s as spreadAttributes } from '../astro.0f5b754a.mjs';
14
13
  import api from '@cloudcommerce/api';
15
- import { reactive, computed, defineComponent, inject, mergeProps, useSSRContext, ref, watch, toRef, onMounted, onBeforeUnmount, provide, createVNode, resolveDynamicComponent, withCtx, renderSlot as renderSlot$1, unref, withDirectives, vShow, openBlock, createBlock, createCommentVNode, Fragment as Fragment$1, renderList, resolveComponent, withModifiers, toDisplayString, createTextVNode } from 'vue';
16
- import { ssrRenderAttrs, ssrRenderSlot, ssrRenderClass, ssrRenderVNode, ssrRenderComponent, ssrRenderStyle, ssrRenderList, ssrIncludeBooleanAttr, ssrRenderAttr, ssrInterpolate } from 'vue/server-renderer';
14
+ import { reactive, computed, defineComponent, inject, mergeProps, useSSRContext, ref, watch, toRef, onMounted, onBeforeUnmount, provide, createVNode, resolveDynamicComponent, withCtx, renderSlot as renderSlot$1, unref, withDirectives, vShow, openBlock, createBlock, createCommentVNode, Fragment as Fragment$1, renderList, resolveComponent, withModifiers, Teleport, toDisplayString, createTextVNode } from 'vue';
15
+ import { ssrRenderAttrs, ssrRenderSlot, ssrRenderClass, ssrRenderVNode, ssrRenderComponent, ssrRenderStyle, ssrRenderList, ssrIncludeBooleanAttr, ssrRenderAttr, ssrRenderTeleport, ssrInterpolate } from 'vue/server-renderer';
17
16
  import { img, price, formatMoney, onPromotion } from '@ecomplus/utils';
18
17
  /* empty css */import { EventEmitter } from 'node:events';
19
18
  import fs, { readFileSync } from 'node:fs';
@@ -568,7 +567,7 @@ async function getPicture(params) {
568
567
  throw new Error("[@astrojs/image] `src` is required");
569
568
  }
570
569
  if (!widths || !Array.isArray(widths)) {
571
- throw new Error("[@astrojs/image] at least one `width` is required");
570
+ throw new Error("[@astrojs/image] at least one `width` is required. ex: `widths={[100]}`");
572
571
  }
573
572
  const aspectRatio = await resolveAspectRatio(params);
574
573
  if (!aspectRatio) {
@@ -797,10 +796,11 @@ const $$BaseBody = createComponent(async ($$result, $$props, $$slots) => {
797
796
  const Astro2 = $$result.createAstro($$Astro$e, $$props, $$slots);
798
797
  Astro2.self = $$BaseBody;
799
798
  return renderTemplate`${maybeRenderHead($$result)}<body>
800
- <div id="teleported-top"></div>
799
+ <div id="teleported-overlap" class="relative z-50"></div>
800
+ <div id="teleported-top" class="relative z-0"></div>
801
801
  ${renderSlot($$result, $$slots["default"])}
802
802
  ${renderSlot($$result, $$slots["before-body-end"])}
803
- <div id="teleported-bottom"></div>
803
+ <div id="teleported-bottom" class="relative z-0"></div>
804
804
  </body>`;
805
805
  }, "/home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/lib/layouts/BaseBody.astro");
806
806
 
@@ -1247,7 +1247,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1247
1247
  countValidSlides
1248
1248
  } = usePitchBar(props);
1249
1249
  return (_ctx, _push, _parent, _attrs) => {
1250
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "bg-base-100" }, _attrs))}><div class="container md:w-2/3 mx-auto px-3 py-1">`);
1250
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "bg-base-100 relative z-1" }, _attrs))}><div class="container md:w-2/3 mx-auto px-3 py-1">`);
1251
1251
  _push(ssrRenderComponent(_sfc_main$6, {
1252
1252
  autoplay: unref(countValidSlides) > 1 ? 7e3 : null
1253
1253
  }, {
@@ -1470,7 +1470,30 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1470
1470
  _push2(`<!---->`);
1471
1471
  }
1472
1472
  ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
1473
- _push2(`</div></dialog>`);
1473
+ _push2(`</div>`);
1474
+ ssrRenderTeleport(_push2, (_push3) => {
1475
+ _push3(ssrRenderComponent(_component_Fade, null, {
1476
+ default: withCtx((_2, _push4, _parent3, _scopeId2) => {
1477
+ if (_push4) {
1478
+ if (__props.modelValue) {
1479
+ _push4(`<div class="fixed top-0 left-0 w-screen h-screen bg-black/50 z-40" data-drawer-backdrop${_scopeId2}></div>`);
1480
+ } else {
1481
+ _push4(`<!---->`);
1482
+ }
1483
+ } else {
1484
+ return [
1485
+ __props.modelValue ? (openBlock(), createBlock("div", {
1486
+ key: 0,
1487
+ class: "fixed top-0 left-0 w-screen h-screen bg-black/50 z-40",
1488
+ "data-drawer-backdrop": ""
1489
+ })) : createCommentVNode("", true)
1490
+ ];
1491
+ }
1492
+ }),
1493
+ _: 1
1494
+ }, _parent2, _scopeId));
1495
+ }, "#teleported-top", false, _parent2);
1496
+ _push2(`</dialog>`);
1474
1497
  } else {
1475
1498
  _push2(`<!---->`);
1476
1499
  }
@@ -1501,7 +1524,19 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1501
1524
  ])
1502
1525
  ], 10, ["onClick"])) : createCommentVNode("", true),
1503
1526
  renderSlot$1(_ctx.$slots, "default")
1504
- ])
1527
+ ]),
1528
+ (openBlock(), createBlock(Teleport, { to: "#teleported-top" }, [
1529
+ createVNode(_component_Fade, null, {
1530
+ default: withCtx(() => [
1531
+ __props.modelValue ? (openBlock(), createBlock("div", {
1532
+ key: 0,
1533
+ class: "fixed top-0 left-0 w-screen h-screen bg-black/50 z-40",
1534
+ "data-drawer-backdrop": ""
1535
+ })) : createCommentVNode("", true)
1536
+ ]),
1537
+ _: 1
1538
+ })
1539
+ ]))
1505
1540
  ], 10, ["open", "data-drawer"])) : createCommentVNode("", true)
1506
1541
  ];
1507
1542
  }
@@ -1588,7 +1623,10 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1588
1623
  _push(`<header${ssrRenderAttrs(mergeProps({
1589
1624
  ref_key: "header",
1590
1625
  ref: header,
1591
- class: ["top-0 z-50", unref(isSticky) ? "bg-white/80 backdrop-blur-md shadow py-2 md:py-3" : "bg-white py-3 sm:py-4 md:py-5"]
1626
+ class: ["top-0 z-50 transition-colors", [
1627
+ unref(isSticky) && !isSidenavOpen.value ? "bg-white/80" : "bg-white",
1628
+ unref(isSticky) ? "backdrop-blur-md shadow py-2 md:py-3" : "py-3 sm:py-4 md:py-5"
1629
+ ]]
1592
1630
  }, _attrs))}><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 md:grid-cols-none md:auto-cols-max">`);
1593
1631
  ssrRenderSlot(_ctx.$slots, "sidenav-toggle", {}, () => {
1594
1632
  _push(`<div class="md:hidden" data-sidenav-toggle><button class="px-2 my-1"${ssrRenderAttr("aria-label", "Abrir/fechar menu")}>`);
@@ -1618,19 +1656,19 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1618
1656
  "onUpdate:modelValue": ($event) => isSidenavOpen.value = $event,
1619
1657
  "has-close-button": false,
1620
1658
  position: "absolute",
1621
- class: "mt-3",
1622
- style: { height: `calc(100vh - ${unref(sidenavHeight)}px)` }
1659
+ class: "mt-2 -z-1",
1660
+ style: { height: `calc(100vh - ${unref(sidenavHeight)}px + .5rem)` }
1623
1661
  }, {
1624
1662
  default: withCtx((_, _push2, _parent2, _scopeId) => {
1625
1663
  if (_push2) {
1626
1664
  _push2(ssrRenderComponent(_sfc_main$3, {
1627
- class: "pt-6",
1665
+ class: "bg-white pt-6",
1628
1666
  categories: __props.categories
1629
1667
  }, null, _parent2, _scopeId));
1630
1668
  } else {
1631
1669
  return [
1632
1670
  createVNode(_sfc_main$3, {
1633
- class: "pt-6",
1671
+ class: "bg-white pt-6",
1634
1672
  categories: __props.categories
1635
1673
  }, null, 8, ["categories"])
1636
1674
  ];
@@ -2,7 +2,7 @@ import { performance } from 'node:perf_hooks';
2
2
  import { ReadableStream, ByteLengthQueuingStrategy, CountQueuingStrategy, ReadableByteStreamController, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, TransformStream, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter } from 'node:stream/web';
3
3
  import * as undici from 'undici';
4
4
  import { setTimeout as setTimeout$1, clearTimeout as clearTimeout$1 } from 'node:timers';
5
- import { N as NodeApp, g as server_default, h as deserializeManifest } from './chunks/astro.89bd9221.mjs';
5
+ import { N as NodeApp, g as server_default, h as deserializeManifest } from './chunks/astro.0f5b754a.mjs';
6
6
  import { Readable } from 'stream';
7
7
  import https from 'https';
8
8
  import path from 'path';
@@ -10,11 +10,12 @@ import { fileURLToPath } from 'url';
10
10
  import fs from 'fs';
11
11
  import http from 'http';
12
12
  import send from 'send';
13
+ import enableDestroy from 'server-destroy';
13
14
  import { defineComponent, computed, unref, useSSRContext, mergeProps, h as h$2, createSSRApp } from 'vue';
14
15
  import { ssrRenderSlotInner, ssrRenderAttrs, ssrRenderSlot, renderToString } from 'vue/server-renderer';
15
16
  import { i18n, formatMoney } from '@ecomplus/utils';
16
- /* empty css */import { _ as _page0, a as _page1, b as _page3, c as _page4, d as _page5 } from './chunks/pages/all.6379e666.mjs';
17
- import { _ as _page2 } from './chunks/prerender.a1ec39e0.mjs';
17
+ /* empty css */import { _ as _page0, a as _page1, b as _page3, c as _page4, d as _page5 } from './chunks/pages/all.671e6bc1.mjs';
18
+ import { _ as _page2 } from './chunks/prerender.fd8cdc24.mjs';
18
19
  import 'path-to-regexp';
19
20
  import 'tls';
20
21
  import 'mime';
@@ -2998,7 +2999,8 @@ function createServer({ client, port, host, removeBase }, handler) {
2998
2999
  if (req.url) {
2999
3000
  let pathname = removeBase(req.url);
3000
3001
  pathname = pathname[0] === "/" ? pathname : "/" + pathname;
3001
- const stream = send(req, encodeURI(pathname), {
3002
+ pathname = new URL(pathname, `http://${host}:${port}`).pathname;
3003
+ const stream = send(req, encodeURI(decodeURI(pathname)), {
3002
3004
  root: fileURLToPath(client),
3003
3005
  dotfiles: pathname.startsWith("/.well-known/") ? "allow" : "deny"
3004
3006
  });
@@ -3033,6 +3035,7 @@ function createServer({ client, port, host, removeBase }, handler) {
3033
3035
  httpServer = http.createServer(listener);
3034
3036
  }
3035
3037
  httpServer.listen(port, host);
3038
+ enableDestroy(httpServer);
3036
3039
  const closed = new Promise((resolve, reject) => {
3037
3040
  httpServer.addListener("close", resolve);
3038
3041
  httpServer.addListener("error", reject);
@@ -3046,7 +3049,7 @@ function createServer({ client, port, host, removeBase }, handler) {
3046
3049
  server: httpServer,
3047
3050
  stop: async () => {
3048
3051
  await new Promise((resolve, reject) => {
3049
- httpServer.close((err) => err ? reject(err) : resolve(void 0));
3052
+ httpServer.destroy((err) => err ? reject(err) : resolve(void 0));
3050
3053
  });
3051
3054
  }
3052
3055
  };
@@ -3074,7 +3077,7 @@ function getResolvedHostForHttpServer(host) {
3074
3077
  return host;
3075
3078
  }
3076
3079
  }
3077
- function startServer(app, options) {
3080
+ function startServer$1(app, options) {
3078
3081
  const port = process.env.PORT ? Number(process.env.PORT) : options.port ?? 8080;
3079
3082
  const { client } = resolvePaths(options);
3080
3083
  const handler = middleware_default(app, options.mode);
@@ -3092,7 +3095,10 @@ function startServer(app, options) {
3092
3095
  );
3093
3096
  const protocol = server.server instanceof https.Server ? "https" : "http";
3094
3097
  console.log(`Server listening on ${protocol}://${host}:${port}`);
3095
- return server.closed();
3098
+ return {
3099
+ server,
3100
+ done: server.closed()
3101
+ };
3096
3102
  }
3097
3103
 
3098
3104
  polyfill(globalThis, {
@@ -3101,7 +3107,8 @@ polyfill(globalThis, {
3101
3107
  function createExports(manifest, options) {
3102
3108
  const app = new NodeApp(manifest);
3103
3109
  return {
3104
- handler: middleware_default(app, options.mode)
3110
+ handler: middleware_default(app, options.mode),
3111
+ startServer: () => startServer$1(app, options)
3105
3112
  };
3106
3113
  }
3107
3114
  function start(manifest, options) {
@@ -3109,7 +3116,7 @@ function start(manifest, options) {
3109
3116
  return;
3110
3117
  }
3111
3118
  const app = new NodeApp(manifest);
3112
- startServer(app, options);
3119
+ startServer$1(app, options);
3113
3120
  }
3114
3121
 
3115
3122
  const adapter = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
@@ -3318,20 +3325,21 @@ const _renderer1 = {
3318
3325
  renderToStaticMarkup,
3319
3326
  };
3320
3327
 
3321
- const pageMap = new Map([["../../node_modules/.pnpm/@astrojs+image@0.13.0_astro@2.0.2+sharp@0.31.3/node_modules/@astrojs/image/dist/endpoint.js", _page0],["src/pages/index.astro", _page1],["src/pages/fallback.astro", _page2],["src/pages/app/index.astro", _page3],["src/pages/app/account.astro", _page4],["src/pages/[...slug].astro", _page5],]);
3328
+ const pageMap = new Map([["../../node_modules/.pnpm/@astrojs+image@0.14.0_astro@2.0.6+sharp@0.31.3/node_modules/@astrojs/image/dist/endpoint.js", _page0],["src/pages/index.astro", _page1],["src/pages/fallback.astro", _page2],["src/pages/app/index.astro", _page3],["src/pages/app/account.astro", _page4],["src/pages/[...slug].astro", _page5],]);
3322
3329
  const renderers = [Object.assign({"name":"astro:jsx","serverEntrypoint":"astro/jsx/server.js","jsxImportSource":"astro"}, { ssr: server_default }),Object.assign({"name":"@astrojs/vue","clientEntrypoint":"@astrojs/vue/client.js","serverEntrypoint":"@astrojs/vue/server.js"}, { ssr: _renderer1 }),];
3323
3330
 
3324
- const _manifest = Object.assign(deserializeManifest({"adapterName":"@astrojs/node","routes":[{"file":"fallback/index.html","links":[],"scripts":[],"routeData":{"route":"/fallback","type":"page","pattern":"^\\/fallback\\/?$","segments":[[{"content":"fallback","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/fallback.astro","pathname":"/fallback","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"routeData":{"type":"endpoint","route":"/_image","pattern":"^\\/_image$","segments":[[{"content":"_image","dynamic":false,"spread":false}]],"params":[],"component":"../../node_modules/.pnpm/@astrojs+image@0.13.0_astro@2.0.2+sharp@0.31.3/node_modules/@astrojs/image/dist/endpoint.js","pathname":"/_image","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":["_astro/_...slug_.39c46f54.css","_astro/index.0c833781.css"],"scripts":[{"type":"external","value":"_astro/hoisted.6edd7364.js"}],"routeData":{"route":"/","type":"page","pattern":"^\\/$","segments":[],"params":[],"component":"src/pages/index.astro","pathname":"/","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"routeData":{"route":"/app","type":"page","pattern":"^\\/app\\/?$","segments":[[{"content":"app","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/app/index.astro","pathname":"/app","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"routeData":{"route":"/app/account","type":"page","pattern":"^\\/app\\/account\\/?$","segments":[[{"content":"app","dynamic":false,"spread":false}],[{"content":"account","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/app/account.astro","pathname":"/app/account","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":["_astro/_...slug_.39c46f54.css"],"scripts":[{"type":"external","value":"_astro/hoisted.6edd7364.js"}],"routeData":{"route":"/[...slug]","type":"page","pattern":"^(?:\\/(.*?))?\\/?$","segments":[[{"content":"...slug","dynamic":true,"spread":true}]],"params":["...slug"],"component":"src/pages/[...slug].astro","_meta":{"trailingSlash":"ignore"}}}],"site":"https://ecom2-002.web.app","base":"/","markdown":{"drafts":false,"syntaxHighlight":"shiki","shikiConfig":{"langs":[],"theme":"github-dark","wrap":false},"remarkPlugins":[],"rehypePlugins":[],"remarkRehype":{},"gfm":true,"smartypants":true,"contentDir":"file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/content/"},"pageMap":null,"renderers":[],"entryModules":{"\u0000@astrojs-ssr-virtual-entry":"_@astrojs-ssr-virtual-entry.mjs","~/components/Prices.vue":"_astro/Prices.b75d44d6.js","@@sf/components/ShopHeader.vue":"_astro/ShopHeader.65213f83.js","@@sf/components/ProductCard.vue":"_astro/ProductCard.9138ec25.js","/astro/hoisted.js?q=0":"_astro/hoisted.6edd7364.js","/home/leo/code/ecomplus/cloud-commerce/node_modules/workbox-window/build/workbox-window.prod.es5.mjs":"_astro/workbox-window.prod.es5.295a6886.js","~/components/PitchBar.vue":"_astro/PitchBar.103168e6.js","@astrojs/vue/client.js":"_astro/client.eba0daa7.js","astro:scripts/before-hydration.js":""},"assets":["/_astro/index.0c833781.css","/_astro/server.60de185d.css","/_astro/_...slug_.39c46f54.css","/manifest.webmanifest","/registerSW.js","/robots.txt","/sw.js","/workbox-e2ee76b5.js","/_astro/PitchBar.103168e6.js","/_astro/Prices.b75d44d6.js","/_astro/Prices.vue_vue_type_script_setup_true_lang.054033ef.js","/_astro/ProductCard.9138ec25.js","/_astro/ShopHeader.65213f83.js","/_astro/client.eba0daa7.js","/_astro/ecom-utils.92f137f6.js","/_astro/hoisted.6edd7364.js","/_astro/index.7577af70.js","/_astro/modules-info.0c999f60.js","/_astro/runtime-core.esm-bundler.4da3640b.js","/_astro/runtime-dom.esm-bundler.0869e112.js","/_astro/session-utm.72684b84.js","/_astro/workbox-window.prod.es5.295a6886.js","/admin/config.json","/assets/cms-preview.css","/assets/cms.css","/assets/cvv.png","/assets/img-placeholder.png","/assets/payments.png","/assets/ssl-safe.png","/img/icon.png","/img/large-icon.png","/img/uploads/banner1.png","/img/uploads/banner2.png","/img/uploads/banner2.webp","/img/uploads/favicon.png","/img/uploads/headless.png","/img/uploads/headphone.png","/img/uploads/headphone.webp","/img/uploads/icon.png","/img/uploads/large-icon.png","/img/uploads/logo.png","/img/uploads/logo.webp","/img/uploads/og-image.png","/img/uploads/passion.png","/img/uploads/passion.webp","/img/uploads/pwa-reliable.png","/img/uploads/rect8589.png","/img/uploads/rect859.png","/img/uploads/rect89.png","/img/uploads/rect89.webp","/img/uploads/ssl-safe.png","/assets/icons/bootstrap-icons/font/storefront-icons.woff2","/assets/icons/feather-icons/font/storefront-icons.woff2","/assets/icons/font-awesome/font/storefront-icons.woff2","/assets/icons/line-awesome/font/storefront-icons.woff2","/assets/icons/tabler-icons/font/storefront-icons.woff2","/fallback/index.html"]}), {
3331
+ const _manifest = Object.assign(deserializeManifest({"adapterName":"@astrojs/node","routes":[{"file":"fallback/index.html","links":[],"scripts":[],"routeData":{"route":"/fallback","type":"page","pattern":"^\\/fallback\\/?$","segments":[[{"content":"fallback","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/fallback.astro","pathname":"/fallback","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"routeData":{"type":"endpoint","route":"/_image","pattern":"^\\/_image$","segments":[[{"content":"_image","dynamic":false,"spread":false}]],"params":[],"component":"../../node_modules/.pnpm/@astrojs+image@0.14.0_astro@2.0.6+sharp@0.31.3/node_modules/@astrojs/image/dist/endpoint.js","pathname":"/_image","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":["_astro/_...slug_.bcc33d9d.css","_astro/index.0c833781.css"],"scripts":[{"type":"external","value":"_astro/hoisted.6edd7364.js"}],"routeData":{"route":"/","type":"page","pattern":"^\\/$","segments":[],"params":[],"component":"src/pages/index.astro","pathname":"/","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"routeData":{"route":"/app","type":"page","pattern":"^\\/app\\/?$","segments":[[{"content":"app","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/app/index.astro","pathname":"/app","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"routeData":{"route":"/app/account","type":"page","pattern":"^\\/app\\/account\\/?$","segments":[[{"content":"app","dynamic":false,"spread":false}],[{"content":"account","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/app/account.astro","pathname":"/app/account","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":["_astro/_...slug_.bcc33d9d.css"],"scripts":[{"type":"external","value":"_astro/hoisted.6edd7364.js"}],"routeData":{"route":"/[...slug]","type":"page","pattern":"^(?:\\/(.*?))?\\/?$","segments":[[{"content":"...slug","dynamic":true,"spread":true}]],"params":["...slug"],"component":"src/pages/[...slug].astro","_meta":{"trailingSlash":"ignore"}}}],"site":"https://ecom2-002.web.app","base":"/","markdown":{"drafts":false,"syntaxHighlight":"shiki","shikiConfig":{"langs":[],"theme":"github-dark","wrap":false},"remarkPlugins":[],"rehypePlugins":[],"remarkRehype":{},"gfm":true,"smartypants":true,"contentDir":"file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/src/content/"},"pageMap":null,"renderers":[],"entryModules":{"\u0000@astrojs-ssr-virtual-entry":"_@astrojs-ssr-virtual-entry.mjs","~/components/PitchBar.vue":"_astro/PitchBar.004b6ea4.js","~/components/Prices.vue":"_astro/Prices.f311909a.js","@@sf/components/ProductCard.vue":"_astro/ProductCard.34de5097.js","@astrojs/vue/client.js":"_astro/client.56d86c9b.js","/astro/hoisted.js?q=0":"_astro/hoisted.6edd7364.js","@@sf/components/ShopHeader.vue":"_astro/ShopHeader.cbfee289.js","/home/leo/code/ecomplus/cloud-commerce/node_modules/workbox-window/build/workbox-window.prod.es5.mjs":"_astro/workbox-window.prod.es5.295a6886.js","astro:scripts/before-hydration.js":""},"assets":["/_astro/index.0c833781.css","/_astro/server.60de185d.css","/_astro/_...slug_.bcc33d9d.css","/manifest.webmanifest","/registerSW.js","/robots.txt","/sw.js","/workbox-e2ee76b5.js","/_astro/PitchBar.004b6ea4.js","/_astro/Prices.f311909a.js","/_astro/Prices.vue_vue_type_script_setup_true_lang.ef47de70.js","/_astro/ProductCard.34de5097.js","/_astro/ShopHeader.cbfee289.js","/_astro/client.56d86c9b.js","/_astro/ecom-utils.92f137f6.js","/_astro/hoisted.6edd7364.js","/_astro/index.2d12be6c.js","/_astro/modules-info.0debb0b0.js","/_astro/runtime-core.esm-bundler.a0432a8e.js","/_astro/runtime-dom.esm-bundler.0e5774ce.js","/_astro/session-utm.72684b84.js","/_astro/workbox-window.prod.es5.295a6886.js","/admin/config.json","/assets/cms-preview.css","/assets/cms.css","/assets/cvv.png","/assets/img-placeholder.png","/assets/payments.png","/assets/ssl-safe.png","/img/icon.png","/img/large-icon.png","/img/uploads/banner1.png","/img/uploads/banner2.png","/img/uploads/banner2.webp","/img/uploads/favicon.png","/img/uploads/headless.png","/img/uploads/headphone.png","/img/uploads/headphone.webp","/img/uploads/icon.png","/img/uploads/large-icon.png","/img/uploads/logo.png","/img/uploads/logo.webp","/img/uploads/og-image.png","/img/uploads/passion.png","/img/uploads/passion.webp","/img/uploads/pwa-reliable.png","/img/uploads/rect8589.png","/img/uploads/rect859.png","/img/uploads/rect89.png","/img/uploads/rect89.webp","/img/uploads/ssl-safe.png","/assets/icons/bootstrap-icons/font/storefront-icons.woff2","/assets/icons/feather-icons/font/storefront-icons.woff2","/assets/icons/font-awesome/font/storefront-icons.woff2","/assets/icons/line-awesome/font/storefront-icons.woff2","/assets/icons/tabler-icons/font/storefront-icons.woff2","/fallback/index.html"]}), {
3325
3332
  pageMap: pageMap,
3326
3333
  renderers: renderers
3327
3334
  });
3328
3335
  const _args = {"mode":"middleware","client":"file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/dist/client/","server":"file:///home/leo/code/ecomplus/cloud-commerce/packages/storefront/dist/server/","host":false,"port":3000};
3329
3336
  const _exports = createExports(_manifest, _args);
3330
3337
  const handler = _exports['handler'];
3338
+ const startServer = _exports['startServer'];
3331
3339
 
3332
3340
  const _start = 'start';
3333
3341
  if(_start in adapter) {
3334
3342
  adapter[_start](_manifest, _args);
3335
3343
  }
3336
3344
 
3337
- export { handler, pageMap, renderers };
3345
+ export { handler, pageMap, renderers, startServer };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/storefront",
3
3
  "type": "module",
4
- "version": "0.4.0",
4
+ "version": "0.4.1",
5
5
  "description": "E-Com Plus Cloud Commerce storefront with Astro",
6
6
  "main": "src/index.js",
7
7
  "repository": {
@@ -25,34 +25,34 @@
25
25
  "prepare-monorepo": "sh scripts/prepare-monorepo.sh"
26
26
  },
27
27
  "dependencies": {
28
- "@astrojs/image": "^0.13.0",
29
- "@astrojs/node": "^5.0.1",
28
+ "@astrojs/image": "^0.14.0",
29
+ "@astrojs/node": "^5.0.3",
30
30
  "@astrojs/partytown": "^1.0.3",
31
- "@astrojs/prefetch": "^0.1.1",
32
- "@astrojs/vue": "^2.0.0",
31
+ "@astrojs/prefetch": "^0.1.2",
32
+ "@astrojs/vue": "^2.0.1",
33
33
  "@cloudcommerce/api": "workspace:*",
34
34
  "@cloudcommerce/config": "workspace:*",
35
35
  "@cloudcommerce/i18n": "workspace:*",
36
36
  "@ecomplus/utils": "1.5.0-rc.3",
37
37
  "@fastify/deepmerge": "^1.3.0",
38
- "@headlessui/vue": "^1.7.8",
38
+ "@headlessui/vue": "^1.7.9",
39
39
  "@iconify-json/fa6-brands": "^1.1.8",
40
40
  "@iconify-json/heroicons": "^1.1.8",
41
41
  "@iconify-json/logos": "^1.1.22",
42
42
  "@vite-pwa/astro": "^0.0.1",
43
43
  "@vueuse/core": "^9.12.0",
44
- "astro": "^2.0.2",
44
+ "astro": "^2.0.6",
45
45
  "chroma-js": "^2.4.2",
46
46
  "dotenv": "^16.0.3",
47
- "firebase": "^9.16.0",
47
+ "firebase": "^9.17.1",
48
48
  "image-size": "^1.0.2",
49
49
  "semver": "^7.3.8",
50
50
  "sharp": "^0.31.3",
51
51
  "tailwindcss": "^3.2.4",
52
- "unocss": "^0.49.1",
53
- "vite": "^4.0.4",
52
+ "unocss": "^0.49.4",
53
+ "vite": "^4.1.1",
54
54
  "vite-plugin-pwa": "^0.14.1",
55
- "vue": "^3.2.45"
55
+ "vue": "^3.2.47"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@babel/core": "^7.20.12",
@@ -92,6 +92,15 @@ const isPlacementX = computed(() => {
92
92
  </button>
93
93
  <slot />
94
94
  </div>
95
+ <Teleport to="#teleported-top">
96
+ <Fade>
97
+ <div
98
+ v-if="modelValue"
99
+ class="fixed top-0 left-0 w-screen h-screen bg-black/50 z-40"
100
+ data-drawer-backdrop
101
+ ></div>
102
+ </Fade>
103
+ </Teleport>
95
104
  </dialog>
96
105
  </Fade>
97
106
  </template>
@@ -43,10 +43,11 @@ const sidenavHeight = computed(() => {
43
43
  <template>
44
44
  <header
45
45
  ref="header"
46
- class="top-0 z-50"
47
- :class="isSticky
48
- ? 'bg-white/80 backdrop-blur-md shadow py-2 md:py-3'
49
- : 'bg-white py-3 sm:py-4 md:py-5'"
46
+ class="top-0 z-50 transition-colors"
47
+ :class="[
48
+ isSticky && !isSidenavOpen ? 'bg-white/80' : 'bg-white',
49
+ isSticky ? 'backdrop-blur-md shadow py-2 md:py-3' : 'py-3 sm:py-4 md:py-5',
50
+ ]"
50
51
  >
51
52
  <div class="container lg:max-w-7xl mx-auto px-1 lg:pl-3
52
53
  grid grid-flow-col grid-cols-3 justify-between items-center
@@ -101,10 +102,10 @@ const sidenavHeight = computed(() => {
101
102
  v-model="isSidenavOpen"
102
103
  :has-close-button="false"
103
104
  position="absolute"
104
- class="mt-3"
105
- :style="{ height: `calc(100vh - ${sidenavHeight}px)` }"
105
+ class="mt-2 -z-1"
106
+ :style="{ height: `calc(100vh - ${sidenavHeight}px + .5rem)` }"
106
107
  >
107
- <ShopSidenav class="pt-6" :categories="categories" />
108
+ <ShopSidenav class="bg-white pt-6" :categories="categories" />
108
109
  </Drawer>
109
110
  </header>
110
111
  </template>
@@ -12,8 +12,9 @@ export interface Props {
12
12
  ---
13
13
 
14
14
  <body>
15
- <div id="teleported-top"></div>
15
+ <div id="teleported-overlap" class="relative z-50"></div>
16
+ <div id="teleported-top" class="relative z-0"></div>
16
17
  <slot />
17
18
  <slot name="before-body-end" />
18
- <div id="teleported-bottom"></div>
19
+ <div id="teleported-bottom" class="relative z-0"></div>
19
20
  </body>
@@ -48,6 +48,7 @@ type ApiEventName = 'orders-new'
48
48
  | 'products-priceSet'
49
49
  | 'carts-new'
50
50
  | 'carts-customerSet'
51
+ | 'carts-delayed'
51
52
  | 'customers-new'
52
53
  | 'applications-dataSet';
53
54
 
@@ -1,4 +1,4 @@
1
- /* tslint:disable */
1
+ /* eslint-disable */
2
2
  /**
3
3
  * This file was automatically generated by json-schema-to-typescript.
4
4
  * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -239,10 +239,6 @@ export interface CheckoutBody {
239
239
  * Code to identify the affiliate that referred the customer
240
240
  */
241
241
  affiliate_code?: string;
242
- /**
243
- * IP address of the browser used by the customer when placing the order
244
- */
245
- browser_ip?: string;
246
242
  /**
247
243
  * Channel unique identificator
248
244
  */
@@ -1,4 +1,4 @@
1
- /* tslint:disable */
1
+ /* eslint-disable */
2
2
  /**
3
3
  * This file was automatically generated by json-schema-to-typescript.
4
4
  * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -1,4 +1,4 @@
1
- /* tslint:disable */
1
+ /* eslint-disable */
2
2
  /**
3
3
  * This file was automatically generated by json-schema-to-typescript.
4
4
  * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -1,4 +1,4 @@
1
- /* tslint:disable */
1
+ /* eslint-disable */
2
2
  /**
3
3
  * This file was automatically generated by json-schema-to-typescript.
4
4
  * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -1,4 +1,4 @@
1
- /* tslint:disable */
1
+ /* eslint-disable */
2
2
  /**
3
3
  * This file was automatically generated by json-schema-to-typescript.
4
4
  * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -1,4 +1,4 @@
1
- /* tslint:disable */
1
+ /* eslint-disable */
2
2
  /**
3
3
  * This file was automatically generated by json-schema-to-typescript.
4
4
  * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -347,7 +347,11 @@ export interface CreateTransactionParams {
347
347
  /**
348
348
  * IP address of the browser used by the customer when placing the order
349
349
  */
350
- browser_ip?: string;
350
+ client_ip?: string;
351
+ /**
352
+ * User-Agent of the browser (if any) used by the customer
353
+ */
354
+ client_user_agent?: string;
351
355
  /**
352
356
  * Channel unique identificator
353
357
  */
@@ -1,4 +1,4 @@
1
- /* tslint:disable */
1
+ /* eslint-disable */
2
2
  /**
3
3
  * This file was automatically generated by json-schema-to-typescript.
4
4
  * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -1,4 +1,4 @@
1
- /* tslint:disable */
1
+ /* eslint-disable */
2
2
  /**
3
3
  * This file was automatically generated by json-schema-to-typescript.
4
4
  * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -1,4 +1,4 @@
1
- /* tslint:disable */
1
+ /* eslint-disable */
2
2
  /**
3
3
  * This file was automatically generated by json-schema-to-typescript.
4
4
  * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/types",
3
3
  "type": "module",
4
- "version": "0.4.0",
4
+ "version": "0.4.1",
5
5
  "description": "E-Com Plus Cloud Commerce reusable type definitions",
6
6
  "main": "index.ts",
7
7
  "repository": {
@@ -1 +0,0 @@
1
- import{_ as o}from"./Prices.vue_vue_type_script_setup_true_lang.054033ef.js";/* empty css */import"./modules-info.0c999f60.js";import"./session-utm.72684b84.js";import"./runtime-core.esm-bundler.4da3640b.js";import"./ecom-utils.92f137f6.js";export{o as default};
@@ -1 +0,0 @@
1
- import{c as P,u as T,b as M,p as N}from"./index.7577af70.js";import{i as f,c as x,p as _,s as j,d as B,q as O,j as R,w as D,u as $,r as Y,o as h,a as w,e as l,n as k,l as m,b as L,F,C as A,t as U,g as z,a1 as q,a2 as G,z as I,A as X}from"./runtime-core.esm-bundler.4da3640b.js";import{w as J}from"./runtime-dom.esm-bundler.0869e112.js";const K="Minha conta",Q="Abrir carrinho",W="Buscar produtos",Z=a=>{const{header:s,canSetStyles:t,canCreateHeightDiv:n,isShownOnScrollDown:r}={canSetStyles:!0,canCreateHeightDiv:!0,...a},{ready:c,start:g}=P(100,{controls:!0,immediate:!1}),p=f(0),o=f(0);let i;const{y:e}=T(document),y=x(()=>c.value&&e.value>o.value*1.2),v=f("none");_(y,async u=>{t&&(s.value.style.position=u?"sticky":null),i&&(i.style.height=u?`${p.value}px`:null),u?(await N(300),v.value="opacity var(--transition-slow), transform var(--transition)"):(g(),v.value="none")});const d=f(!1);return _(e,(u,S)=>{d.value=u>0&&u<S}),j(()=>{const u=()=>{p.value=s.value.offsetHeight,o.value=p.value+window.pageYOffset+s.value.getBoundingClientRect().top,g()},S=s.value.getElementsByTagName("IMG");let V=!0;for(let b=0;b<S.length;b++){const C=S[b];(!C.complete||C.naturalHeight===0)&&(V=!1,C.onload=u)}V&&u(),window.addEventListener("resize",M(u,300)),t&&(s.value.style.willChange="transform",_([y,d],([b,C])=>{let E=null,H=null;b&&(!C||r)&&(E="0",H="translateY(-100%)"),s.value.style.opacity=E,s.value.style.transform=H}),_(v,b=>{s.value.style.transition=b})),n&&(i=document.createElement("div"),s.value.parentElement.insertBefore(i,s.value))}),{staticHeight:p,staticY:o,isSticky:y,isScrollUp:d,transition:v}},ee=["open","data-drawer"],te={class:"relative"},se=["onClick"],ae=l("i",{class:"i-close text-base-400 text-3xl"},null,-1),oe=B({__name:"Drawer",props:{modelValue:{type:Boolean,default:!1},placement:{default:"start"},position:{default:"fixed"},hasCloseButton:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(a,{emit:s}){const t=a,n=()=>s("update:modelValue",!1),r=f(null),c=e=>{r.value?.contains(e.target)||n()},g=e=>{e.key==="Escape"&&n()};_(O(t,"modelValue"),async e=>{e?(document.body.style.overflow="hidden",setTimeout(()=>{document.addEventListener("click",c,{passive:!0}),document.addEventListener("keydown",g,{passive:!0})},500)):(document.body.style.overflow=null,document.removeEventListener("click",c),document.removeEventListener("keydown",g))});const p=x(()=>{switch(t.placement){case"start":return"left";case"end":return"right";case"top":return"up";default:return"down"}}),o=x(()=>t.position==="fixed"),i=x(()=>t.placement==="start"||t.placement==="end");return(e,y)=>{const v=Y("Fade");return h(),R(v,{slide:$(p),speed:"slow","is-floating":""},{default:D(()=>[a.modelValue?(h(),w("dialog",{key:0,ref_key:"drawer",ref:r,class:k(["w-screen max-w-sm shadow p-0 m-0 z-50",[a.position,$(o)?`top-0 left-0 ${$(i)?"h-screen":""}`:null]]),open:a.modelValue,"data-drawer":a.placement},[l("div",te,[a.hasCloseButton?(h(),w("button",{key:0,type:"button","aria-label":"Fechar",onClick:J(n,["prevent"]),class:k(["absolute top-2",a.placement==="end"?"left-2":"right-2"]),"data-drawer-close":""},[m(e.$slots,"close",{},()=>[ae])],10,se)):L("",!0),m(e.$slots,"default")])],10,ee)):L("",!0)]),_:3},8,["slide"])}}}),le={"data-sidenav":""},ne={class:"py-5","data-sidenav-nav":""},ie=["href"],re=B({__name:"ShopSidenav",props:{categories:null},setup(a){const t=a.categories.filter(({slug:n,parent:r})=>n&&!r);return(n,r)=>(h(),w("aside",le,[l("nav",ne,[l("ul",null,[(h(!0),w(F,null,A($(t),c=>(h(),w("li",{key:c._id},[l("a",{href:`/${c.slug}`},U(c.name),9,ie)]))),128))])])]))}}),ce={class:"container lg:max-w-7xl mx-auto px-1 lg:pl-3 grid grid-flow-col grid-cols-3 justify-between items-center md:grid-cols-none md:auto-cols-max"},ue={class:"md:hidden","data-sidenav-toggle":""},de={class:"px-2 flex justify-end items-center gap-3 lg:gap-4 text-base-800","data-header-buttons":""},me=["aria-label","onClick","data-header-button"],he=B({__name:"ShopHeader",props:{categories:null},setup(a){const s=f({search:{icon:"i-search",onClick:()=>{},label:W},account:{icon:"i-account",onClick:()=>{},label:K},cart:{icon:"i-shopping-cart",onClick:()=>{},label:Q}}),t=f(!1),n=f(null),{isSticky:r,staticHeight:c,staticY:g}=Z({header:n}),p=x(()=>r.value?c.value:g.value);return(o,i)=>(h(),w("header",{ref_key:"header",ref:n,class:k(["top-0 z-50",$(r)?"bg-white/80 backdrop-blur-md shadow py-2 md:py-3":"bg-white py-3 sm:py-4 md:py-5"])},[l("div",ce,[m(o.$slots,"sidenav-toggle",{},()=>[l("div",ue,[l("button",{class:"px-2 my-1","aria-label":"Abrir/fechar menu",onClick:i[0]||(i[0]=e=>t.value=!t.value)},[m(o.$slots,"sidenav-toggle-content",{},()=>[l("i",{class:k(["text-base-500 text-3xl",t.value?"i-close":"i-menu"])},null,2)])])])]),m(o.$slots,"logo"),m(o.$slots,"nav"),m(o.$slots,"buttons",{},()=>[l("div",de,[(h(!0),w(F,null,A(s.value,({icon:e,onClick:y,label:v},d)=>m(o.$slots,"button",G({key:d},{name:d,icon:e,onClick:y}),()=>[l("button",{class:k(d==="account"?"hidden sm:block":null),"aria-label":v,onClick:y,"data-header-button":d},[m(o.$slots,"button-content",I(X({name:d,icon:e})),()=>[l("i",{class:k([e,"hover:text-primary w-7 h-7 hover:scale-110 active:scale-125"])},null,2)])],10,me)])),128))])])]),z(oe,{modelValue:t.value,"onUpdate:modelValue":i[1]||(i[1]=e=>t.value=e),"has-close-button":!1,position:"absolute",class:"mt-3",style:q({height:`calc(100vh - ${$(p)}px)`})},{default:D(()=>[z(re,{class:"pt-6",categories:a.categories},null,8,["categories"])]),_:1},8,["modelValue","style"])],2))}});export{he as default};