import type { Metadata, Viewport } from 'next' import { Geist, Geist_Mono } from 'next/font/google' import { Analytics } from '@vercel/analytics/next' import './globals.css' import { ClientThemeShell } from '@/components/suite/client-theme-shell' import { ThemeInitScript } from '@/components/theme-init-script' import { FirstLaunchSplash } from '@/components/first-launch-splash' import { QueryProvider } from '@/lib/api/query-provider' import { AuthProvider } from '@/components/auth/auth-provider' import { SessionGuard } from '@/components/auth/session-guard' import { NativeBridgeProvider } from '@/components/mobile/native-bridge-provider' import { NativeAuthGate } from '@/components/mobile/native-auth-gate' import { NativeShellChrome } from '@/components/mobile/native-shell-chrome' import { MobileLayoutRoot } from '@/components/mobile/mobile-layout-root' import { MailToaster } from '@/components/gmail/mail-toaster' import { suiteRootMetadata } from '@/lib/suite/page-metadata' const geistSans = Geist({ subsets: ['latin'], variable: '--font-geist-sans' }) const geistMono = Geist_Mono({ subsets: ['latin'], variable: '--font-geist-mono' }) const isMobileBuild = process.env.NEXT_PUBLIC_MOBILE === '1' export const metadata: Metadata = suiteRootMetadata() /** Fit visible viewport on tablet/mobile; disable pinch/double-tap zoom on the shell. */ export const viewport: Viewport = { width: 'device-width', initialScale: 1, maximumScale: 1, userScalable: false, viewportFit: 'cover', } export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode }>) { return ( {isMobileBuild ? ( {children} ) : ( {children} {process.env.NODE_ENV === 'production' && } )} ) }