import '../styles/globals.css'; import type { Metadata } from 'next'; import { siteConfig } from '@/lib/config'; import { LayoutShell } from '@/components/layout-shell'; import { ThemeProvider } from 'next-themes'; import { Playfair_Display } from 'next/font/google'; import { JsonLd } from '@/components/json-ld'; const playfair = Playfair_Display({ subsets: ['latin'], variable: '--font-serif-eng', display: 'swap', }); export const metadata: Metadata = { title: { default: siteConfig.title, template: `%s | ${siteConfig.title}` }, description: siteConfig.description, metadataBase: new URL(siteConfig.url), openGraph: { title: siteConfig.title, description: siteConfig.description, url: siteConfig.url, siteName: siteConfig.title, images: [siteConfig.ogImage] }, twitter: { card: siteConfig.twitterCard, site: siteConfig.social.twitter || undefined, title: siteConfig.title, description: siteConfig.description, images: [siteConfig.ogImage] }, icons: { icon: '/favicon.png' }, alternates: { types: { 'application/rss+xml': `${siteConfig.url}/feed.xml` } } }; export default function RootLayout({ children }: { children: React.ReactNode; }) { const theme = siteConfig.theme; // WebSite Schema const websiteSchema = { '@context': 'https://schema.org', '@type': 'WebSite', name: siteConfig.title, description: siteConfig.description, url: siteConfig.url, inLanguage: siteConfig.defaultLocale, author: { '@type': 'Person', name: siteConfig.author, url: siteConfig.url, }, potentialAction: { '@type': 'SearchAction', target: { '@type': 'EntryPoint', urlTemplate: `${siteConfig.url}/blog?search={search_term_string}`, }, 'query-input': 'required name=search_term_string', }, }; // Organization Schema const organizationSchema = { '@context': 'https://schema.org', '@type': 'Organization', name: siteConfig.name, url: siteConfig.url, logo: `${siteConfig.url}${siteConfig.avatar}`, sameAs: [ siteConfig.social.github, siteConfig.social.twitter && `https://twitter.com/${siteConfig.social.twitter.replace('@', '')}`, siteConfig.social.mastodon, ].filter(Boolean), }; return (