feat(web): 搭建 Web 壳层与 UI 包基线
React 19 + Vite 6 + Router 7 + TanStack Query + Zustand;Semi 二次封装与 Remix 图标统一出口;顶部模块 + 左侧功能菜单布局、Cloud Blue 主题、登录页与 401/403/404/500 页面;请求层含 token 注入、单飞刷新与统一错误提示。
This commit is contained in:
1 parent
23067edb8f
commit
073d210a92
51 files changed
+4452
No files matched your search
@@ -0,0 +1,39 @@
|
||||
import '@douyinfe/semi-ui-19/react19-adapter';
|
||||
import '@lingxi/ui/semi.css';
|
||||
import '@lingxi/ui/theme/tokens.css';
|
||||
import '@lingxi/ui/styles.css';
|
||||
import '@/styles/global.css';
|
||||
import '@/styles/layout.css';
|
||||
import '@/styles/pages.css';
|
||||
|
||||
import { LocaleProvider } from '@douyinfe/semi-ui-19';
|
||||
import { localeZhCN } from '@lingxi/ui';
|
||||
import { QueryClientProvider } from '@tanstack/react-query';
|
||||
import { StrictMode } from 'react';
|
||||
import { createRoot } from 'react-dom/client';
|
||||
import { RouterProvider } from 'react-router';
|
||||
|
||||
import { setUnauthorizedHandler } from '@/api/client';
|
||||
import { queryClient } from '@/api/query-client';
|
||||
import { router } from '@/router';
|
||||
import { ROUTES } from '@/routes';
|
||||
|
||||
setUnauthorizedHandler(() => {
|
||||
void router.navigate(ROUTES.login, { replace: true });
|
||||
});
|
||||
|
||||
const container = document.getElementById('root');
|
||||
|
||||
if (container === null) {
|
||||
throw new Error('找不到应用根节点 #root');
|
||||
}
|
||||
|
||||
createRoot(container).render(
|
||||
<StrictMode>
|
||||
<LocaleProvider locale={localeZhCN}>
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<RouterProvider router={router} />
|
||||
</QueryClientProvider>
|
||||
</LocaleProvider>
|
||||
</StrictMode>,
|
||||
);
|
||||
Reference in new issue
Block a user