import type { Metadata } from "next";
import Script from "next/script";
import { Outfit, Space_Grotesk } from "next/font/google";
import "./globals.css";
import { ReduxProvider } from "@/redux/Provider";
import { ThemeProvider } from "./contexts/ThemeContext";
import SocialSidebar from "./components/SocialSidebar";
import Navbar from "./components/Navbar";
import Footer from "./components/Footer";

const outfit = Outfit({
  variable: "--font-outfit",
  subsets: ["latin"],
  weight: ["300", "400", "500", "600", "700", "800"],
});

const spaceGrotesk = Space_Grotesk({
  variable: "--font-space-grotesk",
  subsets: ["latin"],
  weight: ["400", "500", "600", "700"],
});

export const metadata: Metadata = {
  title: "MSBSGOV - Maharashtra Solar Business Syndicate | Green Energy Ecosystem",
  description: "India's leading B2B & B2C digital green energy ecosystem offering e-commerce, tender management, branding, advertising, marketing, financial assistance, and software support for renewable energy sector.",
  keywords: "solar energy, green energy, B2B ecommerce, B2C ecommerce, EV charging, wind power, solar street lights, tender management, Maharashtra, India",
};

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="en" className="scroll-smooth overflow-x-hidden">
      <body
        className={`${outfit.variable} ${spaceGrotesk.variable} antialiased overflow-x-hidden`}
      >
        <Script
          id="suppress-hmr-errors"
          strategy="beforeInteractive"
          dangerouslySetInnerHTML={{
            __html: `
              (function() {
                // Disable HMR to prevent automatic refreshes
                if (window.__NEXT_HMR_LATENCY_CB) {
                  window.__NEXT_HMR_LATENCY_CB = undefined;
                }
                
                // Prevent automatic page refresh from HMR by intercepting beforeunload
                window.addEventListener('beforeunload', function(e) {
                  const isHmrRefresh = window.__NEXT_HMR_LATENCY_CB !== undefined || 
                                      document.querySelector('script[src*="webpack-hmr"]') !== null ||
                                      document.querySelector('script[src*="next/webpack-hmr"]') !== null;
                  if (isHmrRefresh) {
                    e.preventDefault();
                    e.returnValue = '';
                    return '';
                  }
                });
                
                // Suppress WebSocket HMR errors in console only - don't override WebSocket
                const originalError = console.error;
                console.error = function() {
                  const message = Array.from(arguments).join(' ');
                  if (message.includes('WebSocket connection to') && 
                      (message.includes('webpack-hmr') || message.includes('next/webpack-hmr') || message.includes('/_next/webpack-hmr')) ||
                      message.includes('HMR') ||
                      message.includes('Fast Refresh')) {
                    return; // Suppress this error
                  }
                  originalError.apply(console, arguments);
                };
                
                // Suppress uncaught promise rejections for WebSocket errors
                window.addEventListener('unhandledrejection', function(e) {
                  if (e.reason && (
                    (typeof e.reason === 'string' && (e.reason.includes('WebSocket') || e.reason.includes('HMR') || e.reason.includes('Fast Refresh')) && 
                     (e.reason.includes('webpack-hmr') || e.reason.includes('next/webpack-hmr') || e.reason.includes('/_next/webpack-hmr'))) ||
                    (e.reason && e.reason.message && (e.reason.message.includes('WebSocket') || e.reason.message.includes('HMR') || e.reason.message.includes('Fast Refresh')) && 
                     (e.reason.message.includes('webpack-hmr') || e.reason.message.includes('next/webpack-hmr') || e.reason.message.includes('/_next/webpack-hmr')))
                  )) {
                    e.preventDefault();
                    return false;
                  }
                });
                
                // Also suppress error events
                window.addEventListener('error', function(e) {
                  if (e.message && (e.message.includes('WebSocket') || e.message.includes('HMR') || e.message.includes('Fast Refresh')) && 
                      (e.message.includes('webpack-hmr') || e.message.includes('next/webpack-hmr') || e.message.includes('/_next/webpack-hmr'))) {
                    e.preventDefault();
                    return false;
                  }
                }, true);
              })();
            `,
          }}
        />
        <Script src="https://checkout.razorpay.com/v1/checkout.js" strategy="lazyOnload" />
        <ThemeProvider>
          <ReduxProvider>
            <div className="flex flex-col min-h-screen">
              <Navbar />
              <main className="flex-grow">
                {children}
              </main>
              <Footer />
            </div>
            <SocialSidebar />
          </ReduxProvider>
        </ThemeProvider>
      </body>
    </html>
  );
}
