"use client"; import Link from 'next/link'; import { Calendar, DollarSign, TrendingUp, MoreHorizontal, Pencil, Trash2, Eye } from 'lucide-react'; 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 ProjectListItemProps { 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); } /** * Componente de fila de proyecto para vista de lista * Diseño horizontal y compacto */ export default function ProjectListItem({ project, onEdit, onDelete }: ProjectListItemProps) { const initials = getInitials(project.name); return (
{/* Avatar */} {initials} {/* Info Principal */}

{project.name}

{project.ref}
{project.client !== 'Sin cliente' && (

{project.client}

)} {/* Estado */}
{/* Progreso */}
Progreso {project.progress}%
{/* Presupuesto */}
€{project.budget.toLocaleString('es-ES', { minimumFractionDigits: 0, maximumFractionDigits: 0 })}
Presupuesto
{/* Fechas */}
{new Date(project.startDate).toLocaleDateString('es-ES', { day: '2-digit', month: 'short' })}
Inicio
{/* Menú de acciones */} Ver detalles onEdit?.(project)}> Editar onDelete?.(project)} > Eliminar
); }