import type { AdminNavigationItem } from '@admin/types/navigation' import { House, ImagePlay } from 'lucide-react' import { menusNav } from './navigation/menus' import { postsNav } from './navigation/posts' export type { AdminNavigationItem } from '@admin/types/navigation' const coreNav: AdminNavigationItem[] = [ { label: 'Overview', href: '/admin', icon: House, group: 'General', position: 0 }, { label: 'Media', href: '/admin/media', icon: ImagePlay, group: 'General', position: 1 } ] function comparePositions(a?: number, b?: number): number { if (a != null && b != null) return a - b if (a != null) return -1 if (b != null) return 1 return 0 } const combinedNavigation = [...coreNav, ...menusNav, ...postsNav] const dashboard = combinedNavigation.find((item) => item.href === '/admin') const others = combinedNavigation.filter((item) => item.href !== '/admin') others.sort((a, b) => { if (!a.group && b.group) return -1 if (a.group && !b.group) return 1 if (a.group && b.group && a.group !== b.group) { return comparePositions(a.groupPosition, b.groupPosition) || a.group.localeCompare(b.group) } return comparePositions(a.position, b.position) || a.label.localeCompare(b.label) }) export const adminNavigation = [...(dashboard ? [dashboard] : []), ...others]