56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import type { Metadata } from 'next'
|
|
import { Inter, Merriweather, JetBrains_Mono } from 'next/font/google'
|
|
import { ThemeProvider } from '@wrksz/themes/next'
|
|
import './globals.css'
|
|
import 'katex/dist/katex.min.css'
|
|
import { Header } from '@/components/layout/Header'
|
|
import { Footer } from '@/components/layout/Footer'
|
|
import { ScrollProgress } from '@/components/ui/ScrollProgress'
|
|
import { Providers } from './providers'
|
|
|
|
const inter = Inter({
|
|
subsets: ['latin'],
|
|
display: 'swap',
|
|
variable: '--font-inter',
|
|
})
|
|
|
|
const merriweather = Merriweather({
|
|
weight: ['400', '700'],
|
|
subsets: ['latin'],
|
|
display: 'swap',
|
|
variable: '--font-merriweather',
|
|
})
|
|
|
|
const jetbrainsMono = JetBrains_Mono({
|
|
subsets: ['latin'],
|
|
display: 'swap',
|
|
variable: '--font-jetbrains-mono',
|
|
})
|
|
|
|
export const metadata: Metadata = {
|
|
title: { template: '%s | blog', default: 'blog' },
|
|
description: 'A sleek static blog with code and math.',
|
|
}
|
|
|
|
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
return (
|
|
<html lang="en" className={`${inter.variable} ${merriweather.variable} ${jetbrainsMono.variable}`} suppressHydrationWarning>
|
|
<body className="antialiased bg-canvas text-ink font-serif">
|
|
<ThemeProvider
|
|
attribute="class"
|
|
defaultTheme="system"
|
|
enableSystem
|
|
disableTransitionOnChange
|
|
>
|
|
<Providers>
|
|
<ScrollProgress />
|
|
<Header />
|
|
{children}
|
|
<Footer />
|
|
</Providers>
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|