Browse Source

resolve merge conflicts

Olivier Massot 1 year ago
parent
commit
8d34e2ab60
52 changed files with 384 additions and 246 deletions
  1. 11 0
      README.md
  2. 22 14
      components/About/Chronologie.client.vue
  3. 0 6
      components/About/Equipe.vue
  4. 15 0
      components/About/Logiciels.vue
  5. 8 2
      components/Common/Banner.vue
  6. 6 2
      components/Common/Carousel/Fonctionnalite.client.vue
  7. 1 1
      components/Common/Presentation.vue
  8. 1 1
      components/Common/ReviewSection.client.vue
  9. 225 181
      components/Common/Table/Comparatif.vue
  10. 3 3
      components/Contact/Form.vue
  11. 1 1
      components/Contact/Map.client.vue
  12. 1 1
      components/Formation/Qualite.vue
  13. 1 1
      components/Home/Caroussel.vue
  14. 7 2
      components/Home/Promotion.vue
  15. 13 5
      components/Home/Reviews.client.vue
  16. 16 14
      components/Layout/FAQ.vue
  17. 1 1
      components/Layout/Footer/Footer.vue
  18. 4 0
      components/Layout/Navigation/Md.vue
  19. 16 4
      components/Logiciels/Artist/Comparatif.vue
  20. 4 2
      components/Logiciels/Artist/SomeNumbers.vue
  21. 1 0
      components/Logiciels/Title.vue
  22. 2 2
      components/News/List.client.vue
  23. 1 1
      components/Webinaire/Catalogue.vue
  24. 1 0
      nuxt.config.ts
  25. 1 0
      package.json
  26. 5 0
      pages/actualites/[id]-[slug].vue
  27. 1 1
      pages/formations.vue
  28. 1 1
      pages/mentions-legales.vue
  29. 1 0
      pages/opentalent-artist.vue
  30. 1 0
      pages/opentalent-manager.vue
  31. 1 0
      pages/opentalent-school.vue
  32. BIN
      public/files/BDC_Opentalent_Artist_Public-2024.pdf
  33. BIN
      public/files/BDC_Opentalent_Artist_Public.pdf
  34. BIN
      public/files/PF-Metabase-2025_2-jours.pdf
  35. BIN
      public/files/PF-School-2025_1-jour.pdf
  36. BIN
      public/files/PF-School-2025_2-jours.pdf
  37. BIN
      public/files/PF-Typo3-2025_1-jour.pdf
  38. BIN
      public/files/PUBLIC-Depliant_Opentalent_Artist_2024.pdf
  39. BIN
      public/files/PUBLIC-Depliant_Opentalent_School-2024.pdf
  40. 0 0
      public/images/components/banner/Icône_instruments_de_musique_guitare_micro_flute_tambourin_et_casque_de_musique.svg
  41. BIN
      public/images/pages/formations/banner/Formations_Opentalent.jpg
  42. BIN
      public/images/pages/formations/banner/Formations_Opentalent.webp
  43. BIN
      public/images/pages/formations/opca/Formations_eligibles_aux_OPCA.jpg
  44. BIN
      public/images/pages/formations/presentation/Des_formations_sur-mesure.jpg
  45. BIN
      public/images/pages/formations/presentation/Un_programme_de_formation_complet_sur_nos_logiciels_Opentalent.jpg
  46. BIN
      public/images/pages/qui-sommes-nous/chronologie/1-Origine_Opentalent-outil_collaboratif_pour_la_culture.jpg
  47. BIN
      public/images/pages/qui-sommes-nous/chronologie/1-Origine_Opentalent-outil_collaboratif_pour_la_culture.min.jpg
  48. BIN
      public/images/pages/qui-sommes-nous/chronologie/3-logo_2iOpenService.jpg
  49. BIN
      public/images/pages/qui-sommes-nous/chronologie/4-Logiciel_MusAssos-pour_les_petites_et_moyennes_structures.png
  50. BIN
      public/images/pages/qui-sommes-nous/chronologie/Conservatoire.png
  51. BIN
      public/images/pages/qui-sommes-nous/chronologie/Logo_Opentalent_la_plateforme_culturel.jpg
  52. 12 0
      yarn.lock

+ 11 - 0
README.md

@@ -46,3 +46,14 @@ Ou utiliser la commande custom :
 Pour déboguer en prod : 
 Pour déboguer en prod : 
 
 
     sudo supervisorctl tail -6000 site_logiciels:site_logiciels_00 stderr
     sudo supervisorctl tail -6000 site_logiciels:site_logiciels_00 stderr
+
+
+### Tester la qualité du code 
+
+Pour tester : 
+
+    yarn lint
+
+Pour tester et corriger automatiquement les erreurs qui peuvent l'être : 
+
+    yarn lint --fix

+ 22 - 14
components/About/Chronologie.client.vue

@@ -33,6 +33,7 @@
             v-model="activeSlide"
             v-model="activeSlide"
             :items-to-show="lgAndUp ? 2 : 1"
             :items-to-show="lgAndUp ? 2 : 1"
             :items-to-scroll="1"
             :items-to-scroll="1"
+            :wrap-around="true"
           >
           >
             <Slide
             <Slide
               v-for="(slide, index) in slides"
               v-for="(slide, index) in slides"
