import { Link } from "react-router-dom";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import { DocumentItem } from "@/components/dashboard/DocumentItem";
import { getDocumentCategoryLabel } from "@/services/documentCategories";
import type { Document, Trip } from "@/types";
import { buildRememberedTripUrl } from "@/services/stepSelectionUrl";

interface Props { document: Document; trip: Trip; isPlanner: boolean; }
const formatSize = (bytes?: number) => bytes == null ? "Taille inconnue" : bytes < 1048576 ? `${Math.ceil(bytes / 1024)} Ko` : `${(bytes / 1048576).toFixed(1)} Mo`;

export function DocumentLibraryCard({ document, trip, isPlanner }: Props) {
  const step = trip.steps.find((candidate) => candidate.id === document.stepId);
  const tripUrl = isPlanner ? buildRememberedTripUrl(sessionStorage, "planner", trip.id) : `/voyageur/trips/${trip.id}`;
  return <article className="surface-card min-w-0 p-4">
    <DocumentItem document={document} tripId={trip.id} isPlanner={isPlanner} />
    <div className="mt-3 flex flex-wrap gap-2 px-3"><Badge variant="outline">{getDocumentCategoryLabel(document.type)}</Badge><Badge variant="secondary">{step ? `Étape : ${step.activity}` : "Général au voyage"}</Badge></div>
    <div className="mt-3 flex flex-col gap-2 px-3 text-xs text-muted-foreground sm:flex-row sm:items-center sm:justify-between"><span>{formatSize(document.sizeBytes)} · {trip.destination}</span><Button variant="link" size="sm" className="h-auto justify-start p-0" asChild><Link to={tripUrl}>{step ? "Voir l’étape dans le voyage" : trip.title}</Link></Button></div>
  </article>;
}
