Files
Francesco Sansalvadore 23c827bdda feat: nested mobile nav menu (#43333)
- consolidate `top level menu` and `contextual menu` into nested menu on
mobile
- remove legacy mobile submenu
2026-03-11 13:55:20 +01:00

52 lines
1.2 KiB
TypeScript

import type { ReactNode } from 'react'
export interface OrgNavItem {
label: string
href: string
key: string
icon: ReactNode
}
export function getOrgActiveRoute(pathname: string): string | undefined {
const segments = pathname.split('/').filter(Boolean)
const orgIndex = segments.indexOf('org')
if (orgIndex === -1 || segments.length <= orgIndex + 1) return undefined
return segments[orgIndex + 2]
}
const ORG_SETTINGS_ROUTES: string[] = [
'general',
'apps',
'audit',
'documents',
'security',
'sso',
] as const
export function getOrgSectionKeyFromPathname(activeRoute: string | undefined): string | null {
if (activeRoute && ORG_SETTINGS_ROUTES.includes(activeRoute)) {
return 'settings'
}
return null
}
export function isOrgMenuActive(
item: OrgNavItem,
index: number,
pathname: string,
activeRoute: string | undefined
): boolean {
if (index === 0) {
return activeRoute === undefined
}
if (item.key === 'settings') {
const route = activeRoute ?? getOrgActiveRoute(pathname)
if (route === undefined) return false
return (
route === 'settings' ||
ORG_SETTINGS_ROUTES.includes(route as (typeof ORG_SETTINGS_ROUTES)[number])
)
}
return activeRoute === item.key
}