/** * Карточка домашнего задания для Dashboard */ 'use client'; import React from 'react'; import { HomeworkPreview } from '@/api/dashboard'; interface HomeworkCardProps { homework: HomeworkPreview; } export const HomeworkCard: React.FC = ({ homework, }) => { const dueDate = new Date(homework.due_date); const isOverdue = dueDate < new Date() && homework.status !== 'completed' && homework.status !== 'reviewed'; const getStatusColor = (status: string) => { switch (status) { case 'completed': case 'reviewed': return 'var(--md-sys-color-tertiary)'; case 'submitted': return 'var(--md-sys-color-primary)'; case 'pending': return isOverdue ? 'var(--md-sys-color-error)' : 'var(--md-sys-color-outline)'; default: return 'var(--md-sys-color-outline)'; } }; const getStatusText = (status: string) => { switch (status) { case 'completed': return 'Выполнено'; case 'reviewed': return 'Проверено'; case 'submitted': return 'Отправлено'; case 'pending': return isOverdue ? 'Просрочено' : 'В работе'; default: return 'Неизвестно'; } }; return (
{ e.currentTarget.style.borderColor = 'var(--md-sys-color-primary)'; e.currentTarget.style.boxShadow = '0 2px 8px rgba(0,0,0,0.08)'; }} onMouseLeave={(e) => { e.currentTarget.style.borderColor = 'var(--md-sys-color-outline-variant)'; e.currentTarget.style.boxShadow = 'none'; }} >

{homework.title}

{homework.subject && (

{homework.subject}

)}
{getStatusText(homework.status)}
Срок: {dueDate.toLocaleDateString('ru-RU', { day: 'numeric', month: 'short', year: 'numeric' })}
{homework.grade !== undefined && (
{homework.grade}/100
)}
); };