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.
Files changed (123) hide show
  1. package/README.md +39 -2
  2. package/dist/module.json +1 -1
  3. package/dist/runtime/assets/admin-tw.css +1 -1
  4. package/dist/runtime/components/admin-cms/DynamicRenderer.vue +16 -2
  5. package/dist/runtime/components/sections/{BlogHero.vue → cinqcinq/BlogHero.vue} +35 -3
  6. package/dist/runtime/components/sections/{CallToAction.vue → cinqcinq/CallToAction.vue} +35 -3
  7. package/dist/runtime/components/sections/{ContactForm.vue → cinqcinq/ContactForm.vue} +34 -2
  8. package/dist/runtime/components/sections/{FAQ.vue → cinqcinq/FAQ.vue} +35 -3
  9. package/dist/runtime/components/sections/{Features.vue → cinqcinq/Features.vue} +35 -3
  10. package/dist/runtime/components/sections/{HeroSection.vue → cinqcinq/HeroSection.vue} +11 -0
  11. package/dist/runtime/components/sections/{Newsletter.vue → cinqcinq/Newsletter.vue} +35 -3
  12. package/dist/runtime/components/sections/{Pricing.vue → cinqcinq/Pricing.vue} +35 -3
  13. package/dist/runtime/components/sections/{Process.vue → cinqcinq/Process.vue} +35 -3
  14. package/dist/runtime/components/sections/{Quote.vue → cinqcinq/Quote.vue} +35 -3
  15. package/dist/runtime/components/sections/{RichText.vue → cinqcinq/RichText.vue} +32 -4
  16. package/dist/runtime/components/sections/{ServiceGrid.vue → cinqcinq/ServiceGrid.vue} +35 -3
  17. package/dist/runtime/components/sections/{Testimonials.vue → cinqcinq/Testimonials.vue} +35 -3
  18. package/dist/runtime/components/sections/{TextVisual.vue → cinqcinq/TextVisual.vue} +39 -3
  19. package/dist/runtime/components/sections/swiss-style/BlogHero.d.vue.ts +3 -0
  20. package/dist/runtime/components/sections/swiss-style/BlogHero.vue +146 -0
  21. package/dist/runtime/components/sections/swiss-style/BlogHero.vue.d.ts +3 -0
  22. package/dist/runtime/components/sections/swiss-style/CallToAction.d.vue.ts +3 -0
  23. package/dist/runtime/components/sections/swiss-style/CallToAction.vue +138 -0
  24. package/dist/runtime/components/sections/swiss-style/CallToAction.vue.d.ts +3 -0
  25. package/dist/runtime/components/sections/swiss-style/Comparison.d.vue.ts +3 -0
  26. package/dist/runtime/components/sections/swiss-style/Comparison.vue +280 -0
  27. package/dist/runtime/components/sections/swiss-style/Comparison.vue.d.ts +3 -0
  28. package/dist/runtime/components/sections/swiss-style/ContactForm.d.vue.ts +3 -0
  29. package/dist/runtime/components/sections/swiss-style/ContactForm.vue +173 -0
  30. package/dist/runtime/components/sections/swiss-style/ContactForm.vue.d.ts +3 -0
  31. package/dist/runtime/components/sections/swiss-style/DataTable.d.vue.ts +3 -0
  32. package/dist/runtime/components/sections/swiss-style/DataTable.vue +245 -0
  33. package/dist/runtime/components/sections/swiss-style/DataTable.vue.d.ts +3 -0
  34. package/dist/runtime/components/sections/swiss-style/FAQ.d.vue.ts +3 -0
  35. package/dist/runtime/components/sections/swiss-style/FAQ.vue +107 -0
  36. package/dist/runtime/components/sections/swiss-style/FAQ.vue.d.ts +3 -0
  37. package/dist/runtime/components/sections/swiss-style/Features.d.vue.ts +3 -0
  38. package/dist/runtime/components/sections/swiss-style/Features.vue +103 -0
  39. package/dist/runtime/components/sections/swiss-style/Features.vue.d.ts +3 -0
  40. package/dist/runtime/components/sections/swiss-style/HeroFan.d.vue.ts +3 -0
  41. package/dist/runtime/components/sections/swiss-style/HeroFan.vue +108 -0
  42. package/dist/runtime/components/sections/swiss-style/HeroFan.vue.d.ts +3 -0
  43. package/dist/runtime/components/sections/swiss-style/HeroSection.d.vue.ts +3 -0
  44. package/dist/runtime/components/sections/swiss-style/HeroSection.vue +190 -0
  45. package/dist/runtime/components/sections/swiss-style/HeroSection.vue.d.ts +3 -0
  46. package/dist/runtime/components/sections/swiss-style/HeroSlider.d.vue.ts +3 -0
  47. package/dist/runtime/components/sections/swiss-style/HeroSlider.vue +138 -0
  48. package/dist/runtime/components/sections/swiss-style/HeroSlider.vue.d.ts +3 -0
  49. package/dist/runtime/components/sections/swiss-style/Newsletter.d.vue.ts +3 -0
  50. package/dist/runtime/components/sections/swiss-style/Newsletter.vue +125 -0
  51. package/dist/runtime/components/sections/swiss-style/Newsletter.vue.d.ts +3 -0
  52. package/dist/runtime/components/sections/swiss-style/Pricing.d.vue.ts +3 -0
  53. package/dist/runtime/components/sections/swiss-style/Pricing.vue +148 -0
  54. package/dist/runtime/components/sections/swiss-style/Pricing.vue.d.ts +3 -0
  55. package/dist/runtime/components/sections/swiss-style/Process.d.vue.ts +3 -0
  56. package/dist/runtime/components/sections/swiss-style/Process.vue +124 -0
  57. package/dist/runtime/components/sections/swiss-style/Process.vue.d.ts +3 -0
  58. package/dist/runtime/components/sections/swiss-style/Quote.d.vue.ts +3 -0
  59. package/dist/runtime/components/sections/swiss-style/Quote.vue +130 -0
  60. package/dist/runtime/components/sections/swiss-style/Quote.vue.d.ts +3 -0
  61. package/dist/runtime/components/sections/swiss-style/RelatedPages.d.vue.ts +3 -0
  62. package/dist/runtime/components/sections/swiss-style/RelatedPages.vue +212 -0
  63. package/dist/runtime/components/sections/swiss-style/RelatedPages.vue.d.ts +3 -0
  64. package/dist/runtime/components/sections/swiss-style/RichText.d.vue.ts +3 -0
  65. package/dist/runtime/components/sections/swiss-style/RichText.vue +100 -0
  66. package/dist/runtime/components/sections/swiss-style/RichText.vue.d.ts +3 -0
  67. package/dist/runtime/components/sections/swiss-style/ServiceGrid.d.vue.ts +3 -0
  68. package/dist/runtime/components/sections/swiss-style/ServiceGrid.vue +121 -0
  69. package/dist/runtime/components/sections/swiss-style/ServiceGrid.vue.d.ts +3 -0
  70. package/dist/runtime/components/sections/swiss-style/Testimonials.d.vue.ts +3 -0
  71. package/dist/runtime/components/sections/swiss-style/Testimonials.vue +126 -0
  72. package/dist/runtime/components/sections/swiss-style/Testimonials.vue.d.ts +3 -0
  73. package/dist/runtime/components/sections/swiss-style/TextVisual.d.vue.ts +3 -0
  74. package/dist/runtime/components/sections/swiss-style/TextVisual.vue +146 -0
  75. package/dist/runtime/components/sections/swiss-style/TextVisual.vue.d.ts +3 -0
  76. package/dist/runtime/composables/useAdminSections.js +75 -37
  77. package/dist/runtime/composables/useAdminSettings.d.ts +1 -0
  78. package/dist/runtime/pages/admin/editor/[id].vue +15 -1
  79. package/dist/runtime/pages/admin/setup.vue +77 -2
  80. package/package.json +1 -1
  81. /package/dist/runtime/components/sections/{BlogHero.d.vue.ts → cinqcinq/BlogHero.d.vue.ts} +0 -0
  82. /package/dist/runtime/components/sections/{BlogHero.vue.d.ts → cinqcinq/BlogHero.vue.d.ts} +0 -0
  83. /package/dist/runtime/components/sections/{CallToAction.d.vue.ts → cinqcinq/CallToAction.d.vue.ts} +0 -0
  84. /package/dist/runtime/components/sections/{CallToAction.vue.d.ts → cinqcinq/CallToAction.vue.d.ts} +0 -0
  85. /package/dist/runtime/components/sections/{Comparison.d.vue.ts → cinqcinq/Comparison.d.vue.ts} +0 -0
  86. /package/dist/runtime/components/sections/{Comparison.vue → cinqcinq/Comparison.vue} +0 -0
  87. /package/dist/runtime/components/sections/{Comparison.vue.d.ts → cinqcinq/Comparison.vue.d.ts} +0 -0
  88. /package/dist/runtime/components/sections/{ContactForm.d.vue.ts → cinqcinq/ContactForm.d.vue.ts} +0 -0
  89. /package/dist/runtime/components/sections/{ContactForm.vue.d.ts → cinqcinq/ContactForm.vue.d.ts} +0 -0
  90. /package/dist/runtime/components/sections/{DataTable.d.vue.ts → cinqcinq/DataTable.d.vue.ts} +0 -0
  91. /package/dist/runtime/components/sections/{DataTable.vue → cinqcinq/DataTable.vue} +0 -0
  92. /package/dist/runtime/components/sections/{DataTable.vue.d.ts → cinqcinq/DataTable.vue.d.ts} +0 -0
  93. /package/dist/runtime/components/sections/{FAQ.d.vue.ts → cinqcinq/FAQ.d.vue.ts} +0 -0
  94. /package/dist/runtime/components/sections/{FAQ.vue.d.ts → cinqcinq/FAQ.vue.d.ts} +0 -0
  95. /package/dist/runtime/components/sections/{Features.d.vue.ts → cinqcinq/Features.d.vue.ts} +0 -0
  96. /package/dist/runtime/components/sections/{Features.vue.d.ts → cinqcinq/Features.vue.d.ts} +0 -0
  97. /package/dist/runtime/components/sections/{HeroFan.d.vue.ts → cinqcinq/HeroFan.d.vue.ts} +0 -0
  98. /package/dist/runtime/components/sections/{HeroFan.vue → cinqcinq/HeroFan.vue} +0 -0
  99. /package/dist/runtime/components/sections/{HeroFan.vue.d.ts → cinqcinq/HeroFan.vue.d.ts} +0 -0
  100. /package/dist/runtime/components/sections/{HeroSection.d.vue.ts → cinqcinq/HeroSection.d.vue.ts} +0 -0
  101. /package/dist/runtime/components/sections/{HeroSection.vue.d.ts → cinqcinq/HeroSection.vue.d.ts} +0 -0
  102. /package/dist/runtime/components/sections/{HeroSlider.d.vue.ts → cinqcinq/HeroSlider.d.vue.ts} +0 -0
  103. /package/dist/runtime/components/sections/{HeroSlider.vue → cinqcinq/HeroSlider.vue} +0 -0
  104. /package/dist/runtime/components/sections/{HeroSlider.vue.d.ts → cinqcinq/HeroSlider.vue.d.ts} +0 -0
  105. /package/dist/runtime/components/sections/{Newsletter.d.vue.ts → cinqcinq/Newsletter.d.vue.ts} +0 -0
  106. /package/dist/runtime/components/sections/{Newsletter.vue.d.ts → cinqcinq/Newsletter.vue.d.ts} +0 -0
  107. /package/dist/runtime/components/sections/{Pricing.d.vue.ts → cinqcinq/Pricing.d.vue.ts} +0 -0
  108. /package/dist/runtime/components/sections/{Pricing.vue.d.ts → cinqcinq/Pricing.vue.d.ts} +0 -0
  109. /package/dist/runtime/components/sections/{Process.d.vue.ts → cinqcinq/Process.d.vue.ts} +0 -0
  110. /package/dist/runtime/components/sections/{Process.vue.d.ts → cinqcinq/Process.vue.d.ts} +0 -0
  111. /package/dist/runtime/components/sections/{Quote.d.vue.ts → cinqcinq/Quote.d.vue.ts} +0 -0
  112. /package/dist/runtime/components/sections/{Quote.vue.d.ts → cinqcinq/Quote.vue.d.ts} +0 -0
  113. /package/dist/runtime/components/sections/{RelatedPages.d.vue.ts → cinqcinq/RelatedPages.d.vue.ts} +0 -0
  114. /package/dist/runtime/components/sections/{RelatedPages.vue → cinqcinq/RelatedPages.vue} +0 -0
  115. /package/dist/runtime/components/sections/{RelatedPages.vue.d.ts → cinqcinq/RelatedPages.vue.d.ts} +0 -0
  116. /package/dist/runtime/components/sections/{RichText.d.vue.ts → cinqcinq/RichText.d.vue.ts} +0 -0
  117. /package/dist/runtime/components/sections/{RichText.vue.d.ts → cinqcinq/RichText.vue.d.ts} +0 -0
  118. /package/dist/runtime/components/sections/{ServiceGrid.d.vue.ts → cinqcinq/ServiceGrid.d.vue.ts} +0 -0
  119. /package/dist/runtime/components/sections/{ServiceGrid.vue.d.ts → cinqcinq/ServiceGrid.vue.d.ts} +0 -0
  120. /package/dist/runtime/components/sections/{Testimonials.d.vue.ts → cinqcinq/Testimonials.d.vue.ts} +0 -0
  121. /package/dist/runtime/components/sections/{Testimonials.vue.d.ts → cinqcinq/Testimonials.vue.d.ts} +0 -0
  122. /package/dist/runtime/components/sections/{TextVisual.d.vue.ts → cinqcinq/TextVisual.d.vue.ts} +0 -0
  123. /package/dist/runtime/components/sections/{TextVisual.vue.d.ts → cinqcinq/TextVisual.vue.d.ts} +0 -0
