2025-08-05 12:35:40 +07:00
|
|
|
// Next Imports
|
|
|
|
|
import { useParams } from 'next/navigation'
|
|
|
|
|
|
|
|
|
|
// MUI Imports
|
|
|
|
|
import { useTheme } from '@mui/material/styles'
|
|
|
|
|
|
|
|
|
|
// Third-party Imports
|
|
|
|
|
import PerfectScrollbar from 'react-perfect-scrollbar'
|
|
|
|
|
|
|
|
|
|
// Type Imports
|
|
|
|
|
import type { getDictionary } from '@/utils/getDictionary'
|
|
|
|
|
import type { VerticalMenuContextProps } from '@menu/components/vertical-menu/Menu'
|
|
|
|
|
|
|
|
|
|
// Component Imports
|
2025-08-07 03:53:40 +07:00
|
|
|
import { Menu, MenuItem, MenuSection, SubMenu } from '@menu/vertical-menu'
|
2025-08-05 12:35:40 +07:00
|
|
|
|
|
|
|
|
// import { GenerateVerticalMenu } from '@components/GenerateMenu'
|
|
|
|
|
|
|
|
|
|
// Hook Imports
|
|
|
|
|
import useVerticalNav from '@menu/hooks/useVerticalNav'
|
|
|
|
|
|
|
|
|
|
// Styled Component Imports
|
|
|
|
|
import StyledVerticalNavExpandIcon from '@menu/styles/vertical/StyledVerticalNavExpandIcon'
|
|
|
|
|
|
|
|
|
|
// Style Imports
|
|
|
|
|
import menuItemStyles from '@core/styles/vertical/menuItemStyles'
|
|
|
|
|
import menuSectionStyles from '@core/styles/vertical/menuSectionStyles'
|
|
|
|
|
|
|
|
|
|
// Menu Data Imports
|
|
|
|
|
// import menuData from '@/data/navigation/verticalMenuData'
|
|
|
|
|
|
|
|
|
|
type RenderExpandIconProps = {
|
|
|
|
|
open?: boolean
|
|
|
|
|
transitionDuration?: VerticalMenuContextProps['transitionDuration']
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Props = {
|
|
|
|
|
dictionary: Awaited<ReturnType<typeof getDictionary>>
|
|
|
|
|
scrollMenu: (container: any, isPerfectScrollbar: boolean) => void
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const RenderExpandIcon = ({ open, transitionDuration }: RenderExpandIconProps) => (
|
|
|
|
|
<StyledVerticalNavExpandIcon open={open} transitionDuration={transitionDuration}>
|
|
|
|
|
<i className='tabler-chevron-right' />
|
|
|
|
|
</StyledVerticalNavExpandIcon>
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const VerticalMenu = ({ dictionary, scrollMenu }: Props) => {
|
|
|
|
|
// Hooks
|
|
|
|
|
const theme = useTheme()
|
|
|
|
|
const verticalNavOptions = useVerticalNav()
|
|
|
|
|
const params = useParams()
|
|
|
|
|
|
|
|
|
|
// Vars
|
|
|
|
|
const { isBreakpointReached, transitionDuration } = verticalNavOptions
|
|
|
|
|
const { lang: locale } = params
|
|
|
|
|
|
|
|
|
|
const ScrollWrapper = isBreakpointReached ? 'div' : PerfectScrollbar
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
// eslint-disable-next-line lines-around-comment
|
|
|
|
|
/* Custom scrollbar instead of browser scroll, remove if you want browser scroll only */
|
|
|
|
|
<ScrollWrapper
|
|
|
|
|
{...(isBreakpointReached
|
|
|
|
|
? {
|
|
|
|
|
className: 'bs-full overflow-y-auto overflow-x-hidden',
|
|
|
|
|
onScroll: container => scrollMenu(container, false)
|
|
|
|
|
}
|
|
|
|
|
: {
|
|
|
|
|
options: { wheelPropagation: false, suppressScrollX: true },
|
|
|
|
|
onScrollY: container => scrollMenu(container, true)
|
|
|
|
|
})}
|
|
|
|
|
>
|
|
|
|
|
{/* Incase you also want to scroll NavHeader to scroll with Vertical Menu, remove NavHeader from above and paste it below this comment */}
|
|
|
|
|
{/* Vertical Menu */}
|
|
|
|
|
<Menu
|
|
|
|
|
popoutMenuOffset={{ mainAxis: 23 }}
|
|
|
|
|
menuItemStyles={menuItemStyles(verticalNavOptions, theme)}
|
|
|
|
|
renderExpandIcon={({ open }) => <RenderExpandIcon open={open} transitionDuration={transitionDuration} />}
|
|
|
|
|
renderExpandedMenuItemIcon={{ icon: <i className='tabler-circle text-xs' /> }}
|
|
|
|
|
menuSectionStyles={menuSectionStyles(verticalNavOptions, theme)}
|
|
|
|
|
>
|
2025-08-07 03:53:40 +07:00
|
|
|
<SubMenu label={dictionary['navigation'].dashboards} icon={<i className='tabler-smart-home' />}>
|
2025-08-05 12:35:40 +07:00
|
|
|
<MenuItem href={`/${locale}/dashboards/crm`}>{dictionary['navigation'].crm}</MenuItem>
|
|
|
|
|
<MenuItem href={`/${locale}/dashboards/analytics`}>{dictionary['navigation'].analytics}</MenuItem>
|
2025-08-07 23:48:31 +07:00
|
|
|
<SubMenu label={dictionary['navigation'].eCommerce}>
|
|
|
|
|
<MenuItem href={`/${locale}/dashboards/ecommerce/order`}>{dictionary['navigation'].orders}</MenuItem>
|
|
|
|
|
<MenuItem href={`/${locale}/dashboards/ecommerce/product`}>{dictionary['navigation'].products}</MenuItem>
|
|
|
|
|
</SubMenu>
|
|
|
|
|
<SubMenu label={dictionary['navigation'].finance}>
|
|
|
|
|
<MenuItem href={`/${locale}/dashboards/finance/payment-method`}>
|
|
|
|
|
{dictionary['navigation'].paymentMethods}
|
|
|
|
|
</MenuItem>
|
|
|
|
|
</SubMenu>
|
2025-08-05 12:35:40 +07:00
|
|
|
</SubMenu>
|
|
|
|
|
<MenuSection label={dictionary['navigation'].appsPages}>
|
|
|
|
|
<SubMenu label={dictionary['navigation'].eCommerce} icon={<i className='tabler-shopping-cart' />}>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/dashboard`}>{dictionary['navigation'].dashboard}</MenuItem>
|
|
|
|
|
<SubMenu label={dictionary['navigation'].products}>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/products/list`}>{dictionary['navigation'].list}</MenuItem>
|
2025-08-07 23:48:31 +07:00
|
|
|
<MenuItem className='hidden' href={`/${locale}/apps/ecommerce/products/${params.id}/detail`}>
|
|
|
|
|
{dictionary['navigation'].details}
|
|
|
|
|
</MenuItem>
|
|
|
|
|
<MenuItem className='hidden' href={`/${locale}/apps/ecommerce/products/${params.id}/edit`}>
|
|
|
|
|
{dictionary['navigation'].edit}
|
|
|
|
|
</MenuItem>
|
2025-08-05 12:35:40 +07:00
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/products/add`}>{dictionary['navigation'].add}</MenuItem>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/products/category`}>
|
|
|
|
|
{dictionary['navigation'].category}
|
|
|
|
|
</MenuItem>
|
2025-08-07 03:53:40 +07:00
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/products/units`}>{dictionary['navigation'].units}</MenuItem>
|
2025-08-06 13:18:19 +07:00
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/products/ingredients`}>
|
|
|
|
|
{dictionary['navigation'].ingredients}
|
|
|
|
|
</MenuItem>
|
2025-08-05 12:35:40 +07:00
|
|
|
</SubMenu>
|
|
|
|
|
<SubMenu label={dictionary['navigation'].orders}>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/orders/list`}>{dictionary['navigation'].list}</MenuItem>
|
|
|
|
|
</SubMenu>
|
|
|
|
|
<SubMenu label={dictionary['navigation'].customers}>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/customers/list`}>{dictionary['navigation'].list}</MenuItem>
|
|
|
|
|
</SubMenu>
|
2025-08-07 14:31:42 +07:00
|
|
|
<SubMenu label={dictionary['navigation'].stock}>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/inventory/list`}>{dictionary['navigation'].list}</MenuItem>
|
2025-08-07 23:48:31 +07:00
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/inventory/adjustment`}>
|
|
|
|
|
{dictionary['navigation'].addjustment}
|
|
|
|
|
</MenuItem>
|
2025-08-07 14:31:42 +07:00
|
|
|
</SubMenu>
|
2025-08-05 12:35:40 +07:00
|
|
|
<MenuItem href={`/${locale}/apps/ecommerce/settings`}>{dictionary['navigation'].settings}</MenuItem>
|
|
|
|
|
</SubMenu>
|
2025-08-07 14:31:42 +07:00
|
|
|
<SubMenu label={dictionary['navigation'].organization} icon={<i className='tabler-sitemap' />}>
|
|
|
|
|
<SubMenu label={dictionary['navigation'].outlet}>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/organization/outlets/list`}>{dictionary['navigation'].list}</MenuItem>
|
|
|
|
|
</SubMenu>
|
|
|
|
|
</SubMenu>
|
|
|
|
|
<SubMenu label={dictionary['navigation'].finance} icon={<i className='tabler-coins' />}>
|
|
|
|
|
<SubMenu label={dictionary['navigation'].paymentMethods}>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/finance/payment-methods/list`}>{dictionary['navigation'].list}</MenuItem>
|
|
|
|
|
</SubMenu>
|
2025-08-06 03:57:45 +07:00
|
|
|
</SubMenu>
|
2025-08-05 12:35:40 +07:00
|
|
|
<SubMenu label={dictionary['navigation'].user} icon={<i className='tabler-user' />}>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/user/list`}>{dictionary['navigation'].list}</MenuItem>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/user/view`}>{dictionary['navigation'].view}</MenuItem>
|
|
|
|
|
</SubMenu>
|
|
|
|
|
<SubMenu label={dictionary['navigation'].rolesPermissions} icon={<i className='tabler-lock' />}>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/roles`}>{dictionary['navigation'].roles}</MenuItem>
|
|
|
|
|
<MenuItem href={`/${locale}/apps/permissions`}>{dictionary['navigation'].permissions}</MenuItem>
|
|
|
|
|
</SubMenu>
|
|
|
|
|
</MenuSection>
|
|
|
|
|
</Menu>
|
|
|
|
|
{/* <Menu
|
|
|
|
|
popoutMenuOffset={{ mainAxis: 23 }}
|
|
|
|
|
menuItemStyles={menuItemStyles(verticalNavOptions, theme)}
|
|
|
|
|
renderExpandIcon={({ open }) => <RenderExpandIcon open={open} transitionDuration={transitionDuration} />}
|
|
|
|
|
renderExpandedMenuItemIcon={{ icon: <i className='tabler-circle text-xs' /> }}
|
|
|
|
|
menuSectionStyles={menuSectionStyles(verticalNavOptions, theme)}
|
|
|
|
|
>
|
|
|
|
|
<GenerateVerticalMenu menuData={menuData(dictionary)} />
|
|
|
|
|
</Menu> */}
|
|
|
|
|
</ScrollWrapper>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default VerticalMenu
|