import "../globals.css"
import type { Metadata, Viewport } from "next"
import { Poppins } from "next/font/google"
import Script from "next/script"
import { QueryProviderWrapper } from "@/lib/react-query/client"
import { ToasterProvider } from "@/context/ToasterContext"
import { ConfirmProvider } from "@/context/ConfirmDialogContext"
import { AuthProvider } from "@/context/AuthContext"
import { NotificationProvider } from "@/context/NotificationProvider"
import { NextIntlClientProvider } from 'next-intl'
import { notFound } from 'next/navigation'
import { locales } from '@/i18n/config'
import { getMessages } from 'next-intl/server'

export const metadata: Metadata = {
  title: "AIVLY - AI-Powered Salon Management",
  description: "Revolutionize your salon business with AIVLY's AI-powered management system. Streamline appointments, customer relations, and operations with intelligent automation.",
  icons: {
    icon: "/assets/images/aivly_fav.png",
    shortcut: "/assets/images/aivly_fav.png",
    apple: "/assets/images/aivly_fav.png"
  }
}

export const viewport: Viewport = {
  maximumScale: 1
}

const poppins = Poppins({ subsets: ["latin"], weight: "400" })

export async function generateStaticParams() {
  return locales.map((locale) => ({ locale }))
}

export default async function LocaleLayout({
  children,
  params
}: {
  children: React.ReactNode
  params: Promise<{ locale: string }>
}) {
  const { locale } = await params

  if (!locales.includes(locale as any)) {
    notFound()
  }

  const messages = await getMessages()

  return (
    <html lang={locale}>
      <body className={` ${poppins.className} antialiased`}>
        <NextIntlClientProvider messages={messages}>
          <Script
            src={`https://maps.googleapis.com/maps/api/js?key=${process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY}&libraries=places`}
            strategy="afterInteractive"
          />
          <Script
            id="fb-sdk-init"
            strategy="afterInteractive"
            dangerouslySetInnerHTML={{
              __html: `
                window.fbAsyncInit = function() {
                  FB.init({
                    appId: '${process.env.NEXT_PUBLIC_META_APP_ID || ''}',
                    autoLogAppEvents: true,
                    xfbml: true,
                    version: 'v24.0'
                  });
                };
              `
            }}
          />
          <Script
            src="https://connect.facebook.net/en_US/sdk.js"
            strategy="afterInteractive"
            crossOrigin="anonymous"
          />
          <ToasterProvider>
            <QueryProviderWrapper>
              <ConfirmProvider>
                <NotificationProvider>
                  <AuthProvider>
                    {children}
                  </AuthProvider>
                </NotificationProvider>
              </ConfirmProvider>
            </QueryProviderWrapper>
          </ToasterProvider>
        </NextIntlClientProvider>
      </body>
    </html>
  )
}
