Browse Source

refactor client carousel and introduce theming

Olivier Massot 1 year ago
parent
commit
b080a1a108

+ 2 - 0
assets/style/.gitignore

@@ -0,0 +1,2 @@
+*.css
+*.map

+ 4 - 4
assets/css/main.css → assets/style/main.scss

@@ -1,11 +1,11 @@
 @import url('https://fonts.googleapis.com/css2?family=Barlow:wght@500;700&display=swap');
 @import url('https://fonts.googleapis.com/css2?family=Barlow:wght@500;700&display=swap');
 
 
-h1, h2, h3, h4, h5, h6, p, small, .btn-event, .btn-contact, .formation-btn, td, .button-faq, li, .btn-school, .btn-artist, .btn-manager, .name, .school, .view-button,
-.presentation-title, .subtitle
-.status {
-  font-family: "Barlow";
+h1, h2, h3, h4, h5, h6, p, small, .btn-event, .btn-contact, .formation-btn, td, .button-faq, li, .btn-school,
+.btn-artist, .btn-manager, .name, .school, .view-button, .presentation-title, .subtitle .status {
+  font-family: "Barlow", serif;
   font-style: normal;
   font-style: normal;
 }
 }
+
 .table-row {
 .table-row {
   background-color: white;
   background-color: white;
   text-align: center;
   text-align: center;

+ 12 - 0
assets/style/theme.scss

@@ -0,0 +1,12 @@
+
+body {
+  --neutral-color: #ffffff;
+  --on-neutral-color: #000000;
+  --primary-color: #0e2d32;
+  --on-primary-color: #ffffff;
+  --on-primary-color-alt: #caf5f4;
+  --secondary-color: #9edbdd;
+  --on-secondary-color: #ffffff;
+  --neutral-color-alt: #dbdbdb;
+  --onNeutral-color-alt: #000000;
+}

+ 123 - 0
components/Common/Carousel/Clients.vue

@@ -0,0 +1,123 @@
+<!-- Carrousel des logos clients -->
+
+<template>
+  <LayoutContainer>
+    <!-- Titre -->
+    <v-row justify="center">
+      <h2 class="text-center">
+        <slot name="title">
+          Plus de <span class="alt-color">5000 structures</span> nous font confiance
+        </slot>
+      </h2>
+    </v-row>
+
+    <v-container>
+      <v-row>
+        <!-- Fléche de gauche -->
+        <v-btn
+          icon="fas fa-chevron-left"
+          @click="goToPrevious"
+        />
+
+        <!-- Carrousel -->
+        <Carousel
+          ref="carousel"
+          class="elevation-4 mb-12"
+          :items-to-show="4"
+          :items-to-scroll="2"
+        >
+          <Slide v-for="(item, index) in items" :key="index">
+            <div>
+              <v-img :src="item.src" alt="Card image cap" />
+            </div>
+          </Slide>
+        </Carousel>
+
+        <!-- Fléche de droite -->
+        <v-btn
+          icon="fas fa-chevron-right"
+          @click="goToNext"
+        />
+      </v-row>
+    </v-container>
+  </LayoutContainer>
+</template>
+
+<script setup lang="ts">
+import { Carousel, Slide } from "vue3-carousel";
+import { PropType } from "@vue/runtime-core";
+
+const carousel: Ref<typeof Carousel | null> = ref(null);
+
+const props = defineProps({
+  items: {
+    type: Array as PropType<Array<{ src: string }>>,
+    required: true
+  }
+});
+
+const goToPrevious = () => {
+  carousel.value!.prev();
+};
+
+const goToNext = () => {
+  carousel.value!.next();
+};
+</script>
+
+<!--suppress SassScssResolvedByNameOnly -->
+<style scoped lang="scss">
+.v-row {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  max-width: 1300px;
+  margin-right: auto;
+  margin-left: auto;
+}
+
+h2 {
+  margin-bottom: 2rem;
+  font-style: normal;
+  text-align: center;
+  font-weight: 600;
+  font-size: 42px;
+  line-height: 42px;
+  color: var(--on-primary-color);
+  width: 50%;
+}
+
+.alt-color {
+  color: var(--on-primary-color-alt);
+}
+
+.v-btn {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 60px;
+  height: 60px;
+  background-color: transparent;
+  color: var(--on-primary-color);
+  border: 2px solid var(--on-primary-color);
+  cursor: pointer;
+  margin-right: 1rem;
+  margin-top: 1rem;
+  border-radius: 0;
+}
+
+.carousel {
+  background-color: white;
+  margin-top: 2rem;
+  border-radius: 20px;
+  margin-left: auto;
+  margin-right: auto;
+  box-shadow: #071b1f;
+}
+
+.v-img {
+  height: 10rem;
+  width: 10rem;
+  margin: 2rem auto;
+}
+</style>

+ 0 - 142
components/Common/Carousel/TrustCompanie.vue

@@ -1,142 +0,0 @@
-<template>
-  <LayoutContainer>
-    <v-row justify="center">
-      <h2 class="title text-center" :style="{ color: titleColor }">
-        Plus de&nbsp;
-        <span :style="{ color: structureCountColor }">{{ structureCount }}</span
-        >&nbsp; {{ trustMessage }}
-      </h2>
-    </v-row>
-
-    <v-row justify="center"> </v-row>
-
-    <v-container>
-      <v-row>
-        <div
-          class="carousel-button"
-          @click="goPrevious"
-          :style="{
-            'border-color': carouselBorderColor,
-            color: carouselButtonColor,
-          }"
-        >
-          <i class="fas fa-chevron-left" :style="{ color: iconColor }" />
-        </div>
-        <Carousel
-          ref="carousel"
-          class="carrousel elevation-4 mb-12"
-          :items-to-show="4"
-          :items-to-scroll="2"
-        >
-          <Slide v-for="(item, index) in items" :key="index">
-            <div class="card">
-              <v-img class="card-img" :src="item.src" alt="Card image cap" />
-            </div>
-          </Slide>
-        </Carousel>
-        <div
-          class="carousel-button"
-          @click="goNext"
-          :style="{
-            'border-color': carouselBorderColor,
-            color: carouselButtonColor,
-          }"
-        >
-          <i class="fas fa-chevron-right" :style="{ color: iconColor }" />
-        </div>
-
-        
-      </v-row>
-    </v-container>
-  </LayoutContainer>
-</template>
-
-<script setup>
-import { ref } from "vue";
-import { Carousel, Slide } from "vue3-carousel";
-const carousel = ref(null);
-
-const props = defineProps({
-  titleColor: String,
-  carouselButtonColor: String,
-  carouselBorderColor: String,
-  items: Array,
-  iconColor: String,
-  trustMessage: {
-    type: String,
-    default: "nous font confiance",
-  },
-  structureCount: {
-    type: String,
-    default: "5000 structures",
-  },
-  structureCountColor: {
-    type: String,
-    default: "#c3e5e7",
-  },
-});
-
-const goPrevious = () => {
-  carousel.value.prev();
-};
-
-const goNext = () => {
-  carousel.value.next();
-};
-</script>
-
-<style scoped>
-.v-row {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  max-width: 1300px;
-  margin-right: auto;
-  margin-left: auto;
-}
-.carousel-button i {
-  color: black;
-}
-
-.carousel-button {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  width: 60px;
-  height: 60px;
-  background-color: transparent;
-  border: 2px solid black;
-  cursor: pointer;
-  margin-right: 1rem;
-  margin-top: 1rem;
-}
-.card-img {
-  height: 10rem;
-  width: 10rem;
-  margin-left: auto;
-  margin-right: auto;
-  margin-top: 2rem;
-  margin-bottom: 2rem;
-}
-.carousel {
-  background-color: white;
-  margin-top: 2rem;
-  border-radius: 20px;
-  margin-left: auto;
-  margin-right: auto;
-  box-shadow: #071b1f;
-}
-
-.title {
-  margin-bottom: 2rem;
-  font-style: normal;
-  text-align: center;
-  color: black;
-  font-weight: 600;
-  font-size: 42px;
-  line-height: 42px;
-  text-align: center;
-  color: #0e2d32;
-  width: 50%;
-}
-</style>

