b141356247
- 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>
52 lines
2.0 KiB
TypeScript
52 lines
2.0 KiB
TypeScript
import type { Metadata } from 'next'
|
|
import { Bebas_Neue, Space_Grotesk } from 'next/font/google'
|
|
import Script from 'next/script'
|
|
import './globals.css'
|
|
import { Nav } from '@/components/nav'
|
|
import { AppApolloProvider } from '@/components/apollo-provider'
|
|
|
|
const bebasNeue = Bebas_Neue({ weight: '400', subsets: ['latin'], variable: '--font-bebas' })
|
|
const spaceGrotesk = Space_Grotesk({ subsets: ['latin'], variable: '--font-space' })
|
|
|
|
export const metadata: Metadata = {
|
|
title: { default: 'World Cup', template: '%s · World Cup' },
|
|
description: 'Comprehensive World Cup statistics from 1930 to 2026',
|
|
icons: {
|
|
icon: [
|
|
{ url: '/favicon.svg', type: 'image/svg+xml' },
|
|
{ url: '/favicon-32x32.png', sizes: '32x32', type: 'image/png' },
|
|
],
|
|
apple: [
|
|
{ url: '/apple-touch-icon.png', sizes: '180x180', type: 'image/png' },
|
|
],
|
|
},
|
|
}
|
|
|
|
const umamiId = process.env.UMAMI_ID
|
|
const umamiSrc = process.env.UMAMI_SRC
|
|
|
|
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
return (
|
|
<html lang="en" data-scroll-behavior="smooth" className={`${bebasNeue.variable} ${spaceGrotesk.variable}`}>
|
|
<body>
|
|
{umamiId && umamiSrc && (
|
|
<Script src={umamiSrc} data-website-id={umamiId} strategy="lazyOnload" />
|
|
)}
|
|
<AppApolloProvider>
|
|
<Nav />
|
|
<main className="pt-[60px] min-h-screen">{children}</main>
|
|
<footer className="border-t border-green/8 mt-8">
|
|
<div className="max-w-[1200px] mx-auto px-7 py-6 flex flex-col sm:flex-row items-center justify-between gap-2 text-[11px] text-green-dark">
|
|
<span>© {new Date().getFullYear()} World Cup Statistics.</span>
|
|
<a href="https://dev.pivoine.art" target="_blank" rel="noopener noreferrer"
|
|
className="text-green-muted hover:text-green transition-colors">
|
|
dev.pivoine.art
|
|
</a>
|
|
</div>
|
|
</footer>
|
|
</AppApolloProvider>
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|