"use client"; import { useEffect, useState, useCallback } from "react"; import Link from "next/link"; import { AuthGuard } from "@/components/auth/AuthGuard"; import { Navbar } from "@/components/layout/Navbar"; import { BottomNav } from "@/components/layout/BottomNav"; import { WeeklyPlanGrid } from "@/components/plans/WeeklyPlanGrid"; import { Badge } from "@/components/ui/Badge"; import { Button } from "@/components/ui/Button"; import { Spinner } from "@/components/ui/Spinner"; import { api } from "@/lib/api"; import type { GeneratedWeeklyPlan } from "@/lib/types"; function formatDate(dateStr: string): string { const date = new Date(dateStr + "T00:00:00"); return date.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric", }); } function getStatusVariant( status: string ): "success" | "warning" | "error" | "default" { switch (status) { case "completed": return "success"; case "pending": return "warning"; case "failed": return "error"; default: return "default"; } } export default function PlanDetailPage({ params, }: { params: { planId: string }; }) { const { planId } = params; const [plan, setPlan] = useState(null); const [loading, setLoading] = useState(true); const fetchPlan = useCallback(async () => { try { const data = await api.getPlan(Number(planId)); setPlan(data); } catch (err) { console.error("Failed to fetch plan:", err); } finally { setLoading(false); } }, [planId]); useEffect(() => { fetchPlan(); }, [fetchPlan]); return (
Back to Plans {loading ? (
) : !plan ? (

Plan not found.

) : (

{formatDate(plan.week_start_date)} –{" "} {formatDate(plan.week_end_date)}

{plan.status}
)}
); }