import { ReactComponent as LandingSVG } from "../../public/assets/curriculum/curriculum-landing-top.svg"; import { ReactComponent as LandingStairwaySVG1 } from "../../public/assets/curriculum/curriculum-landing-stairway-1.svg"; import { ReactComponent as LandingStairwaySVG2 } from "../../public/assets/curriculum/curriculum-landing-stairway-2.svg"; import { ReactComponent as LandingStairwaySVG2Small } from "../../public/assets/curriculum/curriculum-landing-stairway-2-small.svg"; import { HydrationData } from "../../../libs/types/hydration"; import { CurriculumDoc, CurriculumData } from "../../../libs/types/curriculum"; import { ModulesListList } from "./modules-list"; import { useCurriculumDoc } from "./utils"; import { RenderCurriculumBody } from "./body"; import { lazy, Suspense, useMemo } from "react"; import { DisplayH2 } from "../document/ingredients/utils"; import { CurriculumLayout } from "./layout"; import "./index.scss"; import "./landing.scss"; import { ProseSection } from "../../../libs/types/document"; import { PartnerBanner } from "./partner-banner"; import { useIsServer, useViewed } from "../hooks"; import scrimBg from "../assets/curriculum/landing-scrim.png"; import { useGleanClick } from "../telemetry/glean-context"; import { CURRICULUM } from "../telemetry/constants"; const ScrimInline = lazy(() => import("../lit/curriculum/scrim-inline")); export function CurriculumLanding(appProps: HydrationData) { const doc = useCurriculumDoc(appProps as CurriculumData); return ( { if (i === 0) { return (
); } if (section.value.id === "about_the_curriculum") { return About({ section }); } if (section.value.id === "modules") { const { title, id } = (section as ProseSection).value; console.log(title); return ( <>
{title && } {doc?.modules && }

How can you boost your employability{" "} with the MDN Curriculum?

Learn about research collaboration and other essential soft skills. Balance between modern tooling and long-term best practices. Get access to high-quality recommended resources. Get guidance from trusted voices.

); } return null; }} /> ); } function Header({ section, h1 }: { section: any; h1?: string }) { const html = useMemo( () => ({ __html: section.value?.content }), [section.value?.content] ); return (

{h1}

{section.value.title}

); } const SCRIM_URL = "https://v2.scrimba.com/s06icdv?via=mdn"; function About({ section }) { const { title, content, id } = section.value; const html = useMemo(() => ({ __html: content }), [content]); const isServer = useIsServer(); const gleanClick = useGleanClick(); const observedNode = useViewed(() => { const url = new URL(SCRIM_URL); const id = url.pathname.slice(1); gleanClick(`${CURRICULUM}: scrim view id:${id}`); }); return (
{!isServer && ( )}

Learn our curriculum with Scrimba's interactive{" "} Frontend Developer Career Path .

); }