import type { Metadata } from "next";
import { headers } from "next/headers";

import "./globals.css";

import ReactQueryProvider from "@/providers/react-query-provider";
import ReduxProvider from "../redux/store-provider";

import Header from "../components/layouts/header";
import Footer from "../components/layouts/footer";
import ScrollToTop from "../components/custom-components/scroll-to-top";
import WhatsAppButton from "../components/custom-components/whatsapp-button";
import GlobalModal from "../components/modal/container";
import Overlays from "../components/layouts/overlays";
import { getLayoutSeo } from "../utils/seo/seo-utils";
import { SeoScripts } from "../components/layouts/seo";

export async function generateMetadata(): Promise<Metadata> {
  const seo = await getLayoutSeo();
  const isDevelopment = process.env.NEXT_PUBLIC_ENV === "development";
  return {
    ...seo,
    robots: isDevelopment ? "noindex, nofollow" : "index, follow",
  };
}

export default async function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  const headersList = await headers();
  const host = headersList.get("host");

  return (
    <html
      lang="en"
      className="h-full antialiased"
    >
      <body className="min-h-full flex flex-col bg-white">
        <ReactQueryProvider>
          <ReduxProvider subdomain={host}>
            <Header />
            <SeoScripts />
            <main className="flex-1">
              {children}
            </main>

            <Footer />

            <ScrollToTop />
            <WhatsAppButton />
            <GlobalModal />
            <Overlays />
          </ReduxProvider>
        </ReactQueryProvider>
      </body>
    </html>
  );
}