Quellcode durchsuchen

Merge branch 'feature/SEO_finalization' into develop

Olivier Massot vor 1 Jahr
Ursprung
Commit
0729c2a752
55 geänderte Dateien mit 318 neuen und 173 gelöschten Zeilen
  1. 10 0
      components/About/Equipe.vue
  2. 1 0
      components/About/FAQ.vue
  3. 12 2
      components/About/Logiciels.vue
  4. 5 1
      components/About/Presentation.vue
  5. 10 1
      components/About/Valeurs.vue
  6. 1 1
      components/Common/Banner.vue
  7. 1 0
      components/Common/Card/Benefit.vue
  8. 2 2
      components/Common/Carousel/Clients.vue
  9. 6 0
      components/Common/Presentation.vue
  10. 2 7
      components/Contact/Banner.vue
  11. 0 0
      components/Formation/Banner.vue
  12. 4 1
      components/Formation/Certification.vue
  13. 1 0
      components/Formation/OPCA.vue
  14. 1 0
      components/Formation/Participation.vue
  15. 2 0
      components/Formation/Presentation.vue
  16. 10 0
      components/Home/Caroussel.vue
  17. 1 1
      components/Home/EventAgenda.vue
  18. 4 1
      components/Home/Help.vue
  19. 8 4
      components/Home/Promotion.vue
  20. 7 7
      components/Home/Reviews.vue
  21. 3 0
      components/Home/Solution.vue
  22. 2 0
      components/Layout/FAQ.vue
  23. 1 1
      components/Layout/Footer/Footer.vue
  24. 12 3
      components/Layout/Footer/Prefooter.vue
  25. 5 1
      components/Layout/Navigation/Lg.vue
  26. 2 0
      components/Logiciels/Artist/Abonnement.vue
  27. 4 1
      components/Logiciels/Artist/Abonnement/ToSubscribe.vue
  28. 3 0
      components/Logiciels/Artist/Avantages.vue
  29. 9 0
      components/Logiciels/Artist/Fonctionnalites.vue
  30. 5 1
      components/Logiciels/Artist/Formations.vue
  31. 1 0
      components/Logiciels/Artist/Presentation.vue
  32. 7 7
      components/Logiciels/Artist/SomeNumbers.vue
  33. 6 0
      components/Logiciels/Manager/Avantages.vue
  34. 9 1
      components/Logiciels/Manager/Fonctionnalites.vue
  35. 7 5
      components/Logiciels/Manager/Formation.vue
  36. 1 0
      components/Logiciels/Manager/Network.vue
  37. 2 0
      components/Logiciels/School/Contact.vue
  38. 3 0
      components/Logiciels/School/Formations.vue
  39. 7 7
      components/Logiciels/School/SomeNumbers.vue
  40. 4 0
      components/Webinaire/Catalogue.vue
  41. 1 1
      pages/CGV.vue
  42. 5 5
      pages/actualites/index.vue
  43. 5 5
      pages/formations.vue
  44. 3 5
      pages/index.vue
  45. 1 1
      pages/mentions-legales.vue
  46. 8 1
      pages/nous-contacter.vue
  47. 0 1
      pages/nous-rejoindre/[id].vue
  48. 3 2
      pages/nous-rejoindre/index.vue
  49. 4 3
      pages/opentalent_artist.vue
  50. 7 6
      pages/opentalent_manager.vue
  51. 4 3
      pages/opentalent_school.vue
  52. 1 1
      pages/politique-de-confidentialite-et-protection-des-donnees-personnelles.vue
  53. 3 2
      pages/qui-sommes-nous.vue
  54. 4 4
      pages/webinaires.vue
  55. 88 78
      types/interface.d.ts

+ 10 - 0
components/About/Equipe.vue

@@ -76,11 +76,13 @@ const associates: Array<SocietyMember> = [
     name: "Guillaume",
     position: "Fondateur / DIRECTEUR COMMERCIAL",
     photo: "/images/about/equipe/Guillaume_CORCOBA-co-fondateur_et_Gerant.png",
+    alt: "Avatar d’un homme avec les cheveux poivre et sel court portant un polo bordeaux et un jean"
   },
   {
     name: "Michel",
     position: "FONDATEUR / Directeur développement",
     photo: "/images/about/equipe/Michel_PERNET-SOLLIET-Co-fondateur_et_Product_Owner.png",
+    alt: "Avatar d’un homme avec les cheveux bruns mi-long portant un pull jaune et un pantalon noir"
   },
 ];
 
@@ -89,41 +91,49 @@ const employees: Array<SocietyMember> = [
     name: "Johan",
     position: " FORMATEUR",
     photo: "/images/about/equipe/Johan_HAUDIQUET-Formateur_et_Assistance.png",
+    alt: "Avatar d’un homme avec les cheveux bruns court portant un sweat noir et un pantalon beige"
   },
   {
     name: "Nathalie",
     position: "Ch. DEVELOPPEMENT COMMERCIAL",
     photo: "/images/about/equipe/Nathalie_CHEVALON-Chargee_de_developpement_commercial.png",
+    alt: "Avatar d’une femme avec les cheveux bruns mi-long et ondulée portant une chemise noire/blanche et un jean bleu foncé"
   },
   {
     name: "Laetitia",
     position: "CH. COMMUNICATION & MARKETING",
     photo: "/images/about/equipe/Laetitia_SIFFOINTE-Chargee_de_Marketing_et_Communication.png",
+    alt: "Avatar d’une femme avec les cheveux blonds long et ondulée portant un pull gris et un jean noir"
   },
   {
     name: "Florence",
     position: "ASSISTANTE ADMINISTRATIVE",
     photo: "/images/about/equipe/Florence_JOANNIDIS-ADV.png",
+    alt: "Avatar d’une femme avec des lunettes, les cheveux bruns long et attaché portant un pull bleu et un jean bleu foncé"
   },
   {
     name: "Vincent",
     position: "LEAD DEVELOPPEUR",
     photo: "/images/about/equipe/Vincent_GUFFON-Lead_dev.png",
+    alt: "Avatar d’un homme avec les cheveux bruns court avec une barbe rousse portant un tee-shirt noir et un jean bleu"
   },
   {
     name: "Olivier",
     position: "DEVELOPPEUR",
     photo: "/images/about/equipe/Olivier_MASSOT-Developpeur.png",
+    alt: "Avatar d’un homme avec les cheveux blonds mi-long et un bouc blond portant un gilet gris et un jean noir"
   },
   {
     name: "Sébastien",
     position: "DEVELOPPEUR",
     photo: "/images/about/equipe/Sebastien_FAVRE-BONTE_Developpeur.png",
+    alt: "Avatar d’un homme avec des lunettes, les cheveux bruns court portant un pull bleu et un jean bleu foncé"
   },
   {
     name: "Maha",
     position: "DEVELOPPEUSE",
     photo: "/images/about/equipe/Maha_BOUCHIBA-Developpeuse.png",
+    alt: "Avatar d’une femme portant un turban sur les cheveux, haut beige et blanc et un jean bleu foncé"
   },
 ];
 </script>

+ 1 - 0
components/About/FAQ.vue

@@ -5,6 +5,7 @@
         <v-col cols="12" md="6">
            <v-img
              src="/images/help/Help.png"
+             alt="Un homme et une femme tous les deux le sourire aux lèvres se serre la main"
              cover
            />
         </v-col>

+ 12 - 2
components/About/Logiciels.vue

@@ -46,7 +46,11 @@
             class="container-image"
           >
             <footer>
-              <v-img :src="item.logoUrl" class="logo" />
+              <v-img
+                :src="item.logoUrl"
+                :alt="item.logoAlt"
+                class="logo"
+              />
 
               <v-btn
                 :to="item.link"
@@ -75,22 +79,28 @@ const features: Array<string> = [
   "Et bien plus encore...",
 ];
 
