64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
import type React from "react"
|
|
import type { Metadata, Viewport } from "next"
|
|
import { Geist, Geist_Mono } from "next/font/google"
|
|
// import { Analytics } from "@vercel/analytics/next"
|
|
import "./globals.css"
|
|
import { FamilyProvider } from "@/context/family-context"
|
|
import { PWAProvider } from "@/components/pwa/pwa-provider"
|
|
import { SessionProvider } from "@/components/providers/session-provider"
|
|
import { DialogProvider } from "@/components/ui/alert-dialog-custom"
|
|
|
|
const _geist = Geist({ subsets: ["latin"] })
|
|
const _geistMono = Geist_Mono({ subsets: ["latin"] })
|
|
|
|
export const metadata: Metadata = {
|
|
title: "华夏家谱 - 中国家族树管理系统",
|
|
description: "现代化的中国家族树管理系统,支持多用户协作、权限管理、数据导入导出等功能",
|
|
generator: "v0.app",
|
|
manifest: "/manifest.json",
|
|
appleWebApp: {
|
|
capable: true,
|
|
statusBarStyle: "default",
|
|
title: "华夏家谱",
|
|
},
|
|
icons: {
|
|
icon: [
|
|
{
|
|
url: "/icon.svg",
|
|
type: "image/svg+xml",
|
|
},
|
|
],
|
|
apple: "/icon.svg",
|
|
},
|
|
}
|
|
|
|
export const viewport: Viewport = {
|
|
width: "device-width",
|
|
initialScale: 1,
|
|
maximumScale: 1,
|
|
userScalable: false,
|
|
}
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode
|
|
}>) {
|
|
return (
|
|
<html lang="zh-CN">
|
|
<body className={`font-serif antialiased`}>
|
|
<SessionProvider>
|
|
<DialogProvider>
|
|
<FamilyProvider>
|
|
<PWAProvider>
|
|
{children}
|
|
</PWAProvider>
|
|
</FamilyProvider>
|
|
</DialogProvider>
|
|
</SessionProvider>
|
|
{/* <Analytics /> */}
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|