import { Link } from 'react-router-dom' import { ArrowLeft, Menu, X } from 'lucide-react' import clsx from 'clsx' import { LAYOUT_NAV_ITEMS, type LayoutNavItem, } from './layoutNavigation' import { SidebarLink } from './LayoutSidebarNav' export type LayoutSidebarContentProps = { isSidebarOpen: boolean isMobileDrawerOpen: boolean isAdmin: boolean can: (key: string) => boolean onToggleSidebar: () => void onCloseMobileDrawer: () => void variant?: 'media' | 'admin' } export function LayoutSidebarContent({ isSidebarOpen, isMobileDrawerOpen, isAdmin, can, onToggleSidebar, onCloseMobileDrawer, variant = 'admin', }: LayoutSidebarContentProps) { const sidebarExpanded = isSidebarOpen || isMobileDrawerOpen const adminItems = visibleSidebarItems({ isAdmin, can, items: LAYOUT_NAV_ITEMS }) return (
{/* 窄屏媒体浏览抽屉不展示 MEDIA_NAV_ITEMS:底部导航与用户菜单已覆盖 */} {variant !== 'media' || adminItems.length > 0 ? ( ) : null}
) } function visibleSidebarItems({ isAdmin, can, items, }: Pick & { items: LayoutNavItem[] }): LayoutNavItem[] { return items.filter( (item) => (!item.adminOnly || isAdmin) && (!item.permission || can(item.permission)), ) } function LayoutSidebarHeader({ sidebarExpanded, onToggleSidebar, onCloseMobileDrawer, }: { sidebarExpanded: boolean onToggleSidebar: () => void onCloseMobileDrawer: () => void }) { return (
MeBox {sidebarExpanded && ( MeBox )}
) } function LayoutSidebarNav({ items, sidebarExpanded, }: { items: LayoutNavItem[] sidebarExpanded: boolean }) { return ( ) } function LayoutSidebarHomeBack({ sidebarExpanded }: { sidebarExpanded: boolean }) { return (
{sidebarExpanded && 返回系统首页}
) } function SidebarIconButton({ children, className, onClick, }: { children: React.ReactNode className: string onClick: () => void }) { return ( ) }