"use client"; import { Calendar, DollarSign, TrendingUp, FileText } from 'lucide-react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Avatar, AvatarFallback } from '@/components/ui/avatar'; import { Project, ProjectStatus } from '@/types/project'; interface ProjectCardProps { project: Project; } // Función para generar iniciales function getInitials(name: string): string { return name .split(' ') .map(word => word[0]) .join('') .toUpperCase() .slice(0, 2); } // Componente para el badge de estado con estilos directos function StatusBadge({ status }: { status: ProjectStatus }) { if (status === '0') { return ( Borrador ); } if (status === '1') { return ( Abierto ); } if (status === '2') { return ( Cerrado ); } // Fallback return ( Desconocido ); } export default function ProjectCard({ project }: ProjectCardProps) { const initials = getInitials(project.name); return (
{initials}
{project.name} {project.ref}
{/* Description */} {project.description && (
Descripción

{project.description}

)} {/* Progress Bar */}
Progreso {project.progress}%
{/* Budget Info */}
Presupuesto

€{project.budget.toLocaleString('es-ES', { minimumFractionDigits: 0, maximumFractionDigits: 0 })}

Estimado

€{project.spent.toLocaleString('es-ES', { minimumFractionDigits: 0, maximumFractionDigits: 0 })}

{/* Footer Info */}
{new Date(project.startDate).toLocaleDateString('es-ES', { day: '2-digit', month: 'short', year: 'numeric' })}
{new Date(project.endDate).toLocaleDateString('es-ES', { day: '2-digit', month: 'short', year: 'numeric' })}
{/* Cliente */} {project.client !== 'Sin cliente' && (
Cliente: {project.client}
)} ); }