Maha Bouchiba 2 vuotta sitten
vanhempi
commit
3cfce5ff00

+ 7 - 5
components/Common/Carousel/Fonctionnalite.vue

@@ -67,16 +67,16 @@
                           </li>
                           </li>
                         </ul>
                         </ul>
                       </v-card-text>
                       </v-card-text>
-                      <div class="card-footer">
+                 
+                    </v-card-item>
+                    <div class="card-footer">
                         <p
                         <p
-                          class="reviewer-structure"
                           v-for="option in card.options"
                           v-for="option in card.options"
                           :key="option"
                           :key="option"
                         >
                         >
                           {{ option }}
                           {{ option }}
                         </p>
                         </p>
                       </div>
                       </div>
-                    </v-card-item>
                   </v-card>
                   </v-card>
                 </div>
                 </div>
               </Slide>
               </Slide>
@@ -216,8 +216,9 @@ const previousAction = () => {
 }
 }
 .card-footer {
 .card-footer {
   position: absolute;
   position: absolute;
-  right: 0;
-  margin-right: 2rem;
+  left: 0;
+  margin-left: .5rem;
+  font-size: .9rem;
 }
 }
 
 
 .card {
 .card {
@@ -229,6 +230,7 @@ const previousAction = () => {
 
 
   min-height: 400px !important;
   min-height: 400px !important;
   max-height: 400px !important;
   max-height: 400px !important;
+  min-width: 300px !important;
   border-radius: 1rem;
   border-radius: 1rem;
   min-height: 25rem;
   min-height: 25rem;
 }
 }

+ 0 - 1
components/Common/ContainerVideo.vue

@@ -87,7 +87,6 @@ const iconColor = computed(() => {
   margin-left: auto !important;
   margin-left: auto !important;
   margin-right: auto !important;
   margin-right: auto !important;
 }
 }
-
 .v-container {
 .v-container {
   padding: 0 !important;
   padding: 0 !important;
 }
 }

+ 9 - 12
components/Home/Solution.vue

@@ -66,19 +66,17 @@
                 </v-col>
                 </v-col>
               </div>
               </div>
             </v-row>
             </v-row>
-
-            <v-row>
-              <v-col cols="12" lg="4" md="4" sm="4"
-              >
-                <p style="font-size: 0.7rem; text-align: left !important;">
-                  {{ solution.option }}
-                </p></v-col
-              >
-            </v-row>
           </div>
           </div>
         </v-container>
         </v-container>
       </v-col>
       </v-col>
     </v-row>
     </v-row>
+    <v-container>
+      <v-row >
+        <v-col cols="12">
+          <p style="text-align: right; font-size: 12px;">* en option</p>
+        </v-col>
+      </v-row>
+    </v-container>
   </LayoutContainer>
   </LayoutContainer>
 </template>
 </template>
 
 
@@ -131,8 +129,7 @@ const solutions = [
       "Site internet intégré",
       "Site internet intégré",
       "Statistiques",
       "Statistiques",
     ],
     ],
