cloudcommerce 0.26.6 → 0.26.7

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 (231) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/ecomplus-stores/barra-doce/functions/many/package.json +3 -3
  3. package/ecomplus-stores/barra-doce/functions/ssr/package.json +6 -6
  4. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopHeader.vue +4 -1
  5. package/ecomplus-stores/barra-doce/functions/with-apps/package.json +3 -3
  6. package/ecomplus-stores/barra-doce/package.json +2 -2
  7. package/ecomplus-stores/barra-doce/scripts/install.sh +12 -2
  8. package/ecomplus-stores/iluminim/scripts/install.sh +12 -2
  9. package/ecomplus-stores/monocard/.firebaserc +1 -1
  10. package/ecomplus-stores/monocard/.github/build-and-deploy +1 -0
  11. package/ecomplus-stores/monocard/.github/workflows/build-and-deploy.yml +1 -0
  12. package/ecomplus-stores/monocard/README.md +11 -82
  13. package/ecomplus-stores/monocard/SETUP.md +129 -0
  14. package/ecomplus-stores/monocard/{README.pt-BR.md → SETUP.pt-BR.md} +39 -12
  15. package/ecomplus-stores/monocard/functions/config.json +1 -1
  16. package/ecomplus-stores/monocard/functions/{passport → many}/index.js +5 -0
  17. package/ecomplus-stores/monocard/functions/{events → many}/package.json +4 -3
  18. package/ecomplus-stores/monocard/functions/ssr/.eslintrc.cjs +1 -1
  19. package/ecomplus-stores/monocard/functions/ssr/content/blog/.gitkeep +0 -0
  20. package/ecomplus-stores/monocard/functions/ssr/content/extra-pages/contato.json +11 -0
  21. package/ecomplus-stores/monocard/functions/ssr/content/extra-pages/terms.json +11 -0
  22. package/ecomplus-stores/monocard/functions/ssr/content/extra-pages/trocas.json +11 -0
  23. package/ecomplus-stores/monocard/functions/ssr/content/layout.json +25 -10
  24. package/ecomplus-stores/monocard/functions/ssr/content/pages/home.json +63 -0
  25. package/ecomplus-stores/monocard/functions/ssr/content/pages/products.json +19 -0
  26. package/ecomplus-stores/monocard/functions/ssr/content/settings.json +22 -2
  27. package/ecomplus-stores/monocard/functions/ssr/package.json +8 -9
  28. package/ecomplus-stores/monocard/functions/ssr/public/admin/.gitkeep +0 -0
  29. package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/ecom-icon.png +0 -0
  30. package/ecomplus-stores/monocard/functions/ssr/src/assets/card.css +99 -0
  31. package/ecomplus-stores/monocard/functions/ssr/src/assets/style.css +74 -0
  32. package/ecomplus-stores/monocard/functions/ssr/src/components/AccountMenu.vue +5 -14
  33. package/ecomplus-stores/monocard/functions/ssr/src/components/Banner.vue +59 -0
  34. package/ecomplus-stores/monocard/functions/ssr/src/components/BannersGrid.astro +25 -0
  35. package/ecomplus-stores/monocard/functions/ssr/src/components/Breadcrumbs.astro +44 -0
  36. package/ecomplus-stores/monocard/functions/ssr/src/components/CartItem.vue +64 -0
  37. package/ecomplus-stores/monocard/functions/ssr/src/components/CartSidebar.vue +66 -0
  38. package/ecomplus-stores/monocard/functions/ssr/src/components/DemoVideo.vue +8 -3
  39. package/ecomplus-stores/monocard/functions/ssr/src/components/DocDescription.astro +30 -0
  40. package/ecomplus-stores/monocard/functions/ssr/src/components/FeatureTabs.vue +2 -2
  41. package/ecomplus-stores/monocard/functions/ssr/src/components/LottiePhoneNFC.vue +12 -9
  42. package/ecomplus-stores/monocard/functions/ssr/src/components/MonocardCustomizer.vue +8 -105
  43. package/ecomplus-stores/monocard/functions/ssr/src/components/Prices.vue +10 -27
  44. package/ecomplus-stores/monocard/functions/ssr/src/components/ProductCard.vue +117 -0
  45. package/ecomplus-stores/monocard/functions/ssr/src/components/ProductShelf.vue +57 -0
  46. package/ecomplus-stores/monocard/functions/ssr/src/components/ShopFooter.vue +123 -0
  47. package/ecomplus-stores/monocard/functions/ssr/src/components/ShopHeader.vue +85 -32
  48. package/ecomplus-stores/monocard/functions/ssr/src/components/ShopHeaderMenu.vue +1 -1
  49. package/ecomplus-stores/monocard/functions/ssr/src/components/ShopSidenav.vue +3 -3
  50. package/ecomplus-stores/monocard/functions/ssr/src/components/ShopSidenavCategory.vue +2 -2
  51. package/ecomplus-stores/monocard/functions/ssr/src/env.d.ts +9 -1
  52. package/ecomplus-stores/monocard/functions/ssr/src/layouts/Base.astro +9 -44
  53. package/ecomplus-stores/monocard/functions/ssr/src/layouts/PageFooter.astro +52 -0
  54. package/ecomplus-stores/monocard/functions/ssr/src/layouts/PageHeader.astro +35 -0
  55. package/ecomplus-stores/monocard/functions/ssr/src/main/Fallback.astro +0 -5
  56. package/ecomplus-stores/monocard/functions/ssr/src/main/Home.astro +6 -12
  57. package/ecomplus-stores/monocard/functions/ssr/src/main/Sections.astro +38 -0
  58. package/ecomplus-stores/monocard/functions/ssr/src/main/Wildcard.astro +4 -18
  59. package/ecomplus-stores/monocard/functions/ssr/src/pages/[...slug].astro +15 -9
  60. package/ecomplus-stores/monocard/functions/ssr/src/pages/comprar/index.astro +19 -9
  61. package/ecomplus-stores/monocard/functions/ssr/src/pages/index.astro +16 -10
  62. package/ecomplus-stores/monocard/functions/ssr/src/pages/~fallback.astro +25 -0
  63. package/ecomplus-stores/monocard/functions/ssr/src/scripts/InlineScripts.astro +6 -6
  64. package/ecomplus-stores/monocard/functions/ssr/tailwind.config.cjs +1 -11
  65. package/ecomplus-stores/monocard/functions/{modules → with-apps}/index.js +3 -0
  66. package/ecomplus-stores/monocard/functions/{modules → with-apps}/package.json +4 -3
  67. package/ecomplus-stores/monocard/package.json +4 -1
  68. package/ecomplus-stores/monocard/scripts/install.sh +12 -2
  69. package/ecomplus-stores/tia-sonia/scripts/install.sh +12 -2
  70. package/package.json +4 -4
  71. package/packages/api/package.json +1 -1
  72. package/packages/apps/affilate-program/package.json +1 -1
  73. package/packages/apps/correios/package.json +1 -1
  74. package/packages/apps/custom-payment/package.json +1 -1
  75. package/packages/apps/custom-shipping/package.json +1 -1
  76. package/packages/apps/datafrete/package.json +1 -1
  77. package/packages/apps/discounts/package.json +1 -1
  78. package/packages/apps/emails/package.json +1 -1
  79. package/packages/apps/fb-conversions/package.json +2 -2
  80. package/packages/apps/flash-courier/package.json +1 -1
  81. package/packages/apps/frenet/package.json +1 -1
  82. package/packages/apps/galaxpay/package.json +1 -1
  83. package/packages/apps/google-analytics/package.json +1 -1
  84. package/packages/apps/jadlog/package.json +1 -1
  85. package/packages/apps/loyalty-points/package.json +1 -1
  86. package/packages/apps/melhor-envio/package.json +1 -1
  87. package/packages/apps/mercadopago/package.json +1 -1
  88. package/packages/apps/pagarme/package.json +2 -2
  89. package/packages/apps/paghiper/package.json +1 -1
  90. package/packages/apps/pix/package.json +1 -1
  91. package/packages/apps/tiny-erp/package.json +1 -1
  92. package/packages/apps/webhooks/package.json +1 -1
  93. package/packages/cli/package.json +2 -2
  94. package/packages/config/package.json +1 -1
  95. package/packages/emails/package.json +1 -1
  96. package/packages/eslint/package.json +3 -3
  97. package/packages/events/package.json +1 -1
  98. package/packages/feeds/package.json +1 -1
  99. package/packages/firebase/package.json +2 -2
  100. package/packages/i18n/package.json +1 -1
  101. package/packages/modules/package.json +1 -1
  102. package/packages/passport/package.json +1 -1
  103. package/packages/ssr/lib/firebase/serve-storefront.js +23 -8
  104. package/packages/ssr/lib/firebase/serve-storefront.js.map +1 -1
  105. package/packages/ssr/package.json +2 -2
  106. package/packages/ssr/src/firebase/serve-storefront.ts +24 -8
  107. package/packages/storefront/dist/client/_astro/{Carousel.9ad2e1dc.js → Carousel.4bf71bce.js} +1 -1
  108. package/packages/storefront/dist/client/_astro/{CartSidebar.a6c6a885.js → CartSidebar.05b12b39.js} +1 -1
  109. package/packages/storefront/dist/client/_astro/{HeroSlider.ee1e6200.js → HeroSlider.fe108a14.js} +1 -1
  110. package/packages/storefront/dist/client/_astro/{PitchBar.6111676e.js → PitchBar.2c821b77.js} +1 -1
  111. package/packages/storefront/dist/client/_astro/{Prices.04ff8fce.js → Prices.78eb0a61.js} +1 -1
  112. package/packages/storefront/dist/client/_astro/{ProductShelf.085721d6.js → ProductShelf.46d8a51c.js} +1 -1
  113. package/packages/storefront/dist/client/_astro/ShopHeader.3694a82b.js +4 -0
  114. package/packages/storefront/dist/client/_astro/_...slug_.a4a7a874.css +1 -0
  115. package/packages/storefront/dist/client/_astro/ecom-icon_CDmhA.png +0 -0
  116. package/packages/storefront/dist/client/_astro/ecom-icon_Z27EX9f.png +0 -0
  117. package/packages/storefront/dist/client/_astro/ecom-icon_Zo1CLq.png +0 -0
  118. package/packages/storefront/dist/client/_astro/{firebase-app.8c541cce.js → firebase-app.3f59f3c7.js} +3 -3
  119. package/packages/storefront/dist/client/_astro/headphone_1Ekzdh.avif +0 -0
  120. package/packages/storefront/dist/client/_astro/headphone_Z1GbHcH.webp +0 -0
  121. package/packages/storefront/dist/client/_astro/{hoisted.85fdcf03.js → hoisted.648beb9d.js} +1 -1
  122. package/packages/storefront/dist/client/_astro/index.fadf28bd.js +1 -0
  123. package/packages/storefront/dist/client/_astro/logo_144owC.webp +0 -0
  124. package/packages/storefront/dist/client/_astro/logo_1ug3XF.png +0 -0
  125. package/packages/storefront/dist/client/_astro/logo_Z1EIN1I.avif +0 -0
  126. package/packages/storefront/dist/client/_astro/{modules-info.e5d77bf3.js → modules-info.df822732.js} +1 -1
  127. package/packages/storefront/dist/client/_astro/passion_1LvKlp.webp +0 -0
  128. package/packages/storefront/dist/client/_astro/passion_2PSWs.avif +0 -0
  129. package/packages/storefront/dist/client/_astro/rect8589_1A8K2Q.webp +0 -0
  130. package/packages/storefront/dist/client/_astro/rect8589_1ND0he.png +0 -0
  131. package/packages/storefront/dist/client/_astro/rect8589_1mIaKd.png +0 -0
  132. package/packages/storefront/dist/client/_astro/rect8589_LhopI.avif +0 -0
  133. package/packages/storefront/dist/client/_astro/rect8589_Z1NFjiR.avif +0 -0
  134. package/packages/storefront/dist/client/_astro/rect8589_Z2a06Gx.png +0 -0
  135. package/packages/storefront/dist/client/_astro/rect8589_Z2nulUU.webp +0 -0
  136. package/packages/storefront/dist/client/_astro/rect8589_ZH7hsH.avif +0 -0
  137. package/packages/storefront/dist/client/_astro/rect8589_ZorpIx.webp +0 -0
  138. package/packages/storefront/dist/client/_astro/rect859_1CcLjM.avif +0 -0
  139. package/packages/storefront/dist/client/_astro/rect859_1IVKep.png +0 -0
  140. package/packages/storefront/dist/client/_astro/rect859_1zkdb4.webp +0 -0
  141. package/packages/storefront/dist/client/_astro/rect859_299fN7.avif +0 -0
  142. package/packages/storefront/dist/client/_astro/rect859_CnIof.png +0 -0
  143. package/packages/storefront/dist/client/_astro/rect859_Z1OtQaE.avif +0 -0
  144. package/packages/storefront/dist/client/_astro/rect859_flB3g.png +0 -0
  145. package/packages/storefront/dist/client/_astro/rect859_rsWaw.webp +0 -0
  146. package/packages/storefront/dist/client/_astro/rect859_sLbkT.webp +0 -0
  147. package/packages/storefront/dist/client/_astro/rect89_1yf5jS.avif +0 -0
  148. package/packages/storefront/dist/client/_astro/rect89_GQBli.webp +0 -0
  149. package/packages/storefront/dist/client/~fallback.html +67 -0
  150. package/packages/storefront/dist/client/~index.html +113 -0
  151. package/packages/storefront/dist/server/chunks/{CartSidebar.41b20543.mjs → CartSidebar.4179ad81.mjs} +4 -12
  152. package/packages/storefront/dist/server/chunks/{SearchModal.5f5e6a15.mjs → SearchModal.146ce2f7.mjs} +4 -11
  153. package/packages/storefront/dist/server/chunks/{endpoint@_@js.11be892a.mjs → _...05c626ea.mjs} +3 -10
  154. package/packages/storefront/dist/server/chunks/{account@_@astro.204fba92.mjs → account@_@astro.5eaddaf8.mjs} +2 -9
  155. package/packages/storefront/dist/server/chunks/{index@_@astro.19e0f502.mjs → index@_@astro.25a343cc.mjs} +3 -10
  156. package/packages/storefront/dist/server/chunks/{index@_@astro.b37a6ac9.mjs → index@_@astro.2d2f2e33.mjs} +3 -10
  157. package/packages/storefront/dist/server/chunks/pages/{_...slug_.astro.36e8882b.mjs → _...slug_.astro.0808946e.mjs} +1836 -450
  158. package/packages/storefront/dist/server/chunks/pages/index.astro.d4145872.mjs +186 -0
  159. package/packages/storefront/dist/server/chunks/pages/{~fallback.astro.ba4c2475.mjs → ~fallback.astro.84d4765b.mjs} +6 -23
  160. package/packages/storefront/dist/server/chunks/{~fallback@_@astro.6bb4c4b4.mjs → ~fallback@_@astro.86d710c3.mjs} +3 -10
  161. package/packages/storefront/dist/server/entry.mjs +7 -14
  162. package/packages/storefront/dist/server/images.dist.csv +30 -0
  163. package/packages/storefront/dist/server/images.src.csv +11 -0
  164. package/packages/storefront/dist/server/renderers.mjs +2 -9
  165. package/packages/storefront/dist/server/static-builds.csv +51 -0
  166. package/packages/storefront/package.json +3 -3
  167. package/packages/storefront/scripts/build-prod.sh +3 -2
  168. package/packages/storefront/server.d.ts +1 -0
  169. package/packages/storefront/src/lib/assets/base.css +8 -0
  170. package/packages/storefront/src/lib/assets/reset.css +11 -2
  171. package/packages/storefront/src/lib/components/ContentClearfix.astro +4 -1
  172. package/packages/storefront/src/lib/components/Drawer.vue +1 -1
  173. package/packages/storefront/src/lib/layouts/BaseBody.astro +3 -1
  174. package/packages/storefront/src/lib/layouts/BaseHead.astro +8 -3
  175. package/packages/storefront/src/lib/layouts/use-page-header.ts +2 -2
  176. package/packages/test-base/package.json +1 -1
  177. package/packages/types/package.json +1 -1
  178. package/pnpm-workspace.yaml +2 -0
  179. package/ecomplus-stores/monocard/functions/core/index.js +0 -9
  180. package/ecomplus-stores/monocard/functions/core/package.json +0 -20
  181. package/ecomplus-stores/monocard/functions/events/index.js +0 -9
  182. package/ecomplus-stores/monocard/functions/passport/package.json +0 -21
  183. package/ecomplus-stores/monocard/functions/ssr/content/blog.json +0 -18
  184. package/ecomplus-stores/monocard/functions/ssr/content/brands.json +0 -24
  185. package/ecomplus-stores/monocard/functions/ssr/content/categories.json +0 -24
  186. package/ecomplus-stores/monocard/functions/ssr/content/collections.json +0 -24
  187. package/ecomplus-stores/monocard/functions/ssr/content/home.json +0 -45
  188. package/ecomplus-stores/monocard/functions/ssr/content/maintenance.json +0 -6
  189. package/ecomplus-stores/monocard/functions/ssr/content/pages/contato.json +0 -6
  190. package/ecomplus-stores/monocard/functions/ssr/content/pages/entrega.json +0 -6
  191. package/ecomplus-stores/monocard/functions/ssr/content/pages/faq.json +0 -6
  192. package/ecomplus-stores/monocard/functions/ssr/content/pages/pagamentos.json +0 -6
  193. package/ecomplus-stores/monocard/functions/ssr/content/pages/privacidade.json +0 -6
  194. package/ecomplus-stores/monocard/functions/ssr/content/pages/sobre-nos.json +0 -6
  195. package/ecomplus-stores/monocard/functions/ssr/content/pages/termos.json +0 -6
  196. package/ecomplus-stores/monocard/functions/ssr/content/pages/trocas.json +0 -6
  197. package/ecomplus-stores/monocard/functions/ssr/content/posts/esta-loja-e-um-pwa.json +0 -9
  198. package/ecomplus-stores/monocard/functions/ssr/content/products.json +0 -32
  199. package/ecomplus-stores/monocard/functions/ssr/content/search.json +0 -8
  200. package/ecomplus-stores/monocard/functions/ssr/content/widgets/analytics.json +0 -11
  201. package/ecomplus-stores/monocard/functions/ssr/content/widgets/compre-confie.json +0 -11
  202. package/ecomplus-stores/monocard/functions/ssr/content/widgets/ebit.json +0 -11
  203. package/ecomplus-stores/monocard/functions/ssr/content/widgets/fb-pixel.json +0 -12
  204. package/ecomplus-stores/monocard/functions/ssr/content/widgets/gmc-ratings.json +0 -12
  205. package/ecomplus-stores/monocard/functions/ssr/content/widgets/minicart.json +0 -6
  206. package/ecomplus-stores/monocard/functions/ssr/content/widgets/offers-notification.json +0 -11
  207. package/ecomplus-stores/monocard/functions/ssr/content/widgets/opinioes-verificadas.json +0 -18
  208. package/ecomplus-stores/monocard/functions/ssr/content/widgets/product-card.json +0 -10
  209. package/ecomplus-stores/monocard/functions/ssr/content/widgets/product.json +0 -13
  210. package/ecomplus-stores/monocard/functions/ssr/content/widgets/search-engine.json +0 -8
  211. package/ecomplus-stores/monocard/functions/ssr/content/widgets/search.json +0 -6
  212. package/ecomplus-stores/monocard/functions/ssr/content/widgets/tag-manager.json +0 -12
  213. package/ecomplus-stores/monocard/functions/ssr/content/widgets/tawkto.json +0 -12
  214. package/ecomplus-stores/monocard/functions/ssr/content/widgets/trustvox.json +0 -15
  215. package/ecomplus-stores/monocard/functions/ssr/content/widgets/user.json +0 -5
  216. package/ecomplus-stores/monocard/functions/ssr/public/admin/config.json +0 -1
  217. package/ecomplus-stores/monocard/functions/ssr/public/assets/cms-preview.css +0 -274
  218. package/ecomplus-stores/monocard/functions/ssr/public/assets/cms.css +0 -114
  219. package/ecomplus-stores/monocard/functions/ssr/public/assets/cvv.png +0 -0
  220. package/ecomplus-stores/monocard/functions/ssr/public/assets/fonts/FavoritPro-Regular.woff2 +0 -0
  221. package/ecomplus-stores/monocard/functions/ssr/public/assets/fonts/MyriadPro-Regular.woff2 +0 -0
  222. package/ecomplus-stores/monocard/functions/ssr/public/assets/ssl-safe.png +0 -0
  223. package/ecomplus-stores/monocard/functions/ssr/src/layouts/Pages.astro +0 -50
  224. package/ecomplus-stores/monocard/functions/ssr/src/pages/fallback.astro +0 -21
  225. package/packages/storefront/dist/client/_astro/ShopHeader.7e485e35.js +0 -4
  226. package/packages/storefront/dist/client/_astro/_...slug_.b693913e.css +0 -1
  227. package/packages/storefront/dist/client/_astro/index.ea57babe.js +0 -1
  228. package/packages/storefront/dist/server/chunks/_...4a2548d2.mjs +0 -35
  229. package/packages/storefront/dist/server/chunks/pages/endpoint.js.f7a896a1.mjs +0 -119
  230. package/packages/storefront/dist/server/chunks/pages/index.astro.3145bd93.mjs +0 -1649
  231. /package/ecomplus-stores/monocard/functions/ssr/src/components/{FeatureTabs.astro → FeaturesSection.astro} +0 -0
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <aside class="flex flex-col h-screen bg-white">
3
+ <header class="px-6 py-4 flex justify-end items-center gap-3
4
+ shadow ring-1 ring-black/5 z-10">
5
+ <span class="text-right text-base text-base-600 font-medium">
6
+ {{ $t.i19myShoppingCart }}
7
+ </span>
8
+ <span class="min-w-[3rem] text-right">
9
+ <span class="ui-badge-pill-lg">
10
+ {{ totalItems }}
11
+ </span>
12
+ </span>
13
+ </header>
14
+ <article class="grow overflow-y-auto bg-base-50">
15
+ <div v-if="freeShippingFromValue" class="text-sm text-center">
16
+ <div
17
+ v-if="freeShippingFromValue > shoppingCart.subtotal"
18
+ class="p-3 secondary-subtle"
19
+ >
20
+ {{ $t.i19add$1ToEarn.replace('$1',
21
+ $money(freeShippingFromValue - shoppingCart.subtotal)) }}
22
+ <strong class="lowercase">{{ $t.i19freeShipping }}</strong>
23
+ </div>
24
+ <div v-else class="p-3 bg-success-50 text-success-800">
25
+ <i class="text-success-900 i-check mr-1"></i>
26
+ {{ $t.i19freeShippingFrom }} {{ $money(freeShippingFromValue) }}
27
+ </div>
28
+ </div>
29
+ <ul class="px-4 pt-4 pb-2">
30
+ <li v-for="(item, i) in shoppingCart.items" :key="i">
31
+ <CartItem :item="item" class="mb-3" />
32
+ </li>
33
+ </ul>
34
+ </article>
35
+ <footer class="px-5 pt-4 pb-3 ring-2 ring-black/5 z-10">
36
+ <div class="grid grid-cols-5 gap-3 items-center text-right">
37
+ <div class="col-span-2">
38
+ {{ $t.i19subtotal }}
39
+ </div>
40
+ <Prices :price="shoppingCart.subtotal" class="col-span-3 text-lg" />
41
+ </div>
42
+ <CheckoutLink class="ui-btn-lg ui-btn-primary w-full text-right my-2.5">
43
+ <i class="i-check mr-2"></i>
44
+ {{ $t.i19checkout }}
45
+ </CheckoutLink>
46
+ <a
47
+ href="#"
48
+ @click.prevent="emit('close')"
49
+ class="ui-link text-base-500 hover:text-base-700 text-sm"
50
+ >
51
+ <i class="i-arrow-left-line mr-1"></i>
52
+ {{ $t.i19continueShopping }}
53
+ </a>
54
+ </footer>
55
+ </aside>
56
+ </template>
57
+
58
+ <script setup lang="ts">
59
+ import { freeShippingFromValue } from '@@sf/state/modules-info';
60
+ import { shoppingCart, totalItems } from '@@sf/state/shopping-cart';
61
+ import CheckoutLink from '@@sf/components/CheckoutLink.vue';
62
+ import Prices from '~/components/Prices.vue';
63
+ import CartItem from '~/components/CartItem.vue';
64
+
65
+ const emit = defineEmits(['close']);
66
+ </script>
@@ -1,5 +1,10 @@
1
1
  <template>
