import type { Metadata } from "next";
import { Noto_Sans_TC } from "next/font/google";
import { Toaster } from "@/components/ui/sonner";
import { Footer } from "@/components/layout/Footer";
import { Header } from "@/components/layout/Header";
import {
  getCurrentUser,
  userHasActiveMembership,
} from "@/lib/user-auth";
import { AdSlot } from "@/components/shared/AdSlot";
import { SiteAdWrapper } from "@/components/shared/SiteAdWrapper";
import { siteConfig } from "@/lib/site-config";
import "./globals.css";

const notoSansTC = Noto_Sans_TC({
  variable: "--font-noto-sans-tc",
  subsets: ["latin"],
  weight: ["400", "500", "600", "700"],
});

export const metadata: Metadata = {
  title: {
    default: siteConfig.title,
    template: `%s | ${siteConfig.name}`,
  },
  description: siteConfig.description,
  openGraph: {
    title: siteConfig.title,
    description: siteConfig.description,
    locale: "zh_TW",
    type: "website",
  },
};

export default async function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  const user = await getCurrentUser();
  const isMember = user ? await userHasActiveMembership(user.id) : false;

  const headerAuth = user
    ? { email: user.email, name: user.name, isMember }
    : null;

  return (
    <html lang="zh-Hant" className={`${notoSansTC.variable} dark`}>
      <body className="min-h-screen font-sans antialiased">
        <Header auth={headerAuth} />
        <main className="flex-1">{children}</main>
        <SiteAdWrapper>
          <div className="mx-auto max-w-7xl px-4 py-6 sm:px-6 lg:px-8">
            <AdSlot slot="site_footer" />
          </div>
        </SiteAdWrapper>
        <Footer />
        <Toaster />
      </body>
    </html>
  );
}