| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | 'use client'import { useSelectedLayoutSegment } from 'next/navigation'import Link from 'next/link'import classNames from '@/utils/classnames'export type NavIcon = React.ComponentType<React.PropsWithoutRef<React.ComponentProps<'svg'>> & {  title?: string | undefined  titleId?: string | undefined}>export type NavLinkProps = {  name: string  href: string  iconMap: {    selected: NavIcon    normal: NavIcon  }  mode?: string}export default function NavLink({  name,  href,  iconMap,  mode = 'expand',}: NavLinkProps) {  const segment = useSelectedLayoutSegment()  const formattedSegment = (() => {    let res = segment?.toLowerCase()    // logs and annotations use the same nav    if (res === 'annotations')      res = 'logs'    return res  })()  const isActive = href.toLowerCase().split('/')?.pop() === formattedSegment  const NavIcon = isActive ? iconMap.selected : iconMap.normal  return (    <Link      key={name}      href={href}      className={classNames(        isActive ? 'bg-state-accent-active text-text-accent font-semibold' : 'text-components-menu-item-text hover:bg-gray-100 hover:text-components-menu-item-text-hover',        'group flex items-center h-9 rounded-md py-2 text-sm font-normal',        mode === 'expand' ? 'px-3' : 'px-2.5',      )}      title={mode === 'collapse' ? name : ''}    >      <NavIcon        className={classNames(          'h-4 w-4 flex-shrink-0',          mode === 'expand' ? 'mr-2' : 'mr-0',        )}        aria-hidden="true"      />      {mode === 'expand' && name}    </Link>  )}
 |