jonbio/app/layout.tsx

93 lines
3.1 KiB
TypeScript
Raw Normal View History

2023-07-16 18:52:51 +08:00
import 'css/tailwind.css'
import 'css/prism.css'
import 'pliny/search/algolia.css'
2023-07-23 11:11:27 +08:00
import 'katex/dist/katex.css'
2023-07-07 11:17:22 +08:00
import { Inter } from 'next/font/google'
2023-07-16 18:52:51 +08:00
import { Analytics, AnalyticsConfig } from 'pliny/analytics'
import { SearchProvider, SearchConfig } from 'pliny/search'
2023-07-07 11:17:22 +08:00
import Header from '@/components/Header'
import SectionContainer from '@/components/SectionContainer'
import Footer from '@/components/Footer'
import siteMetadata from '@/data/siteMetadata'
import { ThemeProviders } from './theme-providers'
2023-07-08 21:03:46 +08:00
import { Metadata } from 'next'
2023-07-07 11:17:22 +08:00
const inter = Inter({
subsets: ['latin'],
})
2023-07-08 21:03:46 +08:00
export const metadata: Metadata = {
metadataBase: new URL(siteMetadata.siteUrl),
title: {
default: siteMetadata.title,
template: `%s | ${siteMetadata.title}`,
},
description: siteMetadata.description,
openGraph: {
title: siteMetadata.title,
description: siteMetadata.description,
url: './',
siteName: siteMetadata.title,
images: [siteMetadata.socialBanner],
locale: 'en_US',
type: 'website',
},
alternates: {
canonical: './',
2023-07-09 23:29:39 +08:00
types: {
'application/rss+xml': `${siteMetadata.siteUrl}/feed.xml`,
},
2023-07-08 21:03:46 +08:00
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
'max-video-preview': -1,
'max-image-preview': 'large',
'max-snippet': -1,
},
},
twitter: {
title: siteMetadata.title,
card: 'summary_large_image',
images: [siteMetadata.socialBanner],
},
}
2023-07-07 11:17:22 +08:00
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
2023-07-22 16:01:25 +08:00
<html
lang={siteMetadata.language}
className={`${inter.className} scroll-smooth`}
suppressHydrationWarning
>
2023-07-08 21:03:46 +08:00
<link rel="apple-touch-icon" sizes="76x76" href="/static/favicons/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/static/favicons/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/static/favicons/favicon-16x16.png" />
<link rel="manifest" href="/static/favicons/site.webmanifest" />
<link rel="mask-icon" href="/static/favicons/safari-pinned-tab.svg" color="#5bbad5" />
<meta name="msapplication-TileColor" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000" />
<link rel="alternate" type="application/rss+xml" href="/feed.xml" />
<body className="bg-white text-black antialiased dark:bg-gray-950 dark:text-white">
2023-07-07 11:17:22 +08:00
<ThemeProviders>
2023-07-16 18:52:51 +08:00
<Analytics analyticsConfig={siteMetadata.analytics as AnalyticsConfig} />
2023-07-07 11:17:22 +08:00
<SectionContainer>
<div className="flex h-screen flex-col justify-between font-sans">
2023-07-16 18:52:51 +08:00
<SearchProvider searchConfig={siteMetadata.search as SearchConfig}>
<Header />
<main className="mb-auto">{children}</main>
</SearchProvider>
2023-07-07 11:17:22 +08:00
<Footer />
</div>
</SectionContainer>
</ThemeProviders>
</body>
</html>
)
}