SPB Git
1.6 KB · 40 lines tsx
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
Files · 816281851c37def11cd68afb6b0700b3b590a2cb
Menu

Theme