import { fetchData } from "../utils/fetchData"; // Importation de la fonction fetchData pour récupérer les données depuis l'API import Carousel from "./Carousel"; // Importation du composant Carousel pour afficher les images import ReactMarkdown from "react-markdown"; // Importation de ReactMarkdown pour rendre le texte riche en Markdown // Définition des propriétés du composant ContentSection interface ContentSectionProps { collection: string; // Nom de la collection (projects, events, blog, etc.) slug: string; // Identifiant unique pour récupérer les données spécifiques titleClass?: string; // Permet de modifier le style du titre contentClass?: string; // Permet de modifier le style du contenu } // Composant principal ContentSection export default async function ContentSection({ collection, slug, titleClass, contentClass }: ContentSectionProps) { // Récupération des données depuis l'API en utilisant la fonction fetchData const data = await fetchData(collection, slug); // Affichage d'un message si les données ne sont pas disponibles if (!data) { return
Contenu introuvable.
; } // Déstructuration des données récupérées const { name, Resum: richText, picture, link, linkText } = data; // Transformation des images de Strapi en format attendu par le carrousel const images = picture?.map((img: any) => ({ url: `http://localhost:1337${img?.formats?.large?.url || img?.url}`, // Utilisation de l'URL de l'image en format large ou originale alt: img.name || "Image", // Texte alternatif pour l'image })) || []; return (
{/* Titre de la section */}

{name}

{/* Carrousel réutilisable pour afficher les images */} {/* Contenu en Markdown */}
{richText}
{/* Lien externe */} {link && (
{linkText || "Voir plus/lien externe"}
)}
); }