@@ -110,15 +111,15 @@ const slides: Array<ChronologyItem> = [
     year: '2005',
     year: '2005',
     title: "L'origine d'Opentalent",
     title: "L'origine d'Opentalent",
     description:
     description:
-      "Sous une pleine lune inspirante, Guillaume alors imagine un outil collaboratif en ligne révolutionnaire pour le secteur culturel. Cette idée germe alors qu'il est président d'orchestre et membre du CA d'une école de musique, marquant le début du concept Opentalent.",
+      'Sous une pleine lune, face à la démobilisation des bénévoles concernant la gestion administrative, Guillaume imagine un outil collaboratif en ligne pour le secteur culturel. Cette idée émerge alors qu’il préside l’orchestre d’harmonie, membre du conseil d’administration de l’école de musique et de la Fédération des musiques du Faucigny, marquant le début du concept Openassos.',
     imageUrl:
     imageUrl:
-      '/images/pages/qui-sommes-nous/chronologie/1-Origine_Opentalent-outil_collaboratif_pour_la_culture.jpg',
+      '/images/pages/qui-sommes-nous/chronologie/1-Origine_Opentalent-outil_collaboratif_pour_la_culture.min.jpg',
   },
   },
   {
   {
     year: '2006',
     year: '2006',
     title: 'Développement et partenariat stratégique',
     title: 'Développement et partenariat stratégique',
     description:
     description:
-      "Michel, passionné par l'innovation technologique, rejoint Guillaume. Ensemble, ils développent Opentalent avec le soutien de la Fédération de Haute-Savoie. Leur travail acharné bénévole durant 2 ans donne naissance à un logiciel SAS avant-gardiste, une première dans l'univers des structures culturelles.",
+      "Michel, passionné par l'innovation technologique, rejoint Guillaume. Ensemble, ils développent Openassos avec le soutien de l’UFM de Haute-Savoie. Durant 2 ans, ils travaillent bénévolement pour donner naissance à un logiciel SAS avant-gardiste, une première dans l'univers des structures culturelles.",
     imageUrl:
     imageUrl:
       '/images/pages/qui-sommes-nous/chronologie/2-Developpement_et_partenariat_strategique_Opentalent.jpg',
       '/images/pages/qui-sommes-nous/chronologie/2-Developpement_et_partenariat_strategique_Opentalent.jpg',
   },
   },
@@ -126,15 +127,15 @@ const slides: Array<ChronologyItem> = [
     year: '2008',
     year: '2008',
     title: "Naissance de l'entreprise 2iOpenservice",
     title: "Naissance de l'entreprise 2iOpenservice",
     description:
     description:
-      "La Fédération de Haute-Savoie, séduite par le projet, invite à collaborer avec la CMF, élargissant l'impact d'Opentalent. 2IOpenservice est alors officiellement créée, marquant une nouvelle ère dans la gestion culturelle digitale.  ",
+      " L’Union des Fédérations Musicales de Haute-Savoie, séduite par le projet, invite à collaborer avec la CMF, élargissant l'impact d’Openassos. 2IOpenservice est alors officiellement créée, marquant une nouvelle ère dans la gestion culturelle digitale.",
     imageUrl:
     imageUrl:
-      '/images/pages/qui-sommes-nous/chronologie/3-Naissance_de_l_entreprise_2IOpenservice-Opentalent.jpg',
+      '/images/pages/qui-sommes-nous/chronologie/3-logo_2iOpenService.jpg',
   },
   },
   {
   {
     year: '2009',
     year: '2009',
-    title: 'MusAssos - la réponse aux besoins pour les petites structures',
+    title: 'Musassos pour les petites et moyennes écoles associatives',
     description:
     description:
-      'Pour répondre aux besoins spécifiques des écoles affiliées à la CMF, 2iopenservice lance MusAssos, une solution adapté aux petites et moyennes structures, facilitant la gestion et la promotion culturelle.',
+      'Pour répondre aux besoins spécifiques des écoles affiliées à la Confédération Musicale de France (CMF), 2iopenservice lance Musassos une solution adaptée pour les petites et moyennes écoles de musique associatives, facilitant leur gestion et leur promotion culturelle.',
     imageUrl:
     imageUrl:
       '/images/pages/qui-sommes-nous/chronologie/4-Logiciel_MusAssos-pour_les_petites_et_moyennes_structures.png',
       '/images/pages/qui-sommes-nous/chronologie/4-Logiciel_MusAssos-pour_les_petites_et_moyennes_structures.png',
   },
   },
