@shopware/cms-base-layer 3.0.0 → 3.1.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/README.md +64 -58
- package/app/components/SwCategoryNavigation.vue +1 -0
- package/app/components/SwCategoryNavigationLink.vue +16 -8
- package/app/components/SwContactForm.vue +1 -0
- package/app/components/SwFilterChips.vue +1 -0
- package/app/components/SwListingProductPrice.vue +16 -4
- package/app/components/SwMedia3D.vue +1 -4
- package/app/components/SwNewsletterForm.vue +4 -3
- package/app/components/SwProductAddToCart.vue +24 -7
- package/app/components/SwProductCard.vue +20 -3
- package/app/components/SwProductCardDetails.vue +27 -9
- package/app/components/SwProductCardImage.vue +31 -12
- package/app/components/SwProductCardSkeleton.vue +37 -14
- package/app/components/SwProductGallery.vue +1 -0
- package/app/components/SwProductListingFilter.vue +5 -1
- package/app/components/SwProductListingFilters.vue +57 -76
- package/app/components/SwProductListingFiltersHorizontal.vue +40 -71
- package/app/components/SwProductPrice.vue +1 -0
- package/app/components/SwProductReviews.vue +14 -6
- package/app/components/SwProductReviewsForm.vue +15 -3
- package/app/components/SwProductUnits.vue +1 -0
- package/app/components/SwQuantitySelect.vue +10 -3
- package/app/components/SwSharedPrice.vue +1 -0
- package/app/components/SwSlider.vue +1 -0
- package/app/components/SwStockInfo.vue +12 -6
- package/app/components/SwVariantConfigurator.vue +4 -1
- package/app/components/listing-filters/SwFilterPrice.vue +79 -30
- package/app/components/listing-filters/SwFilterProperties.vue +40 -25
- package/app/components/listing-filters/SwFilterRating.vue +21 -9
- package/app/components/listing-filters/SwFilterShippingFree.vue +16 -8
- package/app/components/public/cms/CmsBlockSpatialViewer.vue +1 -0
- package/app/components/public/cms/CmsGenericBlock.vue +3 -1
- package/app/components/public/cms/CmsGenericElement.vue +2 -1
- package/app/components/public/cms/CmsNoComponent.vue +2 -1
- package/app/components/public/cms/CmsPage.md +1 -1
- package/app/components/public/cms/CmsPage.vue +2 -0
- package/app/components/public/cms/block/CmsBlockCategoryNavigation.vue +1 -0
- package/app/components/public/cms/block/CmsBlockCenterText.vue +3 -1
- package/app/components/public/cms/block/CmsBlockCrossSelling.vue +1 -0
- package/app/components/public/cms/block/CmsBlockCustomForm.vue +1 -0
- package/app/components/public/cms/block/CmsBlockForm.vue +1 -0
- package/app/components/public/cms/block/CmsBlockGalleryBuybox.vue +4 -1
- package/app/components/public/cms/block/CmsBlockImage.vue +1 -0
- package/app/components/public/cms/block/CmsBlockImageBubbleRow.vue +9 -2
- package/app/components/public/cms/block/CmsBlockImageCover.vue +1 -0
- package/app/components/public/cms/block/CmsBlockImageFourColumn.vue +10 -3
- package/app/components/public/cms/block/CmsBlockImageGallery.vue +1 -0
- package/app/components/public/cms/block/CmsBlockImageGalleryBig.vue +10 -5
- package/app/components/public/cms/block/CmsBlockImageHighlightRow.vue +11 -3
- package/app/components/public/cms/block/CmsBlockImageSimpleGrid.vue +1 -0
- package/app/components/public/cms/block/CmsBlockImageSlider.vue +1 -0
- package/app/components/public/cms/block/CmsBlockImageText.vue +4 -1
- package/app/components/public/cms/block/CmsBlockImageTextBubble.vue +4 -1
- package/app/components/public/cms/block/CmsBlockImageTextCover.vue +4 -1
- package/app/components/public/cms/block/CmsBlockImageTextGallery.vue +4 -12
- package/app/components/public/cms/block/CmsBlockImageTextRow.vue +13 -4
- package/app/components/public/cms/block/CmsBlockImageThreeColumn.vue +1 -0
- package/app/components/public/cms/block/CmsBlockImageThreeCover.vue +11 -3
- package/app/components/public/cms/block/CmsBlockImageTwoColumn.vue +11 -4
- package/app/components/public/cms/block/CmsBlockProductDescriptionReviews.vue +1 -0
- package/app/components/public/cms/block/CmsBlockProductHeading.vue +3 -1
- package/app/components/public/cms/block/CmsBlockProductListing.vue +1 -0
- package/app/components/public/cms/block/CmsBlockProductThreeColumn.vue +1 -0
- package/app/components/public/cms/block/CmsBlockSidebarFilter.vue +1 -0
- package/app/components/public/cms/block/CmsBlockText.vue +1 -0
- package/app/components/public/cms/block/CmsBlockTextHero.vue +1 -0
- package/app/components/public/cms/block/CmsBlockTextOnImage.vue +2 -4
- package/app/components/public/cms/block/CmsBlockTextThreeColumn.vue +1 -0
- package/app/components/public/cms/block/CmsBlockTextTwoColumn.vue +4 -1
- package/app/components/public/cms/block/CmsBlockVimeoVideo.vue +1 -0
- package/app/components/public/cms/block/CmsBlockYoutubeVideo.vue +1 -0
- package/app/components/public/cms/element/CmsElementBuyBox.vue +90 -72
- package/app/components/public/cms/element/CmsElementCategoryNavigation.vue +14 -3
- package/app/components/public/cms/element/CmsElementCrossSelling.vue +3 -1
- package/app/components/public/cms/element/CmsElementCustomForm.vue +1 -0
- package/app/components/public/cms/element/CmsElementForm.vue +1 -0
- package/app/components/public/cms/element/CmsElementHtml.vue +0 -1
- package/app/components/public/cms/element/CmsElementImage.vue +2 -1
- package/app/components/public/cms/element/CmsElementImageGallery.vue +6 -2
- package/app/components/public/cms/element/CmsElementManufacturerLogo.vue +1 -0
- package/app/components/public/cms/element/CmsElementProductBox.vue +1 -0
- package/app/components/public/cms/element/CmsElementProductDescriptionReviews.vue +93 -36
- package/app/components/public/cms/element/CmsElementProductListing.vue +16 -5
- package/app/components/public/cms/element/CmsElementProductSlider.vue +6 -4
- package/app/components/public/cms/element/CmsElementText.vue +2 -0
- package/app/components/public/cms/element/CmsElementVimeoVideo.vue +1 -0
- package/app/components/public/cms/element/CmsElementYoutubeVideo.vue +1 -0
- package/app/components/public/cms/element/SwProductListingPagination.vue +8 -2
- package/app/components/public/cms/section/CmsSectionSidebar.vue +13 -8
- package/app/components/public/cms/skeleton/ProductCardSkeleton.vue +16 -5
- package/app/components/ui/SwitchButton.vue +53 -14
- package/app/components/ui/WishlistIcon.vue +8 -2
- package/app/composables/useLcpImagePreload.test.ts +1 -0
- package/app/composables/useLcpImagePreload.ts +2 -0
- package/app/composables/useTypedAppConfig.ts +1 -0
- package/app/helpers/cms/getImageSizes.test.ts +1 -0
- package/app/helpers/html-to-vue/ast.ts +1 -0
- package/app/helpers/html-to-vue/getOptionsFromNode.test.ts +1 -0
- package/app/helpers/html-to-vue/renderToHtml.ts +1 -0
- package/app/helpers/html-to-vue/renderer.ts +1 -0
- package/app/providers/shopware.test.ts +1 -0
- package/app/utils/routeQuery.test.ts +65 -0
- package/app/utils/routeQuery.ts +26 -0
- package/app/utils/useSelectedListingFilters.test.ts +82 -0
- package/app/utils/useSelectedListingFilters.ts +105 -0
- package/nuxt.config.ts +24 -1
- package/package.json +22 -24
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockImageBubbleRow } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -13,7 +14,9 @@ const rightContent = getSlotContent("right");
|
|
|
13
14
|
const centerContent = getSlotContent("center");
|
|
14
15
|
</script>
|
|
15
16
|
<template>
|
|
16
|
-
<div
|
|
17
|
+
<div
|
|
18
|
+
class="cms-block-image-bubble-row flex flex-col sm:flex-row justify-start items-start gap-6 w-full"
|
|
19
|
+
>
|
|
17
20
|
<div class="w-full sm:flex-1 flex items-center justify-center">
|
|
18
21
|
<CmsGenericElement :content="leftContent" class="w-full" />
|
|
19
22
|
</div>
|
|
@@ -27,6 +30,10 @@ const centerContent = getSlotContent("center");
|
|
|
27
30
|
</template>
|
|
28
31
|
<style scoped>
|
|
29
32
|
.cms-block-image-bubble-row :deep(.cms-element-image) {
|
|
30
|
-
|
|
33
|
+
aspect-ratio: 1 / 1;
|
|
34
|
+
max-width: 20rem;
|
|
35
|
+
overflow: hidden;
|
|
36
|
+
border-radius: 9999px;
|
|
37
|
+
object-fit: cover;
|
|
31
38
|
}
|
|
32
39
|
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockImageFourColumn } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -14,7 +15,9 @@ const centerLeftContent = getSlotContent("center-left");
|
|
|
14
15
|
const centerRightContent = getSlotContent("center-right");
|
|
15
16
|
</script>
|
|
16
17
|
<template>
|
|
17
|
-
<div
|
|
18
|
+
<div
|
|
19
|
+
class="cms-block-image-four-column flex flex-col sm:flex-row sm:flex-wrap lg:flex-nowrap justify-start items-start gap-6 w-full"
|
|
20
|
+
>
|
|
18
21
|
<div class="w-full sm:w-[calc(50%-12px)] lg:flex-1">
|
|
19
22
|
<CmsGenericElement :content="leftContent" />
|
|
20
23
|
</div>
|
|
@@ -32,10 +35,14 @@ const centerRightContent = getSlotContent("center-right");
|
|
|
32
35
|
|
|
33
36
|
<style scoped>
|
|
34
37
|
.cms-block-image-four-column :deep(.cms-element-image) {
|
|
35
|
-
|
|
38
|
+
position: relative;
|
|
39
|
+
height: 100%;
|
|
40
|
+
width: 100%;
|
|
36
41
|
}
|
|
37
42
|
|
|
38
43
|
.cms-block-image-four-column :deep(.cms-element-image img) {
|
|
39
|
-
|
|
44
|
+
height: 100%;
|
|
45
|
+
width: 100%;
|
|
46
|
+
object-fit: cover;
|
|
40
47
|
}
|
|
41
48
|
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockImageGalleryBig } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -19,24 +20,28 @@ const cmsContent = getSlotContent("imageGallery");
|
|
|
19
20
|
|
|
20
21
|
<style scoped>
|
|
21
22
|
.cms-block-image-gallery-big {
|
|
22
|
-
|
|
23
|
+
width: 100%;
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
.cms-block-image-gallery-big :deep(.cms-element-image-gallery) {
|
|
26
|
-
|
|
27
|
+
max-width: 1280px;
|
|
28
|
+
margin-left: auto;
|
|
29
|
+
margin-right: auto;
|
|
27
30
|
}
|
|
28
31
|
|
|
29
32
|
/* Enhanced styling for the big gallery version */
|
|
30
33
|
.cms-block-image-gallery-big :deep(.gallery-slider) {
|
|
31
|
-
|
|
34
|
+
max-height: 800px;
|
|
32
35
|
}
|
|
33
36
|
|
|
34
37
|
.cms-block-image-gallery-big :deep(img) {
|
|
35
|
-
|
|
38
|
+
margin-left: auto;
|
|
39
|
+
margin-right: auto;
|
|
40
|
+
object-fit: contain;
|
|
36
41
|
}
|
|
37
42
|
|
|
38
43
|
/* Larger navigation controls */
|
|
39
44
|
.cms-block-image-gallery-big :deep(.gallery-slider-controls) {
|
|
40
|
-
|
|
45
|
+
transform: scale(1.25);
|
|
41
46
|
}
|
|
42
47
|
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockImageHighlightRow } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -13,7 +14,9 @@ const rightContent = getSlotContent("right");
|
|
|
13
14
|
const centerContent = getSlotContent("center");
|
|
14
15
|
</script>
|
|
15
16
|
<template>
|
|
16
|
-
<div
|
|
17
|
+
<div
|
|
18
|
+
class="cms-block-image-highlight-row flex flex-col sm:flex-row justify-start items-start gap-6 w-full"
|
|
19
|
+
>
|
|
17
20
|
<div class="w-full sm:flex-1">
|
|
18
21
|
<CmsGenericElement :content="leftContent" />
|
|
19
22
|
</div>
|
|
@@ -28,10 +31,15 @@ const centerContent = getSlotContent("center");
|
|
|
28
31
|
|
|
29
32
|
<style scoped>
|
|
30
33
|
.cms-block-image-highlight-row :deep(.cms-element-image) {
|
|
31
|
-
|
|
34
|
+
position: relative;
|
|
35
|
+
height: 100%;
|
|
36
|
+
width: 100%;
|
|
37
|
+
border: 12px solid #ffffff;
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
.cms-block-image-highlight-row :deep(.cms-element-image img) {
|
|
35
|
-
|
|
41
|
+
height: 100%;
|
|
42
|
+
width: 100%;
|
|
43
|
+
object-fit: cover;
|
|
36
44
|
}
|
|
37
45
|
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockImageText } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -12,7 +13,9 @@ const leftContent = getSlotContent("left");
|
|
|
12
13
|
const rightContent = getSlotContent("right");
|
|
13
14
|
</script>
|
|
14
15
|
<template>
|
|
15
|
-
<div
|
|
16
|
+
<div
|
|
17
|
+
class="flex flex-col md:flex-row justify-start items-stretch gap-6 w-full"
|
|
18
|
+
>
|
|
16
19
|
<div class="w-full md:flex-1 min-w-0 p-4 flex flex-col">
|
|
17
20
|
<CmsGenericElement :content="leftContent" class="flex-1" />
|
|
18
21
|
</div>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockImageTextBubble } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -16,7 +17,9 @@ const rightText = getSlotContent("right-text");
|
|
|
16
17
|
const rightImage = getSlotContent("right-image");
|
|
17
18
|
</script>
|
|
18
19
|
<template>
|
|
19
|
-
<div
|
|
20
|
+
<div
|
|
21
|
+
class="cms-block-image-text-bubble flex flex-col sm:flex-row justify-start items-start gap-6 w-full"
|
|
22
|
+
>
|
|
20
23
|
<div class="w-full sm:flex-1">
|
|
21
24
|
<div class="self-stretch flex justify-center">
|
|
22
25
|
<CmsGenericElement
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockImageTextCover } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -12,7 +13,9 @@ const leftContent = getSlotContent("left");
|
|
|
12
13
|
const rightContent = getSlotContent("right");
|
|
13
14
|
</script>
|
|
14
15
|
<template>
|
|
15
|
-
<article
|
|
16
|
+
<article
|
|
17
|
+
class="flex flex-col md:flex-row justify-start items-start gap-6 w-full pb-6"
|
|
18
|
+
>
|
|
16
19
|
<div class="w-full md:flex-1 px-6 pt-6 md:px-0 md:pt-6 md:pl-6">
|
|
17
20
|
<CmsGenericElement :content="leftContent" />
|
|
18
21
|
</div>
|
|
@@ -4,6 +4,7 @@ import type {
|
|
|
4
4
|
CmsElementImage,
|
|
5
5
|
CmsElementText,
|
|
6
6
|
} from "@shopware/composables";
|
|
7
|
+
|
|
7
8
|
import { useCmsBlock } from "#imports";
|
|
8
9
|
|
|
9
10
|
const props = defineProps<{
|
|
@@ -55,10 +56,7 @@ function onImageClick(
|
|
|
55
56
|
:style="{ cursor: leftImageContent.data?.url && 'pointer' }"
|
|
56
57
|
@click="onImageClick(leftImageContent)"
|
|
57
58
|
/>
|
|
58
|
-
<CmsElementText
|
|
59
|
-
:content="leftTextContent"
|
|
60
|
-
class="self-stretch"
|
|
61
|
-
/>
|
|
59
|
+
<CmsElementText :content="leftTextContent" class="self-stretch" />
|
|
62
60
|
</div>
|
|
63
61
|
<div class="w-full sm:flex-1">
|
|
64
62
|
<CmsElementImage
|
|
@@ -68,10 +66,7 @@ function onImageClick(
|
|
|
68
66
|
}"
|
|
69
67
|
@click="onImageClick(centerImageContent)"
|
|
70
68
|
/>
|
|
71
|
-
<CmsElementText
|
|
72
|
-
:content="centerTextContent"
|
|
73
|
-
class="self-stretch"
|
|
74
|
-
/>
|
|
69
|
+
<CmsElementText :content="centerTextContent" class="self-stretch" />
|
|
75
70
|
</div>
|
|
76
71
|
<div class="w-full sm:flex-1">
|
|
77
72
|
<CmsElementImage
|
|
@@ -79,10 +74,7 @@ function onImageClick(
|
|
|
79
74
|
:style="{ cursor: rightImageContent.data?.url && 'pointer' }"
|
|
80
75
|
@click="onImageClick(rightImageContent)"
|
|
81
76
|
/>
|
|
82
|
-
<CmsElementText
|
|
83
|
-
:content="rightTextContent"
|
|
84
|
-
class="self-stretch"
|
|
85
|
-
/>
|
|
77
|
+
<CmsElementText :content="rightTextContent" class="self-stretch" />
|
|
86
78
|
</div>
|
|
87
79
|
</article>
|
|
88
80
|
</template>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockImageTextRow } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -16,7 +17,9 @@ const rightImageContent = getSlotContent("right-image");
|
|
|
16
17
|
const rightTextContent = getSlotContent("right-text");
|
|
17
18
|
</script>
|
|
18
19
|
<template>
|
|
19
|
-
<div
|
|
20
|
+
<div
|
|
21
|
+
class="cms-block-image-text-row flex flex-col md:flex-row justify-center items-stretch gap-6 w-full"
|
|
22
|
+
>
|
|
20
23
|
<div class="w-full md:flex-1 flex flex-col">
|
|
21
24
|
<div class="flex-1 mb-4 overflow-hidden rounded-lg min-h-64">
|
|
22
25
|
<CmsGenericElement :content="leftImageContent" />
|
|
@@ -40,14 +43,20 @@ const rightTextContent = getSlotContent("right-text");
|
|
|
40
43
|
|
|
41
44
|
<style scoped>
|
|
42
45
|
.cms-block-image-text-row :deep(.cms-element-image) {
|
|
43
|
-
|
|
46
|
+
position: relative;
|
|
47
|
+
height: 100%;
|
|
48
|
+
width: 100%;
|
|
44
49
|
}
|
|
45
50
|
|
|
46
51
|
.cms-block-image-text-row :deep(.cms-element-image img) {
|
|
47
|
-
|
|
52
|
+
height: 100%;
|
|
53
|
+
width: 100%;
|
|
54
|
+
border-radius: 0.5rem;
|
|
55
|
+
object-fit: cover;
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
.cms-block-image-text-row :deep(.cms-element-text) {
|
|
51
|
-
|
|
59
|
+
align-self: stretch;
|
|
60
|
+
min-height: 3rem;
|
|
52
61
|
}
|
|
53
62
|
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockImageThreeCover } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -13,7 +14,9 @@ const rightContent = getSlotContent("right");
|
|
|
13
14
|
const centerContent = getSlotContent("center");
|
|
14
15
|
</script>
|
|
15
16
|
<template>
|
|
16
|
-
<div
|
|
17
|
+
<div
|
|
18
|
+
class="cms-block-image-three-cover flex flex-col sm:flex-row justify-start items-start gap-6 w-full"
|
|
19
|
+
>
|
|
17
20
|
<div class="w-full sm:flex-1">
|
|
18
21
|
<CmsGenericElement :content="leftContent" />
|
|
19
22
|
</div>
|
|
@@ -28,10 +31,15 @@ const centerContent = getSlotContent("center");
|
|
|
28
31
|
|
|
29
32
|
<style scoped>
|
|
30
33
|
.cms-block-image-three-cover :deep(.cms-element-image) {
|
|
31
|
-
|
|
34
|
+
position: relative;
|
|
35
|
+
aspect-ratio: 1 / 1;
|
|
36
|
+
height: 100%;
|
|
37
|
+
width: 100%;
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
.cms-block-image-three-cover :deep(.cms-element-image img) {
|
|
35
|
-
|
|
41
|
+
height: 100%;
|
|
42
|
+
width: 100%;
|
|
43
|
+
object-fit: cover;
|
|
36
44
|
}
|
|
37
45
|
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockImageTwoColumn } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -12,7 +13,9 @@ const leftContent = getSlotContent("left");
|
|
|
12
13
|
const rightContent = getSlotContent("right");
|
|
13
14
|
</script>
|
|
14
15
|
<template>
|
|
15
|
-
<div
|
|
16
|
+
<div
|
|
17
|
+
class="cms-block-image-two-column flex flex-col md:flex-row justify-start items-start gap-6 w-full"
|
|
18
|
+
>
|
|
16
19
|
<div class="w-full md:flex-1 md:min-w-0">
|
|
17
20
|
<CmsGenericElement :content="leftContent" />
|
|
18
21
|
</div>
|
|
@@ -24,14 +27,18 @@ const rightContent = getSlotContent("right");
|
|
|
24
27
|
|
|
25
28
|
<style scoped>
|
|
26
29
|
.cms-block-image-two-column :deep(.cms-element-image) {
|
|
27
|
-
|
|
30
|
+
position: relative;
|
|
31
|
+
height: 100%;
|
|
32
|
+
width: 100%;
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
.cms-block-image-two-column :deep(.cms-element-image img) {
|
|
31
|
-
|
|
36
|
+
height: 100%;
|
|
37
|
+
width: 100%;
|
|
38
|
+
object-fit: cover;
|
|
32
39
|
}
|
|
33
40
|
|
|
34
41
|
.cms-block-image-two-column :deep(.cms-element-image-slider) {
|
|
35
|
-
|
|
42
|
+
width: 100%;
|
|
36
43
|
}
|
|
37
44
|
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockProductHeading } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -21,6 +22,7 @@ const rightContent = getSlotContent("right");
|
|
|
21
22
|
|
|
22
23
|
<style scoped>
|
|
23
24
|
.cms-block-product-heading .cms-element-image {
|
|
24
|
-
|
|
25
|
+
max-height: 7.5rem;
|
|
26
|
+
max-width: 7.5rem;
|
|
25
27
|
}
|
|
26
28
|
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockTextOnImage } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -15,9 +16,6 @@ const slotContent = getSlotContent("content");
|
|
|
15
16
|
<div
|
|
16
17
|
class="cms-block-text-on-image min-h-[500px] py-20 bg-cover bg-bottom bg-no-repeat relative"
|
|
17
18
|
>
|
|
18
|
-
<CmsGenericElement
|
|
19
|
-
v-if="slotContent"
|
|
20
|
-
:content="slotContent"
|
|
21
|
-
/>
|
|
19
|
+
<CmsGenericElement v-if="slotContent" :content="slotContent" />
|
|
22
20
|
</div>
|
|
23
21
|
</template>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { CmsBlockTextTwoColumn } from "@shopware/composables";
|
|
3
|
+
|
|
3
4
|
import { useCmsBlock } from "#imports";
|
|
4
5
|
|
|
5
6
|
const props = defineProps<{
|
|
@@ -13,7 +14,9 @@ const rightContent = getSlotContent("right");
|
|
|
13
14
|
</script>
|
|
14
15
|
|
|
15
16
|
<template>
|
|
16
|
-
<article
|
|
17
|
+
<article
|
|
18
|
+
class="cms-block-text-two-column grid md:grid-cols-2 gap-5 md:gap-20"
|
|
19
|
+
>
|
|
17
20
|
<CmsGenericElement
|
|
18
21
|
:content="leftContent"
|
|
19
22
|
class="cms-block-text-two-column__text"
|