@@ -7,11 +7,13 @@ const { settings, loading, saving, load, save } = useAdminSettings();
7
7
  const sections = useAdminSections();
8
8
  const aiContext = ref("");
9
9
  const presets = ref({});
10
+ const selectedTheme = ref("");
10
11
  const saved = ref(false);
11
12
  onMounted(async () => {
12
13
  await load();
13
14
  aiContext.value = settings.value?.ai_context || "";
14
15
  presets.value = JSON.parse(JSON.stringify(settings.value?.section_presets || {}));
16
+ selectedTheme.value = settings.value?.theme || "";
15
17
  });
16
18
  const setPreset = (sectionType, field, value) => {
17
19
  if (!presets.value[sectionType]) presets.value[sectionType] = {};
@@ -20,8 +22,10 @@ const setPreset = (sectionType, field, value) => {
20
22
  const getPreset = (sectionType, field, fallback) => {
21
23
  return presets.value[sectionType]?.[field] ?? fallback ?? "";
22
24
  };
25
+ const canSave = computed(() => !!selectedTheme.value);
23
26
  const saveAll = async () => {
24
- await save({ ai_context: aiContext.value, section_presets: presets.value });
27
+ if (!canSave.value) return;
28
+ await save({ ai_context: aiContext.value, section_presets: presets.value, theme: selectedTheme.value });
25
29
  saved.value = true;
26
30
  setTimeout(() => {
27
31
  saved.value = false;
@@ -43,7 +47,7 @@ const hasStyleOptions = (conf) => styleFields.some((f) => conf.fields?.[f]?.opti
43
47
  </div>
44
48
  <button
45
49
  @click="saveAll"
46
- :disabled="saving"
50
+ :disabled="saving || !canSave"
47
51
  class="px-5 py-2.5 bg-slate-900 text-white text-sm font-semibold rounded-xl hover:bg-slate-700 disabled:opacity-50 transition-all flex items-center gap-2"
48
52
  >
49
53
  <svg v-if="!saving && !saved" class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
@@ -61,6 +65,77 @@ const hasStyleOptions = (conf) => styleFields.some((f) => conf.fields?.[f]?.opti
61
65
 
62
66
  <div v-else class="space-y-6">
63
67
 
68
+ <!-- ── Theme Selection (required) ─────────────────────────────── -->
69
+ <div class="bg-white border rounded-2xl p-8" :class="!selectedTheme ? 'border-amber-300 ring-1 ring-amber-200' : 'border-slate-200'">
70
+ <div class="flex items-center gap-3 mb-2">
71
+ <span class="text-xl">🎨</span>
72
+ <h2 class="text-base font-bold text-slate-900">Thème de design <span class="text-amber-500 text-sm font-normal ml-1">(requis)</span></h2>
73
+ </div>
74
+ <p class="text-xs text-slate-500 mb-6 leading-relaxed">
75
+ Choisissez le thème visuel qui s'appliquera à toutes les sections de votre site. Cette sélection est obligatoire.
76
+ </p>
77
+ <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
78
+ <!-- CinqCinq theme -->
79
+ <button
80
+ @click="selectedTheme = 'cinqcinq'"
81
+ :class="[
82
+ 'text-left p-5 border-2 rounded-xl transition-all',
83
+ selectedTheme === 'cinqcinq' ? 'border-slate-900 bg-slate-50' : 'border-slate-200 hover:border-slate-400'
84
+ ]"
85
+ >
86
+ <div class="flex items-center gap-3 mb-3">
87
+ <div class="w-8 h-8 rounded-lg bg-slate-900 flex items-center justify-center">
88
+ <span class="text-white text-xs font-black">55</span>
89
+ </div>
90
+ <div>
91
+ <div class="font-bold text-slate-900 text-sm">CinqCinq</div>
92
+ <div class="text-[10px] text-slate-400 uppercase tracking-wider">Original</div>
93
+ </div>
94
+ <div v-if="selectedTheme === 'cinqcinq'" class="ml-auto w-5 h-5 rounded-full bg-slate-900 flex items-center justify-center">
95
+ <svg class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
96
+ </div>
97
+ </div>
98
+ <p class="text-xs text-slate-500 leading-relaxed">Design contemporain avec coins arrondis, cartes avec ombres et animations fluides. Moderne et accessible.</p>
99
+ <!-- Mini preview -->
100
+ <div class="mt-4 flex gap-1.5">
101
+ <div class="h-6 flex-1 rounded-lg bg-slate-100"></div>
102
+ <div class="h-6 flex-1 rounded-lg bg-slate-200"></div>
103
+ <div class="h-6 w-12 rounded-lg bg-slate-900"></div>
104
+ </div>
105
+ </button>
106
+
107
+ <!-- Swiss Style theme -->
108
+ <button
109
+ @click="selectedTheme = 'swiss-style'"
110
+ :class="[
111
+ 'text-left p-5 border-2 rounded-xl transition-all',
112
+ selectedTheme === 'swiss-style' ? 'border-slate-900 bg-slate-50' : 'border-slate-200 hover:border-slate-400'
113
+ ]"
114
+ >
115
+ <div class="flex items-center gap-3 mb-3">
116
+ <div class="w-8 h-8 bg-black flex items-center justify-center">
117
+ <span class="text-white text-xs font-black tracking-tighter">SW</span>
118
+ </div>
119
+ <div>
120
+ <div class="font-bold text-slate-900 text-sm">Swiss Style</div>
121
+ <div class="text-[10px] text-slate-400 uppercase tracking-wider">Typographic</div>
122
+ </div>
123
+ <div v-if="selectedTheme === 'swiss-style'" class="ml-auto w-5 h-5 rounded-full bg-slate-900 flex items-center justify-center">
124
+ <svg class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
125
+ </div>
126
+ </div>
127
+ <p class="text-xs text-slate-500 leading-relaxed">Style typographique suisse. Grilles strictes, bordures 1px, angles droits et hiérarchie typographique forte.</p>
128
+ <!-- Mini preview -->
129
+ <div class="mt-4 flex gap-1.5">
130
+ <div class="h-6 flex-1 border border-slate-300"></div>
131
+ <div class="h-6 flex-1 border border-slate-300 bg-slate-50"></div>
132
+ <div class="h-6 w-12 bg-black"></div>
133
+ </div>
134
+ </button>
135
+ </div>
136
+ <p v-if="!selectedTheme" class="text-xs text-amber-600 mt-3">Sélectionnez un thème pour pouvoir enregistrer.</p>
137
+ </div>
138
+
64
139
  <!-- ── AI Context ───────────────────────────────────────────────── -->
65
140
  <div class="bg-white border border-slate-200 rounded-2xl p-8">
66
141
  <div class="flex items-center gap-3 mb-2">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cinqcinqdev-seo",
3
- "version": "0.1.71",
3
+ "version": "0.1.73",
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",