spb/internetpressure
Public
1import type { Metadata, Viewport } from 'next';2import { GeistMono } from 'geist/font/mono';3import { GeistSans } from 'geist/font/sans';4import './globals.css';5import { TimeProvider } from '@/lib/time';6import { DESCRIPTION, SITE_NAME, SITE_URL, TAGLINE } from '@/lib/site';78export const metadata: Metadata = {9 metadataBase: new URL(SITE_URL),10 title: { default: `${SITE_NAME} — ${TAGLINE}`, template: `%s · ${SITE_NAME}` },11 description: DESCRIPTION,12 applicationName: SITE_NAME,13 robots: { index: true, follow: true },14 alternates: { canonical: '/' },15 openGraph: { type: 'website', siteName: SITE_NAME, url: SITE_URL, title: `${SITE_NAME} — ${TAGLINE}`, description: DESCRIPTION },16 twitter: { card: 'summary_large_image', title: `${SITE_NAME} — ${TAGLINE}`, description: DESCRIPTION },17 icons: { icon: [{ url: '/icon.svg', type: 'image/svg+xml' }] },18};1920export const viewport: Viewport = {21 width: 'device-width',22 initialScale: 1,23 viewportFit: 'cover',24 themeColor: '#070A0F',25 colorScheme: 'dark',26};2728export default function RootLayout({ children }: { children: React.ReactNode }) {29 return (30 <html lang="en" className={`dark ${GeistSans.variable} ${GeistMono.variable} h-full antialiased`}>31 <body className="flex min-h-full flex-col">32 <a href="#main" className="sr-only focus:not-sr-only focus:fixed focus:left-3 focus:top-3 focus:z-[200] focus:rounded-[3px] focus:bg-accent focus:px-3 focus:py-2 focus:text-sm focus:text-bg">33 Skip to content34 </a>35 <TimeProvider>{children}</TimeProvider>36 </body>37 </html>38 );39}40