+ 164 - 141
components/Home/Reviews.vue

@@ -1,53 +1,61 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
-    <div :class="!smAndDown ? 'container-color' : 'container-color-md'">
+    <div class="container-1">
       <div class="d-flex justify-center align-center flex-column">
       <div class="d-flex justify-center align-center flex-column">
-        <v-icon size="6" class="fa-solid fa-circle icon-title" />
-        <h6 class="small-title">Avis Clients</h6>
+        <v-icon
+          icon="fa-solid fa-circle"
+          size="6"
+        />
+        <h6>
+          Avis Clients
+        </h6>
       </div>
       </div>
 
 
-      <h1 class="title-review" :class="smAndDown ? 'mb-12 ' : ''">
+      <h3>
         C'est vous qui le dites
         C'est vous qui le dites
-      </h1>
+      </h3>
     </div>
     </div>
 
 
-    <div v-if="!smAndDown" class="container-green">
+    <!-- Ecrans larges -->
+    <div v-if="mdAndUp" class="container-2">
+
+      <!-- Partie 1 : Avis clients -->
       <v-row justify="center">
       <v-row justify="center">
         <div class="col-review">
         <div class="col-review">
           <v-col cols="6">
           <v-col cols="6">
-            <v-card class="review-card left mx-auto">
+            <v-card class="left mx-auto">
               <v-card-title>
               <v-card-title>
