import { Link } from 'react-router-dom' import { motion } from 'framer-motion' import { ArrowLeft, Menu, X } from 'lucide-react' import clsx from 'clsx' import { LAYOUT_NAV_ITEMS, MEDIA_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 mediaItems = visibleSidebarItems({ isAdmin, can, items: MEDIA_NAV_ITEMS }) const adminItems = visibleSidebarItems({ isAdmin, can, items: LAYOUT_NAV_ITEMS }) return (
{variant === 'media' ? ( <> {adminItems.length > 0 && (
)} ) : ( )}
) } 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 (
MMTL {sidebarExpanded && ( MMTL )}
) } function LayoutSidebarSectionLabel({ sidebarExpanded, label, }: { sidebarExpanded: boolean label: string }) { if (!sidebarExpanded) return null return (

{label}

) } function LayoutSidebarNav({ items, sidebarExpanded, grow = false, }: { items: LayoutNavItem[] sidebarExpanded: boolean grow?: boolean }) { return ( ) } function LayoutSidebarHomeBack({ sidebarExpanded }: { sidebarExpanded: boolean }) { return (
{sidebarExpanded && 返回系统首页}
) } function SidebarIconButton({ children, className, onClick, }: { children: React.ReactNode className: string onClick: () => void }) { return ( ) }