import { FileText, Building2, Calendar, Clock, Hash, } from "lucide-react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Separator } from "@/components/ui/separator"; import { Progress } from "@/components/ui/progress"; import { Project } from "@/types/project"; interface ProjectInfoProps { project: Project; } // Formatear moneda function formatCurrency(amount: number): string { return new Intl.NumberFormat("es-ES", { style: "currency", currency: "EUR", minimumFractionDigits: 2, }).format(amount); } // Formatear fecha function formatDate(dateString: string): string { return new Date(dateString).toLocaleDateString("es-ES", { day: "numeric", month: "long", year: "numeric", }); } // Calcular duración en días function getDuration(startDate: string, endDate: string): number { const start = new Date(startDate); const end = new Date(endDate); const diff = end.getTime() - start.getTime(); return Math.ceil(diff / (1000 * 60 * 60 * 24)); } export function ProjectInfo({ project }: ProjectInfoProps) { const duration = getDuration(project.startDate, project.endDate); const budgetUsed = project.budget > 0 ? (project.spent / project.budget) * 100 : 0; const budgetRemaining = project.budget - project.spent; return (
{project.description}
) : (Sin descripción disponible
)}Presupuesto
{formatCurrency(project.budget)}
Gastado
{formatCurrency(project.spent)}
Restante
{formatCurrency(budgetRemaining)}
Inicio
{formatDate(project.startDate)}
Fin previsto
{formatDate(project.endDate)}
Cliente
{project.client}
Referencia
{project.ref}
ID del proyecto
{project.id}
Fecha de inicio
{formatDate(project.startDate)}
Fecha de fin
{formatDate(project.endDate)}
Creado
{formatDate(project.createdAt)}
Última actualización
{formatDate(project.updatedAt)}