Kaynağa Gözat

refactor title, banner and menu of fomations page

Olivier Massot 1 yıl önce
ebeveyn
işleme
b5bb352bcd

+ 37 - 81
components/Formation/Banner.vue

@@ -1,96 +1,52 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
-    <LayoutUITitlePage title="Formation" subtitle="Prise en main ou piqûre de rappel,on est toujours à vos côtés. " />
-    
+    <LayoutUITitlePage>
+      Formation
+      <template #subtitle>
+        Prise en main ou piqûre de rappel,on est toujours à vos côtés.
+      </template>
+    </LayoutUITitlePage>
+
     <v-row>
     <v-row>
-      <v-col cols="12" style="position: relative">
-        <img
+      <v-col cols="12" class="banner-container">
+        <v-img
           src="/images/formation/banner.jpg"
           src="/images/formation/banner.jpg"
-          alt="line"
+          alt="banner"
+          cover
           class="cover-image"
           class="cover-image"
         />
         />
+
         <div class="image-text mt-12">
         <div class="image-text mt-12">
           Et si vous passiez rapidement à la vitesse supérieure...
           Et si vous passiez rapidement à la vitesse supérieure...
         </div>
         </div>
       </v-col>
       </v-col>
     </v-row>
     </v-row>
-
-    <v-row>
-      <v-col cols="12" class="menu-container">
-        <div v-for="menu in menus" :key="menu.label">
-          <v-chip v-if="state.activeMenu === menu.label" class="active-menu">
-            {{ menu.label }}
-          </v-chip>
-          <span v-else>{{ menu.label }}</span>
-        </div>
-      </v-col>
-    </v-row>
   </LayoutContainer>
   </LayoutContainer>
 </template>
 </template>
 
 
-<script setup>
-
-</script>
-
-<style scoped>
-.image-text {
-  position: absolute;
-  top: 40px;
-  left: 20px;
-  font-family: "Barlow";
-  color: white;
-  font-size: 3rem;
-  width: 30rem;
-  font-style: italic;
-  font-weight: 300;
-  line-height: 40px;
-}
-
-:deep().subtitle {
-  font-size: 1.5rem;
-  line-height: 2rem;
-  letter-spacing: .1rem;
-  margin-bottom: 1rem;
-}
-
-.formation {
-  font-family: "Barlow";
-  font-style: normal;
-  font-weight: 600;
-  font-size: 90px;
-  line-height: 85px;
-  text-align: center;
-  color: #000000;
-  margin-bottom: 1rem;
-}
-
-.menu-container {
-  display: flex;
-  justify-content: space-around;
-  padding: 1rem 10rem;
-  background: white;
-  color: #bbb8b8;
-  font-family: "Barlow";
-  font-size: 12px;
-  line-height: 16px;
-  display: flex;
-  align-items: center;
-  text-align: center;
-  letter-spacing: 0.18em;
-  text-transform: uppercase;
-}
-
-.v-chip.active-menu {
-  background: black;
-  color: white;
-}
-
-.cover-image {
-  width: 100%;
-  height: 35rem;
-  object-fit: cover;
-  object-position: center 30%;
-  margin: 0 auto;
-  transform: scaleX(-1);
-}
+<style scoped lang="scss">
+  .banner-container {
+    position: relative;
+    height: 35rem;
+
+    :deep(img) {
+      width: 100%;
+      height: 100%;
+      object-position: center 30%;
+      transform: scaleX(-1);
+    }
+
+    .image-text {
+      position: absolute;
+      top: 40px;
+      left: 20px;
+      font-family: "Barlow", serif;
+      color: white;
+      font-size: 3rem;
+      width: 30rem;
+      font-style: italic;
+      font-weight: 300;
+      line-height: 40px;
+    }
+  }
 </style>
 </style>

+ 5 - 4
components/Formation/Catalogue.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div id="Catalogue">
+  <AnchoredSection id="catalog">
     <LayoutContainer v-if="!mdAndDown">
     <LayoutContainer v-if="!mdAndDown">
       <div class="grey-container">
       <div class="grey-container">
         <v-row class="custom-row">
         <v-row class="custom-row">
@@ -11,7 +11,7 @@
 
 
         <LayoutUITitle title="Catalogue" />
         <LayoutUITitle title="Catalogue" />
         </v-row>
         </v-row>
