Checkpoint: Application complète : deux tableaux de bord (Veille Stratégique + AAP), import Excel quotidien avec déduplication, sources multiples (local/OneDrive/FTP/SharePoint), affichage liste/vignettes, filtres multi-critères, gestion utilisateurs, logs d'import, page paramètres, authentification locale, tâche cron 06h00, 13 tests Vitest passants.

This commit is contained in:
Manus
2026-03-16 10:45:35 -04:00
parent 5000fc555d
commit 8fb71e8bda
27 changed files with 4525 additions and 184 deletions

View File

@@ -43,74 +43,77 @@
}
:root {
--primary: var(--color-blue-700);
--primary-foreground: var(--color-blue-50);
--sidebar-primary: var(--color-blue-600);
--sidebar-primary-foreground: var(--color-blue-50);
--chart-1: var(--color-blue-300);
--chart-2: var(--color-blue-500);
--chart-3: var(--color-blue-600);
--chart-4: var(--color-blue-700);
--chart-5: var(--color-blue-800);
--radius: 0.65rem;
--background: oklch(1 0 0);
--foreground: oklch(0.235 0.015 65);
--background: oklch(0.98 0.004 240);
--foreground: oklch(0.15 0.02 240);
--card: oklch(1 0 0);
--card-foreground: oklch(0.235 0.015 65);
--card-foreground: oklch(0.15 0.02 240);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.235 0.015 65);
--secondary: oklch(0.98 0.001 286.375);
--secondary-foreground: oklch(0.4 0.015 65);
--muted: oklch(0.967 0.001 286.375);
--muted-foreground: oklch(0.552 0.016 285.938);
--accent: oklch(0.967 0.001 286.375);
--accent-foreground: oklch(0.141 0.005 285.823);
--destructive: oklch(0.577 0.245 27.325);
--popover-foreground: oklch(0.15 0.02 240);
/* Bleu marine Itinova */
--primary: oklch(0.32 0.12 240);
--primary-foreground: oklch(0.98 0.004 240);
--secondary: oklch(0.94 0.01 240);
--secondary-foreground: oklch(0.32 0.12 240);
--muted: oklch(0.95 0.005 240);
--muted-foreground: oklch(0.50 0.02 240);
/* Teal accent */
--accent: oklch(0.55 0.14 195);
--accent-foreground: oklch(1 0 0);
--destructive: oklch(0.55 0.22 25);
--destructive-foreground: oklch(0.985 0 0);
--border: oklch(0.92 0.004 286.32);
--input: oklch(0.92 0.004 286.32);
--ring: oklch(0.623 0.214 259.815);
--sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.235 0.015 65);
--sidebar-accent: oklch(0.967 0.001 286.375);
--sidebar-accent-foreground: oklch(0.141 0.005 285.823);
--sidebar-border: oklch(0.92 0.004 286.32);
--sidebar-ring: oklch(0.623 0.214 259.815);
--border: oklch(0.88 0.01 240);
--input: oklch(0.92 0.008 240);
--ring: oklch(0.32 0.12 240);
--chart-1: oklch(0.55 0.14 195);
--chart-2: oklch(0.45 0.12 240);
--chart-3: oklch(0.65 0.12 160);
--chart-4: oklch(0.60 0.15 280);
--chart-5: oklch(0.55 0.18 30);
/* Sidebar sombre */
--sidebar: oklch(0.20 0.06 240);
--sidebar-foreground: oklch(0.92 0.01 240);
--sidebar-primary: oklch(0.60 0.14 195);
--sidebar-primary-foreground: oklch(1 0 0);
--sidebar-accent: oklch(0.28 0.08 240);
--sidebar-accent-foreground: oklch(0.92 0.01 240);
--sidebar-border: oklch(0.28 0.06 240);
--sidebar-ring: oklch(0.60 0.14 195);
}
.dark {
--primary: var(--color-blue-700);
--primary-foreground: var(--color-blue-50);
--sidebar-primary: var(--color-blue-500);
--sidebar-primary-foreground: var(--color-blue-50);
--background: oklch(0.141 0.005 285.823);
--foreground: oklch(0.85 0.005 65);
--card: oklch(0.21 0.006 285.885);
--card-foreground: oklch(0.85 0.005 65);
--popover: oklch(0.21 0.006 285.885);
--popover-foreground: oklch(0.85 0.005 65);
--secondary: oklch(0.24 0.006 286.033);
--secondary-foreground: oklch(0.7 0.005 65);
--muted: oklch(0.274 0.006 286.033);
--muted-foreground: oklch(0.705 0.015 286.067);
--accent: oklch(0.274 0.006 286.033);
--accent-foreground: oklch(0.92 0.005 65);
--destructive: oklch(0.704 0.191 22.216);
--background: oklch(0.12 0.02 240);
--foreground: oklch(0.92 0.01 240);
--card: oklch(0.17 0.03 240);
--card-foreground: oklch(0.92 0.01 240);
--popover: oklch(0.17 0.03 240);
--popover-foreground: oklch(0.92 0.01 240);
--primary: oklch(0.60 0.14 195);
--primary-foreground: oklch(0.12 0.02 240);
--secondary: oklch(0.22 0.04 240);
--secondary-foreground: oklch(0.92 0.01 240);
--muted: oklch(0.22 0.04 240);
--muted-foreground: oklch(0.60 0.02 240);
--accent: oklch(0.60 0.14 195);
--accent-foreground: oklch(0.12 0.02 240);
--destructive: oklch(0.60 0.22 25);
--destructive-foreground: oklch(0.985 0 0);
--border: oklch(1 0 0 / 10%);
--input: oklch(1 0 0 / 15%);
--ring: oklch(0.488 0.243 264.376);
--chart-1: var(--color-blue-300);
--chart-2: var(--color-blue-500);
--chart-3: var(--color-blue-600);
--chart-4: var(--color-blue-700);
--chart-5: var(--color-blue-800);
--sidebar: oklch(0.21 0.006 285.885);
--sidebar-foreground: oklch(0.85 0.005 65);
--sidebar-accent: oklch(0.274 0.006 286.033);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.488 0.243 264.376);
--border: oklch(0.28 0.04 240);
--input: oklch(0.22 0.04 240);
--ring: oklch(0.60 0.14 195);
--chart-1: oklch(0.65 0.14 195);
--chart-2: oklch(0.55 0.12 240);
--chart-3: oklch(0.70 0.12 160);
--chart-4: oklch(0.65 0.15 280);
--chart-5: oklch(0.60 0.18 30);
--sidebar: oklch(0.14 0.03 240);
--sidebar-foreground: oklch(0.88 0.01 240);
--sidebar-primary: oklch(0.60 0.14 195);
--sidebar-primary-foreground: oklch(0.12 0.02 240);
--sidebar-accent: oklch(0.20 0.04 240);
--sidebar-accent-foreground: oklch(0.88 0.01 240);
--sidebar-border: oklch(0.22 0.04 240);
--sidebar-ring: oklch(0.60 0.14 195);
}
@layer base {