@dcodegroup-au/page-builder 0.7.0 → 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.
Files changed (32) hide show
  1. package/dist/page-builder.css +283 -68
  2. package/dist/page-builder.es.js +247 -244
  3. package/dist/page-builder.umd.js +247 -244
  4. package/example/src/App.vue +89 -17
  5. package/example/src/pages/AboutUs.js +1 -1
  6. package/example/src/pages/OurCommitment.js +1 -1
  7. package/example/src/pages/OurHistory.js +1 -1
  8. package/package.json +1 -1
  9. package/src/components/builders/Links.vue +0 -1
  10. package/src/components/common/LinkedTo.vue +0 -2
  11. package/src/components/presenters/components/CarouselPresenter.vue +18 -4
  12. package/src/components/presenters/components/CollectionGridPresenter.vue +3 -3
  13. package/src/components/presenters/components/SliderPresenter.vue +3 -2
  14. package/src/components/presenters/modules/AccordionPricing.vue +5 -5
  15. package/src/components/presenters/modules/BulletPoints.vue +5 -5
  16. package/src/components/presenters/modules/Callout.vue +5 -5
  17. package/src/components/presenters/modules/CollectionCarousel.vue +1 -1
  18. package/src/components/presenters/modules/ContactUs.vue +1 -1
  19. package/src/components/presenters/modules/FAQ.vue +3 -2
  20. package/src/components/presenters/modules/HeroHeader.vue +1 -1
  21. package/src/components/presenters/modules/HorizontalTabs.vue +4 -4
  22. package/src/components/presenters/modules/LinkCard.vue +39 -5
  23. package/src/components/presenters/modules/LinkList.vue +4 -4
  24. package/src/components/presenters/modules/Paragraph.vue +4 -4
  25. package/src/components/presenters/modules/QuickLinks.vue +1 -1
  26. package/src/components/presenters/modules/StandardHeader.vue +4 -4
  27. package/src/components/presenters/modules/TestimonialSlider.vue +4 -4
  28. package/src/components/presenters/modules/Timeline.vue +2 -2
  29. package/src/components/presenters/modules/TwoColumnsImageContent.vue +7 -16
  30. package/src/components/presenters/modules/VTabs.vue +1 -1
  31. package/tailwind.config.js +3 -0
  32. /package/example/src/pages/{AdvisoryService.js → AdvisoryServices.js} +0 -0
@@ -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/AdvisoryService.js";
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
- {{ JSON.stringify(LandingPage) }}
113
- <div style="margin: 40px 0">
114
- <h1 style="margin-bottom: 20px; font-size: 50px;">Page Render</h1>
115
- <PageRender :page="LandingPage"/>
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;">Slider Edit</h1>
119
- <ItemEdit :item="slide" :sites="sites"/>
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;">Link Card Edit</h1>
123
- <LinkCardEdit :item="linkCardItem" :sites="sites"/>
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;">Vertical Tab Edit</h1>
127
- <ItemEdit :item="tab" :sites="sites"/>
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;">Page Builder</h1>
131
- <PageBuilder v-model="LandingPage" :breadcrumbs="breadcrumbs" :forms="forms" :sites="sites"/>
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/img/what-we-do/best-start-best-life/divided-01.jpg"
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://dev.elaa.com/img/reconciliation/learn-more.png",
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://dev.elaa.com/img/history/hesta-child-care.png",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcodegroup-au/page-builder",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "exports": {
5
5
  ".": {
6
6
  "import": "./dist/page-builder.es.js"
@@ -151,7 +151,6 @@ const props = defineProps({
151
151
  }
152
152
  });
153
153
 
154
- console.log('Links', props);
155
154
  const options = [{value: 'content', label: 'Content'}, {value: 'image_only', label: 'Image Only'}];
156
155
 
157
156
  const componentData = ref(props.data.component);
