MarketNav.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. 'use client';
  2. import Link from 'next/link';
  3. import { usePathname } from 'next/navigation';
  4. const TABS = [
  5. { href: '/market', label: '개요' },
  6. { href: '/market/etp', label: 'ETP' },
  7. { href: '/market/bonds', label: '채권' },
  8. { href: '/market/derivatives', label: '파생' },
  9. { href: '/market/commodities', label: '상품' },
  10. { href: '/market/esg', label: 'ESG' },
  11. { href: '/market/dividends', label: '배당' },
  12. { href: '/market/lockup', label: '락업' },
  13. { href: '/market/meetings', label: '주총' },
  14. { href: '/market/els-risk', label: 'ELS' },
  15. { href: '/market/foreign', label: '외화' },
  16. { href: '/disclosure', label: '공시' }
  17. ];
  18. export default function MarketNav()
  19. {
  20. const pathname = usePathname();
  21. return (
  22. <nav className='market__nav' aria-label='시장 데이터 메뉴'>
  23. {TABS.map(tab => {
  24. const active = tab.href === '/market' ? pathname === '/market' : pathname.startsWith(tab.href);
  25. return (
  26. <Link
  27. key={tab.href}
  28. href={tab.href}
  29. className={`market__nav-link${active ? ' market__nav-link--active' : ''}`}
  30. aria-current={active ? 'page' : undefined}
  31. >
  32. {tab.label}
  33. </Link>
  34. );
  35. })}
  36. </nav>
  37. );
  38. }