/** 球队 code / 名称 → ISO 3166-1（flagcdn.com），含世界杯 48 强 */
const CODE_TO_ISO: Record<string, string> = {
  // 世界杯 2026 48 强
  FRA: 'fr',
  ESP: 'es',
  ENG: 'gb-eng',
  BRA: 'br',
  ARG: 'ar',
  POR: 'pt',
  GER: 'de',
  NED: 'nl',
  NOR: 'no',
  BEL: 'be',
  COL: 'co',
  JPN: 'jp',
  URU: 'uy',
  USA: 'us',
  MAR: 'ma',
  CRO: 'hr',
  MEX: 'mx',
  SUI: 'ch',
  TUR: 'tr',
  SEN: 'sn',
  KOR: 'kr',
  AUT: 'at',
  ECU: 'ec',
  SWE: 'se',
  IRN: 'ir',
  GHA: 'gh',
  ALG: 'dz',
  BIH: 'ba',
  EGY: 'eg',
  TUN: 'tn',
  CAN: 'ca',
  PAN: 'pa',
  AUS: 'au',
  CZE: 'cz',
  KSA: 'sa',
  NZL: 'nz',
  COD: 'cd',
  UZB: 'uz',
  IRQ: 'iq',
  RSA: 'za',
  CIV: 'ci',
  JOR: 'jo',
  PAR: 'py',
  HAI: 'ht',
  QAT: 'qa',
  CPV: 'cv',
  CUW: 'cw',
  SCO: 'gb-sct',
  // 俱乐部 / 演示联赛
  MUN: 'gb',
  CHE: 'gb',
  LIV: 'gb',
  MCI: 'gb',
};

const NAME_TO_ISO: Record<string, string> = {
  France: 'fr',
  Spain: 'es',
  England: 'gb-eng',
  Brazil: 'br',
  Argentina: 'ar',
  Portugal: 'pt',
  Germany: 'de',
  Netherlands: 'nl',
  Norway: 'no',
  Belgium: 'be',
  Colombia: 'co',
  Japan: 'jp',
  Uruguay: 'uy',
  USA: 'us',
  'United States': 'us',
  Morocco: 'ma',
  Croatia: 'hr',
  Mexico: 'mx',
  Switzerland: 'ch',
  Turkey: 'tr',
  Senegal: 'sn',
  'South Korea': 'kr',
  Austria: 'at',
  Ecuador: 'ec',
  Sweden: 'se',
  Iran: 'ir',
  Ghana: 'gh',
  Algeria: 'dz',
  Bosnia: 'ba',
  Egypt: 'eg',
  Tunisia: 'tn',
  Canada: 'ca',
  Panama: 'pa',
  Australia: 'au',
  Czech: 'cz',
  'Czech Republic': 'cz',
  'Saudi Arabia': 'sa',
  'New Zealand': 'nz',
  'DR Congo': 'cd',
  Uzbekistan: 'uz',
  Iraq: 'iq',
  'South Africa': 'za',
  'Ivory Coast': 'ci',
  Jordan: 'jo',
  Paraguay: 'py',
  Haiti: 'ht',
  Qatar: 'qa',
  'Cape Verde': 'cv',
  Curacao: 'cw',
  Scotland: 'gb-sct',
  法国: 'fr',
  西班牙: 'es',
  英格兰: 'gb-eng',
  巴西: 'br',
  阿根廷: 'ar',
  葡萄牙: 'pt',
  德国: 'de',
  荷兰: 'nl',
  挪威: 'no',
  比利时: 'be',
  哥伦比亚: 'co',
  日本: 'jp',
  乌拉圭: 'uy',
  美国: 'us',
  摩洛哥: 'ma',
  克罗地亚: 'hr',
  墨西哥: 'mx',
  瑞士: 'ch',
  土耳其: 'tr',
  塞内加尔: 'sn',
  韩国: 'kr',
  奥地利: 'at',
  厄瓜多尔: 'ec',
  瑞典: 'se',
  伊朗: 'ir',
  加纳: 'gh',
  阿尔及利亚: 'dz',
  波黑: 'ba',
  埃及: 'eg',
  突尼斯: 'tn',
  加拿大: 'ca',
  巴拿马: 'pa',
  澳大利亚: 'au',
  捷克: 'cz',
  沙特阿拉伯: 'sa',
  新西兰: 'nz',
  '刚果（金）': 'cd',
  乌兹别克斯坦: 'uz',
  伊拉克: 'iq',
  南非: 'za',
  科特迪瓦: 'ci',
  约旦: 'jo',
  巴拉圭: 'py',
  海地: 'ht',
  卡塔尔: 'qa',
  佛得角: 'cv',
  库拉索: 'cw',
  苏格兰: 'gb-sct',
  曼联: 'gb',
  切尔西: 'gb',
};

export function teamFlagUrl(
  code?: string,
  name?: string,
  logoUrl?: string | null,
): string {
  if (logoUrl?.trim()) return logoUrl.trim();
  const key = (code ?? '').toUpperCase();
  if (key && CODE_TO_ISO[key]) {
    return `https://flagcdn.com/w40/${CODE_TO_ISO[key]}.png`;
  }
  if (name && NAME_TO_ISO[name]) {
    return `https://flagcdn.com/w40/${NAME_TO_ISO[name]}.png`;
  }
  if (key.length === 2) {
    return `https://flagcdn.com/w40/${key.toLowerCase()}.png`;
  }
  return '';
}
