cloudcommerce 2.6.4 → 2.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/.github/workflows/test-apps.yml +2 -2
  2. package/CHANGELOG.md +30 -0
  3. package/action.yml +2 -2
  4. package/{commitlint.config.cjs → commitlint.config.mjs} +2 -2
  5. package/ecomplus-stores/barradoce/.gitpod.yml +1 -1
  6. package/ecomplus-stores/barradoce/.idx/dev.nix +5 -4
  7. package/ecomplus-stores/barradoce/functions/many/package.json +3 -3
  8. package/ecomplus-stores/barradoce/functions/ssr/content/pages/home.json +106 -8
  9. package/ecomplus-stores/barradoce/functions/ssr/content/pages/products.json +3 -0
  10. package/ecomplus-stores/barradoce/functions/ssr/content/types.d.ts +1 -1
  11. package/ecomplus-stores/barradoce/functions/ssr/package.json +6 -6
  12. package/ecomplus-stores/barradoce/functions/ssr/src/components/BuyerReviews.vue +83 -0
  13. package/ecomplus-stores/barradoce/functions/ssr/src/components/CheckoutPage.vue +6 -6
  14. package/ecomplus-stores/barradoce/functions/ssr/src/components/FooterStamps.vue +4 -4
  15. package/ecomplus-stores/barradoce/functions/ssr/src/components/ProductDetails.vue +36 -5
  16. package/ecomplus-stores/barradoce/functions/ssr/src/components/ProductShelf.vue +8 -7
  17. package/ecomplus-stores/barradoce/functions/ssr/src/components/ShippingCalculator.vue +1 -1
  18. package/ecomplus-stores/barradoce/functions/ssr/src/main/content/Sections.astro +4 -0
  19. package/ecomplus-stores/barradoce/functions/with-apps/package.json +3 -3
  20. package/ecomplus-stores/barradoce/package.json +2 -2
  21. package/package.json +5 -5
  22. package/packages/api/package.json +1 -1
  23. package/packages/apps/affiliate-program/package.json +1 -1
  24. package/packages/apps/correios/package.json +1 -1
  25. package/packages/apps/custom-payment/package.json +1 -1
  26. package/packages/apps/custom-shipping/package.json +1 -1
  27. package/packages/apps/datafrete/package.json +1 -1
  28. package/packages/apps/discounts/package.json +1 -1
  29. package/packages/apps/emails/package.json +1 -1
  30. package/packages/apps/fb-conversions/package.json +1 -1
  31. package/packages/apps/flash-courier/package.json +1 -1
  32. package/packages/apps/frenet/package.json +1 -1
  33. package/packages/apps/galaxpay/package.json +1 -1
  34. package/packages/apps/google-analytics/package.json +1 -1
  35. package/packages/apps/jadlog/package.json +1 -1
  36. package/packages/apps/loyalty-points/package.json +1 -1
  37. package/packages/apps/mandae/package.json +1 -1
  38. package/packages/apps/melhor-envio/package.json +1 -1
  39. package/packages/apps/mercadopago/package.json +1 -1
  40. package/packages/apps/pagarme/package.json +1 -1
  41. package/packages/apps/pagarme-v5/package.json +1 -1
  42. package/packages/apps/paghiper/package.json +1 -1
  43. package/packages/apps/pix/package.json +1 -1
  44. package/packages/apps/tiny-erp/package.json +1 -1
  45. package/packages/apps/webhooks/package.json +1 -1
  46. package/packages/cli/package.json +1 -1
  47. package/packages/config/package.json +1 -1
  48. package/packages/emails/package.json +2 -2
  49. package/packages/eslint/package.json +1 -1
  50. package/packages/events/package.json +1 -1
  51. package/packages/feeds/package.json +1 -1
  52. package/packages/firebase/package.json +1 -1
  53. package/packages/i18n/package.json +1 -1
  54. package/packages/modules/package.json +1 -1
  55. package/packages/passport/package.json +1 -1
  56. package/packages/ssr/lib/lib/cron-ssr-save-views.js +7 -85
  57. package/packages/ssr/lib/lib/cron-ssr-save-views.js.map +1 -1
  58. package/packages/ssr/package.json +3 -3
  59. package/packages/ssr/src/lib/cron-ssr-save-views.ts +7 -91
  60. package/packages/storefront/dist/client/_astro/{AccountPage.B4WZaOzX.js → AccountPage.Cq0jrJE5.js} +1 -1
  61. package/packages/storefront/dist/client/_astro/{CartSidebar.DAGdpIcU.js → CartSidebar.DkX2BE1w.js} +1 -1
  62. package/packages/storefront/dist/client/_astro/{HeroSlider.Dq_9kcdU.js → HeroSlider.CZujn8cU.js} +1 -1
  63. package/packages/storefront/dist/client/_astro/{PitchBar.BwLlIs6F.js → PitchBar.DhcSEQPV.js} +1 -1
  64. package/packages/storefront/dist/client/_astro/{Prices.BgHTq5id.js → Prices.D1uItqV5.js} +1 -1
  65. package/packages/storefront/dist/client/_astro/{ProductDetails.CnYNdPl5.js → ProductDetails.DDNMc2oj.js} +1 -1
  66. package/packages/storefront/dist/client/_astro/ProductShelf.BwRDTU-V.js +1 -0
  67. package/packages/storefront/dist/client/_astro/{SearchModal.DcmvABes.js → SearchModal.DgrtGsIu.js} +1 -1
  68. package/packages/storefront/dist/client/_astro/{SearchShowcase.C9GWwOnF.js → SearchShowcase.DggdcmcI.js} +1 -1
  69. package/packages/storefront/dist/client/_astro/{ShippingCalculator.DE01D7dt.js → ShippingCalculator.B5JIh5xw.js} +1 -1
  70. package/packages/storefront/dist/client/_astro/{ShopHeader.Cf4t6O6z.js → ShopHeader.CIsQLhMR.js} +2 -2
  71. package/packages/storefront/dist/client/_astro/{_plugin-vue_export-helper.CBemkWnU.js → _plugin-vue_export-helper.3R8ooc_r.js} +3 -3
  72. package/packages/storefront/dist/client/_astro/{_slug_.DX_OkMX7.css → _slug_.CnXAH2gj.css} +1 -1
  73. package/packages/storefront/dist/client/_astro/client.mwowSQrH.js +1 -0
  74. package/packages/storefront/dist/client/_astro/{customer-session.CNe1heRH.js → customer-session.BAjMMoBA.js} +1 -1
  75. package/packages/storefront/dist/client/_astro/{format-money.DINpWB0x.js → format-money.vLicYTv9.js} +1 -1
  76. package/packages/storefront/dist/client/_astro/{grid-title.D4m7-g3h.js → grid-title.CxNZApGL.js} +1 -1
  77. package/packages/storefront/dist/client/_astro/{hoisted.EBqhuD5o.js → hoisted.B8Lw6O9a.js} +1 -1
  78. package/packages/storefront/dist/client/_astro/{hoisted.B2rH1xwX.js → hoisted.D4m7OTKi.js} +1 -1
  79. package/packages/storefront/dist/client/_astro/{hoisted.ut_nNM_H.js → hoisted.DSAg3dYh.js} +1 -1
  80. package/packages/storefront/dist/client/_astro/hoisted.D_dlmSy5.js +1 -0
  81. package/packages/storefront/dist/client/_astro/{i18n.B3skIOFg.js → i18n.BE5r_SIU.js} +1 -1
  82. package/packages/storefront/dist/client/_astro/{img.D5a6GzeE.js → img.CB-F9VLo.js} +1 -1
  83. package/packages/storefront/dist/client/_astro/{index.DBfgCyd-.js → index.BAyyMfaO.js} +1 -1
  84. package/packages/storefront/dist/client/_astro/{index.CFw6O-Kt.js → index.CTTHpJlV.js} +1 -1
  85. package/packages/storefront/dist/client/_astro/{modules-info.BHKiT6oA.js → modules-info.C6KJuGeB.js} +1 -1
  86. package/packages/storefront/dist/client/_astro/name.CIPngEFN.js +1 -0
  87. package/packages/storefront/dist/client/_astro/sf-utils.xmJHVMAX.js +13 -0
  88. package/packages/storefront/dist/client/_astro/{shopping-cart.D-w8Z-4p.js → shopping-cart.DGvCZWRZ.js} +1 -1
  89. package/packages/storefront/dist/client/_astro/{use-analytics.CQDdNgwF.js → use-analytics.BWhF_fCv.js} +1 -1
  90. package/packages/storefront/dist/client/_astro/{use-cms-preview.4Hq7LCmA.js → use-cms-preview.CPGTKut8.js} +1 -1
  91. package/packages/storefront/dist/client/_astro/{use-product-card.CQRlRsNX.js → use-product-card.C-RbCwna.js} +1 -1
  92. package/packages/storefront/dist/client/_astro/{use-text-value.UjCYLWjm.js → use-text-value.D4Rw7N4D.js} +1 -1
  93. package/packages/storefront/dist/server/chunks/{CartSidebar_BmwcZuxv.mjs → CartSidebar_lUckG0fs.mjs} +1 -1
  94. package/packages/storefront/dist/server/chunks/{SearchModal_BvEnUvAx.mjs → SearchModal_B2f22Mff.mjs} +1 -1
  95. package/packages/storefront/dist/server/chunks/{_.._DORZHe_Z.mjs → _.._CvgSOb3Z.mjs} +1 -1
  96. package/packages/storefront/dist/server/chunks/{_page__DU3kNewy.mjs → _page__Ex4FhYrc.mjs} +1 -1
  97. package/packages/storefront/dist/server/chunks/{account_CaTloREf.mjs → account_B7sLjsXD.mjs} +1 -1
  98. package/packages/storefront/dist/server/chunks/astro/{assets-service_B77Hm2ue.mjs → assets-service_BOyOfKDQ.mjs} +1 -1
  99. package/packages/storefront/dist/server/chunks/{astro_ISB6VLqs.mjs → astro_B5LBy7PI.mjs} +8 -4
  100. package/packages/storefront/dist/server/chunks/{index_BTDpenpc.mjs → index_BOh755yP.mjs} +1 -1
  101. package/packages/storefront/dist/server/chunks/{index_D0q4ab_n.mjs → index_C2hkTn-w.mjs} +1 -1
  102. package/packages/storefront/dist/server/chunks/{node_C7sdLKL4.mjs → node_DavlI8UF.mjs} +1 -1
  103. package/packages/storefront/dist/server/chunks/pages/{__B4CsSrck.mjs → __RXg_hYeF.mjs} +57 -18
  104. package/packages/storefront/dist/server/chunks/pages/{_page__sb5Idhgp.mjs → _page__Dyte93f2.mjs} +2 -2
  105. package/packages/storefront/dist/server/chunks/pages/{account_iWjHfkwu.mjs → account_C66y6_Y9.mjs} +2 -2
  106. package/packages/storefront/dist/server/chunks/pages/{index_BZlpKBRL.mjs → index_EO1hhrt8.mjs} +2 -2
  107. package/packages/storefront/dist/server/chunks/pages/{node_GFu-CQ19.mjs → node_hc25rqYt.mjs} +3 -3
  108. package/packages/storefront/dist/server/chunks/pages/{~fallback_C07rzeay.mjs → ~fallback_-K3esUV3.mjs} +2 -2
  109. package/packages/storefront/dist/server/chunks/{~fallback_YpJa9BIL.mjs → ~fallback_DQ6yB81s.mjs} +1 -1
  110. package/packages/storefront/dist/server/entry.mjs +625 -601
  111. package/packages/storefront/dist/server/{manifest_KFjAaJaC.mjs → manifest_bZVxjk3o.mjs} +3 -3
  112. package/packages/storefront/dist/server/renderers.mjs +1 -1
  113. package/packages/storefront/package.json +3 -3
  114. package/packages/storefront/src/lib/components/Carousel.vue +6 -0
  115. package/packages/storefront/src/lib/composables/use-product-shelf.ts +23 -4
  116. package/packages/storefront/src/lib/layouts/use-page-main.ts +6 -7
  117. package/packages/test-base/package.json +1 -1
  118. package/packages/types/package.json +1 -1
  119. package/packages/storefront/dist/client/_astro/ProductShelf.kfADQTUO.js +0 -1
  120. package/packages/storefront/dist/client/_astro/client.CdXC84C5.js +0 -1
  121. package/packages/storefront/dist/client/_astro/hoisted.DBPXHTEb.js +0 -1
  122. package/packages/storefront/dist/client/_astro/name.BZA9xqh-.js +0 -1
  123. package/packages/storefront/dist/client/_astro/sf-utils.Cigv01cN.js +0 -13
