blob: 93d75cc7e2b418da9860ca43083503723af89b0f [file] [log] [blame]
22301009207e2db2025-06-09 00:27:28 +08001import React, { useEffect } from 'react';
Krishyaf1d0ea82025-05-03 17:01:58 +08002import './Header.css';
Krishya34493be2025-06-09 22:45:46 +08003// import logo from '../assets/logo.png';
4import { ReactComponent as LogoIcon } from '../assets/logo.svg';
5
22301009df48f962025-06-05 13:40:44 +08006import { useUser } from '../context/UserContext';
22301009207e2db2025-06-09 00:27:28 +08007import { BookOpen } from '@icon-park/react';
8import { useLocation } from 'wouter';
223010095b28c672025-04-10 20:12:45 +08009
10const Header = () => {
22301009df48f962025-06-05 13:40:44 +080011 const { user } = useUser();
22301009207e2db2025-06-09 00:27:28 +080012 const [location, setLocation] = useLocation();
223010095b28c672025-04-10 20:12:45 +080013
22301009007da0e2025-04-15 21:24:46 +080014 const navLinks = [
22301009007da0e2025-04-15 21:24:46 +080015 { to: '/seed-list', label: '种子列表' },
16 { to: '/publish-seed', label: '发布种子' },
Krishya34493be2025-06-09 22:45:46 +080017 { to: '/friend-moments', label: '好友动态' },
18 { to: '/forum', label: '论坛' },
19 { to: '/interest-groups', label: '兴趣小组' },
22301009007da0e2025-04-15 21:24:46 +080020 ];
21
22301009207e2db2025-06-09 00:27:28 +080022 useEffect(() => {}, [user?.avatarUrl]);
223010095b28c672025-04-10 20:12:45 +080023
24 return (
25 <div className="main-page">
223010095b28c672025-04-10 20:12:45 +080026 <header className="header">
223010095b28c672025-04-10 20:12:45 +080027 <div className="logo-and-name">
Krishya34493be2025-06-09 22:45:46 +080028 <LogoIcon className="logo" />
223010095b28c672025-04-10 20:12:45 +080029 <span className="site-name">Echo</span>
30 </div>
223010093d8132e2025-06-07 11:34:38 +080031 <div className="user-and-message" style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
22301009207e2db2025-06-09 00:27:28 +080032 <button
33 className="guide-button"
34 onClick={() => setLocation('/new-user-guide')}
35 title="新手指南"
36 >
37 <BookOpen theme="outline" size="20" fill="#fff" />
38 <span style={{ marginLeft: '6px' }}>新手指南</span>
39 </button>
223010093d8132e2025-06-07 11:34:38 +080040
22301009007da0e2025-04-15 21:24:46 +080041 <a href="/user/profile">
22301009df48f962025-06-05 13:40:44 +080042 <img
43 src={user?.avatarUrl}
44 alt="用户头像"
45 className="user-avatar"
46 />
22301009007da0e2025-04-15 21:24:46 +080047 </a>
22301009207e2db2025-06-09 00:27:28 +080048
49 {/* <span
22301009df48f962025-06-05 13:40:44 +080050 className="message-center"
22301009207e2db2025-06-09 00:27:28 +080051 onClick={() => setLocation('/messages')}
Krishyaf1d0ea82025-05-03 17:01:58 +080052 style={{ cursor: 'pointer' }}
53 >
54 消息
22301009207e2db2025-06-09 00:27:28 +080055 </span> */}
223010095b28c672025-04-10 20:12:45 +080056 </div>
57 </header>
22301009007da0e2025-04-15 21:24:46 +080058
223010095b28c672025-04-10 20:12:45 +080059 <nav className="nav">
22301009007da0e2025-04-15 21:24:46 +080060 {navLinks.map(({ to, label }) => (
22301009df48f962025-06-05 13:40:44 +080061 <a
62 key={to}
22301009007da0e2025-04-15 21:24:46 +080063 href={to}
64 onClick={(e) => {
Krishyaf1d0ea82025-05-03 17:01:58 +080065 e.preventDefault();
22301009207e2db2025-06-09 00:27:28 +080066 setLocation(to);
22301009007da0e2025-04-15 21:24:46 +080067 }}
22301009207e2db2025-06-09 00:27:28 +080068 className={`nav-item ${location.startsWith(to) ? 'active' : ''}`}
22301009007da0e2025-04-15 21:24:46 +080069 >
70 {label}
71 </a>
72 ))}
223010095b28c672025-04-10 20:12:45 +080073 </nav>
74 </div>
75 );
76};
77
78export default Header;