"use client"; import { useState } from "react"; import { createPortal } from "react-dom"; // Importation de createPortal pour les modals import { Swiper, SwiperSlide } from "swiper/react"; import { Navigation, Pagination, Autoplay } from "swiper/modules"; import "swiper/css"; import "swiper/css/navigation"; import "swiper/css/pagination"; interface CarouselProps { images: Array<{ url: string; alt: string }>; // Propriétés des images du carrousel className?: string; // Classe CSS optionnelle pour personnaliser le style } export default function CarouselCompetences({ images, className }: CarouselProps) { const [selectedImage, setSelectedImage] = useState(null); // État pour l'image sélectionnée return ( <> {/* Carrousel compétences */}
{/* Boucle sur les images pour les afficher dans le carrousel */} {images.map((img, index) => ( {/* Image cliquable pour affichage en plein écran */} {img.alt} setSelectedImage(img.url)} // Ouvre l’image en plein écran /> ))}
{/* Modal plein écran pour agrandir les images */} {selectedImage && createPortal(
setSelectedImage(null)} // Fermer au clic >
{/* Bouton de fermeture */} {/* Image affichée en grand */} Agrandissement
, document.body )} ); }