import React from 'react'; import { Dumbbell, User, PlayCircle, Plus, ArrowRight } from 'lucide-react'; import { Language } from '../../types'; import { t } from '../../services/i18n'; import { useTracker } from './useTracker'; interface IdleViewProps { tracker: ReturnType; lang: Language; } const IdleView: React.FC = ({ tracker, lang }) => { const { userBodyWeight, setUserBodyWeight, handleStart, setIsSporadicMode, plans, showPlanPrep, setShowPlanPrep, confirmPlanStart, lastWorkoutDate } = tracker; // Calculate days off const getDaysOffContent = () => { if (!lastWorkoutDate) { return { title: t('first_workout_prompt', lang), subtitle: null, colorClass: 'text-on-surface' }; } const now = new Date(); now.setHours(0, 0, 0, 0); const last = new Date(lastWorkoutDate); last.setHours(0, 0, 0, 0); const diffTime = Math.abs(now.getTime() - last.getTime()); const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); if (diffDays === 0) { return { title: t('last_workout_today', lang), subtitle: null, colorClass: 'text-on-surface' }; } const prefix = t('days_off', lang); if (diffDays === 1) { return { title: `${prefix} ${diffDays}`, subtitle: null, colorClass: 'text-green-500' // 1 is green }; } if (diffDays >= 5) { return { title: `${prefix} ${diffDays}`, subtitle: null, colorClass: 'text-red-500' // 5 and more is red }; } // Gradient for 2-4 return { title: `${prefix} ${diffDays}`, subtitle: null, colorClass: 'bg-gradient-to-r from-green-500 to-red-500 bg-clip-text text-transparent' }; }; const content = getDaysOffContent(); return (

{content.title}

{content.subtitle}

setUserBodyWeight(e.target.value)} />

{t('change_in_profile', lang)}

{plans.length > 0 ? (

{t('or_choose_plan', lang)}

{plans.map(plan => ( ))}
) : (

{t('no_plans_yet', lang)}

)}
{showPlanPrep && (

{showPlanPrep.name}

{t('prep_title', lang)}
{showPlanPrep.description || t('prep_no_instructions', lang)}
)}
); }; export default IdleView;