-                <span class="review-name">Patrice CATHELIN</span>
+                Patrice CATHELIN
               </v-card-title>
               </v-card-title>
 
 
               <v-card-text>
               <v-card-text>
-                <p class="description-review">
+                <p>
                   C'est un logiciel très bien conçu et efficace avec une équipe
                   C'est un logiciel très bien conçu et efficace avec une équipe
                   ouverte, dynamique et à l'écoute. L’assistance est très
                   ouverte, dynamique et à l'écoute. L’assistance est très
                   réactive, j'ai toujours eu une réponse rapide à mes besoins,
                   réactive, j'ai toujours eu une réponse rapide à mes besoins,
                   ce qui est fort appréciable.
                   ce qui est fort appréciable.
                 </p>
                 </p>
               </v-card-text>
               </v-card-text>
-              <div class="card-footer">
-                <small class="status"
-                  >Directeur administratif & pédagogique</small
-                >
 
 
-                <small class="structure"
-                  >Conservatoire de Musique & de Danse de Sens (78)</small
-                >
+              <div class="card-footer">
+                <small class="status">
+                  Directeur administratif & pédagogique
+                </small>
+                <small class="structure">
+                  Conservatoire de Musique & de Danse de Sens (78)
+                </small>
               </div>
               </div>
             </v-card>
             </v-card>
           </v-col>
           </v-col>
 
 
           <v-col cols="6">
           <v-col cols="6">
-            <v-card class="review-card right mx-auto">
+            <v-card class="right mx-auto">
               <v-card-title>
               <v-card-title>
-                <span class="review-name">Karine GIRAUD </span>
+                Karine GIRAUD
               </v-card-title>
               </v-card-title>
 
 
               <v-card-text>
               <v-card-text>
-                <p class="description-review">
+                <p>
                   Étant présente depuis presque le début, je suis fière d'avoir
                   Étant présente depuis presque le début, je suis fière d'avoir
                   vu grandir ce logiciel et d'avoir évoluée avec lui. De plus,
                   vu grandir ce logiciel et d'avoir évoluée avec lui. De plus,
                   je me suis sentie écoutée lors de mes propositions
                   je me suis sentie écoutée lors de mes propositions
@@ -58,11 +66,13 @@
               </v-card-text>
               </v-card-text>
 
 
               <div class="card-footer">
               <div class="card-footer">
-                <small class="status">Secrétaire administrative</small>
+                <small class="status">
+                  Secrétaire administrative
+                </small>
 
 
                 <small class="structure">
                 <small class="structure">
