Checkpoint: Application complète de gestion des formations Manager Itinova avec toutes les fonctionnalités : gestion des formations/sessions/apprenants, système d'inscription avec validations, génération d'invitations Outlook, emails automatiques, exports PDF/Excel, et documentation complète.

This commit is contained in:
Manus Sandbox
2025-11-12 08:38:33 -05:00
parent 641200f3a4
commit 0fc35596d9
25 changed files with 4391 additions and 52 deletions

View File

@@ -21,15 +21,17 @@ import {
} from "@/components/ui/sidebar";
import { APP_LOGO, APP_TITLE, getLoginUrl } from "@/const";
import { useIsMobile } from "@/hooks/useMobile";
import { LayoutDashboard, LogOut, PanelLeft, Users } from "lucide-react";
import { LayoutDashboard, LogOut, PanelLeft, Users, GraduationCap, Calendar } from "lucide-react";
import { CSSProperties, useEffect, useRef, useState } from "react";
import { useLocation } from "wouter";
import { DashboardLayoutSkeleton } from './DashboardLayoutSkeleton';
import { Button } from "./ui/button";
const menuItems = [
{ icon: LayoutDashboard, label: "Page 1", path: "/" },
{ icon: Users, label: "Page 2", path: "/some-path" },
{ icon: LayoutDashboard, label: "Tableau de bord", path: "/admin" },
{ icon: GraduationCap, label: "Formations", path: "/admin/formations" },
{ icon: Calendar, label: "Sessions", path: "/admin/sessions" },
{ icon: Users, label: "Apprenants", path: "/admin/apprenants" },
];
const SIDEBAR_WIDTH_KEY = "sidebar-width";
@@ -73,7 +75,7 @@ export default function DashboardLayout({
<div className="text-center space-y-2">
<h1 className="text-2xl font-bold tracking-tight">{APP_TITLE}</h1>
<p className="text-sm text-muted-foreground">
Please sign in to continue
Veuillez vous connecter pour continuer
</p>
</div>
</div>
@@ -84,7 +86,7 @@ export default function DashboardLayout({
size="lg"
className="w-full shadow-lg hover:shadow-xl transition-all"
>
Sign in
Se connecter
</Button>
</div>
</div>
@@ -255,7 +257,7 @@ function DashboardLayoutContent({
className="cursor-pointer text-destructive focus:text-destructive"
>
<LogOut className="mr-2 h-4 w-4" />
<span>Sign out</span>
<span>Déconnexion</span>
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>