重构 ThemeContext 为多主题模型(themeId + followSystem + systemIsDark), 新增设置页面(主题下拉栏 + 跟随系统开关),移除旧 ThemeToggle 按钮, 引入 antd-style 和 clsx 依赖支持 MUI/shadcn/Bootstrap/玻璃主题。
42 lines
940 B
TypeScript
42 lines
940 B
TypeScript
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
import { BrowserRouter } from 'react-router';
|
|
import { ConfigProvider } from 'antd';
|
|
import { AppRoutes } from '@/routes';
|
|
import { ThemeProvider, useTheme } from '@/contexts/ThemeContext';
|
|
import { useThemeConfig } from '@/themes';
|
|
|
|
const queryClient = new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
staleTime: 30_000,
|
|
retry: 1,
|
|
refetchOnWindowFocus: false,
|
|
},
|
|
},
|
|
});
|
|
|
|
function ThemedApp() {
|
|
const { effectiveThemeId } = useTheme();
|
|
const configProps = useThemeConfig(effectiveThemeId);
|
|
|
|
return (
|
|
<ConfigProvider {...configProps}>
|
|
<BrowserRouter>
|
|
<AppRoutes />
|
|
</BrowserRouter>
|
|
</ConfigProvider>
|
|
);
|
|
}
|
|
|
|
function App() {
|
|
return (
|
|
<QueryClientProvider client={queryClient}>
|
|
<ThemeProvider>
|
|
<ThemedApp />
|
|
</ThemeProvider>
|
|
</QueryClientProvider>
|
|
);
|
|
}
|
|
|
|
export default App;
|