225 lines
10 KiB
TypeScript
Raw Normal View History

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-08 17:59:39 +07:00
<MenuItem href={`/${locale}/dashboards/overview`}>{dictionary['navigation'].overview}</MenuItem>
2025-08-10 21:46:15 +07:00
</SubMenu>
<SubMenu label={dictionary['navigation'].reports} icon={<i className='tabler-report' />}>
2025-08-08 17:59:39 +07:00
<MenuItem href={`/${locale}/dashboards/profit-loss`}>{dictionary['navigation'].profitloss}</MenuItem>
<MenuItem href={`/${locale}/dashboards/products`}>{dictionary['navigation'].products}</MenuItem>
<MenuItem href={`/${locale}/dashboards/orders`}>{dictionary['navigation'].orders}</MenuItem>
<MenuItem href={`/${locale}/dashboards/payment-methods`}>{dictionary['navigation'].paymentMethods}</MenuItem>
2025-08-11 02:12:19 +07:00
<MenuItem href={`/${locale}/dashboards/daily-report`}>{dictionary['navigation'].dailyReport}</MenuItem>
2025-08-05 12:35:40 +07:00
</SubMenu>
<MenuSection label={dictionary['navigation'].appsPages}>
2025-09-13 03:52:11 +07:00
{/* <SubMenu label={dictionary['navigation'].sales} icon={<i className='tabler-receipt-2' />}>
2025-09-09 15:42:05 +07:00
<MenuItem href={`/${locale}/apps/sales/overview`}>{dictionary['navigation'].overview}</MenuItem>
2025-09-10 00:19:11 +07:00
<MenuItem href={`/${locale}/apps/sales/sales-bills`}>{dictionary['navigation'].invoices}</MenuItem>
2025-09-10 00:28:23 +07:00
<MenuItem href={`/${locale}/apps/sales/sales-deliveries`}>{dictionary['navigation'].deliveries}</MenuItem>
2025-09-10 00:40:54 +07:00
<MenuItem href={`/${locale}/apps/sales/sales-orders`}>{dictionary['navigation'].sales_orders}</MenuItem>
2025-09-10 00:47:15 +07:00
<MenuItem href={`/${locale}/apps/sales/sales-quotes`}>{dictionary['navigation'].quotes}</MenuItem>
2025-09-13 03:52:11 +07:00
</SubMenu> */}
2025-09-10 14:24:18 +07:00
<SubMenu label={dictionary['navigation'].purchase_text} icon={<i className='tabler-shopping-cart' />}>
2025-09-09 16:17:25 +07:00
<MenuItem href={`/${locale}/apps/purchase/overview`}>{dictionary['navigation'].overview}</MenuItem>
2025-09-13 03:52:11 +07:00
{/* <MenuItem href={`/${locale}/apps/purchase/purchase-bills`}>
2025-09-09 23:23:59 +07:00
{dictionary['navigation'].purchase_bills}
</MenuItem>
2025-09-09 23:41:04 +07:00
<MenuItem href={`/${locale}/apps/purchase/purchase-deliveries`}>
{dictionary['navigation'].purchase_delivery}
2025-09-13 03:52:11 +07:00
</MenuItem> */}
2025-09-09 17:42:49 +07:00
<MenuItem href={`/${locale}/apps/purchase/purchase-orders`}>
{dictionary['navigation'].purchase_orders}
</MenuItem>
2025-09-13 03:52:11 +07:00
{/* <MenuItem href={`/${locale}/apps/purchase/purchase-quotes`}>
2025-09-09 23:55:38 +07:00
{dictionary['navigation'].purchase_quotes}
2025-09-13 03:52:11 +07:00
</MenuItem> */}
2025-09-09 16:17:25 +07:00
</SubMenu>
2025-09-10 17:51:24 +07:00
<MenuItem
href={`/${locale}/apps/expense`}
icon={<i className='tabler-cash' />}
exactMatch={false}
activeUrl='/apps/expense'
>
{dictionary['navigation'].expenses}
</MenuItem>
2025-09-10 17:41:07 +07:00
<MenuItem
href={`/${locale}/apps/cash-bank`}
2025-09-10 17:51:24 +07:00
icon={<i className='tabler-building-bank' />}
2025-09-10 17:41:07 +07:00
exactMatch={false}
activeUrl='/apps/cash-bank'
>
{dictionary['navigation'].cash_and_bank}
</MenuItem>
2025-09-11 00:16:00 +07:00
<MenuItem
href={`/${locale}/apps/account`}
icon={<i className='tabler-align-box-left-stretch' />}
exactMatch={false}
activeUrl='/apps/account'
>
{dictionary['navigation'].account}
</MenuItem>
2025-09-11 13:37:52 +07:00
<MenuItem
href={`/${locale}/apps/fixed-assets`}
icon={<i className='tabler-apps' />}
exactMatch={false}
activeUrl='/apps/fixed-assets'
>
{dictionary['navigation'].fixed_assets}
</MenuItem>
2025-09-11 15:32:26 +07:00
<MenuItem
href={`/${locale}/apps/report`}
icon={<i className='tabler-file-analytics' />}
exactMatch={false}
activeUrl='/apps/report'
>
{dictionary['navigation'].reports}
</MenuItem>
2025-08-14 00:29:19 +07:00
<SubMenu label={dictionary['navigation'].inventory} icon={<i className='tabler-salad' />}>
2025-08-05 12:35:40 +07:00
<SubMenu label={dictionary['navigation'].products}>
2025-08-14 01:29:40 +07:00
<MenuItem href={`/${locale}/apps/inventory/products/list`}>{dictionary['navigation'].list}</MenuItem>
<MenuItem className='hidden' href={`/${locale}/apps/inventory/products/${params.id}/detail`}>
2025-08-07 23:48:31 +07:00
{dictionary['navigation'].details}
</MenuItem>
2025-08-14 01:29:40 +07:00
<MenuItem className='hidden' href={`/${locale}/apps/inventory/products/${params.id}/edit`}>
2025-08-07 23:48:31 +07:00
{dictionary['navigation'].edit}
</MenuItem>
2025-08-14 01:29:40 +07:00
<MenuItem href={`/${locale}/apps/inventory/products/add`}>{dictionary['navigation'].add}</MenuItem>
<MenuItem href={`/${locale}/apps/inventory/products/category`}>
2025-08-05 12:35:40 +07:00
{dictionary['navigation'].category}
</MenuItem>
2025-08-14 01:29:40 +07:00
<MenuItem href={`/${locale}/apps/inventory/products/units`}>{dictionary['navigation'].units}</MenuItem>
<MenuItem href={`/${locale}/apps/inventory/products/ingredients`}>
2025-08-06 13:18:19 +07:00
{dictionary['navigation'].ingredients}
</MenuItem>
2025-08-05 12:35:40 +07:00
</SubMenu>
<SubMenu label={dictionary['navigation'].orders}>
2025-08-14 01:29:40 +07:00
<MenuItem href={`/${locale}/apps/inventory/orders/list`}>{dictionary['navigation'].list}</MenuItem>
<MenuItem className='hidden' href={`/${locale}/apps/inventory/orders/${params.id}/details`}>
2025-08-11 02:12:19 +07:00
{dictionary['navigation'].details}
</MenuItem>
2025-08-05 12:35:40 +07:00
</SubMenu>
<SubMenu label={dictionary['navigation'].customers}>
2025-08-14 01:29:40 +07:00
<MenuItem href={`/${locale}/apps/inventory/customers/list`}>{dictionary['navigation'].list}</MenuItem>
2025-08-05 12:35:40 +07:00
</SubMenu>
2025-08-07 14:31:42 +07:00
<SubMenu label={dictionary['navigation'].stock}>
2025-08-14 01:29:40 +07:00
<MenuItem href={`/${locale}/apps/inventory/stock/list`}>{dictionary['navigation'].list}</MenuItem>
2025-09-09 01:17:01 +07:00
<MenuItem href={`/${locale}/apps/inventory/stock/restock`}>{dictionary['navigation'].restock}</MenuItem>
2025-08-07 14:31:42 +07:00
</SubMenu>
2025-08-14 01:29:40 +07:00
{/* <MenuItem href={`/${locale}/apps/inventory/settings`}>{dictionary['navigation'].settings}</MenuItem> */}
2025-08-05 12:35:40 +07:00
</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-09-10 17:51:24 +07:00
<MenuItem
href={`/${locale}/apps/user/list`}
icon={<i className='tabler-user' />}
exactMatch={false}
activeUrl='/apps/user/list'
>
{dictionary['navigation'].user}
</MenuItem>
<MenuItem
href={`/${locale}/apps/vendor/list`}
icon={<i className='tabler-building' />}
exactMatch={false}
activeUrl='/apps/vendor/list'
>
{dictionary['navigation'].vendor}
</MenuItem>
2025-09-13 14:25:25 +07:00
<MenuItem href={`/${locale}/draw`} icon={<i className='tabler-building' />} target='_blank'>
Random Draw
</MenuItem>
2025-08-05 12:35:40 +07:00
</MenuSection>
</Menu>
</ScrollWrapper>
)
}
export default VerticalMenu