/* global React, Icon */
// ============================================================================
// templates-excel.jsx — Modèles Excel pour l'import d'indicateurs
// ----------------------------------------------------------------------------
// Génère et télécharge des .xlsx pré-formatés pour différents frameworks.
// L'utilisateur ouvre le fichier, ajuste les colonnes, puis l'importe via
// le bouton « Importer Excel » standard.
//
// L'importeur (melr-data.jsx · importIndicatorDefinitionsFromExcel) détecte
// automatiquement le format PEFA (par les en-têtes « Code PEFA »…) et
// route vers la logique de groupage par code + jsonb components. Les
// autres frameworks utilisent les colonnes standard (Code | Nom FR | …).
//
// Datasets embarqués (en mai 2026) :
//   - PEFA 2016 complet : 31 PIs, 94 dimensions
//   - USAID  : ~15 indicateurs standard du Performance Plan
//   - CNUCED : ~10 indicateurs trade & développement
//   - Générique : template vide avec 1 ligne d'exemple
// ============================================================================

// ──────────────────────────────────────────────────────────────────────────
// PEFA 2016 — 31 indicateurs (PI-1 à PI-31) avec leurs dimensions
// ──────────────────────────────────────────────────────────────────────────
// Source : PEFA Secretariat, "Framework for Assessing Public Financial
// Management" (2016). Chaque tuple = [code_pi, nom_pi, code_dim, nom_dim].
// ──────────────────────────────────────────────────────────────────────────
const PEFA_2016 = [
  // Pilier 1 — Fiabilité du budget
  ["PI-1",  "Dépenses effectives totales",                       "PI-1.1",  "Dépenses effectives totales"],
  ["PI-2",  "Composition des dépenses effectives",                "PI-2.1",  "Composition par classification fonctionnelle"],
  ["PI-2",  "Composition des dépenses effectives",                "PI-2.2",  "Composition par classification économique"],
  ["PI-2",  "Composition des dépenses effectives",                "PI-2.3",  "Dépenses imputées sur la réserve pour imprévus"],
  ["PI-3",  "Recettes effectives",                                "PI-3.1",  "Recettes effectives totales"],
  ["PI-3",  "Recettes effectives",                                "PI-3.2",  "Composition des recettes effectives"],

  // Pilier 2 — Transparence des finances publiques
  ["PI-4",  "Classification du budget",                           "PI-4.1",  "Classification du budget"],
  ["PI-5",  "Documentation budgétaire",                           "PI-5.1",  "Documentation budgétaire"],
  ["PI-6",  "Opérations de l'administration centrale hors budget","PI-6.1",  "Dépenses non comptabilisées dans les états financiers"],
  ["PI-6",  "Opérations de l'administration centrale hors budget","PI-6.2",  "Recettes non comptabilisées dans les états financiers"],
  ["PI-6",  "Opérations de l'administration centrale hors budget","PI-6.3",  "États financiers des unités extrabudgétaires"],
  ["PI-7",  "Transferts aux administrations infranationales",      "PI-7.1",  "Système d'allocation des transferts"],
  ["PI-7",  "Transferts aux administrations infranationales",      "PI-7.2",  "Communication en temps voulu des informations"],
  ["PI-8",  "Informations sur la performance des prestations",     "PI-8.1",  "Plans de performance pour la prestation de services"],
  ["PI-8",  "Informations sur la performance des prestations",     "PI-8.2",  "Performance des prestations réalisées"],
  ["PI-8",  "Informations sur la performance des prestations",     "PI-8.3",  "Ressources reçues par les unités de prestation"],
  ["PI-8",  "Informations sur la performance des prestations",     "PI-8.4",  "Évaluation des résultats des prestations"],
  ["PI-9",  "Accès du public aux informations budgétaires",        "PI-9.1",  "Accès du public aux informations budgétaires"],

  // Pilier 3 — Gestion des actifs et des passifs
  ["PI-10", "Établissement de rapports sur les risques budgétaires","PI-10.1","Suivi des entreprises publiques"],
  ["PI-10", "Établissement de rapports sur les risques budgétaires","PI-10.2","Suivi des administrations infranationales"],
  ["PI-10", "Établissement de rapports sur les risques budgétaires","PI-10.3","Passifs éventuels et autres risques budgétaires"],
  ["PI-11", "Gestion des investissements publics",                  "PI-11.1","Analyse économique des projets d'investissement"],
  ["PI-11", "Gestion des investissements publics",                  "PI-11.2","Sélection des projets d'investissement"],
  ["PI-11", "Gestion des investissements publics",                  "PI-11.3","Détermination des coûts des projets d'investissement"],
  ["PI-11", "Gestion des investissements publics",                  "PI-11.4","Suivi des projets d'investissement"],
  ["PI-12", "Gestion des actifs publics",                           "PI-12.1","Suivi des actifs financiers"],
  ["PI-12", "Gestion des actifs publics",                           "PI-12.2","Suivi des actifs non financiers"],
  ["PI-12", "Gestion des actifs publics",                           "PI-12.3","Transparence dans la cession des actifs"],
  ["PI-13", "Gestion de la dette",                                  "PI-13.1","Enregistrement et présentation de la dette et des garanties"],
  ["PI-13", "Gestion de la dette",                                  "PI-13.2","Approbation de la dette et des garanties"],
  ["PI-13", "Gestion de la dette",                                  "PI-13.3","Stratégie de gestion de la dette"],

  // Pilier 4 — Stratégie budgétaire et budgétisation fondées sur les politiques publiques
  ["PI-14", "Prévisions macroéconomiques et budgétaires",            "PI-14.1","Prévisions macroéconomiques"],
  ["PI-14", "Prévisions macroéconomiques et budgétaires",            "PI-14.2","Prévisions budgétaires"],
  ["PI-14", "Prévisions macroéconomiques et budgétaires",            "PI-14.3","Analyse de sensibilité macroéconomique"],
  ["PI-15", "Stratégie budgétaire",                                  "PI-15.1","Impact budgétaire des changements de politique"],
  ["PI-15", "Stratégie budgétaire",                                  "PI-15.2","Adoption de la stratégie budgétaire"],
  ["PI-15", "Stratégie budgétaire",                                  "PI-15.3","Communication des résultats budgétaires"],
  ["PI-16", "Perspective à moyen terme de la budgétisation des dépenses","PI-16.1","Estimations de dépenses à moyen terme"],
  ["PI-16", "Perspective à moyen terme de la budgétisation des dépenses","PI-16.2","Plafonds de dépenses à moyen terme"],
  ["PI-16", "Perspective à moyen terme de la budgétisation des dépenses","PI-16.3","Alignement des plans stratégiques et des budgets à moyen terme"],
  ["PI-16", "Perspective à moyen terme de la budgétisation des dépenses","PI-16.4","Cohérence des budgets avec les estimations de l'année précédente"],
  ["PI-17", "Processus de préparation du budget",                     "PI-17.1","Calendrier budgétaire"],
  ["PI-17", "Processus de préparation du budget",                     "PI-17.2","Directives pour la préparation du budget"],
  ["PI-17", "Processus de préparation du budget",                     "PI-17.3","Présentation du budget au pouvoir législatif"],
  ["PI-18", "Examen des budgets par le pouvoir législatif",            "PI-18.1","Portée de l'examen budgétaire"],
  ["PI-18", "Examen des budgets par le pouvoir législatif",            "PI-18.2","Procédures législatives d'examen du budget"],
  ["PI-18", "Examen des budgets par le pouvoir législatif",            "PI-18.3","Calendrier d'approbation du budget"],
  ["PI-18", "Examen des budgets par le pouvoir législatif",            "PI-18.4","Règles relatives aux ajustements budgétaires en cours d'exercice"],

  // Pilier 5 — Prévisibilité et contrôle de l'exécution du budget
  ["PI-19", "Gestion des recettes",                                   "PI-19.1","Droits et obligations en matière de recettes"],
  ["PI-19", "Gestion des recettes",                                   "PI-19.2","Gestion des risques liés aux recettes"],
  ["PI-19", "Gestion des recettes",                                   "PI-19.3","Audits et enquêtes liés aux recettes"],
  ["PI-19", "Gestion des recettes",                                   "PI-19.4","Suivi des arriérés de recettes"],
  ["PI-20", "Comptabilité des recettes",                              "PI-20.1","Informations sur le recouvrement des recettes"],
  ["PI-20", "Comptabilité des recettes",                              "PI-20.2","Transfert des recettes recouvrées"],
  ["PI-20", "Comptabilité des recettes",                              "PI-20.3","Rapprochement des comptes de recettes"],
  ["PI-21", "Prévisibilité de l'affectation des ressources en cours d'exercice","PI-21.1","Consolidation des soldes de trésorerie"],
  ["PI-21", "Prévisibilité de l'affectation des ressources en cours d'exercice","PI-21.2","Prévisions de trésorerie et suivi"],
  ["PI-21", "Prévisibilité de l'affectation des ressources en cours d'exercice","PI-21.3","Informations sur les plafonds d'engagement"],
  ["PI-21", "Prévisibilité de l'affectation des ressources en cours d'exercice","PI-21.4","Importance des ajustements budgétaires en cours d'exercice"],
  ["PI-22", "Arriérés de dépenses",                                    "PI-22.1","Stock d'arriérés de dépenses"],
  ["PI-22", "Arriérés de dépenses",                                    "PI-22.2","Suivi des arriérés de dépenses"],
  ["PI-23", "Contrôle des états de paie",                              "PI-23.1","Intégration des états de paie et des dossiers du personnel"],
  ["PI-23", "Contrôle des états de paie",                              "PI-23.2","Gestion des modifications des états de paie"],
  ["PI-23", "Contrôle des états de paie",                              "PI-23.3","Contrôle interne des états de paie"],
  ["PI-23", "Contrôle des états de paie",                              "PI-23.4","Vérification des états de paie"],
  ["PI-24", "Gestion de la passation des marchés",                     "PI-24.1","Suivi des marchés publics"],
  ["PI-24", "Gestion de la passation des marchés",                     "PI-24.2","Méthodes de passation des marchés"],
  ["PI-24", "Gestion de la passation des marchés",                     "PI-24.3","Accès du public aux informations sur les marchés"],
  ["PI-24", "Gestion de la passation des marchés",                     "PI-24.4","Procédures de gestion des plaintes"],
  ["PI-25", "Contrôles internes des dépenses non salariales",          "PI-25.1","Séparation des tâches"],
  ["PI-25", "Contrôles internes des dépenses non salariales",          "PI-25.2","Efficacité des contrôles des engagements de dépenses"],
  ["PI-25", "Contrôles internes des dépenses non salariales",          "PI-25.3","Respect des règles et procédures de paiement"],
  ["PI-26", "Audit interne",                                           "PI-26.1","Couverture de l'audit interne"],
  ["PI-26", "Audit interne",                                           "PI-26.2","Nature des audits et normes appliquées"],
  ["PI-26", "Audit interne",                                           "PI-26.3","Mise en œuvre des audits internes et rapports"],
  ["PI-26", "Audit interne",                                           "PI-26.4","Suite donnée aux audits internes"],

  // Pilier 6 — Comptabilité et information
  ["PI-27", "Intégrité des données financières",                       "PI-27.1","Rapprochement des comptes bancaires"],
  ["PI-27", "Intégrité des données financières",                       "PI-27.2","Comptes d'attente"],
  ["PI-27", "Intégrité des données financières",                       "PI-27.3","Comptes d'avances"],
  ["PI-27", "Intégrité des données financières",                       "PI-27.4","Processus relatifs à l'intégrité des données financières"],
  ["PI-28", "Rapports budgétaires en cours d'exercice",                "PI-28.1","Couverture et comparabilité des rapports"],
  ["PI-28", "Rapports budgétaires en cours d'exercice",                "PI-28.2","Présentation dans les délais des rapports en cours d'exercice"],
  ["PI-28", "Rapports budgétaires en cours d'exercice",                "PI-28.3","Exactitude des rapports en cours d'exercice"],
  ["PI-29", "Rapports financiers annuels",                             "PI-29.1","Exhaustivité des rapports financiers annuels"],
  ["PI-29", "Rapports financiers annuels",                             "PI-29.2","Présentation des rapports pour audit externe"],
  ["PI-29", "Rapports financiers annuels",                             "PI-29.3","Normes comptables"],

  // Pilier 7 — Supervision et audit externes
  ["PI-30", "Audit externe",                                           "PI-30.1","Couverture et normes de l'audit"],
  ["PI-30", "Audit externe",                                           "PI-30.2","Présentation des rapports d'audit au pouvoir législatif"],
  ["PI-30", "Audit externe",                                           "PI-30.3","Suite donnée aux audits externes"],
  ["PI-30", "Audit externe",                                           "PI-30.4","Indépendance de l'Institution supérieure de contrôle des finances publiques"],
  ["PI-31", "Examen des rapports d'audit par le pouvoir législatif",   "PI-31.1","Calendrier d'examen des rapports d'audit"],
  ["PI-31", "Examen des rapports d'audit par le pouvoir législatif",   "PI-31.2","Auditions sur les conclusions de l'audit"],
  ["PI-31", "Examen des rapports d'audit par le pouvoir législatif",   "PI-31.3","Recommandations formulées par le pouvoir législatif"],
  ["PI-31", "Examen des rapports d'audit par le pouvoir législatif",   "PI-31.4","Transparence de l'examen des rapports d'audit"],
];

