import { useState } from 'react'; import { Plus } from 'lucide-react'; import { useQuery } from '@tanstack/react-query'; import api from '@/lib/api'; import type { Todo } from '@/types'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Select } from '@/components/ui/select'; import { Checkbox } from '@/components/ui/checkbox'; import { Label } from '@/components/ui/label'; import { ListSkeleton } from '@/components/ui/skeleton'; import TodoList from './TodoList'; import TodoForm from './TodoForm'; export default function TodosPage() { const [showForm, setShowForm] = useState(false); const [editingTodo, setEditingTodo] = useState(null); const [filters, setFilters] = useState({ priority: '', category: '', showCompleted: true, search: '', }); const { data: todos = [], isLoading } = useQuery({ queryKey: ['todos'], queryFn: async () => { const { data } = await api.get('/todos'); return data; }, }); const filteredTodos = todos.filter((todo) => { if (filters.priority && todo.priority !== filters.priority) return false; if (filters.category && todo.category !== filters.category) return false; if (!filters.showCompleted && todo.completed) return false; if (filters.search && !todo.title.toLowerCase().includes(filters.search.toLowerCase())) return false; return true; }); const handleEdit = (todo: Todo) => { setEditingTodo(todo); setShowForm(true); }; const handleCloseForm = () => { setShowForm(false); setEditingTodo(null); }; return (

Todos

setFilters({ ...filters, search: e.target.value })} />
setFilters({ ...filters, category: e.target.value })} className="w-48" />
setFilters({ ...filters, showCompleted: (e.target as HTMLInputElement).checked }) } />
{isLoading ? ( ) : ( )}
{showForm && }
); }