import { useEffect, useMemo } from 'react';
import { CustomThemeProvider } from '@kevisual/center-components/theme/index.tsx';
import { Left } from './layout/Left';
import { Main } from './main/index';
import { ToastContainer } from 'react-toastify';
import { useSettingsStore } from './store/settings';
import { CircularProgress, useTheme } from '@mui/material';
import { useResourceStore } from './store/resource';
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
import zhCN from 'antd/locale/zh_CN';
import ConfigProvider from 'antd/es/config-provider';
dayjs.locale('zh-cn');
export const AntdConfigProvider = ({ children }: { children: React.ReactNode }) => {
const theme = useTheme();
const primaryColor = theme.palette.primary.main;
const secondaryColor = theme.palette.secondary.main;
return (
{children}
);
};
export const InitProvider = ({ children }: { children: React.ReactNode }) => {
const { init, mounted, settings } = useSettingsStore();
const { setPrefix, init: initResource } = useResourceStore();
useEffect(() => {
init();
initResource();
}, []);
useEffect(() => {
if (settings.prefix && mounted === 'success') {
setPrefix(settings.prefix);
}
}, [mounted, settings.prefix]);
const handleRetry = () => {
init();
initResource();
};
if (mounted === 'loading') {
return (
);
} else if (mounted === 'error') {
return (
);
}
return <>{children}>;
};
type AppProvider = {
key: string;
use: boolean;
};
export type AppProps = {
providers?: AppProvider[];
noProvider?: boolean;
/**
* 是否是单个应用
* 默认是单个应用模块。
*/
isSingleApp?: boolean;
};
export const App = ({ providers, noProvider, isSingleApp = true }: AppProps) => {
const children = useMemo(() => {
return (
);
}, []);
if (noProvider) {
return <>{children}>;
}
return (
{children}
);
};