cloudcommerce 0.26.7 → 0.28.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 +3 -1
- package/CHANGELOG.md +51 -0
- package/action.yml +2 -2
- package/ecomplus-stores/barra-doce/functions/many/package.json +3 -3
- package/ecomplus-stores/barra-doce/functions/ssr/content/layout.json +13 -13
- package/ecomplus-stores/barra-doce/functions/ssr/content/pages/home.json +10 -10
- package/ecomplus-stores/barra-doce/functions/ssr/content/pages/products.json +17 -0
- package/ecomplus-stores/barra-doce/functions/ssr/content/settings.json +8 -8
- package/ecomplus-stores/barra-doce/functions/ssr/package.json +6 -6
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/AccountMenu.vue +11 -11
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopFooter.vue +24 -24
- package/ecomplus-stores/barra-doce/functions/ssr/src/layouts/PageFooter.astro +4 -4
- package/ecomplus-stores/barra-doce/functions/with-apps/package.json +3 -3
- package/ecomplus-stores/barra-doce/package.json +2 -2
- package/ecomplus-stores/monocard/functions/many/package.json +3 -3
- package/ecomplus-stores/monocard/functions/ssr/content/layout.json +11 -11
- package/ecomplus-stores/monocard/functions/ssr/content/pages/home.json +16 -16
- package/ecomplus-stores/monocard/functions/ssr/content/pages/products.json +2 -4
- package/ecomplus-stores/monocard/functions/ssr/content/settings.json +11 -11
- package/ecomplus-stores/monocard/functions/ssr/package.json +6 -6
- package/ecomplus-stores/monocard/functions/ssr/src/components/AccountMenu.vue +1 -1
- package/ecomplus-stores/monocard/functions/ssr/src/components/DocDescription.vue +33 -0
- package/ecomplus-stores/monocard/functions/ssr/src/components/FeatureTabs.vue +3 -3
- package/ecomplus-stores/monocard/functions/ssr/src/components/ShopFooter.vue +3 -3
- package/ecomplus-stores/monocard/functions/ssr/src/components/ShopHeader.vue +5 -13
- package/ecomplus-stores/monocard/functions/ssr/src/layouts/PageFooter.astro +2 -2
- package/ecomplus-stores/monocard/functions/ssr/src/main/Home.astro +1 -1
- package/ecomplus-stores/monocard/functions/ssr/src/main/Sections.astro +1 -1
- package/ecomplus-stores/monocard/functions/with-apps/package.json +3 -3
- package/ecomplus-stores/monocard/package.json +2 -2
- package/package.json +6 -6
- package/packages/api/package.json +1 -1
- package/packages/apps/affilate-program/package.json +2 -2
- package/packages/apps/correios/package.json +3 -4
- package/packages/apps/custom-payment/package.json +1 -1
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/datafrete/package.json +3 -3
- package/packages/apps/discounts/package.json +1 -1
- package/packages/apps/emails/lib/functios-lib/utils.js +1 -1
- package/packages/apps/emails/lib/functios-lib/utils.js.map +1 -1
- package/packages/apps/emails/package.json +2 -2
- package/packages/apps/emails/src/functios-lib/utils.ts +1 -1
- package/packages/apps/fb-conversions/package.json +3 -3
- package/packages/apps/flash-courier/package.json +2 -2
- package/packages/apps/frenet/package.json +3 -3
- package/packages/apps/galaxpay/package.json +3 -3
- package/packages/apps/google-analytics/package.json +3 -3
- package/packages/apps/jadlog/package.json +2 -2
- package/packages/apps/loyalty-points/lib/functions-lib/cron-add-points.d.ts +2 -0
- package/packages/apps/loyalty-points/lib/functions-lib/cron-add-points.js +98 -0
- package/packages/apps/loyalty-points/lib/functions-lib/cron-add-points.js.map +1 -0
- package/packages/apps/loyalty-points/lib/functions-lib/handle-loyalty-points-event.js +59 -23
- package/packages/apps/loyalty-points/lib/functions-lib/handle-loyalty-points-event.js.map +1 -1
- package/packages/apps/loyalty-points/lib/loyalty-create-transaction.js +9 -4
- package/packages/apps/loyalty-points/lib/loyalty-create-transaction.js.map +1 -1
- package/packages/apps/loyalty-points/lib/loyalty-list-payments.js +7 -2
- package/packages/apps/loyalty-points/lib/loyalty-list-payments.js.map +1 -1
- package/packages/apps/loyalty-points/lib/loyalty-points-events.d.ts +3 -1
- package/packages/apps/loyalty-points/lib/loyalty-points-events.js +9 -0
- package/packages/apps/loyalty-points/lib/loyalty-points-events.js.map +1 -1
- package/packages/apps/loyalty-points/package.json +3 -2
- package/packages/apps/loyalty-points/src/functions-lib/cron-add-points.ts +104 -0
- package/packages/apps/loyalty-points/src/functions-lib/handle-loyalty-points-event.ts +67 -25
- package/packages/apps/loyalty-points/src/loyalty-create-transaction.ts +11 -4
- package/packages/apps/loyalty-points/src/loyalty-list-payments.ts +9 -2
- package/packages/apps/loyalty-points/src/loyalty-points-events.ts +12 -1
- package/packages/apps/melhor-envio/package.json +3 -3
- package/packages/apps/mercadopago/assets/onload-expression.js +5 -1
- package/packages/apps/mercadopago/assets/onload-expression.min.js +1 -1
- package/packages/apps/mercadopago/lib/mp-create-transaction.js +16 -6
- package/packages/apps/mercadopago/lib/mp-create-transaction.js.map +1 -1
- package/packages/apps/mercadopago/package.json +3 -3
- package/packages/apps/mercadopago/src/mp-create-transaction.ts +19 -7
- package/packages/apps/pagarme/package.json +3 -3
- package/packages/apps/paghiper/package.json +3 -3
- package/packages/apps/pix/package.json +3 -3
- package/packages/apps/tiny-erp/lib/integration/export-order-to-tiny.js +22 -0
- package/packages/apps/tiny-erp/lib/integration/export-order-to-tiny.js.map +1 -1
- package/packages/apps/tiny-erp/lib/integration/helpers/format-tiny-date.js +2 -2
- package/packages/apps/tiny-erp/lib/integration/helpers/format-tiny-date.js.map +1 -1
- package/packages/apps/tiny-erp/lib/integration/import-order-from-tiny.js +7 -1
- package/packages/apps/tiny-erp/lib/integration/import-order-from-tiny.js.map +1 -1
- package/packages/apps/tiny-erp/lib/integration/import-product-from-tiny.js +14 -5
- package/packages/apps/tiny-erp/lib/integration/import-product-from-tiny.js.map +1 -1
- package/packages/apps/tiny-erp/lib/integration/parsers/order-from-tiny.js +9 -1
- package/packages/apps/tiny-erp/lib/integration/parsers/order-from-tiny.js.map +1 -1
- package/packages/apps/tiny-erp/lib/integration/parsers/order-to-tiny.js +8 -6
- package/packages/apps/tiny-erp/lib/integration/parsers/order-to-tiny.js.map +1 -1
- package/packages/apps/tiny-erp/lib/integration/parsers/product-from-tiny.js +118 -38
- package/packages/apps/tiny-erp/lib/integration/parsers/product-from-tiny.js.map +1 -1
- package/packages/apps/tiny-erp/lib/integration/parsers/product-to-tiny.js +8 -0
- package/packages/apps/tiny-erp/lib/integration/parsers/product-to-tiny.js.map +1 -1
- package/packages/apps/tiny-erp/package.json +3 -3
- package/packages/apps/tiny-erp/src/integration/export-order-to-tiny.ts +24 -0
- package/packages/apps/tiny-erp/src/integration/helpers/format-tiny-date.ts +2 -2
- package/packages/apps/tiny-erp/src/integration/import-order-from-tiny.ts +8 -1
- package/packages/apps/tiny-erp/src/integration/import-product-from-tiny.ts +17 -5
- package/packages/apps/tiny-erp/src/integration/parsers/order-from-tiny.ts +13 -1
- package/packages/apps/tiny-erp/src/integration/parsers/order-to-tiny.ts +11 -6
- package/packages/apps/tiny-erp/src/integration/parsers/product-from-tiny.ts +144 -41
- package/packages/apps/tiny-erp/src/integration/parsers/product-to-tiny.ts +10 -0
- package/packages/apps/webhooks/package.json +3 -3
- package/packages/cli/package.json +1 -1
- package/packages/config/lib/config.js +2 -2
- package/packages/config/lib/config.js.map +1 -1
- package/packages/config/package.json +1 -1
- package/packages/config/src/config.ts +2 -2
- package/packages/emails/package.json +4 -4
- package/packages/eslint/base.eslintrc.cjs +3 -0
- package/packages/eslint/package.json +5 -4
- package/packages/eslint/storefront.eslintrc.cjs +8 -1
- package/packages/events/package.json +2 -2
- package/packages/feeds/package.json +1 -1
- package/packages/firebase/package.json +2 -2
- package/packages/i18n/package.json +1 -1
- package/packages/modules/package.json +3 -3
- package/packages/passport/package.json +2 -2
- package/packages/ssr/package.json +3 -3
- package/packages/storefront/.auto-imports.d.ts +65 -0
- package/packages/storefront/astro.config.mjs +24 -1
- package/packages/storefront/client.d.ts +1 -0
- package/packages/storefront/config/astro/context-directive.mjs +21 -0
- package/packages/storefront/config/astro/index.d.ts +8 -0
- package/packages/storefront/config/storefront.cms.js +2 -2
- package/packages/storefront/config/storefront.tailwind.cjs +0 -1
- package/packages/storefront/package.json +4 -3
- package/packages/storefront/server.d.ts +1 -1
- package/packages/storefront/src/lib/$storefront.d.ts +8 -8
- package/packages/storefront/src/lib/assets/base.css +5 -0
- package/packages/storefront/src/lib/components/Carousel.vue +93 -72
- package/packages/storefront/src/lib/components/CarouselControl.vue +13 -7
- package/packages/storefront/src/lib/components/ContentClearfix.vue +17 -0
- package/packages/storefront/src/lib/components/Drawer.vue +2 -2
- package/packages/storefront/src/lib/components/PaymentMethodFlag.vue +2 -2
- package/packages/storefront/src/lib/components/QuantitySelector.vue +4 -4
- package/packages/storefront/src/lib/components/QuantitySelectorControl.vue +2 -2
- package/packages/storefront/src/lib/components/ViewTransitions.astro +409 -0
- package/packages/storefront/src/lib/components/globals/AImg.vue +2 -1
- package/packages/storefront/src/lib/composables/use-pitch-bar.ts +2 -2
- package/packages/storefront/src/lib/content.d.ts +5 -5
- package/packages/storefront/src/lib/layouts/Base.astro +4 -4
- package/packages/storefront/src/lib/layouts/BaseBody.astro +0 -2
- package/packages/storefront/src/lib/layouts/BaseHead.astro +32 -14
- package/packages/storefront/src/lib/layouts/use-page-header.ts +9 -4
- package/packages/storefront/src/lib/layouts/use-page-main.ts +13 -33
- package/packages/test-base/package.json +1 -1
- package/packages/types/index.ts +14 -14
- package/packages/types/package.json +1 -1
- package/ecomplus-stores/iluminim/.devcontainer/devcontainer.json +0 -30
- package/ecomplus-stores/iluminim/.editorconfig +0 -13
- package/ecomplus-stores/iluminim/.eslintrc.cjs +0 -3
- package/ecomplus-stores/iluminim/.firebaserc +0 -5
- package/ecomplus-stores/iluminim/.github/renovate.json +0 -5
- package/ecomplus-stores/iluminim/.github/workflows/build-and-deploy.yml +0 -36
- package/ecomplus-stores/iluminim/.github/workflows/calibreapp-image-actions.yml +0 -23
- package/ecomplus-stores/iluminim/.gitpod.yml +0 -12
- package/ecomplus-stores/iluminim/.idx/dev.nix +0 -24
- package/ecomplus-stores/iluminim/.nvmrc +0 -1
- package/ecomplus-stores/iluminim/.vscode/extensions.json +0 -8
- package/ecomplus-stores/iluminim/.vscode/launch.json +0 -11
- package/ecomplus-stores/iluminim/.vscode/settings.json +0 -10
- package/ecomplus-stores/iluminim/README.md +0 -31
- package/ecomplus-stores/iluminim/SETUP.md +0 -117
- package/ecomplus-stores/iluminim/SETUP.pt-BR.md +0 -117
- package/ecomplus-stores/iluminim/functions/config.json +0 -3
- package/ecomplus-stores/iluminim/functions/example.env +0 -10
- package/ecomplus-stores/iluminim/functions/many/index.js +0 -14
- package/ecomplus-stores/iluminim/functions/many/package.json +0 -22
- package/ecomplus-stores/iluminim/functions/ssr/.eslintrc.cjs +0 -6
- package/ecomplus-stores/iluminim/functions/ssr/astro.config.mjs +0 -4
- package/ecomplus-stores/iluminim/functions/ssr/content/blog/.gitkeep +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/content/extra-pages/contato.json +0 -11
- package/ecomplus-stores/iluminim/functions/ssr/content/extra-pages/terms.json +0 -11
- package/ecomplus-stores/iluminim/functions/ssr/content/extra-pages/trocas.json +0 -11
- package/ecomplus-stores/iluminim/functions/ssr/content/layout.json +0 -57
- package/ecomplus-stores/iluminim/functions/ssr/content/pages/home.json +0 -70
- package/ecomplus-stores/iluminim/functions/ssr/content/settings.json +0 -65
- package/ecomplus-stores/iluminim/functions/ssr/index.js +0 -18
- package/ecomplus-stores/iluminim/functions/ssr/package.json +0 -31
- package/ecomplus-stores/iluminim/functions/ssr/public/admin/.gitkeep +0 -2
- package/ecomplus-stores/iluminim/functions/ssr/public/assets/cms-preview.css +0 -274
- package/ecomplus-stores/iluminim/functions/ssr/public/assets/cms.css +0 -114
- package/ecomplus-stores/iluminim/functions/ssr/public/assets/cvv.png +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/assets/img-placeholder.png +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/assets/payments.png +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/assets/ssl-safe.png +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/icon.png +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/large-icon.png +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/banner-chamada-desktop-9x81zmd91q.webp +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/banner2.webp +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/chamada-mobile-q1c6om6jx4.webp +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/ecom-icon.png +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/headphone.webp +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/logo.webp +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/og-image.png +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/passion.webp +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/rect8589.png +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/rect859.png +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/img/uploads/rect89.webp +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/public/robots.txt +0 -6
- package/ecomplus-stores/iluminim/functions/ssr/scripts/build.sh +0 -14
- package/ecomplus-stores/iluminim/functions/ssr/src/assets/style.css +0 -65
- package/ecomplus-stores/iluminim/functions/ssr/src/components/AccountMenu.vue +0 -95
- package/ecomplus-stores/iluminim/functions/ssr/src/components/Banner.vue +0 -57
- package/ecomplus-stores/iluminim/functions/ssr/src/components/BannersGrid.astro +0 -25
- package/ecomplus-stores/iluminim/functions/ssr/src/components/CartItem.vue +0 -64
- package/ecomplus-stores/iluminim/functions/ssr/src/components/CartSidebar.vue +0 -66
- package/ecomplus-stores/iluminim/functions/ssr/src/components/Countdown.vue +0 -79
- package/ecomplus-stores/iluminim/functions/ssr/src/components/HeroSlider.vue +0 -52
- package/ecomplus-stores/iluminim/functions/ssr/src/components/PitchBar.vue +0 -56
- package/ecomplus-stores/iluminim/functions/ssr/src/components/Prices.vue +0 -95
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ProductCard.vue +0 -117
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ProductShelf.vue +0 -57
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ProductsCountdown.vue +0 -20
- package/ecomplus-stores/iluminim/functions/ssr/src/components/SearchModal.vue +0 -6
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopFooter.vue +0 -149
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopHeader.vue +0 -158
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopHeaderMenu.vue +0 -58
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopHeaderSubmenu.vue +0 -88
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopSidenav.vue +0 -61
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopSidenavCategory.vue +0 -80
- package/ecomplus-stores/iluminim/functions/ssr/src/env.d.ts +0 -13
- package/ecomplus-stores/iluminim/functions/ssr/src/layouts/Base.astro +0 -16
- package/ecomplus-stores/iluminim/functions/ssr/src/layouts/Checkout.astro +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/src/layouts/PageFooter.astro +0 -68
- package/ecomplus-stores/iluminim/functions/ssr/src/layouts/PageHeader.astro +0 -42
- package/ecomplus-stores/iluminim/functions/ssr/src/main/Fallback.astro +0 -10
- package/ecomplus-stores/iluminim/functions/ssr/src/main/Home.astro +0 -49
- package/ecomplus-stores/iluminim/functions/ssr/src/main/Sections.astro +0 -42
- package/ecomplus-stores/iluminim/functions/ssr/src/main/Wildcard.astro +0 -18
- package/ecomplus-stores/iluminim/functions/ssr/src/pages/[...slug].astro +0 -40
- package/ecomplus-stores/iluminim/functions/ssr/src/pages/_vue.ts +0 -3
- package/ecomplus-stores/iluminim/functions/ssr/src/pages/app/account.astro +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/src/pages/app/index.astro +0 -0
- package/ecomplus-stores/iluminim/functions/ssr/src/pages/index.astro +0 -37
- package/ecomplus-stores/iluminim/functions/ssr/src/pages/~fallback.astro +0 -25
- package/ecomplus-stores/iluminim/functions/ssr/src/scripts/InlineScripts.astro +0 -10
- package/ecomplus-stores/iluminim/functions/ssr/tailwind.config.cjs +0 -13
- package/ecomplus-stores/iluminim/functions/ssr/tsconfig.json +0 -12
- package/ecomplus-stores/iluminim/functions/ssr/uno.config.cjs +0 -5
- package/ecomplus-stores/iluminim/functions/with-apps/index.js +0 -12
- package/ecomplus-stores/iluminim/functions/with-apps/package.json +0 -22
- package/ecomplus-stores/iluminim/package.json +0 -31
- package/ecomplus-stores/iluminim/scripts/install.sh +0 -24
- package/ecomplus-stores/monocard/functions/ssr/src/components/DocDescription.astro +0 -30
- package/packages/storefront/src/lib/components/ContentClearfix.astro +0 -15
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<section class="bg-base-100 py-3">
|
|
3
|
-
<div class="relative container mx-auto">
|
|
4
|
-
<Carousel :autoplay="autoplay" class="[&>*]:items-center">
|
|
5
|
-
<li
|
|
6
|
-
v-for="(slide, i) in slides"
|
|
7
|
-
:key="i"
|
|
8
|
-
class="shrink-0 basis-full"
|
|
9
|
-
>
|
|
10
|
-
<Banner
|
|
11
|
-
v-bind="{ ...slide, headingTag: i === 0 ? 'h2' : 'h3' }"
|
|
12
|
-
class="w-full"
|
|
13
|
-
>
|
|
14
|
-
<template #picture>
|
|
15
|
-
<slot :name="`picture-${i}`" />
|
|
16
|
-
</template>
|
|
17
|
-
</Banner>
|
|
18
|
-
</li>
|
|
19
|
-
<template #controls>
|
|
20
|
-
<div
|
|
21
|
-
v-show="slides.length > 1"
|
|
22
|
-
class="absolute z-10 bottom-5 right-5 flex justify-end items-center"
|
|
23
|
-
>
|
|
24
|
-
<div class="relative w-20 h-10 rounded-full
|
|
25
|
-
bg-primary/80 text-on-primary shadow-sm ring-1 ring-black/5">
|
|
26
|
-
<CarouselControl class="w-10 h-10 rounded-full hover:bg-primary" is-prev>
|
|
27
|
-
<i class="i-arrow-left"></i>
|
|
28
|
-
</CarouselControl>
|
|
29
|
-
<CarouselControl class="w-10 h-10 rounded-full hover:bg-primary">
|
|
30
|
-
<i class="i-arrow-right"></i>
|
|
31
|
-
</CarouselControl>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
</template>
|
|
35
|
-
</Carousel>
|
|
36
|
-
</div>
|
|
37
|
-
</section>
|
|
38
|
-
</template>
|
|
39
|
-
|
|
40
|
-
<script setup lang="ts">
|
|
41
|
-
import type { Props as UseBannerProps } from '@@sf/composables/use-banner';
|
|
42
|
-
import Carousel from '@@sf/components/Carousel.vue';
|
|
43
|
-
import CarouselControl from '@@sf/components/CarouselControl.vue';
|
|
44
|
-
import Banner from '~/components/Banner.vue';
|
|
45
|
-
|
|
46
|
-
export type Props = {
|
|
47
|
-
autoplay?: number;
|
|
48
|
-
slides: UseBannerProps[];
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
defineProps<Props>();
|
|
52
|
-
</script>
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="bg-black relative z-20">
|
|
3
|
-
<div class="container md:w-2/3 mx-auto px-3 py-1 md:py-1.5">
|
|
4
|
-
<Carousel :autoplay="countValidSlides > 1 ? 7000 : undefined">
|
|
5
|
-
<li
|
|
6
|
-
v-for="(slide, i) in slides"
|
|
7
|
-
:key="i"
|
|
8
|
-
class="shrink-0 basis-full h-full text-center"
|
|
9
|
-
>
|
|
10
|
-
<ALink
|
|
11
|
-
:href="slide.href"
|
|
12
|
-
:target="slide.target"
|
|
13
|
-
class="inline-block px-8"
|
|
14
|
-
:class="slide.href ? 'hover:underline' : null"
|
|
15
|
-
>
|
|
16
|
-
<span
|
|
17
|
-
v-if="parsedContents[i]"
|
|
18
|
-
v-html="parsedContents[i]"
|
|
19
|
-
class="prose text-sm md:text-base lg:tracking-wide
|
|
20
|
-
text-base-200 uppercase font-semibold
|
|
21
|
-
[&_b]:text-base-100 [&_strong]:font-black
|
|
22
|
-
[&_strong]:text-transparent [&_strong]:bg-clip-text [&_strong]:bg-gradient-to-r
|
|
23
|
-
[&_strong]:from-yellow-200 [&_strong]:to-yellow-400"
|
|
24
|
-
></span>
|
|
25
|
-
</ALink>
|
|
26
|
-
</li>
|
|
27
|
-
<template #controls>
|
|
28
|
-
<div
|
|
29
|
-
v-show="countValidSlides > 1"
|
|
30
|
-
class="text-xl leading-none text-base-300"
|
|
31
|
-
>
|
|
32
|
-
<CarouselControl class="pr-2 bg-black hover:text-white" is-prev />
|
|
33
|
-
<CarouselControl class="pl-2 bg-black hover:text-white" />
|
|
34
|
-
</div>
|
|
35
|
-
</template>
|
|
36
|
-
</Carousel>
|
|
37
|
-
</div>
|
|
38
|
-
</div>
|
|
39
|
-
</template>
|
|
40
|
-
|
|
41
|
-
<script setup lang="ts">
|
|
42
|
-
import {
|
|
43
|
-
type Props as UsePitchBarProps,
|
|
44
|
-
usePitchBar,
|
|
45
|
-
} from '@@sf/composables/use-pitch-bar';
|
|
46
|
-
import Carousel from '@@sf/components/Carousel.vue';
|
|
47
|
-
import CarouselControl from '@@sf/components/CarouselControl.vue';
|
|
48
|
-
|
|
49
|
-
export interface Props extends UsePitchBarProps {}
|
|
50
|
-
|
|
51
|
-
const props = defineProps<Props>();
|
|
52
|
-
const {
|
|
53
|
-
parsedContents,
|
|
54
|
-
countValidSlides,
|
|
55
|
-
} = usePitchBar(props);
|
|
56
|
-
</script>
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div
|
|
3
|
-
class="text-base-600
|
|
4
|
-
[&>div]:[font-size:90%] [&_small]:[font-size:92%] [&_small]:lowercase"
|
|
5
|
-
:class="isBig ? 'text-lg' : null"
|
|
6
|
-
>
|
|
7
|
-
<span v-if="comparePrice" class="text-base-500 mr-1 [font-size:87%]">
|
|
8
|
-
<small v-if="isLiteral">
|
|
9
|
-
{{ `${$t.i19from} ` }}
|
|
10
|
-
</small>
|
|
11
|
-
<s>{{ $money(comparePrice) }}</s>
|
|
12
|
-
<small v-if="isLiteral">
|
|
13
|
-
{{ ` ${$t.i19to}` }}
|
|
14
|
-
</small>
|
|
15
|
-
</span>
|
|
16
|
-
<strong
|
|
17
|
-
class="inline-block text-base-800"
|
|
18
|
-
:class="isBig ? 'text-5xl block' : null"
|
|
19
|
-
>
|
|
20
|
-
<small v-if="hasVariedPrices">
|
|
21
|
-
{{ `${$t.i19asOf} ` }}
|
|
22
|
-
</small>
|
|
23
|
-
{{ $money(salePrice) }}
|
|
24
|
-
</strong>
|
|
25
|
-
<Fade slide="down">
|
|
26
|
-
<div v-if="cashbackValue && hasCashback" class="relative z-10">
|
|
27
|
-
<span :data-tooltip="$t.i19get$1back
|
|
28
|
-
.replace('$1', $percentage(cashbackPercentage))">
|
|
29
|
-
<i class="i-arrow-uturn-left mr-1"></i>
|
|
30
|
-
<span class="font-medium">
|
|
31
|
-
{{ $money(cashbackValue) }}
|
|
32
|
-
</span>
|
|
33
|
-
<small> cashback</small>
|
|
34
|
-
</span>
|
|
35
|
-
</div>
|
|
36
|
-
</Fade>
|
|
37
|
-
<Fade slide="down">
|
|
38
|
-
<div v-if="installmentValue && hasPriceOptions">
|
|
39
|
-
<small v-if="isLiteral">
|
|
40
|
-
{{ `${$t.i19upTo} ` }}
|
|
41
|
-
</small>
|
|
42
|
-
{{ installmentsNumber }}x
|
|
43
|
-
<small v-if="isLiteral">
|
|
44
|
-
{{ ` ${$t.i19of} ` }}
|
|
45
|
-
</small>
|
|
46
|
-
<span>{{ $money(installmentValue) }}</span>
|
|
47
|
-
<small v-if="!monthlyInterest && isLiteral">
|
|
48
|
-
{{ ` ${$t.i19interestFree}` }}
|
|
49
|
-
</small>
|
|
50
|
-
</div>
|
|
51
|
-
</Fade>
|
|
52
|
-
<Fade slide="down">
|
|
53
|
-
<div v-if="priceWithDiscount < salePrice && hasPriceOptions">
|
|
54
|
-
<small v-if="!discountLabel">
|
|
55
|
-
{{ `${$t.i19asOf} ` }}
|
|
56
|
-
</small>
|
|
57
|
-
<span>{{ $money(priceWithDiscount) }}</span>
|
|
58
|
-
<small v-if="discountLabel">
|
|
59
|
-
{{ ` ${discountLabel}` }}
|
|
60
|
-
</small>
|
|
61
|
-
</div>
|
|
62
|
-
</Fade>
|
|
63
|
-
</div>
|
|
64
|
-
</template>
|
|
65
|
-
|
|
66
|
-
<script setup lang="ts">
|
|
67
|
-
import {
|
|
68
|
-
type Props as UsePricesProps,
|
|
69
|
-
usePrices,
|
|
70
|
-
} from '@@sf/composables/use-prices';
|
|
71
|
-
|
|
72
|
-
export interface Props extends UsePricesProps {
|
|
73
|
-
isBig?: boolean;
|
|
74
|
-
isLiteral?: boolean;
|
|
75
|
-
hasCashback?: boolean;
|
|
76
|
-
hasPriceOptions?: boolean;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const props = withDefaults(defineProps<Props>(), {
|
|
80
|
-
hasCashback: true,
|
|
81
|
-
hasPriceOptions: true,
|
|
82
|
-
});
|
|
83
|
-
const {
|
|
84
|
-
hasVariedPrices,
|
|
85
|
-
salePrice,
|
|
86
|
-
comparePrice,
|
|
87
|
-
cashbackPercentage,
|
|
88
|
-
cashbackValue,
|
|
89
|
-
installmentsNumber,
|
|
90
|
-
monthlyInterest,
|
|
91
|
-
installmentValue,
|
|
92
|
-
priceWithDiscount,
|
|
93
|
-
discountLabel,
|
|
94
|
-
} = usePrices(props);
|
|
95
|
-
</script>
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<article
|
|
3
|
-
ref="card"
|
|
4
|
-
:data-sku="product.sku"
|
|
5
|
-
class="relative h-full max-w-[350px] mx-auto py-3 group"
|
|
6
|
-
>
|
|
7
|
-
<ALink
|
|
8
|
-
:href="link"
|
|
9
|
-
class="flex flex-col h-full rounded overflow-hidden
|
|
10
|
-
group-hover:shadow group-hover:ring-1 ring-black/5"
|
|
11
|
-
>
|
|
12
|
-
<div class="aspect-square p-2
|
|
13
|
-
motion-safe:group-hover:scale-110 transition-transform">
|
|
14
|
-
<div class="relative w-full h-full bg-white rounded overflow-hidden
|
|
15
|
-
group-hover:rounded-none">
|
|
16
|
-
<span v-if="images?.length" class="text-xs text-opacity-70">
|
|
17
|
-
<AImg
|
|
18
|
-
:picture="images[0]"
|
|
19
|
-
:alt="title"
|
|
20
|
-
class="absolute top-0 left-0 block w-full h-full object-cover"
|
|
21
|
-
/>
|
|
22
|
-
<AImg
|
|
23
|
-
v-if="images[1] && wasHoveredOnce"
|
|
24
|
-
:picture="images[1]"
|
|
25
|
-
:alt="title"
|
|
26
|
-
class="absolute top-0 left-0 block w-full h-full object-cover
|
|
27
|
-
opacity-0 group-hover:opacity-100 transition-opacity
|
|
28
|
-
motion-safe:duration-300 text-transparent z-10"
|
|
29
|
-
/>
|
|
30
|
-
</span>
|
|
31
|
-
<div
|
|
32
|
-
v-else
|
|
33
|
-
class="w-full h-full bg-gradient-to-br from-base-50/20 to-base-100"
|
|
34
|
-
/>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
<span
|
|
38
|
-
v-if="discountPercentage"
|
|
39
|
-
class=":uno: absolute top-9 right-2
|
|
40
|
-
group-hover:scale-110 group-hover:translate-x-2 transition-transform
|
|
41
|
-
bg-secondary/70 text-on-secondary text-xs
|
|
42
|
-
py-0.5 pr-1.5 pl-3 [clip-path:polygon(20%_0,100%_0,100%_100%,0_100%)]"
|
|
43
|
-
>
|
|
44
|
-
-<strong>{{ discountPercentage }}</strong>%
|
|
45
|
-
</span>
|
|
46
|
-
<div class="relative flex flex-col grow justify-between p-4
|
|
47
|
-
group-hover:backdrop-blur-md bg-white/40 z-10">
|
|
48
|
-
<component
|
|
49
|
-
:is="headingTag"
|
|
50
|
-
class="ui-link uppercase font-bold text-sm no-underline line-clamp-2"
|
|
51
|
-
:class="[
|
|
52
|
-
isActive ? 'text-base-700' : 'text-base-500',
|
|
53
|
-
link ? 'group-hover:underline group-hover:text-primary' : null,
|
|
54
|
-
]"
|
|
55
|
-
>
|
|
56
|
-
{{ title }}
|
|
57
|
-
</component>
|
|
58
|
-
<div class="pt-2">
|
|
59
|
-
<div v-if="isActive">
|
|
60
|
-
<Prices :product="product" />
|
|
61
|
-
</div>
|
|
62
|
-
<span v-else class="ui-badge bg-warning-100 text-warning-700">
|
|
63
|
-
{{ !isInStock ? $t.i19outOfStock : $t.i19inactive }}
|
|
64
|
-
</span>
|
|
65
|
-
</div>
|
|
66
|
-
<button
|
|
67
|
-
v-if="isActive && !hasVariations"
|
|
68
|
-
class=":uno: hidden md:block ui-btn-sm ui-btn-primary
|
|
69
|
-
absolute -top-6 left-0 w-full rounded-none
|
|
70
|
-
opacity-0 group-hover:opacity-100 transition -z-10 group-hover:z-10"
|
|
71
|
-
@click.prevent="addProductToCart(product)"
|
|
72
|
-
>
|
|
73
|
-
<span class="inline-block h-4 w-4 leading-none text-base text-center
|
|
74
|
-
bg-on-primary text-primary opacity-80 rounded-full mr-1">
|
|
75
|
-
+
|
|
76
|
-
</span>
|
|
77
|
-
{{ $t.i19addToCart }}
|
|
78
|
-
</button>
|
|
79
|
-
</div>
|
|
80
|
-
</ALink>
|
|
81
|
-
</article>
|
|
82
|
-
</template>
|
|
83
|
-
|
|
84
|
-
<script setup lang="ts">
|
|
85
|
-
import { ref } from 'vue';
|
|
86
|
-
import { watchOnce, useElementHover } from '@vueuse/core';
|
|
87
|
-
import { addProductToCart } from '@@sf/state/shopping-cart';
|
|
88
|
-
import {
|
|
89
|
-
type Props as UseProductCardProps,
|
|
90
|
-
useProductCard,
|
|
91
|
-
} from '@@sf/composables/use-product-card';
|
|
92
|
-
import Prices from '~/components/Prices.vue';
|
|
93
|
-
|
|
94
|
-
export type Props = UseProductCardProps & {
|
|
95
|
-
headingTag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
const props = withDefaults(defineProps<Props>(), {
|
|
99
|
-
headingTag: 'h3',
|
|
100
|
-
});
|
|
101
|
-
const {
|
|
102
|
-
product,
|
|
103
|
-
title,
|
|
104
|
-
link,
|
|
105
|
-
images,
|
|
106
|
-
isInStock,
|
|
107
|
-
isActive,
|
|
108
|
-
discountPercentage,
|
|
109
|
-
hasVariations,
|
|
110
|
-
} = useProductCard(props as UseProductCardProps);
|
|
111
|
-
const card = ref<HTMLElement | null>(null);
|
|
112
|
-
const isHovered = useElementHover(card);
|
|
113
|
-
const wasHoveredOnce = ref(false);
|
|
114
|
-
watchOnce(isHovered, () => {
|
|
115
|
-
wasHoveredOnce.value = true;
|
|
116
|
-
});
|
|
117
|
-
</script>
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<section class="ui-section">
|
|
3
|
-
<div v-if="title" class="max-w-prose mx-auto text-center mb-2">
|
|
4
|
-
<h2 class="ui-text-brand text-3xl">
|
|
5
|
-
<ALink :href="titleLink" :class="titleLink ? 'ui-link' : 'text-base-700'">
|
|
6
|
-
{{ title }}
|
|
7
|
-
</ALink>
|
|
8
|
-
</h2>
|
|
9
|
-
</div>
|
|
10
|
-
<Carousel class="group/shelf">
|
|
11
|
-
<li
|
|
12
|
-
v-for="product in products"
|
|
13
|
-
:key="product._id"
|
|
14
|
-
class="basis-1/2 md:basis-1/3 lg:basis-1/4 shrink-0"
|
|
15
|
-
>
|
|
16
|
-
<ProductCard :product="product" />
|
|
17
|
-
</li>
|
|
18
|
-
<template #controls>
|
|
19
|
-
<div
|
|
20
|
-
v-show="products.length > 2"
|
|
21
|
-
class="text-3xl lg:text-2xl leading-none text-primary
|
|
22
|
-
lg:opacity-0 group-hover/shelf:opacity-90 transition-opacity"
|
|
23
|
-
>
|
|
24
|
-
<CarouselControl class="!top-1/2 !-left-4 w-12 h-12
|
|
25
|
-
bg-transparent lg:bg-white/80 lg:hover:bg-primary-300/60 rounded-full
|
|
26
|
-
lg:shadow-sm lg:ring-1 ring-black/5" is-prev />
|
|
27
|
-
<CarouselControl class="!top-1/2 !-right-4 w-12 h-12
|
|
28
|
-
bg-transparent lg:bg-white/80 lg:hover:bg-primary-300/60 rounded-full
|
|
29
|
-
lg:shadow-sm lg:ring-1 ring-black/5" />
|
|
30
|
-
</div>
|
|
31
|
-
</template>
|
|
32
|
-
</Carousel>
|
|
33
|
-
</section>
|
|
34
|
-
</template>
|
|
35
|
-
|
|
36
|
-
<script setup lang="ts">
|
|
37
|
-
import {
|
|
38
|
-
type Props as UseProductShelfProps,
|
|
39
|
-
useProductShelf,
|
|
40
|
-
} from '@@sf/composables/use-product-shelf';
|
|
41
|
-
import Carousel from '@@sf/components/Carousel.vue';
|
|
42
|
-
import CarouselControl from '@@sf/components/CarouselControl.vue';
|
|
43
|
-
import ProductCard from '~/components/ProductCard.vue';
|
|
44
|
-
|
|
45
|
-
export interface Props extends UseProductShelfProps {}
|
|
46
|
-
|
|
47
|
-
const props = defineProps<Props>();
|
|
48
|
-
const {
|
|
49
|
-
title,
|
|
50
|
-
titleLink,
|
|
51
|
-
fetching,
|
|
52
|
-
products,
|
|
53
|
-
} = useProductShelf(props);
|
|
54
|
-
if (import.meta.env.SSR) {
|
|
55
|
-
await fetching;
|
|
56
|
-
}
|
|
57
|
-
</script>
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<section class="ui-section">
|
|
3
|
-
<Countdown />
|
|
4
|
-
<article v-for="product in products" :key="product._id">
|
|
5
|
-
<ProductCard :product="product" />
|
|
6
|
-
</article>
|
|
7
|
-
</section>
|
|
8
|
-
</template>
|
|
9
|
-
|
|
10
|
-
<script setup lang="ts">
|
|
11
|
-
import type { ProductItem } from '@@sf/composables/use-product-card';
|
|
12
|
-
import ProductCard from '~/components/ProductCard.vue';
|
|
13
|
-
import Countdown from '~/components/Countdown.vue';
|
|
14
|
-
|
|
15
|
-
export interface Props {
|
|
16
|
-
products: ProductItem[];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
defineProps<Props>();
|
|
20
|
-
</script>
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<footer class="w-screen bg-base-50 border-t border-base-100 py-2">
|
|
3
|
-
<div class="ui-section">
|
|
4
|
-
<div class="pb-7 border-b border-base-200
|
|
5
|
-
flex justify-between flex-wrap lg:flex-nowrap sm:gap-x-10 gap-y-5">
|
|
6
|
-
<div class="shrink">
|
|
7
|
-
<slot name="logo" />
|
|
8
|
-
<div v-if="$settings.description" class="prose">
|
|
9
|
-
<p>{{ $settings.description }}</p>
|
|
10
|
-
</div>
|
|
11
|
-
<div class="flex gap-2 text-base-500">
|
|
12
|
-
<span v-for="(href, network) in socialNetworks" :key="network">
|
|
13
|
-
<SocialNetworkLink :network="network" class="p-1 hover:text-primary">
|
|
14
|
-
<template v-if="network === 'whatsapp'" #append>
|
|
15
|
-
<span class="ml-1 text-sm text-base-600">
|
|
16
|
-
{{ $settings.whatsapp }}
|
|
17
|
-
</span>
|
|
18
|
-
</template>
|
|
19
|
-
</SocialNetworkLink>
|
|
20
|
-
</span>
|
|
21
|
-
</div>
|
|
22
|
-
<div v-if="$settings.address || $settings.phone" class="mt-3 text-base-700">
|
|
23
|
-
<address v-if="$settings.address" class="inline-block mr-4">
|
|
24
|
-
{{ $settings.address }}
|
|
25
|
-
</address>
|
|
26
|
-
<ALink
|
|
27
|
-
v-if="$settings.phone"
|
|
28
|
-
:href="`tel:${$settings.phone.replace(/\D/g, '')}`"
|
|
29
|
-
class="hover:text-primary"
|
|
30
|
-
>
|
|
31
|
-
<i class="i-phone mr-0.5"></i>
|
|
32
|
-
{{ $settings.phone }}
|
|
33
|
-
</ALink>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
<div v-if="categories?.length" class="basis-1/2 sm:basis-auto">
|
|
37
|
-
<div class="text-lg font-medium mb-2.5">
|
|
38
|
-
{{ categoriesColTitle || $t.i19categories }}
|
|
39
|
-
</div>
|
|
40
|
-
<ul
|
|
41
|
-
class="text-sm"
|
|
42
|
-
:class="categories.length > 4
|
|
43
|
-
? 'grid md:grid-cols-2 gap-x-5 gap-y-1.5' : 'space-y-1.5'"
|
|
44
|
-
>
|
|
45
|
-
<li v-for="({ name, slug }, i) in categories" :key="`c-${i}`">
|
|
46
|
-
<ALink :href="`/${slug}`" class="ui-link text-base-600">
|
|
47
|
-
{{ name }}
|
|
48
|
-
</ALink>
|
|
49
|
-
</li>
|
|
50
|
-
<li>
|
|
51
|
-
<ALink href="/s" class="ui-link text-base-900">
|
|
52
|
-
{{ $t.i19allProducts }}
|
|
53
|
-
</ALink>
|
|
54
|
-
</li>
|
|
55
|
-
</ul>
|
|
56
|
-
</div>
|
|
57
|
-
<div v-if="pageLinks?.length" class="basis-1/2 sm:basis-auto">
|
|
58
|
-
<div class="text-lg font-medium mb-2.5">
|
|
59
|
-
{{ pagesColTitle || $t.i19institutional }}
|
|
60
|
-
</div>
|
|
61
|
-
<ul
|
|
62
|
-
class="text-sm"
|
|
63
|
-
:class="pageLinks.length > 5
|
|
64
|
-
? 'grid md:grid-cols-2 gap-x-5 gap-y-1.5' : 'space-y-1.5'"
|
|
65
|
-
>
|
|
66
|
-
<li v-for="({ title, href }, i) in pageLinks" :key="`p-${i}`">
|
|
67
|
-
<ALink :href="href" class="ui-link text-base-600">
|
|
68
|
-
{{ title }}
|
|
69
|
-
</ALink>
|
|
70
|
-
</li>
|
|
71
|
-
</ul>
|
|
72
|
-
</div>
|
|
73
|
-
</div>
|
|
74
|
-
</div>
|
|
75
|
-
<div class="ui-section">
|
|
76
|
-
<div class="flex flex-wrap lg:flex-nowrap justify-between items-start gap-5">
|
|
77
|
-
<ul class="flex gap-y-3 gap-x-6 lg:gap-x-8 items-center
|
|
78
|
-
md:flex-wrap mx-auto md:mx-0 overflow-x-auto md:overflow-hidden">
|
|
79
|
-
<li v-for="(stamp, i) in stamps" :key="i">
|
|
80
|
-
<ALink :href="stamp.href?.replace('{domain}', $settings.domain || '')">
|
|
81
|
-
<slot :name="`picture-${i}`" />
|
|
82
|
-
<span v-if="!stamp.img" class="flex items-center">
|
|
83
|
-
<span
|
|
84
|
-
v-if="stamp.icon"
|
|
85
|
-
class="text-4xl mr-2
|
|
86
|
-
[&>*]:bg-gradient-to-br [&>*]:from-success-200 [&>*]:to-success-700"
|
|
87
|
-
>
|
|
88
|
-
<i v-if="stamp.icon === 'lock'" class="i-lock-closed"></i>
|
|
89
|
-
<i v-else-if="stamp.icon === 'check'" class="i-check-badge"></i>
|
|
90
|
-
<i v-else class="i-arrow-path-rounded-square"></i>
|
|
91
|
-
</span>
|
|
92
|
-
<span class="text-sm font-medium text-base-600 max-w-[140px]">
|
|
93
|
-
{{ stamp.alt }}
|
|
94
|
-
<i
|
|
95
|
-
v-if="stamp.href && stamp.href.charAt(0) !== '/'"
|
|
96
|
-
class="bg-base-400 ml-0.5 i-arrow-top-right-on-square"
|
|
97
|
-
></i>
|
|
98
|
-
</span>
|
|
99
|
-
</span>
|
|
100
|
-
</ALink>
|
|
101
|
-
</li>
|
|
102
|
-
</ul>
|
|
103
|
-
<div class="flex flex-wrap md:flex-nowrap justify-end items-center
|
|
104
|
-
gap-4 text-2xl mx-auto md:mx-0 overflow-x-auto md:overflow-hidden">
|
|
105
|
-
<PaymentMethodFlag
|
|
106
|
-
v-for="paymentMethod in $settings.payment_methods"
|
|
107
|
-
:key="paymentMethod"
|
|
108
|
-
:flag="paymentMethod"
|
|
109
|
-
/>
|
|
110
|
-
</div>
|
|
111
|
-
</div>
|
|
112
|
-
<div class="mt-7 text-xs text-center md:text-left
|
|
113
|
-
md:flex justify-between gap-4">
|
|
114
|
-
<div class="mb-3 md:mb-0">
|
|
115
|
-
@ {{ new Date().getFullYear() }} {{ $settings.corporate_name }}
|
|
116
|
-
{{ $settings.address ? `/ ${$settings.address}` : '' }}
|
|
117
|
-
/ {{ $settings.doc_number }}
|
|
118
|
-
</div>
|
|
119
|
-
<ALink href="https://www.ecomplus.io/" class="italic text-[#37003c]">
|
|
120
|
-
powered by <b>E-Com Plus</b>
|
|
121
|
-
</ALink>
|
|
122
|
-
</div>
|
|
123
|
-
</div>
|
|
124
|
-
</footer>
|
|
125
|
-
</template>
|
|
126
|
-
|
|
127
|
-
<script setup lang="ts">
|
|
128
|
-
import type { Categories } from '@cloudcommerce/api/types';
|
|
129
|
-
import type { LayoutContent } from '@@sf/content';
|
|
130
|
-
import { socialNetworks } from '@@sf/sf-lib';
|
|
131
|
-
import SocialNetworkLink from '@@sf/components/SocialNetworkLink.vue';
|
|
132
|
-
import PaymentMethodFlag from '@@sf/components/PaymentMethodFlag.vue';
|
|
133
|
-
|
|
134
|
-
export interface Props {
|
|
135
|
-
stamps?: LayoutContent['footer']['stamps'];
|
|
136
|
-
categories?: Array<Partial<Categories> & {
|
|
137
|
-
name: string;
|
|
138
|
-
slug: string;
|
|
139
|
-
}>;
|
|
140
|
-
categoriesColTitle?: string;
|
|
141
|
-
pageLinks?: Array<{
|
|
142
|
-
title: string;
|
|
143
|
-
href: string;
|
|
144
|
-
}>;
|
|
145
|
-
pagesColTitle?: string;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
defineProps<Props>();
|
|
149
|
-
</script>
|