-const items: Array<{imageUrl: string, logoUrl: string, class: string, link: string}> = [
+const items: Array<{imageUrl: string, alt: string, logoUrl: string, logoAlt: string, class: string, link: string}> = [
   {
     imageUrl: "/images/solutions/artist.jpg",
+    alt: "Partition tenue par une femme dans une chorale",
     logoUrl: "/images/logo/logiciels/Artist-Blanc.png",
+    logoAlt: "Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes",
     class: "artist",
     link: "/opentalent_artist",
   },
   {
     imageUrl: "/images/solutions/school.jpg",
+    alt: "Deux jeunes filles jouant du violon",
     logoUrl: "/images/logo/logiciels/School-Blanc.png",
+    logoAlt: "Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique",
     class: "school",
     link: "/opentalent_school",
   },
   {
     imageUrl: "/images/solutions/manager.png",
+    alt: "Carte de réseau des structures de la confédération musicale de France",
     logoUrl: "/images/logo/logiciels/Manager-Blanc.png",
+    logoAlt: "Logo Opentalent Manager - logiciel de gestion et de communication pour les fédérations, les confédérations et les collectivités",
     class: "manager",
     link: "/opentalent_manager",
   },

+ 5 - 1
components/About/Presentation.vue

@@ -19,7 +19,11 @@
 
       <v-row class="history mb-12">
         <v-col md="6">
-          <v-img src="/images/about/passion.jpg" cover />
+          <v-img
+            src="/images/about/passion.jpg"
+            alt="Entretien dans un bureau entre un homme et une femme de dos"
+            cover
+          />
         </v-col>
 
         <v-col md="6">

+ 10 - 1
components/About/Valeurs.vue

@@ -11,6 +11,7 @@
         <v-col md="6">
           <v-img
             src="/images/about/valeurs/valeur.png"
+            alt="Quatre photos: une prise de haut où l’on voit les pieds d’une personne avec un smiley dessiné sur du goudron, l'une de mains tenant de la terre avec une plante dans un décor de forêt, l'une d’une enseigne lumineuse écrit « Open » en blanc entouré d’un cercle orange et l'une de mains de femmes posées les unes en dessus des autres."
             cover
             class="valeur-img"
           />
@@ -28,7 +29,11 @@
                 v-for="(value, valueIndex) in row"
                 :key="valueIndex"
               >
-                <v-img :src="value.img" cover />
+                <v-img
+                  :src="value.img"
+                  :alt="value.alt"
+                  cover
+                />
 
                 <h6>
                   {{ value.title }}
@@ -54,12 +59,14 @@ const values: Array<Array<SocietyValue>> = [
   [
     {
       img: "/images/about/valeurs/Management.svg",
+      alt: "Icône de deux mains tenant une roue crantée",
       title: "Management social",
       description:
         "Guillaume et Michel sont sur la même longueur d’onde et donnent le « La » à un management social et solidaire où plus que de mettre en avant l'entreprise, ils privilégient la mise en avant des hommes et femmes qui la composent. Toux ceux qui participent jour après jour à l’écriture de la partition sont valorisés. Le partage, l’échange et le dialogue en lieu et place des liens de subordination.",
     },
     {
       img: "/images/about/valeurs/Satisfaction-client.svg",
+      alt: "Icône d’utilisateurs avec des étoiles en dessous",
       title: "Satisfaction client",
       description:
         "Opentalent met un point d’honneur à satisfaire ses clients en leur proposant des solutions de qualité, un projet global dans lequel ils se retrouvent. L’intention de base est bel et bien de proposer un équilibre entre les solutions informatiques et la volonté personnelle en lien avec la production et les publics concernés.",
@@ -68,12 +75,14 @@ const values: Array<Array<SocietyValue>> = [
   [
     {
       img: "/images/about/valeurs/Ecologie.svg",
+      alt: "Icône de la planète Terre entourée d’une branche avec des feuilles",
       title: "Écologie",
       description:
         "Proche des entreprises de l’Économie Sociale et Solidaire, Opentalent accorde une grande importance aux démarches liées à l’écologie et au développement durable. Le code des outils est par exemple optimisé pour limiter les ressources nécessaires des serveurs, réduisant ainsi leur empreinte carbone et améliorant le confort des utilisateurs au quotidien.",
     },
     {
       img: "/images/about/valeurs/Open-source.svg",
+      alt: "Icône d’une roue crantée ouverte avec des flèches entrant et sortant",
       title: "Open source",
       description:
         "Opentalent est une entreprise qui croit profondément aux vertus des logiciels Open Source et qui par son action contribue à leur développement.",

+ 1 - 1
components/Common/Banner.vue

@@ -14,7 +14,7 @@
               <div class="content-row">
                 <img
                   src="/images/logiciels/icons/la-musique.svg"
-                  alt="icon instrument de musique"
+                  alt="Icône instruments de musique trompette et tambour avec des notes de musique"
                   class="custom-icon"
                 />
                 <p class="description">

+ 1 - 0
components/Common/Card/Benefit.vue

@@ -24,6 +24,7 @@ Carte "Avantage" de la section Avantages d'une page Logiciel
 
       <v-img
         :src="benefit.image"
+        :alt="benefit.alt"
         cover
       />
     </div>

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

@@ -29,7 +29,7 @@
         >
           <Slide v-for="(item, index) in items" :key="index">
             <div>
-              <v-img :src="item.src" alt="Card image cap" />
+              <v-img :src="item.src" :alt="item.alt" />
             </div>
           </Slide>
         </Carousel>
@@ -67,7 +67,7 @@ const carousel: Ref<typeof Carousel | null> = ref(null);
 
 const props = defineProps({
   items: {
-    type: Array as PropType<Array<{ src: string }>>,
+    type: Array as PropType<Array<{ src: string, alt: string }>>,
     required: true
   }
 });

+ 6 - 0
components/Common/Presentation.vue

@@ -14,6 +14,7 @@ Section "Présentation" d'une page Logiciel
 
           <v-img
             src="/images/logiciels/Opentalent-disponible-su-Multi-support.png"
+            alt="Ordinateur de bureau, ordinateur portable tablette et smartphone montrant le logiciel Opentalent"
             class="w-100"
           />
 
@@ -22,6 +23,7 @@ Section "Présentation" d'une page Logiciel
               <div class="content-flex ml-6">
                 <v-img
                   :src="logoSrc"
+                  :alt="logoAlt"
                   class="software-logo"
                 />
               </div>
@@ -118,6 +120,10 @@ const props = defineProps({
     type: String,
     default: "",
   },
+  logoAlt: {
+    type: String,
+    default: "",
+  },
   pricingFromText: {
     type: String,
     required: false,

+ 2 - 7
components/Contact/Banner.vue

@@ -1,15 +1,10 @@
 <template>
   <LayoutContainer>
-    <LayoutUITitlePage>
-      Besoin d'aide ?
-      <template #subtitle>Notre équipe est là pour vous. Contactez-nous! </template>
-    </LayoutUITitlePage>
-
     <v-row>
       <v-col cols="12" class="position-relative">
         <v-img
-          src="/images/formation/banner.jpg"
-          alt="banner"
+          src="/images/contact/Contactez_nous-visuel_Opentalent.jpg"
+          alt="Icône téléphone, enveloppe, arobase, bulles de discussion et homme sur son smartphone et son ordinateur portable"
           cover
           class="banner"
         />

+ 0 - 0
components/Formation/Banner.vue


+ 4 - 1
components/Formation/Certification.vue

@@ -35,7 +35,10 @@
         </v-col>
 
         <v-col cols="12" md="7">
-          <v-img src="/images/formation/qualiopi.jpg" />
+          <v-img
+            src="/images/formation/qualiopi.jpg"
+            alt="Deux personnes en train d’échanger sur un projet devant deux ordinateurs dans un open space"
+          />
         </v-col>
       </v-row>
     </LayoutContainer>

+ 1 - 0
components/Formation/OPCA.vue

@@ -12,6 +12,7 @@
           <v-col cols="12" md="6">
             <v-img
               src="/images/formation/programme.jpg"
+              alt="Logo Qualiopi processus certifié"
               class="opca-img"
               cover
             />

+ 1 - 0
components/Formation/Participation.vue

@@ -17,6 +17,7 @@
         <v-col cols="12">
           <v-img
             src="/images/formation/participation.jpg"
+            alt="Ordinateur avec un écran en visioconférence avec plusieurs personnes posé sur une table avec un pichet posé à côté"
             class="participation-img"
           />
         </v-col>

+ 2 - 0
components/Formation/Presentation.vue

@@ -11,6 +11,7 @@
         <v-col md="6">
           <v-img
             src="/images/formation/programme2.jpg"
+            alt="Mains tapant sur un clavier d’ordinateur portable"
             class="programme-img1"/>
         </v-col>
 
@@ -55,6 +56,7 @@
         <v-col md="6">
           <v-img
             src="/images/formation/programme.jpg"
+            alt="Deux personnes en train d’échanger sur un projet devant deux ordinateurs dans un open space"
             class="programme-img2"
           />
         </v-col>

+ 10 - 0
components/Home/Caroussel.vue

@@ -21,6 +21,7 @@ Carrousel de la page d'accueil
         <v-col cols="12" lg="6" class="col presentation">
           <v-img
             :src="item.logo"
+            :alt="item.alt"
             class="logo"
           />
 
@@ -105,6 +106,7 @@ const setActiveIndex = (index: number) => {
 const carouselItems: Ref<Array<CarouselItem>> = ref([
   {
     logo: "/images/logo/logiciels/School-noir.png",
+    logoAlt: "Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique",
     description:
       "Pour les petits comme pour les GRANDS établissements d’enseignement artistique tels que les écoles de musique, de danse, de théâtre, d'art, de cirque et conservatoire.<br> Il permet la gestion au quotidien et en temps réel de votre établissement, de gérer vos élèves et vos professeurs, vos emplois du temps, le suivi pédagogique, vos salles, la facturation et les encaissements…",
     descriptionSm:
@@ -112,15 +114,18 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
     buttonClass: "btn-school",
     image:
       "/images/Home_logiciel/Logiciel_Opentalent_School-eleve-Conservatoire_de_Musique.png",
+    imageAlt: "Jeune élève de batterie",
     color: "rgba(32, 147, 190, 0.4)",
     link: "/opentalent_school",
     name: "Cindy Blanchard",
     school: "Conservatoire de Musique",
     status: "élève",
     avatar: "/images/carousel/school/avatar.png",
+    avatarAlt: "Photo de profil d’une jeune fille",
   },
   {
     logo: "/images/logo/logiciels/Artist-noir.png",
+    logoAlt: "Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes",
     description:
       "Pour les structures culturelles pratiquantes telles que les orchestres, les chorales, les compagnies de danse, théâtre et cirque. <br> Gérez votre activité avec un logiciel de gestion et de communication au service de votre passion.",
     descriptionSm:
@@ -128,15 +133,18 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
     buttonClass: "btn-artist",
     image:
       "/images/Home_logiciel/Logiciel_Opentalent_Artist-administrateur-Orchestre_d_harmonie.png",
+    imageAlt: "Homme jouant du banjo",
     color: "rgba(250, 194, 10, 0.4)",
     link: "opentalent_artist",
     name: "Thierry Dupont ",
     school: "Orchestre d’harmonie",
     status: "Admin",
     avatar: "/images/carousel/artist/avatar.png",
+    avatarAlt: "Photo de profil d’un homme jouant du banjo",
   },
   {
     logo: "/images/logo/logiciels/Manager-noir.png",
+    logoAlt: "Logo Opentalent Manager - logiciel de gestion et de communication pour les fédérations, les confédérations et les collectivités",
     description:
       "La solution de mise en réseau des organisations culturelles.<br> Fédérations, confédérations et collectivités, utilisez une solution collaborative innovante et unique spécialement développée pour les réseaux culturels.",
     descriptionSm:
@@ -144,12 +152,14 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
     buttonClass: "btn-manager",
     image:
       "/images/Home_logiciel/Logiciel_Opentalent_Managerl-Administrateur_Federation.png",
+    imageAlt: "Un homme en costard et une femme tailleur souriant",
     color: "rgba(216, 5, 11, 0.4)",
     link: "opentalent_manager",
     name: "Marie Voisin",
     school: "Réseau d'organisations culturelles ",
     status: "ADMIN",
     avatar: "/images/carousel/manager/avatar.png",
+    avatarAlt: "Photo de profil d’une femme en tailleur",
   },
 ]);
 </script>

+ 1 - 1
components/Home/EventAgenda.vue

@@ -27,7 +27,7 @@ Section "Agenda" de la page d'accueil
           <AgendaLink href="/annuaire">
             <v-btn
               append-icon="fas fa-arrow-right"
-              :variant="lgAndUp ? 'default' : 'outlined'"
+              :variant="lgAndUp ? 'elevated' : 'outlined'"
               class="btn-event btn-annuaire"
             >
               Découvrir l’annuaire

+ 4 - 1
components/Home/Help.vue

@@ -6,7 +6,10 @@ Section "Besoin d'aide" de la page d'accueil
   <LayoutContainer>
     <v-row >
       <v-col cols="12" lg="6" class="col">
-        <v-img src="/images/Home_logiciel/Opentalent_a_votre_service.png" />
+        <v-img
+          src="/images/Home_logiciel/Opentalent_a_votre_service.png"
+          alt="Un homme et une femme tous les deux le sourire aux lèvres se serre la main"
+        />
       </v-col>
 
       <v-col cols="12" lg="6" class="col">

+ 8 - 4
components/Home/Promotion.vue

@@ -13,6 +13,7 @@
             <span class="inline-pic-container">
               <v-img
                 src="/images/Home_logiciel/ecole_de_musique-piano.jpg"
+                alt="Vignette d’une personne jouant sur un piano"
               />
             </span>
 
@@ -21,6 +22,7 @@
             <span class="inline-pic-container">
               <v-img
                 src="/images/Home_logiciel/ecole_de_danse-danseuse.jpg"
+                alt="Vignette d’une danseuse"
               />
             </span>
 
@@ -29,6 +31,7 @@
             <span class="inline-pic-container">
               <v-img
                 src="/images/Home_logiciel/ecole_de_cirque.jpg"
+                alt="Vignette d’un homme faisant un spectacle de mime dans une salle de spectacle"
               />
             </span>
           </p>
@@ -40,6 +43,7 @@
       <v-col>
         <v-img
           src="/images/home/écran.JPG"
+          alt="Vidéo corporate de l’entreprise Opentalent"
           class="screen"
         >
           <v-icon icon="fas fa-play" class="play-icon" />
@@ -62,7 +66,7 @@
         <v-col cols="12" lg="6">
           <v-row>
             <v-col cols="3">
-              <img src="/images/pictoHome/network.svg" alt="network" />
+              <img src="/images/pictoHome/network.svg" alt="Icône nuage cloud" />
             </v-col>
             <v-col cols="9">
               <p>
@@ -73,7 +77,7 @@
 
           <v-row>
             <v-col cols="3">
-              <img src="/images/pictoHome/website.svg" alt="website" />
+              <img src="/images/pictoHome/website.svg" alt="Icône site internet" />
             </v-col>
             <v-col cols="9">
               <p>
@@ -86,7 +90,7 @@
         <v-col cols="12" lg="6">
           <v-row>
             <v-col cols="3">
-              <img src="/images/pictoHome/visibility.svg" alt="visibility" />
+              <img src="/images/pictoHome/visibility.svg" alt="Icône avion en papier" />
             </v-col>
             <v-col cols="9">
               <p>
@@ -97,7 +101,7 @@
 
           <v-row>
             <v-col cols="3">
-              <img src="/images/pictoHome/communication.svg" alt="communication" />
+              <img src="/images/pictoHome/communication.svg" alt="Icône de deux enveloppes" />
             </v-col>
             <v-col cols="9">
               <p>

+ 7 - 7
components/Home/Reviews.vue

@@ -254,13 +254,13 @@ const cards: Array<Review> = [
   },
 ];
 
-const items: Ref<Array<{ src: string }>> = ref([
-  { src: "/images/reviews/school/review1.svg" },
-  { src: "/images/reviews/school/review2.png" },
-  { src: "/images/reviews/school/review3.png" },
-  { src: "/images/reviews/school/review4.jpeg" },
-  { src: "/images/reviews/school/review5.jpeg" },
-  { src: "/images/reviews/school/review6.jpeg" },
+const items: Ref<Array<{ src: string, alt: string }>> = ref([
+  { src: "/images/reviews/school/review1.svg", alt: "Logo du Conservatoire « Les ateliers des arts" },
+  { src: "/images/reviews/school/review2.png", alt: "Logo du Conservatoire de Senlis" },
+  { src: "/images/reviews/school/review3.png", alt: "Logo de l’École de musique Sausheim" },
+  { src: "/images/reviews/school/review4.jpeg", alt: "Logo du Conservatoire Marly le Roi Roger Bourdin" },
+  { src: "/images/reviews/school/review5.jpeg", alt: "Logo du Conservatoire de Musique et de Danse du Thouarsais" },
+  { src: "/images/reviews/school/review6.jpeg", alt: "Logo du Conservatoire d’Annemasse" },
 ]);
 </script>
 

+ 3 - 0
components/Home/Solution.vue

@@ -98,6 +98,7 @@ const solutions: Array<SolutionItem> = [
     name: "Artist",
     description: "Orchestres, chorales, compagnies de danse, théâtre et cirque",
     image: "/images/logo/logiciels/Artist-Blanc.png",
+    alt: "Partition tenue par une femme dans une chorale",
     link: "/opentalent_artist",
     class: "artist-image",
     solutions: [
@@ -115,6 +116,7 @@ const solutions: Array<SolutionItem> = [
     name: "School",
     description: "Petits et grands établissements d'enseignement artistique",
     image: "/images/logo/logiciels/School-Blanc.png",
+    alt: "Deux jeunes filles jouant du violon",
     link: "/opentalent_school",
     class: "school-image",
     solutions: [
@@ -132,6 +134,7 @@ const solutions: Array<SolutionItem> = [
     name: "Manager",
     description: "Fédérations, confédérations et collectivités",
     image: "/images/logo/logiciels/Manager-Blanc.png",
+    alt: "Carte de réseau des structures de la confédération musicale de France",
     link: "/opentalent_manager",
     class: "manager-image",
     solutions: [

+ 2 - 0
components/Layout/FAQ.vue

@@ -28,6 +28,7 @@
           <div>
             <v-img
               src="/images/icons/tuto.svg"
+              alt="Icône livre avec logo Youtube"
             />
 
             <p>
@@ -43,6 +44,7 @@
           <div>
             <v-img
               src="/images/icons/faq.svg"
+              alt="Icône deux bulles de conversation avec indiquée FAQ à l’intérieur d’une"
             />
 
             <p class="text-btn">

+ 1 - 1
components/Layout/Footer/Footer.vue

@@ -7,7 +7,7 @@
           <!-- Première section : Logo Opentalent -->
           <v-col cols="12" lg="3" class="logo">
             <nuxt-link to="/">
-              <v-img src="/images/logo/footer-logo.png" />
+              <v-img src="/images/logo/footer-logo.png" alt="Logo Opentalent - Agenda et Logiciels culturels" />
             </nuxt-link>
           </v-col>
 

+ 12 - 3
components/Layout/Footer/Prefooter.vue

@@ -9,7 +9,10 @@ Première section du footer (galerie des logiciels)
       <v-row>
         <v-col cols="4" class="text-center">
           <nuxt-link to="/opentalent_artist">
-            <v-img src="/images/logo/logiciels/Artist-noir.png"/>
+            <v-img
+              src="/images/logo/logiciels/Artist-noir.png"
+              alt="Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes"
+            />
           </nuxt-link>
 
           <small class="text-logo">
@@ -21,7 +24,10 @@ Première section du footer (galerie des logiciels)
 
         <v-col cols="4" class="text-center">
           <nuxt-link to="/opentalent_school">
-            <v-img src="/images/logo/logiciels/School-noir.png"/>
+            <v-img
+              src="/images/logo/logiciels/School-noir.png"
+              alt="Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique "
+            />
           </nuxt-link>
 
           <small class="text-logo">
@@ -33,7 +39,10 @@ Première section du footer (galerie des logiciels)
 
         <v-col cols="3" class="text-center">
           <nuxt-link to="/opentalent_manager">
-            <v-img src="/images/logo/logiciels/Manager-noir.png"/>
+            <v-img
+              src="/images/logo/logiciels/Manager-noir.png"
+              alt="Logo Opentalent Manager - logiciel de gestion et de communication pour les fédérations, les confédérations et les collectivités"
+            />
           </nuxt-link>
 
           <small class="text-logo">

+ 5 - 1
components/Layout/Navigation/Lg.vue

@@ -7,7 +7,11 @@
       <!-- Logo Opentalent -->
       <v-col cols="2">
         <nuxt-link to="/">
-          <v-img class="logo" src="/images/logo/navigation-logo.png" />
+          <v-img
+            src="/images/logo/navigation-logo.png"
+            alt="Logo Opentalent - Agenda et logiciels culturels"
+            class="logo"
+          />
         </nuxt-link>
       </v-col>
 

+ 2 - 0
components/Logiciels/Artist/Abonnement.vue

@@ -34,11 +34,13 @@
               <v-img
                 v-if="lgAndUp"
                 src="/images/logo/logo-cmf-petit.png"
+                alt="Logo Confédération Musicale de France - CMF"
                 class="logo-cmf"
               />
               <v-img
                 v-else
                 src="/images/logo/logo-cmf.png"
+                alt="Logo Confédération Musicale de France - CMF"
                 class="logo-cmf"
               />
 

+ 4 - 1
components/Logiciels/Artist/Abonnement/ToSubscribe.vue

@@ -1,6 +1,9 @@
 <template>
   <div class="profile-circle">
-    <v-img src="/images/logo/logiciels/OT_Artist-BLANC.png" />
+    <v-img
+      src="/images/logo/logiciels/OT_Artist-BLANC.png"
+      alt="Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes"
+    />
   </div>
 
   <div class="subscription-info">

+ 3 - 0
components/Logiciels/Artist/Avantages.vue

@@ -18,6 +18,7 @@ const benefits: Ref<Array<Benefit>> = ref([
     description:
       "Centralisez toutes vos informations sur un seul et même outil et ne perdez plus de temps avec des fichiers sur diverses applications.",
     image: "/images/avantages/school/temps.jpg",
+    alt: "Main tenant un mini réveil",
     isMemberCMF: true,
   },
   {
@@ -26,6 +27,7 @@ const benefits: Ref<Array<Benefit>> = ref([
     description:
       "Des espaces dédiés et des outils spécifiques à vos besoins pour une gestion optimisée et une lecture simplifiée.",
     image: "/images/avantages/school/struture.png",
+    alt: "Empilement de cube transparent structuré au-dessus d’un plan de maison",
     isMemberCMF: false,
   },
   {
@@ -34,6 +36,7 @@ const benefits: Ref<Array<Benefit>> = ref([
     description:
       "Grâce à des comptes dédiés, personnalisés et autonomes, permettez à vos membres de mettre à jour leurs informations et d'interagir dans leur agenda.",
     image: "/images/avantages/school/collaborative.jpg",
+    alt: "Mains de plusieurs couleurs posées les unes à côté des autres",
     isMemberCMF: true,
   },
 ]);

+ 9 - 0
components/Logiciels/Artist/Fonctionnalites.vue

@@ -22,6 +22,7 @@ import type { Functionality } from "~/types/interface";
 const cards: Array<Functionality> = [
   {
     logo: "/images/logiciels/artist/fonctionnalites/Espaces_dedies.svg",
+    logoAlt: "Icône smartphone avec cadenas verrouillé",
     title: "ESPACES DÉDIÉS *",
     list: [
       "Administration",
@@ -32,6 +33,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "/images/logiciels/artist/fonctionnalites/Repertoire.svg",
+    logoAlt: "Icône carnet annuaire",
     title: "RÉPERTOIRE",
     list: [
       "Membres",
@@ -41,6 +43,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "/images/logiciels/artist/fonctionnalites/Agenda.svg",
+    logoAlt: "Icône calendrier",
     title: "AGENDA",
     list: [
       "Création et gestion des événements internes et externes",
@@ -50,6 +53,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "/images/logiciels/artist/fonctionnalites/Parc_materiel.svg",
+    logoAlt: "Icône carton avec stylos et cahier à l’intérieur",
     title: "PARC MATÉRIEL ",
     list: [
       "Gestion de votre parc matériel (instruments, costumes, accessoires..)",
@@ -59,6 +63,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "/images/logiciels/artist/fonctionnalites/Communication.svg",
+    logoAlt: "Icône enveloppe, téléphone et bulle SMS",
     title: "COMMUNICATION *",
     list: [
       "Édition et envoi de courriers, de mails ou de SMS**",
@@ -69,6 +74,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "/images/logiciels/artist/fonctionnalites/Site_internet.svg",
+    logoAlt: "Icône site internet",
     title: "SITE INTERNET ",
     list: [
       "Gestion intégrée au logiciel",
@@ -78,6 +84,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "/images/logiciels/artist/fonctionnalites/Statistique.svg",
+    logoAlt: "Icône graphique à barre avec ligne ascendante",
     title: "STATISTIQUES",
     list: [
       "Rapport d'activité complet en fonction de vos activités",
@@ -87,6 +94,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "/images/logiciels/artist/fonctionnalites/CMF-réseau-J.png",
+    logoAlt: "Icône du logo de la CMF (confédération musicale de France)",
     title: "RÉSEAU CMF ",
     list: [
       "Uniquement dédié aux adhérents CMF",
@@ -97,6 +105,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "/images/logiciels/artist/fonctionnalites/Promotion.svg",
+    logoAlt: "Icône mégaphone",
     title: "PROMOTION DE VOTRE STRUCTURE & VOS ÉVÉNEMENTS ",
     list: [
       "Sur votre site internet intégré",

+ 5 - 1
components/Logiciels/Artist/Formations.vue

@@ -11,7 +11,11 @@
 
           <v-row class="formation py-12 align-center mb-12" no-gutters>
             <v-col cols="12" lg="4">
-              <v-img src="/images/logiciels/artist/webinaire.jpg" class="meeting-img" />
+              <v-img
+                src="/images/logiciels/artist/webinaire.jpg"
+                alt="Ordinateur avec un écran en visioconférence avec plusieurs personnes posé sur une table de salon devant une fenêtre avec des plantes et une tasse posées à côté"
+                class="meeting-img"
+              />
             </v-col>
 
             <v-col cols="12" lg="6">

+ 1 - 0
components/Logiciels/Artist/Presentation.vue

@@ -5,6 +5,7 @@
       :features="features"
       :pictos="pictos"
       logo-src="/images/logo/logiciels/OT_Artist-BLANC.png"
+      logo-alt="Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes"
       pricingAmount="14€"
     />
 

+ 7 - 7
components/Logiciels/Artist/SomeNumbers.vue

@@ -43,13 +43,13 @@
 </template>
 
 <script setup lang="ts">
-const items: Ref<Array<{ src: string }>> = ref([
-  { src: "/images/reviews/artist/review1.jpeg" },
-  { src: "/images/reviews/artist/review2.jpg" },
-  { src: "/images/reviews/artist/review3.jpeg" },
-  { src: "/images/reviews/artist/review4.jpg" },
-  { src: "/images/reviews/artist/review5.png" },
-  { src: "/images/reviews/artist/review6.jpeg" },
+const items: Ref<Array<{ src: string, alt: string }>> = ref([
+  { src: "/images/reviews/artist/review1.jpeg", alt: "Logo de l’Union Musicale Sarriannaise" },
+  { src: "/images/reviews/artist/review2.jpg", alt: "Logo de la Société Musicale de Sully sur Loire" },
+  { src: "/images/reviews/artist/review3.jpeg", alt: "Logo de l’Orchestre d’Harmonie de Cluses" },
+  { src: "/images/reviews/artist/review4.jpg", alt: "Logo Musique Municipale de Geispolsheim" },
+  { src: "/images/reviews/artist/review5.png", alt: "Logo de l’Harmonie Municipale de Montherme" },
+  { src: "/images/reviews/artist/review6.jpeg", alt: "Logo de l’Echo Musical de Faye d’Anjou" },
 ]);
 </script>
 

+ 6 - 0
components/Logiciels/Manager/Avantages.vue

@@ -21,6 +21,7 @@ const benefits: Array<Benefit> = [
       "S'adapte à tous les réseaux de type pyramidal, quelque soit le nombre de niveaux :",
     list: ["Fédérations", "Institutions publiques"],
     image: "/images/avantages/manager/Sur-mesure.jpg",
+    alt: "Mètre ruban de couture"
   },
   {
     title: "Adapté",
@@ -29,6 +30,7 @@ const benefits: Array<Benefit> = [
       "Chaque structure du réseau dispose de sa propre solution indépendante et connectée au réseau :",
     list: ["Opentalent manager", "Opentalent school", "Opentalent artist"],
     image: "/images/avantages/manager/Adapte.jpg",
+    alt: "Réseaux structurés différemment ayant un lien part un atome commun"
   },
   {
     title: "Économique",
@@ -36,6 +38,7 @@ const benefits: Array<Benefit> = [
     description:
       "Une solution éprouvée au niveau national, sans avoir à supporter de coûts de développement importants pour ce type de logiciel.",
     image: "/images/avantages/manager/Economique.jpg",
+    alt: "Main mettant une pièce dans un cochon tirelire"
   },
   {
     title: "De pilotage",
@@ -43,6 +46,7 @@ const benefits: Array<Benefit> = [
     description:
       "Pilotez votre réseau de manière quotidienne et en temps réel. Gagnez du temps avec notre solution qui génère automatiquement un rapport d'activité complet.",
     image: "/images/avantages/manager/Pilotage.jpg",
+    alt: "Commandant de bord posant en uniforme"
   },
   {
     title: "En réseau",
@@ -50,6 +54,7 @@ const benefits: Array<Benefit> = [
     description:
       "Mise à jour automatique des coordonnées publiques entre les membres du réseau.",
     image: "/images/avantages/manager/En-reseau.jpg",
+    alt: "Multi-réseau"
   },
   {
     title: "Confidentiel",
@@ -57,6 +62,7 @@ const benefits: Array<Benefit> = [
     description:
       "Chaque structure garde son indépendance et reste entièrement maître des informations et des données qu'elle saisit.",
     image: "/images/avantages/manager/Confidentiel-les-donnees-appartiennent-aux-structures.jpg",
+    alt: "Jeune femme ayant le doigt devant la bouche pour instaurer le silence"
   },
 ];
 </script>

+ 9 - 1
components/Logiciels/Manager/Fonctionnalites.vue

@@ -22,13 +22,14 @@ import type { Functionality } from "~/types/interface";
 const cards: Array<Functionality> = [
   {
     logo:"images/logiciels/manager/fonctionnalites/Espaces_dedies.svg",
+    logoAlt: "Icône smartphone avec cadenas verrouillé",
     title: "ESPACES DÉDIÉS *",
     list: ["Administration","Membres / Adhérents"],
     options: ["*Disponible sur tous supports "],
   },
   {
     logo: "images/logiciels/manager/fonctionnalites/Repertoire.svg",
-
+    logoAlt: "Icône carnet annuaire",
     title: "RÉPERTOIRE",
     list: [
       "Membres",
@@ -38,6 +39,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "images/logiciels/manager/fonctionnalites/Agenda.svg",
+    logoAlt: "Icône calendrier",
     title: "AGENDA",
     list: [
       "Création et gestion des événements internes et externes",
@@ -47,6 +49,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "images/logiciels/manager/fonctionnalites/Parc_materiel.svg",
+    logoAlt: "Icône carton avec stylos et cahier à l’intérieur",
     title: "PARC MATÉRIEL ",
     list: [
       "Gestion de votre parc matériel (instruments, costumes, accessoires..)",
@@ -56,6 +59,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "images/logiciels/manager/fonctionnalites/communication.svg",
+    logoAlt: "Icône enveloppe, téléphone et bulle SMS",
     title: "COMMUNICATION RÉSEAU",
     list: [
       "Édition et envoi de courriers, de mails ou de SMS*",
@@ -67,6 +71,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "images/logiciels/manager/fonctionnalites/Site_internet.svg",
+    logoAlt: "Icône site internet",
     title: "SITE INTERNET ",
     list: [
       "Gestion intégrée au logiciel",
@@ -76,6 +81,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "images/logiciels/manager/fonctionnalites/Statistiques.svg",
+    logoAlt: "Icône graphique à barre avec ligne ascendante",
     title: "STATISTIQUES",
     list: [
       "Rapport d'activité complet en fonction de vos activités",
@@ -85,6 +91,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "images/logiciels/manager/fonctionnalites/Cotisation.svg",
+    logoAlt: "Icône d’une main donnant de l’argent à une autre main",
     title: "COTISATION CMF ",
     list: [
       "Paramétrage des cotisations",
@@ -94,6 +101,7 @@ const cards: Array<Functionality> = [
   },
   {
     logo: "images/logiciels/manager/fonctionnalites/Fonctionnement_pyramidal.svg",
+    logoAlt: "Icône graphique pyramidale",
     title: "FONCTIONNEMENT PYRAMIDAL ",
     list: [
       "Mise en relation des logiciels (Artist, School et Manager)",

+ 7 - 5
components/Logiciels/Manager/Formation.vue

@@ -17,6 +17,7 @@
             <div class="mb-6">
               <v-img
                 :src="formation.image"
+                :alt="formation.alt"
                 class="background-img"
               />
             </div>
@@ -45,13 +46,14 @@
   </AnchoredSection>
 </template>
 
-<script setup>
+<script setup lang="ts">
 import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
+import type { Formation } from "~/types/interface.js";
 
-const formations = ref([
+const formations: Array<Formation> = [
   {
-    id: 1,
     image: "/images/logiciels/school/formation.png",
+    alt: "Formateur dans une salle avec 5 personnes levant la main",
     overlayClass: "image-overlay1",
     sessions: "Formation sur-mesure",
     title: " Des formations adaptées à votre projet - en ligne",
@@ -61,8 +63,8 @@ const formations = ref([
     link: "/nous-contacter",
   },
   {
-    id: 2,
     image: "/images/logiciels/school/webinaire.png",
+    alt: "Femme sur son bureau avec devant deux écrans d’ordinateur de bureau en visioconférence devant 12 personnes",
     overlayClass: "image-overlay2",
     sessions: "Webinaire CMF Réseau",
     title: "Trouvez le webinaire qu'il vous faut ",
@@ -71,7 +73,7 @@ const formations = ref([
     buttonText: "Découvrir nos webinaires ",
     link: "/webinaires",
   },
-]);
+];
 </script>
 
 <style scoped>

+ 1 - 0
components/Logiciels/Manager/Network.vue

@@ -21,6 +21,7 @@
         <v-col cols="12" lg="6" md="6">
           <v-img
             src="/images/logiciels/manager/reseau.png"
+            alt="Graphique réseau pyramidal de la CMF avec les fédérations, les écoles artistique et les structures pratiquantes"
             class="schema-manager"
           />
         </v-col>

+ 2 - 0
components/Logiciels/School/Contact.vue

@@ -10,6 +10,7 @@
         <v-col cols="12" md="6">
           <v-img
             src="/images/contact/contact.jpg"
+            alt="Téléphone fixe posé sur un fond bleu comportant des bulles d’onomatopée : HAHA! OH! HEY! WOW! "
             class="help-img"
           />
         </v-col>
@@ -83,6 +84,7 @@
         <v-col cols="12" md="6">
            <v-img
              src="/images/logiciels/school/CMF-vivre_la_musique_ensemble.jpg"
+             alt="Logo Confédération Musicale de France - CMF avec son slogan : vivre la musique ensemble"
              class="logo-cmf mt-12"
            />
         </v-col>

+ 3 - 0
components/Logiciels/School/Formations.vue

@@ -18,6 +18,7 @@
             <div class="mb-6">
               <v-img
                 :src="formation.image"
+                :alt="formation.alt"
                 class="background-img"
               />
             </div>
@@ -53,6 +54,7 @@ import type { Formation } from "~/types/interface";
 const formations: Array<Formation> = [
   {
     image: "/images/logiciels/school/formation.png",
+    alt: "Formateur dans une salle avec 5 personnes levant la main",
     overlayClass: "image-overlay1",
     sessions: "3 formations disponibles",
     title: "Des formations adaptées à chacun - en ligne",
@@ -63,6 +65,7 @@ const formations: Array<Formation> = [
   },
   {
     image: "/images/logiciels/school/webinaire.png",
+    alt: "Femme sur son bureau avec devant deux écrans d’ordinateur de bureau en visioconférence devant 12 personnes",
     overlayClass: "image-overlay2",
     sessions: "Toutes nos sessions",
     title: "Trouvez le webinaire qu'il vous faut ",

+ 7 - 7
components/Logiciels/School/SomeNumbers.vue

@@ -65,13 +65,13 @@
 </template>
 
 <script setup lang="ts">
-const items: Array<{ src: string }> = [
-  { src: "/images/reviews/school/review1.svg" },
-  { src: "/images/reviews/school/review2.png" },
-  { src: "/images/reviews/school/review3.png" },
-  { src: "/images/reviews/school/review4.jpeg" },
-  { src: "/images/reviews/school/review5.jpeg" },
-  { src: "/images/reviews/school/review6.jpeg" },
+const items: Array<{ src: string, alt: string }> = [
+  { src: "/images/reviews/school/review1.svg", alt: "Logo du Conservatoire « Les ateliers des arts" },
+  { src: "/images/reviews/school/review2.png", alt: "Logo du Conservatoire de Senlis" },
+  { src: "/images/reviews/school/review3.png", alt: "Logo de l’École de musique Sausheim" },
+  { src: "/images/reviews/school/review4.jpeg", alt: "Logo du Conservatoire Marly le Roi Roger Bourdin" },
+  { src: "/images/reviews/school/review5.jpeg", alt: "Logo du Conservatoire de Musique et de Danse du Thouarsais" },
+  { src: "/images/reviews/school/review6.jpeg", alt: "Logo du Conservatoire d’Annemasse" },
 ];
 </script>
 

+ 4 - 0
components/Webinaire/Catalogue.vue

@@ -32,6 +32,7 @@
               <div class="title-card-container">
                 <v-img
                   :src="course.imageUrl"
+                  :alt="course.imageAlt"
                 />
 
                 <h4>
@@ -151,6 +152,7 @@ const downloadPdf = (pdfUrl: string) => {
 const courses: Array<Training> = [
   {
     imageUrl: "/images/logo/logiciels/&_Jaune.png",
+    imageAlt: "Esperluette du logo Opentalent Artist",
     title: "Webinaire Artist ",
     description:
       "Ce webinaire est destiné aux acteurs culturels tels que les orchestres, les chorales, les compagnies et troupes de danse, théâtre et cirque. Il vous permettra de découvrir les fonctionnalités du logiciels, les avantages et les différentes versions.. ",
@@ -189,6 +191,7 @@ const courses: Array<Training> = [
     // number: "02",
     title: "Webinaire School",
     imageUrl: "/images/logo/logiciels/&_Bleu.png",
+    imageAlt: "Esperluette du logo Opentalent School",
     description:
       " Rejoignez notre webinaire dédié aux petits comme aux GRANDS établissements d'enseignement artistique et découvrez comment optimiser votre travail grâce à un outil professionnel.",
     objectives: [
@@ -225,6 +228,7 @@ const courses: Array<Training> = [
   {
     title: "Webinaire Manager",
     imageUrl: "/images/logo/logiciels/&_Rouge.png",
+    imageAlt: "Esperluette du logo Opentalent Manager",
     description:
       "Ces webinaires  sont spécialement conçues pour les utilisateurs du logiciel fédéral de la CMF (Confédération Musicale de France). Gagner en temps administratif, booster vos performances et optimiser l'utilisation du logiciel.",
     objectives: [

+ 1 - 1
pages/CGV.vue

@@ -10,7 +10,7 @@
 
   <CommonBanner
     imageSrc="/images/Bannieres_Mentions_legales-CGV-Cookies.png"
-    imageAlt="banner"
+    imageAlt="Ordinateur à côté d'une balance d'un livre et d'un maillet en bois"
   />
 
   <v-container>

+ 5 - 5
pages/actualites/index.vue

@@ -1,19 +1,19 @@
 <template>
   <CommonMeta
     title="Actualités - Opentalent"
-    description="Les dernières actualités"
+    description="Suivez l’actualité d’Opentalent : événements incontournables, opportunité de carrières et innovations logicielles. Suivez-nous et faites partie de l'évolution culturelle."
   />
 
   <div id="news-anchor" />
 
   <LayoutUITitlePage>
-    Actualités
-    <template #subtitle>Toute l'actualité de l'entreprise Opentalent</template>
+    Actualités de l’entreprise Opentalent
+    <template #subtitle>Découvrez toute l’actualité de l’entreprise Opentalent : événements, logiciels et entreprise. </template>
   </LayoutUITitlePage>
 
   <CommonBanner
-    imageSrc="/images/Bannieres_Mentions_legales-CGV-Cookies.png"
-    imageAlt="banner"
+    imageSrc="/images/actu/Slider_Actualites.png"
+    imageAlt="Journaux pliés en deux posés les uns à côté des autres"
   />
 
   <v-row class="mb-12 center-90">

+ 5 - 5
pages/formations.vue

@@ -1,19 +1,19 @@
 <template>
   <CommonMeta
     title="Formation - Opentalent"
-    description="Prise en main ou piqûre de rappel, on est toujours à vos côtés."
+    description="Maîtrisez votre gestion culturelle avec Opentalent, du débutant à l’utilisateur avancé. Nos formations augmentent vos compétences pour une administration optimisée."
   />
 
   <LayoutUITitlePage>
-    Formation
+    Formations sur les logiciels Opentalent
     <template #subtitle>
-      Prise en main ou piqûre de rappel, on est toujours à vos côtés.
+      Prise en main où piqûre de rappel, nous sommes toujours à vos côtés.
     </template>
   </LayoutUITitlePage>
 
   <CommonBanner
-    imageSrc="images/formation/banner.jpg"
-    imageAlt="banner"
+    image-src="images/formation/banner.jpg"
+    image-alt="Formation dans une salle de réunion ou 5 personnes regardent un écran"
   >
     <template #watermark>
       Et si vous passiez rapidement à la vitesse supérieure...

+ 3 - 5
pages/index.vue

@@ -1,13 +1,13 @@
 <template>
   <CommonMeta
     title="Opentalent - Logiciels culturels"
-    description="Une gamme de logiciels adaptée à chaque structure culturelle"
+    description="Découvrez les logiciels Opentalent: solutions SaaS pour le secteur culturel. Outils sécurisés et constamment à jour. Idéal pour structures associatives et territoriales."
   />
 
   <CommonActionMenu />
 
-  <LayoutUITitlePage>
-    LOGICIELS CULTURELS
+  <LayoutUITitlePage class="mb-8">
+    LOGICIELS CULTURELS Opentalent
     <template #subtitle>UNE GAMME DE LOGICIELS ADAPTÉE À CHAQUE STRUCTURE CULTURELLE</template>
   </LayoutUITitlePage>
 
@@ -32,8 +32,6 @@
 
 <script setup>
 import { useDisplay } from "vuetify";
-
-const { mdAndDown, mdAndUp, lgAndUp } = useDisplay();
 </script>
 
 <style scoped>

+ 1 - 1
pages/mentions-legales.vue

@@ -10,7 +10,7 @@
 
   <CommonBanner
     imageSrc="/images/Bannieres_Mentions_legales-CGV-Cookies.png"
-    imageAlt="banner"
+    imageAlt="Ordinateur à côté d'une balance d'un livre et d'un maillet en bois"
   />
 
   <v-container>

+ 8 - 1
pages/nous-contacter.vue

@@ -1,9 +1,14 @@
 <template>
   <CommonMeta
     title="Nous contacter - Opentalent"
-    description="Notre équipe est là pour vous. Contactez-nous!"
+    description="Contactez Opentalent pour des devis et démos personnalisés, et un support expert. Une solution adaptée à vos projets culturels. Connectez-vous avec notre équipe ! "
   />
 
+  <LayoutUITitlePage>
+    Nous contacter
+    <template #subtitle>Notre équipe est là pour vous. Contactez-nous sans plus attendre.</template>
+  </LayoutUITitlePage>
+
   <ContactBanner />
 
   <ContactForm />
@@ -18,3 +23,5 @@
   margin-top: 48px;
 }
 </style>
+<script setup lang="ts">
+</script>

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

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

+ 3 - 2
pages/nous-rejoindre/index.vue

@@ -1,16 +1,17 @@
 <template>
   <CommonMeta
     title="Nous rejoindre - Opentalent"
-    description="Offres d'emploi et candidatures"
+    description="Rejoignez l'équipe Opentalent : postes et stages disponibles dans divers domaines. Transformez le secteur culturel avec nous. Candidatez maintenant !"
   />
 
   <LayoutUITitlePage>
     Nous rejoindre
+    <template #subtitle>Découvrez toutes les opportunités de carrière d’Opentalent.</template>
   </LayoutUITitlePage>
 
   <CommonBanner
     imageSrc="/images/join/join.jpg"
-    imageAlt="banner"
+    imageAlt="Mains de femmes les unes au-dessus des autres"
   />
 
   <h3 id="join-us-anchor" class="mt-6">

+ 4 - 3
pages/opentalent_artist.vue

@@ -1,7 +1,7 @@
 <template>
   <CommonMeta
     title="Opentalent Artist"
-    description="Description du produit Opentalent Artist"
+    description="Optimisez votre organisation avec Opentalent Artist. Gérez efficacement les membres, activités et équipements. Booster votre communication avec notre logiciel intuitif."
   />
 
   <div class="theme-artist" >
@@ -9,15 +9,16 @@
 
     <LogicielsTitle>
       <template #left-text>School</template>
-      Opentalent Artist
+      Logiciel Opentalent Artist
       <template #right-text>Manager</template>
     </LogicielsTitle>
 
     <CommonBanner
       image-src="/images/logiciels/artist/banner.jpg"
-      image-alt="banner artist"
+      image-alt="Groupe de musique jouant dans la rue"
       square-text="Orchestres, chorales, compagnies de danse, de cirque et de théâtre"
       logo-src="/images/logo/logiciels/Artist-noir.png"
+      logo-alt="Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes"
     />
 
     <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />

+ 7 - 6
pages/opentalent_manager.vue

@@ -1,21 +1,22 @@
 <template>
   <CommonMeta
     title="Opentalent Manager"
-    description="Description du produit Opentalent Manager"
+    description="Opentalent Manager, la solution sur-mesure pour gérer et communiquer au sein de réseaux culturels. Idéal pour fédérations et institutions."
   />
 
   <div class="theme-manager">
     <LogicielsTitle>
       <template #left-text>School</template>
-      Opentalent Manager
+      Logiciel Opentalent Manager
       <template #right-text>Artist</template>
     </LogicielsTitle>
 
     <CommonBanner
-      imageSrc="/images/logiciels/manager/banner-manager.png"
-      imageAlt="line"
-      squareText="Fédérations, confédérations et collectivités"
-      logoSrc="/images/logo/logiciels/Manager-noir.png"
+      image-src="/images/logiciels/manager/banner-manager.png"
+      image-alt="Visuel d’un réseau avec des branches de couleur rouge, bleu et jaune, qui montre les différents types de structures"
+      square-text="Fédérations, confédérations et collectivités"
+      logo-src="/images/logo/logiciels/Manager-noir.png"
+      logo-alt="Logo Opentalent Manager - logiciel de gestion et de communication pour les fédérations, les confédérations et les collectivités"
     />
 
     <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />

+ 4 - 3
pages/opentalent_school.vue

@@ -1,21 +1,22 @@
 <template>
   <CommonMeta
     title="Opentalent School"
-    description="Description du produit Opentalent School"
+    description="Opentalent School, le logiciel tout-en-un pour les établissements d’enseignement artistique. Simplifiez la gestion et la communication de votre établissement."
   />
 
   <div class="theme-school">
     <LogicielsTitle>
       <template #left-text>Artist</template>
-      Opentalent School
+      Logiciel Opentalent School
       <template #right-text>Manager</template>
     </LogicielsTitle>
 
     <CommonBanner
       image-src="/images/solutions/school.jpg"
-      image-alt="line"
+      image-alt="Deux jeunes filles jouant du violon, l'une est au premier plan et l’autre floutée"
       square-text="École de musique, d'art, de danse, de cirque, conservatoires et MJC"
       logo-src="/images/logo/logiciels/School-Blanc.png"
+      logo-alt="Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique"
       :logo-alt-theme="true"
     />
 

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

@@ -10,7 +10,7 @@
 
   <CommonBanner
     imageSrc="/images/Bannieres_Mentions_legales-CGV-Cookies.png"
-    imageAlt="banner"
+    imageAlt="Ordinateur à côté d'une balance d'un livre et d'un maillet en bois"
   />
 
   <v-container>

+ 3 - 2
pages/qui-sommes-nous.vue

@@ -5,16 +5,17 @@
 <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."
+    description="Opentalent, créé par des passionnés, révolutionne la gestion culturelle et la promotion du spectacle vivant pour enrichir le développement de la culture."
   />
 
   <LayoutUITitlePage class="mb-12">
     Qui sommes-nous ?
+    <template #subtitle>L’entreprise Opentalent, historique, valeurs et équipe, découvrez-nous.</template>
   </LayoutUITitlePage>
 
   <CommonBanner
     imageSrc="/images/banner/about_opentalent.png"
-    imageAlt="banner"
+    imageAlt="Réunion d’équipe dans une salle de réunion avec 5 personnes"
   />
 
   <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />

+ 4 - 4
pages/webinaires.vue

@@ -1,19 +1,19 @@
 <template>
   <CommonMeta
     title="Webinaires - Opentalent"
-    description="Partez à la découverte de vos logiciels Opentalent."
+    description="Approfondissez votre expertise avec les webinaires Opentalent Artist et Manager. Découvrez comment Opentalent School transforme votre gestion éducative."
   />
 
   <CommonActionMenu />
 
   <LayoutUITitlePage>
-    Webinaires
-    <template #subtitle>Partez à la découverte de vos logiciels Opentalent.</template>
+    Webinaires de présentation Opentalent
+    <template #subtitle>Partez à la découverte de notre gamme de logiciels Opentalent.</template>
   </LayoutUITitlePage>
 
   <CommonBanner
     imageSrc="images/banner/Visuel_page_Webinaires.png"
-    imageAlt="banner"
+    imageAlt="Ordinateur avec un écran en visioconférence de 9 personnes posé sur un bureau vers une fenêtre"
   />
 
   <WebinaireCatalogue />

+ 88 - 78
types/interface.d.ts

@@ -2,44 +2,48 @@ import { ActionMenuItemType } from "~/types/enum/layout";
 
 interface ActionMenuItem {
   type: ActionMenuItemType
-  color: 'primary' | 'secondary',
-  icon: string,
-  text: string,
-  url?: string,
+  color: 'primary' | 'secondary'
+  icon: string
+  text: string
+  url?: string
 }
 
 interface MainMenuItem {
-  label: string,
-  to?: string,
+  label: string
+  to?: string
   children?: Array<MainMenuItem>
 }
 
 interface CarouselItem {
-  logo: string,
-  description: string,
-  descriptionSm: string,
-  buttonClass: string,
-  image: string,
-  color: string,
-  link: string,
-  name: string,
-  school: string,
-  status: string,
+  logo: string
+  logoAlt: string
+  description: string
+  descriptionSm: string
+  buttonClass: string
+  image: string
+  imageAlt: string
+  color: string
+  link: string
+  name: string
+  school: string
+  status: string
   avatar: string
+  avatarAlt: string
 }
 
 interface SolutionItem {
-  name: string;
-  description: string;
-  image: string;
-  link: string;
-  class: string;
-  solutions: string[];
+  name: string
+  description: string
+  image: string
+  alt: string
+  link: string
+  class: string
+  solutions: string[]
 }
 
 interface Review {
   name: string,
-  review: string
+  review: string,
   status: string,
   structure: string,
 }
@@ -56,101 +60,107 @@ interface FeaturePicto {
 
 // TODO: vérifier l'utilité des props list et isMemberCmf
 interface Benefit {
-  title: string;
-  number: string;
-  description: string;
-  image: string;
-  list?: string[],
-  isMemberCMF?: boolean;
+  title: string
+  number: string
+  description: string
+  image: string
+  alt: string
+  list?: string[]
+  isMemberCMF?: boolean
 }
 
 interface Functionality {
-  logo: string,
-  title: string,
-  list: Array<string>,
-  options?: Array<string>,
+  logo: string
+  logoAlt: string
+  title: string
+  list: Array<string>
+  options?: Array<string>
 }
 
 interface ComparisonItem {
-  label: string,
-  includedInStandard: boolean | string,
-  includedInPremium: boolean | string,
+  label: string
+  includedInStandard: boolean | string
+  includedInPremium: boolean | string
 }
 
 interface Formation {
-  image: string;
-  overlayClass: string;
-  sessions: string;
-  title: string;
-  description: string;
-  buttonText: string;
-  link: string;
+  image: string
+  alt: string
+  overlayClass: string
+  sessions: string
+  title: string
+  description: string
+  buttonText: string
+  link: string
 }
 
 interface Program {
-  id: number;
-  objectives: string[];
+  id: number
+  objectives: string[]
 }
 
 interface Training {
-  number?: string;
-  title: string;
-  description: string;
-  objectives: string[];
-  duration: string;
-  program?: Program[];
-  price: string;
-  downloadLink: string;
+  number?: string
+  title: string
+  description: string
+  objectives: string[]
+  duration: string
+  program?: Program[]
+  price: string
+  downloadLink: string
   imageUrl?: string
-  additionalObjectives?: Program[];
+  imageAlt?: string
+  additionalObjectives?: Program[]
 }
 
 interface FaqEntry {
-  question: string,
+  question: string
   answer: string
 }
 
 interface SocietyValue {
-  img: string,
-  title: string,
+  img: string
+  alt: string
+  title: string
   description: string
 }
 
 interface Event {
-  rdv: string,
-  title: string,
-  localisation: string,
-  date: string,
-  img: string,
-  tags: string[],
+  rdv: string
+  title: string
+  localisation: string
+  date: string
+  img: string
+  tags: string[]
 }
 
 interface ChronologyItem {
-  year: string,
-  title: string,
-  description: string,
+  year: string
+  title: string
+  description: string
   imageUrl: string
 }
 
 interface SocietyMember {
-  name: string,
-  position: string,
-  photo: string,
+  name: string
+  position: string
+  photo: string
+  alt: string
 }
 
 interface SocialNetworkShareBtn {
-  name: string,
-  icon: string,
-  colorOnHover?: string,
+  name: string
+  icon: string
+  colorOnHover?: string
   url: string
 }
 
 interface ContactFormData {
-  gender: string | null,
-  postalCode: string | null,
-  city: string | null,
-  phone: string | null,
-  requestType: string | null,
-  concernedProduct: string | null,
+  gender: string | null
+  postalCode: string | null
+  city: string | null
+  phone: string | null
+  requestType: string | null
+  concernedProduct: string | null
   newsletterSubscription: boolean
 }