// ──────────────────────────────────────────────────────────────────────────
// USAID — Indicateurs standard (échantillon Performance Plan)
// ──────────────────────────────────────────────────────────────────────────
// Format : Code | Nom FR | Nom EN | Niveau | Unité | Origine
// ──────────────────────────────────────────────────────────────────────────
const USAID_STANDARD = [
  ["USAID-EG.3.1-1",  "Foyers raccordés au réseau électrique grâce au projet",     "Households connected to the grid as a result of USG assistance", "output",  "Nombre",     "USAID"],
  ["USAID-EG.3.2-1",  "Augmentation de la capacité installée (MW)",                "Increase in installed capacity (MW)",                            "outcome", "MW",         "USAID"],
  ["USAID-HL.6.1-1",  "Enfants <5 ans recevant une supplémentation vitamine A",     "Children <5 receiving vitamin A supplementation",                "output",  "Nombre",     "USAID"],
  ["USAID-HL.7.1-1",  "Personnes mises sous traitement ART (PEPFAR TX_NEW)",        "People newly enrolled on antiretroviral therapy",                "output",  "Nombre",     "USAID"],
  ["USAID-ES.1-1",    "Bénéficiaires d'une formation professionnelle",              "People completing workforce development programs",               "output",  "Nombre",     "USAID"],
  ["USAID-ES.2-1",    "Emplois créés à la suite d'une intervention USAID",          "Jobs created as a result of USG assistance",                     "outcome", "Nombre",     "USAID"],
  ["USAID-FS.1-1",    "Hectares cultivés sous gestion améliorée",                   "Hectares under improved management practices",                   "output",  "Hectares",   "USAID"],
  ["USAID-FS.2-1",    "Agriculteurs ayant adopté de nouvelles technologies",        "Farmers adopting new technologies",                              "outcome", "Nombre",     "USAID"],
  ["USAID-GH.1-1",    "Personnel sanitaire formé sur les services maternels",       "Health workers trained on maternal health services",             "output",  "Nombre",     "USAID"],
  ["USAID-GH.2-1",    "Taux de couverture vaccinale DTC3 (%)",                      "DTP3 immunization coverage rate (%)",                            "outcome", "%",          "USAID"],
  ["USAID-WASH.1-1",  "Personnes ayant accès à une source d'eau améliorée",         "People gaining access to improved drinking water",               "output",  "Nombre",     "USAID"],
  ["USAID-WASH.2-1",  "Personnes ayant accès à un assainissement amélioré",         "People gaining access to improved sanitation",                   "output",  "Nombre",     "USAID"],
  ["USAID-DR.1-1",    "Organisations de la société civile renforcées",              "Civil society organizations strengthened",                       "outcome", "Nombre",     "USAID"],
  ["USAID-ED.1-1",    "Élèves bénéficiant de matériel pédagogique financé USAID",   "Learners reached with USG-funded educational materials",         "output",  "Nombre",     "USAID"],
  ["USAID-ED.2-1",    "Taux d'achèvement scolaire primaire (%)",                    "Primary school completion rate (%)",                             "outcome", "%",          "USAID"],
];

