import type { Metadata, Viewport } from "next"; import Script from "next/script"; import "./globals.css"; import { MobileTabBar } from "@/components/layout/mobile-tab-bar"; import { SearchProvider } from "@/components/layout/search-dialog"; import { SiteFooter } from "@/components/layout/site-footer"; import { SiteHeader } from "@/components/layout/site-header"; import { fontMono, fontUi } from "@/lib/fonts"; import { THEME_SCRIPT } from "@/lib/prepaint"; import { DESCRIPTION, SITE_NAME, SITE_URL, TAGLINE, THEME_DARK, THEME_LIGHT } from "@/lib/site"; export const metadata: Metadata = { metadataBase: new URL(SITE_URL), title: { default: `${SITE_NAME} — ${TAGLINE}`, template: `%s | ${SITE_NAME}` }, description: DESCRIPTION, applicationName: SITE_NAME, robots: { index: true, follow: true }, alternates: { canonical: "/" }, openGraph: { type: "website", siteName: SITE_NAME, url: SITE_URL, title: `${SITE_NAME} — ${TAGLINE}`, description: DESCRIPTION }, twitter: { card: "summary_large_image", title: `${SITE_NAME} — ${TAGLINE}`, description: DESCRIPTION }, icons: { icon: [{ url: "/icon.svg", type: "image/svg+xml" }] }, }; export const viewport: Viewport = { width: "device-width", initialScale: 1, viewportFit: "cover", themeColor: [ { media: "(prefers-color-scheme: light)", color: THEME_LIGHT }, { media: "(prefers-color-scheme: dark)", color: THEME_DARK }, ], }; export default function RootLayout({ children }: { children: React.ReactNode }) { return (
Skip to content