Caroussel.vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <template>
  2. <LayoutContainer>
  3. <h1 class="title text-center"> LOGICIELS CULTURELS </h1>
  4. <h2 class="subtitle text-center">UNE GAMME DE LOGICIELS ADAPTÉE À CHAQUE STRUCTURE CULTURELLE</h2>
  5. <!-- <v-carousel
  6. ref="carousel"
  7. v-model="activeIndex"
  8. :show-arrows="false"
  9. :class="smAndDown ? 'carousel-sm' : 'carousel'"
  10. :hide-delimiter-background="true"
  11. :show-delimiters="false"
  12. :touch="true"
  13. :cycle= true
  14. :interval= 5000
  15. > -->
  16. <v-carousel
  17. ref="carousel"
  18. v-model="activeIndex"
  19. :show-arrows="false"
  20. :class="smAndDown ? 'carousel-sm' : 'carousel'"
  21. :hide-delimiter-background="true"
  22. :show-delimiters="false"
  23. :touch="true"
  24. >
  25. <v-carousel-item
  26. v-for="(item, index) in carouselItems"
  27. :key="index"
  28. >
  29. <v-row>
  30. <v-col cols="6">
  31. <v-row >
  32. <v-img
  33. v-if="!smAndDown"
  34. class="logo"
  35. :src="item.logo"
  36. />
  37. </v-row>
  38. <v-row class="align-start">
  39. <p class="description ml-4 mr-4">
  40. {{ item.description }}
  41. </p>
  42. </v-row>
  43. <v-row class="align-start">
  44. <nuxt-link :to="item.link">
  45. <v-btn :class="item.buttonClass">
  46. En savoir plus
  47. </v-btn>
  48. </nuxt-link>
  49. </v-row>
  50. </v-col>
  51. <v-col cols="6">
  52. <v-row class="justify-end">
  53. <div
  54. class="background-rectangle"
  55. :style="{ backgroundColor: item.color }"
  56. />
  57. <v-card
  58. v-if="!smAndDown"
  59. class="card"
  60. elevation="5"
  61. >
  62. <v-img
  63. class="profile-image"
  64. :src="item.avatar"
  65. alt="Profile Image"
  66. contain
  67. rounded
  68. />
  69. <v-card-text>
  70. <v-card-title class="name">
  71. {{ item.name }}
  72. </v-card-title>
  73. <p class="school">
  74. {{ item.school }}
  75. </p>
  76. <p class="status">
  77. {{ item.status }}
  78. </p>
  79. </v-card-text>
  80. </v-card>
  81. <v-img
  82. :src="item.image"
  83. :class="smAndDown ? 'image-sm' : 'image'"
  84. />
  85. </v-row>
  86. </v-col>
  87. </v-row>
  88. </v-carousel-item>
  89. <div class="custom-controls">
  90. <div
  91. v-for="(item, index) in carouselItems"
  92. :key="index"
  93. :class="{ 'active-control': index === activeIndex }"
  94. @click="changeSlide(index)"
  95. />
  96. </div>
  97. </v-carousel>
  98. </LayoutContainer>
  99. </template>
  100. <script setup>
  101. import { ref } from "vue";
  102. import { useDisplay } from "vuetify";
  103. const { smAndDown } = useDisplay();
  104. let activeIndex = ref(0);
  105. const changeSlide = (index) => {
  106. activeIndex.value = index;
  107. };
  108. const carouselItems = ref([
  109. {
  110. logo: "/images/logo/logiciels/School-noir.png",
  111. description:
  112. "Pour les petits comme pour les GRANDS établissements d’enseignement artistique telle que les écoles de musique, de danse, de théâtre, d'art, de cirque et conservatoire. Il permet la gestion au quotidien et en temps réel de votre établissement, de gérer vos élèves et vos professeurs, vos emplois du temps, le suivi pédagogique, vos salles, la facturation et les encaissements…",
  113. buttonClass: "btn-school",
  114. image: "/images/carousel/school/Fille_School.png",
  115. color: "rgba(32, 147, 190, 0.4)",
  116. link: "/opentalent_school",
  117. name: "Cindy Blanchard",
  118. school: "Conservatoire d'Anemasse",
  119. status: "Eleve",
  120. avatar: "/images/carousel/school/avatar.png",
  121. },
  122. {
  123. logo: "/images/logo/logiciels/Artist-noir.png",
  124. description:
  125. "Pour les structures culturelles pratiquantes telles que les orchestres, les chorales, les compagnies de danse, théâtre et cirque. Gérez votre activité avec un logiciel de gestion et de communication au service de votre passion..",
  126. buttonClass: "btn-artist",
  127. image: "/images/carousel/artist/musician.png",
  128. color: "rgba(250, 194, 10, 0.4)",
  129. link: "opentalent_artist",
  130. name: "Thierry Dupont ",
  131. school: "Orchestre d’harmonie de Cluse",
  132. status: "Admin",
  133. avatar: "/images/carousel/artist/avatar.png",
  134. },
  135. {
  136. logo: "/images/logo/logiciels/Manager-noir.png",
  137. description:
  138. "La solution de mise en réseau des organisations culturelles. Fédérations, confédérations et collectivités, utilisez une solution collaborative innovante et unique spécialement développée pour les réseaux culturels.",
  139. buttonClass: "btn-manager",
  140. image: "/images/carousel/manager/fédération.png",
  141. color: "rgba(216, 5, 11, 0.4)",
  142. link: "opentalent_manager",
  143. name: "Marie Voisin",
  144. school: "Confédération Musicale de France",
  145. status: "ADMIN",
  146. avatar: "/images/carousel/manager/avatar.png",
  147. },
  148. ]);
  149. </script>
  150. <style scoped>
  151. ::v-deep .v-carousel__controls {
  152. display: none;
  153. }
  154. /* ============= TITLE =============== */
  155. .title {
  156. font-size: 4rem;
  157. line-height: 3.5rem;
  158. letter-spacing: 1.1rem;
  159. margin-top: 2rem;
  160. margin-bottom: 2rem;
  161. }
  162. .subtitle {
  163. font-size: 1.5rem;
  164. line-height: 2rem;
  165. letter-spacing: .5rem;
  166. margin-bottom: 8rem;
  167. }
  168. /* ============= CARD =============== */
  169. .card {
  170. height: 20%;
  171. width: 27%;
  172. border-radius: 1rem;
  173. margin-top: 1rem;
  174. }
  175. .profile-image {
  176. width: 40%;
  177. margin: auto;
  178. height: 12vh;
  179. }
  180. .name {
  181. text-align: center;
  182. font-size: 100%;
  183. font-weight: bold;
  184. margin-bottom: 1vh;
  185. font-family: "Barlow";
  186. font-style: normal;
  187. }
  188. .school,
  189. .status {
  190. text-align: center;
  191. font-size: 80%;
  192. color: #888888;
  193. margin-bottom: 1vh;
  194. }
  195. /* ============= RECTANGLE =============== */
  196. .background-rectangle {
  197. position: absolute;
  198. width: 70%;
  199. height: 20rem;
  200. left: 72%;
  201. top: 50%;
  202. transform: translate(-50%, -50%);
  203. border-radius: 200px 0px 0px 15rem;
  204. z-index: -1;
  205. /* ============= LOGO =============== */}
  206. .logo {
  207. max-width: 25vw;
  208. height: 25vh;
  209. margin-top: 10px;
  210. }
  211. .description {
  212. text-align: left;
  213. margin-right: 9vw;
  214. margin-left: 2vw;
  215. width: 25vw;
  216. margin-bottom: 1rem;
  217. }
  218. /* ============= CAROUSEL =============== */
  219. .custom-controls {
  220. position: absolute;
  221. top: 50%;
  222. right: 1vw;
  223. transform: translateY(-50%);
  224. display: flex;
  225. flex-direction: column;
  226. gap: 1vh;
  227. }
  228. .image {
  229. height: 35rem;
  230. right: 5rem;
  231. }
  232. .custom-controls div {
  233. width: .6rem;
  234. height: .6rem;
  235. border-radius: 50%;
  236. background-color: grey;
  237. cursor: pointer;
  238. margin-bottom: .5rem;
  239. }
  240. .custom-controls .active-control {
  241. background-color: #000;
  242. margin-right: 2rem;
  243. }
  244. /* ============= BUTTON =============== */
  245. .btn-school {
  246. background: rgba(32, 147, 190, 0.4);
  247. }
  248. .btn-artist {
  249. background: rgba(250, 194, 10, 0.4);
  250. }
  251. .btn-manager {
  252. background: rgba(216, 5, 11, 0.4);
  253. }
  254. .btn-school, .btn-artist, .btn-manager{
  255. border-radius: 0.5rem;
  256. margin-left: 2vw;
  257. padding: 25px;
  258. gap: 9px;
  259. font-weight: 700;
  260. font-size: .9rem;
  261. line-height: 15px;
  262. width: 10rem;
  263. height: 4rem;
  264. font-family: "Barlow";
  265. font-style: normal;
  266. }
  267. </style>