"use client";

import { useMemo } from "react";
import { DataTable, type DataTableFilter } from "@/components/data-table/data-table";
import { importColumns, type ImportRow } from "@/components/keywords/import-columns";

/** Onglet Imports : la table générique du projet, jamais une table locale (spec §7.5). */
export function ImportsTable({ rows }: { rows: ImportRow[] }) {
  const filters = useMemo<DataTableFilter[]>(() => {
    // Les deux colonnes filtrables portent leur libellé français : les options du Select
    // valent donc ce libellé, pas la valeur brute de l'api — sans quoi choisir « Terminé »
    // ne filtrerait rien.
    const build = (columnId: "statusLabel" | "kindLabel"): DataTableFilter | null => {
      const labels = new Set(rows.map((row) => row[columnId]));
      if (labels.size < 2) return null;
      return {
        columnId,
        label: columnId === "statusLabel" ? "Statut" : "Type",
        options: [...labels]
          .sort((a, b) => a.localeCompare(b, "fr"))
          .map((label) => ({ value: label, label })),
      };
    };
    return [build("statusLabel"), build("kindLabel")].filter(
      (filter): filter is DataTableFilter => filter !== null,
    );
  }, [rows]);

  return (
    <DataTable
      columns={importColumns}
      data={rows}
      searchLabel="Rechercher un import"
      filters={filters}
      emptyMessage="Aucun import ne correspond."
    />
  );
}
