Footer.vue 11 KB

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