"use client"; import { useState, useEffect, useMemo } from "react"; import { FolderKanban, RefreshCw } from "lucide-react"; import { Project } from "@/types/project"; import { getProjects } from "@/lib/projectsService"; import { DataTable } from "./data-table"; import { DataTableToolbar } from "./data-table-toolbar"; import { DataTableSkeleton } from "./data-table-skeleton"; import { EmptyState } from "./empty-state"; import { projectColumns } from "./columns"; import { Button } from "@/components/ui/button"; export function ProjectsTable() { const [projects, setProjects] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); // Filtros const [searchValue, setSearchValue] = useState(""); const [statusFilter, setStatusFilter] = useState("all"); // Cargar proyectos const fetchProjects = async () => { setIsLoading(true); setError(null); try { const data = await getProjects(); setProjects(data); } catch (err) { console.error("Error fetching projects:", err); setError("Error al cargar los proyectos. Por favor, intenta de nuevo."); } finally { setIsLoading(false); } }; useEffect(() => { fetchProjects(); }, []); // Filtrar proyectos const filteredProjects = useMemo(() => { let result = [...projects]; // Filtro de búsqueda (nombre o referencia) if (searchValue) { const search = searchValue.toLowerCase(); result = result.filter( (project) => project.name.toLowerCase().includes(search) || project.ref.toLowerCase().includes(search) || project.client.toLowerCase().includes(search) ); } // Filtro de estado if (statusFilter !== "all") { result = result.filter((project) => project.status === statusFilter); } return result; }, [projects, searchValue, statusFilter]); // Limpiar filtros const handleClearFilters = () => { setSearchValue(""); setStatusFilter("all"); }; // Contar seleccionados (placeholder - el DataTable lo maneja internamente) const selectedCount = 0; // Estado de error if (error) { return (

Error al cargar

{error}

); } // Estado de carga if (isLoading) { return ; } // Estado vacío if (projects.length === 0) { return ( console.log("Create project")} /> ); } return (
); }