Logiciels.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <template>
  2. <AnchoredSection id="softwares">
  3. <LayoutContainer>
  4. <v-row class="mb-6 center-90">
  5. <LayoutUISubTitle>
  6. Nos logiciels
  7. </LayoutUISubTitle>
  8. <LayoutUITitle>
  9. Nos logiciels dédiés à chaque acteur culturel
  10. </LayoutUITitle>
  11. </v-row>
  12. <v-row class="mb-12 center-90">
  13. <v-col md="3">
  14. <p class="text-justify mr-4 ml-6 mb-6">
  15. Découvrez notre gamme de logiciels de gestion & de communication
  16. adapté au secteur culturel. <br />
  17. Des fonctionnalités complètes:
  18. </p>
  19. <ul class="ml-6">
  20. <li
  21. v-for="(feature, index) in features"
  22. :key="index"
  23. >
  24. {{ feature }}
  25. </li>
  26. </ul>
  27. <p class="text-justify mr-4 ml-6 mt-6">
  28. À chaque logiciel sa spécificité !
  29. </p>
  30. </v-col>
  31. <v-col
  32. cols="12"
  33. md="3"
  34. v-for="(item, index) in items"
  35. :key="index"
  36. :class="item.class"
  37. >
  38. <v-img
  39. :src="item.imageUrl"
  40. cover
  41. class="container-image"
  42. >
  43. <footer>
  44. <v-img
  45. :src="item.logoUrl"
  46. :alt="item.logoAlt"
  47. class="logo"
  48. />
  49. <v-btn
  50. :to="item.link"
  51. class="plus-button"
  52. >
  53. <v-icon>fas fa-plus</v-icon>
  54. </v-btn>
  55. </footer>
  56. </v-img>
  57. </v-col>
  58. </v-row>
  59. </LayoutContainer>
  60. </AnchoredSection>
  61. </template>
  62. <script setup lang="ts">
  63. import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
  64. const features: Array<string> = [
  65. "Une gestion de vos contacts",
  66. "Un agenda collaboratif et interactif",
  67. "Une gestion du matériel et du stock",
  68. "Une communication simplifiée",
  69. "Un rapport d'activité complet",
  70. "Un site internet intégré",
  71. "Et bien plus encore...",
  72. ];
  73. const items: Array<{imageUrl: string, alt: string, logoUrl: string, logoAlt: string, class: string, link: string}> = [
  74. {
  75. imageUrl: "/images/solutions/artist.jpg",
  76. alt: "Partition tenue par une femme dans une chorale",
  77. logoUrl: "/images/logo/logiciels/Artist-Blanc.png",
  78. logoAlt: "Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes",
  79. class: "artist",
  80. link: "/opentalent_artist",
  81. },
  82. {
  83. imageUrl: "/images/solutions/school.jpg",
  84. alt: "Deux jeunes filles jouant du violon",
  85. logoUrl: "/images/logo/logiciels/School-Blanc.png",
  86. logoAlt: "Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique",
  87. class: "school",
  88. link: "/opentalent_school",
  89. },
  90. {
  91. imageUrl: "/images/solutions/manager.png",
  92. alt: "Carte de réseau des structures de la confédération musicale de France",
  93. logoUrl: "/images/logo/logiciels/Manager-Blanc.png",
  94. logoAlt: "Logo Opentalent Manager - logiciel de gestion et de communication pour les fédérations, les confédérations et les collectivités",
  95. class: "manager",
  96. link: "/opentalent_manager",
  97. },
  98. ];
  99. </script>
  100. <style scoped lang="scss">
  101. .container {
  102. padding: 0 !important;
  103. margin-top: 1rem;
  104. background: var(--neutral-color);
  105. }
  106. ul {
  107. list-style: none;
  108. padding-left: 0;
  109. }
  110. li {
  111. margin-left: 0.8rem;
  112. position: relative;
  113. margin-bottom: 10px;
  114. }
  115. li:before {
  116. content: "";
  117. position: absolute;
  118. left: -10px;
  119. top: 50%;
  120. transform: translateY(-50%);
  121. width: 3px;
  122. height: 3px;
  123. background-color: var(--on-neutral-color);
  124. border-radius: 50%;
  125. }
  126. .container-image {
  127. position: relative;
  128. background-repeat: no-repeat;
  129. background-size: cover;
  130. background-position: center;
  131. width: 100%;
  132. height: 370px;
  133. z-index: 0;
  134. footer {
  135. position: absolute;
  136. bottom: 0;
  137. left: 0;
  138. width: 100%;
  139. height: 100px;
  140. display: flex;
  141. align-items: center;
  142. justify-content: space-between;
  143. padding: 0 10px;
  144. }
  145. .logo {
  146. width: 100px;
  147. z-index: 2;
  148. margin-right: 10px;
  149. }
  150. .plus-button {
  151. width: 80px;
  152. height: 80px;
  153. border-radius: 50% 0 0 0;
  154. background: var(--primary-color);
  155. color: var(--on-primary-color);
  156. box-shadow: none !important;
  157. border-top-left-radius: 10% !important;
  158. .v-icon {
  159. color: var(--on-primary-color);
  160. font-size: 2rem;
  161. }
  162. }
  163. :hover .plus-button {
  164. transform: scale(1.2);
  165. transition: all 0.3s ease-in-out;
  166. }
  167. }
  168. .artist .plus-button {
  169. background: var(--artist-color);
  170. }
  171. .school .plus-button {
  172. background: var(--school-color);
  173. }
  174. .manager .plus-button {
  175. background: var(--manager-color);
  176. }
  177. </style>