"use client" import type React from "react" import { useState } from "react" import { IonCard, IonCardContent, IonButton, IonIcon, IonBadge } from "@ionic/react" import { playOutline, videocamOutline, closeCircleOutline } from "ionicons/icons" // Добавлен videocamOutline и closeCircleOutline interface Exercise { id: number name: string duration: number // в секундах description: string difficulty: "easy" | "medium" | "hard" completed: boolean videoUrl?: string // Добавлено поле для URL видео } interface ExerciseItemProps { exercise: Exercise onStart: (exercise: Exercise) => void isCurrent: boolean isDisabled: boolean onVideoPlayToggle: (isPlaying: boolean) => void // Добавлено для уведомления родителя } const ExerciseItem: React.FC = ({ exercise, onStart, isCurrent, isDisabled, onVideoPlayToggle }) => { const [showVideo, setShowVideo] = useState(false) const formatTime = (seconds: number) => { const mins = Math.floor(seconds / 60) const secs = seconds % 60 return `${mins.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}` } const getDifficultyColor = (difficulty: string) => { switch (difficulty) { case "easy": return "text-emerald-400" case "medium": return "text-yellow-400" case "hard": return "text-red-400" default: return "text-slate-400" } } const getDifficultyBg = (difficulty: string) => { switch (difficulty) { case "easy": return "bg-emerald-500/20 border-emerald-500/30" case "medium": return "bg-yellow-500/20 border-yellow-500/30" case "hard": return "bg-red-500/20 border-red-500/30" default: return "bg-slate-500/20 border-slate-500/30" } } const handleVideoToggle = () => { setShowVideo((prev) => { onVideoPlayToggle(!prev) // Уведомляем родителя об изменении состояния видео return !prev }) } return (

{exercise.name}

{exercise.description}

{exercise.completed && ( Выполнено )}
{showVideo && exercise.videoUrl && (
)}
{formatTime(exercise.duration)} {exercise.difficulty === "easy" ? "Легко" : exercise.difficulty === "medium" ? "Средне" : "Сложно"}
{exercise.videoUrl && ( {showVideo ? "Скрыть" : "Видео"} )} {!exercise.completed && !isCurrent && ( onStart(exercise)} className="bg-gradient-to-r from-teal-500 to-cyan-500" disabled={isDisabled || showVideo} // Отключаем кнопку, если другое упражнение активно или видео проигрывается > Начать )} {isCurrent && ( Активно )}
) } export default ExerciseItem