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:
2026-06-15 18:08:23 +02:00
parent 187ee2e312
commit b141356247
125 changed files with 279 additions and 322 deletions
+76
View File
@@ -0,0 +1,76 @@
{
"groups": [
{
"name": "Group A",
"teams": [
"France",
"Senegal",
"Uruguay",
"Denmark"
]
},
{
"name": "Group B",
"teams": [
"Paraguay",
"South Africa",
"Spain",
"Slovenia"
]
},
{
"name": "Group C",
"teams": [
"Brazil",
"Turkey",
"China",
"Costa Rica"
]
},
{
"name": "Group D",
"teams": [
"South Korea",
"Poland",
"United States",
"Portugal"
]
},
{
"name": "Group E",
"teams": [
"Republic of Ireland",
"Cameroon",
"Germany",
"Saudi Arabia"
]
},
{
"name": "Group F",
"teams": [
"Argentina",
"Nigeria",
"England",
"Sweden"
]
},
{
"name": "Group G",
"teams": [
"Croatia",
"Mexico",
"Italy",
"Ecuador"
]
},
{
"name": "Group H",
"teams": [
"Japan",
"Belgium",
"Russia",
"Tunisia"
]
}
]
}
File diff suppressed because it is too large Load Diff
+8
View File
@@ -0,0 +1,8 @@
{
"host": "Japan / South Korea",
"teams_count": 32,
"winner": "Brazil",
"runner_up": "Germany",
"third_place": "Turkey",
"fourth_place": "South Korea"
}
File diff suppressed because it is too large Load Diff
+116
View File
@@ -0,0 +1,116 @@
{
"stadiums": [
{
"name": "Jeju World Cup Stadium",
"city": "Seogwipo"
},
{
"name": "Big Swan Stadium",
"city": "Niigata"
},
{
"name": "Big Eye Stadium",
"city": "Ōita"
},
{
"name": "Suwon World Cup Stadium",
"city": "Suwon"
},
{
"name": "Jeonju World Cup Stadium",
"city": "Jeonju"
},
{
"name": "Kobe Wing Stadium",
"city": "Kobe"
},
{
"name": "Miyagi Stadium",
"city": "Rifu"
},
{
"name": "Daejeon World Cup Stadium",
"city": "Daejeon"
},
{
"name": "Stadium Ecopa",
"city": "Fukuroi"
},
{
"name": "Munsu Cup Stadium",
"city": "Ulsan"
},
{
"name": "Gwangju World Cup Stadium",
"city": "Gwangju"
},
{
"name": "Nagai Stadium",
"city": "Osaka"
},
{
"name": "Seoul World Cup Stadium",
"city": "Seoul"
},
{
"name": "Saitama Stadium",
"city": "Saitama"
},
{
"name": "Daegu World Cup Stadium",
"city": "Daegu"
},
{
"name": "International Stadium",
"city": "Yokohama"
},
{
"name": "Busan Asiad Main Stadium",
"city": "Busan"
},
{
"name": "Incheon World Cup Stadium",
"city": "Incheon"
},
{
"name": "Munsu Football Stadium",
"city": "Ulsan"
},
{
"name": "Niigata Stadium",
"city": "Niigata"
},
{
"name": "Sapporo Dome",
"city": "Sapporo"
},
{
"name": "Kashima Soccer Stadium",
"city": "Ibaraki"
},
{
"name": "Ecopa Stadium",
"city": "Shizuoka"
},
{
"name": "International Stadium Yokohama",
"city": "Yokohama"
},
{
"name": "Wing Stadium",
"city": "Kobe"
},
{
"name": "Niigata Big Swan Stadium",
"city": "Niigata"
},
{
"name": "Ōita Big Eye Stadium",
"city": "Ōita"
},
{
"name": "Shizuoka Ecopa Stadium",
"city": "Fukuroi, Shizuoka"
}
]
}