import type { Metadata } from "next";
import { Inter, Space_Grotesk, JetBrains_Mono } from "next/font/google";
import "./globals.css";
import { AdSlot } from "@/components/ads/AdSlot";
import { AnalyticsTracker } from "@/components/analytics/AnalyticsTracker";
import { ConsentBanner } from "@/components/consent/ConsentBanner";
import { Footer } from "@/components/layout/Footer";
import { Header } from "@/components/layout/Header";
import { getCurrentUser, hasPremium } from "@/lib/auth";

const inter = Inter({
  subsets: ["latin"],
  variable: "--font-sans",
  display: "swap",
});

const spaceGrotesk = Space_Grotesk({
  subsets: ["latin"],
  weight: ["500", "600", "700"],
  variable: "--font-display",
  display: "swap",
});

const jetbrainsMono = JetBrains_Mono({
  subsets: ["latin"],
  variable: "--font-mono",
  display: "swap",
});

export const metadata: Metadata = {
  title: {
    default: "Toolaro – Kostenlose Online-Tools für Alltag und Entwicklung",
    template: "%s | Toolaro",
  },
  description:
    "Kostenlose Webtools für QR-Codes, Passwörter, Texte, Rechner und Developer-Aufgaben. Ohne Anmeldung direkt im Browser nutzbar.",
  keywords: ["tools", "webtools", "online tools", "qr code", "passwort generator", "prozentrechner"],
  metadataBase: new URL(process.env.NEXT_PUBLIC_SITE_URL ?? "https://toolaro.org"),
  openGraph: {
    type: "website",
    locale: "de_DE",
    url: process.env.NEXT_PUBLIC_SITE_URL ?? "https://toolaro.org",
    siteName: "Toolaro",
    images: [
      {
        url: "/brand/toolaro-banner.png",
        width: 1723,
        height: 481,
        alt: "Toolaro.org - Online-Tools für den Alltag",
      },
    ],
  },
  icons: {
    icon: "/brand/toolaro-favicon.svg",
    apple: "/apple-touch-icon.png",
  },
  robots: {
    index: true,
    follow: true,
  },
};

export default async function RootLayout({ children }: { children: React.ReactNode }) {
  const user = await getCurrentUser();
  const premium = hasPremium(user);

  return (
    <html
      lang="de"
      className={`${inter.variable} ${spaceGrotesk.variable} ${jetbrainsMono.variable}`}
    >
      <body
        className="overflow-x-clip bg-surface-base font-sans text-ink-primary antialiased"
        data-premium={premium ? "true" : "false"}
      >
        <a
          href="#main"
          className="sr-only focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[100] focus:rounded-md focus:bg-ink-primary focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-surface-base"
        >
          Zum Hauptinhalt
        </a>
        <Header />
        <div className="mx-auto grid w-full max-w-[1560px] grid-cols-1 gap-6 xl:grid-cols-[160px_minmax(0,1fr)_160px] xl:px-4">
          <aside className="hidden xl:block" aria-label="Linke Anzeigenleiste">
            <div className="sticky top-28">
              {!premium && <AdSlot slot="rail" side="left" className="mx-0" />}
            </div>
          </aside>
          <main id="main" className="min-h-screen min-w-0">
            {children}
          </main>
          <aside className="hidden xl:block" aria-label="Rechte Anzeigenleiste">
            <div className="sticky top-28">
              {!premium && <AdSlot slot="rail" side="right" className="mx-0" />}
            </div>
          </aside>
        </div>
        <Footer />
        <ConsentBanner />
        <AnalyticsTracker />
      </body>
    </html>
  );
}
