'use client'; import React, { useEffect, useState } from 'react'; import { useParams, useRouter } from 'next/navigation'; import { ArrowLeft, Calendar, Dumbbell, Clock, Repeat } from 'lucide-react'; import Link from 'next/link'; export default function MenuDetailPage() { const params = useParams(); const router = useRouter(); const [menu, setMenu] = useState(null); const [isLoading, setIsLoading] = useState(true); useEffect(() => { if (!params.id) return; async function fetchMenu() { try { const res = await fetch(`/api/menus/${params.id}`); if (!res.ok) throw new Error('Failed to fetch'); const data = await res.json(); // Parse exercises if string if (typeof data.exercises === 'string') { data.exercises = JSON.parse(data.exercises); } setMenu(data); } catch (err) { console.error(err); // Optionally redirect or show error } finally { setIsLoading(false); } } fetchMenu(); }, [params.id]); if (isLoading) { return (
); } if (!menu) { return (

Menu not found.

Return to Dashboard
); } return (
Back to Dashboard

{menu.name}

{new Date(menu.created_at).toLocaleDateString()} {menu.exercises?.length || 0} Exercises

Exercise Schedule

ACTIVE
{menu.exercises?.map((ex: any, idx: number) => (
{idx + 1}

{ex.name}

Target Muscles: General

Sets {ex.sets}
Reps {ex.reps}
Weight {ex.weight}kg
Rest {ex.rest_time_seconds || 0}s
))}

Coach Notes

Ensure client maintains proper form during the eccentric phase of each movement.

Safety Protocols

Stop immediately if pain is reported in joints. Monitor heart rate variations.

); }