Files
reader/app/layout.tsx
T
2026-03-05 16:46:38 +07:00

71 lines
2.0 KiB
TypeScript

import type { Metadata, Viewport } from 'next'
import { Be_Vietnam_Pro } from 'next/font/google'
import { Analytics } from '@vercel/analytics/next'
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: 'TruyenChu - Đọ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>
<Analytics />
</body>
</html>
)
}