diff --git a/src/lib/contentful.ts b/src/lib/contentful.ts index f61bdd0..a3eac16 100644 --- a/src/lib/contentful.ts +++ b/src/lib/contentful.ts @@ -106,3 +106,13 @@ export const fetchEvenement = async (slug: string) => { return evenementFromContentfull(entries.items[0]!) } + +export const fetchAllEvenements = async () => { + const entries = await contentfulClient.getEntries({ + content_type: "evenement", + }); + + return sortByDate(entries.items) + .map(evenementFromContentfull) + .reverse() // Plus récents en premier +} diff --git a/src/pages/evenements.astro b/src/pages/evenements.astro index 13693be..1b6a839 100644 --- a/src/pages/evenements.astro +++ b/src/pages/evenements.astro @@ -31,6 +31,12 @@ const evenementsPassés = await fetchEvenementsPassés()

)} + + @@ -64,4 +70,28 @@ const evenementsPassés = await fetchEvenementsPassés() font-weight: 500; } + .albums-link { + text-align: center; + margin: 3rem 0 2rem; + } + + .voir-tous-albums { + display: inline-block; + padding: 0.75rem 1.5rem; + background-color: orange; + color: white; + text-decoration: none; + border: black solid 2px; + border-radius: 0.4rem; + font-weight: bold; + box-shadow: 0.2em 0.2em 0.5em rgba(0,0,0,0.3); + transition: all 0.3s ease; + } + + .voir-tous-albums:hover { + background-color: darkorange; + transform: translateY(-2px); + box-shadow: 0.3em 0.3em 0.7em rgba(0,0,0,0.4); + } + \ No newline at end of file diff --git a/src/pages/evenements/[slug].astro b/src/pages/evenements/[slug].astro index d471396..0d11bce 100644 --- a/src/pages/evenements/[slug].astro +++ b/src/pages/evenements/[slug].astro @@ -1,7 +1,7 @@ --- import type { Document } from '@contentful/rich-text-types'; import { documentToHtmlString } from "@contentful/rich-text-html-renderer"; -import {fetchEvenement, fetchEvenements} from "../../lib/contentful"; +import {fetchEvenement, fetchAllEvenements} from "../../lib/contentful"; import Layout from "../../layouts/Layout.astro"; import Card from "../../components/Card.astro"; @@ -9,12 +9,32 @@ export const prerender = false const {slug} = Astro.params -const { nom, description, date, lieu, lieuUrl, affiche, album } = await fetchEvenement(slug) +const evenement = await fetchEvenement(slug) +const { nom, description, date, lieu, lieuUrl, affiche, album } = evenement + +// Récupération de tous les événements pour la navigation +const tousEvenements = await fetchAllEvenements() +const currentIndex = tousEvenements.findIndex(e => e.slug === slug) +const evenementPrecedent = currentIndex > 0 ? tousEvenements[currentIndex - 1] : null +const evenementSuivant = currentIndex < tousEvenements.length - 1 ? tousEvenements[currentIndex + 1] : null const Wrapper = lieuUrl ? 'a' : 'div' --- + +

{nom}

{affiche && `Affiche} @@ -43,6 +63,19 @@ const Wrapper = lieuUrl ? 'a' : 'div' )}
+ +