import { transformColorWithOpacity } from '@sa/color'; import { SimpleScrollbar } from '@sa/materials'; import clsx from 'clsx'; import { cloneElement } from 'react'; import { MenuToggler, useMixMenuContext } from '@/features/menu'; import { useRouter } from '@/features/router'; import { ThemeContext, getThemeSettings } from '@/features/theme'; import { getSiderCollapse } from '@/layouts/appStore'; interface Props { children?: React.ReactNode; inverted?: boolean; onSelect?: () => void; } interface MixMenuItemProps { /** Active menu item */ active: boolean; inverted?: boolean; /** Menu item label */ menu: App.Global.Menu; onClick?: () => void; setActiveFirstLevelMenuKey: (key: string) => void; } function MixMenuItem(Props: MixMenuItemProps) { const { active, inverted, menu: { children, icon, key, label }, onClick, setActiveFirstLevelMenuKey } = Props; const themeSettings = useAppSelector(getThemeSettings); const { navigate } = useRouter(); const { darkMode } = useContext(ThemeContext); const siderCollapse = useAppSelector(getSiderCollapse); const selectedBgColor = getSelectedBgColor(); function getSelectedBgColor() { const light = transformColorWithOpacity(themeSettings.themeColor, 0.1, '#ffffff'); const dark = transformColorWithOpacity(themeSettings.themeColor, 0.3, '#000000'); return darkMode ? dark : light; } function handleSelectMixMenu() { setActiveFirstLevelMenuKey(key); if (children?.length) { if (onClick) onClick(); } else { navigate(key); } } return (
{label}