diff --git a/frontend/public/flags/ar.png b/frontend/public/flags/ar.png new file mode 100644 index 0000000..2d8a3a5 Binary files /dev/null and b/frontend/public/flags/ar.png differ diff --git a/frontend/public/flags/at.png b/frontend/public/flags/at.png new file mode 100644 index 0000000..d45f509 Binary files /dev/null and b/frontend/public/flags/at.png differ diff --git a/frontend/public/flags/au.png b/frontend/public/flags/au.png new file mode 100644 index 0000000..760ab94 Binary files /dev/null and b/frontend/public/flags/au.png differ diff --git a/frontend/public/flags/ba.png b/frontend/public/flags/ba.png new file mode 100644 index 0000000..ba61018 Binary files /dev/null and b/frontend/public/flags/ba.png differ diff --git a/frontend/public/flags/be.png b/frontend/public/flags/be.png new file mode 100644 index 0000000..51ff8ba Binary files /dev/null and b/frontend/public/flags/be.png differ diff --git a/frontend/public/flags/br.png b/frontend/public/flags/br.png new file mode 100644 index 0000000..5a14837 Binary files /dev/null and b/frontend/public/flags/br.png differ diff --git a/frontend/public/flags/ca.png b/frontend/public/flags/ca.png new file mode 100644 index 0000000..a7dd236 Binary files /dev/null and b/frontend/public/flags/ca.png differ diff --git a/frontend/public/flags/cd.png b/frontend/public/flags/cd.png new file mode 100644 index 0000000..6f538e6 Binary files /dev/null and b/frontend/public/flags/cd.png differ diff --git a/frontend/public/flags/ch.png b/frontend/public/flags/ch.png new file mode 100644 index 0000000..3cca060 Binary files /dev/null and b/frontend/public/flags/ch.png differ diff --git a/frontend/public/flags/ci.png b/frontend/public/flags/ci.png new file mode 100644 index 0000000..7f48f8d Binary files /dev/null and b/frontend/public/flags/ci.png differ diff --git a/frontend/public/flags/co.png b/frontend/public/flags/co.png new file mode 100644 index 0000000..05ccb7e Binary files /dev/null and b/frontend/public/flags/co.png differ diff --git a/frontend/public/flags/cv.png b/frontend/public/flags/cv.png new file mode 100644 index 0000000..9344229 Binary files /dev/null and b/frontend/public/flags/cv.png differ diff --git a/frontend/public/flags/cw.png b/frontend/public/flags/cw.png new file mode 100644 index 0000000..4f7e265 Binary files /dev/null and b/frontend/public/flags/cw.png differ diff --git a/frontend/public/flags/cz.png b/frontend/public/flags/cz.png new file mode 100644 index 0000000..c7905c3 Binary files /dev/null and b/frontend/public/flags/cz.png differ diff --git a/frontend/public/flags/de.png b/frontend/public/flags/de.png new file mode 100644 index 0000000..82bf773 Binary files /dev/null and b/frontend/public/flags/de.png differ diff --git a/frontend/public/flags/dz.png b/frontend/public/flags/dz.png new file mode 100644 index 0000000..2784e1e Binary files /dev/null and b/frontend/public/flags/dz.png differ diff --git a/frontend/public/flags/ec.png b/frontend/public/flags/ec.png new file mode 100644 index 0000000..01964ec Binary files /dev/null and b/frontend/public/flags/ec.png differ diff --git a/frontend/public/flags/eg.png b/frontend/public/flags/eg.png new file mode 100644 index 0000000..c0b8445 Binary files /dev/null and b/frontend/public/flags/eg.png differ diff --git a/frontend/public/flags/es.png b/frontend/public/flags/es.png new file mode 100644 index 0000000..d1d02c5 Binary files /dev/null and b/frontend/public/flags/es.png differ diff --git a/frontend/public/flags/fr.png b/frontend/public/flags/fr.png new file mode 100644 index 0000000..5fc0ef0 Binary files /dev/null and b/frontend/public/flags/fr.png differ diff --git a/frontend/public/flags/gb-eng.png b/frontend/public/flags/gb-eng.png new file mode 100644 index 0000000..8775f11 Binary files /dev/null and b/frontend/public/flags/gb-eng.png differ diff --git a/frontend/public/flags/gb-sct.png b/frontend/public/flags/gb-sct.png new file mode 100644 index 0000000..c56d5f2 Binary files /dev/null and b/frontend/public/flags/gb-sct.png differ diff --git a/frontend/public/flags/gh.png b/frontend/public/flags/gh.png new file mode 100644 index 0000000..d9abbfc Binary files /dev/null and b/frontend/public/flags/gh.png differ diff --git a/frontend/public/flags/hr.png b/frontend/public/flags/hr.png new file mode 100644 index 0000000..439be5c Binary files /dev/null and b/frontend/public/flags/hr.png differ diff --git a/frontend/public/flags/ht.png b/frontend/public/flags/ht.png new file mode 100644 index 0000000..07210a9 Binary files /dev/null and b/frontend/public/flags/ht.png differ diff --git a/frontend/public/flags/iq.png b/frontend/public/flags/iq.png new file mode 100644 index 0000000..251008e Binary files /dev/null and b/frontend/public/flags/iq.png differ diff --git a/frontend/public/flags/ir.png b/frontend/public/flags/ir.png new file mode 100644 index 0000000..43a8314 Binary files /dev/null and b/frontend/public/flags/ir.png differ diff --git a/frontend/public/flags/jo.png b/frontend/public/flags/jo.png new file mode 100644 index 0000000..2003529 Binary files /dev/null and b/frontend/public/flags/jo.png differ diff --git a/frontend/public/flags/jp.png b/frontend/public/flags/jp.png new file mode 100644 index 0000000..7a9d455 Binary files /dev/null and b/frontend/public/flags/jp.png differ diff --git a/frontend/public/flags/kr.png b/frontend/public/flags/kr.png new file mode 100644 index 0000000..afbb8ce Binary files /dev/null and b/frontend/public/flags/kr.png differ diff --git a/frontend/public/flags/ma.png b/frontend/public/flags/ma.png new file mode 100644 index 0000000..4e88f0d Binary files /dev/null and b/frontend/public/flags/ma.png differ diff --git a/frontend/public/flags/mx.png b/frontend/public/flags/mx.png new file mode 100644 index 0000000..79e84df Binary files /dev/null and b/frontend/public/flags/mx.png differ diff --git a/frontend/public/flags/nl.png b/frontend/public/flags/nl.png new file mode 100644 index 0000000..3e7e21d Binary files /dev/null and b/frontend/public/flags/nl.png differ diff --git a/frontend/public/flags/no.png b/frontend/public/flags/no.png new file mode 100644 index 0000000..7dffb10 Binary files /dev/null and b/frontend/public/flags/no.png differ diff --git a/frontend/public/flags/nz.png b/frontend/public/flags/nz.png new file mode 100644 index 0000000..bf55373 Binary files /dev/null and b/frontend/public/flags/nz.png differ diff --git a/frontend/public/flags/pa.png b/frontend/public/flags/pa.png new file mode 100644 index 0000000..919554e Binary files /dev/null and b/frontend/public/flags/pa.png differ diff --git a/frontend/public/flags/pt.png b/frontend/public/flags/pt.png new file mode 100644 index 0000000..a942241 Binary files /dev/null and b/frontend/public/flags/pt.png differ diff --git a/frontend/public/flags/py.png b/frontend/public/flags/py.png new file mode 100644 index 0000000..2607c1b Binary files /dev/null and b/frontend/public/flags/py.png differ diff --git a/frontend/public/flags/qa.png b/frontend/public/flags/qa.png new file mode 100644 index 0000000..540765f Binary files /dev/null and b/frontend/public/flags/qa.png differ diff --git a/frontend/public/flags/sa.png b/frontend/public/flags/sa.png new file mode 100644 index 0000000..e4519b7 Binary files /dev/null and b/frontend/public/flags/sa.png differ diff --git a/frontend/public/flags/se.png b/frontend/public/flags/se.png new file mode 100644 index 0000000..e6c6dba Binary files /dev/null and b/frontend/public/flags/se.png differ diff --git a/frontend/public/flags/sn.png b/frontend/public/flags/sn.png new file mode 100644 index 0000000..09f2e17 Binary files /dev/null and b/frontend/public/flags/sn.png differ diff --git a/frontend/public/flags/tn.png b/frontend/public/flags/tn.png new file mode 100644 index 0000000..df49479 Binary files /dev/null and b/frontend/public/flags/tn.png differ diff --git a/frontend/public/flags/tr.png b/frontend/public/flags/tr.png new file mode 100644 index 0000000..2325534 Binary files /dev/null and b/frontend/public/flags/tr.png differ diff --git a/frontend/public/flags/us.png b/frontend/public/flags/us.png new file mode 100644 index 0000000..0b6db3a Binary files /dev/null and b/frontend/public/flags/us.png differ diff --git a/frontend/public/flags/uy.png b/frontend/public/flags/uy.png new file mode 100644 index 0000000..a6b2d30 Binary files /dev/null and b/frontend/public/flags/uy.png differ diff --git a/frontend/public/flags/uz.png b/frontend/public/flags/uz.png new file mode 100644 index 0000000..728b3c7 Binary files /dev/null and b/frontend/public/flags/uz.png differ diff --git a/frontend/public/flags/za.png b/frontend/public/flags/za.png new file mode 100644 index 0000000..3697079 Binary files /dev/null and b/frontend/public/flags/za.png differ diff --git a/frontend/src/components/MatchCard.tsx b/frontend/src/components/MatchCard.tsx index c124f06..7e921d7 100644 --- a/frontend/src/components/MatchCard.tsx +++ b/frontend/src/components/MatchCard.tsx @@ -1,6 +1,7 @@ import { Check, TrendingUp, X } from 'lucide-react'; import { useEffect, useState } from 'react'; import { Match } from '../api/client'; +import { getFlagUrl } from '../utils/flagUrl'; import styles from './MatchCard.module.css'; interface Props { @@ -41,10 +42,11 @@ function formatKickoff(utcDate: string): string { } function FlagBox({ crest, name }: { crest: string | null; name: string }) { + const src = getFlagUrl(name, crest); return (
- {crest - ? {name} + {src + ? {name} : 🏳️ }
diff --git a/frontend/src/components/TipModal.tsx b/frontend/src/components/TipModal.tsx index 905af70..0161c82 100644 --- a/frontend/src/components/TipModal.tsx +++ b/frontend/src/components/TipModal.tsx @@ -1,5 +1,6 @@ import { useState } from 'react'; import { Match, api } from '../api/client'; +import { getFlagUrl } from '../utils/flagUrl'; import styles from './TipModal.module.css'; interface Props { @@ -63,8 +64,8 @@ export default function TipModal({ match, onClose, onSaved }: Props) {
- {match.homeTeam.crest - ? {match.homeTeam.name} + {match.homeTeam.name + ? {match.homeTeam.name} : 🏳️ }
@@ -75,8 +76,8 @@ export default function TipModal({ match, onClose, onSaved }: Props) {
- {match.awayTeam.crest - ? {match.awayTeam.name} + {match.awayTeam.name + ? {match.awayTeam.name} : 🏳️ }
diff --git a/frontend/src/pages/DashboardPage.tsx b/frontend/src/pages/DashboardPage.tsx index ff926fe..5e9a866 100644 --- a/frontend/src/pages/DashboardPage.tsx +++ b/frontend/src/pages/DashboardPage.tsx @@ -2,6 +2,7 @@ import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { TrendingUp, TrendingDown } from 'lucide-react'; import { api, DashboardData, Match } from '../api/client'; +import { getFlagUrl } from '../utils/flagUrl'; import TipModal from '../components/TipModal'; import styles from './DashboardPage.module.css'; @@ -88,8 +89,8 @@ export default function DashboardPage(_props: Props) {
- {hero.match.homeTeam.crest ? ( - {hero.match.homeTeam.name} + {hero.match.homeTeam.name ? ( + {hero.match.homeTeam.name} ) : ( 🏳️ )} @@ -108,8 +109,8 @@ export default function DashboardPage(_props: Props) {
- {hero.match.awayTeam.crest ? ( - {hero.match.awayTeam.name} + {hero.match.awayTeam.name ? ( + {hero.match.awayTeam.name} ) : ( 🏳️ )} diff --git a/frontend/src/utils/flagUrl.ts b/frontend/src/utils/flagUrl.ts new file mode 100644 index 0000000..1e8247a --- /dev/null +++ b/frontend/src/utils/flagUrl.ts @@ -0,0 +1,66 @@ +/** + * Maps team names to local flag image paths. + * Flags are stored as static PNGs in /flags/{iso-code}.png + * Source: flagcdn.com (320px width, downloaded once) + */ + +const TEAM_TO_FLAG: Record = { + 'Algeria': 'dz', + 'Argentina': 'ar', + 'Australia': 'au', + 'Austria': 'at', + 'Belgium': 'be', + 'Bosnia-Herzegovina': 'ba', + 'Brazil': 'br', + 'Canada': 'ca', + 'Cape Verde Islands': 'cv', + 'Colombia': 'co', + 'Congo DR': 'cd', + 'Croatia': 'hr', + 'Curaçao': 'cw', + 'Czechia': 'cz', + 'Ecuador': 'ec', + 'Egypt': 'eg', + 'England': 'gb-eng', + 'France': 'fr', + 'Germany': 'de', + 'Ghana': 'gh', + 'Haiti': 'ht', + 'Iran': 'ir', + 'Iraq': 'iq', + 'Ivory Coast': 'ci', + 'Japan': 'jp', + 'Jordan': 'jo', + 'Mexico': 'mx', + 'Morocco': 'ma', + 'Netherlands': 'nl', + 'New Zealand': 'nz', + 'Norway': 'no', + 'Panama': 'pa', + 'Paraguay': 'py', + 'Portugal': 'pt', + 'Qatar': 'qa', + 'Saudi Arabia': 'sa', + 'Scotland': 'gb-sct', + 'Senegal': 'sn', + 'South Africa': 'za', + 'South Korea': 'kr', + 'Spain': 'es', + 'Sweden': 'se', + 'Switzerland': 'ch', + 'Tunisia': 'tn', + 'Turkey': 'tr', + 'United States': 'us', + 'Uruguay': 'uy', + 'Uzbekistan': 'uz', +}; + +/** + * Returns the local flag URL for a team name. + * Falls back to the original crest URL if no mapping exists. + */ +export function getFlagUrl(teamName: string, fallbackCrest: string | null): string { + const code = TEAM_TO_FLAG[teamName]; + if (code) return `/flags/${code}.png`; + return fallbackCrest || ''; +}