@@ -48,8 +48,6 @@ const props = defineProps({
48
48
  options: { type: Array, required: false, default: ["site-content", "external-page", 'download', 'form'] },
49
49
  });
50
50
 
51
- console.log('LinkedTo', props);
52
-
53
51
  const toReadableWords = (input) => {
54
52
  return input
55
53
  .split('-') // Split the string by hyphens
@@ -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 flex-1 mr-6 min-w-[480px]"
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-[16px]" :class="{'bg-gray-50 h-full flex flex-col justify-between': !hasBackground, 'bg-white': hasBackground}">
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 "vue";
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-[16px]"
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-[16px] mb-4"
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-[16px] mb-4" alt="No Available" src="@/assets/img/no_image_available.jpeg">
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 py-[40px] flex justify-center gap-[10%] ">
3
- <div class="bg-pale-100 flex w-full rounded-[20px] p-8 gap-6">
4
- <div class="w-1/2">
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-[16px] overflow-hidden">
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="w-1/2 bg-white rounded-[16px] overflow-hidden flex flex-col items-center justify-center px-12">
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-[24px]"
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 gap-8': section?.two_column}"
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" class="mt-8">
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="{'!grid grid-cols-3' :!headerComponent?.featured_image && !section?.two_column}">
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-[24px] h-full"/>
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-[24px] h-full"
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-[24px] flex items-center justify-center flex-col"
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-[16px] flex justify-center w-full" v-if="headerComponent">
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
- <div v-for="(header, index) in headerComponents" class="gap-4 max-w-[800px] w-full">
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="flex gap-8 w-full" ref="rightColumn" :class="{'flex-col h-fit': headerComponent?.featured_image}">
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-[24px] w-full"
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-[24px] w-full h-[480px] object-cover mb-6"
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, '!py-8': component?.featured_image }" v-if="component?.title || component?.paragraph" ref="leftColumn">
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-[24px] overflow-hidden" v-if="component?.featured_image" ref="rightColumn">
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-[24px]"/>
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] leading-[60px] tracking-[-1px]">{{ headerComponent.title }}</h3>
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>
@@ -10,17 +10,17 @@
10
10
  :key="index"
11
11
  class="w-full flex-shrink-0 py-10"
12
12
  >
13
- <div class="flex space-x-16 max-w-[1640px] md:px-[120px] mx-auto w-full">
13
+ <div class="flex flex-col-reverse lg:flex-row gap-8 xl:gap-x-16 max-w-[1640px] md:px-[120px] mx-auto w-full">
14
14
  <article class="flex-1 flex flex-col justify-center gap-8">
15
15
  <span class="flex items-center gap-1">
16
16
  <template v-for="star in 5">
17
17
  <Star class="w-5 h-5 text-yellow-100"></Star>
18
18
  </template>
19
19
  </span>
20
- <h3 class="font-medium text-3xl leading-[38px]" v-html="feature.description"></h3>
20
+ <h3 class="font-medium text-2xl md:text-3xl md:leading-[38px]" v-html="feature.description"></h3>
21
21
  <p class="text-gray-600">{{ feature.title }}</p>
22
22
  </article>
23
- <div class="h-[480px] w-[560px]">
23
+ <div class="h-[480px] w-full md:w-[560px] lg:h-[300px] lg:w-[350px] xl:h-[480px] xl:w-[560px]">
24
24
  <img
25
25
  v-if="feature.featured_image"
26
26
  :src="feature.featured_image"
@@ -39,7 +39,7 @@
39
39
 
40
40
  <!-- Controls -->
41
41
  <footer class="flex max-w-[1640px] md:px-[120px] mx-auto w-full gap-4 relative">
42
- <div class="absolute bottom-[40px] left-[120px] w-full gap-4 flex">
42
+ <div class="absolute bottom-[40px] right-0 md:right-[120px] xl:left-[120px] gap-4 flex">
43
43
  <button
44
44
  type="button"
45
45
  @click="prevSlide"