// ──────────────────────────────────────────────────────────────────────────
// CNUCED / UNCTAD — Indicateurs commerce & développement
// ──────────────────────────────────────────────────────────────────────────
const UNCTAD_TRADE = [
  ["UNCTAD-T1",  "Exportations totales de marchandises (USD)",            "Total merchandise exports (USD)",            "outcome", "USD",          "UNCTAD"],
  ["UNCTAD-T2",  "Part des exportations dans le PIB (%)",                 "Exports share of GDP (%)",                   "outcome", "%",            "UNCTAD"],
  ["UNCTAD-T3",  "Indice de diversification des exportations",            "Export diversification index (Herfindahl)",  "outcome", "Indice 0-1",    "UNCTAD"],
  ["UNCTAD-T4",  "Investissements directs étrangers entrants (USD)",      "FDI inflows (USD)",                          "outcome", "USD",          "UNCTAD"],
  ["UNCTAD-T5",  "Temps moyen de dédouanement à l'import (jours)",         "Average customs clearance time, imports (days)","output",  "Jours",        "UNCTAD"],
  ["UNCTAD-T6",  "Coût d'exportation par conteneur (USD)",                "Cost to export per container (USD)",         "output",  "USD",          "UNCTAD"],
  ["UNCTAD-T7",  "Part des exportations manufacturées (%)",                "Manufactured exports share (%)",             "outcome", "%",            "UNCTAD"],
  ["UNCTAD-T8",  "Indice de performance logistique (LPI)",                 "Logistics Performance Index (LPI)",          "outcome", "Indice 1-5",    "UNCTAD"],
  ["UNCTAD-T9",  "Connectivité maritime régulière (LSCI)",                 "Liner Shipping Connectivity Index (LSCI)",   "outcome", "Indice",        "UNCTAD"],
  ["UNCTAD-T10", "Part des PMA dans le commerce mondial (%)",              "LDC share of world trade (%)",               "impact",  "%",            "UNCTAD"],
];

