/* 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(window.L("Bibliothèque Excel indisponible.", "Excel library unavailable.", "Biblioteca Excel no disponible."));
    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: window.L("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", "31 indicadores (PI-1 a PI-31), 94 dimensiones, 7 pilares · formato de 4 columnas"),
    },
    {
      id: "usaid",
      title: "USAID — Performance Plan",
      desc: window.L("15 indicateurs standard (EG, HL, ES, FS, GH, WASH, DR, ED)", "15 standard indicators (EG, HL, ES, FS, GH, WASH, DR, ED)", "15 indicadores estándar (EG, HL, ES, FS, GH, WASH, DR, ED)"),
    },
    {
      id: "cnuced",
      title: "CNUCED / UNCTAD — Commerce",
      desc: window.L("10 indicateurs trade, FDI, logistique maritime", "10 trade, FDI, maritime logistics indicators", "10 indicadores de comercio, IED, logística marítima"),
    },
    {
      id: "generic",
      title: window.L("Générique — Catalogue simple", "Generic — simple catalog", "Genérico — Catálogo simple"),
      desc: window.L("6 colonnes standard : Code · Nom FR · Nom EN · Secteur · Origine · Niveau", "6 standard columns: Code · Name FR · Name EN · Sector · Origin · Level", "6 columnas estándar: Código · Nombre FR · Nombre EN · Sector · Origen · Nivel"),
    },
  ];

  return (
    <div style={{ position: "relative" }} ref={ref}>
      <button className="btn sm" onClick={() => setOpen(!open)} title={window.L("Télécharger un modèle Excel", "Download an Excel template", "Descargar una plantilla Excel")}>
        <Icon.download /> {window.L("Modèles", "Templates", "Plantillas")} <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,
          }}>
            {window.L("Modèles d'import (Excel)", "Import templates (Excel)", "Plantillas de importación (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)",
          }}>
            {window.L("💡 Ouvrir → adapter → réimporter via le bouton « Importer Excel ».", "💡 Open → adjust → re-import via the 'Import Excel' button.", "💡 Abrir → adaptar → reimportar mediante el botón «Importar Excel».")}
          </div>
        </div>
      )}
    </div>
  );
}

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