diff --git a/assets/app.js b/assets/app.js
index f5efc7a..2cabd8c 100644
--- a/assets/app.js
+++ b/assets/app.js
@@ -1,10 +1,20 @@
-import './styles/app.css';
import React from 'react';
-import { createRoot } from 'react-dom/client';
-import Home from './components/Home.jsx'; // <-- Ajoute .jsx ici !
+import ReactDOM from 'react-dom/client';
+import { BrowserRouter, Routes, Route } from 'react-router-dom';
+// Au lieu de './components/Home'
+import Home from './components/Home.jsx';
+import ConstruireTrajectoire from './components/ConstruireTrajectoire.jsx';
+import './styles/app.css';
-const container = document.getElementById('root');
-if (container) {
- const root = createRoot(container);
- root.render();
+const rootElement = document.getElementById('root'); // ou l'ID de ton conteneur Twig
+if (rootElement) {
+ const root = ReactDOM.createRoot(rootElement);
+ root.render(
+
+
+ } />
+ } />
+
+
+ );
}
\ No newline at end of file
diff --git a/assets/components/CompetencesEvoluer.jsx b/assets/components/CompetencesEvoluer.jsx
new file mode 100644
index 0000000..6aa9edd
--- /dev/null
+++ b/assets/components/CompetencesEvoluer.jsx
@@ -0,0 +1,53 @@
+import React from 'react';
+import '../styles/competences-evoluer.css';
+
+const COMPETENCES_DATA = [
+ {
+ id: 1,
+ title: "Compétences professionnelles",
+ content: "Gestion de projet. Communication. Coordination. Recherche appliquée. Organisation. Développement commercial. Leadership. Gestion durable. Développement durable. Pensée stratégique."
+ },
+ {
+ id: 2,
+ title: "Compétences humaines",
+ content: "Confiance. Autonomie. Résilience. Adaptabilité. Intelligence émotionnelle. Leadership. Collaboration. Prise de décision. Gestion du changement."
+ },
+ {
+ id: 3,
+ title: "Vision systémique",
+ intro: "Comprendre les liens entre :",
+ content: "les individus, les organisations, l'économie, les territoires, les communautés, les projets, et les enjeux de transition."
+ }
+];
+
+export default function CompetencesEvoluer() {
+ return (
+
+
+
+ {/* Trait vert au-dessus */}
+
+
+ {/* En-tête */}
+ Les trajectoires
+
+ Des compétences pour évoluer.
+
+
+ {/* Grille des 3 cartes blanches avec .map() */}
+
+ {COMPETENCES_DATA.map((item) => (
+
+
{item.title}
+ {item.intro && (
+
{item.intro}
+ )}
+
{item.content}
+
+ ))}
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/assets/components/ConstruireTrajectoire.jsx b/assets/components/ConstruireTrajectoire.jsx
new file mode 100644
index 0000000..b3a7113
--- /dev/null
+++ b/assets/components/ConstruireTrajectoire.jsx
@@ -0,0 +1,76 @@
+import React from 'react';
+import heroTrajectoireImg from '../img/img-traject-banner.jpg';
+import HuitTrajectoires from './HuitTrajectoires';
+import HumanEmploymentModel from './HumanEmploymentModel';
+import MethodologieEtapes from './MethodologieEtapes';
+import LearningByDoing from './LearningByDoing';
+import ExemplesProjets from './ExemplesProjets';
+import '../styles/trajectoire.css';
+
+export default function ConstruireTrajectoire() {
+ return (
+
+ {/* 1. Hero */}
+
+
+
+
+
+ Construire sa
+ trajectoire.
+
+
+
Parfois, nous savons exactement où nous voulons aller.
+
Parfois, nous savons simplement que nous ne pouvons plus rester là où nous sommes.
+
Depuis plus de vingt ans, gaea21 accompagne les personnes dans ces moments de transition, d'évolution et de construction.
+
+ );
+}
\ No newline at end of file
diff --git a/assets/components/Header.jsx b/assets/components/Header.jsx
index afb153b..e5ebfad 100644
--- a/assets/components/Header.jsx
+++ b/assets/components/Header.jsx
@@ -1,117 +1,75 @@
-// 1. IMPORTATION DES MODULES ET ASSETS
import React, { useState } from 'react';
-
-// Import du logo gaea21 via Webpack Encore (gestion du hashing et du chemin public)
+import { Link } from 'react-router-dom';
import logo from '../img/logo_gaea21.png';
-/**
- * 2. COMPOSANT PRINCIPAL : Header
- *
- * Rôle fonctionnel :
- * - Fournit la barre de navigation principale (Navbar) fixée ou relative en haut de page.
- * - Gère l'affichage responsive : menu étendu sur desktop, tiroir repliable (drawer) sur mobile.
- * - Propose un bouton d'action principal (« Participer ») pour convertir le visiteur.
- */
export default function Header() {
- /**
- * ÉTAT LOCAL (State) : isOpen
- * - false : le menu mobile est fermé
- * - true : le menu mobile est ouvert (déroulé/visible)
- */
const [isOpen, setIsOpen] = useState(false);
+ const closeMenu = () => {
+ setIsOpen(false);
+ };
+
return (
- /*
- Balise sémantique HTML5 :
- - navbar-container : gère le fond, la bordure inférieure éventuelle,
- la hauteur fixe et le z-index pour rester au-dessus du contenu de la page.
- */
-
- {/*
- Conteneur interne centré :
- - navbar-content : applique un flexbox (justify-content: space-between, align-items: center)
- et borne la largeur maximale avec un padding latéral propre.
- */}
-
- {/* =========================================================
- A. LOGO DE LA MARQUE
- ========================================================= */}
-
+ {/* Logo gaea21 ramenant à l'accueil */}
+
-
+
- {/* =========================================================
- B. BOUTON BURGER (Affiché uniquement sur écrans mobiles)
- ========================================================= */}
+ {/* Bouton burger mobile */}
- {/* =========================================================
- C. MENU DE NAVIGATION (DESKTOP & TIROIR MOBILE)
- ========================================================= */}
- {/*
- La classe 'open' est ajoutée conditionnellement pour déclencher
- l'apparition du tiroir de navigation en version mobile.
- */}
+ {/* Navigation principale */}
diff --git a/assets/components/Home.jsx b/assets/components/Home.jsx
index 796203f..d99342c 100644
--- a/assets/components/Home.jsx
+++ b/assets/components/Home.jsx
@@ -1,82 +1,35 @@
-// 1. IMPORTATION DES DÉPENDANCES ET COMPOSANTS ENFANTS
-import React from 'react';
-
-// Barre de navigation supérieure (Logo, Liens, Boutons d'action)
+import React, { useState } from 'react';
import Header from './Header';
-
-// Section d'accroche principale (Titre fort, boutons d'appel à l'action, visuel héroïque)
import Hero from './Hero';
-
-// Cartes des profils cibles ("Qui êtes-vous ?") : Individus, Entreprises, Institutions, etc.
import ProfileCards from './ProfileCards';
-
-// Section explicative de la méthodologie ("Comment ça fonctionne ?") en 6 étapes + chiffres clés
import Methodology from './Methodology';
-
-// Section de preuve d'impact chiffrée avec fond immersif et carrousel
import Impact from './Impact';
-
-// Section actualités : événements, articles, publications et formulaire de newsletter intermédiaire
import ActualitySection from './ActualitySection';
-
-// Section opportunités et carrières ("Construire des trajectoires, pas seulement des emplois")
import CareersSection from './CareersSection';
-
-// Pied de page complet (Navigation secondaire, réseaux sociaux, newsletter pleine largeur, mentions légales)
import Footer from './Footer';
+import ConstruireTrajectoire from './ConstruireTrajectoire';
-/**
- * 2. COMPOSANT RACINE DE LA PAGE D'ACCUEIL : Home
- *
- * Rôle architectural :
- * - Sert de page principale (Page Component / Container) orchestrant la disposition verticale
- * de toutes les sections de la page d'accueil de gaea21.
- * - Assure une hiérarchie sémantique HTML5 claire pour le référencement (SEO) et l'accessibilité.
- */
export default function Home() {
+ const [view, setView] = useState('home');
+
return (
- /*
- CONTENEUR GLOBAL DE PAGE :
- - relative : sert de référentiel de positionnement pour d'éventuels éléments absolus.
- - min-h-screen : garantit que la page couvre au minimum 100% de la hauteur de la fenêtre (évite les fonds blancs coupés).
- - bg-white : couleur de fond par défaut pour l'ensemble du site.
- - overflow-x-hidden : masque tout débordement horizontal causé par des animations, des bannières pleine largeur ou des marges négatives.
- */
-
- {/*
- A. EN-TÊTE DU SITE
- Balise contenant la navigation principale fixée ou relative en haut de page.
- */}
-
-
- {/*
- B. CONTENU PRINCIPAL DE LA PAGE
- La balise sémantique HTML5 délimite le cœur informationnel unique de la page d'accueil.
- */}
+
- {/* Bannière d'introduction */}
-
-
- {/* Sélection des parcours utilisateurs */}
-
-
- {/* Présentation du modèle "Learning by Doing" */}
-
-
- {/* Statistiques d'impact et résultats sur 20 ans */}
-
-
- {/* Actualités, publications et veille */}
-
-
- {/* Opportunités professionnelles et développement de compétences */}
-
-
- {/* Pied de page et liens institutionnels */}
-
+ {view === 'trajectoire' ? (
+
+ ) : (
+ <>
+
+
+
+
+
+
+
+ >
+ )}
-
);
}
\ No newline at end of file
diff --git a/assets/components/HuitTrajectoires.jsx b/assets/components/HuitTrajectoires.jsx
new file mode 100644
index 0000000..c7cb838
--- /dev/null
+++ b/assets/components/HuitTrajectoires.jsx
@@ -0,0 +1,80 @@
+import React from 'react';
+import heroTrajectoireImg from '../img/img-traject-banner.png';
+import HuitTrajectoires from './HuitTrajectoires';
+import HumanEmploymentModel from './HumanEmploymentModel';
+import MethodologieEtapes from './MethodologieEtapes';
+import LearningByDoing from './LearningByDoing';
+import ExemplesProjets from './ExemplesProjets';
+import CompetencesEvoluer from './CompetencesEvoluer';
+import '../styles/trajectoire.css';
+
+export default function ConstruireTrajectoire() {
+ return (
+
+ {/* 1. Hero */}
+
+
+
+
+
+ Construire sa
+ trajectoire.
+
+
+
Parfois, nous savons exactement où nous voulons aller.
+
Parfois, nous savons simplement que nous ne pouvons plus rester là où nous sommes.
+
Depuis plus de vingt ans, gaea21 accompagne les personnes dans ces moments de transition, d'évolution et de construction.
+
+
+ {/* 3. Les 8 Trajectoires */}
+
+
+ {/* 4. Approche Human Employment Model */}
+
+
+ {/* 5. Méthodologie en 6 Étapes */}
+
+
+ {/* 6. Learning by Doing */}
+
+
+ {/* 7. Exemples de projets */}
+
+
+ {/* 8. Des compétences pour évoluer */}
+
+
+ );
+}
\ No newline at end of file
diff --git a/assets/components/HumanEmploymentModel.jsx b/assets/components/HumanEmploymentModel.jsx
new file mode 100644
index 0000000..a8150a7
--- /dev/null
+++ b/assets/components/HumanEmploymentModel.jsx
@@ -0,0 +1,70 @@
+import React from 'react';
+import '../styles/human-employment.css';
+import hemImg from '../img/human-model-banner.png'; // Adapte le nom de ton image
+
+const PILLIERS_DATA = [
+ {
+ id: 1,
+ title: "La personne",
+ items: ["Ses aspirations.", "Ses motivations.", "Ses besoins.", "Ses valeurs."]
+ },
+ {
+ id: 2,
+ title: "Les compétences",
+ items: ["Celles qu'elle possède déjà.", "Celles qu'elle doit développer."]
+ },
+ {
+ id: 3,
+ title: "L'expérience",
+ items: ["Les projets.", "Les réalisations.", "Les responsabilités."]
+ },
+ {
+ id: 4,
+ title: "Le réseau",
+ items: ["Ses aspirations.", "Ses motivations.", "Ses besoins.", "Ses valeurs."]
+ }
+];
+
+export default function HumanEmploymentModel() {
+ return (
+
+
+
+ {/* Paragraphe descriptif */}
+
+ Chaque parcours est unique et ne peut pas se réduire à un simple intitulé de poste.
+ Nous considérons que les trajectoires durables se construisent lorsque quatre dimensions essentielles s'articulent.
+
+
+ {/* Grille forcée sur 4 colonnes */}
+
+ {PILLIERS_DATA.map((p) => (
+
+
{p.title}
+
+ {p.items.map((it, idx) => (
+
{it}
+ ))}
+
+
+ ))}
+
+
+ {/* Phrase d'accroche */}
+
+ C’est cette approche que nous appelons le Human Employment Model.
+
+
+ {/* Cadre de l'image */}
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/assets/components/LearningByDoing.jsx b/assets/components/LearningByDoing.jsx
new file mode 100644
index 0000000..6c731a4
--- /dev/null
+++ b/assets/components/LearningByDoing.jsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import '../styles/learning-by-doing.css';
+import plantBannerImg from '../img/learning-by-doing.png'; // ou learning-by-doing.png
+
+export default function LearningByDoing() {
+ return (
+
+
+
+ {/* Trait vert au-dessus */}
+
+
+ {/* Surtitre */}
+ Les trajectoires
+
+ {/* Titre principal */}
+
+ Le Learning by Doing au cœur de l'expérience.
+
+
+ {/* Paragraphe descriptif conforme au Figma */}
+
+ Depuis plus de vingt ans, gaea21 accompagne les personnes dans ces moments de transition, d'évolution et de construction.
+ Non pas en leur proposant une solution unique, mais en les aidant à comprendre leur situation, identifier leurs forces,
+ développer leurs compétences, acquérir de l'expérience et construire une trajectoire cohérente avec leurs aspirations et la réalité du monde qui les entoure.
+
+
+ {/* Image bannière arrondie */}
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/assets/components/MethodologieEtapes.jsx b/assets/components/MethodologieEtapes.jsx
new file mode 100644
index 0000000..d5c3e64
--- /dev/null
+++ b/assets/components/MethodologieEtapes.jsx
@@ -0,0 +1,87 @@
+import React from 'react';
+import '../styles/methodologie-etapes.css';
+
+// Import des 6 icônes
+import iconSearch from '../img/Search.png';
+import iconUser from '../img/User Account.png';
+import iconWrench from '../img/Frame 715.png';
+import iconPlant from '../img/Tree Planting.png';
+import iconElectrical from '../img/Electrical.png';
+import iconCycle from '../img/Frame 719.png';
+
+const ETAPES_DATA = [
+ {
+ step: "01",
+ title: "Comprendre",
+ description: "Identifier votre situation, vos aspirations, vos compétences et vos besoins.",
+ icon: iconSearch,
+ hasCircleBg: false // L'icône est brute, on lui applique le cercle CSS
+ },
+ {
+ step: "02",
+ title: "Structurer",
+ description: "Construire une trajectoire réaliste, progressive et durable.",
+ icon: iconUser,
+ hasCircleBg: false
+ },
+ {
+ step: "03",
+ title: "Expérimenter",
+ description: "Développer des compétences à travers des projets réels.",
+ icon: iconWrench,
+ hasCircleBg: true // Frame 715 contient déjà son cercle de fond
+ },
+ {
+ step: "04",
+ title: "Développer",
+ description: "Renforcer son autonomie, ses capacités d'action et son leadership.",
+ icon: iconPlant,
+ hasCircleBg: false
+ },
+ {
+ step: "05",
+ title: "Connecter",
+ description: "S'inscrire dans un écosystème bienveillant et activer son réseau.",
+ icon: iconElectrical,
+ hasCircleBg: false
+ },
+ {
+ step: "06",
+ title: "Évoluer",
+ description: "Mesurer l'impact de sa transition et pérenniser son parcours.",
+ icon: iconCycle,
+ hasCircleBg: true // Frame 719 contient déjà son cercle de fond
+ }
+];
+
+export default function MethodologieEtapes() {
+ return (
+
+