import classNames from 'classnames'
import ScrollBar from '@/components/ui/ScrollBar'
import {
SIDE_NAV_WIDTH,
SIDE_NAV_COLLAPSED_WIDTH,
NAV_MODE_DARK,
NAV_MODE_THEMED,
NAV_MODE_TRANSPARENT,
SIDE_NAV_CONTENT_GUTTER,
LOGO_X_GUTTER,
} from '@/constants/theme.constant'
import Logo from '@/components/template/Logo'
import VerticalMenuContent from '@/components/template/VerticalMenuContent'
import useResponsive from '@/utils/hooks/useResponsive'
import { useStoreState } from '@/store'
const sideNavStyle = {
width: SIDE_NAV_WIDTH,
minWidth: SIDE_NAV_WIDTH,
}
const sideNavCollapseStyle = {
width: SIDE_NAV_COLLAPSED_WIDTH,
minWidth: SIDE_NAV_COLLAPSED_WIDTH,
}
const SideNav = () => {
const themeColor = useStoreState((state) => state.theme.themeColor)
const primaryColorLevel = useStoreState((state) => state.theme.primaryColorLevel)
const navMode = useStoreState((state) => state.theme.navMode)
const mode = useStoreState((state) => state.theme.mode)
const direction = useStoreState((state) => state.theme.direction)
const currentRouteKey = useStoreState((state) => state.base.common.currentRouteKey)
const sideNavCollapse = useStoreState((state) => state.theme.layout.sideNavCollapse)
const userAuthority = useStoreState((state) => state.auth.user.authority)
const { larger } = useResponsive()
const sideNavColor = () => {
if (navMode === NAV_MODE_THEMED) {
return `bg-${themeColor}-${primaryColorLevel} side-nav-${navMode}`
}
return `side-nav-${navMode}`
}
const logoMode = () => {
if (navMode === NAV_MODE_THEMED) {
return NAV_MODE_DARK
}
if (navMode === NAV_MODE_TRANSPARENT) {
return mode
}
return navMode
}
const { mainMenu: navigationConfig } = useStoreState((state) => state.abpConfig.menu)
const menuContent = (