69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import type { Metadata, Viewport } from 'next'
|
|
import { Be_Vietnam_Pro } from 'next/font/google'
|
|
import { ThemeProvider } from '@/components/theme-provider'
|
|
import { AuthProvider } from '@/lib/auth-context'
|
|
import { BookmarkProvider } from '@/lib/bookmark-context'
|
|
import { Header } from '@/components/header'
|
|
import { Footer } from '@/components/footer'
|
|
import './globals.css'
|
|
|
|
const beVietnam = Be_Vietnam_Pro({
|
|
subsets: ['vietnamese', 'latin'],
|
|
weight: ['300', '400', '500', '600', '700'],
|
|
variable: '--font-sans',
|
|
})
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Virtus's Reader - Đọc Truyện Chữ Online",
|
|
description: 'Đọc truyện chữ online miễn phí - Tiên hiệp, Huyền huyễn, Ngôn tình, Kiếm hiệp và nhiều thể loại khác',
|
|
generator: 'v0.app',
|
|
icons: {
|
|
icon: [
|
|
{
|
|
url: '/icon-light-32x32.png',
|
|
media: '(prefers-color-scheme: light)',
|
|
},
|
|
{
|
|
url: '/icon-dark-32x32.png',
|
|
media: '(prefers-color-scheme: dark)',
|
|
},
|
|
{
|
|
url: '/icon.svg',
|
|
type: 'image/svg+xml',
|
|
},
|
|
],
|
|
apple: '/apple-icon.png',
|
|
},
|
|
}
|
|
|
|
export const viewport: Viewport = {
|
|
themeColor: [
|
|
{ media: '(prefers-color-scheme: light)', color: '#f8f6f4' },
|
|
{ media: '(prefers-color-scheme: dark)', color: '#1a1a2e' },
|
|
],
|
|
}
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode
|
|
}>) {
|
|
return (
|
|
<html lang="vi" suppressHydrationWarning>
|
|
<body className={`${beVietnam.variable} font-sans antialiased`}>
|
|
<ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
|
|
<AuthProvider>
|
|
<BookmarkProvider>
|
|
<div className="flex min-h-svh flex-col">
|
|
<Header />
|
|
<main className="flex-1">{children}</main>
|
|
<Footer />
|
|
</div>
|
|
</BookmarkProvider>
|
|
</AuthProvider>
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|