-                  Association Musicale Sainte Cécile de Lagord (17)</small
-                >
+                  Association Musicale Sainte Cécile de Lagord (17)
+                </small>
               </div>
               </div>
             </v-card>
             </v-card>
           </v-col>
           </v-col>
@@ -72,13 +82,13 @@
       <v-row justify="center">
       <v-row justify="center">
         <div class="col-review">
         <div class="col-review">
           <v-col cols="6">
           <v-col cols="6">
-            <v-card class="review-card left mx-auto">
+            <v-card class="left mx-auto">
               <v-card-title>
               <v-card-title>
-                <span class="review-name">Laurent BEL</span>
+                Laurent BEL
               </v-card-title>
               </v-card-title>
 
 
               <v-card-text>
               <v-card-text>
-                <p class="description-review">
+                <p>
                   Logiciel très complet qui permet de faire beaucoup de choses.
                   Logiciel très complet qui permet de faire beaucoup de choses.
                   J’apprécie particulièrement la réactivité, la bienveillance et
                   J’apprécie particulièrement la réactivité, la bienveillance et
                   le fait que l’équipe soit à l'écoute pour faire évoluer
                   le fait que l’équipe soit à l'écoute pour faire évoluer
@@ -87,26 +97,27 @@
                   face à un problème rencontré..
                   face à un problème rencontré..
                 </p>
                 </p>
               </v-card-text>
               </v-card-text>
+
               <div class="card-footer">
               <div class="card-footer">
-                <small class="status"
-                  >Directeur administratif & pédagogique
+                <small class="status">
+                  Directeur administratif & pédagogique
                 </small>
                 </small>
 
 
                 <small class="structure">
                 <small class="structure">
-                  École de Musique EPIC Musique en 4 Rivières (74)</small
-                >
+                  École de Musique EPIC Musique en 4 Rivières (74)
+                </small>
               </div>
               </div>
             </v-card>
             </v-card>
           </v-col>
           </v-col>
 
 
           <v-col cols="6">
           <v-col cols="6">
-            <v-card class="review-card right mx-auto">
+            <v-card class="right mx-auto">
               <v-card-title>
               <v-card-title>
-                <span class="review-name">Philippe BORY</span>
+                Philippe BORY
               </v-card-title>
               </v-card-title>
 
 
               <v-card-text>
               <v-card-text>
-                <p class="description-review">
+                <p>
                   Opentalent est une entreprise avec de vraies valeurs humaines,
                   Opentalent est une entreprise avec de vraies valeurs humaines,
                   à l'écoute de chaque structure et qui ne cesse de s'améliorer
                   à l'écoute de chaque structure et qui ne cesse de s'améliorer
                   pour toujours coller aux besoins de ses clients. Plus qu'une
                   pour toujours coller aux besoins de ses clients. Plus qu'une
@@ -114,30 +125,32 @@
                   au quotidien.
                   au quotidien.
                 </p>
                 </p>
               </v-card-text>
               </v-card-text>
+
               <div class="card-footer">
               <div class="card-footer">
-                <small class="status">Personnel administratif</small>
+                <small class="status">
+                  Personnel administratif
+                </small>
 
 
                 <small class="structure">
                 <small class="structure">
-                  École d'Arts de Saint-Michel-sur-Orge (91)</small
-                >
+                  École d'Arts de Saint-Michel-sur-Orge (91)
+                </small>
               </div>
               </div>
             </v-card>
             </v-card>
           </v-col>
           </v-col>
         </div>
         </div>
       </v-row>
       </v-row>
 
 
+      <!-- Partie 1 : Carrousel logos clients -->
       <div class="content-review">
       <div class="content-review">
-        <CommonCarouselTrustCompanie
+        <CommonCarouselClients
           :items="items"
           :items="items"
-          :title-color="'#fff'"
-          :carousel-border-color="'#fff'"
-          :carousel-button-color="'#fff'"
-          :icon-color="'#fff'"
+          color="#fff"
         />
         />
       </div>
       </div>
     </div>
     </div>
 
 
