From 3c694517fc8225638c51ac9ab9ec9ed7ebcd213b Mon Sep 17 00:00:00 2001 From: Neeldhara Misra Date: Thu, 16 Jul 2026 10:45:20 +0530 Subject: [PATCH] Add password-protected NCERT workshop pages --- src/components/EventPage.astro | 86 ++++- src/components/EventSchedule.astro | 7 +- src/data/eventNav.ts | 20 ++ src/data/events.ts | 309 ++++++++++++++++++ src/layouts/SiteLayout.astro | 123 ++++++- src/pages/[year]/[slug].astro | 4 +- src/pages/[year]/[slug]/[page].astro | 4 +- src/pages/[year]/[slug]/info/[infoSlug].astro | 5 +- src/pages/ncert/[page].astro | 25 ++ src/pages/ncert/index.astro | 14 + src/pages/ncert/info/[infoSlug].astro | 56 ++++ src/styles/global.css | 234 ++++++++++++- 12 files changed, 871 insertions(+), 16 deletions(-) create mode 100644 src/pages/ncert/[page].astro create mode 100644 src/pages/ncert/index.astro create mode 100644 src/pages/ncert/info/[infoSlug].astro diff --git a/src/components/EventPage.astro b/src/components/EventPage.astro index fddda22..febcab2 100644 --- a/src/components/EventPage.astro +++ b/src/components/EventPage.astro @@ -41,7 +41,9 @@ const shouldRenderBody = !isOverview || showOverviewContent || showScheduleBlock const shouldUseWideBody = Boolean(isOverview && event.showScheduleOnOverview); const scheduleAsTabs = showScheduleBlock && event.scheduleDisplay === "tabs" && (event.schedule?.length ?? 0) > 1; -const showHeroScheduleLink = Boolean(schedulePage && !event.showScheduleOnOverview); +const showHeroScheduleLink = Boolean( + schedulePage && !event.showScheduleOnOverview && event.showScheduleLinkInHero !== false, +); const hasHeroActions = Boolean(event.sourceUrl || showHeroScheduleLink); --- @@ -54,9 +56,10 @@ const hasHeroActions = Boolean(event.sourceUrl || showHeroScheduleLink); brandTitle={eventTitle} brandSubtitle="Event home" navItems={navItems} + accessPassword={event.accessPassword} > {isOverview ? ( -
+

{event.kind} / {event.year}

{event.title}

@@ -123,9 +126,24 @@ const hasHeroActions = Boolean(event.sourceUrl || showHeroScheduleLink); )} {isOverview && showOverviewContent && event.links && ( - + event.slug === "ncert" ? ( + + ) : ( + + ) )} {isOverview && showOverviewContent && overviewSections.map((section) => ( @@ -143,6 +161,35 @@ const hasHeroActions = Boolean(event.sourceUrl || showHeroScheduleLink); {section.bullets.map((bullet) =>
  • {bullet}
  • )} )} + {section.links && ( + + )} + {section.entries && ( +
    + {section.entries.map((entry) => ( +
    +
    + {entry.meta &&

    {entry.meta}

    } +

    {entry.title}

    +
    + {entry.body.map((paragraph) =>

    {paragraph}

    )} + {entry.bullets && ( +
      + {entry.bullets.map((bullet) =>
    • {bullet}
    • )} +
    + )} +
    + ))} +
    + )} {section.table && (
    @@ -196,6 +243,35 @@ const hasHeroActions = Boolean(event.sourceUrl || showHeroScheduleLink); {currentSection.bullets.map((bullet) =>
  • {bullet}
  • )} )} + {currentSection.links && ( + + )} + {currentSection.entries && ( +
    + {currentSection.entries.map((entry) => ( +
    +
    + {entry.meta &&

    {entry.meta}

    } +

    {entry.title}

    +
    + {entry.body.map((paragraph) =>

    {paragraph}

    )} + {entry.bullets && ( +
      + {entry.bullets.map((bullet) =>
    • {bullet}
    • )} +
    + )} +
    + ))} +
    + )} {currentSection.table && (
    diff --git a/src/components/EventSchedule.astro b/src/components/EventSchedule.astro index 8d5fe09..8d80a5c 100644 --- a/src/components/EventSchedule.astro +++ b/src/components/EventSchedule.astro @@ -13,7 +13,12 @@ const { schedule, asTabs = false } = Astro.props;

    Schedule

    {asTabs ? (
    -
    +
    {schedule.map((day, index) => ( +
    +

    + +
    + + )} + +
    + {accessPassword && ( + + )} diff --git a/src/pages/[year]/[slug].astro b/src/pages/[year]/[slug].astro index bd74749..fcb4440 100644 --- a/src/pages/[year]/[slug].astro +++ b/src/pages/[year]/[slug].astro @@ -1,10 +1,10 @@ --- import BarcampPage from "../../components/BarcampPage.astro"; import EventPage from "../../components/EventPage.astro"; -import { getEventByParams, getEventPageEntry, internalEvents } from "../../data/events"; +import { getEventByParams, getEventPageEntry, yearPathEvents } from "../../data/events"; export function getStaticPaths() { - return internalEvents.map((event) => ({ + return yearPathEvents.map((event) => ({ params: { year: event.year, slug: event.slug }, })); } diff --git a/src/pages/[year]/[slug]/[page].astro b/src/pages/[year]/[slug]/[page].astro index 3d033d4..d1be3b9 100644 --- a/src/pages/[year]/[slug]/[page].astro +++ b/src/pages/[year]/[slug]/[page].astro @@ -1,10 +1,10 @@ --- import BarcampPage from "../../../components/BarcampPage.astro"; import EventPage from "../../../components/EventPage.astro"; -import { getEventByParams, getEventPageEntries, internalEvents } from "../../../data/events"; +import { getEventByParams, getEventPageEntries, yearPathEvents } from "../../../data/events"; export function getStaticPaths() { - return internalEvents.flatMap((event) => + return yearPathEvents.flatMap((event) => getEventPageEntries(event) .filter((pageEntry) => pageEntry.type !== "overview") .map((pageEntry) => ({ diff --git a/src/pages/[year]/[slug]/info/[infoSlug].astro b/src/pages/[year]/[slug]/info/[infoSlug].astro index b8cba0f..846efdf 100644 --- a/src/pages/[year]/[slug]/info/[infoSlug].astro +++ b/src/pages/[year]/[slug]/info/[infoSlug].astro @@ -5,12 +5,12 @@ import { getEventNavItems } from "../../../../data/eventNav"; import { getEventBasePath, getEventByParams, - internalEvents, + yearPathEvents, } from "../../../../data/events"; import { getInfoPage, infoPages } from "../../../../data/info"; export function getStaticPaths() { - return internalEvents.flatMap((event) => + return yearPathEvents.flatMap((event) => infoPages.map((page) => ({ params: { year: event.year, @@ -47,6 +47,7 @@ const infoNavLabel = event.slug === "barcamp" ? "Venue" : "Information"; brandTitle={eventTitle} brandSubtitle="Event home" navItems={getEventNavItems(event)} + accessPassword={event.accessPassword} >