'use client'; import styled from 'styled-components'; export interface MissionSummary { id: number; title: string; description: string; xp_reward: number; mana_reward: number; difficulty: string; is_active: boolean; is_available: boolean; locked_reasons: string[]; is_completed: boolean; requires_documents: boolean; has_coding_challenges: boolean; coding_challenge_count: number; completed_coding_challenges: number; } const Card = styled.div` background: rgba(17, 22, 51, 0.85); border-radius: 14px; padding: 1.25rem; border: 1px solid rgba(108, 92, 231, 0.25); `; export function MissionList({ missions }: { missions: MissionSummary[] }) { if (missions.length === 0) { return
Нет активных миссий — скоро появятся новые испытания.
; } return (🗂 Требуется загрузка документов
)}{mission.description}
{mission.has_coding_challenges && (💻 Прогресс: {mission.completed_coding_challenges}/{mission.coding_challenge_count} заданий
)}{mission.xp_reward} XP · {mission.mana_reward} ⚡
{locked && mission.locked_reasons.length > 0 && ({mission.locked_reasons[0]}
)} {actionLabel}