- Fix React hydration mismatch in ThemeProvider with mounted state check - Update layout.tsx to use light theme by default instead of system - Optimize photo filtering with useMemo in page.tsx - Add Express mock API for development - Update CLAUDE.md with comprehensive project documentation - Create backend/ and admin/ directories for future development
40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import type React from "react"
|
|
import type { Metadata } from "next"
|
|
import { Inter } from "next/font/google"
|
|
import "./globals.css"
|
|
import { QueryProvider } from "@/components/providers/query-provider"
|
|
import { ThemeProvider } from "@/components/theme-provider"
|
|
import { Toaster } from "@/components/ui/toaster"
|
|
|
|
const inter = Inter({ subsets: ["latin"] })
|
|
|
|
export const metadata: Metadata = {
|
|
title: "摄影作品集 - PhotoStudio",
|
|
description: "专业摄影师作品展示平台,记录世界的美好瞬间",
|
|
generator: 'v0.dev'
|
|
}
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode
|
|
}) {
|
|
return (
|
|
<html lang="zh-CN">
|
|
<body className={inter.className}>
|
|
<ThemeProvider
|
|
attribute="class"
|
|
defaultTheme="light"
|
|
enableSystem={false}
|
|
disableTransitionOnChange
|
|
>
|
|
<QueryProvider>
|
|
{children}
|
|
<Toaster />
|
|
</QueryProvider>
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|