import React, { useState, useEffect } from 'react'; import CalendarGrid from './components/CalendarGrid'; import TaskForm from './components/TaskForm'; import { Task } from './types/task'; import { loadTasks, saveTasks } from './lib/taskPersistence'; const App: React.FC = () => { const [tasks, setTasks] = useState([]); const [showForm, setShowForm] = useState(false); const [editingTask, setEditingTask] = useState(null); const [currentDate, setCurrentDate] = useState(new Date()); useEffect(() => { // Load tasks from storage on mount const loadedTasks = loadTasks(); setTasks(loadedTasks); }, []); const handleSaveTask = (task: Task) => { let updatedTasks; if (task.id) { // Update existing task updatedTasks = tasks.map(t => t.id === task.id ? task : t); } else { // Add new task updatedTasks = [...tasks, task]; } setTasks(updatedTasks); saveTasks(updatedTasks); setShowForm(false); setEditingTask(null); }; const handleCancelForm = () => { setShowForm(false); setEditingTask(null); }; const handleToggleComplete = (id: string) => { const updatedTasks = tasks.map(task => task.id === id ? { ...task, completed: !task.completed } : task ); setTasks(updatedTasks); saveTasks(updatedTasks); }; const handleEditTask = (task: Task) => { setEditingTask(task); setShowForm(true); }; const handleDeleteTask = (id: string) => { const updatedTasks = tasks.filter(task => task.id !== id); setTasks(updatedTasks); saveTasks(updatedTasks); }; const handleAddTask = (date: Date) => { setEditingTask({ id: '', title: '', date, completed: false }); setShowForm(true); }; return (

Weekly ToDo List

Manage your tasks with advanced features

{showForm && ( )}
); }; export default App;