import { cn } from "@/lib/utils";
import { t } from "@/lib/i18n/de";
import type { EtaResult } from "@/lib/geo/types";

/** Formatiert Sekunden als „X min" (gerundet, mind. 1 min wenn > 0). */
function formatMinutes(durationSec: number): string {
  const min = Math.max(1, Math.round(durationSec / 60));
  return `${min} min`;
}

/**
 * Zeigt die Eintreffzeit eines Treffers. Bei OSRM-Ausfall (Haversine-Fallback)
 * wird der Wert als geschätzte Luftlinie gekennzeichnet (Querschnittsstandard).
 */
export function EtaBadge({ eta }: { eta: EtaResult }) {
  if (eta.durationSec == null) {
    return (
      <span className="inline-flex items-center rounded-sm border border-rand bg-nebel px-2 py-0.5 text-xs font-medium text-anthrazit/60">
        —
      </span>
    );
  }

  const label = formatMinutes(eta.durationSec);

  if (eta.isFallback) {
    return (
      <span
        className={cn(
          "inline-flex items-center gap-1 rounded-sm border px-2 py-0.5 text-xs font-medium tabular-nums",
          "border-wartung/30 bg-wartung/10 text-wartung",
        )}
        title={t("search.luftlinie")}
      >
        ≈ {label}
        <span className="text-[0.65rem] font-normal">
          {t("search.luftlinie")}
        </span>
      </span>
    );
  }

  return (
    <span
      className={cn(
        "inline-flex items-center rounded-sm border px-2 py-0.5 text-xs font-medium tabular-nums",
        "border-bereit/30 bg-bereit/10 text-bereit",
      )}
    >
      {label}
    </span>
  );
}
