// 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 (
);
};
// 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.
);
// 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) => (
))}
{/* Eval + to-correct grid */}
{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;