feat(providers): 添加全局设置提供者

- 新增 SettingsProvider 组件用于管理全局设置状态
- 在 Layout 中集成 SettingsProvider
- 应用启动时自动加载字体大小和主题设置
This commit is contained in:
gaoziman 2025-12-19 13:57:22 +08:00
parent 29b2d99a82
commit 5444e7a579
2 changed files with 36 additions and 1 deletions

View File

@ -1,5 +1,6 @@
import type { Metadata } from "next"; import type { Metadata } from "next";
import "./globals.css"; import "./globals.css";
import { SettingsProvider } from "@/components/providers/SettingsProvider";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "cchcode - AI 智能助手", title: "cchcode - AI 智能助手",
@ -17,7 +18,9 @@ export default function RootLayout({
return ( return (
<html lang="zh-CN"> <html lang="zh-CN">
<body className="antialiased"> <body className="antialiased">
{children} <SettingsProvider>
{children}
</SettingsProvider>
</body> </body>
</html> </html>
); );

View File

@ -0,0 +1,32 @@
'use client';
import { useEffect, type ReactNode } from 'react';
import { useSettings } from '@/hooks/useSettings';
interface SettingsProviderProps {
children: ReactNode;
}
export function SettingsProvider({ children }: SettingsProviderProps) {
const { settings, loading } = useSettings();
// 应用全局设置
useEffect(() => {
if (!loading && settings) {
// 应用字体大小
if (settings.fontSize) {
document.documentElement.style.setProperty(
'--font-size-base',
`${settings.fontSize}px`
);
}
// 应用主题
if (settings.theme) {
document.documentElement.setAttribute('data-theme', settings.theme);
}
}
}, [settings, loading]);
return <>{children}</>;
}