cloudcommerce 0.33.0 → 0.33.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/.github/workflows/test-apps.yml +2 -2
  2. package/CHANGELOG.md +37 -0
  3. package/action.yml +2 -2
  4. package/ecomplus-stores/barra-doce/.github/workflows/build-and-deploy.yml +1 -1
  5. package/ecomplus-stores/barra-doce/.github/workflows/calibreapp-image-actions.yml +1 -1
  6. package/ecomplus-stores/barra-doce/.vscode/settings.json +3 -0
  7. package/ecomplus-stores/barra-doce/functions/many/package.json +3 -3
  8. package/ecomplus-stores/barra-doce/functions/ssr/content/extra-pages/terms.json +1 -1
  9. package/ecomplus-stores/barra-doce/functions/ssr/content/pages/home.json +20 -0
  10. package/ecomplus-stores/barra-doce/functions/ssr/content/pages/products.json +2 -1
  11. package/ecomplus-stores/barra-doce/functions/ssr/content/settings.json +4 -1
  12. package/ecomplus-stores/barra-doce/functions/ssr/package.json +9 -8
  13. package/ecomplus-stores/barra-doce/functions/ssr/public/robots.txt +1 -1
  14. package/ecomplus-stores/barra-doce/functions/ssr/src/assets/style.css +15 -4
  15. package/ecomplus-stores/barra-doce/functions/ssr/src/components/AccountMenu.vue +5 -3
  16. package/ecomplus-stores/barra-doce/functions/ssr/src/components/AccountPage.vue +62 -0
  17. package/ecomplus-stores/barra-doce/functions/ssr/src/components/Banner.vue +6 -3
  18. package/ecomplus-stores/barra-doce/functions/ssr/src/components/Breadcrumbs.astro +44 -0
  19. package/ecomplus-stores/barra-doce/functions/ssr/src/components/CartItem.vue +11 -11
  20. package/ecomplus-stores/barra-doce/functions/ssr/src/components/CartSidebar.vue +16 -13
  21. package/ecomplus-stores/barra-doce/functions/ssr/src/components/CheckoutPage.vue +33 -0
  22. package/ecomplus-stores/barra-doce/functions/ssr/src/components/Collapse.vue +19 -0
  23. package/ecomplus-stores/barra-doce/functions/ssr/src/components/DocDescription.vue +28 -0
  24. package/ecomplus-stores/barra-doce/functions/ssr/src/components/FooterStamps.vue +62 -0
  25. package/ecomplus-stores/barra-doce/functions/ssr/src/components/HeroSlider.vue +14 -9
  26. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ImagesGallery.vue +151 -0
  27. package/ecomplus-stores/barra-doce/functions/ssr/src/components/LoginForm.vue +107 -0
  28. package/ecomplus-stores/barra-doce/functions/ssr/src/components/PitchBar.vue +6 -8
  29. package/ecomplus-stores/barra-doce/functions/ssr/src/components/Prices.vue +3 -3
  30. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ProductCard.vue +22 -22
  31. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ProductDetails.vue +122 -0
  32. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ProductShelf.vue +10 -12
  33. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ProductSpecifications.vue +42 -0
  34. package/ecomplus-stores/barra-doce/functions/ssr/src/components/SearchModal.vue +1 -1
  35. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopFooter.vue +7 -58
  36. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopHeader.vue +33 -34
  37. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopHeaderMenu.vue +5 -5
  38. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopHeaderSubmenu.vue +19 -11
  39. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopSidenav.vue +10 -11
  40. package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopSidenavCategory.vue +9 -10
  41. package/ecomplus-stores/barra-doce/functions/ssr/src/components/SkuSelector.vue +58 -0
  42. package/ecomplus-stores/barra-doce/functions/ssr/src/layouts/PageFooter.astro +3 -1
  43. package/ecomplus-stores/barra-doce/functions/ssr/src/layouts/PageHeader.astro +1 -2
  44. package/ecomplus-stores/barra-doce/functions/ssr/src/main/Home.astro +1 -2
  45. package/ecomplus-stores/barra-doce/functions/ssr/src/main/Sections.astro +25 -2
  46. package/ecomplus-stores/barra-doce/functions/ssr/src/main/Wildcard.astro +12 -12
  47. package/ecomplus-stores/barra-doce/functions/ssr/src/pages/[...slug].astro +2 -0
  48. package/ecomplus-stores/barra-doce/functions/ssr/src/pages/_vue.ts +17 -1
  49. package/ecomplus-stores/barra-doce/functions/ssr/src/pages/app/account.astro +34 -0
  50. package/ecomplus-stores/barra-doce/functions/ssr/src/pages/app/index.astro +62 -0
  51. package/ecomplus-stores/barra-doce/functions/ssr/src/pages/index.astro +0 -5
  52. package/ecomplus-stores/barra-doce/functions/ssr/src/pages/~fallback.astro +0 -2
  53. package/ecomplus-stores/barra-doce/functions/ssr/tailwind.config.cjs +0 -1
  54. package/ecomplus-stores/barra-doce/functions/with-apps/package.json +3 -3
  55. package/ecomplus-stores/barra-doce/package.json +2 -2
  56. package/ecomplus-stores/monocard/.editorconfig +13 -0
  57. package/ecomplus-stores/monocard/.eslintrc.cjs +1 -1
  58. package/ecomplus-stores/monocard/.vscode/settings.json +5 -1
  59. package/ecomplus-stores/monocard/functions/many/package.json +3 -3
  60. package/ecomplus-stores/monocard/functions/ssr/content/extra-pages/terms.json +1 -1
  61. package/ecomplus-stores/monocard/functions/ssr/content/pages/home.json +1 -44
  62. package/ecomplus-stores/monocard/functions/ssr/content/pages/products.json +2 -1
  63. package/ecomplus-stores/monocard/functions/ssr/content/settings.json +4 -1
  64. package/ecomplus-stores/monocard/functions/ssr/package.json +8 -7
  65. package/ecomplus-stores/monocard/functions/ssr/public/robots.txt +2 -4
  66. package/ecomplus-stores/monocard/functions/ssr/src/assets/style.css +7 -2
  67. package/ecomplus-stores/monocard/functions/ssr/src/components/AccountMenu.vue +16 -14
  68. package/ecomplus-stores/monocard/functions/ssr/src/components/AccountPage.vue +62 -0
  69. package/ecomplus-stores/monocard/functions/ssr/src/components/Banner.vue +3 -3
  70. package/ecomplus-stores/monocard/functions/ssr/src/components/Breadcrumbs.astro +1 -1
  71. package/ecomplus-stores/monocard/functions/ssr/src/components/CartItem.vue +11 -11
  72. package/ecomplus-stores/monocard/functions/ssr/src/components/CartSidebar.vue +16 -13
  73. package/ecomplus-stores/monocard/functions/ssr/src/components/CheckoutPage.vue +33 -0
  74. package/ecomplus-stores/monocard/functions/ssr/src/components/Collapse.vue +19 -0
  75. package/ecomplus-stores/monocard/functions/ssr/src/components/DemoVideo.vue +1 -1
  76. package/ecomplus-stores/monocard/functions/ssr/src/components/DocDescription.vue +3 -8
  77. package/ecomplus-stores/monocard/functions/ssr/src/components/FeatureTabs.vue +73 -79
  78. package/ecomplus-stores/monocard/functions/ssr/src/components/FooterStamps.vue +63 -0
  79. package/ecomplus-stores/monocard/functions/ssr/src/components/ImagesGallery.vue +154 -0
  80. package/ecomplus-stores/monocard/functions/ssr/src/components/LoginForm.vue +107 -0
  81. package/ecomplus-stores/monocard/functions/ssr/src/components/LottiePhoneNFC.vue +1 -3
  82. package/ecomplus-stores/monocard/functions/ssr/src/components/MonocardCustomizer.vue +21 -22
  83. package/ecomplus-stores/monocard/functions/ssr/src/components/PitchBar.vue +7 -7
  84. package/ecomplus-stores/monocard/functions/ssr/src/components/Prices.vue +3 -3
  85. package/ecomplus-stores/monocard/functions/ssr/src/components/ProductCard.vue +24 -24
  86. package/ecomplus-stores/monocard/functions/ssr/src/components/ProductDetails.vue +122 -0
  87. package/ecomplus-stores/monocard/functions/ssr/src/components/ProductShelf.vue +11 -11
  88. package/ecomplus-stores/monocard/functions/ssr/src/components/ProductSpecifications.vue +42 -0
  89. package/ecomplus-stores/monocard/functions/ssr/src/components/SearchModal.vue +1 -1
  90. package/ecomplus-stores/monocard/functions/ssr/src/components/ShopFooter.vue +10 -62
  91. package/ecomplus-stores/monocard/functions/ssr/src/components/ShopHeader.vue +25 -31
  92. package/ecomplus-stores/monocard/functions/ssr/src/components/ShopHeaderMenu.vue +8 -8
  93. package/ecomplus-stores/monocard/functions/ssr/src/components/ShopSidenav.vue +10 -11
  94. package/ecomplus-stores/monocard/functions/ssr/src/components/ShopSidenavCategory.vue +9 -10
  95. package/ecomplus-stores/monocard/functions/ssr/src/components/SkuSelector.vue +58 -0
  96. package/ecomplus-stores/monocard/functions/ssr/src/layouts/PageFooter.astro +4 -3
  97. package/ecomplus-stores/monocard/functions/ssr/src/layouts/PageHeader.astro +1 -1
  98. package/ecomplus-stores/monocard/functions/ssr/src/main/Home.astro +2 -1
  99. package/ecomplus-stores/monocard/functions/ssr/src/main/Sections.astro +18 -4
  100. package/ecomplus-stores/monocard/functions/ssr/src/main/Wildcard.astro +10 -1
  101. package/ecomplus-stores/monocard/functions/ssr/src/pages/app/account.astro +34 -0
  102. package/ecomplus-stores/monocard/functions/ssr/src/pages/app/index.astro +62 -0
  103. package/ecomplus-stores/monocard/functions/ssr/src/pages/index.astro +0 -5
  104. package/ecomplus-stores/monocard/functions/ssr/src/pages/~fallback.astro +0 -2
  105. package/ecomplus-stores/monocard/functions/ssr/tailwind.config.cjs +0 -1
  106. package/ecomplus-stores/monocard/functions/with-apps/package.json +3 -3
  107. package/ecomplus-stores/monocard/package.json +2 -2
  108. package/package.json +7 -7
  109. package/packages/api/package.json +1 -1
  110. package/packages/apps/affilate-program/package.json +1 -1
  111. package/packages/apps/correios/package.json +3 -3
  112. package/packages/apps/custom-payment/package.json +1 -1
  113. package/packages/apps/custom-shipping/package.json +1 -1
  114. package/packages/apps/datafrete/package.json +2 -2
  115. package/packages/apps/discounts/package.json +1 -1
  116. package/packages/apps/emails/package.json +1 -1
  117. package/packages/apps/fb-conversions/package.json +3 -3
  118. package/packages/apps/flash-courier/package.json +2 -2
  119. package/packages/apps/frenet/package.json +2 -2
  120. package/packages/apps/galaxpay/package.json +2 -2
  121. package/packages/apps/google-analytics/package.json +2 -2
  122. package/packages/apps/jadlog/package.json +2 -2
  123. package/packages/apps/loyalty-points/package.json +1 -1
  124. package/packages/apps/mandae/package.json +2 -2
  125. package/packages/apps/melhor-envio/package.json +2 -2
  126. package/packages/apps/mercadopago/package.json +2 -2
  127. package/packages/apps/pagarme/package.json +2 -2
  128. package/packages/apps/pagarme-v5/package.json +3 -3
  129. package/packages/apps/paghiper/package.json +2 -2
  130. package/packages/apps/pix/package.json +2 -2
  131. package/packages/apps/tiny-erp/package.json +2 -2
  132. package/packages/apps/webhooks/package.json +2 -2
  133. package/packages/cli/package.json +1 -1
  134. package/packages/config/package.json +1 -1
  135. package/packages/emails/package.json +4 -4
  136. package/packages/eslint/package.json +4 -4
  137. package/packages/events/package.json +1 -1
  138. package/packages/feeds/package.json +1 -1
  139. package/packages/firebase/package.json +2 -2
  140. package/packages/i18n/package.json +1 -1
  141. package/packages/modules/package.json +2 -2
  142. package/packages/passport/package.json +1 -1
  143. package/packages/ssr/package.json +2 -2
  144. package/packages/storefront/client.d.ts +3 -0
  145. package/packages/storefront/config/astro/context-directive.mjs +2 -2
  146. package/packages/storefront/package.json +9 -7
  147. package/packages/storefront/src/analytics/event-to-fbq.ts +82 -0
  148. package/packages/storefront/src/analytics/event-to-ttq.ts +15 -0
  149. package/packages/storefront/src/helpers/afetch.ts +20 -8
  150. package/packages/storefront/src/helpers/sf-utils.ts +15 -0
  151. package/packages/storefront/src/lib/components/Carousel.vue +19 -14
  152. package/packages/storefront/src/lib/composables/use-product-card.ts +12 -0
  153. package/packages/storefront/src/lib/layouts/Base.astro +1 -0
  154. package/packages/storefront/src/lib/layouts/BaseHead.astro +9 -2
  155. package/packages/storefront/src/lib/scripts/push-analytics-events.ts +88 -0
  156. package/packages/storefront/src/lib/scripts/session-utm.ts +16 -6
  157. package/packages/storefront/src/lib/scripts/vbeta-app.ts +4 -0
  158. package/packages/storefront/src/lib/ssr-context.ts +2 -2
  159. package/packages/storefront/src/lib/state/shopping-cart.ts +35 -2
  160. package/packages/storefront/src/lib/state/use-analytics.ts +283 -0
  161. package/packages/test-base/package.json +1 -1
  162. package/packages/types/package.json +1 -1
  163. package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/banner2.webp +0 -0
  164. package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/headphone.webp +0 -0
  165. package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/logo.png +0 -0
  166. package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/passion.webp +0 -0
  167. package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/rect8589.png +0 -0
  168. package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/rect859.png +0 -0
  169. package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/rect89.webp +0 -0
  170. package/ecomplus-stores/barra-doce/functions/ssr/src/layouts/Checkout.astro +0 -0
  171. package/ecomplus-stores/monocard/functions/ssr/content/extra-pages/contato.json +0 -11
  172. package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/fluxo.png +0 -0
  173. package/ecomplus-stores/monocard/functions/ssr/src/layouts/Checkout.astro +0 -0
