Sfoglia il codice sorgente

Merge branch 'feature/V8-5740-rvision-seo' into develop

Olivier Massot 1 anno fa
parent
commit
627cd2ff2a
39 ha cambiato i file con 346 aggiunte e 154 eliminazioni
  1. 4 3
      components/About/Chronologie.vue
  2. 4 4
      components/About/Presentation.vue
  3. 2 2
      components/Common/Banner.vue
  4. 3 3
      components/Common/Carousel/Clients.vue
  5. 1 1
      components/Common/Carousel/Fonctionnalite.vue
  6. 34 0
      components/Common/Meta.vue
  7. 8 2
      components/Common/ReviewSection.vue
  8. 3 3
      components/Home/EventAgenda.vue
  9. 3 3
      components/Home/Help.vue
  10. 0 0
      components/Home/News.vue
  11. 3 28
      components/Home/Promotion.vue
  12. 6 28
      components/Home/Reviews.vue
  13. 6 29
      components/Home/Solution.vue
  14. 25 4
      components/JoinUs/Form.vue
  15. 5 0
      components/JoinUs/MissionDetail.vue
  16. 35 10
      components/Layout/Footer/Footer.vue
  17. 41 0
      components/Layout/UI/SectionTitle.vue
  18. 3 7
      components/Layout/UI/Title.vue
  19. 3 3
      components/Logiciels/Artist/Abonnement.vue
  20. 4 4
      components/Logiciels/Manager/Formation.vue
  21. 4 4
      components/Logiciels/School/Formations.vue
  22. 8 3
      components/News/Details.vue
  23. 35 6
      components/Webinaire/Catalogue.vue
  24. 36 4
      components/Webinaire/FAQ.vue
  25. 5 0
      pages/CGV.vue
  26. 1 0
      pages/actualites/[id].vue
  27. 5 0
      pages/actualites/index.vue
  28. 6 1
      pages/formations.vue
  29. 4 0
      pages/index.vue
  30. 5 0
      pages/mentions-legales.vue
  31. 5 0
      pages/nous-contacter.vue
  32. 2 0
      pages/nous-rejoindre/[id].vue
  33. 7 0
      pages/nous-rejoindre/index.vue
  34. 5 1
      pages/opentalent_artist.vue
  35. 5 1
      pages/opentalent_manager.vue
  36. 5 0
      pages/opentalent_school.vue
  37. 5 0
      pages/politique-de-confidentialite-et-protection-des-donnees-personnelles.vue
  38. 5 0
      pages/qui-sommes-nous.vue
  39. 5 0
      pages/webinaires.vue

+ 4 - 3
components/About/Chronologie.vue

@@ -47,9 +47,9 @@
 
 
                 <v-col cols="4">
                 <v-col cols="4">
                   <div class="description-container">
                   <div class="description-container">
-                    <h3>
+                    <span class="year">
                       {{ slide.year }}
                       {{ slide.year }}
-                    </h3>
+                    </span>
 
 
                     <h4>
                     <h4>
                       {{ slide.title }}
                       {{ slide.title }}
