import { useState, useMemo } from 'react'; import { NavLink, matchPath, useLocation, useMatches } from 'react-router-dom'; import { Layout, Menu, theme } from 'antd'; import type { MenuProps } from 'antd'; import { CustomRouteObject } from '@web/src/routes/types'; const { Sider } = Layout; const { useToken } = theme; type SidebarProps = { routes: CustomRouteObject[]; }; export default function AdminSidebar({ routes }: SidebarProps) { const [collapsed, setCollapsed] = useState(false); const { token } = useToken(); let matches = useMatches(); console.log(matches) const menuItems: MenuProps['items'] = useMemo(() => routes.map(route => ({ key: route.path, icon: route.icon, label: ( {route.name} ), })) , [routes]); return ( setCollapsed(value)} width={150} className="h-screen sticky top-0" style={{ backgroundColor: token.colorBgContainer, borderRight: `1px solid ${token.colorBorderSecondary}` }} > matches.some(match => match.pathname.includes(route.path))) .map(route => route.path)} items={menuItems} className="border-r-0" style={{ borderRight: 0 }} /> ); }