// Parcours 1 — Enseignant // Shared prof shell (sidebar + topbar) const ProfShell = ({ active, children, onNavigate }) => { const nav = [ { id: 'dashboard', label: 'Tableau de bord', icon: 'home', route: '#/prof' }, { id: 'evals', label: 'Évaluations', icon: 'files', route: '#/prof/evaluations' }, { id: 'groups', label: 'Groupes', icon: 'layers', route: '#/prof' }, { id: 'students', label: 'Étudiants', icon: 'users', route: '#/prof' }, { id: 'results', label: 'Résultats', icon: 'chart', route: '#/prof/results/ev-301' }, { id: 'ai', label: 'Génération IA', icon: 'sparkles', route: '#/prof' }, { id: 'settings', label: 'Paramètres', icon: 'settings', route: '#/prof' }, ]; const D = window.STUDYHUB_DATA; return (
{children}
); }; // 1.1 — Login enseignant const ProfLogin = () => (
Établissement pilote

Concevez, corrigez, analysez — sans quitter l’interface.

StudyHub centralise vos évaluations, vos copies et vos analytiques. L’IA assiste la correction des rédactions — vous gardez toujours le dernier mot.

© 2026 StudyHub · v1.0 pilote
Espace enseignant

Bon retour parmi nous.

Connectez-vous pour accéder à vos évaluations et vos groupes.

{ e.preventDefault(); location.hash = '#/prof'; }}>
); // 1.2 — Dashboard enseignant const ProfDashboardHome = () => { const D = window.STUDYHUB_DATA; const stats = [ { label: 'Évaluations actives', val: '12', spark: [3, 5, 4, 6, 8, 7, 9, 12], color: '#6ECFB5', delta: '+3 cette semaine' }, { label: 'Copies à corriger', val: '47', spark: [20, 32, 28, 40, 35, 42, 38, 47], color: '#F5C842', delta: '+12 vs hier' }, { label: 'Moyenne groupes', val: '13,8', spark: [12, 13, 13.5, 12.8, 13.2, 14, 13.5, 13.8], color: '#A78BFA', delta: '/20' }, { label: 'Étudiants actifs', val: '214', spark: [180, 190, 195, 200, 205, 210, 212, 214], color: '#60A5FA', delta: '94% présence' }, ]; const toCorrect = [ { id: 1, student: 'Chloé Lefèvre', eval: 'Droit constitutionnel — Vème Rép.', ai: true, time: 'il y a 12 min' }, { id: 2, student: 'Marouane El Ayoubi', eval: 'Droit constitutionnel — Vème Rép.', ai: true, time: 'il y a 34 min' }, { id: 3, student: 'Yanis Benzema', eval: 'Algorithmique — Complexité', ai: false, time: 'il y a 2h' }, { id: 4, student: 'Inès Ferreira', eval: 'Anglais B2 — Business', ai: true, time: 'il y a 3h' }, ]; const statusChip = (s) => { const map = { 'en-cours': { label: 'En cours', cls: 'badge-green' }, 'brouillon': { label: 'Brouillon', cls: 'badge-gray' }, 'a-corriger': { label: 'À corriger', cls: 'badge-amber' }, 'terminee': { label: 'Terminée', cls: 'badge-f5' }, }; const m = map[s]; return {m.label}; }; return (
Bonjour Élodie, mercredi 22 avril

Tableau de bord

{/* Stat cards */}
{stats.map((s, i) => (
{s.label}
{s.val}
{s.delta}
))}
{/* Eval + to-correct grid */}

Évaluations récentes

Voir tout →
{D.evaluations.map(ev => { const fam = D.famMap[ev.fam]; return (
{fam.label} {statusChip(ev.status)}
{ev.title}
{ev.group} · {ev.students} étudiants · {ev.duration} · Échéance {ev.due}
{ev.status === 'en-cours' && <>
{ev.done}/{ev.total}
} {ev.status === 'a-corriger' && Corriger} {ev.status === 'brouillon' && Reprendre} {ev.status === 'terminee' && Résultats}
); })}

À corriger (4)

{/* AI widget */}
Générer une évaluation avec l’IA
Téléversez un cours PDF, l’IA en extrait les concepts clés et propose 8 à 15 questions.
); }; window.ProfLogin = ProfLogin; window.ProfDashboardHome = ProfDashboardHome; window.ProfShell = ProfShell;