"use client"; import { useState, useEffect } from 'react'; import DashboardHeader from './dashboard-header'; import StatsOverview from './stats-overview'; import ProjectGrid from './project-grid'; import ProjectGridSkeleton from './project-grid-skeleton'; import { getProjects } from '@/lib/projectsService'; // Importar desde el service import { Project } from '@/types/project'; import { Skeleton } from '@/components/ui/skeleton'; export default function ProjectDashboard() { const [viewMode, setViewMode] = useState<'grid' | 'list'>('grid'); const [searchTerm, setSearchTerm] = useState(''); const [projects, setProjects] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { async function loadProjects() { try { setLoading(true); const data = await getProjects(); setProjects(data); setError(null); } catch (err) { console.error('Error loading projects:', err); setError('Error al cargar los proyectos'); } finally { setLoading(false); } } loadProjects(); }, []); const filteredProjects = projects.filter(project => project.name.toLowerCase().includes(searchTerm.toLowerCase()) || project.client.toLowerCase().includes(searchTerm.toLowerCase()) || project.ref.toLowerCase().includes(searchTerm.toLowerCase()) ); if (loading) { return (
{}} viewMode={viewMode} onViewModeChange={setViewMode} />
{/* Stats skeleton */}
{Array.from({ length: 4 }).map((_, i) => (
))}
{/* Projects skeleton */}
); } if (error) { return (

{error}

); } return (
); }