- import { ReactComponent as FileIcon } from '@/assets/svg/file-management.svg';
 - import { ReactComponent as GraphIcon } from '@/assets/svg/graph.svg';
 - import { ReactComponent as KnowledgeBaseIcon } from '@/assets/svg/knowledge-base.svg';
 - import { useTranslate } from '@/hooks/common-hooks';
 - import { useFetchAppConf } from '@/hooks/logic-hooks';
 - import { useNavigateWithFromState } from '@/hooks/route-hook';
 - import { MessageOutlined, SearchOutlined } from '@ant-design/icons';
 - import { Flex, Layout, Radio, Space, theme } from 'antd';
 - import { MouseEventHandler, useCallback, useMemo } from 'react';
 - import { useLocation } from 'umi';
 - import Toolbar from '../right-toolbar';
 - 
 - import { useTheme } from '@/components/theme-provider';
 - import styles from './index.less';
 - 
 - const { Header } = Layout;
 - 
 - const RagHeader = () => {
 -   const {
 -     token: { colorBgContainer },
 -   } = theme.useToken();
 -   const navigate = useNavigateWithFromState();
 -   const { pathname } = useLocation();
 -   const { t } = useTranslate('header');
 -   const appConf = useFetchAppConf();
 -   const { theme: themeRag } = useTheme();
 -   const tagsData = useMemo(
 -     () => [
 -       { path: '/knowledge', name: t('knowledgeBase'), icon: KnowledgeBaseIcon },
 -       { path: '/chat', name: t('chat'), icon: MessageOutlined },
 -       { path: '/search', name: t('search'), icon: SearchOutlined },
 -       { path: '/agent-list', name: t('flow'), icon: GraphIcon },
 -       { path: '/file', name: t('fileManager'), icon: FileIcon },
 -     ],
 -     [t],
 -   );
 - 
 -   const currentPath = useMemo(() => {
 -     return (
 -       tagsData.find((x) => pathname.startsWith(x.path))?.name || 'knowledge'
 -     );
 -   }, [pathname, tagsData]);
 - 
 -   const handleChange = useCallback(
 -     (path: string): MouseEventHandler =>
 -       (e) => {
 -         e.preventDefault();
 -         navigate(path);
 -       },
 -     [navigate],
 -   );
 - 
 -   const handleLogoClick = useCallback(() => {
 -     navigate('/');
 -   }, [navigate]);
 - 
 -   return (
 -     <Header
 -       style={{
 -         padding: '0 16px',
 -         background: colorBgContainer,
 -         display: 'flex',
 -         justifyContent: 'space-between',
 -         alignItems: 'center',
 -         height: '72px',
 -       }}
 -     >
 -       <a href={window.location.origin}>
 -         <Space
 -           size={12}
 -           onClick={handleLogoClick}
 -           className={styles.logoWrapper}
 -         >
 -           <img src="/logo.svg" alt="" className={styles.appIcon} />
 -           <span className={styles.appName}>{appConf.appName}</span>
 -         </Space>
 -       </a>
 -       <Space size={[0, 8]} wrap>
 -         <Radio.Group
 -           defaultValue="a"
 -           buttonStyle="solid"
 -           className={
 -             themeRag === 'dark' ? styles.radioGroupDark : styles.radioGroup
 -           }
 -           value={currentPath}
 -         >
 -           {tagsData.map((item, index) => (
 -             <Radio.Button
 -               className={`${themeRag === 'dark' ? 'dark' : 'light'} ${index === 0 ? 'first' : ''} ${index === tagsData.length - 1 ? 'last' : ''}`}
 -               value={item.name}
 -               key={item.name}
 -             >
 -               <a href={item.path}>
 -                 <Flex
 -                   align="center"
 -                   gap={8}
 -                   onClick={handleChange(item.path)}
 -                   className="cursor-pointer"
 -                 >
 -                   <item.icon
 -                     className={styles.radioButtonIcon}
 -                     stroke={item.name === currentPath ? 'black' : 'white'}
 -                   ></item.icon>
 -                   {item.name}
 -                 </Flex>
 -               </a>
 -             </Radio.Button>
 -           ))}
 -         </Radio.Group>
 -       </Space>
 -       <Toolbar></Toolbar>
 -     </Header>
 -   );
 - };
 - 
 - export default RagHeader;
 
 
  |