cloudcommerce 0.37.0 → 0.38.0
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.
- package/.github/workflows/test-apps.yml +2 -2
- package/.gitmodules +0 -3
- package/.vscode/settings.json +1 -2
- package/CHANGELOG.md +50 -0
- package/action.yml +2 -2
- package/ecomplus-stores/barra-doce/functions/many/package.json +3 -3
- package/ecomplus-stores/barra-doce/functions/ssr/package.json +6 -6
- package/ecomplus-stores/barra-doce/functions/with-apps/package.json +3 -3
- package/ecomplus-stores/barra-doce/package.json +2 -2
- package/package.json +7 -7
- package/packages/api/lib/api.d.ts +2 -2
- package/packages/api/package.json +1 -1
- package/packages/api/types.d.ts +4 -1
- package/packages/apps/affilate-program/package.json +1 -1
- package/packages/apps/correios/package.json +1 -1
- package/packages/apps/custom-payment/package.json +1 -1
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/datafrete/package.json +1 -1
- package/packages/apps/discounts/package.json +1 -1
- package/packages/apps/emails/package.json +1 -1
- package/packages/apps/fb-conversions/package.json +1 -1
- package/packages/apps/flash-courier/package.json +1 -1
- package/packages/apps/frenet/package.json +1 -1
- package/packages/apps/galaxpay/package.json +1 -1
- package/packages/apps/google-analytics/package.json +1 -1
- package/packages/apps/jadlog/package.json +1 -1
- package/packages/apps/loyalty-points/package.json +1 -1
- package/packages/apps/mandae/package.json +1 -1
- package/packages/apps/melhor-envio/package.json +1 -1
- package/packages/apps/mercadopago/package.json +1 -1
- package/packages/apps/pagarme/package.json +1 -1
- package/packages/apps/pagarme-v5/package.json +1 -1
- package/packages/apps/paghiper/package.json +1 -1
- package/packages/apps/pix/package.json +1 -1
- package/packages/apps/tiny-erp/package.json +1 -1
- package/packages/apps/webhooks/package.json +1 -1
- package/packages/cli/config/firestore.rules +4 -1
- package/packages/cli/lib/cli.js +30 -9
- package/packages/cli/package.json +2 -1
- package/packages/cli/src/cli.ts +37 -9
- package/packages/config/package.json +1 -1
- package/packages/emails/package.json +1 -1
- package/packages/eslint/package.json +3 -3
- package/packages/events/package.json +1 -1
- package/packages/feeds/package.json +1 -1
- package/packages/firebase/package.json +1 -1
- package/packages/i18n/package.json +1 -1
- package/packages/modules/package.json +1 -1
- package/packages/passport/package.json +1 -1
- package/packages/ssr/package.json +5 -5
- package/packages/storefront/.auto-imports.d.ts +1 -0
- package/packages/storefront/client.d.ts +1 -0
- package/packages/storefront/config/storefront.tailwind.cjs +21 -20
- package/packages/storefront/config/storefront.unocss.cjs +11 -0
- package/packages/storefront/dist/client/_astro/{AccountPage.700be123.js → AccountPage.j0C5JBLY.js} +1 -1
- package/packages/storefront/dist/client/_astro/{CartSidebar.430b55df.js → CartSidebar.1kUFk9Xn.js} +1 -1
- package/packages/storefront/dist/client/_astro/HeroSlider.tR1dVXyu.js +1 -0
- package/packages/storefront/dist/client/_astro/{PitchBar.06e0f831.js → PitchBar.FelC04wE.js} +1 -1
- package/packages/storefront/dist/client/_astro/{Prices.0e829c31.js → Prices.PuQc6C7F.js} +1 -1
- package/packages/storefront/dist/client/_astro/ProductCard.ephJafAE.js +1 -0
- package/packages/storefront/dist/client/_astro/ProductDetails.B6Ih5MGf.js +7 -0
- package/packages/storefront/dist/client/_astro/ProductShelf.GESxuPZ_.js +1 -0
- package/packages/storefront/dist/client/_astro/{QuantitySelector.ebf60845.js → QuantitySelector.YNmWjN8y.js} +1 -1
- package/packages/storefront/dist/client/_astro/SearchContainer.BzixfU3R.js +1 -0
- package/packages/storefront/dist/client/_astro/SearchModal.F7vbwxIv.js +1 -0
- package/packages/storefront/dist/client/_astro/ShopHeader.5vR1LgSW.js +10 -0
- package/packages/storefront/dist/client/_astro/_plugin-vue_export-helper.sk5AFsEV.js +1 -0
- package/packages/storefront/dist/client/_astro/_slug_.r8QHNfdw.css +1 -0
- package/packages/storefront/dist/client/_astro/client.RF8UxjZd.js +1 -0
- package/packages/storefront/dist/client/_astro/customer-session._VkzXnXT.js +7 -0
- package/packages/storefront/dist/client/_astro/ecom-utils.gJYgRPRz.js +1 -0
- package/packages/storefront/dist/client/_astro/{firebase-app.992a296f.js → firebase-app.cPMfoOsn.js} +1 -1
- package/packages/storefront/dist/client/_astro/{format-money.9cf6b04d.js → format-money.FMQXgKHB.js} +1 -1
- package/packages/storefront/dist/client/_astro/{hoisted.c90fc6ab.js → hoisted.B6fKrLPR.js} +1 -1
- package/packages/storefront/dist/client/_astro/{hoisted.54eaab04.js → hoisted._FbzheVm.js} +1 -1
- package/packages/storefront/dist/client/_astro/{i18n.29216eeb.js → i18n.m7SpISxy.js} +1 -1
- package/packages/storefront/dist/client/_astro/{img.4f23a3dd.js → img.zh-Drf-O.js} +1 -1
- package/packages/storefront/dist/client/_astro/{index-61e5ac61.bdc8d0cd.js → index-dd468b12.D5s8VdAL.js} +92 -107
- package/packages/storefront/dist/client/_astro/{index.570b84fe.js → index.5PN-EYMS.js} +1 -1
- package/packages/storefront/dist/client/_astro/index.XrHFaN2F.js +1 -0
- package/packages/storefront/dist/client/_astro/{modules-info.55780599.js → modules-info.sD0tdb2b.js} +1 -1
- package/packages/storefront/dist/client/_astro/name.HU5l7TJo.js +1 -0
- package/packages/storefront/dist/client/_astro/{photoswipe-lightbox.esm.c157838f.js → photoswipe-lightbox.esm.dZBqKD9u.js} +1 -1
- package/packages/storefront/dist/client/_astro/{photoswipe.01431ec7.js → photoswipe.0V7m2jWu.js} +1 -2
- package/packages/storefront/dist/client/_astro/{photoswipe.esm.92c2d901.js → photoswipe.esm.Ylh9TGkz.js} +1 -1
- package/packages/storefront/dist/client/_astro/sf-utils.5t7r9A2G.js +1 -0
- package/packages/storefront/dist/client/_astro/{shopping-cart.d9f601dd.js → shopping-cart.A-1jhlKi.js} +1 -1
- package/packages/storefront/dist/client/_astro/use-analytics.1EVxbrS7.js +1 -0
- package/packages/storefront/dist/client/_astro/{use-product-card.437911bb.js → use-product-card.erbOV6Fv.js} +1 -1
- package/packages/storefront/dist/client/robots.txt +1 -0
- package/packages/storefront/dist/server/chunks/{CartSidebar_eab28771.mjs → CartSidebar_hAgJQJgm.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/SearchModal_eWb5SdQM.mjs +351 -0
- package/packages/storefront/dist/server/chunks/{_.._5a781fb3.mjs → _.._S7DDBn_b.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/{account_519edb70.mjs → account_3ySmGzMc.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/astro/{assets-service_a9d9ab5f.mjs → assets-service_QlOZG8ov.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/{astro_d98f7186.mjs → astro_zcC1GStV.mjs} +17 -34
- package/packages/storefront/dist/server/chunks/{index_5e3ed8a0.mjs → index_nIwq11oA.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/{index_10e14f85.mjs → index_uAR5ZV4d.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/{node_1119b0d1.mjs → node_2VvC7trl.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/pages/{__93ade2dd.mjs → __MSibDuuV.mjs} +652 -255
- package/packages/storefront/dist/server/chunks/pages/{account_e5d410a7.mjs → account_iG-YqJ5q.mjs} +3 -2
- package/packages/storefront/dist/server/chunks/pages/{index_7e25afc1.mjs → index_BtDyKPh_.mjs} +3 -2
- package/packages/storefront/dist/server/chunks/pages/{node_bd378ac0.mjs → node_bKqL47eZ.mjs} +2 -2
- package/packages/storefront/dist/server/chunks/pages/{~fallback_73578d2f.mjs → ~fallback_73R5VA6j.mjs} +3 -2
- package/packages/storefront/dist/server/chunks/{photoswipe_9528923e.mjs → photoswipe_IcWDJiwc.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/{~fallback_41122b9b.mjs → ~fallback_7q1dqY4e.mjs} +1 -1
- package/packages/storefront/dist/server/entry.mjs +970 -93
- package/packages/storefront/dist/server/manifest_dSwvaOdW.mjs +195 -0
- package/packages/storefront/dist/server/renderers.mjs +2 -2
- package/packages/storefront/package.json +13 -13
- package/packages/storefront/src/helpers/sf-utils.ts +37 -6
- package/packages/storefront/src/lib/composables/use-search-container.ts +48 -0
- package/packages/storefront/src/lib/composables/use-search-modal.ts +31 -27
- package/packages/storefront/src/lib/composables/use-shop-header.ts +78 -1
- package/packages/storefront/src/lib/composables/use-sticky-header.ts +2 -0
- package/packages/storefront/src/lib/layouts/BaseHead.astro +8 -1
- package/packages/storefront/src/lib/layouts/use-page-main.ts +15 -0
- package/packages/storefront/src/lib/scripts/firestore.ts +27 -0
- package/packages/storefront/src/lib/ssr-context.ts +14 -0
- package/packages/storefront/src/lib/state/search-engine.ts +80 -27
- package/packages/storefront/src/lib/state/use-analytics.ts +36 -21
- package/packages/test-base/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/ecomplus-stores/monocard/.devcontainer/devcontainer.json +0 -30
- package/ecomplus-stores/monocard/.editorconfig +0 -13
- package/ecomplus-stores/monocard/.eslintrc.cjs +0 -3
- package/ecomplus-stores/monocard/.firebaserc +0 -5
- package/ecomplus-stores/monocard/.github/build-and-deploy +0 -1
- package/ecomplus-stores/monocard/.github/renovate.json +0 -5
- package/ecomplus-stores/monocard/.github/workflows/build-and-deploy.yml +0 -37
- package/ecomplus-stores/monocard/.github/workflows/calibreapp-image-actions.yml +0 -23
- package/ecomplus-stores/monocard/.gitpod.yml +0 -12
- package/ecomplus-stores/monocard/.idx/dev.nix +0 -24
- package/ecomplus-stores/monocard/.nvmrc +0 -1
- package/ecomplus-stores/monocard/.vscode/extensions.json +0 -8
- package/ecomplus-stores/monocard/.vscode/launch.json +0 -11
- package/ecomplus-stores/monocard/.vscode/settings.json +0 -13
- package/ecomplus-stores/monocard/LICENSE.md +0 -230
- package/ecomplus-stores/monocard/README.md +0 -31
- package/ecomplus-stores/monocard/SETUP.md +0 -129
- package/ecomplus-stores/monocard/SETUP.pt-BR.md +0 -129
- package/ecomplus-stores/monocard/functions/config.json +0 -3
- package/ecomplus-stores/monocard/functions/example.env +0 -10
- package/ecomplus-stores/monocard/functions/many/index.js +0 -14
- package/ecomplus-stores/monocard/functions/many/package.json +0 -22
- package/ecomplus-stores/monocard/functions/ssr/.eslintrc.cjs +0 -6
- package/ecomplus-stores/monocard/functions/ssr/astro.config.mjs +0 -4
- package/ecomplus-stores/monocard/functions/ssr/content/blog/.gitkeep +0 -0
- package/ecomplus-stores/monocard/functions/ssr/content/extra-pages/terms.json +0 -11
- package/ecomplus-stores/monocard/functions/ssr/content/extra-pages/trocas.json +0 -11
- package/ecomplus-stores/monocard/functions/ssr/content/layout.json +0 -52
- package/ecomplus-stores/monocard/functions/ssr/content/pages/home.json +0 -20
- package/ecomplus-stores/monocard/functions/ssr/content/pages/products.json +0 -18
- package/ecomplus-stores/monocard/functions/ssr/content/settings.json +0 -78
- package/ecomplus-stores/monocard/functions/ssr/index.js +0 -18
- package/ecomplus-stores/monocard/functions/ssr/package.json +0 -36
- package/ecomplus-stores/monocard/functions/ssr/public/admin/.gitkeep +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/assets/lotties/img_1.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/assets/lotties/img_1.webp +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/assets/lotties/phone-nfc.json +0 -1
- package/ecomplus-stores/monocard/functions/ssr/public/img/icon.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/large-icon.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/card-phone.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/devices.jpg +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/ecom-icon.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/edit-suit.jpg +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/favicon.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/icon.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/large-icon.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/logo-arcelor-mittal.webp +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/logo-azul.webp +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/logo-banco-pan.webp +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/logo-brinks.webp +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/logo-mastercard.webp +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/logo-pfizer.webp +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/logo-prudential.webp +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/logo-unimed.webp +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/logo.webp +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/mockup-editar.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/og-image.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/padronagem-tilada.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/qrcode-camera.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/img/uploads/sua-logo-aqui.png +0 -0
- package/ecomplus-stores/monocard/functions/ssr/public/robots.txt +0 -6
- package/ecomplus-stores/monocard/functions/ssr/scripts/build.sh +0 -14
- package/ecomplus-stores/monocard/functions/ssr/src/assets/card.css +0 -99
- package/ecomplus-stores/monocard/functions/ssr/src/assets/style.css +0 -79
- package/ecomplus-stores/monocard/functions/ssr/src/components/AccountMenu.vue +0 -97
- package/ecomplus-stores/monocard/functions/ssr/src/components/AccountPage.vue +0 -62
- package/ecomplus-stores/monocard/functions/ssr/src/components/Banner.vue +0 -59
- package/ecomplus-stores/monocard/functions/ssr/src/components/BannersGrid.astro +0 -25
- package/ecomplus-stores/monocard/functions/ssr/src/components/Breadcrumbs.astro +0 -44
- package/ecomplus-stores/monocard/functions/ssr/src/components/CartItem.vue +0 -64
- package/ecomplus-stores/monocard/functions/ssr/src/components/CartSidebar.vue +0 -69
- package/ecomplus-stores/monocard/functions/ssr/src/components/CasesGrid.astro +0 -49
- package/ecomplus-stores/monocard/functions/ssr/src/components/CheckoutPage.vue +0 -33
- package/ecomplus-stores/monocard/functions/ssr/src/components/Collapse.vue +0 -19
- package/ecomplus-stores/monocard/functions/ssr/src/components/DemoVideo.vue +0 -10
- package/ecomplus-stores/monocard/functions/ssr/src/components/DocDescription.vue +0 -28
- package/ecomplus-stores/monocard/functions/ssr/src/components/FeatureTabs.vue +0 -286
- package/ecomplus-stores/monocard/functions/ssr/src/components/FeaturesSection.astro +0 -28
- package/ecomplus-stores/monocard/functions/ssr/src/components/FooterStamps.vue +0 -63
- package/ecomplus-stores/monocard/functions/ssr/src/components/ImagesGallery.vue +0 -154
- package/ecomplus-stores/monocard/functions/ssr/src/components/LoginForm.vue +0 -107
- package/ecomplus-stores/monocard/functions/ssr/src/components/LottiePhoneNFC.vue +0 -20
- package/ecomplus-stores/monocard/functions/ssr/src/components/MonocardCustomizer.vue +0 -261
- package/ecomplus-stores/monocard/functions/ssr/src/components/PitchBar.vue +0 -61
- package/ecomplus-stores/monocard/functions/ssr/src/components/Prices.vue +0 -95
- package/ecomplus-stores/monocard/functions/ssr/src/components/ProductCard.vue +0 -117
- package/ecomplus-stores/monocard/functions/ssr/src/components/ProductDetails.vue +0 -122
- package/ecomplus-stores/monocard/functions/ssr/src/components/ProductShelf.vue +0 -57
- package/ecomplus-stores/monocard/functions/ssr/src/components/ProductSpecifications.vue +0 -42
- package/ecomplus-stores/monocard/functions/ssr/src/components/SearchModal.vue +0 -6
- package/ecomplus-stores/monocard/functions/ssr/src/components/ShopFooter.vue +0 -71
- package/ecomplus-stores/monocard/functions/ssr/src/components/ShopHeader.vue +0 -137
- package/ecomplus-stores/monocard/functions/ssr/src/components/ShopHeaderMenu.vue +0 -92
- package/ecomplus-stores/monocard/functions/ssr/src/components/ShopSidenav.vue +0 -64
- package/ecomplus-stores/monocard/functions/ssr/src/components/ShopSidenavCategory.vue +0 -77
- package/ecomplus-stores/monocard/functions/ssr/src/components/SkuSelector.vue +0 -58
- package/ecomplus-stores/monocard/functions/ssr/src/env.d.ts +0 -13
- package/ecomplus-stores/monocard/functions/ssr/src/layouts/Base.astro +0 -15
- package/ecomplus-stores/monocard/functions/ssr/src/layouts/PageFooter.astro +0 -53
- package/ecomplus-stores/monocard/functions/ssr/src/layouts/PageHeader.astro +0 -35
- package/ecomplus-stores/monocard/functions/ssr/src/main/Fallback.astro +0 -10
- package/ecomplus-stores/monocard/functions/ssr/src/main/Home.astro +0 -95
- package/ecomplus-stores/monocard/functions/ssr/src/main/Sections.astro +0 -52
- package/ecomplus-stores/monocard/functions/ssr/src/main/Wildcard.astro +0 -18
- package/ecomplus-stores/monocard/functions/ssr/src/pages/[...slug].astro +0 -42
- package/ecomplus-stores/monocard/functions/ssr/src/pages/_vue.ts +0 -10
- package/ecomplus-stores/monocard/functions/ssr/src/pages/app/account.astro +0 -34
- package/ecomplus-stores/monocard/functions/ssr/src/pages/app/index.astro +0 -62
- package/ecomplus-stores/monocard/functions/ssr/src/pages/comprar/index.astro +0 -52
- package/ecomplus-stores/monocard/functions/ssr/src/pages/index.astro +0 -32
- package/ecomplus-stores/monocard/functions/ssr/src/pages/~fallback.astro +0 -23
- package/ecomplus-stores/monocard/functions/ssr/src/scripts/InlineScripts.astro +0 -10
- package/ecomplus-stores/monocard/functions/ssr/tailwind.config.cjs +0 -18
- package/ecomplus-stores/monocard/functions/ssr/tsconfig.json +0 -12
- package/ecomplus-stores/monocard/functions/ssr/uno.config.cjs +0 -5
- package/ecomplus-stores/monocard/functions/with-apps/index.js +0 -12
- package/ecomplus-stores/monocard/functions/with-apps/package.json +0 -22
- package/ecomplus-stores/monocard/package.json +0 -31
- package/ecomplus-stores/monocard/scripts/install.sh +0 -24
- package/packages/storefront/dist/client/_astro/HeroSlider.bd684ed8.js +0 -1
- package/packages/storefront/dist/client/_astro/ProductDetails.06da998d.js +0 -1
- package/packages/storefront/dist/client/_astro/ProductShelf.3f4f38b5.js +0 -1
- package/packages/storefront/dist/client/_astro/ProductShelf.bf82838b.js +0 -1
- package/packages/storefront/dist/client/_astro/SearchModal.b6aa5ef7.js +0 -1
- package/packages/storefront/dist/client/_astro/ShopHeader.2d6e361a.js +0 -4
- package/packages/storefront/dist/client/_astro/_plugin-vue_export-helper.f75743ee.js +0 -1
- package/packages/storefront/dist/client/_astro/_slug_.e7cac999.css +0 -1
- package/packages/storefront/dist/client/_astro/client.41b42098.js +0 -1
- package/packages/storefront/dist/client/_astro/customer-session.5ab9ab1a.js +0 -1
- package/packages/storefront/dist/client/_astro/ecom-utils.5cbfb95e.js +0 -1
- package/packages/storefront/dist/client/_astro/index.8ac1db99.js +0 -1
- package/packages/storefront/dist/client/_astro/name.01410784.js +0 -1
- package/packages/storefront/dist/client/_astro/sf-utils.b04e1813.js +0 -1
- package/packages/storefront/dist/client/_astro/use-analytics.cc95e346.js +0 -1
- package/packages/storefront/dist/server/chunks/SearchModal_f66549d4.mjs +0 -147
- package/packages/storefront/dist/server/manifest_221d806b.mjs +0 -1069
- /package/packages/storefront/dist/client/_astro/{afetch.f4507208.js → afetch.5c8VmT0-.js} +0 -0
- /package/packages/storefront/dist/client/_astro/{img-sizes.41e0efe4.js → img-sizes.gxAI9JNh.js} +0 -0
- /package/packages/storefront/dist/client/_astro/{price.04ceb6c4.js → price.Easct8WC.js} +0 -0
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<section class="ui-section">
|
|
3
|
-
<div v-if="title" class="mx-auto mb-2 max-w-prose text-center">
|
|
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 [&>ul]:justify-center">
|
|
11
|
-
<li
|
|
12
|
-
v-for="product in products"
|
|
13
|
-
:key="product._id"
|
|
14
|
-
class="shrink-0 basis-1/2 lg:basis-1/3"
|
|
15
|
-
>
|
|
16
|
-
<ProductCard :product="product" />
|
|
17
|
-
</li>
|
|
18
|
-
<template #controls>
|
|
19
|
-
<div
|
|
20
|
-
v-show="products.length > 2"
|
|
21
|
-
class="text-primary text-3xl leading-none transition-opacity
|
|
22
|
-
group-hover/shelf:opacity-90 lg:text-2xl lg:opacity-0"
|
|
23
|
-
>
|
|
24
|
-
<CarouselControl class="lg:hover:bg-primary-300/60 !-left-4 !top-1/2 h-12
|
|
25
|
-
w-12 rounded-full bg-transparent ring-black/5
|
|
26
|
-
lg:bg-white/80 lg:shadow-sm lg:ring-1" is-prev />
|
|
27
|
-
<CarouselControl class="lg:hover:bg-primary-300/60 !-right-4 !top-1/2 h-12
|
|
28
|
-
w-12 rounded-full bg-transparent ring-black/5
|
|
29
|
-
lg:bg-white/80 lg:shadow-sm lg:ring-1" />
|
|
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>
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<section v-if="hasSpecs" class="ui-section">
|
|
3
|
-
<Collapse :title="title || $t.i19specifications">
|
|
4
|
-
<ul>
|
|
5
|
-
<li
|
|
6
|
-
v-for="(grid, gridId) in specifications"
|
|
7
|
-
:key="gridId"
|
|
8
|
-
class="border-base-200 grid grid-cols-2
|
|
9
|
-
border-dashed py-2 sm:grid-cols-3 [&:not(:last-child)]:border-b"
|
|
10
|
-
>
|
|
11
|
-
<span class="text-base-700">
|
|
12
|
-
{{ getGridTitle(`${gridId}`, grids) }}
|
|
13
|
-
</span>
|
|
14
|
-
<strong class="font-semibold sm:col-span-2">
|
|
15
|
-
{{ getSpecTextValue(product, `${gridId}`, grids) }}
|
|
16
|
-
</strong>
|
|
17
|
-
</li>
|
|
18
|
-
</ul>
|
|
19
|
-
</Collapse>
|
|
20
|
-
</section>
|
|
21
|
-
</template>
|
|
22
|
-
|
|
23
|
-
<script setup lang="ts">
|
|
24
|
-
import type { Products } from '@cloudcommerce/api/types';
|
|
25
|
-
import {
|
|
26
|
-
gridTitle as getGridTitle,
|
|
27
|
-
specTextValue as getSpecTextValue,
|
|
28
|
-
} from '@ecomplus/utils';
|
|
29
|
-
import Collapse from '~/components/Collapse.vue';
|
|
30
|
-
|
|
31
|
-
export interface Props {
|
|
32
|
-
product?: Products;
|
|
33
|
-
title?: string;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const props = withDefaults(defineProps<Props>(), {
|
|
37
|
-
product: () => globalThis.$storefront.apiContext?.doc as Products,
|
|
38
|
-
});
|
|
39
|
-
const specifications = computed(() => props.product.specifications || {});
|
|
40
|
-
const hasSpecs = computed(() => Object.keys(specifications.value).length);
|
|
41
|
-
const { grids } = globalThis.$storefront.data;
|
|
42
|
-
</script>
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<footer class="text-base-300 border-base-100 w-screen border-t bg-black py-2">
|
|
3
|
-
<div class="ui-section">
|
|
4
|
-
<div class="border-base-200 flex flex-wrap
|
|
5
|
-
justify-between gap-y-5 border-b pb-7 sm:gap-x-10 lg:flex-nowrap">
|
|
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="text-base-400 flex gap-2">
|
|
12
|
-
<span v-for="(href, network) in socialNetworks" :key="network">
|
|
13
|
-
<SocialNetworkLink :network="network" class="hover:text-primary p-1">
|
|
14
|
-
<template v-if="network === 'whatsapp'" #append>
|
|
15
|
-
<span class="text-base-300 ml-1 text-sm">
|
|
16
|
-
{{ $settings.whatsapp }}
|
|
17
|
-
</span>
|
|
18
|
-
</template>
|
|
19
|
-
</SocialNetworkLink>
|
|
20
|
-
</span>
|
|
21
|
-
</div>
|
|
22
|
-
<div v-if="$settings.phone" class="text-base-200 mt-3">
|
|
23
|
-
<ALink
|
|
24
|
-
v-if="$settings.phone"
|
|
25
|
-
:href="`tel:${$settings.phone.replace(/\D/g, '')}`"
|
|
26
|
-
class="hover:text-primary"
|
|
27
|
-
>
|
|
28
|
-
<i class="i-phone mr-0.5"></i>
|
|
29
|
-
{{ $settings.phone }}
|
|
30
|
-
</ALink>
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
<div v-if="pageLinks?.length" class="basis-1/2 sm:basis-auto">
|
|
34
|
-
<div class="mb-2.5 text-lg font-medium">
|
|
35
|
-
{{ pagesColTitle || $t.i19institutional }}
|
|
36
|
-
</div>
|
|
37
|
-
<ul
|
|
38
|
-
class="text-sm"
|
|
39
|
-
:class="pageLinks.length > 5
|
|
40
|
-
? 'grid md:grid-cols-2 gap-x-5 gap-y-1.5' : 'space-y-1.5'"
|
|
41
|
-
>
|
|
42
|
-
<li v-for="({ title, href }, i) in pageLinks" :key="`p-${i}`">
|
|
43
|
-
<ALink :href="href" class="ui-link text-base-50">
|
|
44
|
-
{{ title }}
|
|
45
|
-
</ALink>
|
|
46
|
-
</li>
|
|
47
|
-
</ul>
|
|
48
|
-
</div>
|
|
49
|
-
</div>
|
|
50
|
-
</div>
|
|
51
|
-
<FooterStamps :stamps="stamps" />
|
|
52
|
-
</footer>
|
|
53
|
-
</template>
|
|
54
|
-
|
|
55
|
-
<script setup lang="ts">
|
|
56
|
-
import type { LayoutContent } from '@@sf/content';
|
|
57
|
-
import { socialNetworks } from '@@sf/sf-lib';
|
|
58
|
-
import SocialNetworkLink from '@@sf/components/SocialNetworkLink.vue';
|
|
59
|
-
import FooterStamps from '~/components/FooterStamps.vue';
|
|
60
|
-
|
|
61
|
-
export interface Props {
|
|
62
|
-
stamps?: LayoutContent['footer']['stamps'];
|
|
63
|
-
pageLinks?: Array<{
|
|
64
|
-
title: string;
|
|
65
|
-
href: string;
|
|
66
|
-
}>;
|
|
67
|
-
pagesColTitle?: string;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
defineProps<Props>();
|
|
71
|
-
</script>
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<header
|
|
3
|
-
ref="header"
|
|
4
|
-
class="relative top-0 z-50 transition-colors"
|
|
5
|
-
:class="[
|
|
6
|
-
isSticky && !isSidenavOpen ? 'bg-black/80' : 'bg-black',
|
|
7
|
-
isSticky ? 'py-2 shadow backdrop-blur-md md:py-3' : 'py-3 sm:py-4 md:py-5',
|
|
8
|
-
]"
|
|
9
|
-
>
|
|
10
|
-
<div class="container mx-auto flex grid-flow-col
|
|
11
|
-
grid-cols-3 items-center justify-between
|
|
12
|
-
px-1 md:grid lg:max-w-4xl lg:auto-cols-max lg:grid-cols-none lg:pl-3
|
|
13
|
-
xl:max-w-6xl 2xl:max-w-7xl">
|
|
14
|
-
<div class="basis-1/4 lg:hidden">
|
|
15
|
-
<button
|
|
16
|
-
class="my-1 px-2"
|
|
17
|
-
:aria-label="$t.i19toggleMenu"
|
|
18
|
-
@click="isSidenavOpen = !isSidenavOpen"
|
|
19
|
-
>
|
|
20
|
-
<i
|
|
21
|
-
class="text-3xl transition-colors"
|
|
22
|
-
:class="[
|
|
23
|
-
isSidenavOpen ? 'i-close' : 'i-menu-3-line',
|
|
24
|
-
isMounted ? 'text-base-100' : 'text-base-300 animate-pulse',
|
|
25
|
-
]"
|
|
26
|
-
></i>
|
|
27
|
-
</button>
|
|
28
|
-
</div>
|
|
29
|
-
<slot name="logo" />
|
|
30
|
-
<ShopHeaderMenu
|
|
31
|
-
class="hidden lg:block"
|
|
32
|
-
v-bind="{ isSticky, ...headerNavLinks }"
|
|
33
|
-
/>
|
|
34
|
-
<div class="flex basis-1/4 items-center justify-end gap-3 px-2 lg:gap-4">
|
|
35
|
-
<AccountMenu class="hidden sm:block">
|
|
36
|
-
<template #button="{ open }">
|
|
37
|
-
<i
|
|
38
|
-
class="i-account-pin-circle-line hover:text-primary h-7
|
|
39
|
-
w-7 hover:scale-110 active:scale-125"
|
|
40
|
-
:class="open ? 'text-white scale-110' : 'text-base-200'"
|
|
41
|
-
></i>
|
|
42
|
-
</template>
|
|
43
|
-
</AccountMenu>
|
|
44
|
-
<a
|
|
45
|
-
:href="$settings.cartUrl || '/app/'"
|
|
46
|
-
:aria-label="$t.i19openCart"
|
|
47
|
-
@click.prevent="isCartOpen = !isCartOpen"
|
|
48
|
-
class="group relative"
|
|
49
|
-
role="button"
|
|
50
|
-
>
|
|
51
|
-
<i class="i-shopping-bag-3-line text-base-200 hover:text-primary
|
|
52
|
-
h-7 w-7 hover:scale-110 active:scale-125"></i>
|
|
53
|
-
<span
|
|
54
|
-
v-if="delayedTotalItems"
|
|
55
|
-
class="ui-badge-pill-sm absolute -right-1.5 -top-1"
|
|
56
|
-
>
|
|
57
|
-
{{ delayedTotalItems }}
|
|
58
|
-
</span>
|
|
59
|
-
</a>
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
<Drawer
|
|
63
|
-
v-model="isSidenavOpen"
|
|
64
|
-
:has-close-button="false"
|
|
65
|
-
position="absolute"
|
|
66
|
-
:class="isSticky ? 'mt-2 md:mt-3' : 'mt-3 sm:mt-4 md:mt-5'"
|
|
67
|
-
:style="{
|
|
68
|
-
height: `calc(100vh - ${positionY}px + .5rem)`,
|
|
69
|
-
maxHeight: `calc(100dvh - ${positionY}px + .5rem)`,
|
|
70
|
-
}"
|
|
71
|
-
>
|
|
72
|
-
<ShopSidenav class="bg-white pt-6" />
|
|
73
|
-
</Drawer>
|
|
74
|
-
<Teleport v-if="isMounted" to="#teleported-overlap">
|
|
75
|
-
<Drawer
|
|
76
|
-
v-model="isCartOpen"
|
|
77
|
-
placement="end"
|
|
78
|
-
backdrop-target="#teleported-overlap"
|
|
79
|
-
>
|
|
80
|
-
<Suspense>
|
|
81
|
-
<CartSidebar v-if="isCartOpenOnce" @close="isCartOpen = false" />
|
|
82
|
-
<template #fallback>
|
|
83
|
-
<Skeleton class="px-6 pt-16" is-bold />
|
|
84
|
-
</template>
|
|
85
|
-
</Suspense>
|
|
86
|
-
</Drawer>
|
|
87
|
-
</Teleport>
|
|
88
|
-
</header>
|
|
89
|
-
</template>
|
|
90
|
-
|
|
91
|
-
<script setup lang="ts">
|
|
92
|
-
import { watchOnce } from '@vueuse/core';
|
|
93
|
-
import { totalItems } from '@@sf/state/shopping-cart';
|
|
94
|
-
import {
|
|
95
|
-
type Props as UseShopHeaderProps,
|
|
96
|
-
useShopHeader,
|
|
97
|
-
} from '@@sf/composables/use-shop-header';
|
|
98
|
-
import Drawer from '@@sf/components/Drawer.vue';
|
|
99
|
-
import ShopSidenav from '~/components/ShopSidenav.vue';
|
|
100
|
-
import ShopHeaderMenu from '~/components/ShopHeaderMenu.vue';
|
|
101
|
-
import AccountMenu from '~/components/AccountMenu.vue';
|
|
102
|
-
|
|
103
|
-
export interface Props extends Omit<UseShopHeaderProps, 'header'> {}
|
|
104
|
-
|
|
105
|
-
const CartSidebar = defineAsyncComponent(() => import('~/components/CartSidebar.vue'));
|
|
106
|
-
const props = defineProps<Props>();
|
|
107
|
-
const header = ref<HTMLElement | null>(null);
|
|
108
|
-
const { isSticky, positionY } = useShopHeader({ ...props, header });
|
|
109
|
-
const isSidenavOpen = ref(false);
|
|
110
|
-
const isCartOpen = ref(false);
|
|
111
|
-
const isCartOpenOnce = ref(false);
|
|
112
|
-
watchOnce(isCartOpen, () => {
|
|
113
|
-
isCartOpenOnce.value = true;
|
|
114
|
-
});
|
|
115
|
-
const isMounted = ref(false);
|
|
116
|
-
const delayedTotalItems = ref(0);
|
|
117
|
-
onMounted(() => {
|
|
118
|
-
isMounted.value = true;
|
|
119
|
-
watch(totalItems, (newTotalItems, prevTotalItems) => {
|
|
120
|
-
if (typeof prevTotalItems === 'number') {
|
|
121
|
-
if (prevTotalItems < newTotalItems) {
|
|
122
|
-
isCartOpen.value = true;
|
|
123
|
-
} else if (prevTotalItems && !newTotalItems) {
|
|
124
|
-
isCartOpen.value = false;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
delayedTotalItems.value = newTotalItems;
|
|
128
|
-
}, { immediate: true });
|
|
129
|
-
});
|
|
130
|
-
const headerNavLinks = {
|
|
131
|
-
supportUrl: '',
|
|
132
|
-
businessLpUrl: '',
|
|
133
|
-
monocardSlug: '',
|
|
134
|
-
monodotSlug: '',
|
|
135
|
-
...globalThis.$storefront.settings.metafields,
|
|
136
|
-
};
|
|
137
|
-
</script>
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<nav class="font-brand text-base-100 text-lg lowercase">
|
|
3
|
-
<ul class="flex items-center gap-6 xl:gap-7">
|
|
4
|
-
<li>
|
|
5
|
-
<ALink
|
|
6
|
-
:href="supportUrl"
|
|
7
|
-
class="decoration-2 underline-offset-4 hover:text-white hover:underline"
|
|
8
|
-
>
|
|
9
|
-
{{ $t.i19help }}
|
|
10
|
-
</ALink>
|
|
11
|
-
</li>
|
|
12
|
-
<li>
|
|
13
|
-
<a
|
|
14
|
-
:href="businessLpUrl"
|
|
15
|
-
class="hover:text-primary decoration-primary text-white
|
|
16
|
-
underline decoration-2 underline-offset-4"
|
|
17
|
-
>
|
|
18
|
-
<i class="i-stack-line mr-1.5 opacity-50"></i>
|
|
19
|
-
<h4 class="inline">Para empresas e times</h4>
|
|
20
|
-
</a>
|
|
21
|
-
</li>
|
|
22
|
-
<li>
|
|
23
|
-
<Menu as="div" v-slot="{ open }" class="relative z-50">
|
|
24
|
-
<MenuButton
|
|
25
|
-
class="group rounded-full py-1 pl-4 pr-3 lowercase"
|
|
26
|
-
:class="isSticky
|
|
27
|
-
? 'bg-primary/20 text-primary hover:primary'
|
|
28
|
-
: 'primary hover:bg-primary-50'"
|
|
29
|
-
>
|
|
30
|
-
<span>{{ $t.i19buy }}</span>
|
|
31
|
-
<i
|
|
32
|
-
class="i-arrow-down-s-line ml-1 transition-transform"
|
|
33
|
-
:class="open ? 'rotate-180' : 'opacity-50'"
|
|
34
|
-
></i>
|
|
35
|
-
</MenuButton>
|
|
36
|
-
<Fade>
|
|
37
|
-
<MenuItems
|
|
38
|
-
as="ul"
|
|
39
|
-
class="absolute -left-7 mt-3 w-48 overflow-hidden rounded-b-md
|
|
40
|
-
bg-black/80 text-white shadow backdrop-blur-md"
|
|
41
|
-
>
|
|
42
|
-
<MenuItem as="li">
|
|
43
|
-
<a
|
|
44
|
-
:href="`/${monocardSlug}`"
|
|
45
|
-
class="flex gap-3 px-5 py-2.5 hover:bg-black"
|
|
46
|
-
>
|
|
47
|
-
<h4 class="basis-4/6 text-right">
|
|
48
|
-
<span class="opacity-70">Mono</span>card
|
|
49
|
-
</h4>
|
|
50
|
-
<span class="basis-2/6 opacity-80">
|
|
51
|
-
<i class="i-qr-code-line"></i>
|
|
52
|
-
<i class="i-signal-tower-fill ml-1.5"></i>
|
|
53
|
-
</span>
|
|
54
|
-
</a>
|
|
55
|
-
<a
|
|
56
|
-
:href="`${monodotSlug}`"
|
|
57
|
-
class="flex gap-3 px-5 py-2.5 hover:bg-black"
|
|
58
|
-
>
|
|
59
|
-
<h4 class="basis-4/6 text-right">
|
|
60
|
-
<span class="opacity-70">Mono</span>dot
|
|
61
|
-
</h4>
|
|
62
|
-
<span class="basis-2/6 opacity-80">
|
|
63
|
-
<i class="i-qr-code-line"></i>
|
|
64
|
-
</span>
|
|
65
|
-
</a>
|
|
66
|
-
</MenuItem>
|
|
67
|
-
</MenuItems>
|
|
68
|
-
</Fade>
|
|
69
|
-
</Menu>
|
|
70
|
-
</li>
|
|
71
|
-
</ul>
|
|
72
|
-
</nav>
|
|
73
|
-
</template>
|
|
74
|
-
|
|
75
|
-
<script setup lang="ts">
|
|
76
|
-
import {
|
|
77
|
-
Menu,
|
|
78
|
-
MenuButton,
|
|
79
|
-
MenuItems,
|
|
80
|
-
MenuItem,
|
|
81
|
-
} from '@headlessui/vue';
|
|
82
|
-
|
|
83
|
-
export interface Props {
|
|
84
|
-
isSticky?: boolean;
|
|
85
|
-
monocardSlug: string;
|
|
86
|
-
monodotSlug: string;
|
|
87
|
-
supportUrl: string;
|
|
88
|
-
businessLpUrl: string;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
defineProps<Props>();
|
|
92
|
-
</script>
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<aside class="flex h-full flex-col">
|
|
3
|
-
<nav class="grow py-4">
|
|
4
|
-
<ul class="relative h-full">
|
|
5
|
-
<ShopSidenavCategory
|
|
6
|
-
v-for="categoryTree in categoryTrees"
|
|
7
|
-
:key="categoryTree._id"
|
|
8
|
-
:category-tree="categoryTree"
|
|
9
|
-
/>
|
|
10
|
-
</ul>
|
|
11
|
-
</nav>
|
|
12
|
-
<footer class="text-base">
|
|
13
|
-
<div class="bg-base-100 flex items-center px-2 py-4">
|
|
14
|
-
<AccountLink class="flex grow items-center gap-3 p-2">
|
|
15
|
-
<i class="i-account-pin-circle-line text-base-500 m-0 text-4xl"></i>
|
|
16
|
-
<span class="leading-tight">
|
|
17
|
-
{{ `${$t.i19hello} ${customerName || $t.i19visitor}` }}
|
|
18
|
-
<small class="text-primary block font-semibold lowercase">
|
|
19
|
-
{{ $t.i19myOrders }}, {{ $t.i19myAccount }}
|
|
20
|
-
</small>
|
|
21
|
-
</span>
|
|
22
|
-
</AccountLink>
|
|
23
|
-
<button
|
|
24
|
-
v-if="isLogged"
|
|
25
|
-
@click="logout"
|
|
26
|
-
class="text-base-800 p-2 text-right"
|
|
27
|
-
>
|
|
28
|
-
<span class="text-base-600">{{ $t.i19logout }}</span>
|
|
29
|
-
<i class="i-logout-circle-r-line ml-1 text-lg"></i>
|
|
30
|
-
</button>
|
|
31
|
-
</div>
|
|
32
|
-
<ul class="bg-base-200 text-base-700 flex gap-3 p-4 text-xl">
|
|
33
|
-
<li v-for="(href, network) in socialNetworks" :key="network">
|
|
34
|
-
<SocialNetworkLink :network="network" class="active:text-primary p-1" />
|
|
35
|
-
</li>
|
|
36
|
-
</ul>
|
|
37
|
-
</footer>
|
|
38
|
-
</aside>
|
|
39
|
-
</template>
|
|
40
|
-
|
|
41
|
-
<script setup lang="ts">
|
|
42
|
-
import type { CategoryTree } from '@@sf/composables/use-shop-header';
|
|
43
|
-
import {
|
|
44
|
-
customerName,
|
|
45
|
-
initializeFirebaseAuth,
|
|
46
|
-
isLogged,
|
|
47
|
-
logout,
|
|
48
|
-
} from '@@sf/state/customer-session';
|
|
49
|
-
import { socialNetworks } from '@@sf/sf-lib';
|
|
50
|
-
import AccountLink from '@@sf/components/AccountLink.vue';
|
|
51
|
-
import SocialNetworkLink from '@@sf/components/SocialNetworkLink.vue';
|
|
52
|
-
import ShopSidenavCategory from '~/components/ShopSidenavCategory.vue';
|
|
53
|
-
|
|
54
|
-
export interface Props {
|
|
55
|
-
categoryTrees?: CategoryTree[];
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
withDefaults(defineProps<Props>(), {
|
|
59
|
-
categoryTrees() {
|
|
60
|
-
return [];
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
onMounted(() => initializeFirebaseAuth());
|
|
64
|
-
</script>
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<li class="text-base-800 text-lg">
|
|
3
|
-
<details
|
|
4
|
-
v-if="categoryTree.subcategories.length"
|
|
5
|
-
class="z-10 overflow-y-auto overflow-x-hidden bg-white
|
|
6
|
-
open:absolute open:left-0 open:top-0 open:h-full open:w-full"
|
|
7
|
-
@toggle="isOpen = !isOpen"
|
|
8
|
-
>
|
|
9
|
-
<summary
|
|
10
|
-
class="active:bg-base-100 cursor-pointer list-none px-6 py-3 transition-colors"
|
|
11
|
-
:class="isOpen ? 'bg-base-100' : null"
|
|
12
|
-
>
|
|
13
|
-
<i :class="!isOpen
|
|
14
|
-
? 'i-arrow-right-line float-right mb-0 mt-1 text-xl text-base-500'
|
|
15
|
-
: 'i-arrow-right-line text-lg rotate-180'"></i>
|
|
16
|
-
<AImg
|
|
17
|
-
v-if="!isOpen && categoryTree.icon"
|
|
18
|
-
:picture="categoryTree.icon"
|
|
19
|
-
class="mr-3 inline h-5 w-auto"
|
|
20
|
-
/>
|
|
21
|
-
<h3 class="inline" :class="isOpen ? 'ml-4 text-base' : null">
|
|
22
|
-
{{ categoryTree.name }}
|
|
23
|
-
</h3>
|
|
24
|
-
</summary>
|
|
25
|
-
<ul
|
|
26
|
-
class="mt-2 transition-opacity"
|
|
27
|
-
:class="isFaded ? 'opacity-20' : 'opacity-100'"
|
|
28
|
-
tabindex="-1"
|
|
29
|
-
>
|
|
30
|
-
<ShopSidenavCategory
|
|
31
|
-
v-for="subcategoryTree in categoryTree.subcategories"
|
|
32
|
-
:key="subcategoryTree._id"
|
|
33
|
-
:category-tree="subcategoryTree"
|
|
34
|
-
/>
|
|
35
|
-
<li>
|
|
36
|
-
<a
|
|
37
|
-
:href="`/${categoryTree.slug}`"
|
|
38
|
-
class="active:bg-base-200 block px-6 py-3 text-base underline"
|
|
39
|
-
>
|
|
40
|
-
{{ $t.i19seeAll$1Category.replace('$1', categoryTree.name) }}
|
|
41
|
-
</a>
|
|
42
|
-
</li>
|
|
43
|
-
</ul>
|
|
44
|
-
</details>
|
|
45
|
-
<a
|
|
46
|
-
v-else
|
|
47
|
-
:href="`/${categoryTree.slug}`"
|
|
48
|
-
class="active:bg-base-200 block px-6 py-3"
|
|
49
|
-
>
|
|
50
|
-
<AImg
|
|
51
|
-
v-if="!isOpen && categoryTree.icon"
|
|
52
|
-
:picture="categoryTree.icon"
|
|
53
|
-
class="mr-3 inline h-5 w-auto"
|
|
54
|
-
/>
|
|
55
|
-
<h3 class="inline">{{ categoryTree.name }}</h3>
|
|
56
|
-
</a>
|
|
57
|
-
</li>
|
|
58
|
-
</template>
|
|
59
|
-
|
|
60
|
-
<script setup lang="ts">
|
|
61
|
-
import type { CategoryTree, SubcategoryTree } from '@@sf/composables/use-shop-header';
|
|
62
|
-
|
|
63
|
-
export interface Props {
|
|
64
|
-
categoryTree: CategoryTree | SubcategoryTree;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
defineProps<Props>();
|
|
68
|
-
const isOpen = ref(false);
|
|
69
|
-
const isFaded = ref(true);
|
|
70
|
-
watch(isOpen, (_isOpen) => {
|
|
71
|
-
if (_isOpen) {
|
|
72
|
-
setTimeout(() => { isFaded.value = false; }, 25);
|
|
73
|
-
} else {
|
|
74
|
-
isFaded.value = true;
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
</script>
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<div v-for="(options, gridId) in variationsGrids" :key="gridId">
|
|
4
|
-
<span class="text-base-700 text-sm font-medium">
|
|
5
|
-
{{ getGridTitle(gridId) }}:
|
|
6
|
-
<strong v-if="selectedOptions[gridId]" class="text-base-800">
|
|
7
|
-
{{ selectedOptions[gridId] }}
|
|
8
|
-
</strong>
|
|
9
|
-
</span>
|
|
10
|
-
<ul v-if="options.length < 7" class="mt-2 flex gap-2">
|
|
11
|
-
<li v-for="(optionText, i) in options" :key="`${gridId}-${i}`">
|
|
12
|
-
<button
|
|
13
|
-
class="ring-secondary/60 rounded border"
|
|
14
|
-
:class="[
|
|
15
|
-
selectedOptions[gridId] === optionText
|
|
16
|
-
? 'border-secondary ring-2'
|
|
17
|
-
: null,
|
|
18
|
-
gridId === 'colors'
|
|
19
|
-
? 'h-9 w-9 text-[0]'
|
|
20
|
-
: 'px-2 py-1',
|
|
21
|
-
activeVariationsGrids[gridId].includes(optionText)
|
|
22
|
-
? 'text-base-800 bg-base-100 border-base-400'
|
|
23
|
-
: 'text-base-500 bg-base-200 border-base-300'
|
|
24
|
-
]"
|
|
25
|
-
:style="gridId === 'colors' ? getColorOptionBg(optionText) : undefined"
|
|
26
|
-
@click="selectOption({ optionText, gridId, gridIndex: i })"
|
|
27
|
-
>
|
|
28
|
-
{{ optionText }}
|
|
29
|
-
</button>
|
|
30
|
-
</li>
|
|
31
|
-
</ul>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
</template>
|
|
35
|
-
|
|
36
|
-
<script setup lang="ts">
|
|
37
|
-
import {
|
|
38
|
-
type Props as UseSkuSelector,
|
|
39
|
-
useSkuSelector,
|
|
40
|
-
} from '@@sf/composables/use-sku-selector';
|
|
41
|
-
|
|
42
|
-
export interface Props extends UseSkuSelector {}
|
|
43
|
-
|
|
44
|
-
const props = defineProps<Props>();
|
|
45
|
-
const emit = defineEmits(['update:variationId']);
|
|
46
|
-
const {
|
|
47
|
-
variationsGrids,
|
|
48
|
-
activeVariationsGrids,
|
|
49
|
-
selectOption,
|
|
50
|
-
selectedOptions,
|
|
51
|
-
variationId,
|
|
52
|
-
getGridTitle,
|
|
53
|
-
getColorOptionBg,
|
|
54
|
-
} = useSkuSelector(props);
|
|
55
|
-
watch(variationId, (_id) => {
|
|
56
|
-
emit('update:variationId', _id);
|
|
57
|
-
});
|
|
58
|
-
</script>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/// <reference types="@astrojs/image/client" />
|
|
2
|
-
/// <reference types="vite-plugin-pwa/client" />
|
|
3
|
-
/// <reference types="vue/ref-macros" />
|
|
4
|
-
/// <reference types="@cloudcommerce/storefront/client" />
|
|
5
|
-
/// <reference types="@cloudcommerce/storefront/server" />
|
|
6
|
-
|
|
7
|
-
/* eslint-disable import/newline-after-import */
|
|
8
|
-
|
|
9
|
-
declare module '*.vue' {
|
|
10
|
-
import { type DefineComponent } from 'vue';
|
|
11
|
-
const component: DefineComponent<{}, {}, any>;
|
|
12
|
-
export default component;
|
|
13
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
import SfBase from '@@sf/layouts/Base.astro';
|
|
3
|
-
import InlineScripts from '~/scripts/InlineScripts.astro';
|
|
4
|
-
import '~/assets/style.css';
|
|
5
|
-
import 'uno.css';
|
|
6
|
-
import '@fontsource-variable/inter/index.css';
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
<SfBase>
|
|
10
|
-
<Fragment slot="base-head">
|
|
11
|
-
<slot name="base-head" />
|
|
12
|
-
</Fragment>
|
|
13
|
-
<InlineScripts slot="before-head-end" />
|
|
14
|
-
<slot />
|
|
15
|
-
</SfBase>
|