// ──────────────────────────────────────────────────────────────────────────
// Construction et téléchargement des fichiers .xlsx
// ──────────────────────────────────────────────────────────────────────────
async function downloadTemplate(framework, lang) {
  if (!window.XLSX) {
    alert(lang === "fr" ? "Bibliothèque Excel indisponible." : "Excel library unavailable.");
    return;
  }
  const X = window.XLSX;
  const wb = X.utils.book_new();
  const date = new Date().toISOString().slice(0, 10);

  if (framework === "pefa") {
    const headers = ["Code PEFA", "Nom indicateur PEFA", "Code composante", "Nom composante"];
    const ws = X.utils.aoa_to_sheet([headers, ...PEFA_2016]);
    ws["!cols"] = [{ wch: 10 }, { wch: 55 }, { wch: 14 }, { wch: 60 }];
    // Petit cartouche d'info en feuille 2
    const info = [
      ["MODÈLE D'IMPORT · PEFA 2016 — Public Expenditure & Financial Accountability"],
      [""],
      ["Source : PEFA Secretariat, « Framework for Assessing Public Financial Management », 2016"],
      ["Contenu : 31 indicateurs (PI-1 à PI-31), 94 dimensions, 7 piliers"],
      [""],
      ["INSTRUCTIONS"],
      ["1. Conservez l'en-tête (ligne 1) tel quel — l'importeur en a besoin pour détecter le format."],
      ["2. Adaptez / supprimez les lignes selon les indicateurs réellement utilisés par votre projet."],
      ["3. À l'import, chaque ligne ne crée PAS un nouvel indicateur isolé : les composantes sont"],
      ["   regroupées par 'Code PEFA' et stockées dans le JSONB 'components' d'un seul indicateur."],
      ["4. Niveau auto = 'outcome'. Origine auto = 'PEFA'. Vous pouvez modifier ensuite via l'éditeur."],
      ["5. Le scoring PEFA (A · B+ · B · C+ · C · D+ · D · NR) sera saisi plus tard par dimension"],
      ["   dans le module « Suivi des indicateurs »."],
    ];
    const ws2 = X.utils.aoa_to_sheet(info);
    ws2["!cols"] = [{ wch: 100 }];
    X.utils.book_append_sheet(wb, ws, "PEFA");
    X.utils.book_append_sheet(wb, ws2, "Info");
    X.writeFile(wb, "template-pefa-" + date + ".xlsx");
    return;
  }

  if (framework === "usaid") {
    const headers = ["Code", "Nom (FR)", "Nom (EN)", "Niveau", "Unité", "Origine"];
    const ws = X.utils.aoa_to_sheet([headers, ...USAID_STANDARD]);
    ws["!cols"] = [{ wch: 18 }, { wch: 55 }, { wch: 55 }, { wch: 10 }, { wch: 12 }, { wch: 10 }];
    const info = [
      ["MODÈLE D'IMPORT · USAID — Indicateurs standard du Performance Plan"],
      [""],
      ["Source : ForeignAssistance.gov / USAID Standard Foreign Assistance Indicators"],
      ["Échantillon : 15 indicateurs représentatifs (EG, HL, ES, FS, GH, WASH, DR, ED)"],
      [""],
      ["INSTRUCTIONS"],
      ["1. Conservez l'en-tête (ligne 1) tel quel."],
      ["2. Ajoutez / supprimez des lignes selon les indicateurs USAID utilisés."],
      ["3. Le niveau accepte : output | outcome | impact | context | mixed (en français : extrant / effet / impact)."],
      ["4. La colonne « Secteur » peut être ajoutée (FR ou EN) — l'importeur la résoudra automatiquement."],
    ];
    X.utils.book_append_sheet(wb, ws, "USAID");
    X.utils.book_append_sheet(wb, X.utils.aoa_to_sheet(info), "Info");
    X.writeFile(wb, "template-usaid-" + date + ".xlsx");
    return;
  }

  if (framework === "cnuced" || framework === "unctad") {
    const headers = ["Code", "Nom (FR)", "Nom (EN)", "Niveau", "Unité", "Origine"];
    const ws = X.utils.aoa_to_sheet([headers, ...UNCTAD_TRADE]);
    ws["!cols"] = [{ wch: 14 }, { wch: 55 }, { wch: 55 }, { wch: 10 }, { wch: 14 }, { wch: 10 }];
    const info = [
      ["MODÈLE D'IMPORT · CNUCED / UNCTAD — Commerce & développement"],
      [""],
      ["Source : UNCTAD Statistics Division (indicateurs trade, FDI, logistique maritime)"],
      ["Échantillon : 10 indicateurs représentatifs des thématiques CNUCED"],
      [""],
      ["INSTRUCTIONS"],
      ["1. Conservez l'en-tête (ligne 1) tel quel."],
      ["2. Adaptez les codes (UNCTAD-T1, T2, ...) à votre nomenclature interne si besoin."],
    ];
    X.utils.book_append_sheet(wb, ws, "UNCTAD");
    X.utils.book_append_sheet(wb, X.utils.aoa_to_sheet(info), "Info");
    X.writeFile(wb, "template-cnuced-" + date + ".xlsx");
    return;
  }

  // Generic — template vide compatible avec l'importeur standard
  const headers = ["Code", "Nom (FR)", "Nom (EN)", "Secteur", "Origine", "Niveau"];
  const sample = [
    ["REFT-001", "Couverture vaccinale", "Vaccination coverage", "Santé", "REFT Africa", "outcome"],
    ["",         "",                    "",                   "",       "",            ""],
  ];
  const ws = X.utils.aoa_to_sheet([headers, ...sample]);
  ws["!cols"] = [{ wch: 18 }, { wch: 50 }, { wch: 50 }, { wch: 16 }, { wch: 16 }, { wch: 10 }];
  X.utils.book_append_sheet(wb, ws, "Indicateurs");
  X.writeFile(wb, "template-generique-" + date + ".xlsx");
}

