import type { ComponentProps } from "react"; import { cookies } from "next/headers"; import { HomePageClient } from "@/components/HomePageClient"; import { getTodayLocal, formatDateLocal } from "@/lib/env"; import { apiFetch } from "@/lib/api"; type WeekData = ComponentProps; const WEEK_COOKIE = "tcWeek"; function getWeekStart(saved: string | undefined): string { if (saved && /^\d{4}-\d{2}-\d{2}$/.test(saved)) { const d = new Date(saved + "T00:00:00"); if (!isNaN(d.getTime())) { d.setDate(d.getDate() - d.getDay()); return formatDateLocal(d); } } const todayIso = getTodayLocal(); const d = new Date(todayIso + "T00:00:00"); d.setDate(d.getDate() - d.getDay()); return formatDateLocal(d); } export default async function HomePage() { const saved = (await cookies()).get(WEEK_COOKIE)?.value; const weekStart = getWeekStart(saved); const data = await apiFetch( `/api/calendar/week?start=${weekStart}`, { revalidate: 120 }, ); if (!data) { return (

Calendar data is unavailable

We could not reach the backend. Refresh in a moment.

); } return ; }