import React, { useState } from 'react'; import { Layout, Avatar, Tooltip, Button } from 'antd'; import { MenuUnfoldOutlined, MenuFoldOutlined, LogoutOutlined, QuestionCircleOutlined, RightOutlined, LeftOutlined } 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}
{/* 折叠按钮 - 悬浮在边缘 */}
onCollapse && onCollapse(!collapsed)} > {collapsed ? : }
{/* 菜单列表区域 */}
{menuGroups.map((group, index) => (
{!collapsed && group.title && (
{group.title}
)}
{group.items.map(item => renderMenuItem(item))}
))}
{/* 底部区域 */}
{/* 帮助支持 */} {!collapsed && (
帮助支持
)} {collapsed && (
)} {/* 用户卡片 */}
{user?.name?.[0]?.toUpperCase() || 'U'} {!collapsed && (
{user?.name || 'User'}
{user?.role || 'Member'}
)}
{!collapsed && (
)}
); }; export default ModernSidebar;