- Fix ticker tape CLS with skeleton loader and fixed height - Add Inter font, max-width container, responsive dvh units - Hero metrics: trend deltas, per-metric sparkline colors, 3+2 grid - GPU calculator: step=100 slider + text input, PUE factor, region comparison bars - Grid stress: replace misleading arc gauges with demand status bars - Demand summary: expand to 4-metric highlights grid - Charts: responsive heights, ISO/non-ISO toggle, correlation R² + trend line - Map: US-wide default view, marker clustering, enriched region panels, zoom controls - Fix NYISO polygon (NYC), MISO polygon (Michigan), MISO south (MS/LA) - Add automated ingestion via instrumentation.ts - Add data freshness indicator in footer - Fix backfill start date to 2019-01-01 (EIA RTO data availability)
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import type { Metadata } from 'next';
|
|
import { ThemeProvider } from 'next-themes';
|
|
import { Inter } from 'next/font/google';
|
|
import { Toaster } from 'sonner';
|
|
|
|
import { Footer } from '@/components/layout/footer.js';
|
|
import { Nav } from '@/components/layout/nav.js';
|
|
|
|
import './globals.css';
|
|
|
|
const inter = Inter({
|
|
subsets: ['latin'],
|
|
display: 'swap',
|
|
variable: '--font-inter',
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
title: 'Energy & AI Dashboard',
|
|
description:
|
|
'Interactive dashboard visualizing how AI datacenter buildout is driving regional electricity demand and energy prices',
|
|
};
|
|
|
|
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
return (
|
|
<html lang="en" className={inter.variable} suppressHydrationWarning>
|
|
<body className="flex min-h-dvh flex-col font-sans antialiased">
|
|
<ThemeProvider attribute="class" defaultTheme="dark" enableSystem={false} disableTransitionOnChange>
|
|
<Nav />
|
|
<main className="mx-auto w-full max-w-[1920px] flex-1">{children}</main>
|
|
<Footer />
|
|
<Toaster theme="dark" richColors position="bottom-right" />
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|