@@ -10,7 +10,7 @@ const { breadcrumbs, inlineJSONLd } = await useBreadcrumbs(Astro.props);
10
10
  ---
11
11
 
12
12
  {breadcrumbs.length > 0 &&
13
- <section class="ui-section-slim">
13
+ <section class={`ui-section-slim ${breadcrumbs.length > 1 ? '' : 'hidden lg:block'}`}>
14
14
  <nav aria-label="Breadcrumb" class="w-full overflow-hidden text-lg md:text-sm">
15
15
  <ol class="flex items-center gap-1 text-base-600">
16
16
  <li>
@@ -1,30 +1,30 @@
1
1
  <template>
2
2
  <article class="relative bg-white shadow-sm">
3
- <ALink :href="link" class="flex items-center gap-5 p-4 group">
3
+ <ALink :href="link" class="group flex items-center gap-5 p-4">
4
4
  <AImg
5
5
  v-if="image"
6
6
  :picture="image"
7
7
  :alt="title"
8
- class="w-20 h-20 object-cover"
8
+ class="h-20 w-20 object-cover"
9
9
  />
10
- <p class="py-2 flex-auto text-sm text-base-700
11
- group-hover:text-base-900 group-hover:underline">
10
+ <p class="text-base-700 group-hover:text-base-900 flex-auto py-2
11
+ text-sm group-hover:underline">
12
12
  {{ title }}
13
13
  </p>
14
14
  </ALink>
15
15
  <button
16
16
  v-if="cartItem._id"
17
17
  @click.stop="removeCartItem(cartItem._id)"
18
- class="absolute top-0 right-0 p-2 opacity-70 hover:opacity-100"
18
+ class="absolute right-0 top-0 p-2 opacity-70 hover:opacity-100"
19
19
  :aria-label="$t.i19remove"
20
20
  >
21
- <span class="w-5 h-5 text-sm leading-none flex flex-col justify-center
22
- rounded-full border-3 text-danger-800 border-danger-700/30">
23
- <i class="i-close my-0 mx-auto"></i>
21
+ <span class="border-3 text-danger-800 border-danger-700/30 flex h-5 w-5 flex-col
22
+ justify-center rounded-full text-sm leading-none">
23
+ <i class="i-close mx-auto my-0"></i>
24
24
  </span>
25
25
  </button>
26
- <div class="flex justify-between items-center border-t-2 border-base-100">
27
- <div class="border-r-2 border-base-100">
26
+ <div class="border-base-100 flex items-center justify-between border-t-2">
27
+ <div class="border-base-100 border-r-2">
28
28
  <QuantitySelector
29
29
  v-model="cartItem.quantity"
30
30
  :min="cartItem.min_quantity"
@@ -36,7 +36,7 @@
36
36
  :price="finalPrice"
37
37
  :has-cashback="false"
38
38
  :has-price-options="false"
39
- class="px-4 py-2.5 text-[95%] text-right"
39
+ class="px-4 py-2.5 text-right text-[95%]"
40
40
  />
41
41
  </div>
42
42
  </article>
@@ -1,8 +1,8 @@
1
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">
2
+ <aside class="flex h-screen flex-col bg-white">
3
+ <header class="z-10 flex items-center justify-end gap-3 px-6
4
+ py-4 shadow ring-1 ring-black/5">
5
+ <span class="text-base-600 text-right text-base font-medium">
6
6
  {{ $t.i19myShoppingCart }}
7
7
  </span>
8
8
  <span class="min-w-[3rem] text-right">
@@ -11,35 +11,38 @@
11
11
  </span>
12
12
  </span>
13
13
  </header>
14
- <article class="grow overflow-y-auto bg-base-50">
15
- <div v-if="freeShippingFromValue" class="text-sm text-center">
14
+ <article class="bg-base-50 grow overflow-y-auto">
15
+ <div v-if="freeShippingFromValue" class="text-center text-sm">
16
16
  <div
17
17
  v-if="freeShippingFromValue > shoppingCart.subtotal"
18
- class="p-3 secondary-subtle"
18
+ class="secondary-subtle p-3"
19
19
  >
20
20
  {{ $t.i19add$1ToEarn.replace('$1',
21
21
  $money(freeShippingFromValue - shoppingCart.subtotal)) }}
22
22
  <strong class="lowercase">{{ $t.i19freeShipping }}</strong>
23
23
  </div>
24
- <div v-else class="p-3 bg-success-50 text-success-800">
24
+ <div v-else class="bg-success-50 text-success-800 p-3">
25
25
  <i class="text-success-900 i-check mr-1"></i>
26
26
  {{ $t.i19freeShippingFrom }} {{ $money(freeShippingFromValue) }}
27
27
  </div>
28
28
  </div>
29
- <ul class="px-4 pt-4 pb-2">
29
+ <ul class="px-4 pb-2 pt-4">
30
30
  <li v-for="(item, i) in shoppingCart.items" :key="i">
31
31
  <CartItem :item="item" class="mb-3" />
32
32
  </li>
33
33
  </ul>
34
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">
35
+ <footer class="z-10 px-5 pb-3 pt-4 ring-2 ring-black/5">
36
+ <div class="grid grid-cols-5 items-center gap-3 text-right">
37
37
  <div class="col-span-2">
38
38
  {{ $t.i19subtotal }}
39
39
  </div>
40
40
  <Prices :price="shoppingCart.subtotal" class="col-span-3 text-lg" />
41
41
  </div>
42
- <CheckoutLink class="ui-btn-lg ui-btn-primary w-full text-right my-2.5">
42
+ <CheckoutLink
43
+ to="checkout"
44
+ class="ui-btn-lg ui-btn-primary my-2.5 w-full text-right"
45
+ >
43
46
  <i class="i-check mr-2"></i>
44
47
  {{ $t.i19checkout }}
45
48
  </CheckoutLink>
@@ -48,7 +51,7 @@
48
51
  @click.prevent="emit('close')"
49
52
  class="ui-link text-base-500 hover:text-base-700 text-sm"
50
53
  >
51
- <i class="i-arrow-left-line mr-1"></i>
54
+ <i class="i-arrow-right-line mr-1 rotate-180"></i>
52
55
  {{ $t.i19continueShopping }}
53
56
  </a>
54
57
  </footer>
@@ -0,0 +1,33 @@
1
+ <template>
2
+ <article class="flex min-h-screen flex-col justify-end">
3
+ <section class="grow">
4
+ <article id="storefront-app"></article>
5
+ </section>
6
+ <section class="bg-base-50 mt-4 lg:mt-8">
7
+ <nav class="ui-section-slim">
8
+ <ul class="mt-6 flex flex-wrap justify-center gap-6 lg:gap-8">
9
+ <li
10
+ v-for="({ title, href }, i) in $settings.serviceLinks"
11
+ :key="`s-${i}`"
12
+ >
13
+ <ALink :href="href" target="blank" class="ui-link text-base-700">
14
+ {{ title }}
15
+ <i class="bg-base-300 i-arrow-top-right-on-square ml-0.5"></i>
16
+ </ALink>
17
+ </li>
18
+ </ul>
19
+ </nav>
20
+ <FooterStamps :stamps="footerStamps" />
21
+ </section>
22
+ </article>
23
+ </template>
24
+
25
+ <script setup lang="ts">
26
+ import FooterStamps from '~/components/FooterStamps.vue';
27
+
28
+ export interface Props {
29
+ footerStamps: InstanceType<typeof FooterStamps>['$props']['stamps'];
30
+ }
31
+
32
+ defineProps<Props>();
33
+ </script>
@@ -0,0 +1,19 @@
1
+ <template>
2
+ <details class="[&_i]:open:rotate-180">
3
+ <summary role="button" class="text-base-700 hover:text-base-800
4
+ [&>i]:hover:text-primary my-4 list-none text-2xl
5
+ font-medium lowercase md:my-5">
6
+ <i class="i-chevron-down mr-1"></i>
7
+ <span>{{ title }}</span>
8
+ </summary>
9
+ <slot />
10
+ </details>
11
+ </template>
12
+
13
+ <script setup lang="ts">
14
+ export interface Props {
15
+ title: string;
16
+ }
17
+
18
+ defineProps<Props>();
19
+ </script>
@@ -3,7 +3,7 @@
3
3
  loading="lazy"
4
4
  id="ytplayer"
5
5
  width="700"
6
- class="shrink-0 max-w-full aspect-video"
6
+ class="aspect-video max-w-full shrink-0"
7
7
  src="https://www.youtube.com/embed/u_TLiNHvrLo?autoplay=0"
8
8
  frameborder="0"
9
9
  />
@@ -1,14 +1,8 @@
1
1
  <template>
2
2
  <section v-if="html" class="ui-section">
3
- <details class="[&_i]:open:rotate-180" open>
4
- <summary role="button" class="text-base-700 hover:text-base-800
5
- [&>i]:hover:text-primary my-4 list-none text-2xl
6
- font-medium lowercase md:my-5">
7
- <i class="i-chevron-down mr-1"></i>
8
- <span>{{ title || $t.i19description }}</span>
9
- </summary>
3
+ <Collapse :title="title || $t.i19description" open>
10
4
  <ContentClearfix :html="html" />
11
- </details>
5
+ </Collapse>
12
6
  </section>
13
7
  </template>
14
8
 
@@ -20,6 +14,7 @@ import type {
20
14
  Collections,
21
15
  } from '@cloudcommerce/api/types';
22
16
  import ContentClearfix from '@@sf/components/ContentClearfix.vue';
17
+ import Collapse from '~/components/Collapse.vue';
23
18
 
24
19
  export interface Props {
25
20
  apiDoc?: Partial<Products | Categories | Brands | Collections>;
@@ -1,9 +1,9 @@
1
1
  <template>
2
- <article class="container px-8 my-4 mx-auto text-center">
2
+ <article class="container mx-auto my-4 px-8 text-center">
3
3
  <h3
4
4
  ref="title"
5
- class="text-xl md:text-2xl lg:text-3xl font-semibold text-base-700
6
- inline-block lg:text-left"
5
+ class="text-base-700 inline-block text-xl font-semibold md:text-2xl
6
+ lg:text-left lg:text-3xl"
7
7
  :style="{ minWidth: titleMinWidth, minHeight: titleMinHeight }"
8
8
  >
9
9
  <span class="block lg:inline">
@@ -12,15 +12,15 @@
12
12
  <Fade speed="slow">
13
13
  <span
14
14
  v-if="copyKeyword"
15
- class="text-3xl font-bold text-transparent bg-clip-text bg-gradient-to-tr
16
- from-secondary-600 to-secondary-900"
15
+ class="from-secondary-600 to-secondary-900 bg-gradient-to-tr bg-clip-text text-3xl
16
+ font-bold text-transparent"
17
17
  >
18
18
  {{ copyKeyword }}
19
19
  </span>
20
20
  </Fade>
21
21
  </h3>
22
- <TabGroup as="div" class="max-w-3xl mx-auto mt-9">
23
- <TabList class="flex space-x-1 rounded-md bg-base-100/70 p-1">
22
+ <TabGroup as="div" class="mx-auto mt-9 max-w-3xl">
23
+ <TabList class="bg-base-100/70 flex space-x-1 rounded-md p-1">
24
24
  <Tab
25
25
  as="template"
26
26
  v-for="(step, i) in [
@@ -31,43 +31,43 @@
31
31
  v-slot="{ selected }"
32
32
  >
33
33
  <button
34
- class="w-full rounded-sm px-4 py-2.5 text-sm md:text-base
34
+ class="ring-primary-100/60 ring-offset-primary-400
35
+ relative block w-full rounded-sm px-4 py-2.5 text-sm
35
36
  font-medium leading-5 text-black
36
- ring-primary-100 ring-opacity-60 ring-offset-2 ring-offset-primary-400
37
- focus:outline-none focus:ring-2 block relative"
37
+ ring-offset-2 focus:outline-none focus:ring-2 md:text-base"
38
38
  :class="selected ? 'bg-primary-100/30 text-black' : null"
39
39
  >
40
- <span class="z-10 relative">{{ step }}</span>
40
+ <span class="relative z-10">{{ step }}</span>
41
41
  </button>
42
42
  </Tab>
43
43
  </TabList>
44
- <TabPanels class="text-left w-72 mx-auto sm:w-auto sm:px-5 mt-4
44
+ <TabPanels class="mx-auto mt-4 w-72 text-left sm:w-auto sm:px-5
45
45
  md:min-h-[870px] lg:min-h-[880px] xl:min-h-[915px]">
46
46
  <TabPanel v-motion-fade>
47
47
  <div class="prose mb-8">
48
- <h4 class="text-2xl xl:text-3xl leading-snug mb-5">
48
+ <h4 class="mb-5 text-2xl leading-snug xl:text-3xl">
49
49
  Conecte instantaneamente
50
- <small class="text-lg xl:text-xl leading-tight
51
- text-base-500 font-normal block">
50
+ <small class="text-base-500 block text-lg
51
+ font-normal leading-tight xl:text-xl">
52
52
  e compartilhe todos os seus contatos
53
53
  </small>
54
54
  </h4>
55
- <div class="flex gap-4 items-center text-2xl mb-4 text-base-700">
55
+ <div class="text-base-700 mb-4 flex items-center gap-4 text-2xl">
56
56
  <div class="flex items-center">
57
- <div class="bg-base-300 text-base-900 rounded-l text-lg
58
- h-8 flex gap-2 items-center pl-2 pr-0.5">
57
+ <div class="bg-base-300 text-base-900 flex h-8
58
+ items-center gap-2 rounded-l pl-2 pr-0.5 text-lg">
59
59
  <i class="i-loader-2-fill my-0"></i>
60
60
  <i class="i-qr-code-line my-0"></i>
61
61
  <i class="i-link-m my-0"></i>
62
62
  </div>
63
- <div class="relative w-6 h-8 overflow-hidden">
64
- <div class="absolute -top-0.5 w-6 overflow-hidden inline-block">
65
- <div class="h-9 bg-base-300
66
- rotate-45 transform origin-top-left"></div>
63
+ <div class="relative h-8 w-6 overflow-hidden">
64
+ <div class="absolute -top-0.5 inline-block w-6 overflow-hidden">
65
+ <div class="bg-base-300 h-9
66
+ origin-top-left rotate-45"></div>
67
67
  </div>
68
68
  </div>
69
69
  </div>
70
- <div class="grid grid-cols-4 md:grid-cols-8 gap-4">
70
+ <div class="grid grid-cols-4 gap-4 md:grid-cols-8">
71
71
  <i class="i-pix my-0"></i>
72
72
  <i class="i-whatsapp my-0"></i>
73
73
  <i class="i-instagram my-0"></i>
@@ -75,16 +75,16 @@
75
75
  <i class="i-linkedin my-0"></i>
76
76
  <i class="i-facebook my-0"></i>
77
77
  <i class="i-mail-send-line my-0"></i>
78
- <i class="i-add-circle-fill my-0 text-secondary-700"></i>
78
+ <i class="i-add-circle-fill text-secondary-700 my-0"></i>
79
79
  </div>
80
80
  </div>
81
81
  </div>
82
- <div class="grid grid-cols-1 sm:grid-cols-2 gap-x-10">
82
+ <div class="grid grid-cols-1 gap-x-10 sm:grid-cols-2">
83
83
  <div class="prose">
84
84
  <slot name="picture-nfc" />
85
- <h4 class="flex gap-3 items-center">
86
- <i class="i-loader-2-fill text-4xl my-0"></i>
87
- <span class="font-normal font-brand lowercase">
85
+ <h4 class="flex items-center gap-3">
86
+ <i class="i-loader-2-fill my-0 text-4xl"></i>
87
+ <span class="font-brand font-normal lowercase">
88
88
  Aproximação
89
89
  </span>
90
90
  </h4>
@@ -96,9 +96,9 @@
96
96
  </div>
97
97
  <div class="prose mt-5 sm:mt-0">
98
98
  <slot name="picture-qrcode" />
99
- <h4 class="flex gap-3 items-center">
100
- <i class="i-qr-code-line text-4xl my-0"></i>
101
- <span class="font-normal font-brand lowercase">
99
+ <h4 class="flex items-center gap-3">
100
+ <i class="i-qr-code-line my-0 text-4xl"></i>
101
+ <span class="font-brand font-normal lowercase">
102
102
  QR Code
103
103
  </span>
104
104
  </h4>
@@ -110,17 +110,17 @@
110
110
  </div>
111
111
  <div class="sm:col-span-2">
112
112
  <div class="prose">
113
- <h4 class="flex flex-wrap gap-3 items-center">
114
- <i class="i-link-m text-4xl my-0"></i>
115
- <span class="font-normal font-brand lowercase">
113
+ <h4 class="flex flex-wrap items-center gap-3">
114
+ <i class="i-link-m my-0 text-4xl"></i>
115
+ <span class="font-brand font-normal lowercase">
116
116
  Link
117
117
  </span>
118
118
  <ALink
119
119
  class="text-base-700 decoration-base-300"
120
120
  href="https://mono.direct/carlos"
121
121
  >
122
- <small class="font-normal font-mono text-sm
123
- bg-base-200 px-2 py-1 rounded-sm">
122
+ <small class="bg-base-200 rounded-sm px-2
123
+ py-1 font-mono text-sm font-normal">
124
124
  https://mono.direct/<b>seunome</b>
125
125
  </small>
126
126
  </ALink>
@@ -132,22 +132,22 @@
132
132
  </div>
133
133
  </div>
134
134
  </div>
135
- <div class="mt-5 flex gap-3 lg:gap-4
136
- text-xl lg:text-2xl font-brand lowercase">
135
+ <div class="font-brand mt-5 flex gap-3
136
+ text-xl lowercase lg:gap-4 lg:text-2xl">
137
137
  <a
138
138
  :href="$settings.metafields?.monocardSlug"
139
- class="primary border-4 border-primary
140
- hover:border-primary-bold active:primary-bold
141
- rounded-full px-4 py-1.5 lg:px-7 lg:py-3"
139
+ class="primary border-primary hover:border-primary-bold
140
+ active:primary-bold rounded-full
141
+ border-4 px-4 py-1.5 lg:px-7 lg:py-3"
142
142
  >
143
143
  Monte seu Monocard
144
144
  </a>
145
145
  <a
146
146
  :href="$settings.metafields?.businessLpUrl"
147
- class="hidden sm:block
148
- bg-transparent text-black border-4 border-primary
149
- hover:bg-primary-100 hover:border-primary-bold active:primary-bold
150
- rounded-full px-4 py-2 lg:px-6 lg:py-3"
147
+ class="border-primary hover:bg-primary-100
148
+ hover:border-primary-bold active:primary-bold hidden rounded-full
149
+ border-4 bg-transparent px-4
150
+ py-2 text-black sm:block lg:px-6 lg:py-3"
151
151
  >
152
152
  Para empresas
153
153
  </a>
@@ -155,8 +155,8 @@
155
155
  </TabPanel>
156
156
  <TabPanel v-motion-fade>
157
157
  <slot name="picture-edit" />
158
- <div class="flex flex-wrap md:flex-nowrap gap-x-10">
159
- <div class="md:basis-1/2 prose">
158
+ <div class="flex flex-wrap gap-x-10 md:flex-nowrap">
159
+ <div class="prose md:basis-1/2">
160
160
  <h4 class="text-xl">
161
161
  Editar o perfil é rápido e fácil
162
162
  </h4>
@@ -166,8 +166,8 @@
166
166
  LinkedIn, Instagram, TikTok, Twitter, loja, website
167
167
  e até Pix.
168
168
  </p>
169
- <p class="grid grid-cols-4 max-w-[170px] lg:max-w-[200px] gap-5
170
- text-2xl text-base-800">
169
+ <p class="text-base-800 grid max-w-[170px] grid-cols-4 gap-5
170
+ text-2xl lg:max-w-[200px]">
171
171
  <i class="i-pix my-0"></i>
172
172
  <i class="i-whatsapp my-0"></i>
173
173
  <i class="i-instagram my-0"></i>
@@ -175,29 +175,29 @@
175
175
  <i class="i-linkedin my-0"></i>
176
176
  <i class="i-facebook my-0"></i>
177
177
  <i class="i-mail-send-line my-0"></i>
178
- <i class="i-add-circle-fill my-0 text-secondary-700"></i>
178
+ <i class="i-add-circle-fill text-secondary-700 my-0"></i>
179
179
  </p>
180
180
  <p class="font-medium">
181
181
  Tudo em um único link apontado diretamente pelo
182
182
  seu cartão de visitas inteligente.
183
183
  </p>
184
184
  </div>
185
- <div class="md:basis-1/2 prose">
186
- <h4 class="flex gap-3 items-center">
187
- <i class="i-translate-2 text-4xl my-0"></i>
188
- <span class="font-normal font-brand lowercase">
185
+ <div class="prose md:basis-1/2">
186
+ <h4 class="flex items-center gap-3">
187
+ <i class="i-translate-2 my-0 text-4xl"></i>
188
+ <span class="font-brand font-normal lowercase">
189
189
  Multilingual
190
190
  </span>
191
191
  </h4>
192
192
  <p>
193
193
  Traduz automaticamente o perfil para inglês.
194
- <small class="block text-base-500">
194
+ <small class="text-base-500 block">
195
195
  Tradução para outras línguas em breve.
196
196
  </small>
197
197
  </p>
198
- <h4 class="flex gap-3 items-center md:mt-9">
199
- <i class="i-menu-add-fill text-4xl my-0"></i>
200
- <span class="font-normal font-brand lowercase">
198
+ <h4 class="flex items-center gap-3 md:mt-9">
199
+ <i class="i-menu-add-fill my-0 text-4xl"></i>
200
+ <span class="font-brand font-normal lowercase">
201
201
  Ilimitado
202
202
  </span>
203
203
  </h4>
@@ -207,33 +207,33 @@
207
207
  </p>
208
208
  </div>
209
209
  </div>
210
- <div class="mt-5 flex flex-wrap gap-3 lg:gap-4
211
- text-lg lg:text-xl font-brand lowercase">
210
+ <div class="font-brand mt-5 flex flex-wrap gap-3
211
+ text-lg lowercase lg:gap-4 lg:text-xl">
212
212
  <a
213
213
  href="#produtos"
214
- class="grow sm:grow-0
215
- primary border-4 border-primary
216
- hover:border-primary-bold active:primary-bold
217
- rounded-full px-6 py-1.5 lg:px-8 lg:py-3
218
- flex items-center"
214
+ class="primary border-primary
215
+ hover:border-primary-bold active:primary-bold flex
216
+ grow items-center
217
+ rounded-full border-4 px-6 py-1.5 sm:grow-0
218
+ lg:px-8 lg:py-3"
219
219
  >
220
- <span class="leading-tight block">
220
+ <span class="block leading-tight">
221
221
  Compre agora
222
- <small class="block text-sm text-base-700">
222
+ <small class="text-base-700 block text-sm">
223
223
  Seu Monocard ou Monodot
224
224
  </small>
225
225
  </span>
226
226
  </a>
227
227
  <a
228
228
  :href="$settings.metafields?.businessLpUrl"
229
- class="grow sm:grow-0
230
- bg-transparent text-black border-4 border-primary
231
- hover:bg-primary-100 hover:border-primary-bold active:primary-bold
232
- rounded-full px-6 py-1.5 lg:px-8 lg:py-3"
229
+ class="border-primary hover:bg-primary-100
230
+ hover:border-primary-bold active:primary-bold grow rounded-full
231
+ border-4 bg-transparent px-6
232
+ py-1.5 text-black sm:grow-0 lg:px-8 lg:py-3"
233
233
  >
234
- <span class="leading-tight block">
234
+ <span class="block leading-tight">
235
235
  Para grandes times
236
- <small class="block text-sm text-base-700">
236
+ <small class="text-base-700 block text-sm">
237
237
  Fale conosco
238
238
  </small>
239
239
  </span>
@@ -246,12 +246,6 @@
246
246
  </template>
247
247
 
248
248
  <script setup lang="ts">
249
- import {
250
- ref,
251
- nextTick,
252
- onMounted,
253
- onBeforeUnmount,
254
- } from 'vue';
255
249
  import { useDebounceFn } from '@vueuse/core';
256
250
  import {
257
251
  TabGroup,
@@ -0,0 +1,63 @@
1
+ <template>
2
+ <div class="ui-section">
3
+ <div class="flex flex-wrap items-start justify-between gap-5 lg:flex-nowrap">
4
+ <ul class="mx-auto flex items-center gap-x-6 gap-y-3
5
+ overflow-x-auto md:mx-0 md:flex-wrap md:overflow-hidden lg:gap-x-8">
6
+ <li v-for="(stamp, i) in stamps" :key="i">
7
+ <ALink :href="stamp.href?.replace('{domain}', $settings.domain || '')">
8
+ <slot :name="`picture-${i}`" />
9
+ <span v-if="!stamp.img" class="flex items-center">
10
+ <span
11
+ v-if="stamp.icon"
12
+ class="[&>*]:from-success-200 [&>*]:to-success-700
13
+ mr-2 text-4xl [&>*]:bg-gradient-to-br"
14
+ >
15
+ <i v-if="stamp.icon === 'lock'" class="i-lock-closed"></i>
16
+ <i v-else-if="stamp.icon === 'check'" class="i-check-badge"></i>
17
+ <i v-else class="i-arrow-path-rounded-square"></i>
18
+ </span>
19
+ <span class="text-base-300 max-w-[140px] text-sm font-medium">
20
+ {{ stamp.alt }}
21
+ <i
22
+ v-if="stamp.href && stamp.href.charAt(0) !== '/'"
23
+ class="bg-base-400 i-arrow-top-right-on-square ml-0.5"
24
+ ></i>
25
+ </span>
26
+ </span>
27
+ </ALink>
28
+ </li>
29
+ </ul>
30
+ <div class="mx-auto flex flex-wrap items-center justify-end
31
+ gap-4 overflow-x-auto text-2xl md:mx-0 md:flex-nowrap md:overflow-hidden">
32
+ <PaymentMethodFlag
33
+ v-for="paymentMethod in $settings.paymentMethods"
34
+ :key="paymentMethod"
35
+ :flag="paymentMethod"
36
+ class="!text-base-50"
37
+ />
38
+ </div>
39
+ </div>
40
+ <div class="mt-7 justify-between gap-4 text-center
41
+ text-xs md:flex md:text-left">
42
+ <div class="mb-3 md:mb-0">
43
+ @ {{ new Date().getFullYear() }} {{ $settings.corporateName }}
44
+ {{ $settings.address ? `/ ${$settings.address}` : '' }}
45
+ / {{ $settings.docNumber }}
46
+ </div>
47
+ <ALink href="https://www.ecomplus.io/" class="italic text-[rgb(239,235,240)]">
48
+ powered by <b>E-Com Plus</b>
49
+ </ALink>
50
+ </div>
51
+ </div>
52
+ </template>
53
+
54
+ <script setup lang="ts">
55
+ import type { LayoutContent } from '@@sf/content';
56
+ import PaymentMethodFlag from '@@sf/components/PaymentMethodFlag.vue';
57
+
58
+ export interface Props {
59
+ stamps?: LayoutContent['footer']['stamps'];
60
+ }
61
+
62
+ defineProps<Props>();
63
+ </script>