@dcodegroup-au/page-builder 0.6.9 → 0.7.1
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/dist/page-builder.css +283 -68
- package/dist/page-builder.es.js +255 -244
- package/dist/page-builder.umd.js +255 -244
- package/example/src/App.vue +89 -17
- package/example/src/pages/AboutUs.js +1 -1
- package/example/src/pages/OurCommitment.js +1 -1
- package/example/src/pages/OurHistory.js +1 -1
- package/package.json +1 -1
- package/src/components/builders/Links.vue +5 -0
- package/src/components/common/LinkedTo.vue +1 -1
- package/src/components/presenters/components/CarouselPresenter.vue +18 -4
- package/src/components/presenters/components/CollectionGridPresenter.vue +3 -3
- package/src/components/presenters/components/SliderPresenter.vue +3 -2
- package/src/components/presenters/modules/AccordionPricing.vue +5 -5
- package/src/components/presenters/modules/BulletPoints.vue +5 -5
- package/src/components/presenters/modules/Callout.vue +5 -5
- package/src/components/presenters/modules/CollectionCarousel.vue +1 -1
- package/src/components/presenters/modules/ContactUs.vue +1 -1
- package/src/components/presenters/modules/FAQ.vue +3 -2
- package/src/components/presenters/modules/HeroHeader.vue +1 -1
- package/src/components/presenters/modules/HorizontalTabs.vue +4 -4
- package/src/components/presenters/modules/LinkCard.vue +39 -5
- package/src/components/presenters/modules/LinkList.vue +4 -4
- package/src/components/presenters/modules/Paragraph.vue +4 -4
- package/src/components/presenters/modules/QuickLinks.vue +1 -1
- package/src/components/presenters/modules/StandardHeader.vue +4 -4
- package/src/components/presenters/modules/TestimonialSlider.vue +4 -4
- package/src/components/presenters/modules/Timeline.vue +2 -2
- package/src/components/presenters/modules/TwoColumnsImageContent.vue +7 -16
- package/src/components/presenters/modules/VTabs.vue +1 -1
- package/tailwind.config.js +3 -0
- /package/example/src/pages/{AdvisoryService.js → AdvisoryServices.js} +0 -0
package/example/src/App.vue
CHANGED
|
@@ -6,7 +6,7 @@ import {OurVision} from "./pages/OurVision.js";
|
|
|
6
6
|
import {OurCommitment} from "./pages/OurCommitment.js";
|
|
7
7
|
import {OurHistory} from "./pages/OurHistory.js";
|
|
8
8
|
import {ChildSafeStandard} from "./pages/ChildSafeStandard.js";
|
|
9
|
-
import {AdvisoryServices} from "./pages/
|
|
9
|
+
import {AdvisoryServices} from "./pages/AdvisoryServices.js";
|
|
10
10
|
import {PartnerWithUs} from "./pages/PartnerWithUs.js";
|
|
11
11
|
import {OurGroups} from "./pages/OurGroups.js";
|
|
12
12
|
import {Vectea2024} from "./pages/Vectea2024.js";
|
|
@@ -109,26 +109,98 @@ const breadcrumbs = [
|
|
|
109
109
|
|
|
110
110
|
<template>
|
|
111
111
|
<div>
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
<PageRender :page="
|
|
112
|
+
<div style="margin: 40px 0;">
|
|
113
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">About Us</h1>
|
|
114
|
+
|
|
115
|
+
<PageRender :page="AboutUs" />
|
|
116
|
+
</div>
|
|
117
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
118
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Advocary And Research</h1>
|
|
119
|
+
|
|
120
|
+
<PageRender :page="AdvocaryAndResearch" />
|
|
121
|
+
</div>
|
|
122
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
123
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Best Life</h1>
|
|
124
|
+
|
|
125
|
+
<PageRender :page="BestLife" />
|
|
126
|
+
</div>
|
|
127
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
128
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Home</h1>
|
|
129
|
+
|
|
130
|
+
<PageRender :page="Home" />
|
|
116
131
|
</div>
|
|
117
|
-
<div style="margin: 40px 0">
|
|
118
|
-
<h1 style="margin-bottom: 20px; font-size: 50px;">
|
|
119
|
-
|
|
132
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
133
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Our Commitment</h1>
|
|
134
|
+
|
|
135
|
+
<PageRender :page="OurCommitment" />
|
|
120
136
|
</div>
|
|
121
|
-
<div style="margin: 40px 0">
|
|
122
|
-
<h1 style="margin-bottom: 20px; font-size: 50px;">
|
|
123
|
-
|
|
137
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
138
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Our History</h1>
|
|
139
|
+
|
|
140
|
+
<PageRender :page="OurHistory" />
|
|
124
141
|
</div>
|
|
125
|
-
<div style="margin: 40px 0">
|
|
126
|
-
<h1 style="margin-bottom: 20px; font-size: 50px;">
|
|
127
|
-
|
|
142
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
143
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Partner With Us</h1>
|
|
144
|
+
|
|
145
|
+
<PageRender :page="PartnerWithUs" />
|
|
128
146
|
</div>
|
|
129
|
-
<div style="margin: 40px 0">
|
|
130
|
-
<h1 style="margin-bottom: 20px; font-size: 50px;">
|
|
131
|
-
|
|
147
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
148
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Vectea 2024</h1>
|
|
149
|
+
|
|
150
|
+
<PageRender :page="Vectea2024" />
|
|
132
151
|
</div>
|
|
152
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
153
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Advisory Services</h1>
|
|
154
|
+
|
|
155
|
+
<PageRender :page="AdvisoryServices" />
|
|
156
|
+
</div>
|
|
157
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
158
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Assessment Support Service</h1>
|
|
159
|
+
|
|
160
|
+
<PageRender :page="AssessmentSupportService" />
|
|
161
|
+
</div>
|
|
162
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
163
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Child Safe Standard</h1>
|
|
164
|
+
|
|
165
|
+
<PageRender :page="ChildSafeStandard" />
|
|
166
|
+
</div>
|
|
167
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
168
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Landing Page</h1>
|
|
169
|
+
|
|
170
|
+
<PageRender :page="LandingPage" />
|
|
171
|
+
</div>
|
|
172
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
173
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Our Groups</h1>
|
|
174
|
+
|
|
175
|
+
<PageRender :page="OurGroups" />
|
|
176
|
+
</div>
|
|
177
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
178
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">Our Vision</h1>
|
|
179
|
+
|
|
180
|
+
<PageRender :page="OurVision" />
|
|
181
|
+
</div>
|
|
182
|
+
<div style="margin: 40px 0; border-top: 1px solid black; padding-top: 40px;">
|
|
183
|
+
<h1 style="margin-bottom: 20px; font-size: 50px;text-align: center;">SAEW</h1>
|
|
184
|
+
|
|
185
|
+
<PageRender :page="SAEW" />
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
<!-- <div style="margin: 40px 0">-->
|
|
190
|
+
<!-- <h1 style="margin-bottom: 20px; font-size: 50px;">Slider Edit</h1>-->
|
|
191
|
+
<!-- <ItemEdit :item="slide" :sites="sites"/>-->
|
|
192
|
+
<!-- </div>-->
|
|
193
|
+
<!-- <div style="margin: 40px 0">-->
|
|
194
|
+
<!-- <h1 style="margin-bottom: 20px; font-size: 50px;">Link Card Edit</h1>-->
|
|
195
|
+
<!-- <LinkCardEdit :item="linkCardItem" :sites="sites"/>-->
|
|
196
|
+
<!-- </div>-->
|
|
197
|
+
<!-- <div style="margin: 40px 0">-->
|
|
198
|
+
<!-- <h1 style="margin-bottom: 20px; font-size: 50px;">Vertical Tab Edit</h1>-->
|
|
199
|
+
<!-- <ItemEdit :item="tab" :sites="sites"/>-->
|
|
200
|
+
<!-- </div>-->
|
|
201
|
+
<!-- <div style="margin: 40px 0">-->
|
|
202
|
+
<!-- <h1 style="margin-bottom: 20px; font-size: 50px;">Page Builder</h1>-->
|
|
203
|
+
<!-- <PageBuilder v-model="LandingPage" :breadcrumbs="breadcrumbs" :forms="forms" :sites="sites"/>-->
|
|
204
|
+
<!-- </div>-->
|
|
133
205
|
</div>
|
|
134
206
|
</template>
|
|
@@ -79,7 +79,7 @@ export const AboutUs = {
|
|
|
79
79
|
type: "header",
|
|
80
80
|
title: "Support Services",
|
|
81
81
|
icon: "AlertCircle",
|
|
82
|
-
featured_image: "https://beta.elaa.org.au/
|
|
82
|
+
featured_image: "https://beta-public.elaa.org.au/fileman/Page Builder/untitled-design-30.png"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
name: "Bullet Points",
|
|
@@ -48,7 +48,7 @@ export const OurCommitment =
|
|
|
48
48
|
title: 'Learn More',
|
|
49
49
|
dark: true,
|
|
50
50
|
supporting_text: 'Learn more about the Traditional owners of the land our members work on.',
|
|
51
|
-
featured_image: "https://
|
|
51
|
+
featured_image: "https://beta-public.elaa.org.au/fileman/Page Builder/inclusive-3cdps20221207npapproved.jpg",
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
name: "Links",
|
|
@@ -53,7 +53,7 @@ export const OurHistory = {
|
|
|
53
53
|
"type": "header",
|
|
54
54
|
"title": "Explore Further",
|
|
55
55
|
"has_extra": true,
|
|
56
|
-
"featured_image": "https://
|
|
56
|
+
"featured_image": "https://beta-public.elaa.org.au/fileman/Page Builder/kpv-launch-1990.jpg",
|
|
57
57
|
"supporting_text": "Learn more about our history and past"
|
|
58
58
|
}, {
|
|
59
59
|
"data": [{
|
package/package.json
CHANGED
|
@@ -107,6 +107,7 @@
|
|
|
107
107
|
v-model:url="item.url"
|
|
108
108
|
v-model:openInNewTab="item.open_in_new_tab"
|
|
109
109
|
:sites="sites"
|
|
110
|
+
:forms="forms"
|
|
110
111
|
/>
|
|
111
112
|
</div>
|
|
112
113
|
<div v-else>
|
|
@@ -144,6 +145,10 @@ const VFileUpload = inject("VFileUpload", DefaultFileUpload);
|
|
|
144
145
|
const emit = defineEmits(["update"]);
|
|
145
146
|
const props = defineProps({
|
|
146
147
|
...defaultProps,
|
|
148
|
+
forms: {
|
|
149
|
+
type: Array,
|
|
150
|
+
default: () => []
|
|
151
|
+
}
|
|
147
152
|
});
|
|
148
153
|
|
|
149
154
|
const options = [{value: 'content', label: 'Content'}, {value: 'image_only', label: 'Image Only'}];
|
|
@@ -40,7 +40,7 @@ const type = defineModel("type", { default: "site-content" });
|
|
|
40
40
|
const url = defineModel("url");
|
|
41
41
|
const openInNewTab = defineModel("openInNewTab");
|
|
42
42
|
|
|
43
|
-
defineProps({
|
|
43
|
+
const props = defineProps({
|
|
44
44
|
label: { type: String, required: false },
|
|
45
45
|
sites: { type: Array, required: false, default: () => []}, // Todo refactor sites to items as generic usage
|
|
46
46
|
forms: { type: Array, required: false, default: () => []},
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
<!-- Slider Wrapper -->
|
|
4
4
|
<div
|
|
5
5
|
class="slider-wrapper flex transition-transform duration-500 gap-0 mb-6"
|
|
6
|
-
:style="{ transform: `translateX(-${currentSlide * (480 + 24)}px)` }"
|
|
6
|
+
:style="{ transform: `translateX(-${currentSlide * ((windowWidth >= 480 ? 480 : windowWidth) + 24)}px)` }"
|
|
7
7
|
>
|
|
8
8
|
<div
|
|
9
9
|
v-for="(slide, index) in slides"
|
|
10
10
|
:key="index"
|
|
11
|
-
class="slider-item flex-shrink-0
|
|
11
|
+
class="slider-item flex-shrink-0 mr-6 w-[480px] max-w-full"
|
|
12
12
|
:class="{'h-[318px]': !hasBackground, 'h-full': hasBackground}"
|
|
13
13
|
>
|
|
14
|
-
<div class="w-full p-4 rounded-
|
|
14
|
+
<div class="w-full p-4 rounded-lg md:rounded-2xl" :class="{'bg-gray-50 h-full flex flex-col justify-between': !hasBackground, 'bg-white': hasBackground}">
|
|
15
15
|
<div>
|
|
16
16
|
<div class="mb-4" v-if="slide.image">
|
|
17
17
|
<img
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
</template>
|
|
92
92
|
|
|
93
93
|
<script setup>
|
|
94
|
-
import { ref, inject } from
|
|
94
|
+
import { ref, inject, onMounted, onUnmounted } from 'vue'
|
|
95
95
|
import Clock from "@/assets/img/icons/clock.svg";
|
|
96
96
|
import ChevronRight from "@/assets/img/icons/chevron-right.svg";
|
|
97
97
|
import ChevronLeft from "@/assets/img/icons/chevron-left.svg";
|
|
@@ -117,6 +117,20 @@ const props = defineProps({
|
|
|
117
117
|
const currentSlide = ref(0); // Start at 0
|
|
118
118
|
const itemsToShow = 4; // Number of items to show at a time
|
|
119
119
|
const slides = [...props.component.content?.items || []];
|
|
120
|
+
const windowWidth = ref(480)
|
|
121
|
+
|
|
122
|
+
onMounted(() => {
|
|
123
|
+
windowWidth.value = window.innerWidth
|
|
124
|
+
window.addEventListener('resize', updateWidth)
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
onUnmounted(() => {
|
|
128
|
+
window.removeEventListener('resize', updateWidth)
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
const updateWidth = () => {
|
|
132
|
+
windowWidth.value = window.innerWidth
|
|
133
|
+
}
|
|
120
134
|
|
|
121
135
|
// Navigate to the next slide
|
|
122
136
|
const nextSlide = () => {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<video
|
|
7
7
|
@click="togglePlayPause(index)"
|
|
8
8
|
:ref="(el) => setVideoRef(el, index)"
|
|
9
|
-
class="w-full h-[281px] object-cover rounded-
|
|
9
|
+
class="w-full h-[281px] object-cover rounded-lg md:rounded-2xl"
|
|
10
10
|
width="640"
|
|
11
11
|
height="360"
|
|
12
12
|
preload="metadata"
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
v-else-if="card.image"
|
|
25
25
|
:src="card.image"
|
|
26
26
|
alt="Card Image"
|
|
27
|
-
class="w-full h-[281px] object-cover rounded-
|
|
27
|
+
class="w-full h-[281px] object-cover rounded-lg md:rounded-2xl mb-4"
|
|
28
28
|
/>
|
|
29
|
-
<img v-else class="w-full h-[281px] object-cover rounded-
|
|
29
|
+
<img v-else class="w-full h-[281px] object-cover rounded-lg md:rounded-2xl mb-4" alt="No Available" src="@/assets/img/no_image_available.jpeg">
|
|
30
30
|
<div class="flex flex-col gap-2 items-start text-left w-full">
|
|
31
31
|
<div v-if="card.categories && card.categories.length" class="flex gap-2">
|
|
32
32
|
<span
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="flex h-[872px] w-full bg-navy-800 relative rounded-[48px] z-10">
|
|
2
|
+
<div class="flex h-[872px] w-full bg-navy-800 relative rounded-3xl md:rounded-[48px] z-10">
|
|
3
3
|
<Carousel :items-to-show="1" v-model="currentSlide" :autoplay="5000" class="carousel w-full" :wrap-around="true">
|
|
4
4
|
<Slide v-for="(slide, index) in slides" :key="index">
|
|
5
5
|
<div class="lg:p-8 p-4 flex relative w-full">
|
|
6
|
-
<div class="lg:w-1/2 lg:pl-8 lg:pr-16 pl-4 pr-8 flex flex-col lg:mt-[218px] mt-[100px] absolute top-0 left-5 lg:relative">
|
|
6
|
+
<div class="lg:w-1/2 lg:pl-8 lg:pr-16 pl-4 pr-8 flex flex-col lg:mt-[218px] mt-[100px] absolute top-0 left-5 lg:relative z-20">
|
|
7
7
|
<div class="gap-2 flex z-10 mb-4">
|
|
8
8
|
<a v-if="slides.length > 1"
|
|
9
9
|
v-for="(slide, index) in slides"
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
alt="Slide Image"
|
|
35
35
|
class="rounded-[40px] h-[674px] max-w-[882px] lg:w-1/2 w-full object-cover"/>
|
|
36
36
|
<img v-else class="rounded-[40px] h-[674px] max-w-[882px] lg:w-1/2 w-full object-cover" src="@/assets/img/no_image_available.jpeg">
|
|
37
|
+
<div class="absolute inset-0 lg:hidden z-10 p-4"><div class="bg-black opacity-60 rounded-[40px] h-full"></div></div>
|
|
37
38
|
</div>
|
|
38
39
|
</Slide>
|
|
39
40
|
</Carousel>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full
|
|
3
|
-
<div class="bg-pale-100
|
|
4
|
-
<div
|
|
2
|
+
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full py-[40px] flex justify-center gap-[10%] ">
|
|
3
|
+
<div class="bg-pale-100 w-full rounded-[20px] p-8 gap-6 grid lg:grid-cols-2">
|
|
4
|
+
<div>
|
|
5
5
|
<p class="text-[36px] font-semibold text-gray-900 mb-[48px]" v-text="pricingComponent.title"></p>
|
|
6
|
-
<div class="flex flex-col divide-y divide-gray-200 px-6 bg-white rounded-
|
|
6
|
+
<div class="flex flex-col divide-y divide-gray-200 px-6 bg-white rounded-lg md:rounded-2xl overflow-hidden">
|
|
7
7
|
<div v-for="(price, index) in pricingComponent.data"
|
|
8
8
|
class="relative w-full py-6">
|
|
9
9
|
<a class="text-gray-900 cursor-pointer w-full inline-flex justify-between gap-1.5 items-center leading-[28px] font-semibold text-lg">
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
</div>
|
|
25
25
|
</div>
|
|
26
26
|
</div>
|
|
27
|
-
<div class="
|
|
27
|
+
<div class="bg-white rounded-lg md:rounded-2xl overflow-hidden flex flex-col items-center justify-center py-8 px-12">
|
|
28
28
|
<div v-if="paragraphComponent">
|
|
29
29
|
<p class="text-[32px] font-semibold text-gray-900" v-text="paragraphComponent.title"></p>
|
|
30
30
|
<p class="text-[18px]text-gray-600 mt-2" v-html="paragraphComponent.paragraph"></p>
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
<div class="overflow-hidden">
|
|
3
3
|
<div :class="{'bg-gray-50 py-2 my-6' : section?.has_background, 'my-8': section?.margin}">
|
|
4
4
|
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full my-[40px]"
|
|
5
|
-
:class="{'flex gap-8': headerComponent?.featured_image, 'flex-row-reverse justify-between': headerComponent?.revert}">
|
|
5
|
+
:class="{'flex gap-8 flex-col lg:flex-row': headerComponent?.featured_image, 'flex-col-reverse lg:flex-row-reverse justify-between': headerComponent?.revert}">
|
|
6
6
|
<img v-if="headerComponent?.featured_image"
|
|
7
7
|
:src="headerComponent?.featured_image"
|
|
8
|
-
class="max-w-[480px] w-full object-cover rounded-
|
|
8
|
+
class="max-w-[480px] w-full object-cover rounded-xl md:rounded-3xl"
|
|
9
9
|
ref="leftColumn"
|
|
10
10
|
alt="Feature"/>
|
|
11
|
-
<div v-if="headerComponent" class="h-fit" :class="{'py-[48px]': headerComponent?.featured_image, 'grid grid-cols-2
|
|
11
|
+
<div v-if="headerComponent" class="h-fit flex flex-col gap-4 lg:gap-8" :class="{'xl:py-[48px]': headerComponent?.featured_image, '[&]:grid lg:grid-cols-2': section?.two_column}"
|
|
12
12
|
ref="rightColumn">
|
|
13
13
|
<div>
|
|
14
14
|
<div v-if="headerComponent?.icon"
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
<p v-if="headerComponent?.supporting_text" class="text-[20px] font-normal mt-2 text-gray-600 leading-[30px]"
|
|
20
20
|
v-html="headerComponent.supporting_text"></p>
|
|
21
21
|
</div>
|
|
22
|
-
<div v-for="bullet in bulletPointsComponents"
|
|
22
|
+
<div v-for="bullet in bulletPointsComponents">
|
|
23
23
|
<p v-if="bullet?.title" v-text="bullet.title" class="font-semibold text-[20px] mb-4"></p>
|
|
24
24
|
<div class="flex flex-col gap-4"
|
|
25
|
-
:class="{'
|
|
25
|
+
:class="{'[&]:grid sm:grid-cols-2 lg:grid-cols-3' :!headerComponent?.featured_image && !section?.two_column}">
|
|
26
26
|
<div v-for="item in bullet.data" class="flex">
|
|
27
27
|
<div
|
|
28
28
|
class="bg-gray-100 rounded-full w-[28px] h-[28px] flex items-center justify-center text-gray-500 mr-2">
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="overflow-hidden">
|
|
3
3
|
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full mt-[40px]"
|
|
4
|
-
:class="{'flex gap-8': headerComponent?.featured_image}">
|
|
5
|
-
<div class="max-w-[33.3%] w-full min-h-[320px]"
|
|
4
|
+
:class="{'flex gap-4 lg:gap-8 flex-col lg:flex-row': headerComponent?.featured_image}">
|
|
5
|
+
<div class="lg:max-w-[33.3%] w-full sm:min-h-[320px]"
|
|
6
6
|
v-if="(imageComponent && section?.acknowledgement_style)
|
|
7
7
|
|| (headerComponent?.featured_image && !section?.acknowledgement_style)"
|
|
8
8
|
>
|
|
9
9
|
<img v-if="imageComponent && section?.acknowledgement_style"
|
|
10
10
|
:src="imageComponent.featured_image" :alt="imageComponent?.caption ?? 'Image'"
|
|
11
|
-
class="w-[560px] object-cover rounded-
|
|
11
|
+
class="w-[560px] object-cover rounded-xl md:rounded-3xl h-full mx-auto"/>
|
|
12
12
|
<img v-if="headerComponent?.featured_image && !section?.acknowledgement_style"
|
|
13
13
|
:src="headerComponent?.featured_image"
|
|
14
|
-
class="w-[560px] object-cover rounded-
|
|
14
|
+
class="w-[560px] object-cover rounded-xl md:rounded-3xl h-full mx-auto"
|
|
15
15
|
alt="Feature"/>
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
18
|
<div v-if="headerComponent"
|
|
19
|
-
class="rounded-
|
|
19
|
+
class="rounded-xl md:rounded-3xl flex items-center justify-center flex-col"
|
|
20
20
|
:class="{
|
|
21
21
|
'bg-pale-100 min-h-[320px] w-full': !headerComponent?.featured_image,
|
|
22
22
|
'border border-brand-400 w-full py-8': headerComponent?.featured_image,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="overflow-hidden" :class="{'rounded-br-[48px] rounded-tl-[48px] bg-aqua-100': section?.has_background}">
|
|
3
3
|
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full">
|
|
4
|
-
<div class="max-md:mx-[30px] 1xl:mx-0 rounded-[48px] pt-[40px]">
|
|
4
|
+
<div class="max-md:mx-[30px] 1xl:mx-0 rounded-3xl md:rounded-[48px] pt-[40px]">
|
|
5
5
|
<VHeaderPresenter :component="headerComponent" />
|
|
6
6
|
</div>
|
|
7
7
|
</div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="overflow-hidden">
|
|
3
3
|
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full my-[40px] flex justify-center">
|
|
4
|
-
<div class="bg-gray-100 rounded-
|
|
4
|
+
<div class="bg-gray-100 rounded-lg md:rounded-2xl flex justify-center w-full" v-if="headerComponent">
|
|
5
5
|
<div class="flex items-center justify-center flex-col py-[40px] max-w-[820px]">
|
|
6
6
|
<div class="flex justify-between relative w-[150px]">
|
|
7
7
|
<div class="w-[56px] h-[56px] border-[2px] border-white bg-gray-200 rounded-full flex justify-center items-center">
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="overflow-hidden">
|
|
3
|
-
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full bg-white py-[40px] flex justify-center gap-[10%]"
|
|
4
|
-
|
|
3
|
+
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full bg-white py-[40px] flex justify-center gap-[10%]"
|
|
4
|
+
:class="{'justify-start md:!px-0 !ml-0': section?.align_left}">
|
|
5
|
+
<div v-for="(header, index) in headerComponents" class="gap-4 max-w-[800px] w-full" :class="{'!max-w-full' : section?.align_left}">
|
|
5
6
|
<div class="px-[40px] text-center mb-6 mx-auto" v-if="header">
|
|
6
7
|
<h3 class="text-[36px] text-gray-900 font-semibold">{{ header.title }}</h3>
|
|
7
8
|
<p v-if="header?.supporting_text"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="rounded-[48px] 1xl:max-w-[1824px] mx-auto w-full">
|
|
2
|
+
<div class="rounded-3xl md:rounded-[48px] 1xl:max-w-[1824px] mx-auto w-full">
|
|
3
3
|
<div v-for="(component, index) in section.components" class="md:px-[90px]">
|
|
4
4
|
<component
|
|
5
5
|
:is="currentComponent(component)"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="px-6 mt-4 mb-36">
|
|
3
|
-
<div class="bg-navy-800 p-10 rounded-[48px]">
|
|
3
|
+
<div class="bg-navy-800 p-10 rounded-3xl md:rounded-[48px]">
|
|
4
4
|
<div class="max-w-[51.25rem] text-center mx-auto">
|
|
5
5
|
<article class="mb-10">
|
|
6
6
|
<p class="leading-6 font-semibold text-yellow-100 mb-2" v-text="headerComponent.sub_title"></p>
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
<p class="text-xl leading-8 text-gray-200" v-text="headerComponent.supporting_text"></p>
|
|
9
9
|
</article>
|
|
10
10
|
|
|
11
|
-
<nav class="h-14 border border-white rounded-[48px] flex items-center justify-stretch px-1.5 space-x-1 mb-8">
|
|
11
|
+
<nav class="h-14 border border-white rounded-3xl md:rounded-[48px] flex items-center justify-stretch px-1.5 space-x-1 mb-8">
|
|
12
12
|
<button
|
|
13
13
|
v-for="membership in horizontalTabComponent.data"
|
|
14
14
|
:key="membership.id"
|
|
15
15
|
@click="active = membership.id"
|
|
16
|
-
class="h-11 rounded-[48px] flex-1 text-white transition-colors text-md font-semibold"
|
|
16
|
+
class="h-11 rounded-3xl md:rounded-[48px] flex-1 text-white transition-colors text-md font-semibold"
|
|
17
17
|
:class="{ 'bg-white !text-gray-700': active === membership.id }"
|
|
18
18
|
>
|
|
19
19
|
{{ membership.name }}
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<div
|
|
32
32
|
v-if="activeMembership"
|
|
33
33
|
:key="activeMembership.id"
|
|
34
|
-
class="bg-white py-8 rounded-3xl shadow-sm border border-gray-200 flex max-w-[1400px] mx-auto -mb-[140px]"
|
|
34
|
+
class="bg-white py-8 rounded-xl md:rounded-3xl shadow-sm border border-gray-200 flex max-w-[1400px] mx-auto -mb-[140px]"
|
|
35
35
|
>
|
|
36
36
|
<!-- Left section -->
|
|
37
37
|
<div class="w-2/5 px-8">
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="overflow-hidden" :class="{'bg-aqua-100 mb-6': !section?.no_background}">
|
|
2
|
+
<div class="link-card overflow-hidden" :class="{'bg-aqua-100 mb-6': !section?.no_background}">
|
|
3
3
|
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full my-[40px]">
|
|
4
4
|
<div class="rounded-xl px-[40px] text-center mb-6 max-w-[1280px] mx-auto" v-if="headerComponent">
|
|
5
5
|
<h3 class="text-[36px] text-gray-900 font-semibold">{{ headerComponent.title }}</h3>
|
|
6
6
|
<div v-if="headerComponent?.supporting_text" class="text-[20px] font-normal mt-2 text-gray-600 leading-[30px] max-w-[768px] mx-auto" v-html="headerComponent.supporting_text"></div>
|
|
7
7
|
</div>
|
|
8
|
-
<div v-if="cardComponent" class="flex w-full" :class="{'gap-8': headerComponent?.featured_image}">
|
|
8
|
+
<div v-if="cardComponent" class="flex flex-col md:flex-row w-full" :class="{'gap-8': headerComponent?.featured_image}">
|
|
9
9
|
<div class="w-full" ref="leftColumn" v-if="headerComponent?.featured_image">
|
|
10
10
|
<img
|
|
11
11
|
:src="headerComponent?.featured_image"
|
|
12
12
|
class="rounded-br-[24px] rounded-tl-[24px] h-full w-full object-cover"
|
|
13
13
|
alt="Feature"/>
|
|
14
14
|
</div>
|
|
15
|
-
<div class="
|
|
15
|
+
<div class="grid gap-8 w-full" ref="rightColumn"
|
|
16
|
+
:class="`${headerComponent?.featured_image ? 'link-card__columns--with-featured-image' : ''} ${'link-card__columns--'+ cardComponent.data.length}`"
|
|
17
|
+
>
|
|
16
18
|
<div v-for="(data, index) in cardComponent.data"
|
|
17
|
-
class="relative bg-white p-8 rounded-
|
|
19
|
+
class="relative bg-white p-8 rounded-xl md:rounded-3xl w-full"
|
|
18
20
|
:class="{'!bg-gray-50': section?.no_background}">
|
|
19
21
|
<div v-if="data.icon" class="w-[48px] h-[48px] flex justify-center items-center rounded-[10px] text-white bg-aqua-900 mb-4">
|
|
20
22
|
<IconComponent :icon="data.icon" icon-classes="w-5 h-5" :key="index"></IconComponent>
|
|
@@ -65,4 +67,36 @@ onMounted(() => {
|
|
|
65
67
|
leftColumn.value.style.height = `${rightColumn.value.offsetHeight}px`;
|
|
66
68
|
}
|
|
67
69
|
});
|
|
68
|
-
</script>
|
|
70
|
+
</script>
|
|
71
|
+
|
|
72
|
+
<style scoped>
|
|
73
|
+
.link-card {
|
|
74
|
+
&__columns {
|
|
75
|
+
&--2 {
|
|
76
|
+
@apply sm:grid-cols-2;
|
|
77
|
+
}
|
|
78
|
+
&--3 {
|
|
79
|
+
@apply md:grid-cols-3;
|
|
80
|
+
}
|
|
81
|
+
&--4 {
|
|
82
|
+
@apply sm:grid-cols-2 lg:grid-cols-4;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&--with-featured-image {
|
|
86
|
+
@apply flex-col h-fit;
|
|
87
|
+
|
|
88
|
+
&.link-card__columns{
|
|
89
|
+
&--2 {
|
|
90
|
+
@apply grid-cols-1 lg:grid-cols-2;
|
|
91
|
+
}
|
|
92
|
+
&--3 {
|
|
93
|
+
@apply grid-cols-1 xl:grid-cols-3;
|
|
94
|
+
}
|
|
95
|
+
&--4 {
|
|
96
|
+
@apply grid-cols-1 lg:grid-cols-2 xl:grid-cols-4;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
</style>
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="overflow-hidden">
|
|
3
|
-
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full bg-white py-[40px] flex gap-[10%]">
|
|
4
|
-
<div v-for="(header, index) in headerComponents" class="gap-4" :class="{'w-1/2': section.two_columns}">
|
|
3
|
+
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full bg-white py-[40px] flex flex-col lg:flex-row gap-8 xl:gap-[10%]">
|
|
4
|
+
<div v-for="(header, index) in headerComponents" class="gap-4" :class="{'lg:w-1/2': section.two_columns}">
|
|
5
5
|
<div class="rounded-xl px-[40px] text-center mb-6 max-w-[1280px] mx-auto" v-if="header">
|
|
6
6
|
<h3 class="text-[36px] text-gray-900 font-semibold">{{ header.title }}</h3>
|
|
7
7
|
<p v-if="header?.supporting_text" class="text-[20px] font-normal mt-2 text-gray-600 leading-[30px] max-w-[768px] mx-auto" v-html="header.supporting_text"></p>
|
|
8
8
|
</div>
|
|
9
9
|
<img v-if="header?.featured_image"
|
|
10
10
|
:src="header?.featured_image"
|
|
11
|
-
class="rounded-
|
|
11
|
+
class="rounded-xl md:rounded-3xl w-full h-[300px] lg:h-[480px] object-cover mb-6"
|
|
12
12
|
alt="Feature"/>
|
|
13
13
|
<div v-if="linkComponents[index]" class="flex w-full">
|
|
14
|
-
<div :class="{'grid grid-cols-2 gap-x-[100px]': !section.two_columns, 'flex flex-col gap-4 w-full': section.two_columns}">
|
|
14
|
+
<div :class="{'grid lg:grid-cols-2 gap-x-[100px]': !section.two_columns, 'flex flex-col gap-4 w-full': section.two_columns}">
|
|
15
15
|
<div v-for="(link, index) in linkComponents[index].data" class="relative bg-white hover:bg-gray-100 p-2 rounded-lg w-full">
|
|
16
16
|
<a
|
|
17
17
|
v-if="link.url"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="overflow-hidden mt-4">
|
|
3
|
-
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full pt-4 mb-4 flex gap-16 items-center" :class="{'flex-row-reverse mt-6 !mb-10': section?.revert, 'justify-center': section?.center }">
|
|
4
|
-
<div class="max-w-[800px] py-4" :class="{'!max-w-full w-full': section?.is_full_width
|
|
3
|
+
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full pt-4 mb-4 flex gap-8 lg:gap-16 items-center flex-col-reverse lg:flex-row" :class="{'[&]:flex-col [&]:lg:flex-row-reverse mt-6 !mb-10': section?.revert, 'justify-center': section?.center, 'md:!px-0 !ml-0 justify-end': section?.align_left }">
|
|
4
|
+
<div class="max-w-[800px] lg:py-4" :class="{'!max-w-full w-full': section?.is_full_width }" v-if="component?.title || component?.paragraph" ref="leftColumn">
|
|
5
5
|
<h3 class="text-[36px] text-gray-900 font-semibold" v-if="component?.title">
|
|
6
6
|
{{ component.title }}
|
|
7
7
|
</h3>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
</div>
|
|
15
15
|
</div>
|
|
16
16
|
</div>
|
|
17
|
-
<div class="w-full max-w-[536px] rounded-
|
|
17
|
+
<div class="w-full min-w-[300px] max-w-[536px] rounded-xl md:rounded-3xl overflow-hidden" v-if="component?.featured_image" ref="rightColumn">
|
|
18
18
|
<div v-if="component?.source_type === 'video'" class="w-full h-full relative">
|
|
19
19
|
<video
|
|
20
20
|
@click="togglePlayPause"
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
@click="togglePlayPause">
|
|
31
31
|
</PlayButton>
|
|
32
32
|
</div>
|
|
33
|
-
<img v-else :src="component?.featured_image" alt="Feature Image" class="w-full h-full object-cover rounded-
|
|
33
|
+
<img v-else :src="component?.featured_image" alt="Feature Image" class="w-full h-full object-cover rounded-xl md:rounded-3xl"/>
|
|
34
34
|
</div>
|
|
35
35
|
</div>
|
|
36
36
|
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="w-full bg-navy-800 py-10 relative lg:h-[336px]" :class="{'lg:!h-[266px]' : section?.as_cta}">
|
|
3
|
-
<LeftVector class="absolute left-0 top-0" v-if="section?.as_cta"></LeftVector>
|
|
3
|
+
<LeftVector class="absolute left-0 top-0 h-full max-w-full" v-if="section?.as_cta"></LeftVector>
|
|
4
4
|
<div class="max-w-[1640px] md:px-[120px] mx-auto w-full">
|
|
5
5
|
<div class="max-md:mx-[30px] 1xl:mx-0 relative z-10" :class="{'text-center flex flex-col items-center': section?.as_cta}">
|
|
6
6
|
<div v-for="(component, index) in section.components" class="w-full md:w-3/4">
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="rounded-[48px] 1xl:max-w-[1824px] mx-auto w-full">
|
|
2
|
+
<div class="rounded-3xl md:rounded-[48px] 1xl:max-w-[1824px] mx-auto w-full">
|
|
3
3
|
<div v-if="section.hasOwnProperty('components') > 0 && section.components.length > 0"
|
|
4
4
|
class="md:px-[90px]"
|
|
5
5
|
:class="{'flex flex-col items-center text-center': headerComponent?.center, 'mb-[64px]': hasFeaturedImage}">
|
|
6
|
-
<div class="bg-navy-50 rounded-[48px] relative pt-[164px] px-[120px]" :class="{'flex flex-col items-center text-center': headerComponent?.text_center}">
|
|
7
|
-
<h3 class="text-[48px] font-semibold text-gray-900 w-full max-w-[800px]
|
|
6
|
+
<div class="bg-navy-50 rounded-3xl md:rounded-[48px] relative pt-16 md:pt-28 lg:pt-[164px] px-8 md:px-24 lg:px-[120px]" :class="{'flex flex-col items-center text-center': headerComponent?.text_center}">
|
|
7
|
+
<h3 class="text-4xl md:text-5xl lg:text-[48px] lg:leading-[60px] font-semibold text-gray-900 w-full max-w-[800px] tracking-[-1px]">{{ headerComponent.title }}</h3>
|
|
8
8
|
<h3 class="text-xl font-normal text-gray-600 mt-3 w-full max-w-[800px]" :class="{'pb-[100px]': !hasFeaturedImage}">{{ headerComponent.supporting_text }}</h3>
|
|
9
9
|
<div class="flex gap-3 mt-8 flex-col lg:flex-row"
|
|
10
10
|
v-if="headerComponent?.secondary_button?.show || headerComponent?.primary_button?.show">
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
v-if="hasFeaturedImage"
|
|
27
27
|
:src="section.components[0]?.featured_image"
|
|
28
28
|
alt="Card Image"
|
|
29
|
-
class="w-full max-w-[1632px] h-[480px] object-cover rounded-[48px] relative top-[64px]"
|
|
29
|
+
class="w-full max-w-[1632px] h-[480px] object-cover rounded-3xl md:rounded-[48px] relative top-[64px]"
|
|
30
30
|
/>
|
|
31
31
|
</div>
|
|
32
32
|
</div>
|