- 
+
 
 
         <v-row  class="custom-row" style="  padding: 2rem; max-width: 90%; margin-left: auto; margin-right: auto;">
         <v-row  class="custom-row" style="  padding: 2rem; max-width: 90%; margin-left: auto; margin-right: auto;">
           <v-col v-for="(course, index) in courses" :key="index" cols="4">
           <v-col v-for="(course, index) in courses" :key="index" cols="4">
@@ -74,12 +74,13 @@
         </v-row>
         </v-row>
       </div>
       </div>
     </LayoutContainer>
     </LayoutContainer>
-  </div>
+  </AnchoredSection>
 </template>
 </template>
 
 
 <script setup>
 <script setup>
 
 
 import { useDisplay } from "vuetify";
 import { useDisplay } from "vuetify";
+import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
 const { smAndDown, mdAndDown } = useDisplay();
 const { smAndDown, mdAndDown } = useDisplay();
 
 
 const downloadPdf = (pdfUrl) => {
 const downloadPdf = (pdfUrl) => {
@@ -228,7 +229,7 @@ const courses = [
 }
 }
 
 
 .badge-time span {
 .badge-time span {
-  color: var(--Vert-90, #0E2D32); 
+  color: var(--Vert-90, #0E2D32);
 }
 }
 
 
 .list-obj {
 .list-obj {

+ 5 - 3
components/Formation/Certification.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div id="Certification">
+  <AnchoredSection id="certification">
     <LayoutContainer>
     <LayoutContainer>
       <v-row class="custom-row">
       <v-row class="custom-row">
         <v-col cols="5">
         <v-col cols="5">
@@ -36,10 +36,12 @@
         </v-col>
         </v-col>
       </v-row>
       </v-row>
     </LayoutContainer>
     </LayoutContainer>
-  </div>
+  </AnchoredSection>
 </template>
 </template>
 
 
-<script setup></script>
+<script setup>
+import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
+</script>
 
 
 <style scoped>
 <style scoped>
 
 

+ 3 - 2
components/Formation/OPCA.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div id="Financement">
+  <AnchoredSection id="financing">
     <LayoutContainer >
     <LayoutContainer >
       <v-row class="custom-row">
       <v-row class="custom-row">
         <LayoutUISubTitle
         <LayoutUISubTitle
@@ -47,10 +47,11 @@
         </v-row>
         </v-row>
       </v-container>
       </v-container>
     </LayoutContainer>
     </LayoutContainer>
-  </div>
+  </AnchoredSection>
 </template>
 </template>
 
 
 <script setup>
 <script setup>
+import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>

+ 5 - 2
components/Formation/Participation.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div id="Inscription">
+  <AnchoredSection id="inscription">
     <LayoutContainer>
     <LayoutContainer>
       <v-row class="custom-row">
       <v-row class="custom-row">
         <v-col cols="12">
         <v-col cols="12">
@@ -56,7 +56,7 @@
         </v-col>
         </v-col>
       </v-row>
       </v-row>
     </LayoutContainer>
     </LayoutContainer>
-  </div>
+  </AnchoredSection>
 </template>
 </template>
 
 
 <style scoped>
 <style scoped>
@@ -133,3 +133,6 @@
   color: #ffffff;
   color: #ffffff;
 }
 }
 </style>
 </style>
+<script setup lang="ts">
+import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
+</script>

+ 5 - 3
components/Formation/Presentation.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div id="Presentation">
+  <AnchoredSection id="presentation">
     <LayoutContainer>
     <LayoutContainer>
       <v-row class="custom-row mt-6">
       <v-row class="custom-row mt-6">
         <LayoutUISubTitle
         <LayoutUISubTitle
@@ -54,10 +54,12 @@
         </v-col>
         </v-col>
       </v-row>
       </v-row>
     </LayoutContainer>
     </LayoutContainer>
-  </div>
+  </AnchoredSection>
 </template>
 </template>
 
 
-<script setup></script>
+<script setup>
+import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
+</script>
 
 
 <style scoped>
 <style scoped>
 
 

+ 4 - 2
components/Formation/Reviews.vue

@@ -1,12 +1,14 @@
 <template>
 <template>
-  <div id="Temoignages">
+  <AnchoredSection id="testimonials">
     <LayoutContainer>
     <LayoutContainer>
       <CommonReviewSection :cards="cards" />
       <CommonReviewSection :cards="cards" />
     </LayoutContainer>
     </LayoutContainer>
-  </div>
+  </AnchoredSection>
 </template>
 </template>
 
 
 <script setup>
 <script setup>
+import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
+
 const cards = [
 const cards = [
   {
   {
     description:
     description:

+ 2 - 0
components/Formation/Solutions.vue

@@ -1,3 +1,5 @@
+<!-- TODO: voir si utilisé? -->
+
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
     <v-row>
     <v-row>

+ 22 - 42
components/Layout/UI/TitlePage.vue

@@ -1,66 +1,46 @@
 <template>
 <template>
-  <div>
-    <h1 style="text-align: center" :class="mdAndDown ? 'title-md ' : 'title '">
-      {{ title }}
+  <div class="mb-4">
+    <h1>
+      <slot />
     </h1>
     </h1>
-    <h2
-      style="text-align: center"
-      :class="mdAndDown ? 'subtitle-md ' : 'subtitle '"
-    >
-      {{ subtitle }}
+    <h2>
+      <slot name="subtitle" />
     </h2>
     </h2>
   </div>
   </div>
 </template>
 </template>
 
 
-<script setup>
-import { useDisplay } from "vuetify";
-const { mdAndDown } = useDisplay();
-
-const props = defineProps({
-  title: String,
-  subtitle: String,
-});
-</script>
-
-<style scoped>
-.text-center {
+<style scoped lang="scss">
+h1, h2 {
   text-align: center;
   text-align: center;
+  text-transform: uppercase;
 }
 }
 
 
-.title {
+h1 {
   font-size: 4rem;
   font-size: 4rem;
   line-height: 3.5rem;
   line-height: 3.5rem;
   letter-spacing: 0.3rem;
   letter-spacing: 0.3rem;
   margin-top: 2rem;
   margin-top: 2rem;
   margin-bottom: 2rem;
   margin-bottom: 2rem;
-  text-transform: uppercase;
-}
-
-.title-md {
-  font-size: 2rem;
-  line-height: 2.5rem;
-  letter-spacing: 0.2rem;
-  margin-top: 2rem;
-  margin-bottom: 2rem;
-
-  text-transform: uppercase;
 }
 }
 
 
-.subtitle {
+h2 {
   font-size: 1.5rem;
   font-size: 1.5rem;
   line-height: 2rem;
   line-height: 2rem;
-  letter-spacing: 0.5rem;
-  margin-bottom: 8rem;
-  text-transform: uppercase;
+  letter-spacing: 0.2rem;
   margin-left: 1rem;
   margin-left: 1rem;
   margin-right: 1rem;
   margin-right: 1rem;
 }
 }
 
 
-.subtitle-md {
-  font-size: 1.5rem;
-  line-height: 2rem;
-  letter-spacing: 0.1rem;
-  text-transform: uppercase;
-  width: 100%;
+@media (max-width: 960px) {
+  h1 {
+    font-size: 2rem;
+    line-height: 2.5rem;
+  }
+
+  h2 {
+    letter-spacing: 0.1rem;
+    width: 100%;
+  }
 }
 }
+
 </style>
 </style>

+ 14 - 17
components/Logiciels/Manager/Reviews.vue

@@ -1,46 +1,49 @@
 <template>
 <template>
   <AnchoredSection id="testimonials">
   <AnchoredSection id="testimonials">
-    <LayoutContainer>
-      <CommonReviewSection :cards="cards" />
-    </LayoutContainer>
+    <div>
+      <LayoutContainer>
+        <CommonReviewSection :cards="cards" />
+      </LayoutContainer>
+    </div>
   </AnchoredSection>
   </AnchoredSection>
 </template>
 </template>
 
 
-<script setup>
+<script setup lang="ts">
 
 
 import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
 import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
+import { Review } from "~/types/interface";
 
 
-const cards = [
+const cards: Array<Review> = [
   {
   {
-    description:
+    review:
       "L'outil répond à toutes les demandes d'une structure de notre taille et la connexion avec le site internet est très pratique.",
       "L'outil répond à toutes les demandes d'une structure de notre taille et la connexion avec le site internet est très pratique.",
     name: "Christophe MORIZOT",
     name: "Christophe MORIZOT",
     status: "Président ",
     status: "Président ",
     structure: "Confédération Musicale de France (92)",
     structure: "Confédération Musicale de France (92)",
   },
   },
   {
   {
-    description:
+    review:
       "Lorem ipsum dolor sit amet consectetur adipisicing elit.Provident porro fuga incidunt quae, doloremque tenetur aliquam  exercitationem deleniti aspernatur illo rem deserunt sapiente empore dolorem ipsa aliquid vel nihil eius.",
       "Lorem ipsum dolor sit amet consectetur adipisicing elit.Provident porro fuga incidunt quae, doloremque tenetur aliquam  exercitationem deleniti aspernatur illo rem deserunt sapiente empore dolorem ipsa aliquid vel nihil eius.",
     name: "Eric TAUVRON ",
     name: "Eric TAUVRON ",
     status: "Vice-président",
     status: "Vice-président",
     structure: "CMF Rhône - Grand Lyon (69)",
     structure: "CMF Rhône - Grand Lyon (69)",
   },
   },
   {
   {
-    description:
+    review:
       "C'est un outil de travail très intéressant, complet et intuitif quand on comprend certaines subtilités. Il a très bien évolué aussi bien pour les chorales que les harmonie. Mes remarques ont toujours été prises en compte.",
       "C'est un outil de travail très intéressant, complet et intuitif quand on comprend certaines subtilités. Il a très bien évolué aussi bien pour les chorales que les harmonie. Mes remarques ont toujours été prises en compte.",
     name: "Noëlle ROBERT",
     name: "Noëlle ROBERT",
     status: "Président",
     status: "Président",
     structure: "CMF Côte d'or (21)",
     structure: "CMF Côte d'or (21)",
   },
   },
   {
   {
-    description:
+    review:
       "Lorem ipsum dolor sit amet consectetur adipisicing elit.Provident porro fuga incidunt quae, doloremque tenetur aliquam  exercitationem deleniti aspernatur illo rem deserunt sapiente empore dolorem ipsa aliquid vel nihil eius.",
       "Lorem ipsum dolor sit amet consectetur adipisicing elit.Provident porro fuga incidunt quae, doloremque tenetur aliquam  exercitationem deleniti aspernatur illo rem deserunt sapiente empore dolorem ipsa aliquid vel nihil eius.",
     name: "Laurent Lebon",
     name: "Laurent Lebon",
     status: "Chef d'orchestre",
     status: "Chef d'orchestre",
     structure: "Conservatoire de Lyon",
     structure: "Conservatoire de Lyon",
   },
   },
   {
   {
-    description:
+    review:
       "Lorem ipsum dolor sit amet consectetur adipisicing elit.Provident porro fuga incidunt quae, doloremque tenetur aliquam  exercitationem deleniti aspernatur illo rem deserunt sapiente empore dolorem ipsa aliquid vel nihil eius.",
       "Lorem ipsum dolor sit amet consectetur adipisicing elit.Provident porro fuga incidunt quae, doloremque tenetur aliquam  exercitationem deleniti aspernatur illo rem deserunt sapiente empore dolorem ipsa aliquid vel nihil eius.",
     name: "Laurent Lebon",
     name: "Laurent Lebon",
     status: "Chef d'orchestre",
     status: "Chef d'orchestre",
@@ -51,13 +54,7 @@ const cards = [
 
 
 
 
 <style scoped>
 <style scoped>
-
-
-.v-container{
+.v-container {
   padding: 0 !important;
   padding: 0 !important;
 }
 }
-:deep().reviewer-name {
-  color: #e34461;
-}
-
 </style>
 </style>

+ 10 - 11
pages/formations.vue

@@ -27,15 +27,14 @@
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
-const menus = ref([
-  { id: "Presentation", label: "Présentation", element: null },
-  { id: "Catalogue", label: "Catalogue", element: null },
-  { id: "Financement", label: "Financement", element: null },
-  { id: "Certification", label: "Certification", element: null },
-  { id: "Inscription", label: "Inscription", element: null },
-  { id: "Temoignages", label: "Temoignages", element: null }
-]).value;
+import { MenuScroll } from "~/types/interface";
+
+const menus: Array<MenuScroll> = [
+  { anchor: "presentation", label: "Présentation" },
+  { anchor: "catalog", label: "Catalogue" },
+  { anchor: "financing", label: "Financement" },
+  { anchor: "certification", label: "Certification" },
+  { anchor: "inscription", label: "Inscription" },
+  { anchor: "testimonials", label: "Témoignages" }
+];
 </script>
 </script>
-
-<style scoped>
-</style>