// src/components/keywords/enrich-status-cell.tsx — pastille de statut
// d'enrichissement à côté du terme (rail par-ligne). Provider-agnostique : agrège
// TOUTES les sources d'un mot-clé et affiche l'état le plus « actif » —
//   queued|syncing  → spinner (Loader2 animate-spin)
//   error           → icône discrète + tooltip listant l'erreur par source
//   done|absent     → rien.
"use client";

import { Loader2Icon, TriangleAlertIcon } from "lucide-react";
import {
  Tooltip,
  TooltipContent,
  TooltipProvider,
  TooltipTrigger,
} from "@/components/ui/tooltip";
import type { KeywordEnrichment } from "@/lib/keywords/types";
import { deriveDisplay, SOURCE_LABEL } from "./enrich-status-logic";

export function EnrichStatusCell({
  enrichment,
}: {
  enrichment: KeywordEnrichment | undefined;
}) {
  const display = deriveDisplay(enrichment);

  if (display.kind === "active") {
    return (
      <Loader2Icon
        className="size-5 shrink-0 animate-spin text-emerald-500"
        aria-label="Enrichissement en cours"
      />
    );
  }

  if (display.kind === "error") {
    return (
      <TooltipProvider>
        <Tooltip>
          <TooltipTrigger asChild>
            {/* Icône informative : le tooltip s'ouvre au hover/focus. Le clic
                n'est pas intercepté (il bulle vers la ligne comme le bouton
                « Ouvrir ») — pas de handler souris, donc pas de piège a11y. */}
            <span className="inline-flex shrink-0 text-amber-500">
              <TriangleAlertIcon
                className="size-3.5"
                aria-label="Échec de l'enrichissement"
              />
            </span>
          </TooltipTrigger>
          <TooltipContent>
            <span className="flex flex-col gap-0.5">
              {display.errors.map((e) => (
                <span key={e.source}>
                  {SOURCE_LABEL[e.source]} : {e.label}
                </span>
              ))}
            </span>
          </TooltipContent>
        </Tooltip>
      </TooltipProvider>
    );
  }

  return null;
}
