| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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
- }
|