import React from 'react'; import { Layout, Avatar, Tooltip } from 'antd'; import { LogoutOutlined, QuestionCircleOutlined, RightOutlined, MenuFoldOutlined, MenuUnfoldOutlined, } from '@ant-design/icons'; import './ModernSidebar.css'; const { Sider } = Layout; const ModernSidebar = ({ logo, menuGroups = [], activeKey, onNavigate, user, onLogout, onProfileClick, collapsed, onCollapse, width = 260, collapsedWidth = 80, className = '', style = {} }) => { const handleItemClick = (item) => { if (onNavigate) { onNavigate(item.key, item); } }; const renderMenuItem = (item) => { const isActive = activeKey === item.key; // 如果是折叠状态,只显示图标,并使用Tooltip if (collapsed) { return (
handleItemClick(item)} >
{item.icon}
); } return (
handleItemClick(item)} >
{item.icon}
{item.label}
{isActive && }
); }; return ( {/* 顶部 Logo 区域 */}
{logo}
{/* 菜单列表区域 */}
{menuGroups.map((group, index) => (
{!collapsed && group.title && (
{group.title}
)}
{group.items.map(item => renderMenuItem(item))}
))}
{/* 底部区域 */}
{/* 帮助支持 */} {!collapsed && (
帮助支持
)} {collapsed && ( )} {collapsed && ( )} {/* 用户卡片 */}
{user?.name?.[0]?.toUpperCase() || 'U'} {!collapsed && (
{user?.name || 'User'}
{user?.role || 'Member'}
)}
{!collapsed && ( )}
); }; export default ModernSidebar;