UserProfileTabs.tsx 976 B

12345678910111213141516171819202122232425262728293031323334353637
  1. 'use client';
  2. import Link from 'next/link';
  3. import { useSelectedLayoutSegment } from 'next/navigation';
  4. type Props = {
  5. memberSID: string;
  6. };
  7. export default function UserProfileTabs({ memberSID }: Props) {
  8. const segment = useSelectedLayoutSegment();
  9. const tabs = [
  10. { key: null, label: '게시글', href: `/user/${memberSID}` },
  11. { key: 'comments', label: '댓글', href: `/user/${memberSID}/comments` },
  12. { key: 'feed', label: '피드', href: `/user/${memberSID}/feed` },
  13. { key: 'paper', label: '모의투자 성적', href: `/user/${memberSID}/paper` }
  14. ];
  15. return (
  16. <nav className="user-profile__tabs" aria-label="프로필 탭">
  17. {tabs.map((tab) => {
  18. const active = segment === tab.key;
  19. return (
  20. <Link
  21. key={tab.label}
  22. href={tab.href}
  23. className={`user-profile__tab${active ? ' user-profile__tab--active' : ''}`}
  24. aria-current={active ? 'page' : undefined}
  25. >
  26. {tab.label}
  27. </Link>
  28. );
  29. })}
  30. </nav>
  31. );
  32. }