Files
chinese-family-tree-2/app/layout.tsx
T
freedakgmail b25f4bea02 0.0.9.0
2025-11-24 16:07:24 +08:00

65 lines
1.8 KiB
TypeScript

import type React from "react"
import type { Metadata } 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-light-32x32.png?t=" + Date.now(),
media: "(prefers-color-scheme: light)",
},
{
url: "/icon-dark-32x32.png?t=" + Date.now(),
media: "(prefers-color-scheme: dark)",
},
{
url: "/icon.svg?t=" + Date.now(),
type: "image/svg+xml",
},
],
apple: "/apple-icon.png?t=" + Date.now(),
},
}
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode
}>) {
return (
<html lang="zh-CN">
<body className={`font-sans antialiased`}>
<SessionProvider>
<DialogProvider>
<FamilyProvider>
<PWAProvider>
{children}
</PWAProvider>
</FamilyProvider>
</DialogProvider>
</SessionProvider>
{/* <Analytics /> */}
</body>
</html>
)
}