| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { ReactComponent as StarIon } from '@/assets/svg/chat-star.svg';
- import { ReactComponent as KnowledgeBaseIcon } from '@/assets/svg/knowledge-base.svg';
- import { ReactComponent as Logo } from '@/assets/svg/logo.svg';
- import { Layout, Radio, Space, theme } from 'antd';
- import Toolbar from '../right-toolbar';
-
- import styles from './index.less';
-
- import { useNavigateWithFromState } from '@/hooks/routeHook';
- import { useCallback, useMemo } from 'react';
- import { useLocation } from 'umi';
-
- const { Header } = Layout;
-
- const RagHeader = () => {
- const {
- token: { colorBgContainer },
- } = theme.useToken();
- const navigate = useNavigateWithFromState();
- const { pathname } = useLocation();
-
- const tagsData = useMemo(
- () => [
- { path: '/knowledge', name: 'Knowledge Base', icon: KnowledgeBaseIcon },
- { path: '/chat', name: 'Chat', icon: StarIon },
- // { path: '/file', name: 'File Management', icon: FileIcon },
- ],
- [],
- );
-
- const currentPath = useMemo(() => {
- return (
- tagsData.find((x) => pathname.startsWith(x.path))?.name || 'knowledge'
- );
- }, [pathname, tagsData]);
-
- const handleChange = (path: string) => {
- navigate(path);
- };
-
- const handleLogoClick = useCallback(() => {
- navigate('/');
- }, [navigate]);
-
- return (
- <Header
- style={{
- padding: '0 16px',
- background: colorBgContainer,
- display: 'flex',
- justifyContent: 'space-between',
- alignItems: 'center',
- height: '72px',
- }}
- >
- <Space size={12} onClick={handleLogoClick} className={styles.logoWrapper}>
- <Logo className={styles.appIcon}></Logo>
- <span className={styles.appName}>RAGFlow</span>
- </Space>
- <Space size={[0, 8]} wrap>
- <Radio.Group
- defaultValue="a"
- buttonStyle="solid"
- className={styles.radioGroup}
- value={currentPath}
- >
- {tagsData.map((item) => (
- <Radio.Button
- value={item.name}
- onClick={() => handleChange(item.path)}
- key={item.name}
- >
- <Space>
- <item.icon
- className={styles.radioButtonIcon}
- stroke={item.name === currentPath ? 'black' : 'white'}
- ></item.icon>
- {item.name}
- </Space>
- </Radio.Button>
- ))}
- </Radio.Group>
- </Space>
- <Toolbar></Toolbar>
- </Header>
- );
- };
-
- export default RagHeader;
|