This commit is contained in:
Ladebeze66 2025-02-14 14:25:22 +01:00
parent 3b250b3217
commit 60b0689c26
195 changed files with 136 additions and 266 deletions

View File

@ -1,16 +1,16 @@
"use client"; // ✅ Indique que ce composant fonctionne côté client
"use client";
import { useParams } from "next/navigation"; // ✅ Nouvelle méthode pour récupérer `params`
import { useParams } from "next/navigation";
import { useEffect, useState } from "react";
import ContentSectionCompetencesContainer from "../../components/ContentSectionCompetencesContainer";
export default function CompetencePage() {
const params = useParams(); // ✅ Récupérer `params` correctement
const params = useParams();
const [slug, setSlug] = useState<string | null>(null);
useEffect(() => {
if (params?.slug) {
setSlug(params.slug as string); // ✅ Assurer que `slug` est bien une string
setSlug(params.slug as string);
}
}, [params]);

View File

@ -2,16 +2,15 @@
import { useEffect, useState } from "react";
import Link from "next/link";
import { getApiUrl } from "../utils/getApiUrl"; // 🔥 Import de l'URL dynamique
import CarouselCompetences from "../components/CarouselCompetences"; // 🔥 Import du composant CarouselCompetences
import { getApiUrl } from "../utils/getApiUrl";
import CarouselCompetences from "../components/CarouselCompetences";
export default function Page() {
const [competences, setCompetences] = useState([]); // 🔥 Stocker les compétences une seule fois
const apiUrl = getApiUrl(); // 🔥 Définition de l'URL API
const [competences, setCompetences] = useState([]);
const apiUrl = getApiUrl();
useEffect(() => {
async function fetchCompetences() {
console.log("🔍 API utilisée pour les compétences :", apiUrl);
try {
const response = await fetch(`${apiUrl}/api/competences?populate=*`);
if (!response.ok) {
@ -24,13 +23,13 @@ export default function Page() {
}
}
fetchCompetences(); // 🔥 Exécuter une seule fois au montage du composant
}, [apiUrl]); // Exécuter `useEffect()` uniquement si `apiUrl` change
fetchCompetences();
}, [apiUrl]);
return (
<main className="w-full p-3 mt-5 mb-5">
{/* Affichage d'un message si aucune compétence n'est trouvée */}
{competences.length === 0 ? (
<p className="text-center text-gray-500">Aucune compétence disponible.</p>
) : (
@ -47,7 +46,6 @@ export default function Page() {
key={competence.id}
className="bg-white/70 rounded-lg shadow-md overflow-hidden w-full h-auto flex flex-col transform transition-all duration-300 hover:scale-105 hover:shadow-xl p-4"
>
{/* Lien vers la page de détail de la compétence */}
<Link href={`/competences/${competence.slug}`}>
<div className="overflow-hidden w-full h-64 mb-4">
<CarouselCompetences images={images} className="w-full h-full object-cover" />

View File

@ -1,7 +1,5 @@
import { getApiUrl } from "../../utils/getApiUrl"; // 🔥 Import de l'URL dynamique
// // Composant principal de la page des messages
import { getApiUrl } from "../../utils/getApiUrl";
export default async function MessagesPage() {
// Récupération des messages depuis l'API Strapi
const apiUrl = getApiUrl();
const res = await fetch(`${apiUrl}/api/messages`);
const { data } = await res.json();
@ -11,19 +9,14 @@ export default async function MessagesPage() {
{/* Titre de la page */}
<h1 className="text-3xl font-bold text-center mb-6">📬 Messages reçus</h1>
{/* Affichage d'un message si aucun message n'est reçu */}
{data.length === 0 ? (
<p className="text-center text-gray-600">Aucun message reçu.</p>
) : (
<ul className="space-y-4">
{/* Boucle sur les messages pour les afficher */}
{data.map((msg: any) => (
<li key={msg.id} className="p-4 border rounded shadow">
{/* Affichage du nom et de l'email de l'expéditeur */}
<p><strong>👤 {msg.name}</strong> ({msg.email})</p>
{/* Affichage de la date de réception du message */}
<p>📅 {new Date(msg.createdAt).toLocaleString("fr-FR")}</p>
{/* Affichage du contenu du message */}
<p className="mt-2">{msg.message}</p>
</li>
))}

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Some files were not shown because too many files have changed in this diff Show More