cinqcinqdev-seo 0.1.13 → 0.1.15

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 (31) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/assets/admin-tw.css +1 -1
  3. package/dist/runtime/components/admin/Sidebar.vue +41 -13
  4. package/dist/runtime/components/sections/ContactForm.d.vue.ts +10 -0
  5. package/dist/runtime/components/sections/ContactForm.vue +134 -0
  6. package/dist/runtime/components/sections/ContactForm.vue.d.ts +10 -0
  7. package/dist/runtime/components/sections/FAQ.d.vue.ts +3 -0
  8. package/dist/runtime/components/sections/FAQ.vue +42 -0
  9. package/dist/runtime/components/sections/FAQ.vue.d.ts +3 -0
  10. package/dist/runtime/components/sections/Features.d.vue.ts +3 -0
  11. package/dist/runtime/components/sections/Features.vue +36 -0
  12. package/dist/runtime/components/sections/Features.vue.d.ts +3 -0
  13. package/dist/runtime/components/sections/HeroSection.d.vue.ts +3 -0
  14. package/dist/runtime/components/sections/HeroSection.vue +129 -0
  15. package/dist/runtime/components/sections/HeroSection.vue.d.ts +3 -0
  16. package/dist/runtime/components/sections/Pricing.d.vue.ts +3 -0
  17. package/dist/runtime/components/sections/Pricing.vue +105 -0
  18. package/dist/runtime/components/sections/Pricing.vue.d.ts +3 -0
  19. package/dist/runtime/components/sections/Process.d.vue.ts +3 -0
  20. package/dist/runtime/components/sections/Process.vue +90 -0
  21. package/dist/runtime/components/sections/Process.vue.d.ts +3 -0
  22. package/dist/runtime/components/sections/ServiceGrid.d.vue.ts +3 -0
  23. package/dist/runtime/components/sections/ServiceGrid.vue +92 -0
  24. package/dist/runtime/components/sections/ServiceGrid.vue.d.ts +3 -0
  25. package/dist/runtime/components/sections/Testimonials.d.vue.ts +3 -0
  26. package/dist/runtime/components/sections/Testimonials.vue +90 -0
  27. package/dist/runtime/components/sections/Testimonials.vue.d.ts +3 -0
  28. package/dist/runtime/components/sections/TextVisual.d.vue.ts +3 -0
  29. package/dist/runtime/components/sections/TextVisual.vue +89 -0
  30. package/dist/runtime/components/sections/TextVisual.vue.d.ts +3 -0
  31. package/package.json +1 -1
