refactor: replace hardcoded hex colors with theme tokens, move data/ to root
- Add --color-green-mid token (#4a7a55) to @theme for dimmer stat values
- Replace all text-[#hex]/bg-[#hex] arbitrary values with named tokens:
text-green, text-green-light, text-green-sec, text-green-muted,
text-green-dark, text-green-mid, text-text, bg-card, bg-bg, border-border
- Replace rgba(34,197,94,X) inline styles with bg-green/X opacity modifiers
- Convert single-prop style={{ borderColor/background }} to className
- Fix SVG stroke="#dff5e8" → stroke="currentColor"
- Use CSS variables in globals.css base styles (background-color, color)
- Move app/data/wikipedia/ → data/ (project root, not inside Next.js app dir)
- Update Dockerfile, seed.ts, scrape-wikipedia.ts paths accordingly
- Remove unused app/data/world_cup.csv
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"groups": [
|
||||
{
|
||||
"name": "Group 1",
|
||||
"teams": [
|
||||
"Brazil",
|
||||
"Mexico",
|
||||
"Yugoslavia",
|
||||
"Switzerland"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Group 2",
|
||||
"teams": [
|
||||
"England",
|
||||
"Chile",
|
||||
"Spain",
|
||||
"United States"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Group 3",
|
||||
"teams": [
|
||||
"Sweden",
|
||||
"Italy",
|
||||
"Paraguay"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Group 4",
|
||||
"teams": [
|
||||
"Uruguay",
|
||||
"Bolivia"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,753 @@
|
||||
{
|
||||
"matches": [
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 1",
|
||||
"date": "1950-06-24",
|
||||
"time": "15:00",
|
||||
"team1": "Brazil",
|
||||
"team2": "Mexico",
|
||||
"score": {
|
||||
"ft": [
|
||||
4,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Ademir",
|
||||
"minute": 30
|
||||
},
|
||||
{
|
||||
"name": "Ademir",
|
||||
"minute": 79
|
||||
},
|
||||
{
|
||||
"name": "Jair",
|
||||
"minute": 65
|
||||
},
|
||||
{
|
||||
"name": "Baltazar",
|
||||
"minute": 71
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Maracanã, Rio de Janeiro"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 1",
|
||||
"date": "1950-06-25",
|
||||
"time": "15:00",
|
||||
"team1": "Yugoslavia",
|
||||
"team2": "Switzerland",
|
||||
"score": {
|
||||
"ft": [
|
||||
3,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Mitić",
|
||||
"minute": 59
|
||||
},
|
||||
{
|
||||
"name": "Tomašević",
|
||||
"minute": 70
|
||||
},
|
||||
{
|
||||
"name": "Ognjanov",
|
||||
"minute": 84
|
||||
}
|
||||
],
|
||||
"ground": "Estádio Independência, Belo Horizonte"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 1",
|
||||
"date": "1950-06-28",
|
||||
"time": "15:00",
|
||||
"team1": "Brazil",
|
||||
"team2": "Switzerland",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
2
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Alfredo",
|
||||
"minute": 3
|
||||
},
|
||||
{
|
||||
"name": "Baltazar",
|
||||
"minute": 32
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Fatton",
|
||||
"minute": 17
|
||||
},
|
||||
{
|
||||
"name": "Fatton",
|
||||
"minute": 88
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Pacaembu, São Paulo"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 1",
|
||||
"date": "1950-06-28",
|
||||
"time": "15:00",
|
||||
"team1": "Yugoslavia",
|
||||
"team2": "Mexico",
|
||||
"score": {
|
||||
"ft": [
|
||||
4,
|
||||
1
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Bobek",
|
||||
"minute": 20
|
||||
},
|
||||
{
|
||||
"name": "Ž. Čajkovski",
|
||||
"minute": 23
|
||||
},
|
||||
{
|
||||
"name": "Ž. Čajkovski",
|
||||
"minute": 51
|
||||
},
|
||||
{
|
||||
"name": "Tomašević",
|
||||
"minute": 81
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Ortiz",
|
||||
"minute": 89,
|
||||
"penalty": true
|
||||
}
|
||||
],
|
||||
"ground": "Estádio dos Eucaliptos, Porto Alegre"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 1",
|
||||
"date": "1950-07-01",
|
||||
"time": "15:00",
|
||||
"team1": "Brazil",
|
||||
"team2": "Yugoslavia",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Ademir",
|
||||
"minute": 4
|
||||
},
|
||||
{
|
||||
"name": "Zizinho",
|
||||
"minute": 69
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Maracanã, Rio de Janeiro"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 1",
|
||||
"date": "1950-07-02",
|
||||
"time": "15:40",
|
||||
"team1": "Switzerland",
|
||||
"team2": "Mexico",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
1
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Bader",
|
||||
"minute": 10
|
||||
},
|
||||
{
|
||||
"name": "Antenen",
|
||||
"minute": 44
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Casarín",
|
||||
"minute": 89
|
||||
}
|
||||
],
|
||||
"ground": "Estádio dos Eucaliptos, Porto Alegre"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 2",
|
||||
"date": "1950-06-25",
|
||||
"time": "15:00",
|
||||
"team1": "England",
|
||||
"team2": "Chile",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Mortensen",
|
||||
"minute": 39
|
||||
},
|
||||
{
|
||||
"name": "Mannion",
|
||||
"minute": 51
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Maracanã, Rio de Janeiro"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 2",
|
||||
"date": "1950-06-25",
|
||||
"time": "15:00",
|
||||
"team1": "Spain",
|
||||
"team2": "United States",
|
||||
"score": {
|
||||
"ft": [
|
||||
3,
|
||||
1
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Igoa",
|
||||
"minute": 81
|
||||
},
|
||||
{
|
||||
"name": "Basora",
|
||||
"minute": 83
|
||||
},
|
||||
{
|
||||
"name": "Zarra",
|
||||
"minute": 89
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Pariani",
|
||||
"minute": 17
|
||||
}
|
||||
],
|
||||
"ground": "Estádio Durival de Britto, Curitiba"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 2",
|
||||
"date": "1950-06-29",
|
||||
"time": "15:00",
|
||||
"team1": "Spain",
|
||||
"team2": "Chile",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Basora",
|
||||
"minute": 17
|
||||
},
|
||||
{
|
||||
"name": "Zarra",
|
||||
"minute": 30
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Maracanã, Rio de Janeiro"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 2",
|
||||
"date": "1950-06-29",
|
||||
"time": "15:00",
|
||||
"team1": "United States",
|
||||
"team2": "England",
|
||||
"score": {
|
||||
"ft": [
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Gaetjens",
|
||||
"minute": 38
|
||||
}
|
||||
],
|
||||
"ground": "Estádio Independência, Belo Horizonte"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 2",
|
||||
"date": "1950-07-02",
|
||||
"time": "15:00",
|
||||
"team1": "Spain",
|
||||
"team2": "England",
|
||||
"score": {
|
||||
"ft": [
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Zarra",
|
||||
"minute": 48
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Maracanã, Rio de Janeiro"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 2",
|
||||
"date": "1950-07-02",
|
||||
"time": "15:00",
|
||||
"team1": "Chile",
|
||||
"team2": "United States",
|
||||
"score": {
|
||||
"ft": [
|
||||
5,
|
||||
2
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Robledo",
|
||||
"minute": 16
|
||||
},
|
||||
{
|
||||
"name": "Cremaschi",
|
||||
"minute": 32
|
||||
},
|
||||
{
|
||||
"name": "Cremaschi",
|
||||
"minute": 60
|
||||
},
|
||||
{
|
||||
"name": "Prieto",
|
||||
"minute": 54
|
||||
},
|
||||
{
|
||||
"name": "Riera",
|
||||
"minute": 82
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Wallace",
|
||||
"minute": 47
|
||||
},
|
||||
{
|
||||
"name": "Maca",
|
||||
"minute": 48,
|
||||
"penalty": true
|
||||
}
|
||||
],
|
||||
"ground": "Estádio Ilha do Retiro, Recife"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 3",
|
||||
"date": "1950-06-25",
|
||||
"time": "15:00",
|
||||
"team1": "Sweden",
|
||||
"team2": "Italy",
|
||||
"score": {
|
||||
"ft": [
|
||||
3,
|
||||
2
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Jeppson",
|
||||
"minute": 25
|
||||
},
|
||||
{
|
||||
"name": "Jeppson",
|
||||
"minute": 68
|
||||
},
|
||||
{
|
||||
"name": "Andersson",
|
||||
"minute": 33
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Carapellese",
|
||||
"minute": 7
|
||||
},
|
||||
{
|
||||
"name": "Muccinelli",
|
||||
"minute": 75
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Pacaembu, São Paulo"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 3",
|
||||
"date": "1950-06-29",
|
||||
"time": "15:30",
|
||||
"team1": "Sweden",
|
||||
"team2": "Paraguay",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
2
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Sundqvist",
|
||||
"minute": 17
|
||||
},
|
||||
{
|
||||
"name": "Palmér",
|
||||
"minute": 26
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "López",
|
||||
"minute": 35
|
||||
},
|
||||
{
|
||||
"name": "López Fretes",
|
||||
"minute": 74
|
||||
}
|
||||
],
|
||||
"ground": "Estádio Durival Britto, Curitiba"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 3",
|
||||
"date": "1950-07-02",
|
||||
"time": "15:00",
|
||||
"team1": "Italy",
|
||||
"team2": "Paraguay",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Carapellese",
|
||||
"minute": 12
|
||||
},
|
||||
{
|
||||
"name": "Pandolfini",
|
||||
"minute": 62
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Pacaembu, São Paulo"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 4",
|
||||
"date": "1950-07-02",
|
||||
"time": "15:00",
|
||||
"team1": "Uruguay",
|
||||
"team2": "Bolivia",
|
||||
"score": {
|
||||
"ft": [
|
||||
8,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Míguez",
|
||||
"minute": 14
|
||||
},
|
||||
{
|
||||
"name": "Míguez",
|
||||
"minute": 40
|
||||
},
|
||||
{
|
||||
"name": "Míguez",
|
||||
"minute": 51
|
||||
},
|
||||
{
|
||||
"name": "Vidal",
|
||||
"minute": 18
|
||||
},
|
||||
{
|
||||
"name": "Schiaffino",
|
||||
"minute": 23
|
||||
},
|
||||
{
|
||||
"name": "Schiaffino",
|
||||
"minute": 54
|
||||
},
|
||||
{
|
||||
"name": "Pérez",
|
||||
"minute": 83
|
||||
},
|
||||
{
|
||||
"name": "Ghiggia",
|
||||
"minute": 87
|
||||
}
|
||||
],
|
||||
"ground": "Estádio Independência, Belo Horizonte"
|
||||
},
|
||||
{
|
||||
"round": "Final round",
|
||||
"date": "1950-07-09",
|
||||
"time": "15:00",
|
||||
"team1": "Uruguay",
|
||||
"team2": "Spain",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
2
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Ghiggia",
|
||||
"minute": 29
|
||||
},
|
||||
{
|
||||
"name": "Varela",
|
||||
"minute": 73
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Basora",
|
||||
"minute": 37
|
||||
},
|
||||
{
|
||||
"name": "Basora",
|
||||
"minute": 39
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Pacaembu, São Paulo"
|
||||
},
|
||||
{
|
||||
"round": "Final round",
|
||||
"date": "1950-07-09",
|
||||
"time": "15:00",
|
||||
"team1": "Brazil",
|
||||
"team2": "Sweden",
|
||||
"score": {
|
||||
"ft": [
|
||||
7,
|
||||
1
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Ademir",
|
||||
"minute": 17
|
||||
},
|
||||
{
|
||||
"name": "Ademir",
|
||||
"minute": 36
|
||||
},
|
||||
{
|
||||
"name": "Ademir",
|
||||
"minute": 52
|
||||
},
|
||||
{
|
||||
"name": "Ademir",
|
||||
"minute": 58
|
||||
},
|
||||
{
|
||||
"name": "Chico",
|
||||
"minute": 39
|
||||
},
|
||||
{
|
||||
"name": "Chico",
|
||||
"minute": 88
|
||||
},
|
||||
{
|
||||
"name": "Maneca",
|
||||
"minute": 85
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Andersson",
|
||||
"minute": 67,
|
||||
"penalty": true
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Maracanã, Rio de Janeiro"
|
||||
},
|
||||
{
|
||||
"round": "Final round",
|
||||
"date": "1950-07-13",
|
||||
"time": "15:00",
|
||||
"team1": "Brazil",
|
||||
"team2": "Spain",
|
||||
"score": {
|
||||
"ft": [
|
||||
6,
|
||||
1
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Ademir",
|
||||
"minute": 15
|
||||
},
|
||||
{
|
||||
"name": "Ademir",
|
||||
"minute": 57
|
||||
},
|
||||
{
|
||||
"name": "Jair",
|
||||
"minute": 21
|
||||
},
|
||||
{
|
||||
"name": "Chico",
|
||||
"minute": 31
|
||||
},
|
||||
{
|
||||
"name": "Chico",
|
||||
"minute": 55
|
||||
},
|
||||
{
|
||||
"name": "Zizinho",
|
||||
"minute": 67
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Igoa",
|
||||
"minute": 71
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Maracanã, Rio de Janeiro"
|
||||
},
|
||||
{
|
||||
"round": "Final round",
|
||||
"date": "1950-07-13",
|
||||
"time": "15:00",
|
||||
"team1": "Uruguay",
|
||||
"team2": "Sweden",
|
||||
"score": {
|
||||
"ft": [
|
||||
3,
|
||||
2
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Ghiggia",
|
||||
"minute": 39
|
||||
},
|
||||
{
|
||||
"name": "Míguez",
|
||||
"minute": 77
|
||||
},
|
||||
{
|
||||
"name": "Míguez",
|
||||
"minute": 85
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Palmér",
|
||||
"minute": 5
|
||||
},
|
||||
{
|
||||
"name": "Sundqvist",
|
||||
"minute": 40
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Pacaembu, São Paulo"
|
||||
},
|
||||
{
|
||||
"round": "Final round",
|
||||
"date": "1950-07-16",
|
||||
"time": "15:00",
|
||||
"team1": "Sweden",
|
||||
"team2": "Spain",
|
||||
"score": {
|
||||
"ft": [
|
||||
3,
|
||||
1
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Sundqvist",
|
||||
"minute": 15
|
||||
},
|
||||
{
|
||||
"name": "Mellberg",
|
||||
"minute": 33
|
||||
},
|
||||
{
|
||||
"name": "Palmér",
|
||||
"minute": 80
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Zarra",
|
||||
"minute": 82
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Pacaembu, São Paulo"
|
||||
},
|
||||
{
|
||||
"round": "Final round",
|
||||
"date": "1950-07-16",
|
||||
"time": "15:00",
|
||||
"team1": "Uruguay",
|
||||
"team2": "Brazil",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
1
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Schiaffino",
|
||||
"minute": 66
|
||||
},
|
||||
{
|
||||
"name": "Ghiggia",
|
||||
"minute": 79
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Friaça",
|
||||
"minute": 47
|
||||
}
|
||||
],
|
||||
"ground": "Estádio do Maracanã, Rio de Janeiro"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"host": "Brazil",
|
||||
"teams_count": 13,
|
||||
"winner": "Uruguay",
|
||||
"runner_up": "Brazil",
|
||||
"third_place": "Sweden",
|
||||
"fourth_place": "Spain"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"stadiums": [
|
||||
{
|
||||
"name": "Estádio do Maracanã",
|
||||
"city": "Rio de Janeiro"
|
||||
},
|
||||
{
|
||||
"name": "Estádio Independência",
|
||||
"city": "Belo Horizonte"
|
||||
},
|
||||
{
|
||||
"name": "Estádio do Pacaembu",
|
||||
"city": "São Paulo"
|
||||
},
|
||||
{
|
||||
"name": "Estádio dos Eucaliptos",
|
||||
"city": "Porto Alegre"
|
||||
},
|
||||
{
|
||||
"name": "Estádio Durival de Britto",
|
||||
"city": "Curitiba"
|
||||
},
|
||||
{
|
||||
"name": "Estádio Ilha do Retiro",
|
||||
"city": "Recife"
|
||||
},
|
||||
{
|
||||
"name": "Estádio Durival Britto",
|
||||
"city": "Curitiba"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user