2
- <iframe id="ytplayer" width="700" class="lozad shrink-0 max-w-full aspect-video"
3
- data-src="https://www.youtube.com/embed/u_TLiNHvrLo?autoplay=0"
4
- frameborder="0" />
2
+ <iframe
3
+ loading="lazy"
4
+ id="ytplayer"
5
+ width="700"
6
+ class="shrink-0 max-w-full aspect-video"
7
+ src="https://www.youtube.com/embed/u_TLiNHvrLo?autoplay=0"
8
+ frameborder="0"
9
+ />
5
10
  </template>
@@ -0,0 +1,30 @@
1
+ ---
2
+ import type {
3
+ Products,
4
+ Categories,
5
+ Brands,
6
+ Collections,
7
+ } from '@cloudcommerce/api/types';
8
+ import { i19description } from '@@i18n';
9
+ import ContentClearfix from '@@sf/components/ContentClearfix.astro';
10
+
11
+ export interface Props {
12
+ apiDoc: Partial<Products | Categories | Brands | Collections>;
13
+ title?: string;
14
+ }
15
+
16
+ const { apiDoc, title } = Astro.props;
17
+ const html = apiDoc.body_html || apiDoc.body_text;
18
+ ---
19
+
20
+ {html &&
21
+ <section class="ui-section">
22
+ <p class="text-2xl font-medium lowercase text-base-700">
23
+ <a href="#description" id="description">
24
+ <i class="i-link text-base-400 mr-1"></i>
25
+ {title || i19description}
26
+ </a>
27
+ </p>
28
+ <ContentClearfix html={html} />
29
+ </section>
30
+ }
@@ -43,7 +43,7 @@
43
43
  </TabList>