@@ -0,0 +1,89 @@
1
+ <template>
2
+ <section class="py-14 px-6 md:px-12" :style="{ backgroundColor: bgColor, color: textColor }">
3
+
4
+ <!-- SPLIT -->
5
+ <div v-if="layout === 'split'" :class="['max-w-6xl mx-auto flex flex-col md:flex-row gap-12 items-center', reverse ? 'md:flex-row-reverse' : '']">
6
+ <div class="flex-1 space-y-6">
7
+ <span v-if="badge" class="inline-block text-[10px] font-bold tracking-[0.5em] uppercase px-3 py-1 rounded-full border" :style="{ borderColor: textColor + '25', color: textColor + 'aa' }">{{ badge }}</span>
8
+ <component :is="titleTag" class="text-3xl md:text-4xl font-black uppercase tracking-tighter leading-[0.9]">{{ title }}</component>
9
+ <p class="leading-relaxed text-sm max-w-md" :style="{ opacity: 0.55 }">{{ content }}</p>
10
+ <div v-if="ctas && ctas.length" class="flex flex-wrap gap-3 pt-1">
11
+ <NuxtLink v-for="(cta, i) in ctas" :key="i" :to="cta.link || '#'"
12
+ class="inline-flex items-center gap-2.5 px-6 py-3 rounded-full text-[11px] font-black uppercase tracking-widest transition-all hover:gap-5"
13
+ :style="i === 0 ? { backgroundColor: textColor, color: bgColor } : { border: `1px solid ${textColor}40`, color: textColor }">
14
+ {{ cta.text }}<span>→</span>
15
+ </NuxtLink>
16
+ </div>
17
+ </div>
18
+ <div :class="['flex-1 overflow-hidden relative', imageContainerClass]">
19
+ <img v-if="image" :src="image" :alt="imageAlt || title" class="w-full h-full object-cover transition-transform duration-700 hover:scale-105" />
20
+ <div v-else class="w-full h-full" :style="{ backgroundColor: textColor + '08' }"></div>
21
+ </div>
22
+ </div>
23
+
24
+ <!-- STACKED -->
25
+ <div v-else-if="layout === 'stacked'" class="max-w-3xl mx-auto space-y-8">
26
+ <div :class="['w-full overflow-hidden relative', imageContainerClass]">
27
+ <img v-if="image" :src="image" class="w-full h-full object-cover" />
28
+ <div v-else class="w-full h-full" :style="{ backgroundColor: textColor + '08' }"></div>
29
+ </div>
30
+ <div class="space-y-5">
31
+ <span v-if="badge" class="inline-block text-[10px] font-bold tracking-[0.5em] uppercase px-3 py-1 rounded-full border" :style="{ borderColor: textColor + '25', color: textColor + 'aa' }">{{ badge }}</span>
32
+ <component :is="titleTag" class="text-3xl md:text-4xl font-black uppercase tracking-tighter leading-[0.9]">{{ title }}</component>
33
+ <p class="leading-relaxed text-sm" :style="{ opacity: 0.55 }">{{ content }}</p>
34
+ <div v-if="ctas && ctas.length" class="flex flex-wrap gap-3 pt-1">
35
+ <NuxtLink v-for="(cta, i) in ctas" :key="i" :to="cta.link || '#'"
36
+ class="inline-flex items-center gap-2.5 px-6 py-3 rounded-full text-[11px] font-black uppercase tracking-widest transition-all hover:gap-5"
37
+ :style="i === 0 ? { backgroundColor: textColor, color: bgColor } : { border: `1px solid ${textColor}40`, color: textColor }">
38
+ {{ cta.text }}<span>→</span>
39
+ </NuxtLink>
40
+ </div>
41
+ </div>
42
+ </div>
43
+
44
+ <!-- WIDE -->
45
+ <div v-else :class="['max-w-6xl mx-auto flex flex-col md:flex-row gap-10 items-center', reverse ? 'md:flex-row-reverse' : '']">
46
+ <div :class="['md:w-2/3 w-full overflow-hidden relative', imageContainerClass]">
47
+ <img v-if="image" :src="image" class="w-full h-full object-cover transition-transform duration-700 hover:scale-105" />
48
+ <div v-else class="w-full h-full" :style="{ backgroundColor: textColor + '08' }"></div>
49
+ </div>
50
+ <div class="md:w-1/3 space-y-5">
51
+ <span v-if="badge" class="inline-block text-[10px] font-bold tracking-[0.5em] uppercase px-3 py-1 rounded-full border" :style="{ borderColor: textColor + '25', color: textColor + 'aa' }">{{ badge }}</span>
52
+ <component :is="titleTag" class="text-2xl md:text-3xl font-black uppercase tracking-tighter leading-[0.9]">{{ title }}</component>
53
+ <p class="leading-relaxed text-sm" :style="{ opacity: 0.55 }">{{ content }}</p>
54
+ <div v-if="ctas && ctas.length" class="flex flex-wrap gap-3 pt-1">
55
+ <NuxtLink v-for="(cta, i) in ctas" :key="i" :to="cta.link || '#'"
56
+ class="inline-flex items-center gap-2.5 px-6 py-3 rounded-full text-[11px] font-black uppercase tracking-widest transition-all hover:gap-5"
57
+ :style="i === 0 ? { backgroundColor: textColor, color: bgColor } : { border: `1px solid ${textColor}40`, color: textColor }">
58
+ {{ cta.text }}<span>→</span>
59
+ </NuxtLink>
60
+ </div>
61
+ </div>
62
+ </div>
63
+
64
+ </section>
65
+ </template>
66
+
67
+ <script setup>
68
+ import { computed } from "vue";
69
+ const props = defineProps({
70
+ layout: { type: String, default: "split" },
71
+ title: { type: String, default: "Our Vision" },
72
+ titleTag: { type: String, default: "h2" },
73
+ badge: { type: String, default: "" },
74
+ content: { type: String, default: "" },
75
+ image: { type: String, default: "" },
76
+ imageAlt: { type: String, default: "" },
77
+ imageStyle: { type: String, default: "rounded" },
78
+ imageFit: { type: String, default: "cover" },
79
+ imageShadow: { type: Boolean, default: false },
80
+ reverse: { type: Boolean, default: false },
81
+ bgColor: { type: String, default: "#ffffff" },
82
+ textColor: { type: String, default: "#000000" },
83
+ ctas: { type: Array, default: () => [] }
84
+ });
85
+ const imageContainerClass = computed(() => {
86
+ const styles = { rounded: "aspect-[4/3] rounded-3xl", square: "aspect-square rounded-xl", circle: "aspect-square rounded-full max-w-[360px] mx-auto", portrait: "aspect-[3/4] rounded-3xl max-w-sm mx-auto" };
87
+ return styles[props.imageStyle] ?? styles.rounded;
88
+ });
89
+ </script>
@@ -0,0 +1,3 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cinqcinqdev-seo",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "description": "A reusable Nuxt 3 admin CMS module with visual page editor powered by Supabase",
5
5
  "license": "MIT",
6
6
  "module": "./dist/module.mjs",