Checkpoint: Sélecteur d'année global (2025, 2026, 2027+) sur Renouvellement PC, CAPEX-Construction, CAPEX-Synthèse et DSI-OPEX. Données CAPEX isolées par année en localStorage. Titres dynamiques selon l'année sélectionnée.

This commit is contained in:
Manus
2026-06-03 09:49:14 +00:00
parent 858f0dc4d9
commit 787928c722
7 changed files with 189 additions and 55 deletions

View File

@@ -18,6 +18,8 @@ import {
List,
} from 'lucide-react';
import { AppSidebar } from '../components/AppSidebar';
import { AnneeSelectorBar } from '../components/AnneeSelectorBar';
import { useAnnee } from '../contexts/AnneeContext';
import { useBudgetData } from '../hooks/useBudgetData';
import { formatEuros, formatNumber } from '../lib/format';
import { EtablissementCard } from '../components/EtablissementCard';
@@ -42,6 +44,7 @@ export default function Home() {
setFilterType,
} = useBudgetData();
const { annee } = useAnnee();
const [selectedEtab, setSelectedEtab] = useState<Etablissement | null>(null);
const [sidebarCollapsed, setSidebarCollapsed] = useState(false);
const [viewMode, setViewMode] = useState<ViewMode>('grid');
@@ -71,13 +74,14 @@ export default function Home() {
<div className="flex items-center justify-between">
<div>
<h1 className="text-xl font-bold text-foreground" style={{ fontFamily: 'Sora, sans-serif' }}>
Renouvellement PC 2027
Renouvellement PC {annee}
</h1>
<p className="text-sm text-muted-foreground mt-0.5">
{totalEtablissements} établissements Itinova Vétusté du parc PC
</p>
</div>
<div className="flex items-center gap-2">
<div className="flex items-center gap-3">
<AnneeSelectorBar />
<span className="text-xs text-muted-foreground bg-muted px-2.5 py-1 rounded-full">
{etablissements.length} affiché{etablissements.length > 1 ? 's' : ''}
</span>
@@ -92,7 +96,7 @@ export default function Home() {
icon={Euro}
label="Budget global"
value={formatEuros(meta.budget_global)}
subtitle="TTC — exercice 2027"
subtitle={`TTC — exercice ${annee}`}
accentColor="text-orange-600"
delay={0}
/>