@@ -260,8 +260,9 @@ const slides: Array<ChronologyItem> = [
     border-top-right-radius: 20%;
     border-top-right-radius: 20%;
     border-bottom-right-radius: 20%;
     border-bottom-right-radius: 20%;
 
 
-    h3 {
+    .year {
       font-size: 1.8rem;
       font-size: 1.8rem;
+      font-weight: 500;
     }
     }
 
 
     h4 {
     h4 {

+ 4 - 4
components/About/Presentation.vue

@@ -9,11 +9,11 @@
         </v-col>
         </v-col>
 
 
         <v-col cols="8">
         <v-col cols="8">
-          <h3 class="italic-title mr-8">
+          <div class="italic-title mr-8">
             “Imaginé par des musiciens pour des musiciens, Opentalent se veut être
             “Imaginé par des musiciens pour des musiciens, Opentalent se veut être
             la référence pour la gestion et la promotion du spectacle vivant sur
             la référence pour la gestion et la promotion du spectacle vivant sur
             les territoires.”
             les territoires.”
-          </h3>
+          </div>
         </v-col>
         </v-col>
       </v-row>
       </v-row>
 
 
@@ -41,9 +41,9 @@
             pour en faire la promotion.
             pour en faire la promotion.
           </p>
           </p>
 
 
-          <h4>
+          <h3>
             La Culture au service du développement territorial
             La Culture au service du développement territorial
-          </h4>
+          </h3>
 
 
           <p>
           <p>
             Qui n'a jamais entendu que la culture coûtait trop cher ? On l'entend
             Qui n'a jamais entendu que la culture coûtait trop cher ? On l'entend

+ 2 - 2
components/Common/Banner.vue

@@ -122,10 +122,10 @@ const props = defineProps({
 
 
 .logo-square {
 .logo-square {
   position: absolute;
   position: absolute;
-  bottom: 0.4rem;
+  bottom: 0;
   right: 13rem;
   right: 13rem;
   width: 13rem;
   width: 13rem;
-  height: 10rem;
+  height: 10.4rem;
 
 
   img {
   img {
     width: 100%;
     width: 100%;

+ 3 - 3
components/Common/Carousel/Clients.vue

@@ -4,11 +4,11 @@
   <LayoutContainer>
   <LayoutContainer>
     <!-- Titre -->
     <!-- Titre -->
     <v-row justify="center">
     <v-row justify="center">
-      <h2 class="text-center">
+      <h3 class="text-center">
         <slot name="title">
         <slot name="title">
           Plus de <span class="alt-color">5000 structures</span> nous font confiance
           Plus de <span class="alt-color">5000 structures</span> nous font confiance
         </slot>
         </slot>
-      </h2>
+      </h3>
     </v-row>
     </v-row>
 
 
     <v-container>
     <v-container>
@@ -75,7 +75,7 @@ const goToNext = () => {
   margin-left: auto;
   margin-left: auto;
 }
 }
 
 
-h2 {
+h3 {
   margin-bottom: 2rem;
   margin-bottom: 2rem;
   text-align: center;
   text-align: center;
   font-weight: 600;
   font-weight: 600;

+ 1 - 1
components/Common/Carousel/Fonctionnalite.vue

@@ -3,7 +3,7 @@
     <v-row>
     <v-row>
       <v-col cols="6">
       <v-col cols="6">
         <LayoutUISubTitle>
         <LayoutUISubTitle>
-          Découvrez TOUTES LES FONCTIONNALITÉS DE NOTRE solution
+          Découvrez toutes les fonctionnalités de notre solution
         </LayoutUISubTitle>
         </LayoutUISubTitle>
 
 
         <LayoutUITitle>
         <LayoutUITitle>

+ 34 - 0
components/Common/Meta.vue

@@ -0,0 +1,34 @@
+<!--
+Définit les balises meta de la page
+-->
+<script setup lang="ts">
+  const props = defineProps({
+    title: {
+      type: String,
+      required: true
+    },
+    description: {
+      type: String,
+      required: true
+    },
+    image: {
+      type: String,
+      required: false,
+      default: 'images/Opentalent'
+    }
+  })
+
+  useSeoMeta({
+    title : props.title,
+    ogTitle : props.title,
+    twitterTitle : props.title,
+    description : props.description,
+    ogDescription : props.description,
+    twitterDescription : props.description,
+    ogImage : props.image,
+    twitterImage: props.image,
+    twitterCard : 'summary_large_image',
+    ogType: 'website',
+    ogLocale: 'fr_FR'
+  })
+</script>

+ 8 - 2
components/Common/ReviewSection.vue

@@ -136,11 +136,17 @@ const goNext = () => {
     height: 100%;
     height: 100%;
   }
   }
 
 
+  :deep(.v-card-item__content) {
+    display: flex;
+    flex-direction: column;
+  }
+
   .v-card-text {
   .v-card-text {
     text-align: justify;
     text-align: justify;
     min-height: 120px;
     min-height: 120px;
     overflow: auto;
     overflow: auto;
     font-size: 0.9rem;
     font-size: 0.9rem;
+    flex: 1;
   }
   }
 
 
   footer {
   footer {
@@ -195,8 +201,8 @@ const goNext = () => {
 .v-card {
 .v-card {
   padding: 0 0.5rem;
   padding: 0 0.5rem;
   border-radius: 1rem;
   border-radius: 1rem;
-  min-height: 220px;
-  max-height: 250px;
+  min-height: 300px;
+  max-height: 300px;
   margin-top: 2rem;
   margin-top: 2rem;
   margin-bottom: 0.6rem;
   margin-bottom: 0.6rem;
 }
 }

+ 3 - 3
components/Home/EventAgenda.vue

@@ -5,10 +5,10 @@ Section "Agenda" de la page d'accueil
   <LayoutContainer>
   <LayoutContainer>
     <div class="container">
     <div class="container">
       <div class="d-flex align-center justify-center">
       <div class="d-flex align-center justify-center">
-        <h2>
+        <h3>
           Retrouvez tous vos évènements dans l'agenda et référencez vous dans
           Retrouvez tous vos évènements dans l'agenda et référencez vous dans
           l'annuaire
           l'annuaire
-        </h2>
+        </h3>
       </div>
       </div>
 
 
       <v-row justify="center">
       <v-row justify="center">
@@ -52,7 +52,7 @@ const { mdAndDown } = useDisplay();
   }
   }
 }
 }
 
 
-h2 {
+h3 {
   height: 9rem;
   height: 9rem;
   font-weight: 400;
   font-weight: 400;
   font-size: 3rem;
   font-size: 3rem;

+ 3 - 3
components/Home/Help.vue

@@ -10,10 +10,10 @@ Section "Besoin d'aide" de la page d'accueil
       </v-col>
       </v-col>
 
 
       <v-col cols="12" lg="6" class="col">
       <v-col cols="12" lg="6" class="col">
-        <h4>
+        <h3>
           Notre équipe est à vos côtés
           Notre équipe est à vos côtés
           pour vous guider
           pour vous guider
-        </h4>
+        </h3>
 
 
         <p>
         <p>
           Besoin d’aide ? <br />
           Besoin d’aide ? <br />
@@ -91,7 +91,7 @@ li {
   border-radius: 3rem;
   border-radius: 3rem;
 }
 }
 
 
-h4 {
+h3 {
   margin-bottom: 0.7rem;
   margin-bottom: 0.7rem;
   font-weight: 400;
   font-weight: 400;
   font-size: 2rem;
   font-size: 2rem;

+ 0 - 0
components/Home/News.vue


+ 3 - 28
components/Home/Promotion.vue

@@ -2,15 +2,9 @@
   <LayoutContainer>
   <LayoutContainer>
     <v-row class="gestion">
     <v-row class="gestion">
       <v-col>
       <v-col>
-        <div class="d-flex justify-center align-center flex-column">
-          <v-icon
-            size="6"
-            icon="fas fa-circle"
-          />
-          <h5>
-            GESTION ET PROMOTION
-          </h5>
-        </div>
+        <LayoutUISectionTitle class="alt-theme">
+          GESTION ET PROMOTION
+        </LayoutUISectionTitle>
 
 
         <v-row>
         <v-row>
           <p class="text-block">
           <p class="text-block">
@@ -102,9 +96,6 @@
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
-import { useDisplay } from "vuetify";
-
-const { mdAndDown } = useDisplay();
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
@@ -119,22 +110,6 @@ const { mdAndDown } = useDisplay();
     background: var(--primary-color);
     background: var(--primary-color);
   }
   }
 
 
-  h5 {
-    font-size: 1rem;
-    line-height: 1rem;
-    margin-top: 1rem;
-    color: var(--secondary-color);
-    text-align: center;
-    letter-spacing: 2.16px;
-    text-transform: uppercase;
-  }
-
-  .fa-circle{
-    margin-top: 1rem;
-    color: var(--on-primary-color);
-    margin-right: 1rem;
-  }
-
   .text-block {
   .text-block {
     font-weight: 600;
     font-weight: 600;
     font-size: 3rem;
     font-size: 3rem;

+ 6 - 28
components/Home/Reviews.vue

@@ -1,19 +1,13 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
     <div class="container-1">
     <div class="container-1">
-      <div class="d-flex justify-center align-center flex-column">
-        <v-icon
-          icon="fa-solid fa-circle"
-          size="6"
-        />
-        <h6>
-          Avis Clients
-        </h6>
-      </div>
+      <LayoutUISectionTitle>
+        Avis Clients
+      </LayoutUISectionTitle>
 
 
-      <h3>
+      <h4>
         C'est vous qui le dites
         C'est vous qui le dites
-      </h3>
+      </h4>
     </div>
     </div>
 
 
     <!-- Ecrans larges -->
     <!-- Ecrans larges -->
@@ -274,22 +268,7 @@ const items: Ref<Array<{ src: string }>> = ref([
   background-color: var(--neutral-color);
   background-color: var(--neutral-color);
   height: 22rem;
   height: 22rem;
 
 
-  .v-icon {
-    margin-top: 1rem;
-    color: var(--secondary-color);
-  }
-
-  h6 {
-    font-size: 1rem;
-    line-height: 1rem;
-    margin-top: 1rem;
-    text-align: center;
-    letter-spacing: 2.16px;
-    text-transform: uppercase;
-    margin-bottom: 0.5rem;
-  }
-
-  h3 {
+  h4 {
     font-size: 2rem;
     font-size: 2rem;
     line-height: 42px;
     line-height: 42px;
     text-align: center;
     text-align: center;
@@ -299,7 +278,6 @@ const items: Ref<Array<{ src: string }>> = ref([
   @media (max-width: 600px) {
   @media (max-width: 600px) {
     margin-bottom: 24px;
     margin-bottom: 24px;
   }
   }
-
 }
 }
 
 
 .container-2 {
 .container-2 {

+ 6 - 29
components/Home/Solution.vue

@@ -4,20 +4,13 @@ Section "Solutions" de la page d'accueil
 
 
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
+    <LayoutUISectionTitle class="alt-theme">
+      3 solutions
+    </LayoutUISectionTitle>
 
 
-    <div class="d-flex justify-center align-center flex-column">
-      <v-icon
-        size="6"
-        icon="fas fa-circle"
-      />
-      <h5>
-        3 solutions
-      </h5>
-    </div>
-
-    <h3 class="text-center" >
+    <h4 class="text-center" >
       Trouvez la solution faites pour vous
       Trouvez la solution faites pour vous
-    </h3>
+    </h4>
 
 
     <v-row class="solutions center-90">
     <v-row class="solutions center-90">
       <v-col
       <v-col
@@ -157,23 +150,7 @@ const solutions: Array<SolutionItem> = [
   position: relative;
   position: relative;
 }
 }
 
 
-h5 {
-  font-size: 1rem;
-  line-height: 1rem;
-  margin-top: 1rem;
-  color: var(--secondary-color);
-  text-align: center;
-  letter-spacing: 2.16px;
-  text-transform: uppercase;
-}
-
-.fa-circle {
-  margin-top: 1rem;
-  color: var(--on-primary-color);
-  margin-right: 1rem;
-}
-
-h3 {
+h4 {
   margin-top: 0.5rem;
   margin-top: 0.5rem;
   font-size: 2.8rem;
   font-size: 2.8rem;
   line-height: 42px;
   line-height: 42px;

+ 25 - 4
components/JoinUs/Form.vue

@@ -51,17 +51,20 @@
           <v-file-input
           <v-file-input
             id="jobApplicationResume"
             id="jobApplicationResume"
             v-model="resumeUpload"
             v-model="resumeUpload"
-            :rules="[validateResume]"
+            :rules="[validateResume, validateFileSize]"
             label="Dépôt de CV*"
             label="Dépôt de CV*"
             accept=".pdf, .jpeg, .png"
             accept=".pdf, .jpeg, .png"
+            show-size
             required
             required
           />
           />
 
 
           <v-file-input
           <v-file-input
             id="jobApplicationMotivationLetter"
             id="jobApplicationMotivationLetter"
             v-model="motivationLetterUpload"
             v-model="motivationLetterUpload"
+            :rules="[validateFileSize]"
             label="Dépôt de lettre de motivation"
             label="Dépôt de lettre de motivation"
             accept=".pdf, .jpeg, .png"
             accept=".pdf, .jpeg, .png"
+            show-size
           />
           />
 
 
           <v-textarea
           <v-textarea
@@ -86,7 +89,7 @@
 
 
       <v-card-actions class="justify-center">
       <v-card-actions class="justify-center">
         <v-btn
         <v-btn
-          class="btn-more mb-4"
+          class="btn-more mb-4 submit"
           @click="submit"
           @click="submit"
         >
         >
           Envoyer
           Envoyer
@@ -124,6 +127,9 @@ const leftCars: ComputedRef<number> = computed(() =>
   maxMessageLength - (jobApplication.message ? jobApplication.message.length : 0)
   maxMessageLength - (jobApplication.message ? jobApplication.message.length : 0)
 )
 )
 
 
+// Taille maximum en Mo
+const maxFileSize = 5
+
 const validateName = (name: string | null) => !!name || "Le nom est obligatoire";
 const validateName = (name: string | null) => !!name || "Le nom est obligatoire";
 
 
 const validateSurname = (surname: string | null) => !!surname || "Le prénom est obligatoire";
 const validateSurname = (surname: string | null) => !!surname || "Le prénom est obligatoire";
@@ -134,9 +140,16 @@ const validateEmail = (email: string | null) =>
 const validatePhone = (email: string | null) =>
 const validatePhone = (email: string | null) =>
   (!!email && /^((\+|00)33\s?|0)[1-7]([\s.]?\d{2}){4}$/.test(email)) || "Le numéro de téléphone doit être valide";
   (!!email && /^((\+|00)33\s?|0)[1-7]([\s.]?\d{2}){4}$/.test(email)) || "Le numéro de téléphone doit être valide";
 
 
-const validateResume = (surname: string | null) =>
+const validateResume = () =>
   resumeUpload.value !== null && resumeUpload.value[0] !== null || "Vous devez joindre un CV à l'un des formats indiqués";
   resumeUpload.value !== null && resumeUpload.value[0] !== null || "Vous devez joindre un CV à l'un des formats indiqués";
 
 
+const validateFileSize = () =>
+  resumeUpload.value !== null
+  && resumeUpload.value[0] !== null
+  //@ts-ignore
+  && resumeUpload.value[0].size < (maxFileSize * 1024 * 1024)
+  || "La taille du fichier ne doit pas dépasser " + maxFileSize + " Mo";
+
 const validateNonEmptyMessage = (message: string | null) =>
 const validateNonEmptyMessage = (message: string | null) =>
   (!!message && message.length > 0) ||
   (!!message && message.length > 0) ||
   "Le message ne peut pas être vide";
   "Le message ne peut pas être vide";
@@ -179,5 +192,13 @@ const submit = async () => {
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
-
+.submit {
+  width: 100%;
+  margin-bottom: 0 !important;
+  height: 55px;
+}
+
+.submit:hover {
+  background-color: var(--on-neutral-color-extra-light);
+}
 </style>
 </style>

+ 5 - 0
components/JoinUs/MissionDetail.vue

@@ -25,6 +25,11 @@
         </div>
         </div>
 
 
         <div v-else-if="job !== null">
         <div v-else-if="job !== null">
+          <CommonMeta
+            :title="job.title"
+            description="Offre d'emploi"
+          />
+
           <LayoutUITitlePage>
           <LayoutUITitlePage>
             {{ job.title }}
             {{ job.title }}
           </LayoutUITitlePage>
           </LayoutUITitlePage>

+ 35 - 10
components/Layout/Footer/Footer.vue

@@ -60,7 +60,32 @@
             </v-row>
             </v-row>
           </v-col>
           </v-col>
 
 
-          <!-- Quatrième section : liens espace client (écrans larges seulement) -->
+          <!-- Quatrième section : A propos (écrans larges seulement) -->
+          <v-col v-if="mdAndUp" cols="2">
+            <v-row>
+              <h5>
+                A PROPOS
+              </h5>
+            </v-row>
+            <v-row>
+              <nuxt-link to="/qui-sommes-nous">
+                Qui sommes-nous
+              </nuxt-link>
+            </v-row>
+            <v-row>
+              <nuxt-link to="/nous-rejoindre">
+                Nous rejoindre
+              </nuxt-link
+              >
+            </v-row>
+            <v-row>
+              <nuxt-link to="/nous-contacter">
+                Nous contacter
+              </nuxt-link>
+            </v-row>
+          </v-col>
+
+          <!-- Cinquième section : liens espace client (écrans larges seulement) -->
           <v-col v-if="mdAndUp" cols="2">
           <v-col v-if="mdAndUp" cols="2">
             <v-row>
             <v-row>
               <h5>
               <h5>
@@ -68,7 +93,7 @@
               </h5>
               </h5>
             </v-row>
             </v-row>
             <v-row>
             <v-row>
-              <nuxt-link href="https://ressources.opentalent.fr/display/FAQ/Accueil">
+              <nuxt-link href="https://ressources.opentalent.fr/display/FAQ/Accueil" target="_blank">
                 Foire Aux Questions
                 Foire Aux Questions
               </nuxt-link>
               </nuxt-link>
             </v-row>
             </v-row>
@@ -84,7 +109,7 @@
             </v-row>
             </v-row>
           </v-col>
           </v-col>
 
 
-          <!-- Cinquième section : liens réseaux sociaux (écrans larges seulement) -->
+          <!-- Sixième section : liens réseaux sociaux (écrans larges seulement) -->
           <v-col v-if="mdAndUp" cols="2">
           <v-col v-if="mdAndUp" cols="2">
             <v-row class="justify-center">
             <v-row class="justify-center">
               <h5>
               <h5>
@@ -104,7 +129,7 @@
                 <nuxt-link
                 <nuxt-link
                   href="https://twitter.com/Opentalent_FRA"
                   href="https://twitter.com/Opentalent_FRA"
                   target="_blank"
                   target="_blank"
-                  class="fa-brands fa-square-twitter"
+                  class="fa-brands fa-square-x-twitter"
                 />
                 />
               </v-col>
               </v-col>
               <v-col cols="2">
               <v-col cols="2">
@@ -191,17 +216,17 @@
       <div class="footnotes">
       <div class="footnotes">
         <v-row justify="center">
         <v-row justify="center">
           <p class="mt-6">
           <p class="mt-6">
-            <a href="/mentions-legales" target="_blank">
+            <nuxt-link to="/mentions-legales">
               Mentions légales
               Mentions légales
-            </a>
+            </nuxt-link>
             -
             -
-            <a href="/politique-de-confidentialite-et-protection-des-donnees-personnelles" target="_blank">
+            <nuxt-link to="/politique-de-confidentialite-et-protection-des-donnees-personnelles">
               Politiques de cookies
               Politiques de cookies
-            </a>
+            </nuxt-link>
             -
             -
-            <a href="/CGV" target="_blank">
+            <nuxt-link to="/CGV">
               Conditions Générales de Ventes
               Conditions Générales de Ventes
-            </a>
+            </nuxt-link>
           </p>
           </p>
         </v-row>
         </v-row>
 
 

+ 41 - 0
components/Layout/UI/SectionTitle.vue

@@ -0,0 +1,41 @@
+<!-- Titre H2 -->
+<template>
+  <div class="d-flex justify-center align-center flex-column">
+    <v-icon
+      size="6"
+      icon="fas fa-circle"
+    />
+    <h3>
+      <slot />
+    </h3>
+  </div>
+</template>
+
+<script setup lang="ts">
+</script>
+
+<style scoped lang="scss">
+h3 {
+  font-size: 1rem;
+  line-height: 1rem;
+  margin-top: 1rem;
+  text-align: center;
+  letter-spacing: 2.16px;
+  text-transform: uppercase;
+  color: var(--primary-color) !important;
+}
+
+.alt-theme h3 {
+  color: var(--on-primary-color-alt) !important;
+}
+
+.fa-circle {
+  margin-top: 1rem;
+  margin-right: 1rem;
+  color: var(--on-neutral-color-light) !important;
+}
+
+.alt-theme .fa-circle {
+  color: var(--on-primary-color) !important;
+}
+</style>

+ 3 - 7
components/Layout/UI/Title.vue

@@ -1,13 +1,9 @@
 <!-- Titre H2 -->
 <!-- Titre H2 -->
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
-    <!--
-    TODO: dans les faits c'est plutôt le sous-titre (même s'il apparait en plus gros)
-    voir à passer en H3, ou même en autre chose qu'un titre
-    -->
-    <h2>
+    <h3>
       <slot />
       <slot />
-    </h2>
+    </h3>
   </LayoutContainer>
   </LayoutContainer>
 </template>
 </template>
 
 
@@ -15,7 +11,7 @@
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
-  h2 {
+  h3 {
     color: var(--on-neutral-color);
     color: var(--on-neutral-color);
     font-weight: 600;
     font-weight: 600;
     font-size: 3rem;
     font-size: 3rem;

+ 3 - 3
components/Logiciels/Artist/Abonnement.vue

@@ -52,9 +52,9 @@
         </v-col>
         </v-col>
 
 
         <v-col cols="8">
         <v-col cols="8">
-          <h5>
+          <h3>
             Opentalent Artist, <br> la solution que vous attendiez...
             Opentalent Artist, <br> la solution que vous attendiez...
-          </h5>
+          </h3>
 
 
           <p class="solution">
           <p class="solution">
             Conçu pour les structures artistiques telles que chorales,
             Conçu pour les structures artistiques telles que chorales,
@@ -147,7 +147,7 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
   text-align: justify
   text-align: justify
 }
 }
 
 
-h5 {
+h3 {
   color: var(--primary-color);
   color: var(--primary-color);
   margin-bottom: 4rem;
   margin-bottom: 4rem;
   font-size: 42px;
   font-size: 42px;

+ 4 - 4
components/Logiciels/Manager/Formation.vue

@@ -22,13 +22,13 @@
             </div>
             </div>
 
 
             <div>
             <div>
-              <h4>
+              <h3>
                 {{ formation.sessions }}
                 {{ formation.sessions }}
-              </h4>
+              </h3>
 
 
-              <h3>
+              <h4>
                 {{ formation.title }}
                 {{ formation.title }}
-              </h3>
+              </h4>
 
 
               <p class="details mb-5">
               <p class="details mb-5">
                 {{ formation.description }}
                 {{ formation.description }}

+ 4 - 4
components/Logiciels/School/Formations.vue

@@ -22,13 +22,13 @@
             </div>
             </div>
 
 
             <div>
             <div>
-              <h4>
+              <h3>
                 {{ formation.sessions }}
                 {{ formation.sessions }}
-              </h4>
+              </h3>
 
 
-              <h3>
+              <h4>
                 {{ formation.title }}
                 {{ formation.title }}
-              </h3>
+              </h4>
 
 
               <p class="details mb-5">
               <p class="details mb-5">
                 {{ formation.description }}
                 {{ formation.description }}

+ 8 - 3
components/News/Details.vue

@@ -34,15 +34,20 @@
         </div>
         </div>
 
 
         <div v-else-if="newsItem !== null" class="news">
         <div v-else-if="newsItem !== null" class="news">
+          <CommonMeta
+            :title="newsItem.title"
+            :description="newsItem.leadText"
+          />
+
           <v-row class="center-90">
           <v-row class="center-90">
             <v-col cols="6">
             <v-col cols="6">
               <v-img :src="getImageUrl(newsItem.attachment)"/>
               <v-img :src="getImageUrl(newsItem.attachment)"/>
             </v-col>
             </v-col>
 
 
             <v-col cols="6">
             <v-col cols="6">
-              <h4>
+              <h1>
                 {{ newsItem.title }}
                 {{ newsItem.title }}
-              </h4>
+              </h1>
             </v-col>
             </v-col>
           </v-row>
           </v-row>
 
 
@@ -116,7 +121,7 @@ const getImageUrl = (attachment: string): string | null => {
     margin-right: auto;
     margin-right: auto;
   }
   }
 
 
-  h4 {
+  h1 {
     margin-top: 11rem;
     margin-top: 11rem;
     text-decoration: none;
     text-decoration: none;
     text-transform: uppercase;
     text-transform: uppercase;

+ 35 - 6
components/Webinaire/Catalogue.vue

@@ -8,12 +8,16 @@
       </v-row>
       </v-row>
 
 
       <v-row class="center-90">
       <v-row class="center-90">
-        <LayoutUITitlePage>
-          SIMPLIFIEZ LA GESTION ET LA COMMUNICATION DE VOTRE STRUCTURE CULTURELLE
-          <template #subtitle>
-            Votre orchestre, école de danse ou votre fédération mérite les outils les plus performants du marché pour briller en toute simplicité. Découvrez comment nos outils peuvent transformer votre quotidien :
-          </template>
-        </LayoutUITitlePage>
+        <v-col cols="12" class="section-title">
+          <h3>
+            SIMPLIFIEZ LA GESTION ET LA COMMUNICATION DE VOTRE STRUCTURE CULTURELLE
+          </h3>
+
+          <div class="strong-label">
+            Votre orchestre, école de danse ou votre fédération mérite les outils les plus performants du marché pour briller en toute simplicité.
+            Découvrez comment nos outils peuvent transformer votre quotidien :
+          </div>
+        </v-col>
       </v-row>
       </v-row>
 
 
       <v-row class="center-90 catalog">
       <v-row class="center-90 catalog">
@@ -277,6 +281,31 @@ const closeModal = () => {
   background-color: transparent !important;
   background-color: transparent !important;
 }
 }
 
 
+.section-title {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+
+  h3 {
+    font-size: 2rem;
+    letter-spacing: .1rem;
+    line-height: 3.5rem;
+    margin-bottom: .5rem;
+    margin-top: 2rem;
+    text-transform: uppercase;
+  }
+
+  .strong-label {
+    font-size: 1.5rem;
+    font-weight: 400 !important;
+    letter-spacing: .1rem;
+    line-height: 2rem;
+    margin-bottom: 1rem;
+    text-align: center;
+    text-transform: uppercase;
+  }
+}
+
 .catalog {
 .catalog {
   padding: 2rem;
   padding: 2rem;
 
 

+ 36 - 4
components/Webinaire/FAQ.vue

@@ -9,10 +9,17 @@ Foire aux questions
       </LayoutUISubTitle>
       </LayoutUISubTitle>
     </v-row>
     </v-row>
 
 
-    <LayoutUITitlePage>
-      Tout savoir sur nos webinaire en ligne
-      <template #subtitle>Les questions les plus fréquentes</template>
-    </LayoutUITitlePage>
+    <v-row class="center-90">
+      <v-col cols="12" class="section-title">
+        <h3>
+          Tout savoir sur nos webinaire en ligne
+        </h3>
+
+        <div class="strong-label">
+          Les questions les plus fréquentes
+        </div>
+      </v-col>
+    </v-row>
 
 
     <div class="faq">
     <div class="faq">
       <div
       <div
@@ -85,6 +92,31 @@ function isOpen(index: number) {
 
 
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
+.section-title {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+
+  h3 {
+    font-size: 2rem;
+    letter-spacing: .1rem;
+    line-height: 3.5rem;
+    margin-bottom: .5rem;
+    margin-top: 2rem;
+    text-transform: uppercase;
+  }
+
+  .strong-label {
+    font-size: 1.5rem;
+    font-weight: 400 !important;
+    letter-spacing: .1rem;
+    line-height: 2rem;
+    margin-bottom: 1rem;
+    text-align: center;
+    text-transform: uppercase;
+  }
+}
+
 .faq {
 .faq {
   padding: 1rem;
   padding: 1rem;
   width: 90%;
   width: 90%;

+ 5 - 0
pages/CGV.vue

@@ -1,4 +1,9 @@
 <template>
 <template>
+  <CommonMeta
+    title="Conditions générales de vente - Opentalent"
+    description="Conditions générales de vente"
+  />
+
   <LayoutUITitlePage>
   <LayoutUITitlePage>
     Conditions générales de vente
     Conditions générales de vente
   </LayoutUITitlePage>
   </LayoutUITitlePage>

+ 1 - 0
pages/actualites/[id].vue

@@ -1,4 +1,5 @@
 <template>
 <template>
+  <!-- Balises meta: définies dans le component Details -->
   <NewsDetails />
   <NewsDetails />
 
 
   <LayoutFooterPrefooter />
   <LayoutFooterPrefooter />

+ 5 - 0
pages/actualites/index.vue

@@ -1,4 +1,9 @@
 <template>
 <template>
+  <CommonMeta
+    title="Actualités - Opentalent"
+    description="Les dernières actualités"
+  />
+
   <NewsList />
   <NewsList />
 
 
   <LayoutFooterPrefooter />
   <LayoutFooterPrefooter />

+ 6 - 1
pages/formations.vue

@@ -1,8 +1,13 @@
 <template>
 <template>
+  <CommonMeta
+    title="Formation - Opentalent"
+    description="Prise en main ou piqûre de rappel, on est toujours à vos côtés."
+  />
+
   <LayoutUITitlePage>
   <LayoutUITitlePage>
     Formation
     Formation
     <template #subtitle>
     <template #subtitle>
-      Prise en main ou piqûre de rappel,on est toujours à vos côtés.
+      Prise en main ou piqûre de rappel, on est toujours à vos côtés.
     </template>
     </template>
   </LayoutUITitlePage>
   </LayoutUITitlePage>
 
 

+ 4 - 0
pages/index.vue

@@ -1,4 +1,8 @@
 <template>
 <template>
+  <CommonMeta
+    title="Opentalent - Logiciels culturels"
+    description="Une gamme de logiciels adaptée à chaque structure culturelle"
+  />
 
 
   <CommonActionMenu />
   <CommonActionMenu />
 
 

+ 5 - 0
pages/mentions-legales.vue

@@ -1,4 +1,9 @@
 <template>
 <template>
+  <CommonMeta
+    title="Mentions légales - Opentalent"
+    description="Mentions légales"
+  />
+
   <LayoutUITitlePage>
   <LayoutUITitlePage>
     Mentions légales
     Mentions légales
   </LayoutUITitlePage>
   </LayoutUITitlePage>

+ 5 - 0
pages/nous-contacter.vue

@@ -1,4 +1,9 @@
 <template>
 <template>
+  <CommonMeta
+    title="Nous contacter - Opentalent"
+    description="Notre équipe est là pour vous. Contactez-nous!"
+  />
+
   <ContactBanner />
   <ContactBanner />
 
 
   <ContactForm />
   <ContactForm />

+ 2 - 0
pages/nous-rejoindre/[id].vue

@@ -1,4 +1,6 @@
 <template>
 <template>
+  <!-- Balises meta: définies dans le component Details -->
+
   <CommonBanner
   <CommonBanner
     imageSrc="/images/actu/pub.png"
     imageSrc="/images/actu/pub.png"
     imageAlt="banner"
     imageAlt="banner"

+ 7 - 0
pages/nous-rejoindre/index.vue

@@ -1,4 +1,9 @@
 <template>
 <template>
+  <CommonMeta
+    title="Nous rejoindre - Opentalent"
+    description="Offres d'emploi et candidatures"
+  />
+
   <LayoutUITitlePage>
   <LayoutUITitlePage>
     Nous rejoindre
     Nous rejoindre
   </LayoutUITitlePage>
   </LayoutUITitlePage>
@@ -40,3 +45,5 @@ h3 {
   width: 100%;
   width: 100%;
 }
 }
 </style>
 </style>
+<script setup lang="ts">
+</script>

+ 5 - 1
pages/opentalent_artist.vue

@@ -1,4 +1,9 @@
 <template>
 <template>
+  <CommonMeta
+    title="Opentalent Artist"
+    description="Description du produit Opentalent Artist"
+  />
+
   <div class="theme-artist" >
   <div class="theme-artist" >
     <CommonActionMenu :actions="stickyMenuActions" />
     <CommonActionMenu :actions="stickyMenuActions" />
 
 
@@ -13,7 +18,6 @@
       image-alt="banner artist"
       image-alt="banner artist"
       square-text="Orchestres, chorales, compagnies de danse, de cirque et de théâtre"
       square-text="Orchestres, chorales, compagnies de danse, de cirque et de théâtre"
       logo-src="/images/logo/logiciels/Artist-noir.png"
       logo-src="/images/logo/logiciels/Artist-noir.png"
-      :logo-alt-theme="true"
     />
     />
 
 
     <CommonMenuScroll :menus="menus" class="mb-6" />
     <CommonMenuScroll :menus="menus" class="mb-6" />

+ 5 - 1
pages/opentalent_manager.vue

@@ -1,4 +1,9 @@
 <template>
 <template>
+  <CommonMeta
+    title="Opentalent Manager"
+    description="Description du produit Opentalent Manager"
+  />
+
   <div class="theme-manager">
   <div class="theme-manager">
     <CommonBannerTitle
     <CommonBannerTitle
       leftText="School"
       leftText="School"
@@ -17,7 +22,6 @@
       imageAlt="line"
       imageAlt="line"
       squareText="Fédérations, confédérations et collectivités"
       squareText="Fédérations, confédérations et collectivités"
       logoSrc="/images/logo/logiciels/Manager-noir.png"
       logoSrc="/images/logo/logiciels/Manager-noir.png"
-      :logo-alt-theme="true"
     />
     />
 
 
     <CommonMenuScroll :menus="menus" class="mb-6" />
     <CommonMenuScroll :menus="menus" class="mb-6" />

+ 5 - 0
pages/opentalent_school.vue

@@ -1,4 +1,9 @@
 <template>
 <template>
+  <CommonMeta
+    title="Opentalent School"
+    description="Description du produit Opentalent School"
+  />
+
   <div class="theme-school">
   <div class="theme-school">
     <LogicielsTitle>
     <LogicielsTitle>
       <template #left-text>Artist</template>
       <template #left-text>Artist</template>

+ 5 - 0
pages/politique-de-confidentialite-et-protection-des-donnees-personnelles.vue

@@ -1,4 +1,9 @@
 <template>
 <template>
+  <CommonMeta
+    title="Politique de confidentialité - Opentalent"
+    description="Politique de confidentialité"
+  />
+
   <LayoutUITitlePage>
   <LayoutUITitlePage>
     POLITIQUE DE CONFIDENTIALITÉ
     POLITIQUE DE CONFIDENTIALITÉ
   </LayoutUITitlePage>
   </LayoutUITitlePage>

+ 5 - 0
pages/qui-sommes-nous.vue

@@ -3,6 +3,11 @@
 -->
 -->
 
 
 <template>
 <template>
+  <CommonMeta
+    title="Qui sommes-nous ? - Opentalent"
+    description="Imaginé par des musiciens pour des musiciens, Opentalent se veut être la référence pour la gestion et la promotion du spectacle vivant sur les territoires."
+  />
+
   <LayoutUITitlePage class="mb-12">
   <LayoutUITitlePage class="mb-12">
     Qui sommes-nous ?
     Qui sommes-nous ?
   </LayoutUITitlePage>
   </LayoutUITitlePage>

+ 5 - 0
pages/webinaires.vue

@@ -1,4 +1,9 @@
 <template>
 <template>
+  <CommonMeta
+    title="Webinaires - Opentalent"
+    description="Partez à la découverte de vos logiciels Opentalent."
+  />
+
   <CommonActionMenu />
   <CommonActionMenu />
 
 
   <LayoutUITitlePage>
   <LayoutUITitlePage>