import type { Metadata, Viewport } from 'next'; import { GeistMono } from 'geist/font/mono'; import { GeistSans } from 'geist/font/sans'; import './globals.css'; import { TimeProvider } from '@/lib/time'; import { DESCRIPTION, SITE_NAME, SITE_URL, TAGLINE } 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 }, authors: [{ name: 'Simon-Pierre Boucher', url: 'mailto:contact@spboucher.ai' }], creator: 'Simon-Pierre Boucher', publisher: 'MacLustr (www.maclustr.io)', // icons: Next file conventions in src/app — icon.svg, icon.png, apple-icon.png, favicon.ico (generated by scripts/brand.py) }; export const viewport: Viewport = { width: 'device-width', initialScale: 1, viewportFit: 'cover', themeColor: '#070A0F', colorScheme: 'dark', }; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( Skip to content {children} ); }