// import React from 'react';
// import { Link } from 'wouter'; // Use wouter's Link component

// const Navbar = () => {
//   const { user, logout } = useUser();

//   return (
//     <nav className="navbar">
//       <div className="logo">EchoTorrent</div>
//       <div className="nav-links">
//         {user ? (
//           <>
//             <Link to="/">主页</Link>
//             <Link to="/profile">个人中心</Link>
//             <Link to="/forum">论坛</Link>
//             <button onClick={logout}>退出登录</button>
//           </>
//         ) : (
//           <>
//             <Link to="/auth">登录/注册</Link>
//             <Link to="/forum">论坛</Link>
//           </>
//         )}
//       </div>
//     </nav>
//   );
// };

// export default Navbar;
