diff --git a/web/src/components/theme-toggle.tsx b/web/src/components/theme-toggle.tsx
new file mode 100644
index 000000000..3d05fdcb8
--- /dev/null
+++ b/web/src/components/theme-toggle.tsx
@@ -0,0 +1,48 @@
+import { ThemeEnum } from '@/constants/common';
+import { Moon, Sun } from 'lucide-react';
+import { FC, useCallback } from 'react';
+import { useIsDarkTheme, useTheme } from './theme-provider';
+import { Button } from './ui/button';
+
+const ThemeToggle: FC = () => {
+ const { setTheme } = useTheme();
+ const isDarkTheme = useIsDarkTheme();
+ const handleThemeChange = useCallback(
+ (checked: boolean) => {
+ setTheme(checked ? ThemeEnum.Dark : ThemeEnum.Light);
+ },
+ [setTheme],
+ );
+ return (
+
+ );
+};
+
+export default ThemeToggle;
diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts
index 613a3db96..1981c3e21 100644
--- a/web/src/locales/en.ts
+++ b/web/src/locales/en.ts
@@ -1792,6 +1792,8 @@ Important structured information may include: names, dates, locations, events, k
result: 'Result',
parseSummary: 'Parse Summary',
parseSummaryTip: 'Parser:deepdoc',
+ parserMethod: 'Parser Method',
+ outputFormat: 'Output Format',
rerunFromCurrentStep: 'Rerun From Current Step',
rerunFromCurrentStepTip: 'Changes detected. Click to re-run.',
confirmRerun: 'Confirm Rerun Process',
diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts
index e011d55e8..20469e14c 100644
--- a/web/src/locales/zh.ts
+++ b/web/src/locales/zh.ts
@@ -1680,6 +1680,8 @@ Tokenizer 会根据所选方式将内容存储为对应的数据结构。`,
result: '结果',
parseSummary: '解析摘要',
parseSummaryTip: '解析器: deepdoc',
+ parserMethod: '解析方法',
+ outputFormat: '输出格式',
rerunFromCurrentStep: '从当前步骤重新运行',
rerunFromCurrentStepTip: '已修改,点击重新运行。',
confirmRerun: '确认重新运行流程',
diff --git a/web/src/pages/dataflow-result/hooks.ts b/web/src/pages/dataflow-result/hooks.ts
index c41d0a451..4c4ad590a 100644
--- a/web/src/pages/dataflow-result/hooks.ts
+++ b/web/src/pages/dataflow-result/hooks.ts
@@ -345,10 +345,10 @@ export const useSummaryInfo = (
const { output_format, parse_method } = setups;
const res = [];
if (parse_method) {
- res.push(`${t('dataflow.parserMethod')}: ${parse_method}`);
+ res.push(`${t('dataflowParser.parserMethod')}: ${parse_method}`);
}
if (output_format) {
- res.push(`${t('dataflow.outputFormat')}: ${output_format}`);
+ res.push(`${t('dataflowParser.outputFormat')}: ${output_format}`);
}
return res.join(' ');
}
diff --git a/web/src/pages/profile-setting/profile/index.tsx b/web/src/pages/profile-setting/profile/index.tsx
index 9b6b0b4c4..7f8cf5676 100644
--- a/web/src/pages/profile-setting/profile/index.tsx
+++ b/web/src/pages/profile-setting/profile/index.tsx
@@ -121,7 +121,7 @@ const ProfilePage: FC = () => {
// };
return (
-
+
{/* Header */}
{t('profile')}
diff --git a/web/src/pages/profile-setting/sidebar/hooks.tsx b/web/src/pages/profile-setting/sidebar/hooks.tsx
index 260df587c..e69bd6c3b 100644
--- a/web/src/pages/profile-setting/sidebar/hooks.tsx
+++ b/web/src/pages/profile-setting/sidebar/hooks.tsx
@@ -1,10 +1,11 @@
import { useLogout } from '@/hooks/login-hooks';
import { Routes } from '@/routes';
-import { useCallback } from 'react';
+import { useCallback, useState } from 'react';
import { useNavigate } from 'umi';
export const useHandleMenuClick = () => {
const navigate = useNavigate();
+ const [active, setActive] = useState();
const { logout } = useLogout();
const handleMenuClick = useCallback(
@@ -12,11 +13,12 @@ export const useHandleMenuClick = () => {
if (key === Routes.Logout) {
logout();
} else {
+ setActive(key);
navigate(`${Routes.ProfileSetting}${key}`);
}
},
[logout, navigate],
);
- return { handleMenuClick };
+ return { handleMenuClick, active };
};
diff --git a/web/src/pages/profile-setting/sidebar/index.tsx b/web/src/pages/profile-setting/sidebar/index.tsx
index 75e63056d..4a1079874 100644
--- a/web/src/pages/profile-setting/sidebar/index.tsx
+++ b/web/src/pages/profile-setting/sidebar/index.tsx
@@ -1,10 +1,9 @@
-import { useIsDarkTheme, useTheme } from '@/components/theme-provider';
+import { RAGFlowAvatar } from '@/components/ragflow-avatar';
+import ThemeToggle from '@/components/theme-toggle';
import { Button } from '@/components/ui/button';
-import { Label } from '@/components/ui/label';
-import { Switch } from '@/components/ui/switch';
-import { ThemeEnum } from '@/constants/common';
import { useLogout } from '@/hooks/login-hooks';
import { useSecondPathName } from '@/hooks/route-hook';
+import { useFetchUserInfo } from '@/hooks/use-user-setting-request';
import { cn } from '@/lib/utils';
import { Routes } from '@/routes';
import {
@@ -12,11 +11,9 @@ import {
Banknote,
Box,
FileCog,
- LayoutGrid,
- LogOut,
User,
+ Users,
} from 'lucide-react';
-import { useCallback } from 'react';
import { useHandleMenuClick } from './hooks';
const menuItems = [
@@ -24,7 +21,7 @@ const menuItems = [
section: 'Account & collaboration',
items: [
{ icon: User, label: 'Profile', key: Routes.Profile },
- { icon: LayoutGrid, label: 'Team', key: Routes.Team },
+ { icon: Users, label: 'Team', key: Routes.Team },
{ icon: Banknote, label: 'Plan', key: Routes.Plan },
{ icon: Banknote, label: 'MCP', key: Routes.Mcp },
],
@@ -53,66 +50,62 @@ const menuItems = [
export function SideBar() {
const pathName = useSecondPathName();
- const { handleMenuClick } = useHandleMenuClick();
- const { setTheme } = useTheme();
- const isDarkTheme = useIsDarkTheme();
+ const { data: userInfo } = useFetchUserInfo();
+ const { handleMenuClick, active } = useHandleMenuClick();
const { logout } = useLogout();
- const handleThemeChange = useCallback(
- (checked: boolean) => {
- setTheme(checked ? ThemeEnum.Dark : ThemeEnum.Light);
- },
- [setTheme],
- );
-
return (
-