import { cn } from '../../../../lib/cn'; import { Account } from '../../../../assets/icons/auth'; import { PrimaryButton } from '../../../../components/button/PrimaryButton'; import { ReverseButton } from '../../../../components/button/ReverseButton'; import { useNavigate } from 'react-router-dom'; export interface ContestItemProps { id: number; name: string; startAt: string; duration: number; members: number; statusRegister: 'reg' | 'nonreg'; type: 'first' | 'second'; } function formatDate(dateString: string): string { const date = new Date(dateString); const day = date.getDate().toString().padStart(2, '0'); const month = (date.getMonth() + 1).toString().padStart(2, '0'); const year = date.getFullYear(); const hours = date.getHours().toString().padStart(2, '0'); const minutes = date.getMinutes().toString().padStart(2, '0'); return `${day}/${month}/${year}\n${hours}:${minutes}`; } function formatWaitTime(ms: number): string { const minutes = Math.floor(ms / 60000); const hours = Math.floor(minutes / 60); const days = Math.floor(hours / 24); if (days > 0) { const remainder = days % 10; let suffix = 'дней'; if (remainder === 1 && days !== 11) suffix = 'день'; else if (remainder >= 2 && remainder <= 4 && (days < 10 || days > 20)) suffix = 'дня'; return `${days} ${suffix}`; } else if (hours > 0) { const mins = minutes % 60; return mins > 0 ? `${hours} ч ${mins} мин` : `${hours} ч`; } else { return `${minutes} мин`; } } const ContestItem: React.FC = ({ id, name, startAt, duration, members, statusRegister, type, }) => { const navigate = useNavigate(); const now = new Date(); const waitTime = new Date(startAt).getTime() - now.getTime(); return (
{ navigate(`/contest/${id}`); }} >
{name}
{/* {authors.map((v, i) =>

{v}

)} */} valavshonok
{formatDate(startAt)}
{formatWaitTime(duration)}
{waitTime > 0 && (
{'До начала\n' + formatWaitTime(waitTime)}
)}
{members}
{statusRegister == 'reg' ? ( <> {' '} {}} text="Регистрация" /> ) : ( <> {' '} {}} text="Вы записаны" /> )}
); }; export default ContestItem;