import { useState, useEffect } from "react"; import { Moon, Sun, Plus, Trash2, Edit, Check, X, Filter } from "lucide-react"; export default function TaskApp() { const [darkMode, setDarkMode] = useState(false); const [tasks, setTasks] = useState([ { id: 1, text: "Complete project proposal", completed: true, createdAt: new Date() }, { id: 2, text: "Schedule team meeting", completed: false, createdAt: new Date() }, { id: 3, text: "Research new technologies", completed: false, createdAt: new Date() }, { id: 4, text: "Prepare presentation slides", completed: false, createdAt: new Date() } ]); const [newTask, setNewTask] = useState(""); const [editingId, setEditingId] = useState(null); const [editText, setEditText] = useState(""); const [filter, setFilter] = useState("all"); // all, active, completed // Toggle dark mode useEffect(() => { if (darkMode) { document.documentElement.classList.add("dark"); } else { document.documentElement.classList.remove("dark"); } }, [darkMode]); // Add a new task const addTask = () => { if (newTask.trim() !== "") { const newTaskItem = { id: Date.now(), text: newTask, completed: false, createdAt: new Date() }; setTasks([...tasks, newTaskItem]); setNewTask(""); } }; // Handle key press in the input field const handleKeyPress = (e) => { if (e.key === "Enter") { addTask(); } }; // Toggle task completion status const toggleComplete = (id) => { setTasks( tasks.map(task => task.id === id ? { ...task, completed: !task.completed } : task ) ); }; // Delete a task const deleteTask = (id) => { setTasks(tasks.filter(task => task.id !== id)); }; // Start editing a task const startEdit = (id, text) => { setEditingId(id); setEditText(text); }; // Save edited task const saveEdit = () => { if (editText.trim() !== "") { setTasks( tasks.map(task => task.id === editingId ? { ...task, text: editText } : task ) ); setEditingId(null); } }; // Cancel editing const cancelEdit = () => { setEditingId(null); }; // Filter tasks based on current filter const filteredTasks = tasks.filter(task => { if (filter === "active") return !task.completed; if (filter === "completed") return task.completed; return true; // "all" filter }); return (