import { useState, useEffect } from "react"; import { useParams, useNavigate } from "react-router-dom"; import { Task } from "@/shared/types"; import { getTaskBgColor, getTaskTextColor } from "./utils/utils"; import { mockTasks } from "@/shared/mocks/mocks"; import { Button } from "@/components/ui/button"; const CompetitionSessionPage = () => { const { id, taskId } = useParams<{ id: string; taskId?: string }>(); const navigate = useNavigate(); const [competitionTitle, setCompetitionTitle] = useState("Олимпиада DANO 2025. Индивидуальный этап"); const [tasks] = useState(mockTasks); const [selectedTaskId, setSelectedTaskId] = useState(taskId || null); const [answer, setAnswer] = useState(""); useEffect(() => { if (taskId) { setSelectedTaskId(taskId); } else if (tasks.length > 0) { navigate(`/competition/${id}/tasks/${tasks[0].id}`, { replace: true }); } }, [taskId, tasks, id, navigate]); const handleTaskClick = (taskId: string) => { if (selectedTaskId !== taskId) { setSelectedTaskId(taskId); navigate(`/competition/${id}/tasks/${taskId}`); } }; const currentTask = tasks.find(t => t.id === selectedTaskId); const handleSubmit = () => { console.log("Submitting answer:", answer); // Submit logic here }; const handleHistoryClick = () => { console.log("View history"); }; return ( <>

{competitionTitle}

{tasks.map((task) => (
handleTaskClick(task.id)} > {task.number}
))}
{currentTask ? (
{/* Left Container - Task Description */}

Задача {currentTask.number}

Рассмотрим последовательность чисел 2, 3, 5, 9, 17, 33, 65, 129, ... Каждый член этой последовательности, начиная с третьего, равен сумме двух предыдущих членов.

Найдите сумму первых 15 членов этой последовательности.

В ответе укажите целое число.

{/* Right Container - Solution Area */}
{/* Solution Status Card */}
Решение 12345 Зачтено 5/10 баллов
1 марта, 08:41
{/* Answer Input */}