44
44
  <TabPanels class="text-left w-72 mx-auto sm:w-auto sm:px-5 mt-4
45
45
  md:min-h-[870px] lg:min-h-[880px] xl:min-h-[915px]">
46
- <TabPanel v-motion-fade-visible>
46
+ <TabPanel v-motion-fade>
47
47
  <div class="prose mb-8">
48
48
  <h4 class="text-2xl xl:text-3xl leading-snug mb-5">
49
49
  Conecte instantaneamente
@@ -153,7 +153,7 @@
153
153
  </a>
154
154
  </div>
155
155
  </TabPanel>
156
- <TabPanel v-motion-fade-visible>
156
+ <TabPanel v-motion-fade>
157
157
  <slot name="picture-edit" />
158
158
  <div class="flex flex-wrap md:flex-nowrap gap-x-10">
159
159
  <div class="md:basis-1/2 prose">
@@ -1,17 +1,20 @@
1
1
  <script lang="ts" setup>
2
2
  import { ref, onMounted } from 'vue';
3
- import lottie from 'lottie-web';
4
3
 
5
4
  const container = ref(null);
6
- onMounted(() => {
7
- lottie.loadAnimation({
8
- container: container.value as any as Element,
9
- renderer: 'svg',
10
- loop: true,
11
- autoplay: true,
12
- path: '/assets/lotties/phone-nfc.json',
5
+ if (!import.meta.env.SSR) {
6
+ onMounted(() => {
7
+ import('lottie-web/build/player/lottie_light').then(({ default: lottie }) => {
8
+ lottie.loadAnimation({
9
+ container: container.value as any as Element,
10
+ renderer: 'svg',
11
+ loop: true,
12
+ autoplay: true,
13
+ path: '/assets/lotties/phone-nfc.json',
14
+ });
15
+ })
13
16
  });
14
- });
17
+ }
15
18
  </script>
16
19
 
17
20
  <template>
@@ -186,7 +186,14 @@ const logoAdditionalPrice = monocardWithLogo
186
186
  </form>
187
187
  </div>
188
188
  <div class="basis-1/2 order-1">
189
- <div class="card mt-2 mb-5" :class="cardAnimationClass">
189
+ <div
190
+ class="card mt-2 mb-5"
191
+ :class="cardAnimationClass"
192
+ :style="{
193
+ '--background-color': cardBgColor,
194
+ '--color': cardTextColor,
195
+ }"
196
+ >
190
197
  <div class="card__front card__part">
191
198
  <div class="card__front-square card__square">
192
199
  <div class="text-5xl i-qr-code-line"></div>
@@ -253,107 +260,3 @@ const logoAdditionalPrice = monocardWithLogo
253
260
  </article>
254
261
  </div>
255
262
  </template>
256
-
257
- <style scoped>
258
- .card {
259
- --background-color: v-bind('cardBgColor');
260
- --color: v-bind('cardTextColor');
261
- color: var(--color);
262
- width: 320px;
263
- height: 190px;
264
- -webkit-perspective: 600px;
265
- -moz-perspective: 600px;
266
- perspective:600px;
267
- }
268
- .card__part {
269
- box-shadow: 1px 1px #aaa3a3;
270
- top: 0;
271
- position: absolute;
272
- z-index: 1000;
273
- left: 0;
274
- display: inline-block;
275
- width: 320px;
276
- height: 190px;
277
- background: var(--background-color);
278
- border-radius: 8px;
279
- -webkit-transition: all .5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
280
- -moz-transition: all .5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
281
- -ms-transition: all .5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
282
- -o-transition: all .5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
283
- transition: all .5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
284
- transform-style: preserve-3d;
285
- -webkit-transform-style: preserve-3d;
286
- -moz-transform-style: preserve-3d;
287
- backface-visibility: hidden;
288
- -webkit-backface-visibility: hidden;
289
- -moz-backface-visibility: hidden;
290
- }
291
- .card__front {
292
- padding: 18px;
293
- transform: rotateY(0);
294
- -webkit-transform: rotateY(0);
295
- -moz-transform: rotateY(0);
296
- }
297
- .card__back {
298
- display: flex;
299
- align-items: center;
300
- justify-content: space-around;
301
- transform: rotateY(-180deg);
302
- -webkit-transform: rotateY(-180deg);
303
- -moz-transform: rotateY(-180deg);
304
- }
305
- .card__back img {
306
- max-width: 256px;
307
- max-height: 154px;
308
- }
309
- .card__logo {
310
- height: 16px;
311
- }
312
- .card__front-logo{
313
- position: absolute;
314
- top: 18px;
315
- right: 18px;
316
- }
317
- .card__square {
318
- border-radius: 5px;
319
- height: 30px;
320
- }
321
- .card__space-75 {
322
- margin-top: 100px;
323
- width: 75%;
324
- float: left;
325
- }
326
- .card__space-25 {
327
- margin-top: 30px;
328
- width: 25%;
329
- float: right;
330
- text-align: right;
331
- }
332
- .card__label {
333
- font-size: 10px;
334
- text-transform: uppercase;
335
- color: rgba(255,255,255,0.8);
336
- letter-spacing: 1px;
337
- }
338
- .card__info {
339
- margin-bottom: 0;
340
- margin-top: 5px;
341
- font-size: 16px;
342
- line-height: 18px;
343
- color: var(--color);
344
- letter-spacing: 1px;
345
- text-transform: uppercase;
346
- }
347
- .card:not(.card--no-back):hover .card__front,
348
- .card--show-back .card__front {
349
- transform: rotateY(180deg);
350
- -webkit-transform: rotateY(180deg);
351
- -moz-transform: rotateY(180deg);
352
- }
353
- .card:not(.card--no-back):hover .card__back,
354
- .card--show-back .card__back {
355
- transform: rotateY(0deg);
356
- -webkit-transform: rotateY(0deg);
357
- -moz-transform: rotateY(0deg);
358
- }
359
- </style>
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <div
3
- class="text-base-600"
3
+ class="text-base-600
4
+ [&>div]:[font-size:90%] [&_small]:[font-size:92%] [&_small]:lowercase"
4
5
  :class="isBig ? 'text-lg' : null"
5
- data-prices
6
6
  >
7
- <span v-if="comparePrice" class="text-base-500 mr-1">
7
+ <span v-if="comparePrice" class="text-base-500 mr-1 text-[87%]">
8
8
  <small v-if="isLiteral">
9
9
  {{ `${$t.i19from} ` }}
10
10
  </small>
@@ -26,7 +26,7 @@
26
26
  <div v-if="cashbackValue && hasCashback" class="relative z-10">
27
27
  <span :data-tooltip="$t.i19get$1back
28
28
  .replace('$1', $percentage(cashbackPercentage))">
29
- <i class="i-cashback mr-1"></i>
29
+ <i class="i-arrow-go-back-fill mr-1"></i>
30
30
  <span class="font-medium">
31
31
  {{ $money(cashbackValue) }}
32
32
  </span>
@@ -45,7 +45,7 @@
45
45
  </small>
46
46
  <span>{{ $money(installmentValue) }}</span>
47
47
  <small v-if="!monthlyInterest && isLiteral">
48
- {{ $t.i19interestFree }}
48
+ {{ ` ${$t.i19interestFree}` }}
49
49
  </small>
50
50
  </div>
51
51
  </Fade>
@@ -64,16 +64,12 @@
64
64
  </template>
65
65
 
66
66
  <script setup lang="ts">
67
- import type { Products, ListPaymentsResponse } from '@cloudcommerce/types';
68
- import usePrices from '@@sf/composables/use-prices';
67
+ import {
68
+ type Props as UsePricesProps,
69
+ usePrices,
70
+ } from '@@sf/composables/use-prices';
69
71
 
70
- export interface Props {
71
- product?: Partial<Products> & { price: number, final_price?: number };
72
- price?: number;
73
- basePrice?: number;
74
- isAmountTotal?: boolean;
75
- installmentsOption?: ListPaymentsResponse['installments_option'];
76
- discountOption?: ListPaymentsResponse['discount_option'];
72
+ export interface Props extends UsePricesProps {
77
73
  isBig?: boolean;
78
74
  isLiteral?: boolean;
79
75
  hasCashback?: boolean;
@@ -97,16 +93,3 @@ const {
97
93
  discountLabel,
98
94
  } = usePrices(props);
99
95
  </script>
100
-
101
- <style>
102
- [data-prices] > span {
103
- font-size: 87%;
104
- }
105
- [data-prices] > div {
106
- font-size: 90%;
107
- }
108
- [data-prices] small {
109
- @apply lowercase;
110
- font-size: 92%;
111
- }
112
- </style>
@@ -0,0 +1,117 @@
1
+ <template>
2
+ <article
3
+ ref="card"
4
+ :data-sku="product.sku"
5
+ class="relative h-full max-w-[350px] mx-auto py-3 group"
6
+ >
7
+ <ALink
8
+ :href="link"
9
+ class="flex flex-col h-full rounded overflow-hidden
10
+ group-hover:shadow group-hover:ring-1 ring-black/5"
11
+ >
12
+ <div class="aspect-square p-2
13
+ motion-safe:group-hover:scale-110 transition-transform">
14
+ <div class="relative w-full h-full bg-white rounded overflow-hidden
15
+ group-hover:rounded-none">
16
+ <span v-if="images?.length" class="text-xs text-opacity-70">
17
+ <AImg
18
+ :picture="images[0]"
19
+ :alt="title"
20
+ class="absolute top-0 left-0 block w-full h-full object-cover"
21
+ />
22
+ <AImg
23
+ v-if="images[1] && wasHoveredOnce"
24
+ :picture="images[1]"
25
+ :alt="title"
26
+ class="absolute top-0 left-0 block w-full h-full object-cover
27
+ opacity-0 group-hover:opacity-100 transition-opacity
28
+ motion-safe:duration-300 text-transparent z-10"
29
+ />
30
+ </span>
31
+ <div
32
+ v-else
33
+ class="w-full h-full bg-gradient-to-br from-base-50/20 to-base-100"
34
+ />
35
+ </div>
36
+ </div>
37
+ <span
38
+ v-if="discountPercentage"
39
+ class=":uno: absolute top-9 right-2
40
+ group-hover:scale-110 group-hover:translate-x-2 transition-transform
41
+ bg-secondary/70 text-on-secondary text-xs
42
+ py-0.5 pr-1.5 pl-3 [clip-path:polygon(20%_0,100%_0,100%_100%,0_100%)]"
43
+ >
44
+ -<strong>{{ discountPercentage }}</strong>%
45
+ </span>
46
+ <div class="relative flex flex-col grow justify-between p-4
47
+ group-hover:backdrop-blur-md bg-white/40 z-10">
48
+ <component
49
+ :is="headingTag"
50
+ class="ui-link no-underline line-clamp-2"
51
+ :class="[
52
+ isActive ? 'text-base-700' : 'text-base-500',
53
+ link ? 'group-hover:underline group-hover:text-primary' : null,
54
+ ]"
55
+ >
56
+ {{ title }}
57
+ </component>
58
+ <div class="pt-2">
59
+ <div v-if="isActive">
60
+ <Prices :product="product" />
61
+ </div>
62
+ <span v-else class="ui-badge bg-warning-100 text-warning-700">
63
+ {{ !isInStock ? $t.i19outOfStock : $t.i19inactive }}
64
+ </span>
65
+ </div>
66
+ <button
67
+ v-if="isActive && !hasVariations"
68
+ class=":uno: hidden md:block ui-btn-sm ui-btn-primary
69
+ absolute -top-6 left-0 w-full rounded-none
70
+ opacity-0 group-hover:opacity-100 transition -z-10 group-hover:z-10"
71
+ @click.prevent="addProductToCart(product)"
72
+ >
73
+ <span class="inline-block h-4 w-4 leading-none text-base text-center
74
+ bg-on-primary text-primary opacity-80 rounded-full mr-1">
75
+ &plus;
76
+ </span>
77
+ {{ $t.i19addToCart }}
78
+ </button>
79
+ </div>
80
+ </ALink>
81
+ </article>
82
+ </template>
83
+
84
+ <script setup lang="ts">
85
+ import { ref } from 'vue';
86
+ import { watchOnce, useElementHover } from '@vueuse/core';
87
+ import { addProductToCart } from '@@sf/state/shopping-cart';
88
+ import {
89
+ type Props as UseProductCardProps,
90
+ useProductCard,
91
+ } from '@@sf/composables/use-product-card';
92
+ import Prices from '~/components/Prices.vue';
93
+
94
+ export type Props = UseProductCardProps & {
95
+ headingTag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
96
+ };
97
+
98
+ const props = withDefaults(defineProps<Props>(), {
99
+ headingTag: 'h3',
100
+ });
101
+ const {
102
+ product,
103
+ title,
104
+ link,
105
+ images,
106
+ isInStock,
107
+ isActive,
108
+ discountPercentage,
109
+ hasVariations,
110
+ } = useProductCard(props as UseProductCardProps);
111
+ const card = ref<HTMLElement | null>(null);
112
+ const isHovered = useElementHover(card);
113
+ const wasHoveredOnce = ref(false);
114
+ watchOnce(isHovered, () => {
115
+ wasHoveredOnce.value = true;
116
+ });
117
+ </script>
@@ -0,0 +1,57 @@
1
+ <template>
2
+ <section class="ui-section">
3
+ <div v-if="title" class="max-w-prose mx-auto text-center mb-2">
4
+ <h2 class="ui-text-brand text-3xl">
5
+ <ALink :href="titleLink" :class="titleLink ? 'ui-link' : 'text-base-700'">
6
+ {{ title }}
7
+ </ALink>
8
+ </h2>
9
+ </div>
10
+ <Carousel class="group/shelf">
11
+ <li
12
+ v-for="product in products"
13
+ :key="product._id"
14
+ class="basis-1/2 md:basis-1/3 lg:basis-1/4 shrink-0"
15
+ >
16
+ <ProductCard :product="product" />
17
+ </li>
18
+ <template #controls>
19
+ <div
20
+ v-show="products.length > 2"
21
+ class="text-3xl lg:text-2xl leading-none text-primary
22
+ lg:opacity-0 group-hover/shelf:opacity-90 transition-opacity"
23
+ >
24
+ <CarouselControl class="!top-1/2 !-left-4 w-12 h-12
25
+ bg-transparent lg:bg-white/80 lg:hover:bg-primary-300/60 rounded-full
26
+ lg:shadow-sm lg:ring-1 ring-black/5" is-prev />
27
+ <CarouselControl class="!top-1/2 !-right-4 w-12 h-12
28
+ bg-transparent lg:bg-white/80 lg:hover:bg-primary-300/60 rounded-full
29
+ lg:shadow-sm lg:ring-1 ring-black/5" />
30
+ </div>
31
+ </template>
32
+ </Carousel>
33
+ </section>
34
+ </template>
35
+
36
+ <script setup lang="ts">
37
+ import {
38
+ type Props as UseProductShelfProps,
39
+ useProductShelf,
40
+ } from '@@sf/composables/use-product-shelf';
41
+ import Carousel from '@@sf/components/Carousel.vue';
42
+ import CarouselControl from '@@sf/components/CarouselControl.vue';
43
+ import ProductCard from '~/components/ProductCard.vue';
44
+
45
+ export interface Props extends UseProductShelfProps {}
46
+
47
+ const props = defineProps<Props>();
48
+ const {
49
+ title,
50
+ titleLink,
51
+ fetching,
52
+ products,
53
+ } = useProductShelf(props);
54
+ if (import.meta.env.SSR) {
55
+ await fetching;
56
+ }
57
+ </script>
@@ -0,0 +1,123 @@
1
+ <template>
2
+ <footer class="w-screen bg-black text-base-300 border-t border-base-100 py-2">
3
+ <div class="ui-section">
4
+ <div class="pb-7 border-b border-base-200
5
+ flex justify-between flex-wrap lg:flex-nowrap sm:gap-x-10 gap-y-5">
6
+ <div class="shrink">
7
+ <slot name="logo" />
8
+ <div v-if="$settings.description" class="prose prose-invert">
9
+ <p>{{ $settings.description }}</p>
10
+ </div>
11
+ <div class="flex gap-2 text-base-400">
12
+ <span v-for="(href, network) in socialNetworks" :key="network">
13
+ <SocialNetworkLink :network="network" class="p-1 hover:text-primary">
14
+ <template v-if="network === 'whatsapp'" #append>
15
+ <span class="ml-1 text-sm text-base-300">
16
+ {{ $settings.whatsapp }}
17
+ </span>
18
+ </template>
19
+ </SocialNetworkLink>
20
+ </span>
21
+ </div>
22
+ <div v-if="$settings.address || $settings.phone" class="mt-3 text-base-200">
23
+ <address v-if="$settings.address" class="inline-block mr-4">
24
+ {{ $settings.address }}
25
+ </address>
26
+ <ALink
27
+ v-if="$settings.phone"
28
+ :href="`tel:${$settings.phone.replace(/\D/g, '')}`"
29
+ class="hover:text-primary"
30
+ >
31
+ <i class="i-phone mr-0.5"></i>
32
+ {{ $settings.phone }}
33
+ </ALink>
34
+ </div>
35
+ </div>
36
+ <div v-if="pageLinks?.length" class="basis-1/2 sm:basis-auto">
37
+ <div class="text-lg font-medium mb-2.5">
38
+ {{ pagesColTitle || $t.i19institutional }}
39
+ </div>
40
+ <ul
41
+ class="text-sm"
42
+ :class="pageLinks.length > 5
43
+ ? 'grid md:grid-cols-2 gap-x-5 gap-y-1.5' : 'space-y-1.5'"
44
+ >
45
+ <li v-for="({ title, href }, i) in pageLinks" :key="`p-${i}`">
46
+ <ALink :href="href" class="ui-link text-base-50">
47
+ {{ title }}
48
+ </ALink>
49
+ </li>
50
+ </ul>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ <div class="ui-section">
55
+ <div class="flex flex-wrap lg:flex-nowrap justify-between items-start gap-5">
56
+ <ul class="flex gap-y-3 gap-x-6 lg:gap-x-8 items-center
57
+ md:flex-wrap mx-auto md:mx-0 overflow-x-auto md:overflow-hidden">
58
+ <li v-for="(stamp, i) in stamps" :key="i">
59
+ <ALink :href="stamp.href?.replace('{domain}', $settings.domain || '')">
60
+ <slot :name="`picture-${i}`" />
61
+ <span v-if="!stamp.img" class="flex items-center">
62
+ <span
63
+ v-if="stamp.icon"
64
+ class="text-4xl mr-2
65
+ [&>*]:bg-gradient-to-br [&>*]:from-success-200 [&>*]:to-success-700"
66
+ >
67
+ <i v-if="stamp.icon === 'lock'" class="i-lock-closed"></i>
68
+ <i v-else-if="stamp.icon === 'check'" class="i-check-badge"></i>
69
+ <i v-else class="i-arrow-path-rounded-square"></i>
70
+ </span>
71
+ <span class="text-sm font-medium text-base-300 max-w-[140px]">
72
+ {{ stamp.alt }}
73
+ <i
74
+ v-if="stamp.href && stamp.href.charAt(0) !== '/'"
75
+ class="bg-base-400 ml-0.5 i-arrow-top-right-on-square"
76
+ ></i>
77
+ </span>
78
+ </span>
79
+ </ALink>
80
+ </li>
81
+ </ul>
82
+ <div class="flex flex-wrap md:flex-nowrap justify-end items-center
83
+ gap-4 text-2xl mx-auto md:mx-0 overflow-x-auto md:overflow-hidden">
84
+ <PaymentMethodFlag
85
+ v-for="paymentMethod in $settings.payment_methods"
86
+ :key="paymentMethod"
87
+ :flag="paymentMethod"
88
+ class="!text-base-50"
89
+ />
90
+ </div>
91
+ </div>
92
+ <div class="mt-7 text-xs text-center md:text-left
93
+ md:flex justify-between gap-4">
94
+ <div class="mb-3 md:mb-0">
95
+ @ {{ new Date().getFullYear() }} {{ $settings.corporate_name }}
96
+ {{ $settings.address ? `/ ${$settings.address}` : '' }}
97
+ / {{ $settings.doc_number }}
98
+ </div>
99
+ <ALink href="https://www.ecomplus.io/" class="italic text-[rgb(239,235,240)]">
100
+ powered by <b>E-Com Plus</b>
101
+ </ALink>
102
+ </div>
103
+ </div>
104
+ </footer>
105
+ </template>
106
+
107
+ <script setup lang="ts">
108
+ import type { LayoutContent } from '@@sf/content';
109
+ import { socialNetworks } from '@@sf/sf-lib';
110
+ import SocialNetworkLink from '@@sf/components/SocialNetworkLink.vue';
111
+ import PaymentMethodFlag from '@@sf/components/PaymentMethodFlag.vue';
112
+
113
+ export interface Props {
114
+ stamps?: LayoutContent['footer']['stamps'];
115
+ pageLinks?: Array<{
116
+ title: string;
117
+ href: string;
118
+ }>;
119
+ pagesColTitle?: string;
120
+ }
121
+
122
+ defineProps<Props>();
123
+ </script>