// ──────────────────────────────────────────────────────────────────────────
// Composant dropdown réutilisable « Modèles »
// ──────────────────────────────────────────────────────────────────────────
function TemplatesDropdown({ lang }) {
  const { useState, useEffect, useRef } = React;
  const [open, setOpen] = useState(false);
  const ref = useRef(null);
  useEffect(() => {
    if (!open) return;
    const onDocClick = (e) => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); };
    document.addEventListener("mousedown", onDocClick);
    return () => document.removeEventListener("mousedown", onDocClick);
  }, [open]);

  const FRAMEWORKS = [
    {
      id: "pefa",
      title: "PEFA — Finances publiques",
      desc: lang === "fr"
        ? "31 indicateurs (PI-1 à PI-31), 94 dimensions, 7 piliers · format 4 colonnes"
        : "31 indicators (PI-1 to PI-31), 94 dimensions, 7 pillars · 4-column format",
    },
    {
      id: "usaid",
      title: "USAID — Performance Plan",
      desc: lang === "fr"
        ? "15 indicateurs standard (EG, HL, ES, FS, GH, WASH, DR, ED)"
        : "15 standard indicators (EG, HL, ES, FS, GH, WASH, DR, ED)",
    },
    {
      id: "cnuced",
      title: "CNUCED / UNCTAD — Commerce",
      desc: lang === "fr"
        ? "10 indicateurs trade, FDI, logistique maritime"
        : "10 trade, FDI, maritime logistics indicators",
    },
    {
      id: "generic",
      title: lang === "fr" ? "Générique — Catalogue simple" : "Generic — simple catalog",
      desc: lang === "fr"
        ? "6 colonnes standard : Code · Nom FR · Nom EN · Secteur · Origine · Niveau"
        : "6 standard columns: Code · Name FR · Name EN · Sector · Origin · Level",
    },
  ];

  return (
    <div style={{ position: "relative" }} ref={ref}>
      <button className="btn sm" onClick={() => setOpen(!open)} title={lang === "fr" ? "Télécharger un modèle Excel" : "Download an Excel template"}>
        <Icon.download /> {lang === "fr" ? "Modèles" : "Templates"} <span style={{ marginLeft: 4 }}>▾</span>
      </button>
      {open && (
        <div style={{
          position: "absolute", top: "calc(100% + 4px)", right: 0,
          background: "var(--bg, white)", border: "1px solid var(--line)",
          borderRadius: 8, boxShadow: "0 8px 24px rgba(0,0,0,0.12)",
          padding: 6, minWidth: 360, zIndex: 50,
        }}>
          <div style={{
            padding: "8px 10px 6px", fontSize: 10.5, color: "var(--text-faint)",
            textTransform: "uppercase", letterSpacing: "0.05em", fontWeight: 600,
          }}>
            {lang === "fr" ? "Modèles d'import (Excel)" : "Import templates (Excel)"}
          </div>
          {FRAMEWORKS.map((f) => (
            <button key={f.id} type="button"
              onClick={() => { downloadTemplate(f.id, lang); setOpen(false); }}
              style={{
                display: "block", width: "100%", textAlign: "left",
                padding: "8px 10px", marginBottom: 2,
                background: "transparent", border: 0, borderRadius: 6,
                cursor: "pointer", color: "var(--text)",
              }}
              onMouseEnter={(e) => (e.currentTarget.style.background = "var(--bg-sunken)")}
              onMouseLeave={(e) => (e.currentTarget.style.background = "transparent")}>
              <div style={{ fontWeight: 600, fontSize: 12.5, color: "var(--accent, #4f46e5)" }}>
                {f.title}
              </div>
              <div style={{ fontSize: 11, color: "var(--text-faint)", marginTop: 2 }}>
                {f.desc}
              </div>
            </button>
          ))}
          <div style={{
            marginTop: 4, padding: "6px 10px",
            borderTop: "1px solid var(--line-faint)",
            fontSize: 10.5, color: "var(--text-faint)",
          }}>
            {lang === "fr"
              ? "💡 Ouvrir → adapter → réimporter via le bouton « Importer Excel »."
              : "💡 Open → adjust → re-import via the 'Import Excel' button."}
          </div>
        </div>
      )}
    </div>
  );
}

// Expose globally
window.IndicatorTemplates = { downloadTemplate, TemplatesDropdown };
window.TemplatesDropdown = TemplatesDropdown;
