- {/* Шапка с днями недели */}
- {weekDays.map(day => (
-
{day}
- ))}
-
- {/* Пустые ячейки (понедельник, вторник) */}
- {emptyDays.map((_, i) => (
-
- ))}
-
- {/* Дни месяца */}
- {daysInMonth.map(day => {
- // Фейковая логика: помечаем 4 число как "сегодня", а 15-е как день с двумя дедлайнами
- const isToday = day === 4;
- const hasDeadlines = day === 15;
- const hasCompletedTask = day === 10;
-
- return (
-
-
{day}
-
- {/* Если сегодня, рисуем горящий дедлайн */}
- {isToday && (
-
- Презентация UniFlow
-
- )}
-
- {/* Выполненная задача в прошлом */}
- {hasCompletedTask && (
-
- Лабораторная №1
-
- )}
-
- {/* Несколько дедлайнов в один день */}
- {hasDeadlines && (
- <>
-
- Эссе по истории
-
-
- Тест по матану
-
- >
- )}
+
+
+
+
+
+ {formatMonth}
+
+
+
+
+
+ {loading &&
Загрузка календаря...
}
+ {error &&
{error}
}
+ {!loading && !error && (
+
+ {weekDays.map((day) => (
+
+ {day}
+
+ ))}
+
+ {calendarDays.map((day, index) => {
+ if (!day) {
+ return
;
+ }
+
+ const dateKey = `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
+
+ const isToday = dateKey === todayKey;
+
+ const dayTasks = tasksByDate[dateKey] ?? [];
+
+ return (
+
+
{day}
+ {dayTasks.map((task) => (
+
+ {task.title}
+
+ ))}
+
+ );
+ })}
- );
- })}
+ )}
-
+
+
Ближайшие дедлайны
-
-
Предстоящие события списком
-
-
-
Презентация UniFlow
-
Сегодня 23:59
-
-
-
Эссе по истории
-
15 апреля 12:00
-
+
+ {upcomingTasks.length === 0 &&
Ближайших дедлайнов нет
}
+
+ {upcomingTasks.map((task) => (
+
+
{task.title}
+
+ {task.is_completed ? 'Выполнено' : formatDeadline(task.deadline)}
+
+
+ ))}
+
+
-
);
-}
\ No newline at end of file
+}