);
}
function ContinueCard({ course, go }) {
// find first active module / not-done lesson
let target = null;
for (const m of course.modules) {
for (const l of m.lessons) { if (!l.done) { target = { m, l }; break; } }
if (target) break;
}
return (
go("curso", { courseId: course.id })}>
Continuar donde quedaste
{course.title}
{target ? target.l.title : "Repasar contenido"}
{course.progress}% completado
);
}
function Dashboard({ go }) {
const u = DATA.user;
const inProgress = DATA.courses.filter((c) => c.progress > 0 && c.progress < 100);
const upcoming = [...DATA.sessions].sort((a, b) => parseD(a.date) - parseD(b.date));
const next = upcoming[0];
const pending = DATA.assignments.filter((a) => a.status === "pending");
const totalProgress = DATA.courses.length ? Math.round(DATA.courses.reduce((s, c) => s + c.progress, 0) / DATA.courses.length) : 0;
return (