import type { Metadata, Viewport } from "next";
import { Inter, JetBrains_Mono } from "next/font/google";
import { ColorSchemeScript } from "@mantine/core";
import { AppProviders } from "@/components/providers/AppProviders";
import { SEO_GLOBAL_KEYWORDS } from "@/data/seo/keywords-pool";
import { APP_FULL_TITLE, APP_NAME, APP_TAGLINE, SITE_URL } from "@/utils/constants";
import "./globals.css";
import "@mantine/core/styles.css";
import "@mantine/dates/styles.css";
import "@mantine/notifications/styles.css";

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

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

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

export const metadata: Metadata = {
  metadataBase: new URL(SITE_URL),
  title: {
    default: APP_FULL_TITLE,
    template: `%s | ${APP_NAME}`,
  },
  description: APP_TAGLINE,
  keywords: SEO_GLOBAL_KEYWORDS,
  authors: [{ name: APP_NAME }],
  openGraph: {
    type: "website",
    locale: "pt_BR",
    url: SITE_URL,
    siteName: APP_NAME,
    title: `${APP_NAME} | Aplicativos Profissionais`,
    description: APP_TAGLINE,
  },
  twitter: {
    card: "summary_large_image",
    title: APP_NAME,
    description: APP_TAGLINE,
  },
  robots: {
    index: true,
    follow: true,
  },
};

export const viewport: Viewport = {
  themeColor: [
    { media: "(prefers-color-scheme: light)", color: "#f8fafc" },
    { media: "(prefers-color-scheme: dark)", color: "#060818" },
  ],
  width: "device-width",
  initialScale: 1,
};

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="pt-BR" suppressHydrationWarning>
      <head>
        <ColorSchemeScript defaultColorScheme="dark" />
        <script
          dangerouslySetInnerHTML={{
            __html: `(function(){try{var d=document.documentElement,s="dark";var z=localStorage.getItem("nogahost-theme");if(z){var p=JSON.parse(z);if(p&&p.state&&p.state.colorScheme==="light")s="light";}d.setAttribute("data-mantine-color-scheme",s);localStorage.setItem("mantine-color-scheme-value",s);}catch(e){document.documentElement.setAttribute("data-mantine-color-scheme","dark");}})();`,
          }}
        />
      </head>
      <body
        className={`${sans.variable} ${display.variable} ${mono.variable}`}
        style={{ backgroundColor: "#060818", color: "#dce3f1" }}
      >
        <AppProviders>{children}</AppProviders>
      </body>
    </html>
  );
}
