import React, { useMemo } from 'react'; import { Dumbbell, Quote } from 'lucide-react'; import { PdfHeaderRow, safeStr, asArray } from './PdfShared'; function pickRoutine(workout: any) { // ✅ SHAPE REAL DO FRONTEND (WorkoutSection usa workout.routine) const r = workout?.routine ?? workout?.days ?? workout?.plan ?? []; return Array.isArray(r) ? r : []; } function pickExercises(day: any) { const ex = day?.exercises ?? day?.items ?? day?.workout ?? []; return Array.isArray(ex) ? ex : []; } function exLine(ex: any) { if (typeof ex === 'string') return ex; const name = safeStr(ex?.name || ex?.exercise || ex?.movimento, ''); const sets = ex?.sets ?? ex?.series; const reps = ex?.reps ?? ex?.repetitions; const technique = safeStr(ex?.technique || ex?.notes || ex?.cue, ''); const sr: string[] = []; if (sets !== undefined && sets !== null && String(sets).trim() !== '') sr.push(`${sets}x`); if (reps !== undefined && reps !== null && String(reps).trim() !== '') sr.push(`${reps}`); const left = [name, sr.length ? sr.join(' ') : ''].filter(Boolean).join(' — '); return [left, technique].filter(Boolean).join(' • ') || '-'; } export const PdfWorkoutCompact: React.FC<{ workout: any; quote?: string }> = ({ workout, quote }) => { const days = useMemo(() => pickRoutine(workout).slice(0, 5), [workout]); return (
} /> {/* Top summary */}
Split
{safeStr(workout?.split)}
Frequência
{safeStr(workout?.frequency_days, '-')} dias
Objetivo
{safeStr(workout?.focus)}
Duração
{safeStr(workout?.duration || '4–8 semanas')}
{/* Day cards (muito mais bonito que tabela) */}
{days.length ? ( days.map((day: any, idx: number) => { const exs = pickExercises(day).slice(0, 5); const dayName = safeStr(day?.day || day?.name || day?.title || `Dia ${idx + 1}`, `Dia ${idx + 1}`); const muscle = safeStr(day?.muscle_group || day?.focus || day?.grupo, ''); return (
{dayName}
{muscle}
{safeStr(workout?.split, '')}
{exs.length ? (
    {exs.map((ex: any, i: number) => (
  • {exLine(ex)}
  • ))}
) : (
Treino do dia não detalhado.
)}
{day?.technique_focus ? (
Técnica: {safeStr(day?.technique_focus, '-')}
) : null}
); }) ) : (
Rotina não detalhada neste relatório.
)}
"{quote || 'Disciplina é a ponte entre metas e conquistas.'}"
); };