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 (

{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 (
)
}