1import type { Metadata, Viewport } from 'next';2import { Geist, Geist_Mono } from 'next/font/google';3import './globals.css';4import { SiteHeader } from '@/components/layout/site-header';5import { SiteFooter } from '@/components/layout/site-footer';6import { THEME_SCRIPT } from '@/components/layout/theme-toggle';78const geistSans = Geist({ variable: '--font-geist-sans', subsets: ['latin'] });9const geistMono = Geist_Mono({ variable: '--font-geist-mono', subsets: ['latin'] });1011const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL ?? 'https://www.rareindex.io';1213export const metadata: Metadata = {14 metadataBase: new URL(SITE_URL),15 title: { default: 'RareIndex — The Global Market for Collectibles', template: '%s · RareIndex' },16 description: 'Discover, price, track and analyze collectible assets across the world’s marketplaces and auction houses.',17 applicationName: 'RareIndex',18 openGraph: { type: 'website', siteName: 'RareIndex', url: SITE_URL, title: 'RareIndex — The Global Market for Collectibles', description: 'Prices, sales, listings, rarity, liquidity and indices for collectible assets.' },19 twitter: { card: 'summary_large_image', title: 'RareIndex', description: 'The global market for collectibles.' },20 robots: { index: true, follow: true },21};2223export const viewport: Viewport = {24 width: 'device-width',25 initialScale: 1,26 viewportFit: 'cover',27 themeColor: [28 { media: '(prefers-color-scheme: light)', color: '#fafaf9' },29 { media: '(prefers-color-scheme: dark)', color: '#0b0c0e' },30 ],31};3233export default function RootLayout({ children }: { children: React.ReactNode }) {34 return (35 <html lang="en" className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`} suppressHydrationWarning>36 <head>37 <script dangerouslySetInnerHTML={{ __html: THEME_SCRIPT }} />38 </head>39 <body className="flex min-h-full flex-col">40 <SiteHeader />41 <main className="mx-auto w-full max-w-[1440px] flex-1 px-4 pb-16 pt-4 sm:px-6">{children}</main>42 <SiteFooter />43 </body>44 </html>45 );46}47