cinqcinqdev-seo 0.1.71 → 0.1.73
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 +39 -2
- package/dist/module.json +1 -1
- package/dist/runtime/assets/admin-tw.css +1 -1
- package/dist/runtime/components/admin-cms/DynamicRenderer.vue +16 -2
- package/dist/runtime/components/sections/{BlogHero.vue → cinqcinq/BlogHero.vue} +35 -3
- package/dist/runtime/components/sections/{CallToAction.vue → cinqcinq/CallToAction.vue} +35 -3
- package/dist/runtime/components/sections/{ContactForm.vue → cinqcinq/ContactForm.vue} +34 -2
- package/dist/runtime/components/sections/{FAQ.vue → cinqcinq/FAQ.vue} +35 -3
- package/dist/runtime/components/sections/{Features.vue → cinqcinq/Features.vue} +35 -3
- package/dist/runtime/components/sections/{HeroSection.vue → cinqcinq/HeroSection.vue} +11 -0
- package/dist/runtime/components/sections/{Newsletter.vue → cinqcinq/Newsletter.vue} +35 -3
- package/dist/runtime/components/sections/{Pricing.vue → cinqcinq/Pricing.vue} +35 -3
- package/dist/runtime/components/sections/{Process.vue → cinqcinq/Process.vue} +35 -3
- package/dist/runtime/components/sections/{Quote.vue → cinqcinq/Quote.vue} +35 -3
- package/dist/runtime/components/sections/{RichText.vue → cinqcinq/RichText.vue} +32 -4
- package/dist/runtime/components/sections/{ServiceGrid.vue → cinqcinq/ServiceGrid.vue} +35 -3
- package/dist/runtime/components/sections/{Testimonials.vue → cinqcinq/Testimonials.vue} +35 -3
- package/dist/runtime/components/sections/{TextVisual.vue → cinqcinq/TextVisual.vue} +39 -3
- package/dist/runtime/components/sections/swiss-style/BlogHero.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/BlogHero.vue +146 -0
- package/dist/runtime/components/sections/swiss-style/BlogHero.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/CallToAction.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/CallToAction.vue +138 -0
- package/dist/runtime/components/sections/swiss-style/CallToAction.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Comparison.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Comparison.vue +280 -0
- package/dist/runtime/components/sections/swiss-style/Comparison.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/ContactForm.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/ContactForm.vue +173 -0
- package/dist/runtime/components/sections/swiss-style/ContactForm.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/DataTable.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/DataTable.vue +245 -0
- package/dist/runtime/components/sections/swiss-style/DataTable.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/FAQ.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/FAQ.vue +107 -0
- package/dist/runtime/components/sections/swiss-style/FAQ.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Features.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Features.vue +103 -0
- package/dist/runtime/components/sections/swiss-style/Features.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/HeroFan.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/HeroFan.vue +108 -0
- package/dist/runtime/components/sections/swiss-style/HeroFan.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/HeroSection.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/HeroSection.vue +190 -0
- package/dist/runtime/components/sections/swiss-style/HeroSection.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/HeroSlider.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/HeroSlider.vue +138 -0
- package/dist/runtime/components/sections/swiss-style/HeroSlider.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Newsletter.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Newsletter.vue +125 -0
- package/dist/runtime/components/sections/swiss-style/Newsletter.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Pricing.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Pricing.vue +148 -0
- package/dist/runtime/components/sections/swiss-style/Pricing.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Process.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Process.vue +124 -0
- package/dist/runtime/components/sections/swiss-style/Process.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Quote.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Quote.vue +130 -0
- package/dist/runtime/components/sections/swiss-style/Quote.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/RelatedPages.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/RelatedPages.vue +212 -0
- package/dist/runtime/components/sections/swiss-style/RelatedPages.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/RichText.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/RichText.vue +100 -0
- package/dist/runtime/components/sections/swiss-style/RichText.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/ServiceGrid.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/ServiceGrid.vue +121 -0
- package/dist/runtime/components/sections/swiss-style/ServiceGrid.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Testimonials.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/Testimonials.vue +126 -0
- package/dist/runtime/components/sections/swiss-style/Testimonials.vue.d.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/TextVisual.d.vue.ts +3 -0
- package/dist/runtime/components/sections/swiss-style/TextVisual.vue +146 -0
- package/dist/runtime/components/sections/swiss-style/TextVisual.vue.d.ts +3 -0
- package/dist/runtime/composables/useAdminSections.js +75 -37
- package/dist/runtime/composables/useAdminSettings.d.ts +1 -0
- package/dist/runtime/pages/admin/editor/[id].vue +15 -1
- package/dist/runtime/pages/admin/setup.vue +77 -2
- package/package.json +1 -1
- /package/dist/runtime/components/sections/{BlogHero.d.vue.ts → cinqcinq/BlogHero.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{BlogHero.vue.d.ts → cinqcinq/BlogHero.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{CallToAction.d.vue.ts → cinqcinq/CallToAction.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{CallToAction.vue.d.ts → cinqcinq/CallToAction.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{Comparison.d.vue.ts → cinqcinq/Comparison.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{Comparison.vue → cinqcinq/Comparison.vue} +0 -0
- /package/dist/runtime/components/sections/{Comparison.vue.d.ts → cinqcinq/Comparison.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{ContactForm.d.vue.ts → cinqcinq/ContactForm.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{ContactForm.vue.d.ts → cinqcinq/ContactForm.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{DataTable.d.vue.ts → cinqcinq/DataTable.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{DataTable.vue → cinqcinq/DataTable.vue} +0 -0
- /package/dist/runtime/components/sections/{DataTable.vue.d.ts → cinqcinq/DataTable.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{FAQ.d.vue.ts → cinqcinq/FAQ.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{FAQ.vue.d.ts → cinqcinq/FAQ.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{Features.d.vue.ts → cinqcinq/Features.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{Features.vue.d.ts → cinqcinq/Features.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{HeroFan.d.vue.ts → cinqcinq/HeroFan.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{HeroFan.vue → cinqcinq/HeroFan.vue} +0 -0
- /package/dist/runtime/components/sections/{HeroFan.vue.d.ts → cinqcinq/HeroFan.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{HeroSection.d.vue.ts → cinqcinq/HeroSection.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{HeroSection.vue.d.ts → cinqcinq/HeroSection.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{HeroSlider.d.vue.ts → cinqcinq/HeroSlider.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{HeroSlider.vue → cinqcinq/HeroSlider.vue} +0 -0
- /package/dist/runtime/components/sections/{HeroSlider.vue.d.ts → cinqcinq/HeroSlider.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{Newsletter.d.vue.ts → cinqcinq/Newsletter.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{Newsletter.vue.d.ts → cinqcinq/Newsletter.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{Pricing.d.vue.ts → cinqcinq/Pricing.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{Pricing.vue.d.ts → cinqcinq/Pricing.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{Process.d.vue.ts → cinqcinq/Process.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{Process.vue.d.ts → cinqcinq/Process.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{Quote.d.vue.ts → cinqcinq/Quote.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{Quote.vue.d.ts → cinqcinq/Quote.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{RelatedPages.d.vue.ts → cinqcinq/RelatedPages.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{RelatedPages.vue → cinqcinq/RelatedPages.vue} +0 -0
- /package/dist/runtime/components/sections/{RelatedPages.vue.d.ts → cinqcinq/RelatedPages.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{RichText.d.vue.ts → cinqcinq/RichText.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{RichText.vue.d.ts → cinqcinq/RichText.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{ServiceGrid.d.vue.ts → cinqcinq/ServiceGrid.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{ServiceGrid.vue.d.ts → cinqcinq/ServiceGrid.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{Testimonials.d.vue.ts → cinqcinq/Testimonials.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{Testimonials.vue.d.ts → cinqcinq/Testimonials.vue.d.ts} +0 -0
- /package/dist/runtime/components/sections/{TextVisual.d.vue.ts → cinqcinq/TextVisual.d.vue.ts} +0 -0
- /package/dist/runtime/components/sections/{TextVisual.vue.d.ts → cinqcinq/TextVisual.vue.d.ts} +0 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<section ref="sectionEl" :class="[sectionPad, isVisible ? 'sv-in' : 'sv-out']" :dir="textDirection" :style="[{ backgroundColor: bgColor, color: textColor }, spacingStyle]">
|
|
3
|
+
|
|
4
|
+
<!-- SPLIT -->
|
|
5
|
+
<div v-if="layout === 'split'" :class="[containerClass, 'grid grid-cols-1 md:grid-cols-2 border divide-x', reverse ? 'md:[direction:rtl]' : '']" :style="{ borderColor: ca(textColor,'15') }">
|
|
6
|
+
<div class="p-10 md:p-14 flex flex-col justify-between" :style="{ direction: 'ltr' }">
|
|
7
|
+
<div>
|
|
8
|
+
<span v-if="badge" class="block text-[9px] font-black uppercase tracking-[0.5em] mb-6" :style="{ opacity: 0.35 }">{{ badge }}</span>
|
|
9
|
+
<component :is="titleTag" class="font-black uppercase leading-[0.88] mb-6" :style="{ fontSize: titleFontSize, letterSpacing: '-0.03em' }">{{ title }}</component>
|
|
10
|
+
<p :class="[bodyClass, 'leading-relaxed max-w-md']" :style="{ opacity: 0.55 }">{{ content }}</p>
|
|
11
|
+
</div>
|
|
12
|
+
<div v-if="ctas && ctas.length" class="flex flex-wrap gap-3 mt-10 pt-8 border-t" :style="{ borderColor: ca(textColor,'12') }">
|
|
13
|
+
<NuxtLink v-for="(cta, i) in ctas" :key="i" :to="cta.link || '#'"
|
|
14
|
+
class="inline-flex items-center gap-3 px-6 py-3 text-[11px] font-black uppercase tracking-widest transition-all hover:gap-6 border"
|
|
15
|
+
:style="i === 0 ? { backgroundColor: textColor, color: bgColor, borderColor: textColor } : { borderColor: ca(textColor,'40'), color: textColor }">
|
|
16
|
+
{{ cta.text }}<span>→</span>
|
|
17
|
+
</NuxtLink>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="overflow-hidden min-h-[300px]" :style="{ direction: 'ltr' }">
|
|
21
|
+
<img v-if="image" :src="image" :alt="imageAlt || title" class="w-full h-full object-cover" />
|
|
22
|
+
<div v-else class="w-full h-full" :style="{ backgroundColor: ca(textColor,'06') }"></div>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<!-- STACKED -->
|
|
27
|
+
<div v-else-if="layout === 'stacked'" :class="[containerClass]">
|
|
28
|
+
<div class="border overflow-hidden mb-8" :style="{ borderColor: ca(textColor,'15'), height: '380px' }">
|
|
29
|
+
<img v-if="image" :src="image" class="w-full h-full object-cover" />
|
|
30
|
+
<div v-else class="w-full h-full" :style="{ backgroundColor: ca(textColor,'06') }"></div>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="grid md:grid-cols-2 gap-10 border-t pt-8" :style="{ borderColor: ca(textColor,'12') }">
|
|
33
|
+
<div>
|
|
34
|
+
<span v-if="badge" class="block text-[9px] font-black uppercase tracking-[0.5em] mb-4" :style="{ opacity: 0.35 }">{{ badge }}</span>
|
|
35
|
+
<component :is="titleTag" class="font-black uppercase leading-[0.88]" :style="{ fontSize: titleFontSize, letterSpacing: '-0.03em' }">{{ title }}</component>
|
|
36
|
+
</div>
|
|
37
|
+
<div>
|
|
38
|
+
<p :class="[bodyClass, 'leading-relaxed mb-6']" :style="{ opacity: 0.55 }">{{ content }}</p>
|
|
39
|
+
<div v-if="ctas && ctas.length" class="flex flex-wrap gap-3">
|
|
40
|
+
<NuxtLink v-for="(cta, i) in ctas" :key="i" :to="cta.link || '#'"
|
|
41
|
+
class="inline-flex items-center gap-3 px-6 py-3 text-[11px] font-black uppercase tracking-widest transition-all hover:gap-6 border"
|
|
42
|
+
:style="i === 0 ? { backgroundColor: textColor, color: bgColor, borderColor: textColor } : { borderColor: ca(textColor,'40'), color: textColor }">
|
|
43
|
+
{{ cta.text }}<span>→</span>
|
|
44
|
+
</NuxtLink>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<!-- WIDE (default) -->
|
|
51
|
+
<div v-else :class="[containerClass, 'grid grid-cols-1 md:grid-cols-2 border divide-x', reverse ? 'md:[direction:rtl]' : '']" :style="{ borderColor: ca(textColor,'15') }">
|
|
52
|
+
<div class="overflow-hidden min-h-[280px]" :style="{ direction: 'ltr' }">
|
|
53
|
+
<img v-if="image" :src="image" class="w-full h-full object-cover" />
|
|
54
|
+
<div v-else class="w-full h-full" :style="{ backgroundColor: ca(textColor,'06') }"></div>
|
|
55
|
+
</div>
|
|
56
|
+
<div class="p-10 md:p-14 flex flex-col justify-between" :style="{ direction: 'ltr' }">
|
|
57
|
+
<div>
|
|
58
|
+
<span v-if="badge" class="block text-[9px] font-black uppercase tracking-[0.5em] mb-6" :style="{ opacity: 0.35 }">{{ badge }}</span>
|
|
59
|
+
<component :is="titleTag" class="font-black uppercase leading-[0.88] mb-6" :style="{ fontSize: titleFontSize, letterSpacing: '-0.03em' }">{{ title }}</component>
|
|
60
|
+
<p :class="[bodyClass, 'leading-relaxed']" :style="{ opacity: 0.55 }">{{ content }}</p>
|
|
61
|
+
</div>
|
|
62
|
+
<div v-if="ctas && ctas.length" class="flex flex-wrap gap-3 mt-8 pt-8 border-t" :style="{ borderColor: ca(textColor,'12') }">
|
|
63
|
+
<NuxtLink v-for="(cta, i) in ctas" :key="i" :to="cta.link || '#'"
|
|
64
|
+
class="inline-flex items-center gap-3 px-6 py-3 text-[11px] font-black uppercase tracking-widest transition-all hover:gap-6 border"
|
|
65
|
+
:style="i === 0 ? { backgroundColor: textColor, color: bgColor, borderColor: textColor } : { borderColor: ca(textColor,'40'), color: textColor }">
|
|
66
|
+
{{ cta.text }}<span>→</span>
|
|
67
|
+
</NuxtLink>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
</section>
|
|
73
|
+
</template>
|
|
74
|
+
|
|
75
|
+
<script setup>
|
|
76
|
+
const ca = (c, h) => {
|
|
77
|
+
const m = c?.match(/rgba\((var\([^)]+\)),\s*[\d.]+\)/);
|
|
78
|
+
return m ? `rgba(${m[1]}, ${Math.round(parseInt(h, 16) / 255 * 1e3) / 1e3})` : (c || "") + h;
|
|
79
|
+
};
|
|
80
|
+
import { ref, computed, onMounted } from "vue";
|
|
81
|
+
const props = defineProps({
|
|
82
|
+
layout: { type: String, default: "split" },
|
|
83
|
+
badge: { type: String, default: "" },
|
|
84
|
+
title: { type: String, default: "" },
|
|
85
|
+
titleTag: { type: String, default: "h2" },
|
|
86
|
+
content: { type: String, default: "" },
|
|
87
|
+
image: { type: String, default: "" },
|
|
88
|
+
imageAlt: { type: String, default: "" },
|
|
89
|
+
reverse: { type: Boolean, default: false },
|
|
90
|
+
ctas: { type: Array, default: () => [] },
|
|
91
|
+
bgColor: { type: String, default: "rgba(var(--body-bg), 1)" },
|
|
92
|
+
textColor: { type: String, default: "rgba(var(--text-color), 1)" },
|
|
93
|
+
spacing: { type: String, default: "normal" },
|
|
94
|
+
radius: { type: String, default: "sharp" },
|
|
95
|
+
textDirection: { type: String, default: "ltr" },
|
|
96
|
+
contentWidth: { type: String, default: "normal" },
|
|
97
|
+
textSize: { type: String, default: "md" },
|
|
98
|
+
paddingTop: { type: String, default: "" },
|
|
99
|
+
paddingBottom: { type: String, default: "" },
|
|
100
|
+
marginTop: { type: String, default: "" },
|
|
101
|
+
marginBottom: { type: String, default: "" },
|
|
102
|
+
paddingX: { type: String, default: "" }
|
|
103
|
+
});
|
|
104
|
+
const sectionEl = ref(null);
|
|
105
|
+
const isVisible = ref(false);
|
|
106
|
+
onMounted(() => {
|
|
107
|
+
const obs = new IntersectionObserver(([e]) => {
|
|
108
|
+
if (e.isIntersecting) {
|
|
109
|
+
isVisible.value = true;
|
|
110
|
+
obs.disconnect();
|
|
111
|
+
}
|
|
112
|
+
}, { threshold: 0.06 });
|
|
113
|
+
if (sectionEl.value) obs.observe(sectionEl.value);
|
|
114
|
+
setTimeout(() => {
|
|
115
|
+
if (!isVisible.value) isVisible.value = true;
|
|
116
|
+
}, 300);
|
|
117
|
+
});
|
|
118
|
+
const sectionPad = computed(() => ({ compact: "py-8 px-4 md:px-8", normal: "py-14 px-8 md:px-16", spacious: "py-24 px-8 md:px-16" })[props.spacing] || "py-14 px-8 md:px-16");
|
|
119
|
+
const containerClass = computed(() => ({ narrow: "max-w-3xl mx-auto", normal: "max-w-6xl mx-auto", wide: "max-w-7xl mx-auto", full: "max-w-full" })[props.contentWidth] || "max-w-6xl mx-auto");
|
|
120
|
+
const titleFontSize = computed(() => ({ sm: "clamp(1rem,1.5vw,1.3rem)", md: "clamp(1.5rem,2.5vw,2rem)", lg: "clamp(2rem,4vw,3.5rem)" })[props.textSize] || "clamp(1.5rem,2.5vw,2rem)");
|
|
121
|
+
const bodyClass = computed(() => ({ sm: "text-xs", md: "text-sm", lg: "text-base" })[props.textSize] || "text-sm");
|
|
122
|
+
const imageContainerClass = computed(() => ({ sm: "aspect-video", md: "aspect-[4/3]", lg: "aspect-square" })["md"] || "aspect-[4/3]");
|
|
123
|
+
const SM = { none: "0", xs: "8px", sm: "24px", md: "48px", lg: "80px", xl: "128px", "-xs": "-8px", "-sm": "-24px", "-md": "-48px", "-lg": "-80px", "-xl": "-128px" };
|
|
124
|
+
const spacingStyle = computed(() => {
|
|
125
|
+
const s = {};
|
|
126
|
+
if (props.paddingTop && SM[props.paddingTop]) s.paddingTop = SM[props.paddingTop];
|
|
127
|
+
if (props.paddingBottom && SM[props.paddingBottom]) s.paddingBottom = SM[props.paddingBottom];
|
|
128
|
+
if (props.marginTop && SM[props.marginTop]) s.marginTop = SM[props.marginTop];
|
|
129
|
+
if (props.marginBottom && SM[props.marginBottom]) s.marginBottom = SM[props.marginBottom];
|
|
130
|
+
if (props.paddingX && SM[props.paddingX]) {
|
|
131
|
+
const v = SM[props.paddingX];
|
|
132
|
+
if (v.startsWith("-")) {
|
|
133
|
+
s.marginLeft = v;
|
|
134
|
+
s.marginRight = v;
|
|
135
|
+
} else {
|
|
136
|
+
s.paddingLeft = v;
|
|
137
|
+
s.paddingRight = v;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return s;
|
|
141
|
+
});
|
|
142
|
+
</script>
|
|
143
|
+
|
|
144
|
+
<style scoped>
|
|
145
|
+
.sv-out{opacity:0;transform:translateY(16px)}.sv-in{opacity:1;transform:none;transition:opacity .6s ease,transform .6s ease}
|
|
146
|
+
</style>
|
|
@@ -104,6 +104,7 @@ export const DEFAULT_SECTIONS = {
|
|
|
104
104
|
paddingBottom: "",
|
|
105
105
|
marginTop: "",
|
|
106
106
|
marginBottom: "",
|
|
107
|
+
paddingX: "",
|
|
107
108
|
overlay: "auto",
|
|
108
109
|
overlayDirection: "to top",
|
|
109
110
|
overlayStrength: "medium",
|
|
@@ -165,7 +166,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
165
166
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
166
167
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
167
168
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
168
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
169
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
170
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
169
171
|
}
|
|
170
172
|
},
|
|
171
173
|
HeroSlider: {
|
|
@@ -195,7 +197,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
195
197
|
paddingTop: "",
|
|
196
198
|
paddingBottom: "",
|
|
197
199
|
marginTop: "",
|
|
198
|
-
marginBottom: ""
|
|
200
|
+
marginBottom: "",
|
|
201
|
+
paddingX: ""
|
|
199
202
|
},
|
|
200
203
|
fields: {
|
|
201
204
|
slides: { type: "list", label: "Slides", itemLabel: "title", itemFields: {
|
|
@@ -247,7 +250,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
247
250
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
248
251
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
249
252
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
250
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
253
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
254
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
251
255
|
}
|
|
252
256
|
},
|
|
253
257
|
HeroFan: {
|
|
@@ -276,7 +280,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
276
280
|
paddingTop: "",
|
|
277
281
|
paddingBottom: "",
|
|
278
282
|
marginTop: "",
|
|
279
|
-
marginBottom: ""
|
|
283
|
+
marginBottom: "",
|
|
284
|
+
paddingX: ""
|
|
280
285
|
},
|
|
281
286
|
fields: {
|
|
282
287
|
titleTag: { type: "select", label: "SEO Tag", options: tagOptions },
|
|
@@ -310,7 +315,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
310
315
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
311
316
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
312
317
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
313
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
318
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
319
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
314
320
|
}
|
|
315
321
|
},
|
|
316
322
|
TextVisual: {
|
|
@@ -339,7 +345,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
339
345
|
paddingTop: "",
|
|
340
346
|
paddingBottom: "",
|
|
341
347
|
marginTop: "",
|
|
342
|
-
marginBottom: ""
|
|
348
|
+
marginBottom: "",
|
|
349
|
+
paddingX: ""
|
|
343
350
|
},
|
|
344
351
|
fields: {
|
|
345
352
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -378,7 +385,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
378
385
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
379
386
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
380
387
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
381
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
388
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
389
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
382
390
|
}
|
|
383
391
|
},
|
|
384
392
|
ServiceGrid: {
|
|
@@ -404,7 +412,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
404
412
|
paddingTop: "",
|
|
405
413
|
paddingBottom: "",
|
|
406
414
|
marginTop: "",
|
|
407
|
-
marginBottom: ""
|
|
415
|
+
marginBottom: "",
|
|
416
|
+
paddingX: ""
|
|
408
417
|
},
|
|
409
418
|
fields: {
|
|
410
419
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -436,7 +445,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
436
445
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
437
446
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
438
447
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
439
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
448
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
449
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
440
450
|
}
|
|
441
451
|
},
|
|
442
452
|
Features: {
|
|
@@ -455,7 +465,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
455
465
|
paddingTop: "",
|
|
456
466
|
paddingBottom: "",
|
|
457
467
|
marginTop: "",
|
|
458
|
-
marginBottom: ""
|
|
468
|
+
marginBottom: "",
|
|
469
|
+
paddingX: ""
|
|
459
470
|
},
|
|
460
471
|
fields: {
|
|
461
472
|
title: { type: "text", label: "Section Title", i18n: true },
|
|
@@ -473,7 +484,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
473
484
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
474
485
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
475
486
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
476
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
487
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
488
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
477
489
|
}
|
|
478
490
|
},
|
|
479
491
|
FAQ: {
|
|
@@ -492,7 +504,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
492
504
|
paddingTop: "",
|
|
493
505
|
paddingBottom: "",
|
|
494
506
|
marginTop: "",
|
|
495
|
-
marginBottom: ""
|
|
507
|
+
marginBottom: "",
|
|
508
|
+
paddingX: ""
|
|
496
509
|
},
|
|
497
510
|
fields: {
|
|
498
511
|
title: { type: "text", label: "Title", i18n: true },
|
|
@@ -510,7 +523,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
510
523
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
511
524
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
512
525
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
513
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
526
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
527
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
514
528
|
}
|
|
515
529
|
},
|
|
516
530
|
Process: {
|
|
@@ -533,7 +547,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
533
547
|
paddingTop: "",
|
|
534
548
|
paddingBottom: "",
|
|
535
549
|
marginTop: "",
|
|
536
|
-
marginBottom: ""
|
|
550
|
+
marginBottom: "",
|
|
551
|
+
paddingX: ""
|
|
537
552
|
},
|
|
538
553
|
fields: {
|
|
539
554
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -562,7 +577,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
562
577
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
563
578
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
564
579
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
565
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
580
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
581
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
566
582
|
}
|
|
567
583
|
},
|
|
568
584
|
Testimonials: {
|
|
@@ -585,7 +601,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
585
601
|
paddingTop: "",
|
|
586
602
|
paddingBottom: "",
|
|
587
603
|
marginTop: "",
|
|
588
|
-
marginBottom: ""
|
|
604
|
+
marginBottom: "",
|
|
605
|
+
paddingX: ""
|
|
589
606
|
},
|
|
590
607
|
fields: {
|
|
591
608
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -616,7 +633,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
616
633
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
617
634
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
618
635
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
619
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
636
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
637
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
620
638
|
}
|
|
621
639
|
},
|
|
622
640
|
Pricing: {
|
|
@@ -639,7 +657,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
639
657
|
paddingTop: "",
|
|
640
658
|
paddingBottom: "",
|
|
641
659
|
marginTop: "",
|
|
642
|
-
marginBottom: ""
|
|
660
|
+
marginBottom: "",
|
|
661
|
+
paddingX: ""
|
|
643
662
|
},
|
|
644
663
|
fields: {
|
|
645
664
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -670,7 +689,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
670
689
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
671
690
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
672
691
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
673
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
692
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
693
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
674
694
|
}
|
|
675
695
|
},
|
|
676
696
|
ContactForm: {
|
|
@@ -692,7 +712,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
692
712
|
paddingTop: "",
|
|
693
713
|
paddingBottom: "",
|
|
694
714
|
marginTop: "",
|
|
695
|
-
marginBottom: ""
|
|
715
|
+
marginBottom: "",
|
|
716
|
+
paddingX: ""
|
|
696
717
|
},
|
|
697
718
|
fields: {
|
|
698
719
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -714,7 +735,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
714
735
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
715
736
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
716
737
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
717
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
738
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
739
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
718
740
|
}
|
|
719
741
|
},
|
|
720
742
|
// ── Blog sections ─────────────────────────────────────────────────────────
|
|
@@ -743,7 +765,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
743
765
|
paddingTop: "",
|
|
744
766
|
paddingBottom: "",
|
|
745
767
|
marginTop: "",
|
|
746
|
-
marginBottom: ""
|
|
768
|
+
marginBottom: "",
|
|
769
|
+
paddingX: ""
|
|
747
770
|
},
|
|
748
771
|
fields: {
|
|
749
772
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -775,7 +798,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
775
798
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
776
799
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
777
800
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
778
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
801
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
802
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
779
803
|
}
|
|
780
804
|
},
|
|
781
805
|
RichText: {
|
|
@@ -798,7 +822,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
798
822
|
paddingTop: "",
|
|
799
823
|
paddingBottom: "",
|
|
800
824
|
marginTop: "",
|
|
801
|
-
marginBottom: ""
|
|
825
|
+
marginBottom: "",
|
|
826
|
+
paddingX: ""
|
|
802
827
|
},
|
|
803
828
|
fields: {
|
|
804
829
|
layout: { type: "cards", label: "Width", options: [
|
|
@@ -826,7 +851,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
826
851
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
827
852
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
828
853
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
829
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
854
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
855
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
830
856
|
}
|
|
831
857
|
},
|
|
832
858
|
CallToAction: {
|
|
@@ -851,7 +877,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
851
877
|
paddingTop: "",
|
|
852
878
|
paddingBottom: "",
|
|
853
879
|
marginTop: "",
|
|
854
|
-
marginBottom: ""
|
|
880
|
+
marginBottom: "",
|
|
881
|
+
paddingX: ""
|
|
855
882
|
},
|
|
856
883
|
fields: {
|
|
857
884
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -876,7 +903,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
876
903
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
877
904
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
878
905
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
879
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
906
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
907
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
880
908
|
}
|
|
881
909
|
},
|
|
882
910
|
Quote: {
|
|
@@ -897,7 +925,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
897
925
|
paddingTop: "",
|
|
898
926
|
paddingBottom: "",
|
|
899
927
|
marginTop: "",
|
|
900
|
-
marginBottom: ""
|
|
928
|
+
marginBottom: "",
|
|
929
|
+
paddingX: ""
|
|
901
930
|
},
|
|
902
931
|
fields: {
|
|
903
932
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -918,7 +947,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
918
947
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
919
948
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
920
949
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
921
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
950
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
951
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
922
952
|
}
|
|
923
953
|
},
|
|
924
954
|
DataTable: {
|
|
@@ -960,7 +990,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
960
990
|
paddingTop: "",
|
|
961
991
|
paddingBottom: "",
|
|
962
992
|
marginTop: "",
|
|
963
|
-
marginBottom: ""
|
|
993
|
+
marginBottom: "",
|
|
994
|
+
paddingX: ""
|
|
964
995
|
},
|
|
965
996
|
fields: {
|
|
966
997
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -1006,7 +1037,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
1006
1037
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
1007
1038
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
1008
1039
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
1009
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
1040
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
1041
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
1010
1042
|
}
|
|
1011
1043
|
},
|
|
1012
1044
|
Comparison: {
|
|
@@ -1036,7 +1068,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
1036
1068
|
paddingTop: "",
|
|
1037
1069
|
paddingBottom: "",
|
|
1038
1070
|
marginTop: "",
|
|
1039
|
-
marginBottom: ""
|
|
1071
|
+
marginBottom: "",
|
|
1072
|
+
paddingX: ""
|
|
1040
1073
|
},
|
|
1041
1074
|
fields: {
|
|
1042
1075
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -1075,7 +1108,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
1075
1108
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
1076
1109
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
1077
1110
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
1078
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
1111
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
1112
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
1079
1113
|
}
|
|
1080
1114
|
},
|
|
1081
1115
|
RelatedPages: {
|
|
@@ -1101,7 +1135,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
1101
1135
|
paddingTop: "",
|
|
1102
1136
|
paddingBottom: "",
|
|
1103
1137
|
marginTop: "",
|
|
1104
|
-
marginBottom: ""
|
|
1138
|
+
marginBottom: "",
|
|
1139
|
+
paddingX: ""
|
|
1105
1140
|
},
|
|
1106
1141
|
fields: {
|
|
1107
1142
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -1130,7 +1165,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
1130
1165
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
1131
1166
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
1132
1167
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
1133
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
1168
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
1169
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
1134
1170
|
}
|
|
1135
1171
|
},
|
|
1136
1172
|
Newsletter: {
|
|
@@ -1154,7 +1190,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
1154
1190
|
paddingTop: "",
|
|
1155
1191
|
paddingBottom: "",
|
|
1156
1192
|
marginTop: "",
|
|
1157
|
-
marginBottom: ""
|
|
1193
|
+
marginBottom: "",
|
|
1194
|
+
paddingX: ""
|
|
1158
1195
|
},
|
|
1159
1196
|
fields: {
|
|
1160
1197
|
layout: { type: "cards", label: "Layout", options: [
|
|
@@ -1178,7 +1215,8 @@ export const DEFAULT_SECTIONS = {
|
|
|
1178
1215
|
paddingTop: { type: "select", label: "Padding Top", options: paddingOptions },
|
|
1179
1216
|
paddingBottom: { type: "select", label: "Padding Bottom", options: paddingOptions },
|
|
1180
1217
|
marginTop: { type: "select", label: "Margin Top", options: marginOptions },
|
|
1181
|
-
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions }
|
|
1218
|
+
marginBottom: { type: "select", label: "Margin Bottom", options: marginOptions },
|
|
1219
|
+
paddingX: { type: "select", label: "Padding X", options: marginOptions }
|
|
1182
1220
|
}
|
|
1183
1221
|
}
|
|
1184
1222
|
};
|
|
@@ -62,7 +62,21 @@ const selectPage = (item, key, page2) => {
|
|
|
62
62
|
pagePickerOpen.value[key] = false;
|
|
63
63
|
trigger();
|
|
64
64
|
};
|
|
65
|
-
const
|
|
65
|
+
const themePrefix = computed(() => {
|
|
66
|
+
const t = adminSettings.settings.value?.theme || "";
|
|
67
|
+
if (!t) return "";
|
|
68
|
+
return t.split("-").map((s) => s[0].toUpperCase() + s.slice(1)).join("");
|
|
69
|
+
});
|
|
70
|
+
const resolveSection = (type) => {
|
|
71
|
+
const flat = vueApp.component(`Sections${type}`);
|
|
72
|
+
if (flat) return flat;
|
|
73
|
+
const prefix = themePrefix.value;
|
|
74
|
+
if (prefix) {
|
|
75
|
+
const themed = vueApp.component(`Sections${prefix}${type}`);
|
|
76
|
+
if (themed) return themed;
|
|
77
|
+
}
|
|
78
|
+
return vueApp.component(type) || null;
|
|
79
|
+
};
|
|
66
80
|
const { data: _rawPage } = await useAsyncData(`admin-edit-${pageId}`, async () => {
|
|
67
81
|
const { data } = await supabase.from(table).select("*").eq("id", pageId).maybeSingle();
|
|
68
82
|
return data;
|