1- import React from "react" ;
2- import { NavLink , Link } from "react-router-dom" ;
1+ import React , { useState } from "react" ;
2+ import { NavLink , Link , useNavigate } from "react-router-dom" ;
33import { Link as ScrollLink } from "react-scroll" ;
4- import { FaMoon , FaSun } from "react-icons/fa" ;
4+ import { FaMoon , FaSun , FaUserCircle } from "react-icons/fa" ; // ✅ FaUserCircle 가져옴
55import "./Header.css" ;
66
77const Header = ( { isDark, setIsDark, isLoggedIn, nickname } ) => {
8+ const [ isMenuOpen , setIsMenuOpen ] = useState ( false ) ;
9+ const navigate = useNavigate ( ) ;
10+
811 const handleLogout = ( ) => {
912 localStorage . clear ( ) ;
10- window . location . reload ( ) ; // 새로고침으로 상태 초기화
13+ navigate ( "/" ) ;
14+ window . location . reload ( ) ;
15+ } ;
16+
17+ const toggleMenu = ( ) => {
18+ setIsMenuOpen ( ! isMenuOpen ) ;
19+ } ;
20+
21+ const goToMyPage = ( ) => {
22+ navigate ( "/mypage" ) ;
23+ setIsMenuOpen ( false ) ;
1124 } ;
1225
1326 return (
1427 < header className = "custom-header" >
1528 < div className = "header-left" >
16- < span className = "site-name" > Zivorp</ span >
29+ < Link to = "/" className = "site-name" > Zivorp</ Link >
1730 </ div >
1831
1932 < nav className = "header-nav" >
2033 < NavLink to = "/" end > 홈</ NavLink >
21- < ScrollLink
22- to = "feature"
23- smooth
24- duration = { 500 }
25- offset = { - 64 }
26- spy = { true }
27- activeClass = "active"
28- > </ ScrollLink >
34+ < ScrollLink to = "feature" smooth duration = { 500 } offset = { - 64 } spy = { true } activeClass = "active" />
2935 < NavLink to = "/ide" > IDE</ NavLink >
3036 < NavLink to = "/community" > 커뮤니티</ NavLink >
3137 < NavLink to = "/broadcast" > 코드 방송</ NavLink >
@@ -41,10 +47,21 @@ const Header = ({ isDark, setIsDark, isLoggedIn, nickname }) => {
4147 </ button >
4248
4349 { isLoggedIn ? (
44- < >
45- < span className = "user-nickname" > 👤 { nickname } 님</ span >
46- < button onClick = { handleLogout } className = "btn btn-outline" > 로그아웃</ button >
47- </ >
50+ < div className = "user-menu-container" >
51+ < span className = "user-nickname" onClick = { toggleMenu } >
52+ < FaUserCircle
53+ size = { 24 }
54+ className = { "user-icon" }
55+ />
56+ { nickname } 님 ▾
57+ </ span >
58+ { isMenuOpen && (
59+ < div className = "user-dropdown" >
60+ < button onClick = { goToMyPage } > 마이페이지</ button >
61+ < button onClick = { handleLogout } > 로그아웃</ button >
62+ </ div >
63+ ) }
64+ </ div >
4865 ) : (
4966 < >
5067 < Link to = "/login" className = "btn btn-outline" > 로그인</ Link >
0 commit comments