'use client'

import Link from 'next/link'
import { usePathname } from 'next/navigation'

interface NavItem {
  href: string
  labelKey: string
}

const EXPERT_LINKS: NavItem[] = [
  { href: '/inbox', labelKey: 'nav.inbox' },
  { href: '/knowledge', labelKey: 'nav.knowledge' },
  { href: '/admin/projects', labelKey: 'nav.projects' },
  { href: '/admin/users', labelKey: 'nav.users' },
]

const ADMIN_EXTRA_LINKS: NavItem[] = [
  { href: '/admin/config', labelKey: 'nav.config' },
  { href: '/admin/ai-usage', labelKey: 'nav.aiUsage' },
  { href: '/admin/platform-health', labelKey: 'nav.health' },
]

const MANAGER_LINKS: NavItem[] = [
  { href: '/submit', labelKey: 'nav.submit' },
  { href: '/tickets', labelKey: 'nav.myTickets' },
]

interface Props {
  isExpert: boolean
  isAdmin?: boolean
  labels: Record<string, string>
  ariaLabel: string
}

export default function NavLinks({ isExpert, isAdmin, labels, ariaLabel }: Props) {
  const pathname = usePathname()
  const links = isExpert
    ? [...EXPERT_LINKS, ...(isAdmin ? ADMIN_EXTRA_LINKS : [])]
    : MANAGER_LINKS

  function isActive(href: string) {
    if (href === '/inbox') return pathname === '/inbox' || pathname.startsWith('/inbox/')
    return pathname === href || pathname.startsWith(href + '/')
  }

  return (
    <nav
      aria-label={ariaLabel}
      className="flex min-w-0 max-w-full flex-wrap items-center gap-1"
    >
      {links.map(({ href, labelKey }) => (
        <Link
          key={href}
          href={href}
          className={`shrink-0 rounded-md px-2 py-1.5 text-xs font-medium leading-none transition lg:px-3 ${
            isActive(href)
              ? 'bg-zinc-100 text-zinc-950 dark:bg-zinc-800 dark:text-white'
              : 'text-zinc-500 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-white'
          }`}
        >
          {labels[labelKey] ?? labelKey}
        </Link>
      ))}
    </nav>
  )
}
