'use client'; import { useCallback, useState } from 'react'; import { usePathname } from 'next/navigation'; import Image from 'next/image'; import { Icon } from '@iconify/react'; import Drawer from '@/components/Drawer'; import Menu from '@/components/menu/Menu'; import MenuItem from '@/components/menu/MenuItem'; import Navbar from '@/components/Navbar'; import Collapse from '@/components/Collapse'; import { useUiStore } from '@/stores/ui/ui.store'; import { MAIN_DRAWER_LINKS } from '@/config/constant'; import { cn } from '@/lib/helper'; type CollapseMenuProps = { title: string; link: string; icon: string; submenu?: CollapseMenuProps[]; depth?: number; }; const isPathActive = (pathname: string, link?: string) => { if (!link) return false; const splittedPathname = pathname.split('/'); const splittedLink = link.split('/'); const isActiveLinkValid = splittedLink.every((linkChunk, idx) => { return linkChunk === splittedPathname[idx]; }); return pathname.startsWith(link) && isActiveLinkValid; }; const CollapseMenu = ({ title, link, icon, submenu, depth = 0, }: CollapseMenuProps) => { const pathname = usePathname(); const isActive = isPathActive(pathname, link); const [open, setOpen] = useState(isActive); const menuCollapseTitle = (
{title}
); return (
{submenu?.map((item, idx) => { const hasSubmenu = item.submenu && item.submenu.length > 0; if (!hasSubmenu) { return ( ); } return ( ); })}
); }; const MainDrawerMenu = () => { const pathname = usePathname(); return ( {MAIN_DRAWER_LINKS.map((item, idx) => { const hasSubmenu = item.submenu && item.submenu.length > 0; if (!hasSubmenu) { return ( ); } return ( ); })} ); }; const MainDrawerContent = () => { return (
MBU Logo

LTI ERP

); }; const MainDrawer = ({ children, }: Readonly<{ children: React.ReactNode; }>) => { const { mainDrawerOpen, setMainDrawerOpen } = useUiStore(); const pathname = usePathname(); const getPageTitle = useCallback(() => { let title = ''; const activeMenu = MAIN_DRAWER_LINKS.find((item) => isPathActive(pathname, item.link) ); const traverseMenuTitle = (menu: typeof activeMenu) => { if (!menu) return; const hasSubmenu = menu?.submenu && menu?.submenu.length > 0; if (!title) { title += menu?.title; } else { title += ' - ' + menu?.title; } if (!hasSubmenu || !menu.submenu) return; const activeSubmenu = menu.submenu?.find((item) => isPathActive(pathname, item.link) ); traverseMenuTitle(activeSubmenu); }; traverseMenuTitle(activeMenu); return title; }, [pathname]); const pageTitle = getPageTitle(); const toggleSidebar = () => { setMainDrawerOpen(!mainDrawerOpen); }; return ( } >
{children}
); }; export default MainDrawer;