Footer.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449
  1. <template>
  2. <!--suppress VueUnrecognizedDirective -->
  3. <footer v-intersect="onIntersect">
  4. <LayoutContainer>
  5. <div>
  6. <v-row>
  7. <!-- Première section : Logo Opentalent -->
  8. <v-col cols="12" lg="3" class="logo">
  9. <nuxt-link to="/">
  10. <v-img src="/images/logo/footer-logo.png" />
  11. </nuxt-link>
  12. </v-col>
  13. <!-- Deuxième section : liens agenda culturel (écrans larges seulement) -->
  14. <v-col v-if="mdAndUp" cols="7" >
  15. <v-row>
  16. <v-col cols="3">
  17. <v-row>
  18. <h5>
  19. Agenda culturel
  20. </h5>
  21. </v-row>
  22. <v-row>
  23. <AgendaLink href="/annuaire">
  24. Annuaire
  25. </AgendaLink>
  26. </v-row>
  27. <v-row>
  28. <AgendaLink href="/actualites">
  29. Actualités
  30. </AgendaLink>
  31. </v-row>
  32. <v-row>
  33. <AgendaLink href="/annonces">
  34. Annonces
  35. </AgendaLink>
  36. </v-row>
  37. </v-col>
  38. <!-- Troisième section : liens logiciels culturels (écrans larges seulement) -->
  39. <v-col cols="3">
  40. <v-row>
  41. <h5>
  42. Logiciels culturels
  43. </h5>
  44. </v-row>
  45. <v-row>
  46. <nuxt-link to="/opentalent_artist">
  47. Opentalent Artist
  48. </nuxt-link>
  49. </v-row>
  50. <v-row>
  51. <nuxt-link to="/opentalent_school">
  52. Opentalent School
  53. </nuxt-link
  54. >
  55. </v-row>
  56. <v-row>
  57. <nuxt-link to="/opentalent_manager">
  58. Opentalent Manager
  59. </nuxt-link>
  60. </v-row>
  61. </v-col>
  62. <!-- Quatrième section : A propos (écrans larges seulement) -->
  63. <v-col cols="3">
  64. <v-row>
  65. <h5>
  66. A PROPOS
  67. </h5>
  68. </v-row>
  69. <v-row>
  70. <nuxt-link to="/qui-sommes-nous">
  71. Qui sommes-nous
  72. </nuxt-link>
  73. </v-row>
  74. <v-row>
  75. <nuxt-link to="/nous-rejoindre">
  76. Nous rejoindre
  77. </nuxt-link
  78. >
  79. </v-row>
  80. <v-row>
  81. <nuxt-link to="/nous-contacter">
  82. Nous contacter
  83. </nuxt-link>
  84. </v-row>
  85. </v-col>
  86. <!-- Cinquième section : liens espace client (écrans larges seulement) -->
  87. <v-col cols="3">
  88. <v-row>
  89. <h5>
  90. Espace client
  91. </h5>
  92. </v-row>
  93. <v-row>
  94. <nuxt-link href="https://ressources.opentalent.fr/display/FAQ/Accueil" target="_blank">
  95. Foire Aux Questions
  96. </nuxt-link>
  97. </v-row>
  98. <v-row>
  99. <nuxt-link href="https://ressources.opentalent.fr/" target="_blank">
  100. Support en ligne
  101. </nuxt-link>
  102. </v-row>
  103. <v-row>
  104. <nuxt-link to="/nous-contacter" target="_blank" >
  105. Nous contacter
  106. </nuxt-link>
  107. </v-row>
  108. </v-col>
  109. </v-row>
  110. </v-col>
  111. <!-- Sixième section : liens réseaux sociaux (écrans larges seulement) -->
  112. <v-col v-if="mdAndUp" cols="2">
  113. <v-row class="justify-center">
  114. <h5>
  115. Suivez-nous
  116. </h5>
  117. </v-row>
  118. <v-row class="justify-center social-networks">
  119. <v-col cols="2">
  120. <nuxt-link
  121. href="https://www.facebook.com/opentalent"
  122. target="_blank"
  123. class="fab fa-square-facebook"
  124. />
  125. </v-col>
  126. <v-col cols="2">
  127. <nuxt-link
  128. href="https://twitter.com/Opentalent_FRA"
  129. target="_blank"
  130. class="fa-brands fa-square-x-twitter"
  131. />
  132. </v-col>
  133. <v-col cols="2">
  134. <nuxt-link
  135. href="https://www.linkedin.com/company/2iopenservice"
  136. target="_blank"
  137. class="fab fa-linkedin"
  138. />
  139. </v-col>
  140. <v-col cols="2">
  141. <nuxt-link
  142. href="https://www.youtube.com/@Opentalent74300"
  143. target="_blank"
  144. class="fab fa-square-youtube"
  145. />
  146. </v-col>
  147. </v-row>
  148. </v-col>
  149. </v-row>
  150. <!-- Deuxième section alt : version petits écrans -->
  151. <v-row
  152. v-if="mdAndDown"
  153. class="justify-center social-networks"
  154. >
  155. <!-- TODO: voir si faisable de fusionner avec la section précédente -->
  156. <v-col cols="12" class="text-center">
  157. <nuxt-link
  158. href="https://www.facebook.com/opentalent"
  159. target="_blank"
  160. class="fab fa-square-facebook"
  161. />
  162. <nuxt-link
  163. href="https://twitter.com/Opentalent_FRA"
  164. target="_blank"
  165. class="fa-brands fa-square-x-twitter"
  166. />
  167. <nuxt-link
  168. href="https://www.linkedin.com/company/2iopenservice"
  169. target="_blank"
  170. class="fab fa-linkedin"
  171. />
  172. <nuxt-link
  173. href="https://www.youtube.com/@Opentalent74300"
  174. target="_blank"
  175. class="fab fa-square-youtube"
  176. />
  177. </v-col>
  178. </v-row>
  179. </div>
  180. <!-- Troisième section alt : version petits écrans -->
  181. <!-- <v-row v-if="mdAndDown">-->
  182. <!-- <v-col cols="12" >-->
  183. <!-- <div v-for="(item, index) in footerLinks" :key="index">-->
  184. <!-- <v-container>-->
  185. <!-- <div class="section" @click="toggleSection(index)">-->
  186. <!-- <div class="d-flex flex-row justify-space-between">-->
  187. <!-- {{ item.label }}-->
  188. <!-- <v-icon-->
  189. <!-- :icon="isActive(index) ? 'fas fa-chevron-up' : 'fas fa-chevron-down'"-->
  190. <!-- />-->
  191. <!-- </div>-->
  192. <!-- <div-->
  193. <!-- v-show="isActive(index)"-->
  194. <!-- v-for="(sublink, sublinkIndex) in item.sublink"-->
  195. <!-- :key="sublinkIndex"-->
  196. <!-- class="mt-3"-->
  197. <!-- >-->
  198. <!-- <nuxt-link :href="sublink.link">-->
  199. <!-- {{ sublink.label }}-->
  200. <!-- </nuxt-link>-->
  201. <!-- </div>-->
  202. <!-- </div>-->
  203. <!-- </v-container>-->
  204. <!-- </div>-->
  205. <!-- </v-col>-->
  206. <!-- </v-row>-->
  207. <div class="footnotes">
  208. <v-row justify="center">
  209. <p class="mt-6">
  210. <nuxt-link to="/mentions-legales">
  211. Mentions légales
  212. </nuxt-link>
  213. -
  214. <nuxt-link to="/politique-de-confidentialite-et-protection-des-donnees-personnelles">
  215. Politiques de cookies
  216. </nuxt-link>
  217. -
  218. <nuxt-link to="/CGV">
  219. Conditions Générales de Ventes
  220. </nuxt-link>
  221. </p>
  222. </v-row>
  223. <v-row class="mb-6" justify="center">
  224. <p>
  225. 2024 &copy; Tous droits réservés par Opentalent
  226. </p>
  227. </v-row>
  228. </div>
  229. </LayoutContainer>
  230. </footer>
  231. </template>
  232. <script setup>
  233. import { useDisplay } from "vuetify";
  234. import { useLayoutStore } from "~/stores/layoutStore";
  235. import AgendaLink from "~/components/Common/AgendaLink.vue";
  236. const { mdAndDown, mdAndUp } = useDisplay();
  237. const footerLinks = ref([
  238. {
  239. label: "AGENDA CULTUREL",
  240. sublink: [
  241. {
  242. label: "Annuaire",
  243. link: "/annuaire",
  244. },
  245. {
  246. label: "Actualités",
  247. link: "/actualites",
  248. },
  249. {
  250. label: "Annonces",
  251. link: "/annonces",
  252. },
  253. ],
  254. },
  255. {
  256. label: "LOGICIELS CULTURELS ",
  257. sublink: [
  258. {
  259. label: "Opentalent Artist",
  260. link: "/opentalent_artist",
  261. },
  262. {
  263. label: "Opentalent School",
  264. link: "/opentalent_school",
  265. },
  266. {
  267. label: "Opentalent Manager",
  268. link: "/opentalent_manager",
  269. },
  270. ],
  271. },
  272. {
  273. label: "À PROPOS ",
  274. sublink: [
  275. {
  276. label: "Qui sommes-nous",
  277. link: "/qui-sommes-nous",
  278. },
  279. {
  280. label: "Nous rejoindre",
  281. link: "/nous-rejoindre",
  282. },
  283. {
  284. label: "Nous contacter",
  285. link: "/nous-contacter",
  286. },
  287. ],
  288. },
  289. {
  290. label: "ESPACE CLIENT ",
  291. sublink: [
  292. {
  293. label: "Foire Aux Questions ",
  294. link: "/ https://ressources.opentalent.fr",
  295. },
  296. {
  297. label: "Support en ligne ",
  298. link: "/https://ressources.opentalent.fr/?contact",
  299. },
  300. {
  301. label: "Nous contacter ",
  302. link: "/nous-contacter",
  303. },
  304. ],
  305. },
  306. ]);
  307. const activeIndex = ref(-1);
  308. function toggleSection(index) {
  309. activeIndex.value = activeIndex.value === index ? -1 : index;
  310. }
  311. function isActive(index) {
  312. return activeIndex.value === index;
  313. }
  314. const layoutStore = useLayoutStore()
  315. const onIntersect = (isIntersecting) => {
  316. layoutStore.setIsFooterVisible(isIntersecting)
  317. }
  318. </script>
  319. <style scoped lang="scss">
  320. .container {
  321. background: var(--primary-color);
  322. color: var(--on-primary-color);
  323. }
  324. .logo .v-img {
  325. margin-bottom: 3rem;
  326. width: 300px;
  327. height: 100px;
  328. }
  329. .v-col {
  330. padding: 12px;
  331. }
  332. .container {
  333. padding-top: 32px;
  334. }
  335. h5 {
  336. font-weight: 500;
  337. line-height: 20px;
  338. margin-top: 20px;
  339. margin-bottom: 1rem;
  340. font-size: 1.1rem;
  341. letter-spacing: 1.2px;
  342. text-transform: uppercase;
  343. }
  344. a {
  345. font-weight: 300;
  346. font-size: 0.9rem;
  347. line-height: 20px;
  348. color: var(--on-primary-color);
  349. text-decoration: none !important;
  350. margin-bottom: 0.5rem;
  351. }
  352. .social-networks {
  353. a {
  354. color: var(--on-primary-color);
  355. font-size: 1.9rem;
  356. text-decoration: none !important;
  357. }
  358. }
  359. .footnotes {
  360. border-top: 0.4px solid var(--neutral-color-alt-strong);
  361. box-shadow: 0 3px 24px rgba(0, 0, 0, 0.07);
  362. a, p {
  363. text-decoration: none;
  364. color: var(--on-primary-color);
  365. font-size: 0.8rem;
  366. }
  367. }
  368. @media (max-width: 960px) {
  369. .logo {
  370. display: flex;
  371. justify-content: center;
  372. align-items: center;
  373. height: 140px;
  374. }
  375. .logo .v-img {
  376. width: 18rem;
  377. }
  378. .social-networks {
  379. a {
  380. font-size: 3rem;
  381. margin: 0 1rem;
  382. }
  383. }
  384. .section {
  385. display: flex;
  386. flex-direction: column;
  387. justify-content: space-between;
  388. text-align: left;
  389. font-weight: 700;
  390. font-size: 1.5rem;
  391. cursor: pointer;
  392. >div:first-child {
  393. border-bottom: 1px solid var(--on-secondary-color);
  394. padding-bottom: 6px;
  395. text-transform: uppercase;
  396. }
  397. a {
  398. font-weight: 300;
  399. font-size: 1.3rem;
  400. line-height: 20px;
  401. color: var(--on-primary-color);
  402. text-decoration: none !important;
  403. text-align: left;
  404. }
  405. }
  406. .footnotes {
  407. border: none;
  408. }
  409. }
  410. </style>