@@ -142,17 +143,17 @@ const slides: Array<ChronologyItem> = [
     year: '2010',
     year: '2010',
     title: "CMF Réseau <br> l'innovation communautaire",
     title: "CMF Réseau <br> l'innovation communautaire",
     description:
     description:
-      "La CMF adopte AdminFédé pour connecter ses adhérents, et AdminAsso devient accessible à tous, démocratisant l'accès aux outils de gestion artistique.",
+      "La CMF adopte Adminfédé pour connecter ses adhérents, et Adminassos devient accessible à tous ses adhérents, démocratisant l'accès aux outils de gestion artistique.",
     imageUrl:
     imageUrl:
       '/images/pages/qui-sommes-nous/chronologie/5-Confédération_Musicale_de_France-CMF_Réseau-AdminFédé_AdminAsso.png',
       '/images/pages/qui-sommes-nous/chronologie/5-Confédération_Musicale_de_France-CMF_Réseau-AdminFédé_AdminAsso.png',
   },
   },
   {
   {
     year: '2014',
     year: '2014',
-    title: 'Vers une Culture Multidisciplinaire avec FFEC',
+    title: 'Openassos devient Opentalent ',
     description:
     description:
-      "Le logiciel d'Opentalent s'étend au-delà de l'enseignement artistique, embrassant l'art, la musique, le théâtre, la danse et le cirque. En partenariat avec la FFEC, Reso Cirque voit le jour, intégrant notre solution au cœur de la pratique circassienne.",
+      " Le logiciel s'étend au-delà de la musique, embrassant la danse, le théâtre, le crique et l’art. En partenariat avec la Fédération Française des Ecoles de Cirque (FFEC), Reso Cirque voit le jour, intégrant notre solution au cœur de la pratique circassienne. ",
     imageUrl:
     imageUrl:
-      '/images/pages/qui-sommes-nous/chronologie/6-FFEC_Reso_Cirque-Ouverture_vers_une_culture_multidisciplinaire.png',
+      '/images/pages/qui-sommes-nous/chronologie/Logo_Opentalent_la_plateforme_culturel.jpg',
   },
   },
   {
   {
     year: '2015',
     year: '2015',
@@ -170,6 +171,13 @@ const slides: Array<ChronologyItem> = [
     imageUrl:
     imageUrl:
       '/images/pages/qui-sommes-nous/chronologie/8-Nouvelle_generation_Opentalent_moderne_securisee_experience_optimisee.jpg',
       '/images/pages/qui-sommes-nous/chronologie/8-Nouvelle_generation_Opentalent_moderne_securisee_experience_optimisee.jpg',
   },
   },
+  {
+    year: '2020',
+    title: 'Cap sur sur les conservatoires',
+    description:
+      'La nouvelle gamme Opentalent, représente une étape clé pour l’entreprise, désormais tournée vers les plus grands conservatoires. Des développements spécifiques ont été élaborés pour répondre aux exigences de ce secteur, consolidant ainsi la position d’Opentalent en tant qu’acteur incontournable du domaine culturel.',
+    imageUrl: '/images/pages/qui-sommes-nous/chronologie/Conservatoire.png',
+  },
   {
   {
     year: '2024',
     year: '2024',
     title: 'Relooking du site Opentalent',
     title: 'Relooking du site Opentalent',
@@ -255,11 +263,11 @@ const slides: Array<ChronologyItem> = [
 
 
   .image-container,
   .image-container,
   .description-container {
   .description-container {
-    height: 300px;
-    width: 300px;
+    height: 355px;
+    width: 320px;
 
 
     @media (max-width: 1480px) {
     @media (max-width: 1480px) {
-      height: 320px;
+      height: 350px;
       width: 260px;
       width: 260px;
     }
     }
 
 

+ 0 - 6
components/About/Equipe.vue

@@ -106,12 +106,6 @@ const employees: Array<SocietyMember> = [
       '/images/pages/qui-sommes-nous/equipe/Laetitia_SIFFOINTE-Chargee_de_Marketing_et_Communication.png',
       '/images/pages/qui-sommes-nous/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',
     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 et commerciale',
-    photo: '/images/pages/qui-sommes-nous/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',
     name: 'Vincent',
     position: 'Lead developer',
     position: 'Lead developer',

+ 15 - 0
components/About/Logiciels.vue

@@ -46,6 +46,10 @@
               </footer>
               </footer>
             </v-img>
             </v-img>
           </nuxt-link>
           </nuxt-link>
+
+          <div class="subtitle">
+            {{ item.subtitle }}
+          </div>
         </v-col>
         </v-col>
       </v-row>
       </v-row>
     </LayoutContainer>
     </LayoutContainer>
@@ -72,6 +76,7 @@ const items: Array<{
   logoAlt: string
   logoAlt: string
   class: string
   class: string
   link: string
   link: string
+  subtitle: string
 }> = [
 }> = [
   {
   {
     imageUrl:
     imageUrl:
@@ -82,6 +87,8 @@ const items: Array<{
       'Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes',
       'Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes',
     class: 'artist',
     class: 'artist',
     link: '/opentalent-artist',
     link: '/opentalent-artist',
+    subtitle:
+      'Pour les orchestres, les chorales, les compagnies et les troupes artistiques',
   },
   },
   {
   {
     imageUrl:
     imageUrl:
@@ -92,6 +99,7 @@ const items: Array<{
       'Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique',
       'Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique',
     class: 'school',
     class: 'school',
     link: '/opentalent-school',
     link: '/opentalent-school',
+    subtitle: 'Pour tous les établissements d’enseignement artistique',
   },
   },
   {
   {
     imageUrl:
     imageUrl:
@@ -102,6 +110,7 @@ const items: Array<{
       'Logo Opentalent Manager - logiciel de gestion et de communication pour les fédérations, les confédérations et les collectivités',
       'Logo Opentalent Manager - logiciel de gestion et de communication pour les fédérations, les confédérations et les collectivités',
     class: 'manager',
     class: 'manager',
     link: '/opentalent-manager',
     link: '/opentalent-manager',
+    subtitle: 'Pour les fédérations, confédérations et institutions publiques',
   },
   },
 ]
 ]
 </script>
 </script>
@@ -214,4 +223,10 @@ li:before {
 .manager .plus-button {
 .manager .plus-button {
   background: var(--manager-color);
   background: var(--manager-color);
 }
 }
+
+.subtitle {
+  margin-top: 12px;
+  text-align: center;
+  font-size: 1rem;
+}
 </style>
 </style>

+ 8 - 2
components/Common/Banner.vue

@@ -13,8 +13,9 @@
             <v-row>
             <v-row>
               <div class="content-row">
               <div class="content-row">
                 <img
                 <img
-                  src="/images/components/banner/Icone_instruments_de_musique_trompette_et_tambour_avec_des_notes_de_musique.svg"
-                  alt="Icône instruments de musique trompette et tambour avec des notes de musique"
+                  v-if="iconSrc !== null"
+                  :src="iconSrc"
+                  alt="Icône instruments de musique"
                   class="custom-icon"
                   class="custom-icon"
                 />
                 />
                 <p class="description">
                 <p class="description">
@@ -72,6 +73,11 @@ defineProps({
     type: Boolean,
     type: Boolean,
     default: false,
     default: false,
   },
   },
+  iconSrc: {
+    type: String as PropType<string | null>,
+    required: false,
+    default: null,
+  },
   reverseImage: {
   reverseImage: {
     type: Boolean,
     type: Boolean,
     default: false,
     default: false,

+ 6 - 2
components/Common/Carousel/Fonctionnalite.client.vue

@@ -1,8 +1,8 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
     <v-row class="center-90">
     <v-row class="center-90">
-      <v-col cols="12" md="12">
-        <LayoutUISubTitle>
+      <v-col cols="12">
+        <LayoutUISubTitle class="title">
           Découvrez toutes les fonctionnalités de notre solution
           Découvrez toutes les fonctionnalités de notre solution
         </LayoutUISubTitle>
         </LayoutUISubTitle>
 
 
@@ -105,6 +105,10 @@ h5 {
   text-align: center;
   text-align: center;
 }
 }
 
 
+.title {
+  margin-left: -12px;
+}
+
 .v-row {
 .v-row {
   width: 95%;
   width: 95%;
   margin-left: auto;
   margin-left: auto;

+ 1 - 1
components/Common/Presentation.vue

@@ -6,7 +6,7 @@ Section "Présentation" d'une page Logiciel
     <v-row class="center-90">
     <v-row class="center-90">
       <!-- Colonne 1 (sous-titre, illustration logiciels, prix) -->
       <!-- Colonne 1 (sous-titre, illustration logiciels, prix) -->
       <v-col cols="12" lg="5">
       <v-col cols="12" lg="5">
-        <LayoutUISubTitle class="ml-8">
+        <LayoutUISubTitle>
           {{ title }}
           {{ title }}
         </LayoutUISubTitle>
         </LayoutUISubTitle>
 
 

+ 1 - 1
components/Common/ReviewSection.client.vue

@@ -158,7 +158,7 @@ const goNext = () => {
     }
     }
 
 
     @media (max-width: 600px) {
     @media (max-width: 600px) {
-      height: auto;
+      height: 100%;
     }
     }
   }
   }
 
 

+ 225 - 181
components/Common/Table/Comparatif.vue

@@ -1,188 +1,190 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
-    <v-row class="center-90">
-      <table v-if="mdAndUp">
-        <thead>
-          <tr>
-            <th />
-
-            <th>
-              <p class="standard">Standard</p>
-              <p v-if="showFrom" class="from">À partir de</p>
-              <p class="price">
-                {{ standardPrice }} <span class="ttc">ttc</span>
-              </p>
-              <p class="month">/mois *</p>
-            </th>
-
-            <th class="premium-column">
-              <p class="standard">Premium</p>
-              <p v-if="showFrom" class="from">À partir de</p>
-              <p class="price">
-                {{ premiumPrice }} <span class="ttc">ttc</span>
-              </p>
-              <p class="month">/mois *</p>
-            </th>
-          </tr>
-        </thead>
-
-        <tbody>
-          <tr v-for="item in items" :key="item.label">
-            <td class="label-column">
-              {{ item.label }}
-            </td>
-
-            <td>
-              <v-icon
-                v-if="item.includedInStandard === true"
-                icon="far fa-check-circle"
-                size="18"
-              />
-
-              <v-icon
-                v-else-if="item.includedInStandard === false"
-                icon="far fa-times-circle"
-                size="18"
-                color="red"
-              />
-
-              <span v-else>
-                {{ item.includedInStandard }}
-              </span>
-            </td>
-
-            <td>
-              <v-icon
-                v-if="item.includedInPremium === true"
-                icon="far fa-check-circle"
-                size="18"
-              />
-
-              <v-icon
-                v-else-if="item.includedInPremium === false"
-                icon="far fa-times-circle"
-                size="18"
-                color="red"
-              />
-
-              <span v-else>
-                {{ item.includedInPremium }}
-              </span>
-            </td>
-          </tr>
-        </tbody>
-      </table>
-
-      <div v-else>
-        <div class="d-flex flex-row flex-grow-1 justify-center mt-2">
-          <v-btn
-            :disabled="carouselPos === 0"
-            icon="fas fa-chevron-left"
-            class="mr-6"
-            aria-label="Précédent"
-            @click="goToPrevious"
-          />
-          <v-btn
-            :disabled="carouselPos === 1"
-            icon="fas fa-chevron-right"
-            aria-label="Suivant"
-            @click="goToNext"
-          />
+    <div class="premium-container">
+      <v-row class="center-90">
+        <table v-if="mdAndUp">
+          <thead>
+            <tr>
+              <th />
+
+              <th>
+                <p class="standard">Standard</p>
+                <p v-if="showFrom" class="from">À partir de</p>
+                <p class="price">
+                  {{ standardPrice }} <span class="ttc">ttc</span>
+                </p>
+                <p class="month">/mois *</p>
+              </th>
+
+              <th class="premium-column">
+                <p class="standard">Premium</p>
+                <p v-if="showFrom" class="from">À partir de</p>
+                <p class="price">
+                  {{ premiumPrice }} <span class="ttc">ttc</span>
+                </p>
+                <p class="month">/mois *</p>
+              </th>
+            </tr>
+          </thead>
+
+          <tbody>
+            <tr v-for="item in items" :key="item.label">
+              <td class="label-column">
+                {{ item.label }}
+              </td>
+
+              <td>
+                <v-icon
+                  v-if="item.includedInStandard === true"
+                  icon="far fa-check-circle"
+                  size="18"
+                />
+
+                <v-icon
+                  v-else-if="item.includedInStandard === false"
+                  icon="far fa-times-circle"
+                  size="18"
+                  color="red"
+                />
+
+                <span v-else>
+                  {{ item.includedInStandard }}
+                </span>
+              </td>
+
+              <td>
+                <v-icon
+                  v-if="item.includedInPremium === true"
+                  icon="far fa-check-circle"
+                  size="18"
+                />
+
+                <v-icon
+                  v-else-if="item.includedInPremium === false"
+                  icon="far fa-times-circle"
+                  size="18"
+                  color="red"
+                />
+
+                <span v-else>
+                  {{ item.includedInPremium }}
+                </span>
+              </td>
+            </tr>
+          </tbody>
+        </table>
+
+        <div v-else>
+          <div class="d-flex flex-row flex-grow-1 justify-center mt-2">
+            <v-btn
+              :disabled="carouselPos === 0"
+              icon="fas fa-chevron-left"
+              class="mr-6"
+              aria-label="Précédent"
+              @click="goToPrevious"
+            />
+            <v-btn
+              :disabled="carouselPos === 1"
+              icon="fas fa-chevron-right"
+              aria-label="Suivant"
+              @click="goToNext"
+            />
+          </div>
+
+          <v-carousel
+            v-model="carouselPos"
+            :hide-delimiters="true"
+            :show-arrows="false"
+            :height="height"
+          >
+            <v-carousel-item>
+              <h4>Standard</h4>
+              <div>
+                <p class="from">À partir de</p>
+                <p class="price">
+                  {{ standardPrice }} <span class="ttc">ttc</span>
+                  <span class="month">/mois</span>
+                </p>
+              </div>
+
+              <table>
+                <tbody>
+                  <tr v-for="item in items" :key="item.label">
+                    <td class="label-column">
+                      {{ item.label }}
+                    </td>
+
+                    <td>
+                      <v-icon
+                        v-if="item.includedInStandard === true"
+                        icon="far fa-check-circle"
+                        size="18"
+                      />
+
+                      <v-icon
+                        v-else-if="item.includedInStandard === false"
+                        icon="far fa-times-circle"
+                        size="18"
+                        color="red"
+                      />
+
+                      <span v-else>
+                        {{ item.includedInStandard }}
+                      </span>
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+            </v-carousel-item>
+
+            <v-carousel-item>
+              <h4>Premium</h4>
+
+              <div>
+                <p class="from">À partir de</p>
+                <p class="price">
+                  {{ premiumPrice }} <span class="ttc">ttc</span>
+                  <span class="month">/mois</span>
+                </p>
+              </div>
+
+              <table>
+                <tbody>
+                  <tr v-for="item in items" :key="item.label">
+                    <td class="label-column">
+                      {{ item.label }}
+                    </td>
+
+                    <td>
+                      <v-icon
+                        v-if="item.includedInPremium === true"
+                        icon="far fa-check-circle"
+                        size="18"
+                      />
+
+                      <v-icon
+                        v-else-if="item.includedInPremium === false"
+                        icon="far fa-times-circle"
+                        size="18"
+                        color="red"
+                      />
+
+                      <span v-else>
+                        {{ item.includedInPremium }}
+                      </span>
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+            </v-carousel-item>
+          </v-carousel>
         </div>
         </div>
 
 
-        <v-carousel
-          v-model="carouselPos"
-          :hide-delimiters="true"
-          :show-arrows="false"
-          :height="height"
-        >
-          <v-carousel-item>
-            <h4>Standard</h4>
-            <div>
-              <p class="from">À partir de</p>
-              <p class="price">
-                {{ standardPrice }} <span class="ttc">ttc</span>
-                <span class="month">/mois</span>
-              </p>
-            </div>
-
-            <table>
-              <tbody>
-                <tr v-for="item in items" :key="item.label">
-                  <td class="label-column">
-                    {{ item.label }}
-                  </td>
-
-                  <td>
-                    <v-icon
-                      v-if="item.includedInStandard === true"
-                      icon="far fa-check-circle"
-                      size="18"
-                    />
-
-                    <v-icon
-                      v-else-if="item.includedInStandard === false"
-                      icon="far fa-times-circle"
-                      size="18"
-                      color="red"
-                    />
-
-                    <span v-else>
-                      {{ item.includedInStandard }}
-                    </span>
-                  </td>
-                </tr>
-              </tbody>
-            </table>
-          </v-carousel-item>
-
-          <v-carousel-item>
-            <h4>Premium</h4>
-
-            <div>
-              <p class="from">À partir de</p>
-              <p class="price">
-                {{ premiumPrice }} <span class="ttc">ttc</span>
-                <span class="month">/mois</span>
-              </p>
-            </div>
-
-            <table>
-              <tbody>
-                <tr v-for="item in items" :key="item.label">
-                  <td class="label-column">
-                    {{ item.label }}
-                  </td>
-
-                  <td>
-                    <v-icon
-                      v-if="item.includedInPremium === true"
-                      icon="far fa-check-circle"
-                      size="18"
-                    />
-
-                    <v-icon
-                      v-else-if="item.includedInPremium === false"
-                      icon="far fa-times-circle"
-                      size="18"
-                      color="red"
-                    />
-
-                    <span v-else>
-                      {{ item.includedInPremium }}
-                    </span>
-                  </td>
-                </tr>
-              </tbody>
-            </table>
-          </v-carousel-item>
-        </v-carousel>
-      </div>
-
-      <div class="asterisk">
-        <span>* Payable annuellement</span>
-      </div>
-    </v-row>
+        <div class="asterisk">
+          <span>* Payable annuellement</span>
+        </div>
+      </v-row>
+    </div>
   </LayoutContainer>
   </LayoutContainer>
 </template>
 </template>
 
 
@@ -359,4 +361,46 @@ td:first-child {
   justify-content: flex-end;
   justify-content: flex-end;
   font-style: italic;
   font-style: italic;
 }
 }
+
+table tr th:nth-child(3),
+table tr td:nth-child(3) {
+  border-left: 2px solid black;
+  border-right: 2px solid black;
+  width: 15rem;
+  border-radius: 50px;
+  padding: 1rem;
+  position: relative;
+}
+table tr:nth-child(1) th:nth-child(3) {
+  border-bottom: none !important;
+}
+
+.premium-column {
+  position: relative;
+  z-index: 10;
+  border-radius: 0 15px 15px 0;
+}
+
+.premium-column p,
+.premium-column .month,
+.premium-column .price {
+  border: none !important;
+}
+
+thead th:nth-child(3) {
+  border-top: 2px solid black;
+}
+
+tbody tr:last-child td:nth-child(3) {
+  border-bottom: 2px solid black;
+  border-radius: 0 0 15px 0;
+}
+
+.premium-column p,
+.premium-column .month,
+.premium-column .price,
+.premium-column .ttc {
+  margin: 0;
+  padding: 0;
+}
 </style>
 </style>

+ 3 - 3
components/Contact/Form.vue

@@ -193,9 +193,9 @@
         l’exécution des contrats. Conformément à la loi "Informatique et
         l’exécution des contrats. Conformément à la loi "Informatique et
         Libertés du 6 Janvier 1978", vous disposez d’un droit d’accès, de
         Libertés du 6 Janvier 1978", vous disposez d’un droit d’accès, de
         modifications, de rectification et de suppression des données vous
         modifications, de rectification et de suppression des données vous
-        concernant. Pour toute demande, adressez-vous à : Opentalent, 265, rue de la Grange, 
-        74950 SCIONZIER, opentalent.fr s’engage à la
-        confidentialité et à la protection de vos données.
+        concernant. Pour toute demande, adressez-vous à : OPENTALENT, 265 rue de
+        la Grange 74950 SCIONZIER - FRANCE, opentalent.fr s’engage à la
+        confidentialité et à la protection de vos données.
       </div>
       </div>
     </v-form>
     </v-form>
 
 

+ 1 - 1
components/Contact/Map.client.vue

@@ -71,7 +71,7 @@ import 'leaflet/dist/leaflet.css'
 import { LMap, LTileLayer, LMarker } from '@vue-leaflet/vue-leaflet'
 import { LMap, LTileLayer, LMarker } from '@vue-leaflet/vue-leaflet'
 import L from 'leaflet'
 import L from 'leaflet'
 
 
-const location = [46.055, 6.55];
+const location = [46.055, 6.55]
 
 
 // eslint-disable-next-line import/no-named-as-default-member
 // eslint-disable-next-line import/no-named-as-default-member
 const icon = L.icon({
 const icon = L.icon({

+ 1 - 1
components/Formation/Qualite.vue

@@ -53,6 +53,6 @@ import AnchoredSection from '~/components/Layout/AnchoredSection.vue'
 
 
 .card {
 .card {
   color: var(--on-alt-theme) !important;
   color: var(--on-alt-theme) !important;
-  background: var(--primary-color);
+  background: var(--primary-color) !important;
 }
 }
 </style>
 </style>

+ 1 - 1
components/Home/Caroussel.vue

@@ -10,7 +10,7 @@ Carrousel de la page d'accueil
       :hide-delimiter-background="true"
       :hide-delimiter-background="true"
       :show-delimiters="false"
       :show-delimiters="false"
       :touch="true"
       :touch="true"
-      :height="lgAndUp ? 500 : 800"
+      :height="lgAndUp ? 500 : 600"
       :interval="10000"
       :interval="10000"
       :cycle="true"
       :cycle="true"
     >
     >

+ 7 - 2
components/Home/Promotion.vue

@@ -66,7 +66,10 @@
           aria-description="Vidéo corporate Opentalent : découvrez l’histoire de l’entreprise, son agenda et ses logiciels culturels"
           aria-description="Vidéo corporate Opentalent : découvrez l’histoire de l’entreprise, son agenda et ses logiciels culturels"
         >
         >
           <source
           <source
-            src="/storage/Video_Corporate_Opentalent-Agenda_et_logiciels_culturels.mp4"
+            :src="
+              runtimeConfig.public.fileStorageBaseUrl +
+              '/Video_Corporate_Opentalent-Agenda_et_logiciels_culturels.mp4'
+            "
             type="video/mp4"
             type="video/mp4"
           />
           />
         </video>
         </video>
@@ -140,6 +143,8 @@
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
+const runtimeConfig = useRuntimeConfig()
+
 const playVideo: Ref<boolean> = ref(false)
 const playVideo: Ref<boolean> = ref(false)
 </script>
 </script>
 
 
@@ -154,7 +159,7 @@ const playVideo: Ref<boolean> = ref(false)
     background: var(--primary-color);
     background: var(--primary-color);
 
 
     @media (max-width: 600px) {
     @media (max-width: 600px) {
-      min-height: 430px;
+      min-height: 550px;
       padding: 0 5%;
       padding: 0 5%;
     }
     }
   }
   }

+ 13 - 5
components/Home/Reviews.client.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <LayoutContainer>
+  <LayoutContainer class="main-container">
     <div class="container-1">
     <div class="container-1">
       <LayoutUISectionTitle> Avis Clients </LayoutUISectionTitle>
       <LayoutUISectionTitle> Avis Clients </LayoutUISectionTitle>
 
 
@@ -268,10 +268,12 @@ const items: Ref<Array<{ src: string; alt: string }>> = ref([
 ])
 ])
 </script>
 </script>
 
 
-<style scoped>
-.container-1 {
+<style scoped lang="scss">
+.main-container {
   background-color: var(--neutral-color-alt-light);
   background-color: var(--neutral-color-alt-light);
+}
 
 
+.container-1 {
   @media (min-width: 1240px) {
   @media (min-width: 1240px) {
     height: 22rem;
     height: 22rem;
   }
   }
@@ -283,11 +285,15 @@ const items: Ref<Array<{ src: string; alt: string }>> = ref([
     color: var(--primary-color);
     color: var(--primary-color);
   }
   }
 
 
-  @media (max-width: 600px) {
-    margin-bottom: 24px;
+  @media (max-width: 900px) {
+    padding-bottom: 24px;
   }
   }
 }
 }
 
 
+.v-card {
+  height: 100%;
+}
+
 .container-2 {
 .container-2 {
   background-color: var(--primary-color);
   background-color: var(--primary-color);
 
 
@@ -372,6 +378,8 @@ const items: Ref<Array<{ src: string; alt: string }>> = ref([
 }
 }
 
 
 .container-sm {
 .container-sm {
+  background-color: var(--primary-color);
+
   .v-card {
   .v-card {
     width: 70%;
     width: 70%;
     display: flex;
     display: flex;

+ 16 - 14
components/Layout/FAQ.vue

@@ -1,23 +1,21 @@
 <template>
 <template>
   <div class="alt-theme main my-2">
   <div class="alt-theme main my-2">
+    <div class="center-90">
+      <v-row class="subtitle">
+        <v-col cols="12">
+          <LayoutUISubTitle class="mt-12 ml-3">
+            Vous voulez tirer le meilleur de notre logiciel ?
+          </LayoutUISubTitle>
+        </v-col>
+      </v-row>
+    </div>
+
     <v-row>
     <v-row>
       <v-col cols="12" lg="6">
       <v-col cols="12" lg="6">
-        <LayoutUISubTitle class="mt-12 ml-3">
-          Vous voulez tirer le meilleur de notre logiciel ?
-        </LayoutUISubTitle>
-
-        <h3 class="mt-6">
+        <h3 class="mt-12">
           Quelle que soit votre demande, notre équipe est à vos côtés pour vous
           Quelle que soit votre demande, notre équipe est à vos côtés pour vous
           guider
           guider
         </h3>
         </h3>
-
-        <v-btn
-          href="https://ressources.opentalent.fr/"
-          target="_blank"
-          class="btn-faq inv-theme"
-        >
-          Consulter notre FAQ
-        </v-btn>
       </v-col>
       </v-col>
 
 
       <v-col cols="12" lg="6" class="links">
       <v-col cols="12" lg="6" class="links">
@@ -65,8 +63,12 @@
   max-width: 100%;
   max-width: 100%;
 }
 }
 
 
+.subtitle {
+  width: 100%;
+}
+
 .main {
 .main {
-  min-height: 600px;
+  min-height: 450px;
   background-image: url('/images/components/faq/Orchestre_de_rue_avec_danseuse.jpg');
   background-image: url('/images/components/faq/Orchestre_de_rue_avec_danseuse.jpg');
   background-size: cover;
   background-size: cover;
   background-position: center 15%;
   background-position: center 15%;

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

@@ -217,7 +217,7 @@
         </v-row>
         </v-row>
 
 
         <v-row class="mb-3" justify="center">
         <v-row class="mb-3" justify="center">
-          <p>2024 © Opentalent est une marque déposée par 2iOPENservice</p>
+          <p>Crédit : © 2024 Opentalent - Tous droits réservés</p>
         </v-row>
         </v-row>
       </div>
       </div>
     </LayoutContainer>
     </LayoutContainer>

+ 4 - 0
components/Layout/Navigation/Md.vue

@@ -152,6 +152,10 @@ const withAnimation = (callback: () => void) => {
   max-width: 100vw;
   max-width: 100vw;
 }
 }
 
 
+:deep(.v-app-bar-title) {
+  margin-inline-start: 0 !important;
+}
+
 .navigation-sm {
 .navigation-sm {
   background-color: var(--neutral-color);
   background-color: var(--neutral-color);
   position: fixed;
   position: fixed;

+ 16 - 4
components/Logiciels/Artist/Comparatif.vue

@@ -1,10 +1,18 @@
 <template>
 <template>
   <AnchoredSection id="comparative">
   <AnchoredSection id="comparative">
-    <LayoutContainer>
-      <LayoutUISubTitle> Comparatif de nos solutions </LayoutUISubTitle>
+    <v-row class="center-90">
+      <v-col cols="12">
+        <LayoutUISubTitle class="subtitle">
+          Comparatif de nos solutions
+        </LayoutUISubTitle>
 
 
-      <LayoutUITitle> Choisissez la version qui vous convient ! </LayoutUITitle>
+        <LayoutUITitle>
+          Choisissez la version qui vous convient !
+        </LayoutUITitle>
+      </v-col>
+    </v-row>
 
 
+    <LayoutContainer class="wrapper">
       <CommonTableComparatif
       <CommonTableComparatif
         standard-price="11€"
         standard-price="11€"
         premium-price="18€"
         premium-price="18€"
@@ -88,7 +96,11 @@ const comparisonItems: Array<ComparisonItem> = [
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
-.v-container {
+.subtitle {
+  margin-left: -12px;
+}
+
+.wrapper {
   width: 95%;
   width: 95%;
   margin-right: auto;
   margin-right: auto;
   margin-left: auto;
   margin-left: auto;

+ 4 - 2
components/Logiciels/Artist/SomeNumbers.vue

@@ -1,7 +1,9 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
-    <v-row class="custom-row">
-      <LayoutUISubTitle class="mb-12"> Quelques chiffres </LayoutUISubTitle>
+    <v-row class="center-90">
+      <v-col cols="12">
+        <LayoutUISubTitle class="mb-12"> Quelques chiffres </LayoutUISubTitle>
+      </v-col>
     </v-row>
     </v-row>
 
 
     <v-container>
     <v-container>

+ 1 - 0
components/Logiciels/Title.vue

@@ -41,6 +41,7 @@ h1 {
   line-height: 77px;
   line-height: 77px;
   color: var(--on-neutral-color);
   color: var(--on-neutral-color);
   text-align: center;
   text-align: center;
+  white-space: nowrap;
 
 
   @media (max-width: 600px) {
   @media (max-width: 600px) {
     font-size: 42px;
     font-size: 42px;

+ 2 - 2
components/News/List.client.vue

@@ -31,8 +31,8 @@
               <v-col cols="12" lg="9">
               <v-col cols="12" lg="9">
                 <div class="details">
                 <div class="details">
                   <NuxtLink
                   <NuxtLink
-                  :to="`/actualites/${newsItem.id}-${newsItem.slug}`"                    
-                  class="text-decoration-none"
+                    :to="`/actualites/${newsItem.id}-${newsItem.slug}`"
+                    class="text-decoration-none"
                   >
                   >
                     <v-card-title>
                     <v-card-title>
                       {{ newsItem.title }}
                       {{ newsItem.title }}

+ 1 - 1
components/Webinaire/Catalogue.vue

@@ -208,7 +208,7 @@ const courses: Array<Training> = [
       "Ces webinaires sont spécialement conçus pour les utilisateurs du logiciel fédéral de la Confédération Musicale de France. Gagnez en temps administratif, boostez vos performances et optimisez l'utilisation du logiciel.",
       "Ces webinaires sont spécialement conçus pour les utilisateurs du logiciel fédéral de la Confédération Musicale de France. Gagnez en temps administratif, boostez vos performances et optimisez l'utilisation du logiciel.",
     objectives: [
     objectives: [
       "Paramétrer et gérer le suivi l'appel à cotisation (suivi, relance, facture, saisie des règlements)",
       "Paramétrer et gérer le suivi l'appel à cotisation (suivi, relance, facture, saisie des règlements)",
-      "Transmission des sommes à votre fédération parente",
+      'Transmission des sommes à votre fédération parente',
       'Gérer les membres du CA et les structures adhérentes (entrées, sorties, coordonnées, mots de passe ...)',
       'Gérer les membres du CA et les structures adhérentes (entrées, sorties, coordonnées, mots de passe ...)',
       'Communiquer avec son réseau',
       'Communiquer avec son réseau',
     ],
     ],

+ 1 - 0
nuxt.config.ts

@@ -110,6 +110,7 @@ export default defineNuxtConfig({
     '@nuxtjs/google-fonts',
     '@nuxtjs/google-fonts',
     '@nuxtjs/sitemap',
     '@nuxtjs/sitemap',
     'nuxt-gtag',
     'nuxt-gtag',
+    'nuxt-vitalizer',
   ],
   ],
   router: {
   router: {
     options: {
     options: {

+ 1 - 0
package.json

@@ -43,6 +43,7 @@
     "nuxt": "^3.11.2",
     "nuxt": "^3.11.2",
     "nuxt-gtag": "^2.0.6",
     "nuxt-gtag": "^2.0.6",
     "nuxt-lodash": "^2.5.3",
     "nuxt-lodash": "^2.5.3",
+    "nuxt-vitalizer": "^0.10.0",
     "nuxt3-leaflet": "^1.0.12",
     "nuxt3-leaflet": "^1.0.12",
     "ofetch": "^1.3.3",
     "ofetch": "^1.3.3",
     "pinia": "^2.1.7",
     "pinia": "^2.1.7",

+ 5 - 0
pages/actualites/[id]-[slug].vue

@@ -1,5 +1,10 @@
 <template>
 <template>
   <div>
   <div>
+    <CommonMeta
+      title="Actualité de l'éditeur de logiciel de gestion et de communication Opentalent"
+      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."
+    />
+
     <LayoutUITitlePage>
     <LayoutUITitlePage>
       Actualités
       Actualités
       <template #subtitle
       <template #subtitle

+ 1 - 1
pages/formations.vue

@@ -13,7 +13,7 @@
     </LayoutUITitlePage>
     </LayoutUITitlePage>
 
 
     <CommonBanner
     <CommonBanner
-      image-src="/images/pages/formations/banner/Formations_Opentalent.webp"
+      image-src="/images/pages/formations/banner/Formations_Opentalent.jpg"
       image-alt="Formation dans une salle de réunion ou 5 personnes regardent un écran"
       image-alt="Formation dans une salle de réunion ou 5 personnes regardent un écran"
     />
     />
 
 

+ 1 - 1
pages/mentions-legales.vue

@@ -27,7 +27,7 @@
           <p>
           <p>
             2iOPENservice <br />
             2iOPENservice <br />
             SARL au capital de 46 050,00 €<br />
             SARL au capital de 46 050,00 €<br />
-            SIRET : n°504 653 122 000 52 | TVA n°FR62504653122<br />
+            SIRET : n°504 653 122 000 60 | TVA n°FR62504653122<br />
             Siège social : 265, rue de la Grange - 74950 SCIONZIER - FRANCE<br />
             Siège social : 265, rue de la Grange - 74950 SCIONZIER - FRANCE<br />
             Téléphone : 09 72 12 60 17<br />
             Téléphone : 09 72 12 60 17<br />
             Mail : contact@opentalent.fr<br />
             Mail : contact@opentalent.fr<br />

+ 1 - 0
pages/opentalent-artist.vue

@@ -20,6 +20,7 @@
         square-text="Orchestres, chorales, compagnies et troupes artistiques"
         square-text="Orchestres, chorales, compagnies et troupes artistiques"
         logo-src="/images/logos/opentalent/Logo_Opentalent_Artist-gris.png"
         logo-src="/images/logos/opentalent/Logo_Opentalent_Artist-gris.png"
         logo-alt="Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes"
         logo-alt="Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes"
+        icon-src="/images/components/banner/Icone_instruments_de_musique_trompette_et_tambour_avec_des_notes_de_musique.svg"
       />
       />
 
 
       <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />
       <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />

+ 1 - 0
pages/opentalent-manager.vue

@@ -18,6 +18,7 @@
         square-text="Fédérations, confédérations et collectivités"
         square-text="Fédérations, confédérations et collectivités"
         logo-src="/images/logos/opentalent/Logo_Opentalent_Manager-gris.png"
         logo-src="/images/logos/opentalent/Logo_Opentalent_Manager-gris.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"
         logo-alt="Logo Opentalent Manager - logiciel de gestion et de communication pour les fédérations, les confédérations et les collectivités"
+        icon-src="/images/pages/opentalent_manager/banner/Icone_mise_en_reseau.svg"
       />
       />
 
 
       <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />
       <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />

+ 1 - 0
pages/opentalent-school.vue

@@ -18,6 +18,7 @@
         square-text="Écoles de musique, de danse, de théâtre, d'art, de cirque, conservatoires et MJC"
         square-text="Écoles de musique, de danse, de théâtre, d'art, de cirque, conservatoires et MJC"
         logo-src="/images/logos/opentalent/Logo_Opentalent_School-blanc.png"
         logo-src="/images/logos/opentalent/Logo_Opentalent_School-blanc.png"
         logo-alt="Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique"
         logo-alt="Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique"
+        icon-src="/images/components/banner/Icône_instruments_de_musique_guitare_micro_flute_tambourin_et_casque_de_musique.svg"
         :logo-alt-theme="true"
         :logo-alt-theme="true"
       />
       />
 
 

BIN
public/files/BDC_Opentalent_Artist_Public-2024.pdf


BIN
public/files/BDC_Opentalent_Artist_Public.pdf


BIN
public/files/PF-Metabase-2025_2-jours.pdf


BIN
public/files/PF-School-2025_1-jour.pdf


BIN
public/files/PF-School-2025_2-jours.pdf


BIN
public/files/PF-Typo3-2025_1-jour.pdf


BIN
public/files/PUBLIC-Depliant_Opentalent_Artist_2024.pdf


BIN
public/files/PUBLIC-Depliant_Opentalent_School-2024.pdf


File diff suppressed because it is too large
+ 0 - 0
public/images/components/banner/Icône_instruments_de_musique_guitare_micro_flute_tambourin_et_casque_de_musique.svg


BIN
public/images/pages/formations/banner/Formations_Opentalent.jpg


BIN
public/images/pages/formations/banner/Formations_Opentalent.webp


BIN
public/images/pages/formations/opca/Formations_eligibles_aux_OPCA.jpg


BIN
public/images/pages/formations/presentation/Des_formations_sur-mesure.jpg


BIN
public/images/pages/formations/presentation/Un_programme_de_formation_complet_sur_nos_logiciels_Opentalent.jpg


BIN
public/images/pages/qui-sommes-nous/chronologie/1-Origine_Opentalent-outil_collaboratif_pour_la_culture.jpg


BIN
public/images/pages/qui-sommes-nous/chronologie/1-Origine_Opentalent-outil_collaboratif_pour_la_culture.min.jpg


BIN
public/images/pages/qui-sommes-nous/chronologie/3-logo_2iOpenService.jpg


BIN
public/images/pages/qui-sommes-nous/chronologie/4-Logiciel_MusAssos-pour_les_petites_et_moyennes_structures.png


BIN
public/images/pages/qui-sommes-nous/chronologie/Conservatoire.png


BIN
public/images/pages/qui-sommes-nous/chronologie/Logo_Opentalent_la_plateforme_culturel.jpg


+ 12 - 0
yarn.lock

@@ -9506,6 +9506,17 @@ __metadata:
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
+"nuxt-vitalizer@npm:^0.10.0":
+  version: 0.10.0
+  resolution: "nuxt-vitalizer@npm:0.10.0"
+  dependencies:
+    "@nuxt/kit": "npm:^3.12.2"
+    defu: "npm:^6.1.4"
+    knitwork: "npm:^1.1.0"
+  checksum: 10c0/228ea512010178291837d4f98f8d124cdf22068fba65982a4b47b21cdd4aa1fa46ef74777853723633476ed5b0309468b02af350bb42c0b189c91d4d38c22d1d
+  languageName: node
+  linkType: hard
+
 "nuxt3-leaflet@npm:^1.0.12":
 "nuxt3-leaflet@npm:^1.0.12":
   version: 1.0.13
   version: 1.0.13
   resolution: "nuxt3-leaflet@npm:1.0.13"
   resolution: "nuxt3-leaflet@npm:1.0.13"
@@ -11439,6 +11450,7 @@ __metadata:
     nuxt: "npm:^3.11.2"
     nuxt: "npm:^3.11.2"
     nuxt-gtag: "npm:^2.0.6"
     nuxt-gtag: "npm:^2.0.6"
     nuxt-lodash: "npm:^2.5.3"
     nuxt-lodash: "npm:^2.5.3"
+    nuxt-vitalizer: "npm:^0.10.0"
     nuxt3-leaflet: "npm:^1.0.12"
     nuxt3-leaflet: "npm:^1.0.12"
     ofetch: "npm:^1.3.3"
     ofetch: "npm:^1.3.3"
     pinia: "npm:^2.1.7"
     pinia: "npm:^2.1.7"

Some files were not shown because too many files changed in this diff