/* eslint-disable formatjs/no-literal-string-in-jsx */

import "@scandic-hotels/design-system/fonts.css"
import "@/app/globals.css"
import "@/public/_static/css/design-system-current-deprecated.css"
import "@scandic-hotels/design-system/style.css"

import Script from "next/script"

import { Lang } from "@/constants/languages"

import TokenRefresher from "@/components/Auth/TokenRefresher"
import CookieBotConsent from "@/components/CookieBot"
import AdobeScript from "@/components/Current/AdobeScript"
import Footer from "@/components/Current/Footer"
import LangPopup from "@/components/Current/LangPopup"
import SkipToMainContent from "@/components/SkipToMainContent"
import RouterTracking from "@/components/TrackingSDK/RouterTracking"
import { getMessages } from "@/i18n"
import ClientIntlProvider from "@/i18n/Provider"
import { setLang } from "@/i18n/serverContext"

import type { Metadata } from "next"

import type { LangParams, LayoutArgs } from "@/types/params"

export const fetchCache = "default-no-store"

export const metadata: Metadata = {
  title: "Scandic Hotels",
}

export default async function RootLayout(
  props: React.PropsWithChildren<
    LayoutArgs<LangParams> & { header: React.ReactNode }
  >
) {
  const params = await props.params;

  const {
    children,
    header
  } = props;

  setLang(params.lang)
  const messages = await getMessages(params.lang)

  return (
    <html lang={params.lang}>
      <head>
        {/* eslint-disable-next-line @next/next/no-css-tags */}
        <link rel="stylesheet" href="/_static/css/core.css" />
        {/* eslint-disable-next-line @next/next/no-css-tags */}
        <link rel="stylesheet" href="/_static/css/scandic.css" />
        <Script
          strategy="beforeInteractive"
          data-blockingmode="auto"
          data-cbid="6d539de8-3e67-4f0f-a0df-8cef9070f712"
          data-culture={params.lang}
          id="Cookiebot"
          src="https://consent.cookiebot.com/uc.js"
        />
        <Script id="ensure-datalayer">{`
          window.datalayer = window.datalayer || {}
        `}</Script>
        <AdobeScript />
      </head>
      <body className="theme-00Corecolours theme-X0Oldcorecolours">
        <LangPopup />
        <SkipToMainContent />
        <ClientIntlProvider
          defaultLocale={Lang.en}
          locale={params.lang}
          messages={messages}
        >
          <RouterTracking />
          {header}
          {children}
          <Footer />
          <TokenRefresher />
          <CookieBotConsent />
        </ClientIntlProvider>
        <Script id="page-tracking">{`
          if (typeof _satellite !== "undefined" && typeof _satellite.pageBottom === "function") {
            _satellite.pageBottom();
          }
        `}</Script>
      </body>
    </html>
  )
}
