"use client"; import Link from 'next/link'; import { Calendar, DollarSign, TrendingUp, FileText, MoreHorizontal, Pencil, Trash2, Eye } from 'lucide-react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Avatar, AvatarFallback } from '@/components/ui/avatar'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { ProjectStatusBadge } from '@/components/ui/project-status-badge'; import { Project } from '@/types/project'; interface ProjectCardProps { project: Project; onEdit?: (project: Project) => void; onDelete?: (project: Project) => void; } // Función para generar iniciales function getInitials(name: string): string { return name .split(' ') .map(word => word[0]) .join('') .toUpperCase() .slice(0, 2); } export default function ProjectCard({ project, onEdit, onDelete }: ProjectCardProps) { const initials = getInitials(project.name); return (
{initials}
{project.name} {project.ref}
{/* Menú de acciones */} Ver detalles onEdit?.(project)}> Editar onDelete?.(project)} > Eliminar
{/* 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}
)} ); }