import type { Metadata, Viewport } from 'next';
import { Space_Grotesk, Inter, JetBrains_Mono } from 'next/font/google';
import { ThemeProvider } from '@/components/theme-provider';
import { Toaster } from 'sonner';
import './globals.css';

const spaceGrotesk = Space_Grotesk({
  subsets: ['latin'],
  variable: '--font-space-grotesk',
  display: 'swap',
});

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

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

export const metadata: Metadata = {
  metadataBase: new URL(process.env.NEXT_PUBLIC_APP_URL ?? 'http://localhost:3000'),
  title: {
    default: 'SwiftPay VTU — Airtime, Data, Bills & Education Pins, Instantly',
    template: '%s | SwiftPay VTU',
  },
  description:
    'Buy airtime, data, electricity, cable TV and exam pins in seconds. Fast, secure, and built for Nigeria.',
  manifest: '/manifest.json',
  applicationName: 'SwiftPay VTU',
  appleWebApp: {
    capable: true,
    statusBarStyle: 'black-translucent',
    title: 'SwiftPay VTU',
  },
  openGraph: {
    type: 'website',
    locale: 'en_NG',
    siteName: 'SwiftPay VTU',
    title: 'SwiftPay VTU — Airtime, Data, Bills & Education Pins, Instantly',
    description:
      'Buy airtime, data, electricity, cable TV and exam pins in seconds. Fast, secure, and built for Nigeria.',
  },
  robots: { index: true, follow: true },
};

export const viewport: Viewport = {
  themeColor: [
    { media: '(prefers-color-scheme: light)', color: '#F7F8FC' },
    { media: '(prefers-color-scheme: dark)', color: '#0F1229' },
  ],
  width: 'device-width',
  initialScale: 1,
};

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en" suppressHydrationWarning>
      <body
        className={`${spaceGrotesk.variable} ${inter.variable} ${jetbrainsMono.variable}`}
      >
        <ThemeProvider attribute="class" defaultTheme="system" enableSystem>
          {children}
          <Toaster richColors position="top-right" />
        </ThemeProvider>
      </body>
    </html>
  );
}
