Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6,867 changes: 6,867 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ const Venues = lazy(() => import('./pages/Venues'))
const Watch = lazy(() => import('./pages/Watch'))
const Stats = lazy(() => import('./pages/Stats'))
const Forecast = lazy(() => import('./pages/Forecast'))
const MatchSimulator = lazy(() => import('./pages/MatchSimulator'))
const Settings = lazy(() => import('./pages/Settings'))
const More = lazy(() => import('./pages/More'))

Expand All @@ -29,6 +30,7 @@ const TITLE_KEY: Record<string, string> = {
watch: 'navWatch',
stats: 'navStats',
forecast: 'navSim',
aisim: 'navAiSim',
settings: 'navSettings',
more: 'navMore',
}
Expand Down Expand Up @@ -104,6 +106,7 @@ export default function App() {
<Route path="/watch" element={<Watch />} />
<Route path="/stats" element={<Stats />} />
<Route path="/forecast" element={<Forecast />} />
<Route path="/ai-simulator" element={<MatchSimulator />} />
<Route path="/settings" element={<Settings />} />
<Route path="/more" element={<More />} />
<Route path="*" element={<Matches />} />
Expand Down
1 change: 1 addition & 0 deletions src/components/Icon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ const PATHS = {
info: 'M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18Zm0 4.5h.01M12 11v5',
download: 'M12 4v11m0 0 4-4m-4 4-4-4M4 19h16',
external: 'M14 5h5v5M19 5l-8 8M9 5H6a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-3',
bolt: 'M13 3 4 14h6l-1 7 9-11h-6l1-7Z',
}

export type IconName = keyof typeof PATHS
Expand Down
3 changes: 2 additions & 1 deletion src/components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const NAV: { to: string; key: string; icon: IconName }[] = [
{ to: '/watch', key: 'navWatch', icon: 'tv' },
{ to: '/stats', key: 'navStats', icon: 'chart' },
{ to: '/forecast', key: 'navSim', icon: 'target' },
{ to: '/ai-simulator', key: 'navAiSim', icon: 'bolt' },
{ to: '/settings', key: 'navSettings', icon: 'gear' },
]

Expand Down Expand Up @@ -182,7 +183,7 @@ export default function Layout() {
</nav>
<a
className="gh-link"
href="https://github.com/26worldcup/26worldcup.github.io"
href="https://github.com/CarJoshEly/26worldcup"
target="_blank"
rel="noopener noreferrer"
aria-label="GitHub"
Expand Down
16 changes: 16 additions & 0 deletions src/i18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ const en: Dict = {
probHide: 'Hide win probability',
// ---- tournament forecast ----
navSim: 'Forecast',
navAiSim: 'AI Match Simulator',
simTitle: 'Tournament forecast',
simSub:
'Predict the whole World Cup by simulating it with the model probabilities: scores, tables, bracket, champion.',
Expand Down Expand Up @@ -359,6 +360,21 @@ const en: Dict = {
wmo95: 'Thunderstorm',
wmo96: 'Thunderstorm with hail',
wmo99: 'Thunderstorm with hail',
// AI Match Simulator
aimsTitle: 'AI Match Simulator',
aimsSub: 'Pick any two teams and let the Elo model predict how it plays out.',
aimsTeamA: 'Team A',
aimsTeamB: 'Team B',
aimsSwap: 'Swap teams',
aimsSimulate: 'Simulate Match',
aimsAnalyzing: 'Analyzing probabilities…',
aimsDraw: "It's a draw!",
aimsWinner: '{team} wins!',
aimsDrawLabel: 'Draw',
aimsHistory: 'Simulation history',
aimsClearHistory: 'Clear history',
aimsNote:
'Powered by the same Elo rating model used in the tournament Forecast page. For entertainment only — not an official prediction.',
}

export default en
16 changes: 16 additions & 0 deletions src/i18n/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ const es: Dict = {
probHide: 'Ocultar la probabilidad',
// ---- tournament forecast ----
navSim: 'Pronóstico',
navAiSim: 'Simulador IA',
simTitle: 'Pronóstico del torneo',
simSub:
'Pronostica todo el Mundial simulándolo con las probabilidades del modelo: marcadores, tablas, cuadro y campeón.',
Expand Down Expand Up @@ -353,6 +354,21 @@ const es: Dict = {
missDne: 'No participó',
missBanned: 'Excluido',
missNotMember: 'No miembro de la FIFA',
// AI Match Simulator
aimsTitle: 'AI Match Simulator',
aimsSub: 'Elige dos equipos y deja que el modelo Elo prediga cómo terminaría el partido.',
aimsTeamA: 'Equipo A',
aimsTeamB: 'Equipo B',
aimsSwap: 'Intercambiar equipos',
aimsSimulate: 'Simular Partido',
aimsAnalyzing: 'Analizando probabilidades…',
aimsDraw: '¡Empate!',
aimsWinner: '¡Gana {team}!',
aimsDrawLabel: 'Empate',
aimsHistory: 'Historial de simulaciones',
aimsClearHistory: 'Limpiar historial',
aimsNote:
'Usa el mismo modelo de calificación Elo de la página de Pronóstico del torneo. Solo con fines de entretenimiento — no es una predicción oficial.',
}

export default es
Loading