"use client"; import React, { useEffect, useState } from "react"; import { getSemesters } from "../../lib/api"; import type { Semester } from "../../content/types"; export default function LecturesPage() { const [semesters, setSemesters] = useState([]); useEffect(() => { getSemesters().then((s) => { if (s) setSemesters(s); }); }, []); const recentSemesters = semesters.slice(0, 3); const olderSemesters = semesters.slice(3); const oldestSem = olderSemesters[olderSemesters.length - 1]; const newestOlderSem = olderSemesters[0]; return (
{/* Page Header */}

LECTURES

{/* Recent 3 Semesters */}

Recent Courses

Latest 3 Semesters
{recentSemesters.map((sem, idx) => (
{sem.term} {sem.year} Latest
    {sem.courses.map((c, cIdx) => (
  • {c.en}
    Code: {c.code} {c.note && `(${c.note})`}
  • ))}
Total Offerings {sem.courses.length} Courses
))}
{/* Older Semesters (Native
/ progressive disclosure) */}
Browse all semesters

Course history from {oldestSem ? `${oldestSem.year} ${oldestSem.term}` : "2004 Spring"} to {newestOlderSem ? `${newestOlderSem.year} ${newestOlderSem.term}` : "2024 Fall"} ({olderSemesters.length} Semesters)

Open ▾ Close ▴
{olderSemesters.map((sem, idx) => (
{sem.term} {sem.year} {sem.courses.length} Courses
    {sem.courses.map((c, cIdx) => (
  • {c.en}
    Code: {c.code} {c.note && `(${c.note})`}
  • ))}
))}
); }