-    <div v-if="smAndDown">
+    <!-- Petits écrans -->
+    <div v-else>
       <v-row>
       <v-row>
         <v-col cols="12">
         <v-col cols="12">
           <Carousel :itemsToShow="1" :wrapAround="true" ref="reviewCaroussel">
           <Carousel :itemsToShow="1" :wrapAround="true" ref="reviewCaroussel">
@@ -191,13 +204,14 @@
   </LayoutContainer>
   </LayoutContainer>
 </template>
 </template>
 
 
-<script setup>
+<script setup lang="ts">
 import { ref } from "vue";
 import { ref } from "vue";
 import { Carousel, Slide } from "vue3-carousel";
 import { Carousel, Slide } from "vue3-carousel";
 import "vue3-carousel/dist/carousel.css";
 import "vue3-carousel/dist/carousel.css";
 import { useDisplay } from "vuetify";
 import { useDisplay } from "vuetify";
 
 
-const { smAndDown } = useDisplay();
+const { smAndDown, mdAndUp } = useDisplay();
+
 const reviewCaroussel = ref(null);
 const reviewCaroussel = ref(null);
 
 
 const state = ref({
 const state = ref({
@@ -263,6 +277,113 @@ const items = ref([
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
+
+.container-1 {
+  background-color: #f8f8f8;
+  height: 22rem;
+
+  .v-icon {
+    margin-top: 1rem;
+    color: #64afb7;
+  }
+
+  h6 {
+    font-size: 1rem;
+    line-height: 1rem;
+    margin-top: 1rem;
+    text-align: center;
+    letter-spacing: 2.16px;
+    text-transform: uppercase;
+    margin-bottom: 0.5rem;
+  }
+
+  h3 {
+    font-size: 2rem;
+    line-height: 42px;
+    text-align: center;
+    color: #071b1f;
+  }
+
+  @media (max-width: 600px) {
+    margin-bottom: 24px;
+  }
+}
+
+.container-2 {
+  background-color: #0e2d32;
+  height: 60rem;
+
+  .col-review {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+
+    .v-card {
+      padding-top: 1rem;
+      width: 21rem;
+      min-height: 21rem;
+      max-height: 21rem;
+      margin-bottom: 0.9rem;
+
+      .v-card-title {
+        margin-left: 1rem;
+        font-weight: 500;
+        font-family: "Barlow", serif;
+        font-style: normal;
+        font-size: 1.4rem;
+        color: #9edbdd;
+      }
+
+      .v-card-text p {
+        text-align: justify !important;
+        height: 10rem;
+        font-size: 1rem;
+        color: #071b1f;
+        margin: 0 1rem 1rem 1rem;
+        line-height: 20px;
+      }
+
+      .card-footer {
+        display: flex;
+        flex-direction: column;
+        margin-top: 1rem;
+
+        small {
+          position: absolute;
+          display: flex;
+          align-items: center;
+          bottom: 0;
+          right: 0;
+          font-weight: 600;
+          width: 90%;
+          color: #071b1f;
+        }
+
+        .status {
+          margin-top: 1rem;
+          font-size: 0.7rem;
+          line-height: 15px;
+          letter-spacing: 0.18em;
+          text-transform: uppercase;
+          margin-bottom: 2rem;
+        }
+
+        .structure {
+          font-size: 0.8rem;
+          margin-bottom: 1rem;
+        }
+      }
+    }
+  }
+}
+
+
+
+
+
+
+
+
 .custom-controls div {
 .custom-controls div {
   width: 0.6rem;
   width: 0.6rem;
   height: 0.6rem;
   height: 0.6rem;
@@ -297,16 +418,6 @@ const items = ref([
 .content-review {
 .content-review {
   margin-top: -7rem;
   margin-top: -7rem;
 }
 }
-.card-footer {
-  display: flex;
-  flex-direction: column;
-  margin-top: 1rem;
-}
-.col-review {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
 
 
 .left {
 .left {
   bottom: 12rem;
   bottom: 12rem;
@@ -318,94 +429,6 @@ const items = ref([
   bottom: 7rem;
   bottom: 7rem;
 }
 }
 
 
-.icon-title {
-  margin-top: 1rem;
-  color: #64afb7;
-}
 
 
-.container-green {
-  background-color: #0e2d32;
-  height: 60rem;
-}
 
 
-.status {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  margin-top: 1rem;
-  font-weight: 600;
-  font-size: 0.7rem;
-  line-height: 15px;
-  width: 90%;
-  display: flex;
-  align-items: center;
-  letter-spacing: 0.18em;
-  text-transform: uppercase;
-  margin-bottom: 2rem;
-  color: #071b1f;
-}
-
-.structure {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  font-weight: 600;
-  font-size: 0.8rem;
-  width: 90%;
-  display: flex;
-  align-items: center;
-  color: #071b1f;
-  margin-bottom: 1rem;
-}
-.description-review {
-  text-align: justify !important;
-  height: 10rem;
-  font-size: 1rem;
-  line-height: 1.5rem;
-  color: #071b1f;
-  margin-left: 1rem;
-  margin-right: 1rem;
-  margin-bottom: 1rem;
-  line-height: 20px;
-}
-
-.container-color {
-  background: #f8f8f8;
-  height: 22rem;
-}
-
-.container-color-md {
-}
-.review-card {
-  padding-top: 1rem;
-  width: 21rem;
-  min-height: 21rem;
-  max-height: 21rem;
-  margin-bottom: 0.9rem;
-}
-.review-name {
-  margin-left: 1rem;
-  font-weight: 500;
-  font-family: "Barlow";
-  font-style: normal;
-  font-size: 1.4rem;
-  color: #9edbdd;
-}
-
-.small-title {
-  font-size: 1rem;
-  line-height: 1rem;
-  margin-top: 1rem;
-  text-align: center;
-  letter-spacing: 2.16px;
-  text-transform: uppercase;
-  margin-bottom: 0.5rem;
-}
-
-.title-review {
-  font-size: 2rem;
-  line-height: 42px;
-  text-align: center;
-  color: #071b1f;
-}
 </style>
 </style>

+ 13 - 9
components/Logiciels/Artist/Formations.vue

@@ -85,18 +85,18 @@
       <v-row />
       <v-row />
 
 
       <v-row />
       <v-row />
-      <CommonCarouselTrustCompanie
-        :items="items"
-        :trustMessage="'nous ont déjà adoptées'"
-        :structureCount="'3400 structures'"
-        :structureCountColor="'#fac20a'"
-      />
+
+      <CommonCarouselClients :items="items" >
+        <template v-slot:title>
+          Plus de <span class="alt-color">3400 structures</span> nous ont déjà adoptées
+        </template>
+      </CommonCarouselClients>
     </LayoutContainer>
     </LayoutContainer>
   </div>
   </div>
 </template>
 </template>
 
 
-<script setup>
-const items = ref([
+<script setup lang="ts">
+const items: Ref<Array<{ src: string }>> = ref([
   { src: "/images/reviews/artist/review1.jpeg" },
   { src: "/images/reviews/artist/review1.jpeg" },
   { src: "/images/reviews/artist/review2.jpg" },
   { src: "/images/reviews/artist/review2.jpg" },
   { src: "/images/reviews/artist/review3.jpeg" },
   { src: "/images/reviews/artist/review3.jpeg" },
@@ -106,11 +106,15 @@ const items = ref([
 ]);
 ]);
 </script>
 </script>
 
 
-<style scoped>
+<style scoped lang="scss">
 .v-container {
 .v-container {
   padding: 0 !important;
   padding: 0 !important;
 }
 }
 
 
+.alt-color {
+  color: var(--on-primary-color-alt);
+}
+
 @media (min-width: 1000px) {
 @media (min-width: 1000px) {
   .custom-row {
   .custom-row {
     margin-right: auto;
     margin-right: auto;

+ 2 - 1
components/Logiciels/School/Formations.vue

@@ -87,7 +87,8 @@
         </v-row>
         </v-row>
       </v-container>
       </v-container>
       <v-row />
       <v-row />
-      <CommonCarouselTrustCompanie :items="items" />
+
+      <CommonCarouselClients :items="items" />
     </LayoutContainer>
     </LayoutContainer>
 </template>
 </template>
 
 

+ 4 - 1
nuxt.config.ts

@@ -37,7 +37,10 @@ export default defineNuxtConfig({
       apiBaseUrl: "",
       apiBaseUrl: "",
     },
     },
   },
   },
-  css: ["~/assets/css/main.css"],
+  css: [
+    "~/assets/style/main.scss",
+    "~/assets/style/theme.scss",
+  ],
   hooks: {
   hooks: {
     "builder:watch": console.log,
     "builder:watch": console.log,
   },
   },

+ 1 - 1
package.json

@@ -45,7 +45,7 @@
     "ohmyfetch": "^0.4.21",
     "ohmyfetch": "^0.4.21",
     "pinia": "^2.0.33",
     "pinia": "^2.0.33",
     "pinia-orm": "^1.5.1",
     "pinia-orm": "^1.5.1",
-    "sass": "^1.59.3",
+    "sass": "^1.70.0",
     "scss": "^0.2.4",
     "scss": "^0.2.4",
     "three": "^0.157.0",
     "three": "^0.157.0",
     "typeface-barlow": "^1.1.13",
     "typeface-barlow": "^1.1.13",

+ 22 - 15
pages/opentalent_artist.vue

@@ -1,29 +1,31 @@
 <template>
 <template>
-  <LayoutNavigation />
-  <LogicielsArtistBanner />
-  <CommonMenuScroll :menus="menus" class="mb-6" />
+  <div class="theme-artist">
+    <LayoutNavigation />
+    <LogicielsArtistBanner />
+    <CommonMenuScroll :menus="menus" class="mb-6" />
 
 
-  <CommonStickyMenu :actions="stickyMenuActions" />
+    <CommonStickyMenu :actions="stickyMenuActions" />
 
 
-  <LogicielsArtistPresentation />
+    <LogicielsArtistPresentation />
 
 
-  <LogicielsArtistAvantages />
+    <LogicielsArtistAvantages />
 
 
-  <LogicielsArtistFonctionnalites />
+    <LogicielsArtistFonctionnalites />
 
 
-  <LogicielsArtistComparatif />
+    <LogicielsArtistComparatif />
 
 
-  <LogicielsArtistAbonnement />
+    <LogicielsArtistAbonnement />
 
 
-  <LogicielsArtistFormations />
+    <LogicielsArtistFormations />
 
 
-  <LogicielsArtistReviews />
+    <LogicielsArtistReviews />
 
 
-  <LayoutFAQ />
+    <LayoutFAQ />
 
 
-  <LayoutFooterPrefooter />
+    <LayoutFooterPrefooter />
 
 
-  <LayoutFooter />
+    <LayoutFooter />
+  </div>
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
@@ -59,5 +61,10 @@ const stickyMenuActions: Array<StickyMenuAction> = [
 ];
 ];
 </script>
 </script>
 
 
-<style scoped>
+<style lang="scss">
+.theme-artist {
+  --primary-color: #ffffff;
+  --on-primary-color: #0e2d32;
+  --on-primary-color-alt: #fac20a;
+}
 </style>
 </style>

+ 22 - 15
pages/opentalent_school.vue

@@ -1,31 +1,33 @@
 <template>
 <template>
-  <LayoutNavigation />
+  <div class="theme-school">
+    <LayoutNavigation />
 
 
-  <LogicielsSchoolBanner />
+    <LogicielsSchoolBanner />
 
 
-  <CommonMenuScroll :menus="menus" class="mb-6" />
+    <CommonMenuScroll :menus="menus" class="mb-6" />
 
 
-  <CommonStickyMenu :actions="stickyMenuActions" />
+    <CommonStickyMenu :actions="stickyMenuActions" />
 
 
-  <LogicielsSchoolPresentation />
+    <LogicielsSchoolPresentation />
 
 
-  <LogicielsSchoolAvantages />
+    <LogicielsSchoolAvantages />
 
 
-  <LogicielsSchoolFonctionnalites />
+    <LogicielsSchoolFonctionnalites />
 
 
-  <LogicielsSchoolComparatif />
+    <LogicielsSchoolComparatif />
 
 
-  <LogicielsSchoolProjet />
+    <LogicielsSchoolProjet />
 
 
-  <LogicielsSchoolFormations />
+    <LogicielsSchoolFormations />
 
 
-  <LogicielsSchoolReviews />
+    <LogicielsSchoolReviews />
 
 
-  <LayoutFAQ  />
+    <LayoutFAQ  />
 
 
-  <LayoutFooterSolutionsFooter />
+    <LayoutFooterSolutionsFooter />
 
 
-  <LayoutFooter />
+    <LayoutFooter />
+  </div>
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
@@ -76,5 +78,10 @@ const stickyMenuActions: Array<StickyMenuAction> = [
 
 
 </script>
 </script>
 
 
-<style scoped>
+<style scoped lang="scss">
+.theme-school {
+  --primary-color: #ffffff;
+  --on-primary-color: #0e2d32;
+  --on-primary-color-alt: #c3e5e7;
+}
 </style>
 </style>

+ 9 - 9
yarn.lock

@@ -3423,10 +3423,10 @@
     picocolors "^1.0.0"
     picocolors "^1.0.0"
     pretty-format "^27.5.1"
     pretty-format "^27.5.1"
 
 
-"@vue-leaflet/vue-leaflet@^0.9.0":
-  version "0.9.0"
-  resolved "https://registry.yarnpkg.com/@vue-leaflet/vue-leaflet/-/vue-leaflet-0.9.0.tgz#f30bd18fedc6d9ef7bf4c6cc02f6fa7009658f6b"
-  integrity sha512-B5sxleSIFP0RK+7418BQirZ7oXa0t2dZrwfGI/0ABgaFLCWmHWP26w4soqrF5MlpThvhieAIUVIVuTdgXUenmA==
+"@vue-leaflet/vue-leaflet@^0.10.1":
+  version "0.10.1"
+  resolved "https://registry.yarnpkg.com/@vue-leaflet/vue-leaflet/-/vue-leaflet-0.10.1.tgz#17330515629d500ac113009a49f8cf98d140e8cc"
+  integrity sha512-RNEDk8TbnwrJl8ujdbKgZRFygLCxd0aBcWLQ05q/pGv4+d0jamE3KXQgQBqGAteE1mbQsk3xoNcqqUgaIGfWVg==
   dependencies:
   dependencies:
     vue "^3.2.25"
     vue "^3.2.25"
 
 
@@ -7484,7 +7484,7 @@ leaflet.markercluster@^1.5.3:
   resolved "https://registry.yarnpkg.com/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz#9cdb52a4eab92671832e1ef9899669e80efc4056"
   resolved "https://registry.yarnpkg.com/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz#9cdb52a4eab92671832e1ef9899669e80efc4056"
   integrity sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==
   integrity sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==
 
 
-leaflet@^1.9.4:
+leaflet@^1.9.3:
   version "1.9.4"
   version "1.9.4"
   resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.9.4.tgz#23fae724e282fa25745aff82ca4d394748db7d8d"
   resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.9.4.tgz#23fae724e282fa25745aff82ca4d394748db7d8d"
   integrity sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==
   integrity sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==
@@ -9568,10 +9568,10 @@ sass-loader@^13.2.1:
     klona "^2.0.6"
     klona "^2.0.6"
     neo-async "^2.6.2"
     neo-async "^2.6.2"
 
 
-sass@^1.59.3:
-  version "1.59.3"
-  resolved "https://registry.yarnpkg.com/sass/-/sass-1.59.3.tgz#a1ddf855d75c70c26b4555df4403e1bbf8e4403f"
-  integrity sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==
+sass@^1.70.0:
+  version "1.70.0"
+  resolved "https://registry.yarnpkg.com/sass/-/sass-1.70.0.tgz#761197419d97b5358cb25f9dd38c176a8a270a75"
+  integrity sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==
   dependencies:
   dependencies:
     chokidar ">=3.0.0 <4.0.0"
     chokidar ">=3.0.0 <4.0.0"
     immutable "^4.0.0"
     immutable "^4.0.0"