import React, { useState } from 'react'; import { ChevronLeft, ChevronRight, X, Plus, Trash2, BookOpen, Home } from 'lucide-react'; const Calendar2026 = () => { const [currentMonth, setCurrentMonth] = useState(0); const [selectedDay, setSelectedDay] = useState(null); const [tasks, setTasks] = useState({}); const [showStudyForm, setShowStudyForm] = useState(false); const [newPersonalTask, setNewPersonalTask] = useState(''); const [newStudyTask, setNewStudyTask] = useState({ subject: '', topic: '', type: 'teoria', understanding: 0 }); const months = [ 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro' ]; const daysOfWeek = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb']; const getDaysInMonth = (month, year) => { return new Date(year, month + 1, 0).getDate(); }; const getFirstDayOfMonth = (month, year) => { return new Date(year, month, 1).getDay(); }; const generateCalendarDays = (month) => { const year = 2026; const daysInMonth = getDaysInMonth(month, year); const firstDay = getFirstDayOfMonth(month, year); const days = []; for (let i = 0; i < firstDay; i++) { days.push(null); } for (let i = 1; i <= daysInMonth; i++) { days.push(i); } return days; }; const isToday = (day, month) => { const today = new Date(); return day === today.getDate() && month === today.getMonth() && today.getFullYear() === 2026; }; const nextMonth = () => { setCurrentMonth((prev) => (prev + 1) % 12); }; const prevMonth = () => { setCurrentMonth((prev) => (prev - 1 + 12) % 12); }; const openDayModal = (day) => { if (day) { setSelectedDay({ day, month: currentMonth }); setShowStudyForm(false); } }; const closeDayModal = () => { setSelectedDay(null); setShowStudyForm(false); setNewPersonalTask(''); setNewStudyTask({ subject: '', topic: '', type: 'teoria', understanding: 0 }); }; const getTaskKey = (month, day) => `${month}-${day}`; const addStudyTask = () => { if (newStudyTask.subject.trim() && newStudyTask.topic.trim() && selectedDay) { const key = getTaskKey(selectedDay.month, selectedDay.day); const updatedTasks = { ...tasks }; if (!updatedTasks[key]) { updatedTasks[key] = []; } updatedTasks[key].push({ id: Date.now(), category: 'study', subject: newStudyTask.subject, topic: newStudyTask.topic, type: newStudyTask.type, understanding: newStudyTask.understanding, completed: false }); setTasks(updatedTasks); setNewStudyTask({ subject: '', topic: '', type: 'teoria', understanding: 0 }); setShowStudyForm(false); } }; const addPersonalTask = () => { if (newPersonalTask.trim() && selectedDay) { const key = getTaskKey(selectedDay.month, selectedDay.day); const updatedTasks = { ...tasks }; if (!updatedTasks[key]) { updatedTasks[key] = []; } updatedTasks[key].push({ id: Date.now(), category: 'personal', text: newPersonalTask, completed: false }); setTasks(updatedTasks); setNewPersonalTask(''); } }; const deleteTask = (taskId) => { if (selectedDay) { const key = getTaskKey(selectedDay.month, selectedDay.day); const updatedTasks = { ...tasks }; updatedTasks[key] = updatedTasks[key].filter(task => task.id !== taskId); setTasks(updatedTasks); } }; const toggleTask = (taskId) => { if (selectedDay) { const key = getTaskKey(selectedDay.month, selectedDay.day); const updatedTasks = { ...tasks }; updatedTasks[key] = updatedTasks[key].map(task => task.id === taskId ? { ...task, completed: !task.completed } : task ); setTasks(updatedTasks); } }; const updateUnderstanding = (taskId, value) => { if (selectedDay) { const key = getTaskKey(selectedDay.month, selectedDay.day); const updatedTasks = { ...tasks }; updatedTasks[key] = updatedTasks[key].map(task => task.id === taskId ? { ...task, understanding: value } : task ); setTasks(updatedTasks); } }; const getDayTasks = (month, day) => { const key = getTaskKey(month, day); return tasks[key] || []; }; const hasTasks = (month, day) => { return getDayTasks(month, day).length > 0; }; const getUnderstandingColor = (value) => { if (value >= 80) return 'from-green-500 to-emerald-500'; if (value >= 60) return 'from-blue-500 to-cyan-500'; if (value >= 40) return 'from-yellow-500 to-orange-500'; return 'from-red-500 to-pink-500'; }; const getUnderstandingText = (value) => { if (value >= 80) return 'Excelente'; if (value >= 60) return 'Bom'; if (value >= 40) return 'Regular'; return 'Precisa melhorar'; }; const calendarDays = generateCalendarDays(currentMonth); const gradients = [ 'from-purple-600 to-pink-600', 'from-blue-600 to-cyan-600', 'from-green-600 to-emerald-600', 'from-orange-600 to-red-600', 'from-indigo-600 to-purple-600', 'from-teal-600 to-blue-600', 'from-rose-600 to-pink-600', 'from-amber-600 to-orange-600', 'from-violet-600 to-fuchsia-600', 'from-sky-600 to-indigo-600', 'from-lime-600 to-green-600', 'from-red-600 to-rose-600' ]; const currentDayTasks = selectedDay ? getDayTasks(selectedDay.month, selectedDay.day) : []; const studyTasks = currentDayTasks.filter(t => t.category === 'study'); const personalTasks = currentDayTasks.filter(t => t.category === 'personal'); return (
Organize seus estudos e vida pessoal
{studyTasks.length} estudo(s) • {personalTasks.length} tarefa(s) pessoal(is)
Nenhum estudo cadastrado
{task.topic}
{!task.completed && (Nenhuma tarefa pessoal
{task.text}