Standard.site landing page built in Next.js
at main 57 lines 2.0 kB view raw
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}