| 56 | }; |
| 57 | |
| 58 | export default async function RootLayout({ |
| 59 | children, |
| 60 | }: Readonly<{ |
| 61 | children: React.ReactNode; |
| 62 | }>) { |
| 63 | return ( |
| 64 | <html |
| 65 | lang="en" |
| 66 | suppressHydrationWarning |
| 67 | className={cn( |
| 68 | `${cursorGothic.variable}`, |
| 69 | "whitespace-pre-line antialiased", |
| 70 | )} |
| 71 | > |
| 72 | <body className="bg-background text-foreground"> |
| 73 | <ThemeProvider |
| 74 | attribute="class" |
| 75 | defaultTheme="system" |
| 76 | enableSystem |
| 77 | disableTransitionOnChange |
| 78 | > |
| 79 | <NuqsAdapter> |
| 80 | {/* Reads the pathname (runtime data); renders nothing visual. */} |
| 81 | <Suspense fallback={null}> |
| 82 | <ScrollToTop /> |
| 83 | </Suspense> |
| 84 | <Header /> |
| 85 | {children} |
| 86 | <JoinCTA /> |
| 87 | <Footer /> |
| 88 | |
| 89 | <Toaster /> |
| 90 | <GlobalModals /> |
| 91 | </NuqsAdapter> |
| 92 | </ThemeProvider> |
| 93 | <Analytics /> |
| 94 | </body> |
| 95 | </html> |
| 96 | ); |
| 97 | } |