-
-    option: "* en option",
+    option: "*Optionnel",
   },
   },
   {
   {
     name: "Manager",
     name: "Manager",
@@ -434,7 +431,7 @@ onMounted(() => {
 .container {
 .container {
   background: #0e2d32;
   background: #0e2d32;
   margin-bottom: 15rem;
   margin-bottom: 15rem;
-  height: 35rem;
+  height: 36rem;
   position: relative;
   position: relative;
 }
 }
 </style>
 </style>

+ 29 - 23
components/JoinUs/Missions.vue

@@ -1,16 +1,20 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
-    <div
-      v-for="(job, index) in jobs"
-      :key="index"
-      class="mission-container"
-    >
+    <div v-for="(job, index) in jobs" :key="index" class="mission-container">
       <!-- Première ligne -->
       <!-- Première ligne -->
       <v-row class="announcement-title ml-6 mr-6">
       <v-row class="announcement-title ml-6 mr-6">
-        <div class="title-job">
-          {{ job.title }} - {{ job.contractType }}
-        </div>
+        <NuxtLink
+          :to="`/nous-rejoindre/${job.id}`"
+          class="text-decoration-none"
+        >
+          <div class="title-job">{{ job.title }} - {{ job.contractType }}</div>
+        </NuxtLink>
+        <NuxtLink
+          :to="`/nous-rejoindre/${job.id}`"
+          class="text-decoration-none"
+        >
         <v-btn class="btn-more" text> En savoir plus </v-btn>
         <v-btn class="btn-more" text> En savoir plus </v-btn>
+        </NuxtLink>
       </v-row>
       </v-row>
 
 
       <!-- Deuxième ligne -->
       <!-- Deuxième ligne -->
@@ -26,14 +30,15 @@
 
 
     <v-row class="apply-row ml-6 mb-6">
     <v-row class="apply-row ml-6 mb-6">
       <v-col cols="12">
       <v-col cols="12">
-      <p class="apply-now">
-        Nous sommes toujours à la recherche de nouveaux talents. N'hésitez pas à
-        déposer votre candidature ci-dessous :
-      </p>
-    </v-col>
+        <p class="apply-now">
+          Nous sommes toujours à la recherche de nouveaux talents. N'hésitez pas
+          à déposer votre candidature ci-dessous :
+        </p>
+      </v-col>
     </v-row>
     </v-row>
     <v-row>
     <v-row>
       <v-col cols="12">
       <v-col cols="12">
+        
         <v-btn class="btn-send"> Envoyer ma candidature </v-btn>
         <v-btn class="btn-send"> Envoyer ma candidature </v-btn>
       </v-col>
       </v-col>
     </v-row>
     </v-row>
@@ -46,9 +51,13 @@ import { useMaestroRequestService } from "~/composables/useMaestroRequestService
 const { apiRequestService } = useMaestroRequestService();
 const { apiRequestService } = useMaestroRequestService();
 
 
 const query = computed(() => {
 const query = computed(() => {
-  const queryParams: { page: number; type?: string; [key: string]: number | string } = {
+  const queryParams: {
+    page: number;
+    type?: string;
+    [key: string]: number | string;
+  } = {
     page: page.value,
     page: page.value,
-    type: 'ENTREPRISE' 
+    type: "ENTREPRISE",
   };
   };
 
 
   return queryParams;
   return queryParams;
@@ -72,22 +81,19 @@ const {
   // Obtenir la date actuelle
   // Obtenir la date actuelle
   const currentDate = new Date();
   const currentDate = new Date();
 
 
-  const filteredJobs = collection.filter(item => {
+  const filteredJobs = collection.filter((item) => {
     const endPublicationDate = new Date(item.endPublication);
     const endPublicationDate = new Date(item.endPublication);
-    return item.type === 'ENTREPRISE' && endPublicationDate >= currentDate;
+    return item.type === "ENTREPRISE" && endPublicationDate >= currentDate;
   });
   });
 
 
   totalItems.value = filteredJobs.length;
   totalItems.value = filteredJobs.length;
   console.log(filteredJobs);
   console.log(filteredJobs);
   return filteredJobs;
   return filteredJobs;
 });
 });
-
-
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
-
-.location{
+.location {
   font-size: 1.3rem !important;
   font-size: 1.3rem !important;
   color: #0e2d32;
   color: #0e2d32;
 }
 }
@@ -108,7 +114,8 @@ const {
   color: #ffffff;
   color: #ffffff;
 }
 }
 
 
-.btn-more, .btn-send {
+.btn-more,
+.btn-send {
   background: #9edbdd;
   background: #9edbdd;
   color: white;
   color: white;
 }
 }
@@ -140,7 +147,6 @@ const {
   font-size: 2rem;
   font-size: 2rem;
 }
 }
 
 
-
 .apply-now {
 .apply-now {
   text-align: center;
   text-align: center;
   font-style: italic;
   font-style: italic;

+ 13 - 9
components/Layout/Footer/Footer.vue

@@ -8,9 +8,9 @@
               :cols="smAndDown ? 12 : 3"
               :cols="smAndDown ? 12 : 3"
               :class="smAndDown ? 'logo-opentalent-sm' : 'flex-container'"
               :class="smAndDown ? 'logo-opentalent-sm' : 'flex-container'"
             >
             >
-            <nuxt-link to="/">
-              <v-img class="logo" src="/images/logo/footer-logo.png" />
-            </nuxt-link>
+              <nuxt-link to="/">
+                <v-img class="logo" src="/images/logo/footer-logo.png" />
+              </nuxt-link>
               <!-- <small class="ml-12 right-reserved"
               <!-- <small class="ml-12 right-reserved"
                 >© 2022 Opentalent, Tous droits réservés</small
                 >© 2022 Opentalent, Tous droits réservés</small
               > -->
               > -->
@@ -72,22 +72,26 @@
                 <h5 class="ml-12 mt-8 h5-title">Espace client</h5>
                 <h5 class="ml-12 mt-8 h5-title">Espace client</h5>
               </v-row>
               </v-row>
               <v-row>
               <v-row>
-                <router-link
+                <NuxtLink
                   to="https://ressources.opentalent.fr/display/FAQ/Accueil"
                   to="https://ressources.opentalent.fr/display/FAQ/Accueil"
                   class="small-link ml-12"
                   class="small-link ml-12"
-                  >Foire Aux Questions</router-link
+                  >Foire Aux Questions</NuxtLink
                 >
                 >
               </v-row>
               </v-row>
               <v-row>
               <v-row>
-                <router-link
+                <NuxtLink
                   to="https://ressources.opentalent.fr/"
                   to="https://ressources.opentalent.fr/"
                   class="small-link ml-12"
                   class="small-link ml-12"
-                  >Support en ligne</router-link
+                  target="_blank"
+                  >Support en ligne</NuxtLink
                 >
                 >
               </v-row>
               </v-row>
               <v-row>
               <v-row>
-                <router-link to="/nous-contacter" class="small-link ml-12"
-                  >Nous contacter</router-link
+                <NuxtLink
+                  to="/nous-contacter"
+                  class="small-link ml-12"
+                  target="_blank"
+                  >Nous contacter</NuxtLink
                 >
                 >
               </v-row>
               </v-row>
             </v-col>
             </v-col>

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

@@ -36,7 +36,7 @@
               <span class="chip-detail">Compagnies de théatre</span>
               <span class="chip-detail">Compagnies de théatre</span>
             </v-chip>
             </v-chip>
             <v-chip class="ma-2 chip-custom" label>
             <v-chip class="ma-2 chip-custom" label>
-              <span class="chip-detail">Compagnie de Cirque</span>
+              <span class="chip-detail">Compagnies de Cirque</span>
             </v-chip>
             </v-chip>
           </v-chip-group>
           </v-chip-group>
         </v-col>
         </v-col>

+ 1 - 1
components/Layout/Navigation.vue

@@ -11,7 +11,7 @@
 
 
         <div class="vertical-bar" />
         <div class="vertical-bar" />
         <v-btn class="btn btn-common btn-subscribe ml-4 mr-2" text>
         <v-btn class="btn btn-common btn-subscribe ml-4 mr-2" text>
-          <v-icon left class="fas fa-calendar mr-4"></v-icon> Logiciel Culturel
+          <v-icon left class="fas fa-calendar mr-4"></v-icon>Agenda Culturel
         </v-btn>
         </v-btn>
       </v-col>
       </v-col>
     </v-row>
     </v-row>

+ 1 - 1
components/Logiciels/Manager/Avantages.vue

@@ -41,7 +41,7 @@ import { ref } from "vue";
 
 
 const cards = ref([
 const cards = ref([
   {
   {
-    title: "Sur - mesure",
+    title: "Sur-mesure",
     number: "01",
     number: "01",
     description:
     description:
       "S'adapte à tous les réseaux de type pyramidal, quelque soit le nombre de niveaux :",
       "S'adapte à tous les réseaux de type pyramidal, quelque soit le nombre de niveaux :",

+ 3 - 2
components/Logiciels/Manager/Fonctionnalites.vue

@@ -26,8 +26,9 @@ const functionCarousel = ref(null);
 const cards = [
 const cards = [
   {
   {
     logo:"images/logiciels/manager/fonctionnalites/Espaces_dedies.svg",
     logo:"images/logiciels/manager/fonctionnalites/Espaces_dedies.svg",
-    title: "ESPACES DÉDIÉS",
-    list: ["Administration","Membres / Adhérents", "Sur tous supports <br> (ordinateur, tablette et smartphone) "],
+    title: "ESPACES DÉDIÉS *",
+    list: ["Administration","Membres / Adhérents"],
+    options: ["*Disponible sur tous supports (ordinateur, tablette et smartphone)"],
   },
   },
   {
   {
     logo: "images/logiciels/manager/fonctionnalites/Repertoire.svg",
     logo: "images/logiciels/manager/fonctionnalites/Repertoire.svg",

+ 14 - 4
components/Logiciels/Manager/Pyramide.vue

@@ -1,8 +1,7 @@
 <template>
 <template>
   <div id="détails">
   <div id="détails">
     <LayoutContainer>
     <LayoutContainer>
-      <v-container>
-        <v-row class="mt-12">
+        <v-row class="mt-12 custom-row">
         <LayoutUISubTitle
         <LayoutUISubTitle
           :iconSize="6"
           :iconSize="6"
           :iconClasses="iconClasses"
           :iconClasses="iconClasses"
@@ -11,7 +10,7 @@
         />
         />
       </v-row>
       </v-row>
 
 
-      <v-row>
+      <v-row class="custom-row">
         <v-col cols="12" lg="6" md="6">
         <v-col cols="12" lg="6" md="6">
           <LayoutUITitle
           <LayoutUITitle
           title="Opentalent Manager, un logiciel adapté à chacun "
           title="Opentalent Manager, un logiciel adapté à chacun "
@@ -26,7 +25,6 @@
           />
           />
         </v-col>
         </v-col>
       </v-row>
       </v-row>
-      </v-container>
 
 
 
 
     </LayoutContainer>
     </LayoutContainer>
@@ -37,6 +35,18 @@
 
 
 <style scoped>
 <style scoped>
 
 
+.custom-row {
+  width: 90%;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+@media (min-width: 2000px) {
+  .custom-row {
+    width: 70%;
+  }
+}
+
 .pyramide-details {
 .pyramide-details {
   color: #071B1F;
   color: #071B1F;
 font-size: 2.125rem;
 font-size: 2.125rem;

+ 10 - 9
components/Logiciels/School/Fonctionnalites.vue

@@ -36,13 +36,13 @@ const itemsToShow = computed(() => {
 const cards = [
 const cards = [
   {
   {
     logo: "/images/logiciels/school/fonctionnalites/Espaces.svg",
     logo: "/images/logiciels/school/fonctionnalites/Espaces.svg",
-    title: "ESPACES DÉDIÉS",
+    title: "ESPACES DÉDIÉS *",
     list: [
     list: [
       "Administration",
       "Administration",
       "Professeurs",
       "Professeurs",
       "Élèves / Familles",
       "Élèves / Familles",
-      "Sur tous supports <br> (ordinateur, tablette et smartphone)",
     ],
     ],
+    options: ["*Disponible sur tous supports (ordinateur, tablette et smartphone)"],
   },
   },
   {
   {
     logo: "/images/logiciels/school/fonctionnalites/Répertoire.png",
     logo: "/images/logiciels/school/fonctionnalites/Répertoire.png",
@@ -58,9 +58,9 @@ const cards = [
     logo: "/images/logiciels/school/fonctionnalites/Pré-inscription.png",
     logo: "/images/logiciels/school/fonctionnalites/Pré-inscription.png",
     title: "PRÉINSCRIPTION EN LIGNE",
     title: "PRÉINSCRIPTION EN LIGNE",
     list: [
     list: [
-      "Parametrage personnalisé des formulaires & mails automatiques",
-      "Gestion des réinscriptions et des nouvelles inscriptionse",
-      "Gestion des quotas et du suivi des préinscription en ligne",
+      "Paramètrage personnalisé des formulaires & mails automatiques",
+      "Gestion des réinscriptions et des nouvelles inscription",
+      "Gestion des quotas et du suivi des préinscriptions en ligne",
     ],
     ],
   },
   },
   {
   {
@@ -98,7 +98,7 @@ const cards = [
     list: [
     list: [
       "Facturation automatisée selon différents critères",
       "Facturation automatisée selon différents critères",
       "Suivi des règlements et gestion des relances",
       "Suivi des règlements et gestion des relances",
-      "n options : de nombreux moyens de paiement",
+      "En option : de nombreux moyens de paiement",
     ],
     ],
   },
   },
   {
   {
@@ -110,7 +110,7 @@ const cards = [
       "Création de modèles de courriers, mails ou SMS",
       "Création de modèles de courriers, mails ou SMS",
       "Outil de publipostage intégré pour un envoi personnalisé",
       "Outil de publipostage intégré pour un envoi personnalisé",
     ],
     ],
-    option: "* en option",
+    options: ["* en option"],
   },
   },
   {
   {
     logo: "/images/logiciels/school/fonctionnalites/internet.png",
     logo: "/images/logiciels/school/fonctionnalites/internet.png",
@@ -125,7 +125,7 @@ const cards = [
   {
   {
     logo: "/images/logiciels/school/fonctionnalites/Statistiques.png",
     logo: "/images/logiciels/school/fonctionnalites/Statistiques.png",
 
 
-    title: "STATISTIQUE",
+    title: "STATISTIQUES",
     list: [
     list: [
       "Rapport d'activité complet en fonction de vos activités",
       "Rapport d'activité complet en fonction de vos activités",
       "Personnalisation du rapport d'activité grâce aux différents formats proposés lors du téléchargement",
       "Personnalisation du rapport d'activité grâce aux différents formats proposés lors du téléchargement",
@@ -135,12 +135,13 @@ const cards = [
   {
   {
     logo: "/images/logiciels/school/fonctionnalites/Agenda.png",
     logo: "/images/logiciels/school/fonctionnalites/Agenda.png",
 
 
-    title: "RÉSEAU CMF ",
+    title: "RÉSEAU CMF *",
     list: [
     list: [
       "Accès au répertoire du réseau",
       "Accès au répertoire du réseau",
       "Renouvellement de votre adhésion fédérale",
       "Renouvellement de votre adhésion fédérale",
       "Gestion de l'assurance CMF",
       "Gestion de l'assurance CMF",
     ],
     ],
+    options: ["* Uniquement dédié au adhérents CMF"],
   },
   },
   {
   {
     logo: "/images/logiciels/school/fonctionnalites/Promotion.png",
     logo: "/images/logiciels/school/fonctionnalites/Promotion.png",

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

@@ -41,7 +41,11 @@
             <LayoutUISubTitle
             <LayoutUISubTitle
               :iconSize="6"
               :iconSize="6"
               :iconClasses="iconClasses"
               :iconClasses="iconClasses"
-              :titleText="' Pour les petits comme pour les GRANDS établissements d\'enseignement artistique '"
+              :titleText="'Quelques chiffres '"
+            />
+            <LayoutUITitle
+              title="Pour les petits comme pour les GRANDS établissements d'enseignement artistique"
+              title-color="#091d20"
             />
             />
           </v-row>
           </v-row>
         </v-col>
         </v-col>
@@ -55,7 +59,7 @@
             class="d-flex justify-center align-center small-padding"
             class="d-flex justify-center align-center small-padding"
           >
           >
             <CommonCardStat
             <CommonCardStat
-              :chiffre="'30 > 1500'"
+              :chiffre="'30 > 1 500'"
               text="élèves"
               text="élèves"
               backgroundColor="#c3e5e7"
               backgroundColor="#c3e5e7"
             />
             />
@@ -69,7 +73,7 @@
           </v-col>
           </v-col>
           <v-col cols="12" lg="3" class="d-flex justify-center align-center">
           <v-col cols="12" lg="3" class="d-flex justify-center align-center">
             <CommonCardStat
             <CommonCardStat
-              :chiffre="20304"
+              :chiffre="'20 304'"
               text="Utilisateurs"
               text="Utilisateurs"
               backgroundColor="#c3e5e7"
               backgroundColor="#c3e5e7"
             />
             />
@@ -125,6 +129,10 @@ const items = ref([
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
+
+:deep(.title){
+  width: 60rem;
+}
 .v-row {
 .v-row {
   max-width: 1600px;
   max-width: 1600px;
   margin: 0 auto;
   margin: 0 auto;

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

@@ -49,8 +49,5 @@ const presentationData = {
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
-.v-container {
-  padding: 16px !important;
-}
 
 
 </style>
 </style>

+ 22 - 17
components/Logiciels/School/Projet.vue

@@ -6,12 +6,12 @@
           <v-img class="help-img" src="/images/contact/contact.jpg" />
           <v-img class="help-img" src="/images/contact/contact.jpg" />
         </v-col>
         </v-col>
 
 
-        <v-col cols="6" class="mt-12">
+        <v-col cols="6">
           <LayoutUISubTitle :titleText="` Contactez-nous `" />
           <LayoutUISubTitle :titleText="` Contactez-nous `" />
 
 
           <LayoutUITitle :title="` Vous avez un projet ? `" />
           <LayoutUITitle :title="` Vous avez un projet ? `" />
-          <div class="ml-8">
-            <h6 class="subtitle">N'attendez plus, appelez-nous</h6>
+          <div class="ml-6">
+            <h6 class="subtitle">N'attendez plus, appelez-nous !</h6>
             <p class="contact-details">
             <p class="contact-details">
               Vous avez une identité, des besoins, des projets... On est là pour
               Vous avez une identité, des besoins, des projets... On est là pour
               vous écouter et vous offrir une offre personnalisée ! Que vous
               vous écouter et vous offrir une offre personnalisée ! Que vous
@@ -30,8 +30,8 @@
       <v-row no-gutters>
       <v-row no-gutters>
         <v-col cols="6" class="mt-12">
         <v-col cols="6" class="mt-12">
           <LayoutUISubTitle :titleText="` Adhérents CMF `" />
           <LayoutUISubTitle :titleText="` Adhérents CMF `" />
-          <LayoutUITitle :title="` Bénéficiez de conditions privilégiés ? `" />
-          <div class="ml-8">
+          <LayoutUITitle :title="` Bénéficiez de conditions privilégiées `" />
+          <div class="ml-4">
             <h6 class="subtitle">N'attendez plus, appelez-nous</h6>
             <h6 class="subtitle">N'attendez plus, appelez-nous</h6>
             <p class="contact-details">
             <p class="contact-details">
               Si votre établissement d’enseignement artistique est adhérent à la
               Si votre établissement d’enseignement artistique est adhérent à la
@@ -40,8 +40,8 @@
               Opentalent Artist standard et de conditions priviliégiés pour la
               Opentalent Artist standard et de conditions priviliégiés pour la
               version Opentalent School. <br />
               version Opentalent School. <br />
             </p>
             </p>
-            <p class="mt-6">
-              Contactez nous direcetement ou contactez votre fédération pour
+            <p class="mt-6 contact-details">
+              Contactez-nous directement ou contactez votre fédération pour
               obtenir vos codes d’accès.
               obtenir vos codes d’accès.
             </p>
             </p>
             <v-btn class="btn-contact">
             <v-btn class="btn-contact">
@@ -64,9 +64,7 @@
   max-width: 1800px;
   max-width: 1800px;
   margin: 0 auto;
   margin: 0 auto;
 }
 }
-:deep().title {
-  width: 100% !important;
-}
+
 .logo-cmf {
 .logo-cmf {
   background-image: url("/images/logiciels/school/cmf_logo_orange.png");
   background-image: url("/images/logiciels/school/cmf_logo_orange.png");
   background-repeat: no-repeat;
   background-repeat: no-repeat;
@@ -74,27 +72,34 @@
   width: 100%;
   width: 100%;
   height: 100%;
   height: 100%;
   margin-top: 2rem;
   margin-top: 2rem;
+  margin-left: 2rem;
 }
 }
 
 
 .btn-contact {
 .btn-contact {
   background: rgba(32, 147, 190, 0.4);
   background: rgba(32, 147, 190, 0.4);
-  border-radius: 6px;
+  padding: 15px;
+  gap: 9px;
+  font-weight: 700;
+  font-size: 0.7rem;
+  line-height: 15px;
+  height: 2.5rem;
+  font-size: .9rem;
   color: #fff;
   color: #fff;
-  font-weight: 500;
-  font-size: 18px;
-  line-height: 16px;
-  letter-spacing: 0.18em;
-  text-transform: uppercase;
   margin-top: 2rem;
   margin-top: 2rem;
   margin-bottom: 3rem;
   margin-bottom: 3rem;
 }
 }
 
 
+@media (max-width: 1600px) {
+  .contact-details {
+    width: 30rem !important;
+  }
+}
+
 .contact-details {
 .contact-details {
   font-weight: 300;
   font-weight: 300;
   font-size: 16px;
   font-size: 16px;
   line-height: 20px;
   line-height: 20px;
   color: #091d20;
   color: #091d20;
-  width: 40rem;
   text-align: justify;
   text-align: justify;
 }
 }
 
 

+ 12 - 18
pages/actualites/[id].vue

@@ -10,20 +10,19 @@
     <div v-if="actu">
     <div v-if="actu">
       <v-row class="custom-row">
       <v-row class="custom-row">
         <v-col>
         <v-col>
-        <div class="d-flex align-items-center">
-          <NuxtLink to="/actualites" style="text-decoration: none !important;">
-            <div class="carousel-button">
-              <i class="fa-solid fa-arrow-left" />
-            </div>
-          </NuxtLink>
-          <NuxtLink to="/actualites" class="ml-2 back-button mt-12">
-            Retour aux actualités
-          </NuxtLink>
-        </div>
-      </v-col>
+          <div class="d-flex align-items-center">
+            <NuxtLink to="/actualites" style="text-decoration: none !important">
+              <div class="carousel-button">
+                <i class="fa-solid fa-arrow-left" />
+              </div>
+            </NuxtLink>
+            <NuxtLink to="/actualites" class="ml-2 back-button mt-12">
+              Retour aux actualités
+            </NuxtLink>
+          </div>
+        </v-col>
       </v-row>
       </v-row>
 
 
-
       <v-row class="custom-row">
       <v-row class="custom-row">
         <v-col cols="6">
         <v-col cols="6">
           <v-img>
           <v-img>
@@ -168,10 +167,6 @@ const getImageUrl = (attachment: string) => {
   }
   }
   console.log("pas d'image");
   console.log("pas d'image");
 };
 };
-const plainText = computed(() => {
-  let doc = new DOMParser().parseFromString(actu.value?.bodyText, "text/html");
-  return doc.body.textContent || "";
-});
 
 
 const tagColor = (tag) => {
 const tagColor = (tag) => {
   switch (tag) {
   switch (tag) {
@@ -243,9 +238,8 @@ const goPrevious = () => carousel.prev();
 const goNext = () => carousel.next();
 const goNext = () => carousel.next();
 </script>
 </script>
 
 
-
 <style scoped>
 <style scoped>
-.custom-row{
+.custom-row {
   width: 90%;
   width: 90%;
   margin-left: auto;
   margin-left: auto;
   margin-right: auto;
   margin-right: auto;

+ 46 - 41
pages/actualites/index.vue

@@ -3,11 +3,9 @@
 
 
   <h1 class="title mt-12 mb-12">Toutes les news</h1>
   <h1 class="title mt-12 mb-12">Toutes les news</h1>
 
 
-
   <div v-if="pending">{{ t("pending") }}</div>
   <div v-if="pending">{{ t("pending") }}</div>
 
 
   <div v-else>
   <div v-else>
-
     <v-row>
     <v-row>
       <v-col>
       <v-col>
         <div class="d-flex align-items-center ml-12 mt-6 mb-6">
         <div class="d-flex align-items-center ml-12 mt-6 mb-6">
@@ -80,10 +78,15 @@
                       </div>
                       </div>
                       <div class="button-container">
                       <div class="button-container">
                         <v-card-actions class="justify-end">
                         <v-card-actions class="justify-end">
-                          <v-btn class="btn" text>
-                            <v-icon class="fas fa-info mr-2"></v-icon>En savoir
-                            plus
-                          </v-btn>
+                          <NuxtLink
+                            :to="`/actualites/${news.id}`"
+                            class="text-decoration-none"
+                          >
+                            <v-btn class="btn" text>
+                              <v-icon class="fas fa-info mr-2"></v-icon>En
+                              savoir plus
+                            </v-btn>
+                          </NuxtLink>
                         </v-card-actions>
                         </v-card-actions>
                       </div>
                       </div>
                     </div>
                     </div>
@@ -98,20 +101,20 @@
     </v-row>
     </v-row>
 
 
     <v-pagination
     <v-pagination
-        v-model="page"
-        :length="Math.ceil(totalItems / itemsPerPage)"
-        total-visible="9"
-        @input="updatePage"
-        rounded="circle"
-        max="10"
-        class="pagination mr-10"
-        :prev-icon="page !== 1 ? 'fas fa-arrow-left' : ''"
-        :next-icon="
-          page !== Math.ceil(totalItems / itemsPerPage)
-            ? 'fas fa-arrow-right'
-            : ''
-        "
-      />
+      v-model="page"
+      :length="Math.ceil(totalItems / itemsPerPage)"
+      total-visible="9"
+      @input="updatePage"
+      rounded="circle"
+      max="10"
+      class="pagination mr-10"
+      :prev-icon="page !== 1 ? 'fas fa-arrow-left' : ''"
+      :next-icon="
+        page !== Math.ceil(totalItems / itemsPerPage)
+          ? 'fas fa-arrow-right'
+          : ''
+      "
+    />
   </div>
   </div>
   <LayoutFooterPrefooter />
   <LayoutFooterPrefooter />
   <LayoutFooter />
   <LayoutFooter />
@@ -124,7 +127,8 @@ import { useMaestroRequestService } from "~/composables/useMaestroRequestService
 // Base URL for API requests
 // Base URL for API requests
 const config = useRuntimeConfig();
 const config = useRuntimeConfig();
 const baseUrl = `${config.public.apiBaseUrl}/api/news`;
 const baseUrl = `${config.public.apiBaseUrl}/api/news`;
-const getImageUrl = (attachment) => `${config.public.apiBaseUrl}/uploads/news/${attachment}`;
+const getImageUrl = (attachment) =>
+  `${config.public.apiBaseUrl}/uploads/news/${attachment}`;
 
 
 const { apiRequestService } = useMaestroRequestService();
 const { apiRequestService } = useMaestroRequestService();
 const currentPage = ref(1);
 const currentPage = ref(1);
@@ -139,9 +143,13 @@ const updatePage = (newPage: number) => {
 };
 };
 
 
 const query = computed(() => {
 const query = computed(() => {
-  const queryParams: { page: number; type?: string; [key: string]: number | string } = {
+  const queryParams: {
+    page: number;
+    type?: string;
+    [key: string]: number | string;
+  } = {
     page: page.value,
     page: page.value,
-    type: 'ENTREPRISE' 
+    type: "ENTREPRISE",
   };
   };
 
 
   return queryParams;
   return queryParams;
@@ -157,12 +165,11 @@ const {
   const response = await apiRequestService.get(baseUrl, query.value);
   const response = await apiRequestService.get(baseUrl, query.value);
   const collection = response["hydra:member"];
   const collection = response["hydra:member"];
 
 
-  // Obtenir la date actuelle
   const currentDate = new Date();
   const currentDate = new Date();
 
 
-  const filteredNews = collection.filter(item => {
+  const filteredNews = collection.filter((item) => {
     const endPublicationDate = new Date(item.endPublication);
     const endPublicationDate = new Date(item.endPublication);
-    return item.type === 'ENTREPRISE' && endPublicationDate >= currentDate;
+    return item.type === "ENTREPRISE" && endPublicationDate >= currentDate;
   });
   });
 
 
   totalItems.value = filteredNews.length;
   totalItems.value = filteredNews.length;
@@ -170,7 +177,6 @@ const {
   return filteredNews;
   return filteredNews;
 });
 });
 
 
-
 watch(page, () => {
 watch(page, () => {
   refresh();
   refresh();
 });
 });
@@ -231,12 +237,12 @@ watch(page, () => {
 }
 }
 
 
 .card-title {
 .card-title {
-  color: #FFF;
-font-family: Barlow;
-font-size: 36px;
-font-style: normal;
-font-weight: 600;
-line-height: 39px
+  color: #fff;
+  font-family: Barlow;
+  font-size: 36px;
+  font-style: normal;
+  font-weight: 600;
+  line-height: 39px;
 }
 }
 
 
 .container-green {
 .container-green {
@@ -263,14 +269,13 @@ line-height: 39px
 }
 }
 
 
 .leadtext {
 .leadtext {
-  color: #FFF;
-font-family: Barlow;
-font-size: 22px;
-font-style: normal;
-font-weight: 500;
-line-height: 26px;
-margin-left: 1rem;
-
+  color: #fff;
+  font-family: Barlow;
+  font-size: 22px;
+  font-style: normal;
+  font-weight: 500;
+  line-height: 26px;
+  margin-left: 1rem;
 }
 }
 
 
 .carousel-button {
 .carousel-button {

+ 2 - 2
pages/formations.vue

@@ -4,7 +4,7 @@
   <FormationBanner />
   <FormationBanner />
   <FormationMenuScroll />
   <FormationMenuScroll />
   <div v-if="shouldShowStickyMenu" id="sticky-menu">
   <div v-if="shouldShowStickyMenu" id="sticky-menu">
-    <LayoutUIStickyMenu
+    <CommonStickyMenu
       :shouldShowStickyMenu="shouldShowStickyMenu"
       :shouldShowStickyMenu="shouldShowStickyMenu"
       :squaresData="squaresData"
       :squaresData="squaresData"
     />
     />
@@ -68,7 +68,7 @@ onMounted(() => {
 #sticky-menu {
 #sticky-menu {
   position: sticky;
   position: sticky;
   top: 20rem;
   top: 20rem;
-  z-index: 1;
+  z-index: 2;
   margin-bottom: -32rem;
   margin-bottom: -32rem;
   float: right;
   float: right;
 }
 }

+ 58 - 0
pages/mobile.vue

@@ -0,0 +1,58 @@
+<template>
+  <v-app>
+    <v-app-bar app>
+      <v-app-bar-nav-icon @click="drawer = true"></v-app-bar-nav-icon>
+
+      <v-btn icon>
+        <v-icon>mdi-bell</v-icon>
+      </v-btn>
+
+    </v-app-bar>
+
+    <v-navigation-drawer v-model="drawer" app>
+      <v-list nav dense>
+        <v-list-item v-for="(item, index) in items" :key="item">
+          <v-list-item-title @click="selectMenu(item)">
+            {{ item }}
+          </v-list-item-title>
+        </v-list-item>
+      </v-list>
+    </v-navigation-drawer>
+
+    <v-navigation-drawer v-model="subMenuDrawer" app right temporary>
+      <v-list nav dense>
+        <v-list-item
+          v-for="(subItem, subIndex) in subMenus[currentMenu]"
+          :key="subIndex"
+        >
+          <v-list-item-title>{{ subItem }}</v-list-item-title>
+        </v-list-item>
+      </v-list>
+    </v-navigation-drawer>
+
+  </v-app>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      drawer: false,
+      subMenuDrawer: false,
+      currentMenu: "",
+      items: ["web", "shopping", "videos", "images", "news"],
+      subMenus: {
+        web: ["Sous-menu Web 1", "Sous-menu Web 2"],
+        shopping: ["Sous-menu Shopping 1", "Sous-menu Shopping 2"],
+      },
+    };
+  },
+  methods: {
+    selectMenu(item) {
+      this.currentMenu = item;
+      this.subMenuDrawer = true; 
+      this.drawer = false;
+    },
+  },
+};
+</script>

+ 0 - 73
pages/nous-rejoindre.vue

@@ -1,73 +0,0 @@
-<template>
-  <LayoutNavigation />
-  <div v-if="shouldShowStickyMenu" id="sticky-menu">
-    <CommonStickyMenu
-      :shouldShowStickyMenu="shouldShowStickyMenu"
-      :squaresData="squaresData"
-    />
-  </div>
-  <JoinUsBanner />
-  <JoinUsMissions />
-  <LayoutFooter id="layout-footer" />
-</template>
-
-<script setup>
-import { ref, onMounted } from "vue";
-import { useRouter } from 'vue-router';
-
-const router = useRouter();
-
-const shouldShowStickyMenu = ref(true);
-
-
-const squaresData = [
-  {
-    id: 1,
-    bgColor: "green-square",
-    iconClass: "fa-regular fa-comments icon",
-    text: "Nous contacter",
-    url: "/nous-contacter",
-  },
-  {
-    id: 4,
-    bgColor: "darkblue-square",
-    iconClass: "fa-solid fa-phone icon",
-    text: "Nous Appeler"
-
-  },
-];
-
-onMounted(() => {
-  const stickyMenu = document.getElementById("sticky-menu");
-  const footer = document.getElementById("layout-footer");
-
-  const observer = new IntersectionObserver(
-    ([entry]) => {
-      shouldShowStickyMenu.value = !entry.isIntersecting;
-    },
-    {
-      root: null,
-      threshold: 0,
-    }
-  );
-
-  observer.observe(footer);
-});
-</script>
-
-<style scoped>
-#sticky-menu {
-  position: sticky;
-  top: 20rem;
-  z-index: 1;
-  margin-bottom: -32rem;
-  float: right;
-}
-
-@media (max-width: 1800px) {
-  #sticky-menu {
-    top: 16rem;
-    margin-bottom: -28rem;
-  }
-}
-</style>

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

@@ -0,0 +1,451 @@
+<template>
+  <LayoutNavigation />
+  <LayoutContainer>
+    <v-row>
+      <v-col cols="12">
+        <CommonBanner :imageSrc="'/images/actu/pub.png'" imageAlt="'line'" />
+      </v-col>
+    </v-row>
+
+    <div v-if="job">
+      <v-row class="custom-row">
+        <v-col>
+          <div class="d-flex align-items-center">
+            <NuxtLink
+              to="/nous-rejoindre"
+              style="text-decoration: none !important"
+            >
+              <div class="carousel-button">
+                <i class="fa-solid fa-arrow-left" />
+              </div>
+            </NuxtLink>
+            <NuxtLink to="/nous-rejoindre" class="ml-2 back-button mt-12">
+              Retour aux annonces
+            </NuxtLink>
+          </div>
+        </v-col>
+      </v-row>
+
+      <LayoutUITitlePage :title="job.title" />
+
+      <v-row class="blue-content">
+        <v-col cols="6">
+          <v-row class="custom-row">
+            <h4 class="detail-job mt-6 ml-12">
+              Type de contrat :
+              <span class="bold">{{ job.contractType }} </span>
+            </h4></v-row
+          >
+
+          <v-row class="custom-row">
+            <h4 class="detail-job mt-6 ml-12">
+              Location :
+              <span class="bold">{{ job.postalCode }} {{ job.city }}</span>
+            </h4></v-row
+          >
+        </v-col>
+
+        <v-col cols="6">
+          <v-row class="custom-row">
+            <h4 class="detail-job mt-6 ml-12">
+              Secteur d'activité : <span class="bold">{{ job.sector }}</span>
+            </h4></v-row
+          >
+
+          <v-row class="custom-row">
+            <h4 class="detail-job mt-6 ml-12">
+              Date de parution :
+              <span class="bold">{{ job.startPublication }} </span>
+            </h4></v-row
+          >
+        </v-col>
+      </v-row>
+      <v-row>
+        <p class="custom-row description-job mb-12" v-html="job.content"></p>
+      </v-row>
+
+      <v-row class="d-flex justify-center align-center">
+        <v-btn class="btn mb-12" text>
+          <v-icon class="fas fa-info mr-2"></v-icon>Je postule
+        </v-btn>
+      </v-row>
+    </div>
+
+    <v-row class="d-flex justify-space-between custom-row">
+      <p class="share">MOTS CLÉS</p>
+      <div>
+        <p class="share">PARTAGER</p>
+      </div>
+    </v-row>
+
+    <v-row class="d-flex justify-space-between mb-8 custom-row">
+      <p class="key-word mt-3">ROCK CONCERT FESTIVAL</p>
+      <div class="social-icons">
+        <a href="https://facebook.com" target="_blank" class="social-icon">
+          <i class="fa-brands fa-facebook"></i>
+        </a>
+        <a href="https://twitter.com" target="_blank" class="social-icon">
+          <i class="fa-brands fa-twitter"></i>
+        </a>
+        <a href="https://messenger.com" target="_blank" class="social-icon">
+          <i class="fa-brands fa-facebook-messenger"></i>
+        </a>
+        <a href="https://instagram.com" target="_blank" class="social-icon">
+          <i class="fa-brands fa-instagram"></i>
+        </a>
+        <a href="https://linkedin.com" target="_blank" class="social-icon">
+          <i class="fa-brands fa-linkedin"></i>
+        </a>
+        <a href="mailto:example@example.com" class="social-icon">
+          <i class="fa-solid fa-envelope"></i>
+        </a>
+      </div>
+    </v-row>
+  </LayoutContainer>
+  <LayoutFooterPrefooter />
+  <LayoutFooter />
+</template>
+
+<script setup lang="ts">
+import { ref } from "vue";
+import { useRoute } from "vue-router";
+import "vue3-carousel/dist/carousel.css";
+import { useMaestroRequestService } from "~/composables/useMaestroRequestService";
+const { apiRequestService } = useMaestroRequestService();
+
+const job = ref(null);
+const route = useRoute();
+const jobID = route.params.id;
+const pending = ref(true);
+const config = useRuntimeConfig();
+
+onMounted(async () => {
+  try {
+    job.value = await apiRequestService.get(
+      `${config.public.apiBaseUrl}/api/job-postings/${jobID}`
+    );
+    pending.value = false;
+  } catch (error) {
+    console.error("Erreur lors de la récupération de l'annonce", error);
+    pending.value = false;
+  }
+});
+
+const getImageUrl = (attachment: string) => {
+  if (attachment) {
+    return `${config.public.apiBaseUrl}/uploads/job_postings/${attachment}`;
+  }
+  console.log("pas d'image");
+};
+</script>
+
+<style scoped>
+.description-job {
+  color: #0e2d32;
+  text-align: justify;
+  font-family: "Barlow";
+  font-size: 1.875rem;
+  font-style: normal;
+  font-weight: 500;
+  line-height: 2.125rem;
+}
+
+.custom-row {
+  width: 90%;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+:deep().text-left,
+:deep().text-right,
+:deep().description-square,
+:deep().black-square,
+:deep().blue-square {
+  display: none;
+}
+:deep().text-right {
+  display: none;
+}
+
+:deep().cover-image {
+  transform: none;
+}
+
+.bold {
+  font-weight: bold;
+}
+
+.detail-job {
+  font-family: "Barlow";
+  font-style: normal;
+  font-weight: 500;
+  font-size: 25px;
+  line-height: 18px;
+  margin-bottom: 1rem;
+}
+.blue-content {
+  background-color: #64afb7;
+  height: 10rem;
+  margin-top: -1rem;
+  margin-bottom: 2rem;
+}
+.banner-container {
+  position: relative;
+  overflow: hidden;
+  display: flex;
+  justify-content: center;
+  align-items: flex-start;
+  height: 25rem;
+  width: 100%;
+}
+.cover-image {
+  width: 95%;
+  height: auto;
+  object-fit: cover;
+  margin: 0 auto;
+  display: block;
+}
+
+.btn {
+  background: var(--Vert-60, #64afb7);
+  display: flex;
+  left: 0;
+  padding: 25px 28px;
+  align-items: center;
+  gap: 9px;
+  color: var(--NEUTRAL---BLANC, #fff);
+  font-family: Barlow;
+  font-size: 0.9rem;
+  border-radius: 5px;
+  font-style: normal;
+  font-weight: 700;
+  line-height: 15px;
+  letter-spacing: 1.3px;
+  text-transform: uppercase;
+  margin-bottom: -1rem;
+}
+
+.green--text {
+  color: green;
+}
+
+.red--text {
+  color: red;
+}
+.black--text {
+  color: black;
+}
+.btn-news {
+  color: #9edbdd;
+  border-radius: 2rem;
+  font-family: "Barlow";
+  background: transparent;
+  border: 1px solid #9edbdd;
+  border-radius: 6px;
+  font-style: normal;
+  font-weight: 600;
+  text-transform: uppercase;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  padding: 25px;
+  font-size: 10px;
+  line-height: 15px;
+}
+.chip-detail {
+  color: #000000;
+}
+.chip-custom {
+  color: white;
+  border: 1px solid white;
+  border-radius: 3rem;
+  text-transform: uppercase;
+  font-family: "Barlow";
+  font-style: normal;
+  display: flex;
+  align-items: center;
+  text-align: center;
+}
+
+.card-localisation {
+  letter-spacing: 0.18em;
+  text-transform: uppercase;
+  font-size: 10px;
+  color: #112528;
+}
+.card {
+  border-radius: 15px 15px 0 0;
+  margin-bottom: 2rem;
+}
+
+.icon-title {
+  color: #64afb7;
+  margin-top: 4.5rem;
+}
+.container-title {
+  display: flex;
+  align-items: center;
+  margin-left: 2rem;
+  margin-top: 4.5rem;
+}
+
+.carousel-button i {
+  color: #000000;
+}
+.card-text {
+  font-family: "Barlow";
+  font-style: normal;
+  font-weight: 500;
+  font-size: 16px;
+  line-height: 18px;
+  margin-bottom: 1rem;
+  color: #fff !important;
+}
+.card-title {
+  font-family: "Barlow";
+  font-style: normal;
+  font-weight: 500;
+  font-size: 20px;
+  line-height: 24px;
+  display: flex;
+  align-items: center;
+  letter-spacing: 0.18em;
+  text-transform: uppercase;
+  color: #fff !important;
+}
+.card-date {
+  font-size: 0.8em;
+  color: #888;
+  margin-left: 1rem;
+  color: #fff !important;
+}
+
+.card-footer {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.card-body {
+  text-align: left;
+  margin-bottom: 1rem;
+  margin-left: 1rem;
+  font-family: "Barlow";
+  font-style: normal;
+  font-weight: 500;
+  line-height: 24px;
+  color: #fff !important;
+  color: #112528;
+}
+
+.card-img-top {
+  border-radius: 9px 9px 0 0;
+  width: 100%;
+  object-fit: 90%;
+  object-position: center;
+  width: 384px;
+  height: 247.11px;
+}
+
+.title,
+.carousel-button,
+.btn-news {
+  margin-top: 2rem;
+  margin-bottom: 2rem;
+}
+.agenda-details {
+  font-family: "Barlow";
+  font-style: normal;
+  font-weight: 300;
+  font-size: 16px;
+  line-height: 20px;
+  margin-left: 2rem;
+  color: #091d20;
+  margin-bottom: 3rem;
+  width: 15rem;
+}
+.title {
+  font-family: "Barlow";
+  font-style: normal;
+  font-weight: 600;
+  font-size: 42px;
+  line-height: 42px;
+  margin-left: 2rem;
+  color: #071b1f;
+}
+
+.carousel-button {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 60px;
+  height: 60px;
+  background-color: transparent;
+  border: 2px solid #000000;
+  cursor: pointer;
+  margin-right: 1rem;
+}
+
+.container-green {
+  background-color: #0e2d32;
+}
+
+.back-button {
+  text-decoration: none;
+  color: #000000;
+  font-family: Barlow;
+  font-size: 0.9rem;
+  font-style: normal;
+  font-weight: 700;
+  line-height: 15px;
+  letter-spacing: 1.8px;
+  text-transform: uppercase;
+}
+
+.description-actu {
+  color: #0e2d32;
+  text-align: justify;
+  font-family: Barlow;
+  font-size: 30px;
+  font-style: normal;
+  font-weight: 500;
+  line-height: 34px;
+  margin-left: 3.5rem;
+  margin-right: 3.5rem;
+  margin-bottom: 3rem;
+}
+
+.share {
+  color: #000;
+  font-family: Barlow;
+  font-size: 26px;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 28px;
+}
+
+.social-icons {
+  display: flex;
+  gap: 10px;
+}
+
+.social-icon i {
+  font-size: 1.9em;
+  margin-left: 0.5rem;
+  margin-top: 0.5rem;
+  color: #0e2d32;
+}
+
+.key-word {
+  color: #000;
+  font-family: Barlow;
+  font-size: 20px;
+  font-style: normal;
+  font-weight: 500;
+  line-height: 24px;
+}
+
+.title-other {
+  color: #fff;
+}
+</style>

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

@@ -0,0 +1,74 @@
+<template>
+  <LayoutNavigation />
+  <div v-if="shouldShowStickyMenu" id="sticky-menu">
+    <CommonStickyMenu
+      :shouldShowStickyMenu="shouldShowStickyMenu"
+      :squaresData="squaresData"
+    />
+  </div>
+  <JoinUsBanner />
+  <JoinUsMissions />
+  <LayoutFooterPrefooter />
+  <LayoutFooter id="layout-footer" />
+</template>
+
+<script setup lang="ts">
+import { ref } from "vue";
+import { useMaestroRequestService } from "~/composables/useMaestroRequestService";
+const { apiRequestService } = useMaestroRequestService();
+
+const query = computed(() => {
+  const queryParams: { page: number; type?: string; [key: string]: number | string } = {
+    page: page.value,
+    type: 'ENTREPRISE' 
+  };
+
+  return queryParams;
+});
+// Base URL for API requests
+const totalItems = ref(0);
+const config = useRuntimeConfig();
+const baseUrl = `${config.public.apiBaseUrl}/api/job-postings`;
+
+const page: Ref<number> = ref(1);
+const itemsPerPage: Ref<number> = ref(10);
+const { t } = useI18n();
+const {
+  data: jobs = [],
+  pending,
+  refresh,
+} = useLazyAsyncData("files", async () => {
+  const response = await apiRequestService.get(baseUrl, query.value);
+  const collection = response["hydra:member"];
+
+  const currentDate = new Date();
+
+  const filteredJobs = collection.filter(item => {
+    const endPublicationDate = new Date(item.endPublication);
+    return item.type === 'ENTREPRISE' && endPublicationDate >= currentDate;
+  });
+
+  totalItems.value = filteredJobs.length;
+  console.log(filteredJobs);
+  return filteredJobs;
+});
+
+
+</script>
+
+<style scoped>
+#sticky-menu {
+  position: sticky;
+  top: 20rem;
+  z-index: 1;
+  margin-bottom: -32rem;
+  float: right;
+}
+
+@media (max-width: 1800px) {
+  #sticky-menu {
+    top: 16rem;
+    margin-bottom: -28rem;
+  }
+}
+</style>

+ 0 - 255
pages/test.vue

@@ -1,255 +0,0 @@
-<template>
-  <div id="L'agenda opentalent">
-    <LayoutContainer>
-      <v-row class="custom-row align-center">
-        <v-col cols="4">
-          <h2 class="title">L'agenda Opentalent</h2>
-        </v-col>
-
-        <v-col cols="4">
-          <div class="d-flex justify-center align-center">
-            <div class="carousel-button" @click="goPrevious">
-              <i class="fas fa-chevron-left" />
-            </div>
-            <div class="carousel-button" @click="goNext">
-              <i class="fas fa-chevron-right" />
-            </div>
-          </div>
-        </v-col>
-
-        <v-col cols="4">
-          <v-btn class="btn-news" text> VOIR TOUS LES EVENEMENTS </v-btn>
-        </v-col>
-      </v-row>
-
-      <v-row class="custom-row">
-        <p class="agenda-details">
-          Retrouvez tous les évènements culturels autour de chez vous.
-        </p>
-      </v-row>
-
-      <v-row class="custom-row">
-        <v-col cols="12" lg="12" md="12">
-          <Carousel ref="carousel" :items-to-show="3.2" :items-to-scroll="2">
-            <Slide
-              v-for="(event, eventIndex) in events"
-              :key="eventIndex"
-              class="slide-card"
-            >
-              <v-card>
-                <div
-                  class="card-img"
-                  :style="{ backgroundImage: 'url(' + event.img + ')' }"
-                ></div>
-
-                <v-card-title>
-                  {{ event.title }}
-                </v-card-title>
-
-                <v-card-text>
-                  {{ event.localisation }}
-                </v-card-text>
-
-                <div class="card-footer">
-                  <v-chip-group active-class="primary--text" column>
-                    <v-chip
-                      v-for="(tag, tagIndex) in event.tags"
-                      :key="tagIndex"
-                      class="ma-2 chip-custom"
-                      :color="tagColor(tag)"
-                      label
-                    >
-                      <span :class="tagTextColor(tag)">{{ tag }}</span>
-                    </v-chip>
-                  </v-chip-group>
-                </div>
-              </v-card>
-            </Slide>
-          </Carousel>
-        </v-col>
-      </v-row>
-    </LayoutContainer>
-  </div>
-</template>
-
-<script setup>
-import { ref } from "vue";
-import { Carousel, Slide } from "vue3-carousel";
-import "vue3-carousel/dist/carousel.css";
-const tagColor = (tag) => {
-  switch (tag) {
-    case "Payant":
-      return "red";
-    case "Gratuit":
-      return "green";
-    default:
-      return "primary";
-  }
-};
-
-const tagTextColor = (tag) => {
-  switch (tag) {
-    case "Payant":
-      return "red--text";
-    case "Gratuit":
-      return "green--text";
-    default:
-      return "black--text";
-  }
-};
-const events = ref([
-  {
-    rdv: "20h00",
-    title: "LA NUIT DES RÊVES  ",
-    localisation: "FESTIVALDE musique - LONGCHAMP",
-    date: "21/06/2023",
-    img: "/images/agenda/agenda2.jpg",
-    tags: ["Festival", "Musique", "Tout public", "Payant"],
-  },
-  {
-    rdv: "20h00",
-    title: "LE LAC DES CYGNES",
-    localisation: "SPECTACLE DE DANSE - PARIS 1",
-    date: "22/06/2023",
-    img: "/images/agenda/agenda3.jpg",
-    tags: ["Festival", "Musique", "Tout public", "Gratuit"],
-  },
-  {
-    rdv: "20h00",
-    title: "SOLIDAYS 2023  : 23 > 25 juin",
-    localisation: "ORCHESTRE DE PARIS - PARIS 12",
-    date: "23/06/2023",
-    img: "/images/agenda/agenda4.jpg",
-    tags: ["Festival", "Musique", "Tout public", "Payant"],
-  },
-  {
-    rdv: "20h00",
-    title: "LE LAC DES CYGNES",
-    localisation: "FESTIVALDE musique - LONGCHAMP",
-    date: "24/06/2023",
-    img: "/images/agenda/agenda5.jpg",
-    tags: ["Festival", "Musique", "Tout public", "Payant"],
-  },
-  {
-    rdv: "20h00",
-    title: "SOLIDAYS 2023  : 23 > 25 juin ",
-    localisation: "SPECTACLE DE DANSE - PARIS 1",
-    date: "20/06/2023",
-    img: "/images/agenda/agenda1.jpg",
-    tags: ["Festival", "Musique", "Tout public", "Payant"],
-  },
-]);
-
-let carousel;
-
-const goPrevious = () => carousel.prev();
-const goNext = () => carousel.next();
-</script>
-
-<style scoped>
-.card-img {
-  width: 100%;
-  height: 200px;
-  background-size: cover;
-  background-position: center;
-}
-
-.green--text {
-  color: green;
-}
-.custom-row {
-  width: 90%;
-  margin-left: auto;
-  margin-right: auto;
-}
-.red--text {
-  color: red;
-}
-.black--text {
-  color: black;
-}
-.btn-news {
-  color: #9edbdd;
-  border-radius: 2rem;
-  font-family: "Barlow";
-  background: transparent;
-  border: 1px solid #9edbdd;
-  border-radius: 6px;
-  font-style: normal;
-  font-weight: 600;
-  text-transform: uppercase;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  padding: 25px;
-  font-size: 10px;
-  line-height: 15px;
-}
-.chip-custom {
-  color: white;
-  border: 1px solid #0e2d32;
-  border-radius: 3rem;
-  text-transform: uppercase;
-  display: flex;
-  align-items: center;
-  text-align: center;
-}
-
-
-.carousel-button i {
-  color: #000000;
-}
-
-.card-date {
-  font-size: 0.8em;
-  color: #888;
-  margin-left: 1rem;
-}
-
-.card-footer {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  margin-left: 4rem;
-}
-
-
-.title,
-.carousel-button,
-.btn-news {
-  margin-top: 2rem;
-  margin-bottom: 2rem;
-}
-.agenda-details {
-  font-family: "Barlow";
-  font-style: normal;
-  font-weight: 300;
-  font-size: 16px;
-  line-height: 20px;
-  margin-left: 2rem;
-  color: #091d20;
-  margin-bottom: 3rem;
-  width: 15rem;
-}
-.title {
-  font-family: "Barlow";
-  font-style: normal;
-  font-weight: 600;
-  font-size: 42px;
-  line-height: 42px;
-  margin-left: 2rem;
-  color: #071b1f;
-}
-
-.carousel-button {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  width: 40px;
-  height: 40px;
-  background-color: transparent;
-  border: 2px solid #000000;
-  cursor: pointer;
-  margin-right: 1rem;
-}
-</style>

+ 2 - 10
pages/webinaires.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <LayoutNavigation />
   <LayoutNavigation />
   <div v-if="shouldShowStickyMenu" id="sticky-menu">
   <div v-if="shouldShowStickyMenu" id="sticky-menu">
-    <LayoutUIStickyMenu
+    <CommonStickyMenu
       :shouldShowStickyMenu="shouldShowStickyMenu"
       :shouldShowStickyMenu="shouldShowStickyMenu"
       :squaresData="squaresData"
       :squaresData="squaresData"
     />
     />
@@ -30,14 +30,6 @@ const squaresData = [
     text: "Nous contacter",
     text: "Nous contacter",
     url: "/nous-contacter",
     url: "/nous-contacter",
   },
   },
-  {
-    id: 2,
-    bgColor: "green-square",
-    iconClass: "fa-solid fa-circle-info icon",
-    text: "Demander une demo",
-    url: "/nous-contacter",
-
-  },
   {
   {
     id: 4,
     id: 4,
     bgColor: "darkblue-square",
     bgColor: "darkblue-square",
@@ -69,7 +61,7 @@ onMounted(() => {
 #sticky-menu {
 #sticky-menu {
   position: sticky;
   position: sticky;
   top: 20rem;
   top: 20rem;
-  z-index: 1;
+  z-index: 2;
   margin-bottom: -32rem;
   margin-bottom: -32rem;
   float: right;
   float: right;
 }
 }