Layout.tsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. 'use client';
  2. import Link from 'next/link';
  3. import Styles from '../styles/common.module.scss';
  4. import useAuth from '@/hooks/useAuth';
  5. export default function Layout({ children }: { children: React.ReactNode })
  6. {
  7. const { isAuthenticated, isLoading, logout } = useAuth();
  8. if (isLoading) {
  9. return <></>;
  10. }
  11. return (
  12. <>
  13. <div id='container' className={Styles.container}>
  14. {/* 상단 내용 */}
  15. <header id='header' className={`${Styles.header} flex items-center justify-between w-full py-2 px-4`}>
  16. <Link href='/' className='font-bold text-xl'>
  17. Bitforum
  18. </Link>
  19. <nav className='flex grow items-center justify-between'>
  20. <ul className='flex gap-4'>
  21. <li>
  22. <Link href='/'>
  23. 가상화폐
  24. </Link>
  25. </li>
  26. <li>
  27. <Link href='/board/latest'>
  28. 토론실
  29. </Link>
  30. </li>
  31. <li>
  32. <Link href='/news'>
  33. 새소식
  34. </Link>
  35. </li>
  36. <li>
  37. <Link href='/support/notice'>
  38. 고객지원
  39. </Link>
  40. </li>
  41. </ul>
  42. {!isAuthenticated ? (
  43. <ul className='flex gap-4'>
  44. <li>
  45. <a href='/login'>
  46. 로그인
  47. </a>
  48. </li>
  49. <li>
  50. <a href='/register'>
  51. 회원가입
  52. </a>
  53. </li>
  54. </ul>
  55. ) : (
  56. <ul className='flex gap-4'>
  57. <li>
  58. <Link href='/profile'>
  59. 내 정보
  60. </Link>
  61. </li>
  62. <li>
  63. <button type='button' onClick={logout}>
  64. 로그아웃
  65. </button>
  66. </li>
  67. </ul>
  68. )}
  69. </nav>
  70. </header>
  71. {/* 전광판 */}
  72. <p id='ticker' className={Styles.panel}></p>
  73. {/* 좌측 내용 */}
  74. <main id='main' className={`${Styles.main} relative`}>
  75. {children}
  76. </main>
  77. {/* 우측 내용 */}
  78. <aside id='aside' className={Styles.aside}></aside>
  79. {/* 하단 내용 */}
  80. <footer id='footer' className={`${Styles.footer} px-4`}>
  81. <ol>
  82. {/* 최신글 표시 ▼ */}
  83. <li>111111</li>
  84. {/* 공지사항 표시 ▲ */}
  85. <li>222222</li>
  86. {/* 저작권 표시 */}
  87. <li>© 2025 PLAYR. All rights reserved.</li>
  88. </ol>
  89. </footer>
  90. </div>
  91. </>
  92. );
  93. }