forked from
standard.site/standard.site
Standard.site landing page built in Next.js
1import type { Metadata } from 'next'
2import Script from 'next/script'
3import { Geist, Geist_Mono, Hanken_Grotesk, Inter } from 'next/font/google'
4import './globals.css'
5
6const geistSans = Geist({
7 variable: '--font-geist-sans',
8 subsets: ['latin'],
9})
10
11const geistMono = Geist_Mono({
12 variable: '--font-geist-mono',
13 subsets: ['latin'],
14})
15
16const inter = Inter({
17 variable: '--font-inter',
18 subsets: ['latin'],
19})
20
21const hankenGrotesk = Hanken_Grotesk({
22 variable: '--font-hanken-grotesk',
23 subsets: ['latin'],
24})
25
26export const metadata: Metadata = {
27 title: 'Standard.site - One schema. Every platform.',
28 description: 'Standard.site provides shared lexicons for long-form publishing on AT Protocol. Making content easier to discover, index, and move across the ATmosphere.',
29 metadataBase: new URL('https://standard.site'),
30}
31
32export default function RootLayout({children}: Readonly<{
33 children: React.ReactNode;
34}>) {
35 return (
36 <html lang="en">
37 <head>
38 <style dangerouslySetInnerHTML={{ __html: `
39 html { background: oklch(.985 0 0); }
40 @media (prefers-color-scheme: dark) { html { background: oklch(.21 .006 285.885); } }
41 `}} />
42 <Script
43 src="https://plausible.io/js/pa-JuOUOxn5gfugV0aRQRS8U.js"
44 strategy="afterInteractive"
45 />
46 <Script id="plausible-init" strategy="afterInteractive">
47 {`window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};plausible.init()`}
48 </Script>
49 </head>
50 <body
51 className={ `${ geistSans.variable } ${ geistMono.variable } ${ inter.variable } ${ hankenGrotesk.variable } antialiased` }
52 >
53 { children }
54 </body>
55 </html>
56 )
57}