// Courses hub page
function CourseCard({ course }) {
const bullets = tx(course, "bullets");
return (
{tx(course, "eyebrow")}
{tx(course, "title")}
{tx(course, "duration")}
{tx(course, "level")}
{tx(course, "desc")}
{bullets && (
{bullets.map((b, i) => (
- {b}
))}
)}
);
}
function ModuleDetail({ module: m }) {
if (!m.details) {
return (
);
}
const d = m.details;
return (
<>
{t("courses.moduleOverview")}
{tx(d, "overview")}
{t("courses.learningObjectives")}
{tx(d, "objectives").map((o, i) => (
- {o}
))}
{t("courses.whoIsFor")}
{tx(d, "audience").map((a, i) => (
- {a}
))}
{t("courses.enrollModule")} {m.num}
>
);
}
function CoursesApp() {
const [tweaks, setTweak] = useTweaks(/*EDITMODE-BEGIN*/{ "themeColor": "navy" }/*EDITMODE-END*/);
const [expandedModule, setExpandedModule] = React.useState(null);
useLucideIcons([tweaks, expandedModule]);
useTweakBodyClasses(tweaks);
return (
<>
{t("courses.heroEyebrow")}
{t("courses.heroTitle")}
{t("courses.heroSub")}
{t("courses.catalogueEyebrow")}
{t("courses.catalogueTitle")}
{t("courses.catalogueSub")}
{SITE.COURSES.map((c) => )}
{SITE.MODULES.map((m) => {
const isOpen = expandedModule === m.num;
return (
{t("home.moduleLabel")} {m.num}
{tx(m, "title")}
{tx(m, "desc")}
{tx(m, "duration")}
{isOpen && (
)}
);
})}
setTweak("themeColor", v)}
options={[
{ value: "navy", label: "Navy" },
{ value: "graphite", label: "Graphite" },
{ value: "emerald", label: "Emerald" },
{ value: "gold", label: "Gold" },
]}
/>
>
);
}
window.CoursesApp = CoursesApp;