Browse Source

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

Olivier Massot 1 năm trước cách đây
mục cha
commit
627cd2ff2a
39 tập tin đã thay đổi với 346 bổ sung154 xóa
  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">
                   <div class="description-container">
-                    <h3>
+                    <span class="year">
                       {{ slide.year }}
-                    </h3>
+                    </span>
 
                     <h4>
                       {{ slide.title }}
@@ -260,8 +260,9 @@ const slides: Array<ChronologyItem> = [
     border-top-right-radius: 20%;
     border-bottom-right-radius: 20%;
 
-    h3 {
+    .year {
       font-size: 1.8rem;
+      font-weight: 500;
     }
 
     h4 {

+ 4 - 4
components/About/Presentation.vue

@@ -9,11 +9,11 @@
         </v-col>
 
         <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
             la référence pour la gestion et la promotion du spectacle vivant sur
             les territoires.”
-          </h3>
+          </div>
         </v-col>
       </v-row>
 
@@ -41,9 +41,9 @@
             pour en faire la promotion.
           </p>
 
-          <h4>
+          <h3>
             La Culture au service du développement territorial
-          </h4>
+          </h3>
 
           <p>
             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 {
   position: absolute;
-  bottom: 0.4rem;
+  bottom: 0;
   right: 13rem;
   width: 13rem;
-  height: 10rem;
+  height: 10.4rem;
 
   img {
     width: 100%;

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

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

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

@@ -3,7 +3,7 @@
     <v-row>
       <v-col cols="6">
         <LayoutUISubTitle>
-          Découvrez TOUTES LES FONCTIONNALITÉS DE NOTRE solution
+          Découvrez toutes les fonctionnalités de notre solution
         </LayoutUISubTitle>
 
         <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%;
   }
 
+  :deep(.v-card-item__content) {
+    display: flex;
+    flex-direction: column;
+  }
+
   .v-card-text {
     text-align: justify;
     min-height: 120px;
     overflow: auto;
     font-size: 0.9rem;
+    flex: 1;
   }
 
   footer {
@@ -195,8 +201,8 @@ const goNext = () => {
 .v-card {
   padding: 0 0.5rem;
   border-radius: 1rem;
-  min-height: 220px;
-  max-height: 250px;
+  min-height: 300px;
+  max-height: 300px;
   margin-top: 2rem;
   margin-bottom: 0.6rem;
 }

+ 3 - 3
components/Home/EventAgenda.vue

@@ -5,10 +5,10 @@ Section "Agenda" de la page d'accueil
   <LayoutContainer>
     <div class="container">
       <div class="d-flex align-center justify-center">
-        <h2>
+        <h3>
           Retrouvez tous vos évènements dans l'agenda et référencez vous dans
           l'annuaire
-        </h2>
+        </h3>
       </div>
 
       <v-row justify="center">
@@ -52,7 +52,7 @@ const { mdAndDown } = useDisplay();
   }
 }
 
-h2 {
+h3 {
   height: 9rem;
   font-weight: 400;
   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 cols="12" lg="6" class="col">
-        <h4>
+        <h3>
           Notre équipe est à vos côtés
           pour vous guider
-        </h4>
+        </h3>
 
         <p>
           Besoin d’aide ? <br />
@@ -91,7 +91,7 @@ li {
   border-radius: 3rem;
 }
 
-h4 {
+h3 {
   margin-bottom: 0.7rem;
   font-weight: 400;
   font-size: 2rem;

+ 0 - 0
components/Home/News.vue


+ 3 - 28
components/Home/Promotion.vue

@@ -2,15 +2,9 @@
   <LayoutContainer>
     <v-row class="gestion">
       <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>
           <p class="text-block">
@@ -102,9 +96,6 @@
 </template>
 
 <script setup lang="ts">
-import { useDisplay } from "vuetify";
-
-const { mdAndDown } = useDisplay();
 </script>
 
 <style scoped lang="scss">
@@ -119,22 +110,6 @@ const { mdAndDown } = useDisplay();
     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 {
     font-weight: 600;
     font-size: 3rem;

+ 6 - 28
components/Home/Reviews.vue

@@ -1,19 +1,13 @@
 <template>
   <LayoutContainer>
     <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
-      </h3>
+      </h4>
     </div>
 
     <!-- Ecrans larges -->
@@ -274,22 +268,7 @@ const items: Ref<Array<{ src: string }>> = ref([
   background-color: var(--neutral-color);
   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;
     line-height: 42px;
     text-align: center;
@@ -299,7 +278,6 @@ const items: Ref<Array<{ src: string }>> = ref([
   @media (max-width: 600px) {
     margin-bottom: 24px;
   }
-
 }
 
 .container-2 {

+ 6 - 29
components/Home/Solution.vue

@@ -4,20 +4,13 @@ Section "Solutions" de la page d'accueil
 
 <template>
   <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
-    </h3>
+    </h4>
 
     <v-row class="solutions center-90">
       <v-col
@@ -157,23 +150,7 @@ const solutions: Array<SolutionItem> = [
   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;
   font-size: 2.8rem;
   line-height: 42px;

+ 25 - 4
components/JoinUs/Form.vue

@@ -51,17 +51,20 @@
           <v-file-input
             id="jobApplicationResume"
             v-model="resumeUpload"
-            :rules="[validateResume]"
+            :rules="[validateResume, validateFileSize]"
             label="Dépôt de CV*"
             accept=".pdf, .jpeg, .png"
+            show-size
             required
           />
 
           <v-file-input
             id="jobApplicationMotivationLetter"
             v-model="motivationLetterUpload"
+            :rules="[validateFileSize]"
             label="Dépôt de lettre de motivation"
             accept=".pdf, .jpeg, .png"
+            show-size
           />
 
           <v-textarea
@@ -86,7 +89,7 @@
 
       <v-card-actions class="justify-center">
         <v-btn
-          class="btn-more mb-4"
+          class="btn-more mb-4 submit"
           @click="submit"
         >
           Envoyer
@@ -124,6 +127,9 @@ const leftCars: ComputedRef<number> = computed(() =>
   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 validateSurname = (surname: string | null) => !!surname || "Le prénom est obligatoire";
@@ -134,9 +140,16 @@ const validateEmail = (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";
 
-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";
 
+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) =>
   (!!message && message.length > 0) ||
   "Le message ne peut pas être vide";
@@ -179,5 +192,13 @@ const submit = async () => {
 </script>
 
 <style scoped lang="scss">
-
+.submit {
+  width: 100%;
+  margin-bottom: 0 !important;
+  height: 55px;
+}
+
+.submit:hover {
+  background-color: var(--on-neutral-color-extra-light);
+}
 </style>

+ 5 - 0
components/JoinUs/MissionDetail.vue

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

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

@@ -60,7 +60,32 @@
             </v-row>
           </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-row>
               <h5>
@@ -68,7 +93,7 @@
               </h5>
             </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
               </nuxt-link>
             </v-row>
@@ -84,7 +109,7 @@
             </v-row>
           </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-row class="justify-center">
               <h5>
@@ -104,7 +129,7 @@
                 <nuxt-link
                   href="https://twitter.com/Opentalent_FRA"
                   target="_blank"
-                  class="fa-brands fa-square-twitter"
+                  class="fa-brands fa-square-x-twitter"
                 />
               </v-col>
               <v-col cols="2">
@@ -191,17 +216,17 @@
       <div class="footnotes">
         <v-row justify="center">
           <p class="mt-6">
-            <a href="/mentions-legales" target="_blank">
+            <nuxt-link to="/mentions-legales">
               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
-            </a>
+            </nuxt-link>
             -
-            <a href="/CGV" target="_blank">
+            <nuxt-link to="/CGV">
               Conditions Générales de Ventes
-            </a>
+            </nuxt-link>
           </p>
         </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 -->
 <template>
   <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 />
-    </h2>
+    </h3>
   </LayoutContainer>
 </template>
 
@@ -15,7 +11,7 @@
 </script>
 
 <style scoped lang="scss">
-  h2 {
+  h3 {
     color: var(--on-neutral-color);
     font-weight: 600;
     font-size: 3rem;

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

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

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

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

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

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

+ 8 - 3
components/News/Details.vue

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

+ 35 - 6
components/Webinaire/Catalogue.vue

@@ -8,12 +8,16 @@
       </v-row>
 
       <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 class="center-90 catalog">
@@ -277,6 +281,31 @@ const closeModal = () => {
   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 {
   padding: 2rem;
 

+ 36 - 4
components/Webinaire/FAQ.vue

@@ -9,10 +9,17 @@ Foire aux questions
       </LayoutUISubTitle>
     </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
@@ -85,6 +92,31 @@ function isOpen(index: number) {
 
 
 <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 {
   padding: 1rem;
   width: 90%;

+ 5 - 0
pages/CGV.vue

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

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

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

+ 5 - 0
pages/actualites/index.vue

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

+ 6 - 1
pages/formations.vue

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

+ 4 - 0
pages/index.vue

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

+ 5 - 0
pages/mentions-legales.vue

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

+ 5 - 0
pages/nous-contacter.vue

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

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

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

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

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

+ 5 - 1
pages/opentalent_artist.vue

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

+ 5 - 1
pages/opentalent_manager.vue

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

+ 5 - 0
pages/opentalent_school.vue

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

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

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

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

@@ -3,6 +3,11 @@
 -->
 
 <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">
     Qui sommes-nous ?
   </LayoutUITitlePage>

+ 5 - 0
pages/webinaires.vue

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