// import React from 'react';
// import './FriendMoments.css'; 
// import { Link } from 'wouter'; 
// import logo from '../../assets/logo.png'; 

// const FriendMoments = () => {
//   return (
//     <div className="friend-moments">
//       {/* 顶部栏 */}
//       <header className="header">
//         {/* 左侧 logo 和网站名称 */}
//         <div className="logo-and-name">
//           {/* 确保此处没有语法错误 */}
//           <img src={logo} alt="网站 logo" className="logo" />
//           <span className="site-name">Echo</span>
//         </div>
//         {/* 右侧用户头像和消息中心 */}
//         <div className="user-and-message">
//           <img src="user-avatar.png" alt="用户头像" className="user-avatar" />
//           <span className="message-center">消息</span>
//         </div>
//       </header>
//       {/* 导航栏 */}
//       <nav className="nav">
//         <Link to="/friend-moments" className="nav-item active">好友动态</Link>
//         <Link to="/forum" className="nav-item">论坛</Link>
//         <Link to="/interest-groups" className="nav-item">兴趣小组</Link>
//         <Link to="/seed-list" className="nav-item">种子列表</Link>
//         <Link to="/publish-seed" className="nav-item">发布种子</Link>
//       </nav>
//       {/* 好友动态内容区域 */}
//       <div className="content">
//         {/* 用户动态示例，可从后端获取数据循环展示 */}
//         <div className="user-post">
//           <div className="user-info">
//             <img src="user1-avatar.png" alt="用户头像" className="user-avatar-small" />
//             <span className="username">user1</span>
//           </div>
//           <div className="post-content">
//             <p>动态内容...</p>
//           </div>
//           <div className="post-actions">
//             {/* <GoodTwo theme="outline" size="24" fill="#fff" /> */}
//             <span className="like-count">21</span>
//             {/* <Comment theme="outline" size="24" fill="#fff"/> */}
//             <span className="comment-count">2</span>
//           </div>
//           <img src="image1.png" alt="动态图片" className="post-image" />
//         </div>
//       </div>
//     </div>
//   );
// };

// export default FriendMoments;