MarketNav.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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: '/market/macro', label: '거시지표' },
  17. { href: '/disclosure', label: '공시' }
  18. ];
  19. export default function MarketNav()
  20. {
  21. const pathname = usePathname();
  22. return (
  23. <nav className='market__nav' aria-label='시장 데이터 메뉴'>
  24. {TABS.map(tab => {
  25. const active = tab.href === '/market' ? pathname === '/market' : pathname.startsWith(tab.href);
  26. return (
  27. <Link
  28. key={tab.href}
  29. href={tab.href}
  30. className={`market__nav-link${active ? ' market__nav-link--active' : ''}`}
  31. aria-current={active ? 'page' : undefined}
  32. >
  33. {tab.label}
  34. </Link>
  35. );
  36. })}
  37. </nav>
  38. );
  39. }