1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48import type { Metadata } from 'next'
import { GoogleAnalytics } from '@components/Analytics/GoogleAnalytics/index'
import { GoogleTagManager } from '@components/Analytics/GoogleTagManager/index'
import { PrivacyBanner } from '@components/PrivacyBanner/index'
import { Providers } from '@providers/index'
import { PrivacyProvider } from '@root/providers/Privacy/index'
import { mergeOpenGraph } from '@root/seo/mergeOpenGraph'
import { GeistMono } from 'geist/font/mono'
import React from 'react'
import { untitledSans } from './fonts'
import '../../css/app.scss'
export default async function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<PrivacyProvider>
<head>
<link href="/images/favicon.svg" rel="icon" />
<link href={process.env.NEXT_PUBLIC_CLOUD_CMS_URL} rel="dns-prefetch" />
<link href="https://api.github.com/repos/payloadcms/payload" rel="dns-prefetch" />
<link href="https://cdn.jsdelivr.net/npm/@docsearch/css@3" rel="stylesheet" />
<link href="https://www.googletagmanager.com" rel="preconnect" />
<link href="https://www.google-analytics.com" rel="preconnect" />
<GoogleAnalytics />
</head>
<body className={[GeistMono.variable, untitledSans.variable].join(' ')}>
<GoogleTagManager />
<Providers>
{children}
<PrivacyBanner />
</Providers>
</body>
</PrivacyProvider>
</html>
)
}
export const metadata: Metadata = {
metadataBase: new URL(process.env.NEXT_PUBLIC_SITE_URL || 'https://payloadcms.com'),
openGraph: mergeOpenGraph(),
twitter: {
card: 'summary_large_image',
creator: '@payloadcms',
},
}