import { dashboardNavigation } from '@/lib/constants/navigation'; import type { NavigationItem } from '@/types/navigation'; export function isPathActive(pathname: string, href: string) { if (href === '/') { return pathname === '/'; } return pathname === href || pathname.startsWith(`${href}/`); } export function isNavigationItemActive(pathname: string, item: NavigationItem): boolean { return isPathActive(pathname, item.href) || item.children?.some((child) => isNavigationItemActive(pathname, child)) || false; } export function flattenNavigationItems(items: NavigationItem[]): NavigationItem[] { return items.flatMap((item) => [item, ...(item.children ? flattenNavigationItems(item.children) : [])]); } export function getCurrentNavigationItem(pathname: string): NavigationItem | undefined { const findMatch = (items: NavigationItem[]): NavigationItem | undefined => { for (const item of items) { if (item.children) { const childMatch = findMatch(item.children); if (childMatch) { return childMatch; } } if (isPathActive(pathname, item.href)) { return item; } } return undefined; }; return findMatch(dashboardNavigation); }