Files
CollectFlow/src/app/(dashboard)/historique/page.tsx
T
Claude f104719054 Interface : passage de Next.js à une SPA React (Vite + React Router)
Le serveur étant réécrit en Rust, l'interface devient une application
React 19 côté navigateur, compilée par Vite dans dist/ et servie par le
serveur Rust (STATIC_DIR). Composants, styles et logique cliente
inchangés : seule la plomberie Next.js est remplacée.

- Outillage : Vite 8, @vitejs/plugin-react, Tailwind 4 via PostCSS,
  React Router 7 (mode déclaratif), index.html, src/main.tsx, alias @/,
  proxy /api → localhost:5643 en développement, ESLint sans plugin Next.
- Adaptations (src/shims) : next/link, next/navigation (useRouter avec
  refresh, usePathname/useSearchParams suivant aussi les replaceState de
  l'interface), next-auth/react (session lue sur /api/auth/session,
  déconnexion par /api/auth/logout).
- Actions serveur → POST /api/actions/{nom} (src/lib/rpc.ts) : mêmes noms,
  mêmes signatures, mêmes types. La connexion passe par /api/auth/login.
- Pages → table des routes (src/router.tsx) : données lues sur
  /api/pages/{nom} avec Suspense (loading.tsx au premier chargement,
  page conservée pendant une navigation ou un router.refresh()),
  error.tsx en frontière d'erreur, not-found.tsx, titres d'onglet,
  pages d'administration réservées aux administrateurs.
- Suppression du code serveur Next.js (routes /api, accès base, Qlik,
  authentification, middleware…) ; types utiles à l'interface recopiés
  dans src/types/ff.ts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LG2LLJuswrrTTPKJmunEVf
2026-10-12 19:30:20 +00:00

26 lines
1.0 KiB
TypeScript

import { History } from "lucide-react";
import { PageHeader } from "@/components/ui/page-header";
import { usePageSearchParams } from "@/lib/page-data";
import { HistoriqueTabs } from "./tabs";
/**
* Historique des sessions de révision et des exports Excel.
*
* Remplace les pages « Snapshots » et « Exports », qui affichaient la même liste
* filtrée différemment (et dont la seconde s'intitulait « Historique d'arbitrage »).
* Chacun ne voit que ses propres enregistrements.
*/
export default function HistoriquePage() {
const { vue } = usePageSearchParams();
return (
<div className="mx-auto w-full max-w-6xl">
<PageHeader
icon={History}
title="Historique"
description="Vos sessions de révision enregistrées et vos exports Excel. Rouvrez une session pour reprendre les modifications de gammes là où vous les aviez laissées."
/>
<HistoriqueTabs initial={vue === "exports" ? "exports" : "sessions"} />
</div>
);
}