Footer.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500
  1. <template>
  2. <!--suppress VueUnrecognizedDirective -->
  3. <footer
  4. ref="footerElement"
  5. v-intersect="onIntersect"
  6. >
  7. <LayoutContainer>
  8. <div >
  9. <v-row>
  10. <v-col
  11. :cols="mdAndDown ? 12 : 3"
  12. :class="mdAndDown ? 'logo-container' : 'flex-container'"
  13. >
  14. <nuxt-link to="/">
  15. <v-img
  16. :class="mdAndDown ? 'logo-md' : 'logo'"
  17. src="/images/logo/footer-logo.png"
  18. />
  19. </nuxt-link>
  20. </v-col>
  21. <v-col cols=" 2" v-if="!mdAndDown">
  22. <v-row class="title-link">
  23. <h5 class="ml-12 mt-10 h5-title">Agenda culturel</h5>
  24. </v-row>
  25. <v-row>
  26. <router-link to="/annuaire" class="small-link ml-12"
  27. >Annuaire</router-link
  28. >
  29. </v-row>
  30. <v-row>
  31. <router-link to="/actualites" class="small-link ml-12"
  32. >Actualités</router-link
  33. >
  34. </v-row>
  35. <v-row>
  36. <router-link to="/annonces" class="small-link ml-12"
  37. >Annonces</router-link
  38. >
  39. </v-row>
  40. </v-col>
  41. <v-col cols="2" v-if="!mdAndDown">
  42. <v-row class="title-link">
  43. <h5 class="ml-12 mt-10 h5-title">Logiciels culturels</h5>
  44. </v-row>
  45. <v-row>
  46. <router-link to="/opentalent_artist" class="small-link ml-12"
  47. >Opentalent Artist</router-link
  48. >
  49. </v-row>
  50. <v-row>
  51. <router-link to="/opentalent_school" class="small-link ml-12"
  52. >Opentalent School</router-link
  53. >
  54. </v-row>
  55. <v-row>
  56. <router-link to="/opentalent_manager" class="small-link ml-12"
  57. >Opentalent Manager</router-link
  58. >
  59. </v-row>
  60. </v-col>
  61. <v-col cols="2" v-if="!mdAndDown">
  62. <v-row class="title-link">
  63. <h5 class="ml-12 mt-8 h5-title">Espace client</h5>
  64. </v-row>
  65. <v-row>
  66. <NuxtLink
  67. to="https://ressources.opentalent.fr/display/FAQ/Accueil"
  68. class="small-link ml-12"
  69. >Foire Aux Questions</NuxtLink
  70. >
  71. </v-row>
  72. <v-row>
  73. <NuxtLink
  74. to="https://ressources.opentalent.fr/"
  75. class="small-link ml-12"
  76. target="_blank"
  77. >Support en ligne</NuxtLink
  78. >
  79. </v-row>
  80. <v-row>
  81. <NuxtLink
  82. to="/nous-contacter"
  83. class="small-link ml-12"
  84. target="_blank"
  85. >Nous contacter</NuxtLink
  86. >
  87. </v-row>
  88. </v-col>
  89. <v-col cols="3" v-if="!mdAndDown">
  90. <v-row class="title-link">
  91. <h5 class="ml-12 mt-10 h5-title">Suivez-nous</h5>
  92. </v-row>
  93. <v-row class="ml-5" no-gutters>
  94. <v-col cols="2">
  95. <a
  96. href="https://www.facebook.com/opentalent"
  97. target="_blank"
  98. class="fab fa-facebook brand"
  99. />
  100. </v-col>
  101. <v-col cols="2">
  102. <a
  103. href="https://twitter.com/Opentalent_FRA"
  104. target="_blank"
  105. class="fa-brands fa-square-twitter brand"
  106. />
  107. </v-col>
  108. <v-col cols="2">
  109. <a
  110. href="https://www.linkedin.com/company/2iopenservice"
  111. target="_blank"
  112. class="fab fa-linkedin brand"
  113. />
  114. </v-col>
  115. <v-col cols="2">
  116. <a
  117. href="https://www.youtube.com/@Opentalent74300"
  118. target="_blank"
  119. class="fab fa-youtube brand"
  120. />
  121. </v-col>
  122. </v-row>
  123. </v-col>
  124. </v-row>
  125. <v-row class="justify-center" v-if="mdAndDown">
  126. <v-col cols="12" class="text-center">
  127. <a
  128. href="https://www.facebook.com/opentalent"
  129. target="_blank"
  130. class="fab fa-facebook brand-md"
  131. />
  132. <a
  133. href="https://twitter.com/Opentalent_FRA"
  134. target="_blank"
  135. class="fa-brands fa-square-twitter brand-md"
  136. />
  137. <a
  138. href="https://www.linkedin.com/company/2iopenservice"
  139. target="_blank"
  140. class="fab fa-linkedin brand-md"
  141. />
  142. <a
  143. href="https://www.youtube.com/@Opentalent74300"
  144. target="_blank"
  145. class="fab fa-youtube brand-md"
  146. />
  147. </v-col>
  148. </v-row>
  149. </div>
  150. <v-row v-if="mdAndDown">
  151. <v-col cols="12" >
  152. <div v-for="(item, index) in footerLinks" :key="index">
  153. <v-container>
  154. <div class="link-md d-flex justify-space-between align-left" @click="toggle(index)">
  155. {{ item.label }}
  156. <v-icon>
  157. {{
  158. isActive(index) ? "fas fa-chevron-up" : "fas fa-chevron-down"
  159. }}
  160. </v-icon>
  161. </div>
  162. <div class="answer" v-if="isActive(index)">
  163. <div
  164. v-for="(sublink, sublinkIndex) in item.sublink"
  165. :key="sublinkIndex"
  166. class="mt-3"
  167. >
  168. <NuxtLink class="small-link-sm" :to="sublink.link">{{ sublink.label }}</NuxtLink>
  169. </div>
  170. </div>
  171. </v-container>
  172. </div>
  173. </v-col>
  174. </v-row>
  175. <v-row :class="mdAndDown ? '' : 'footer'" justify="center">
  176. <p class="mt-6">
  177. <a class="mention" href="/mentions-legales" target="_blank"
  178. >Mentions légales</a
  179. >
  180. -
  181. <a class="mention" href="/politiques-de-cookies" target="_blank"
  182. >Politiques de cookies</a
  183. >
  184. -
  185. <a class="mention" href="/CGV" target="_blank"
  186. >Conditions Générales de Ventes</a
  187. >
  188. </p>
  189. </v-row>
  190. <v-row justify="center" class="mb-6">
  191. <p class="mention">2024 &copy; Tous droits réservés par Opentalent</p>
  192. </v-row>
  193. </LayoutContainer>
  194. </footer>
  195. </template>
  196. <script setup>
  197. import { useDisplay } from "vuetify";
  198. import { ref, provide } from "vue";
  199. import { useLayoutStore } from "~/stores/layoutStore";
  200. const footerElement = ref(null);
  201. const footerLinks = ref([
  202. {
  203. label: "AGENDA CULTUREL",
  204. sublink: [
  205. {
  206. label: "Annuaire",
  207. link: "/annuaire",
  208. },
  209. {
  210. label: "Actualités",
  211. link: "/actualites",
  212. },
  213. {
  214. label: "Annonces",
  215. link: "/annonces",
  216. },
  217. ],
  218. },
  219. {
  220. label: "LOGICIELS CULTURELS ",
  221. sublink: [
  222. {
  223. label: "Opentalent Artist",
  224. link: "/opentalent_artist)",
  225. },
  226. {
  227. label: "Opentalent School",
  228. link: "/opentalent_school",
  229. },
  230. {
  231. label: "Opentalent Manager",
  232. link: "/opentalent_manager",
  233. },
  234. ],
  235. },
  236. {
  237. label: "À PROPOS ",
  238. sublink: [
  239. {
  240. label: "Qui sommes-nous",
  241. link: "/qui-sommes-nous)",
  242. },
  243. {
  244. label: "Nous rejoindre",
  245. link: "/nous-rejoindre",
  246. },
  247. {
  248. label: "Nous contacter",
  249. link: "/nous-contacter",
  250. },
  251. ],
  252. },
  253. {
  254. label: "ESPACE CLIENT ",
  255. sublink: [
  256. {
  257. label: "Foire Aux Questions ",
  258. link: "/ https://ressources.opentalent.fr/)",
  259. },
  260. {
  261. label: "Support en ligne ",
  262. link: "/https://ressources.opentalent.fr/?contact",
  263. },
  264. {
  265. label: "Nous contacter ",
  266. link: "/nous-contacter",
  267. },
  268. ],
  269. },
  270. ]);
  271. const activeIndex = ref(-1);
  272. function toggle(index) {
  273. activeIndex.value = activeIndex.value === index ? -1 : index;
  274. }
  275. function isActive(index) {
  276. return activeIndex.value === index;
  277. }
  278. provide("footerElement", footerElement);
  279. const { mdAndDown } = useDisplay();
  280. const layoutStore = useLayoutStore()
  281. const onIntersect = (isIntersecting) => {
  282. layoutStore.setIsFooterVisible(isIntersecting)
  283. }
  284. </script>
  285. <style scoped>
  286. .jusitfy-center {
  287. justify-content: center;
  288. }
  289. .logo-md {
  290. width: 18rem;
  291. }
  292. .logo-container {
  293. display: flex;
  294. justify-content: center;
  295. align-items: center;
  296. }
  297. .mention {
  298. text-decoration: none;
  299. color: #ffffff;
  300. font-size: 0.8rem;
  301. }
  302. .brand {
  303. color: #ecfbfc;
  304. font-size: 1.9rem;
  305. text-decoration: none !important;
  306. }
  307. .brand-md {
  308. color: #ecfbfc;
  309. font-size: 3rem;
  310. text-decoration: none !important;
  311. margin: 0 1rem;
  312. }
  313. /* .flex-container {
  314. display: flex;
  315. flex-direction: column;
  316. justify-content: space-between;
  317. } */
  318. .vertical-bar {
  319. height: 4rem;
  320. border: 0.1rem solid #ecfbfc;
  321. margin-left: 10px;
  322. margin-top: 3rem;
  323. }
  324. .right-reserved {
  325. color: rgba(255, 255, 255, 0.6);
  326. font-family: Space Grotesk;
  327. font-size: 0.6rem;
  328. letter-spacing: 1px;
  329. }
  330. .h5-title {
  331. font-size: 1.1rem;
  332. font-style: normal;
  333. letter-spacing: 1.2px;
  334. text-transform: uppercase;
  335. }
  336. .link-md {
  337. display: flex;
  338. flex-direction: row;
  339. text-align: left;
  340. text-transform: uppercase;
  341. font-family: "Barlow";
  342. font-style: normal;
  343. font-weight: 700;
  344. font-size: 1.5rem;
  345. border-bottom: 1px solid rgba(255, 255, 255, 0.3);
  346. }
  347. .logo-opentalent-md {
  348. display: flex;
  349. justify-content: center;
  350. align-items: center;
  351. }
  352. .icon:nth-child(2) {
  353. margin-left: 10px;
  354. }
  355. .title-link,
  356. .title-link-sm {
  357. font-family: "Barlow";
  358. font-style: normal;
  359. font-weight: 500;
  360. font-size: 1rem;
  361. line-height: 20px;
  362. margin-bottom: 1rem;
  363. }
  364. .title-link-sm {
  365. margin-bottom: 0.1rem;
  366. }
  367. .small-link-sm {
  368. font-family: "Barlow";
  369. font-style: normal;
  370. font-weight: 300;
  371. font-size: 1.3rem;
  372. line-height: 20px;
  373. color: #ffffff;
  374. text-decoration: none !important;
  375. text-align: left;
  376. }
  377. .small-link {
  378. font-family: "Barlow";
  379. font-style: normal;
  380. font-weight: 300;
  381. font-size: 0.9rem;
  382. line-height: 20px;
  383. color: #ffffff;
  384. text-decoration: none !important;
  385. margin-bottom: 0.5rem;
  386. }
  387. .container {
  388. background: #091d20;
  389. color: aliceblue;
  390. }
  391. .activities {
  392. height: 12rem;
  393. background: #091d20;
  394. border-bottom: 0.4px solid rgba(255, 255, 255, 0.3);
  395. box-shadow: 0px 3px 24px rgba(0, 0, 0, 0.07);
  396. }
  397. .footer {
  398. margin-top: 2rem;
  399. border-top: 0.4px solid rgba(255, 255, 255, 0.3);
  400. box-shadow: 0px 3px 24px rgba(0, 0, 0, 0.07);
  401. }
  402. .logo {
  403. margin-bottom: 3rem;
  404. width: 25rem;
  405. }
  406. .logo-jaune {
  407. margin-left: 307.74px;
  408. }
  409. .logo-rouge {
  410. margin-left: 117px;
  411. }
  412. .logo-bleu {
  413. margin-left: 91.74px;
  414. }
  415. .text-logo-jaune {
  416. margin-left: 10rem;
  417. font-family: "Barlow";
  418. font-style: normal;
  419. font-weight: 500;
  420. font-size: 14px;
  421. line-height: 18px;
  422. display: flex;
  423. align-items: center;
  424. color: #ecfbfc;
  425. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.25),
  426. 0px 4px 4px rgba(0, 0, 0, 0.25);
  427. }
  428. .text-logo-rouge {
  429. margin-left: 37.74px;
  430. font-family: "Barlow";
  431. font-style: normal;
  432. font-weight: 500;
  433. font-size: 14px;
  434. line-height: 18px;
  435. display: flex;
  436. align-items: center;
  437. color: #ecfbfc;
  438. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.25),
  439. 0px 4px 4px rgba(0, 0, 0, 0.25);
  440. }
  441. .text-logo-bleu {
  442. height: 24px;
  443. left: 897px;
  444. top: 7858px;
  445. margin-left: 25.74px;
  446. font-family: "Barlow";
  447. font-style: normal;
  448. font-weight: 500;
  449. font-size: 14px;
  450. line-height: 18px;
  451. display: flex;
  452. align-items: center;
  453. color: #ecfbfc;
  454. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.25),
  455. 0px 4px 4px rgba(0, 0, 0, 0.25);
  456. }
  457. </style>