SPB Git

Repository Public

App.tsx 2.4 KB 61 lines tsx

1/**2 * =============================================================================3 * Job·Ka — Groupe KA4 * Auteur  : Simon-Pierre Boucher5 * Contact : contact@spboucher.ai6 * Fichier : frontend/src/App.tsx7 * Rôle    : Gabarit global (en-tête, navigation, routes, pied de page)8 * Créé    : 2026-08-17   Modifié : 2026-08-179 * =============================================================================10 */11import { lazy, Suspense } from "react";12import { NavLink, Route, Routes } from "react-router-dom";13import Home from "./pages/Home";14import JobPage from "./pages/Job";15import Sources from "./pages/Sources";16import Stats from "./pages/Stats";1718// MapLibre pèse ~700 kB : chargé uniquement quand on visite /carte19const MapPage = lazy(() => import("./pages/MapPage"));2021export default function App() {22  return (23    <>24      <header className="site">25        <div className="container">26          <NavLink to="/" className="logo">Job<em>·</em>Ka</NavLink>27          <nav className="main">28            <NavLink to="/" end className={({ isActive }) => (isActive ? "active" : "")}>Offres</NavLink>29            <NavLink to="/carte" className={({ isActive }) => (isActive ? "active" : "")}>Carte</NavLink>30            <NavLink to="/sources" className={({ isActive }) => (isActive ? "active" : "")}>Employeurs</NavLink>31            <NavLink to="/stats" className={({ isActive }) => (isActive ? "active" : "")}>Statistiques</NavLink>32          </nav>33        </div>34      </header>35      <Routes>36        <Route path="/" element={<Home />} />37        <Route path="/carte" element={38          <Suspense fallback={<div className="container empty">Chargement de la carte…</div>}>39            <MapPage />40          </Suspense>41        } />42        <Route path="/emploi/:uid" element={<JobPage />} />43        <Route path="/sources" element={<Sources />} />44        <Route path="/stats" element={<Stats />} />45        <Route path="*" element={<div className="container empty"><h2>Page introuvable</h2></div>} />46      </Routes>47      <footer className="site">48        <div className="container">49          <span>50            Une plateforme du <a href="https://www.groupe-ka.com">Groupe KA</a> —{" "}51            <a href="mailto:contact@spboucher.ai">contact@spboucher.ai</a>52          </span>53          <span>54            Chaque offre est traçable à sa source originale. Zéro boîte noire.55          </span>56        </div>57      </footer>58    </>59  );60}61
Files 1fc94acf55099a4e4db9dfaaffbba3f871ff8727
Menu

Theme