Caroussel.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. <template>
  2. <LayoutContainer>
  3. <h1 class="big-title"> LOGICIELS CULTURELS </h1>
  4. <h2 class="middle-title">UNE GAMME DE LOGICIELS ADAPTÉE À CHAQUE STRUCTURE CULTURELLE</h2>
  5. <h3
  6. v-if="smAndDown"
  7. class="title-page"
  8. >
  9. Une <span class="color-solution">solution</span> adapatée à chaque
  10. structure culturelle
  11. </h3>
  12. <v-carousel
  13. ref="carousel"
  14. v-model="activeIndex"
  15. :show-arrows="false"
  16. :class="smAndDown ? 'carousel-sm' : 'carousel'"
  17. :hide-delimiter-background="true"
  18. :show-delimiters="false"
  19. :touch="true"
  20. :cycle="smAndDown ? true : false"
  21. >
  22. <v-carousel-item
  23. v-for="(item, index) in carouselItems"
  24. :key="index"
  25. >
  26. <v-row>
  27. <v-col :cols="smAndDown ? 12 : 6">
  28. <v-row :class="!smAndDown ? 'align-start' : ''">
  29. <v-img
  30. v-if="!smAndDown"
  31. class="logo-school"
  32. :src="item.logo"
  33. />
  34. </v-row>
  35. <v-row class="align-start">
  36. <p :class="smAndDown ? 'description-sm' : 'description'">
  37. {{ item.description }}
  38. </p>
  39. </v-row>
  40. <v-row class="align-start">
  41. <nuxt-link :to="item.link">
  42. <v-btn :class="item.buttonClass">
  43. En savoir plus
  44. </v-btn>
  45. </nuxt-link>
  46. </v-row>
  47. </v-col>
  48. <v-col :cols="smAndDown ? 12 : 6">
  49. <v-row class="justify-end">
  50. <div
  51. :class="
  52. smAndDown ? 'background-rectangle-sm' : 'background-rectangle'
  53. "
  54. :style="{ backgroundColor: item.color }"
  55. />
  56. <v-card
  57. v-if="!smAndDown"
  58. class="card"
  59. elevation="5"
  60. >
  61. <v-img
  62. class="profile-image"
  63. :src="item.avatar"
  64. alt="Profile Image"
  65. contain
  66. rounded
  67. />
  68. <v-card-text>
  69. <v-card-title class="name">
  70. {{ item.name }}
  71. </v-card-title>
  72. <p class="school">
  73. {{ item.school }}
  74. </p>
  75. <p class="status">
  76. {{ item.status }}
  77. </p>
  78. </v-card-text>
  79. </v-card>
  80. <v-img
  81. :src="item.image"
  82. :class="smAndDown ? 'image-sm' : 'image'"
  83. />
  84. </v-row>
  85. </v-col>
  86. </v-row>
  87. </v-carousel-item>
  88. <div class="custom-controls">
  89. <div
  90. v-for="(item, index) in carouselItems"
  91. :key="index"
  92. :class="{ 'active-control': index === activeIndex }"
  93. @click="changeSlide(index)"
  94. />
  95. </div>
  96. </v-carousel>
  97. </LayoutContainer>
  98. </template>
  99. <script setup>
  100. import { ref } from "vue";
  101. import { useDisplay } from "vuetify";
  102. const { smAndDown } = useDisplay();
  103. let activeIndex = ref(0);
  104. const changeSlide = (index) => {
  105. activeIndex.value = index;
  106. };
  107. const carouselItems = ref([
  108. {
  109. logo: "/images/carousel/school/school.png",
  110. description:
  111. "Pour les petits comme pour les grans établissements d’enseignement artistique.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...",
  112. buttonClass: "btn-school",
  113. image: "/images/carousel/school/Fille_School.png",
  114. color: "rgba(32, 147, 190, 0.4)",
  115. link: "/logiciels/school",
  116. name: "Cindy Blanchard",
  117. school: "Conservatoire d'Anemasse",
  118. status: "Eleve",
  119. avatar: "/images/carousel/school/avatar.png",
  120. },
  121. {
  122. logo: "/images/carousel/artist/artist.png",
  123. description:
  124. "Pour les structures culturelles pratiquantes telles que les orchestres, les chorales, les compagnies de cirque, théâtre et danse.Gérez votre activité avec un logiciel de gestion et communication au service de votre passion.",
  125. buttonClass: "btn-artist",
  126. image: "/images/carousel/artist/musician.png",
  127. color: "rgba(250, 194, 10, 0.4)",
  128. link: "/logiciels/artist",
  129. name: "Thierry Dupont ",
  130. school: "Orchestre d’harmonie de Cluse",
  131. status: "Admin",
  132. avatar: "/images/carousel/artist/avatar.png",
  133. },
  134. {
  135. logo: "/images/carousel/manager/manager.png",
  136. description:
  137. "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.",
  138. buttonClass: "btn-manager",
  139. image: "/images/carousel/manager/fédération.png",
  140. color: "rgba(216, 5, 11, 0.4)",
  141. link: "/logiciels/manager",
  142. name: "Marie Voisin",
  143. school: "Confédération Musicale de France",
  144. status: "ADMIN",
  145. avatar: "/images/carousel/manager/avatar.png",
  146. },
  147. ]);
  148. </script>
  149. <style scoped>
  150. ::v-deep .v-carousel__controls {
  151. display: none;
  152. }
  153. .big-title {
  154. font-family: "Barlow";
  155. font-style: normal;
  156. font-weight: bold;
  157. font-size: 4rem;
  158. line-height: 3.5rem;
  159. letter-spacing: 1.1rem;
  160. text-align: center;
  161. color: #000000;
  162. margin-top: 2rem;
  163. margin-bottom: 2rem;
  164. }
  165. .middle-title {
  166. font-family: "Barlow";
  167. font-style: normal;
  168. letter-spacing: .5rem;
  169. font-weight: bold;
  170. font-size: 1.5rem;
  171. line-height: 2rem;
  172. text-align: center;
  173. color: #000000;
  174. margin-bottom: 8rem;
  175. }
  176. .color-solution {
  177. color: rgba(32, 147, 190, 0.9);
  178. }
  179. .title-page {
  180. font-family: "Barlow";
  181. font-style: normal;
  182. font-weight: bold;
  183. font-size: 2rem;
  184. line-height: 2.5rem;
  185. text-align: left;
  186. color: #000000;
  187. margin-bottom: 2rem;
  188. width: 25rem;
  189. }
  190. .card {
  191. height: 20%;
  192. width: 27%;
  193. border-radius: 1rem;
  194. margin-top: 1rem;
  195. }
  196. .profile-image {
  197. width: 40%;
  198. margin: auto;
  199. height: 12vh;
  200. }
  201. .name {
  202. text-align: center;
  203. font-size: 100%;
  204. font-weight: bold;
  205. margin-bottom: 1vh;
  206. font-family: "Barlow";
  207. font-style: normal;
  208. }
  209. .school,
  210. .status {
  211. text-align: center;
  212. font-size: 80%;
  213. color: #888888;
  214. margin-bottom: 1vh;
  215. }
  216. .background-rectangle {
  217. position: absolute;
  218. width: 70%;
  219. height: 20rem;
  220. left: 72%;
  221. top: 50%;
  222. transform: translate(-50%, -50%);
  223. border-radius: 200px 0px 0px 15rem;
  224. z-index: -1;
  225. }
  226. .background-rectangle-sm {
  227. position: absolute;
  228. width: 100%;
  229. height: 15rem;
  230. left: 72%;
  231. top: 50%;
  232. transform: translate(-50%, -50%);
  233. border-radius: 200px 0px 0px 15rem;
  234. z-index: -1;
  235. }
  236. .align-start {
  237. align-items: flex-start;
  238. }
  239. .carousel-sm {
  240. height: 44rem !important;
  241. margin-bottom: -14.3rem;
  242. margin-top: 2rem;
  243. }
  244. .carousel {
  245. margin-top: 1rem;
  246. height: 900% !important;
  247. margin-bottom: -2rem;
  248. }
  249. .logo-school {
  250. max-width: 35vw;
  251. height: 25vh;
  252. margin-top: 10px;
  253. margin-bottom: 2vh;
  254. }
  255. .image {
  256. height: 35rem;
  257. margin-top: 6rem;
  258. right: 20%;
  259. }
  260. .image-sm {
  261. height: 20rem;
  262. margin-top: 9rem;
  263. left: 10%;
  264. bottom: 10rem;
  265. }
  266. .description {
  267. text-align: left;
  268. margin-right: 9vw;
  269. margin-left: 7vw;
  270. width: 25vw;
  271. margin-bottom: 1rem;
  272. }
  273. .description-sm {
  274. margin-top: 1rem;
  275. width: 100%;
  276. text-align: left;
  277. margin-left: 1rem;
  278. margin-bottom: 1rem;
  279. }
  280. .custom-controls {
  281. position: absolute;
  282. top: 50%;
  283. right: 1vw;
  284. transform: translateY(-50%);
  285. display: flex;
  286. flex-direction: column;
  287. gap: 1vh;
  288. }
  289. .custom-controls div {
  290. width: 1vh;
  291. height: 1vh;
  292. border-radius: 50%;
  293. background-color: grey;
  294. cursor: pointer;
  295. }
  296. .custom-controls .active-control {
  297. background-color: #000;
  298. margin-right: 2rem;
  299. }
  300. .btn-school {
  301. background: rgba(32, 147, 190, 0.4);
  302. border-radius: 0.5rem;
  303. margin-left: 7vw;
  304. padding: 25px;
  305. gap: 9px;
  306. font-weight: 700;
  307. font-size: .9rem;
  308. line-height: 15px;
  309. width: 10rem;
  310. height: 4rem;
  311. font-family: "Barlow";
  312. font-style: normal;
  313. }
  314. .btn-artist {
  315. background: rgba(250, 194, 10, 0.4);
  316. border-radius: 0.5rem;
  317. margin-left: 7vw;
  318. padding: 25px;
  319. gap: 9px;
  320. font-weight: 700;
  321. font-size: .9rem;
  322. line-height: 15px;
  323. height: 4rem;
  324. font-family: "Barlow";
  325. font-style: normal;
  326. }
  327. .btn-manager {
  328. background: rgba(216, 5, 11, 0.4);
  329. border-radius: 0.5rem;
  330. margin-left: 7vw;
  331. padding: 25px;
  332. gap: 9px;
  333. font-weight: 700;
  334. font-size: .9rem;
  335. line-height: 15px;
  336. width: 10rem;
  337. height: 4rem;
  338. font-family: "Barlow";
  339. font-style: normal;
  340. }
  341. </style>