@@ -104,11 +104,11 @@ jobs:
104
104
  ${{ steps.npm-paths.outputs.LIB_PATH }}
105
105
  ${{ steps.npm-paths.outputs.BIN_PATH }}
106
106
  ~/.npm-global/bin
107
- key: ${{ runner.os }}-npm-globals-firebase-tools-13.3.0
107
+ key: ${{ runner.os }}-npm-globals-firebase-tools-13.4.0
108
108
 
109
109
  - if: steps.npm-g-cache.outputs.cache-hit != 'true'
110
110
  shell: bash
111
- run: npm install -g firebase-tools@13.3.0
111
+ run: npm install -g firebase-tools@13.4.0
112
112
 
113
113
  - name: Initialize Firebase emulators
114
114
  shell: bash
package/CHANGELOG.md CHANGED
@@ -2,6 +2,36 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [2.7.3](https://github.com/ecomplus/cloud-commerce/compare/v2.7.2...v2.7.3) (2024-03-01)
6
+
7
+ ### [2.7.2](https://github.com/ecomplus/cloud-commerce/compare/v2.7.1...v2.7.2) (2024-03-01)
8
+
9
+ ### [2.7.1](https://github.com/ecomplus/cloud-commerce/compare/v2.7.0...v2.7.1) (2024-03-01)
10
+
11
+ ## [2.7.0](https://github.com/ecomplus/cloud-commerce/compare/v2.6.5...v2.7.0) (2024-03-01)
12
+
13
+
14
+ ### Features
15
+
16
+ * **storefront:** New `orderedProductIds` optional prop to product shelf composable ([2ee2f6b](https://github.com/ecomplus/cloud-commerce/commit/2ee2f6bd8902fe105d28115704f34082a1fa213a))
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * **emails:** Bump nodemailer to v6.9.11 ([d2bbb33](https://github.com/ecomplus/cloud-commerce/commit/d2bbb33f6b27412702e733b9036d7686dcdf55a0))
22
+ * **storefront:** Fix parsing shelf `collectionIdAndInfo` from CMS content for categories/brands ([88640ba](https://github.com/ecomplus/cloud-commerce/commit/88640ba9534e72e165c77a1fdd1d5c8abddddf4a))
23
+ * **storefront:** Update `usePageMain` to properly support `titleLink` from section CMS content ([162a7a0](https://github.com/ecomplus/cloud-commerce/commit/162a7a05d787f143f14b8e88bb80e2423d92aa6f))
24
+ * **storefront:** Update Vue to latest v3.4.21 ([482dc36](https://github.com/ecomplus/cloud-commerce/commit/482dc360f68d6a02afd01c1276884df8fa9758ae))
25
+
26
+ ### [2.6.5](https://github.com/ecomplus/cloud-commerce/compare/v2.6.4...v2.6.5) (2024-02-29)
27
+
28
+
29
+ ### Bug Fixes
30
+
31
+ * **ssr:** Revert bump bunny.net CDN cache with /purge request only, then refresh with simple URL get ([72518e0](https://github.com/ecomplus/cloud-commerce/commit/72518e0bdfcfca308696f47a10699f8b9c53239b))
32
+ * **storefront:** Bump Astro to latest v4.4.6 ([be8239b](https://github.com/ecomplus/cloud-commerce/commit/be8239bf7966cb742ddac0365163d3281ea0c41a))
33
+ * **storefront:** Prevent `<Carousel>` scroll reset on mobile browser bar toogle ([9817280](https://github.com/ecomplus/cloud-commerce/commit/9817280dd4f16931de50dddb662208a21a83ed56))
34
+
5
35
  ### [2.6.4](https://github.com/ecomplus/cloud-commerce/compare/v2.6.3...v2.6.4) (2024-02-27)
6
36
 
7
37
 
package/action.yml CHANGED
@@ -138,11 +138,11 @@ runs:
138
138
  ${{ steps.npm-paths.outputs.LIB_PATH }}
139
139
  ${{ steps.npm-paths.outputs.BIN_PATH }}
140
140
  ~/.npm-global/bin
141
- key: ${{ runner.os }}-npm-g-firebase-tools-13.3.0
141
+ key: ${{ runner.os }}-npm-g-firebase-tools-13.4.0
142
142
 
143
143
  - if: github.event_name == 'push' && steps.npm-g-cache.outputs.cache-hit != 'true'
144
144
  shell: bash
145
- run: npm i --location=global firebase-tools@13.3.0
145
+ run: npm i --location=global firebase-tools@13.4.0
146
146
 
147
147
  - if: github.event_name == 'push'
148
148
  uses: dorny/paths-filter@v3.0.1
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable import/no-extraneous-dependencies */
2
- const rulesChecks = require('@commitlint/rules').default;
2
+ import rulesChecks from '@commitlint/rules';
3
3
 
4
4
  const forceTypeCase = (field, parsed) => {
5
5
  switch (parsed.type) {
@@ -21,7 +21,7 @@ const forceTypeCase = (field, parsed) => {
21
21
  return [true];
22
22
  };
23
23
 
24
- module.exports = {
24
+ export default {
25
25
  extends: ['@commitlint/config-conventional'],
26
26
  plugins: [
27
27
  {
@@ -7,6 +7,6 @@ vscode:
7
7
  - vue.volar
8
8
  - bradlc.vscode-tailwindcss
9
9
  ports:
10
- - port: 3000
10
+ - port: 4123
11
11
  onOpen: open-preview
12
12
  visibility: public
@@ -6,11 +6,12 @@
6
6
  ];
7
7
  idx.extensions = [
8
8
  "vue.volar"
9
- # Other recommended extensions crashing launch
10
- # "dbaeumer.vscode-eslint",
11
- # "astro-build.astro-vscode",
12
- # "bradlc.vscode-tailwindcss",
9
+ "astro-build.astro-vscode"
10
+ "bradlc.vscode-tailwindcss"
13
11
  ];
12
+ idx.workspace.onCreate = {
13
+ npm-install = "npm install && npm install --prefix functions/ssr";
14
+ };
14
15
  idx.previews = {
15
16
  enable = true;
16
17
  previews = [
@@ -15,8 +15,8 @@
15
15
  },
16
16
  "main": "index.js",
17
17
  "dependencies": {
18
- "@cloudcommerce/feeds": "^2.6.3",
19
- "@cloudcommerce/firebase": "^2.6.3",
20
- "@cloudcommerce/passport": "^2.6.3"
18
+ "@cloudcommerce/feeds": "^2.6.5",
19
+ "@cloudcommerce/firebase": "^2.6.5",
20
+ "@cloudcommerce/passport": "^2.6.5"
21
21
  }
22
22
  }
@@ -22,32 +22,130 @@
22
22
  {
23
23
  "type": "product-shelf",
24
24
  "collectionIdAndInfo": null,
25
- "sort": "-price_discount",
26
- "title": "",
25
+ "sort": "",
26
+ "title": "Caixas e latas para Páscoa",
27
+ "titleLink": "/categorias/caixas-e-latas-de-pascoa",
28
+ "orderedProductIds": [
29
+ "63c5654e4834634f73375f94",
30
+ "62eab1aaeb85911216a3bece",
31
+ "61f165267963422eeed4bcdc",
32
+ "61f160d67963422eeed4abe8",
33
+ "63c56cf34834634f7337716e",
34
+ "60ec8de8f8aba90b3a15f56b",
35
+ "60ebbc6ef8aba90b3a157c58",
36
+ "65cf540e87ab487fbfba0ae4",
37
+ "65cf540d87ab487fbfba0ae2",
38
+ "61f161037963422eeed4accd",
39
+ "65c3c0d987ab487fbfae35a3",
40
+ "65c3e74e87ab487fbfae799e",
41
+ "65c274122cd6b65959255c87",
42
+ "65c3c0d887ab487fbfae359f"
43
+ ],
27
44
  "isHeadless": false,
28
45
  "isShuffle": false,
29
- "limit": 8,
46
+ "limit": null,
30
47
  "page": 1
31
48
  },
32
49
  {
33
50
  "type": "product-shelf",
34
51
  "collectionIdAndInfo": null,
52
+ "sort": "",
53
+ "title": "Papéis embrulho para Ovos de Páscoa",
54
+ "titleLink": "/categorias/papel-embrulho-para-pascoa",
55
+ "orderedProductIds": [
56
+ "6594ce732cd6b65959f0f9df",
57
+ "6594ce492cd6b65959f0f9bd",
58
+ "63c53fb54834634f7337015f",
59
+ "63d280b5b9e5be0778470cc9",
60
+ "61f165287963422eeed4bce4",
61
+ "6595a4fb2cd6b65959f1eb17",
62
+ "65ae7fe02cd6b659590cef82"
63
+ ],
64
+ "isHeadless": false,
65
+ "isShuffle": false,
66
+ "limit": null,
67
+ "page": 1
68
+ },
69
+ {
70
+ "type": "product-shelf",
71
+ "collectionIdAndInfo": "63a9ab6d4834634f731f41df:categories::/categorias/transfers-e-formas-decoradas-de-pascoa",
72
+ "sort": "-sales",
73
+ "title": "Transfers e blisters para Páscoa",
74
+ "titleLink": "",
75
+ "isHeadless": false,
76
+ "isShuffle": false,
77
+ "limit": 8,
78
+ "page": 1
79
+ },
80
+ {
81
+ "type": "product-shelf",
82
+ "collectionIdAndInfo": "63a9a0934834634f731f34f9:categories::/categorias/cortadores-de-pascoa",
83
+ "sort": "-sales",
84
+ "title": "Cortadores de Páscoa",
85
+ "titleLink": "",
86
+ "isHeadless": false,
87
+ "isShuffle": false,
88
+ "limit": 8,
89
+ "page": 1
90
+ },
91
+ {
92
+ "type": "product-shelf",
93
+ "collectionIdAndInfo": "63a99f7e4834634f731f3276:categories::/categorias/moldes-de-silicone-para-pascoa",
35
94
  "sort": "-sales",
36
- "title": "Ingredientes que fazem a diferença",
95
+ "title": "Moldes de silicone para Páscoa",
96
+ "titleLink": "",
37
97
  "isHeadless": false,
38
98
  "isShuffle": false,
39
99
  "limit": 8,
40
- "page": 3
100
+ "page": 1
41
101
  },
42
102
  {
43
103
  "type": "product-shelf",
44
104
  "collectionIdAndInfo": null,
45
- "sort": "-created_at",
46
- "title": "Fitas de Natal",
105
+ "sort": "",
106
+ "title": "Formas de chocolate para Páscoa",
107
+ "titleLink": "/categorias/formas-de-chocolate-para-pascoa",
108
+ "orderedProductIds": [
109
+ "63a451194834634f731b9c22",
110
+ "63a458ac4834634f731ba9b9",
111
+ "60eb53e4f8aba90b3a1551b6",
112
+ "60eb5387f8aba90b3a15516e",
113
+ "63a3028c4834634f731a2776",
114
+ "60eb527af8aba90b3a15508d",
115
+ "60eb5387f8aba90b3a15516e",
116
+ "63a449d34834634f731b91a1",
117
+ "60eb5348f8aba90b3a15514f",
118
+ "65a4955e2cd6b6595901b85c"
119
+ ],
120
+ "isHeadless": false,
121
+ "isShuffle": false,
122
+ "limit": null,
123
+ "page": 1
124
+ },
125
+ {
126
+ "type": "product-shelf",
127
+ "collectionIdAndInfo": "63a99cbb4834634f731f2f0d:categories::/categorias/confeitos-e-granulados-de-pascoa",
128
+ "sort": "-sales",
129
+ "title": "Confeitos de açúcar para Páscoa",
130
+ "titleLink": "",
47
131
  "isHeadless": false,
48
132
  "isShuffle": false,
49
133
  "limit": 8,
50
- "page": 3
134
+ "page": 1
135
+ },
136
+ {
137
+ "type": "product-shelf",
138
+ "collectionIdAndInfo": "63a996bc4834634f731f27f2:categories::/categorias/fitas-decorativas-de-pascoa",
139
+ "sort": "-sales",
140
+ "title": "Fitas decorativas para Páscoa",
141
+ "titleLink": "",
142
+ "isHeadless": false,
143
+ "isShuffle": false,
144
+ "limit": 8,
145
+ "page": 1
146
+ },
147
+ {
148
+ "type": "c:reviews"
51
149
  }
52
150
  ]
53
151
  }
@@ -13,6 +13,9 @@
13
13
  },
14
14
  {
15
15
  "type": "product-specifications"
16
+ },
17
+ {
18
+ "type": "c:reviews"
16
19
  }
17
20
  ]
18
21
  }
@@ -1,5 +1,5 @@
1
1
  declare module '@@sf/custom-content' {
2
2
  export interface CustomContent {
3
- // 'my-content': typeof import('content/my-content.json');
3
+ 'reviews': typeof import('content/reviews.json');
4
4
  }
5
5
  }
@@ -19,16 +19,16 @@
19
19
  },
20
20
  "main": "index.js",
21
21
  "dependencies": {
22
- "@cloudcommerce/api": "^2.6.3",
23
- "@cloudcommerce/firebase": "^2.6.3",
24
- "@cloudcommerce/ssr": "^2.6.3",
22
+ "@cloudcommerce/api": "^2.6.5",
23
+ "@cloudcommerce/firebase": "^2.6.5",
24
+ "@cloudcommerce/ssr": "^2.6.5",
25
25
  "@headlessui/vue": "^1.7.18",
26
26
  "micromark": "^4.0.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@cloudcommerce/i18n": "^2.6.3",
30
- "@cloudcommerce/storefront": "^2.6.3",
31
- "@cloudcommerce/types": "^2.6.3",
29
+ "@cloudcommerce/i18n": "^2.6.5",
30
+ "@cloudcommerce/storefront": "^2.6.5",
31
+ "@cloudcommerce/types": "^2.6.5",
32
32
  "@iconify-json/mingcute": "^1.1.16",
33
33
  "photoswipe": "^5.4.3"
34
34
  }
@@ -0,0 +1,83 @@
1
+ <template>
2
+ <section id="reviews" class="bg-white">
3
+ <div class="ui-section">
4
+ <div class="text-center">
5
+ <h4
6
+ v-if="title"
7
+ class="text-center text-base-900 ui-title"
8
+ >
9
+ {{ title }}
10
+ </h4>
11
+ <ALink
12
+ class="mt-1.5 inline-block text-sm text-base-600 ui-link"
13
+ href="https://customerreviews.google.com/v/merchant?q=barradoce.com.br&c=BR&v=19&hl=pt_BR"
14
+ >
15
+ <i class="mr-0.5 i-external-link-line"></i>
16
+ Ver avaliações no Google
17
+ </ALink>
18
+ </div>
19
+ <Carousel class="mt-8 pb-9">
20
+ <li
21
+ v-for="({ name, avatar, comment }, i) in reviews" :key="i"
22
+ class="shrink-0 basis-full px-1.5 md:basis-1/3 md:px-3"
23
+ >
24
+ <blockquote class="h-full rounded bg-secondary-100/10 p-6 sm:p-8">
25
+ <div class="flex items-center gap-4">
26
+ <AImg
27
+ v-if="avatar"
28
+ :picture="{ url: avatar }"
29
+ :alt="`Avatar no comentário de ${name}`"
30
+ class="size-11 rounded-full object-cover"
31
+ />
32
+ <div>
33
+ <div class="flex gap-0.5 text-yellow-400">
34
+ <i v-for="n in 5" :key="`${i}-${n}`" class="i-star-solid"></i>
35
+ </div>
36
+ <p class="mt-0.5 line-clamp-1 text-sm
37
+ font-medium text-base-800">
38
+ {{ name }}
39
+ </p>
40
+ </div>
41
+ </div>
42
+ <p
43
+ class="mt-5 line-clamp-5 text-base-600 md:line-clamp-6"
44
+ :class="[
45
+ comment.length < 40 && 'text-xl',
46
+ comment.length > 39 && comment.length < 60 && 'text-lg',
47
+ ]"
48
+ >
49
+ {{ comment }}
50
+ </p>
51
+ </blockquote>
52
+ </li>
53
+ <template #controls>
54
+ <div class="relative mx-auto mt-3 max-w-20
55
+ text-3xl text-primary-400">
56
+ <CarouselControl is-prev>
57
+ <i class="rotate-180 i-arrow-right-line
58
+ hover:scale-110 hover:text-primary"></i>
59
+ </CarouselControl>
60
+ <CarouselControl>
61
+ <i class="i-arrow-right-line
62
+ hover:scale-110 hover:text-primary"></i>
63
+ </CarouselControl>
64
+ </div>
65
+ </template>
66
+ </Carousel>
67
+ </div>
68
+ </section>
69
+ </template>
70
+
71
+ <script setup lang="ts">
72
+ export interface Props {
73
+ autoplay?: number;
74
+ title?: string;
75
+ reviews: {
76
+ name: string;
77
+ avatar?: string;
78
+ comment: string;
79
+ }[];
80
+ }
81
+
82
+ defineProps<Props>();
83
+ </script>
@@ -1,14 +1,14 @@
1
1
  <template>
2
2
  <article class="flex min-h-screen flex-col justify-end">
3
3
  <section class="bg-base-50">
4
- <div class="ui-section flex flex-wrap
5
- items-center justify-center gap-6 lg:gap-12">
4
+ <div class="flex flex-wrap items-center
5
+ justify-center gap-6 ui-section lg:gap-12">
6
6
  <a href="/">
7
7
  <slot name="logo" />
8
8
  </a>
9
9
  <div class="flex items-center gap-2">
10
- <i class="bg-success-400 i-shield-check-solid m-0 text-3xl"></i>
11
- <span class="text-base-600 text-base">
10
+ <i class="m-0 bg-success-400 text-3xl i-shield-check-solid"></i>
11
+ <span class="text-base text-base-600">
12
12
  {{ $t.i19safeBuy }}
13
13
  </span>
14
14
  </div>
@@ -17,7 +17,7 @@
17
17
  <section class="grow">
18
18
  <article id="storefront-app"></article>
19
19
  </section>
20
- <section class="bg-base-50 mt-4 lg:mt-8">
20
+ <section class="mt-4 bg-base-50 lg:mt-8">
21
21
  <nav class="ui-section-slim">
22
22
  <ul class="mt-6 flex flex-wrap justify-center gap-6 lg:gap-8">
23
23
  <li
@@ -26,7 +26,7 @@
26
26
  >
27
27
  <ALink :href="href" target="blank" class="text-base-700 ui-link">
28
28
  {{ title }}
29
- <i class="bg-base-300 i-arrow-top-right-on-square ml-0.5"></i>
29
+ <i class="ml-0.5 bg-base-300 i-external-link-line"></i>
30
30
  </ALink>
31
31
  </li>
32
32
  </ul>
@@ -10,18 +10,18 @@
10
10
  <span v-if="!stamp.img" class="flex items-center">
11
11
  <span
12
12
  v-if="stamp.icon"
13
- class="[&>*]:from-success-200 [&>*]:to-success-700 mr-2
14
- text-4xl [&>*]:bg-gradient-to-br"
13
+ class="mr-2 text-4xl [&>*]:bg-gradient-to-br
14
+ [&>*]:from-success-200 [&>*]:to-success-700"
15
15
  >
16
16
  <i v-if="stamp.icon === 'lock'" class="i-lock-closed"></i>
17
17
  <i v-else-if="stamp.icon === 'check'" class="i-check-badge"></i>
18
18
  <i v-else class="i-arrow-path-rounded-square"></i>
19
19
  </span>
20
- <span class="text-base-600 max-w-[140px] text-sm font-medium">
20
+ <span class="max-w-[140px] text-sm font-medium text-base-600">
21
21
  {{ stamp.alt }}
22
22
  <i
23
23
  v-if="stamp.href && stamp.href.charAt(0) !== '/'"
24
- class="bg-base-400 i-arrow-top-right-on-square ml-0.5"
24
+ class="ml-0.5 bg-base-400 i-external-link-line"
25
25
  ></i>
26
26
  </span>
27
27
  </span>
@@ -8,16 +8,30 @@
8
8
  </div>
9
9
  <div class="top-0 pt-4 transition-transform
10
10
  lg:sticky lg:pb-4 lg:sticky-header:translate-y-24">
11
- <ul class="flax-wrap mb-3 flex gap-2">
11
+ <ul class="flax-wrap mb-3 flex gap-2 overflow-hidden lg:grid xl:flex">
12
12
  <li class="flex items-center gap-1 py-1 font-normal ui-badge-pill">
13
- <i class="m-0 text-secondary-700 i-arrow-path-rounded-square-16-solid"></i>
13
+ <i class="m-0 text-secondary-700
14
+ i-arrow-path-rounded-square-16-solid"></i>
14
15
  <span class="whitespace-nowrap text-sm">devolução grátis</span>
15
16
  </li>
16
- <li class="flex items-center gap-1 py-1 font-normal ui-badge-pill">
17
+ <li class="flex items-center gap-1 bg-transparent py-1
18
+ font-normal ui-badge-pill">
17
19
  <i class="m-0 text-secondary-700 i-building-storefront-solid"></i>
18
20
  <span class="whitespace-nowrap text-sm">desde 1984</span>
19
21
  </li>
20
22
  </ul>
23
+ <a class="my-2 flex items-center gap-2 xl:my-3" href="#reviews">
24
+ <div class="flex gap-0.5 text-yellow-400">
25
+ <i v-for="n in 5" :key="`s${n}`" class="m-0 i-star-solid"></i>
26
+ </div>
27
+ <span class="flex flex-wrap items-end gap-x-1.5">
28
+ <span>
29
+ <span class="font-medium">4,9</span>
30
+ <span class="font-light text-base-500">/5</span>
31
+ </span>
32
+ <small class="shrink-0 text-base-700">(470+ avaliações)</small>
33
+ </span>
34
+ </a>
21
35
  <h1 class="text-lg text-base-600 ui-text-brand">
22
36
  {{ title }}
23
37
  </h1>
@@ -66,8 +80,25 @@
66
80
  {{ $t.i19addToCart }}
67
81
  </button>
68
82
  </div>
69
- <div class="mt-6 rounded border-2
70
- border-base-50 border-t-secondary-100 p-4 lg:mt-4">
83
+ <div class="mt-6 flex flex-col
84
+ items-start justify-start gap-3 rounded
85
+ border-2 border-base-50 border-t-secondary-100 p-4 sm:flex-row
86
+ sm:justify-between lg:mt-4 lg:grid">
87
+ <div
88
+ v-if="!product.production_time"
89
+ class="flex items-center gap-2.5 sm:order-last lg:order-none"
90
+ >
91
+ <div class="relative flex size-3">
92
+ <span class="absolute inline-flex size-full animate-ping rounded-full
93
+ bg-success-200 opacity-75"></span>
94
+ <span class="relative inline-flex
95
+ size-3 rounded-full bg-success-300"></span>
96
+ </div>
97
+ <span class="text-balance text-sm
98
+ font-medium lowercase text-base-800">
99
+ Em estoque, pronto para envio
100
+ </span>
101
+ </div>
71
102
  <ShippingCalculator
72
103
  :shipped-items="[{ ...product, quantity }]"
73
104
  has-label
@@ -1,10 +1,11 @@
1
1
  <template>
2
2
  <section class="ui-section">
3
3
  <div v-if="title" class="mx-auto mb-4 max-w-prose text-center">
4
- <h2 class="ui-text-brand text-3xl">
4
+ <h2>
5
5
  <ALink
6
6
  :href="titleLink"
7
- :class="titleLink ? 'ui-link' : 'text-base-700'"
7
+ class="text-3xl text-base-700 ui-text-brand"
8
+ :class="titleLink && 'ui-link decoration-primary/40'"
8
9
  >
9
10
  {{ title }}
10
11
  </ALink>
@@ -26,11 +27,11 @@
26
27
  <DefineCarouselControl v-slot="{ isPrev }">
27
28
  <CarouselControl
28
29
  v-show="products.length > 2"
29
- class=":uno: text-primary lg:hover:bg-primary-200 !top-1/2 size-12
30
- rounded-full bg-transparent text-3xl leading-none ring-black/5
31
- backdrop-blur-md transition-opacity
32
- group-hover/shelf:opacity-90 lg:bg-white/80
33
- lg:text-2xl lg:opacity-0 lg:shadow-sm lg:ring-1"
30
+ class=":uno: !top-1/2 size-12 rounded-full bg-transparent
31
+ text-3xl leading-none text-primary ring-black/5 backdrop-blur-md
32
+ transition-opacity group-hover/shelf:opacity-90
33
+ lg:bg-white/80 lg:text-2xl
34
+ lg:opacity-0 lg:shadow-sm lg:ring-1 lg:hover:bg-primary-200"
34
35
  :class="isPrev ? '!-left-4' : '!-right-4'"
35
36
  :is-prev="isPrev"
36
37
  />
@@ -17,7 +17,7 @@
17
17
  class="text-xs font-normal text-base-500 ui-link"
18
18
  >
19
19
  Não sei meu CEP
20
- <i class="mr-1 opacity-50 i-arrow-top-right-on-square"></i>
20
+ <i class="mr-1 opacity-50 i-external-link-line"></i>
21
21
  </ALink>
22
22
  </label>
23
23
  <div class="relative max-w-52">
@@ -13,6 +13,7 @@ import SearchShowcase from '~/components/SearchShowcase.vue';
13
13
  import PageTitle from '~/components/PageTitle.vue';
14
14
  import ContentEntry from '~/components/ContentEntry.vue';
15
15
  import middSearchEngine from '~/state/midd-search-engine';
16
+ import BuyerReviews from '~/components/BuyerReviews.vue';
16
17
 
17
18
  const { routeContext } = Astro.locals;
18
19
  const { sections } = await usePageSections({
@@ -72,6 +73,9 @@ cause route resource is required to define sections from content. */
72
73
  return <ContentEntry {...props} />;
73
74
  case 'custom-html':
74
75
  return <ContentClearfix html={props.html} />;
76
+ case 'c:reviews':
77
+ const reviewsContent = await routeContext.getContent('reviews');
78
+ return <BuyerReviews {...reviewsContent} client:sf="lazy,interaction" />;
75
79
  case 'c:foo':
76
80
  return <div data-foo={props.foo}></div>;
77
81
  default:
@@ -15,8 +15,8 @@
15
15
  },
16
16
  "main": "index.js",
17
17
  "dependencies": {
18
- "@cloudcommerce/events": "^2.6.3",
19
- "@cloudcommerce/firebase": "^2.6.3",
20
- "@cloudcommerce/modules": "^2.6.3"
18
+ "@cloudcommerce/events": "^2.6.5",
19
+ "@cloudcommerce/firebase": "^2.6.5",
20
+ "@cloudcommerce/modules": "^2.6.5"
21
21
  }
22
22
  }
@@ -26,10 +26,10 @@
26
26
  "url": "https://github.com/ecomplus/cloud-commerce/issues"
27
27
  },
28
28
  "dependencies": {
29
- "@cloudcommerce/cli": "^2.6.3"
29
+ "@cloudcommerce/cli": "^2.6.5"
30
30
  },
31
31
  "devDependencies": {
32
- "@cloudcommerce/eslint": "^2.6.3",
32
+ "@cloudcommerce/eslint": "^2.6.5",
33
33
  "husky": "^9.0.10",
34
34
  "lint-staged": "^15.2.2"
35
35
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cloudcommerce",
3
3
  "type": "module",
4
- "version": "2.6.4",
4
+ "version": "2.7.3",
5
5
  "description": "Open fair-code headless commerce platform: API-first, microservices based, event driven and cloud native",
6
6
  "main": "packages/api/lib/index.js",
7
7
  "author": "E-Com Club Softwares para E-commerce <ti@e-com.club>",
@@ -20,9 +20,9 @@
20
20
  "packages/!(storefront)/**/*.ts": "eslint --fix"
21
21
  },
22
22
  "devDependencies": {
23
- "@commitlint/cli": "^18.6.1",
24
- "@commitlint/config-conventional": "^18.6.2",
25
- "@commitlint/rules": "^18.6.1",
23
+ "@commitlint/cli": "^19.0.3",
24
+ "@commitlint/config-conventional": "^19.0.3",
25
+ "@commitlint/rules": "^19.0.3",
26
26
  "@types/node": "^18.19.18",
27
27
  "dotenv": "^16.4.5",
28
28
  "eslint": "^8.57.0",
@@ -36,7 +36,7 @@
36
36
  "vite": "^5.1.4",
37
37
  "vitest": "^1.3.1",
38
38
  "zx": "^7.2.3",
39
- "@cloudcommerce/eslint": "2.6.4"
39
+ "@cloudcommerce/eslint": "2.7.3"
40
40
  },
41
41
  "scripts": {
42
42
  "fix-install": "bash scripts/pre-install.sh && pnpm i",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/api",
3
3
  "type": "module",
4
- "version": "2.6.4",
4
+ "version": "2.7.3",
5
5
  "description": "E-Com Plus Cloud Commerce APIs client/adapter",
6
6
  "main": "lib/api.js",
7
7
  "types": "lib/api.d.ts",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-affiliate-program",
3
3
  "type": "module",
4
- "version": "2.6.4",
4
+ "version": "2.7.3",
5
5
  "description": "E-Com Plus Cloud Commerce app for simple affiliate program",
6
6
  "main": "lib/index.js",
7
7
  "repository": {