@@ -3,54 +3,56 @@ import { useLocation, useNavigate } from 'react-router-dom';
33import {
44 NavBarContainer ,
55 NavBarWrapper ,
6- IconImg ,
76 IconWrapper ,
87 SideNavBarContainer ,
98 SideNavBarList ,
109 SideNavBarItem ,
1110 SideNavBarButton ,
1211 SideNavBarHeader ,
1312 SideNavBarFooter ,
13+ Icon ,
1414} from './styles' ;
15- import Chat_s from './../../assets/default/message-white.svg' ;
16- import Chat_f from './../../assets/default/message-fill.svg' ;
17- import Home_s from './../../assets/default/home.svg' ;
18- import Home_f from './../../assets/default/home-fill.svg' ;
19- import Profile_s from './../../assets/default/my-page-white.svg' ;
20- import Profile_f from './../../assets/default/my-page-fill.svg' ;
21- import logo from './../../assets/default/oodd.svg' ;
22- import alarm from './../../assets/default/alarm.svg' ;
23- // import clickedAlarm from './../../assets/default/alarm-on.svg';
24- import chatDesktopIcon from './../../assets/default/desktopNavBar/message.svg' ;
25- import chatFillDesktopIcon from './../../assets/default/desktopNavBar/message-fill.svg' ;
26- import homeDesktopIcon from './../../assets/default/desktopNavBar/home.svg' ;
27- import homeFillDesktopIcon from './../../assets/default/desktopNavBar/home-fill.svg' ;
28- import profileDesktopIcon from './../../assets/default/desktopNavBar/my-page.svg' ;
29- import profileFillDesktopIcon from './../../assets/default/desktopNavBar/my-page-fill.svg' ;
30- import logout from './../../assets/default/leave.svg' ;
31- import { StyledText } from '../Text/StyledText' ;
32- import Modal from '../Modal' ;
33- import { ModalProps } from '../Modal/dto' ;
34-
35- const userId = localStorage . getItem ( 'my_id' ) ;
36-
37- const tabs = [
38- { name : 'Chats' , iconSelected : Chat_f , iconUnselected : Chat_s , route : '/chats' } ,
39- { name : 'Home' , iconSelected : Home_f , iconUnselected : Home_s , route : '/' } ,
40- { name : 'Profile' , iconSelected : Profile_f , iconUnselected : Profile_s , route : `/profile/${ userId } ` } ,
41- ] ;
42-
43- const desktopTabs = [
44- { name : 'Home' , iconSelected : homeFillDesktopIcon , iconUnselected : homeDesktopIcon , route : '/' } ,
45- { name : 'Chats' , iconSelected : chatFillDesktopIcon , iconUnselected : chatDesktopIcon , route : '/chats' } ,
46- { name : 'Profile' , iconSelected : profileFillDesktopIcon , iconUnselected : profileDesktopIcon , route : `/profile/${ userId } ` } ,
47- ] ;
15+ import Message from '@components/Icons/Message' ;
16+ import Home from '@components/Icons/Home' ;
17+ import MyPage from '@components/Icons/MyPage' ;
18+ import Alarm from '@components/Icons/Alarm' ;
19+ import logo from '@assets/default/oodd.svg' ;
20+ import logout from '@assets/default/leave.svg' ;
21+ import { StyledText } from '@components/Text/StyledText' ;
22+ import Modal from '@components/Modal' ;
23+ import type { ModalProps } from '@components/Modal/dto' ;
24+ import { getCurrentUserId } from '@utils/getCurrentUserId' ;
4825
4926const NavBar : React . FC = ( ) => {
50- const [ selectedTab , setSelectedTab ] = useState ( '' ) ;
5127 const [ isLogoutModalOpen , setIsLogoutModalOpen ] = useState ( false ) ;
28+ const [ selectedTab , setSelectedTab ] = useState ( '' ) ;
5229 const navigate = useNavigate ( ) ;
5330 const location = useLocation ( ) ;
31+ const currentUserId = getCurrentUserId ( ) ;
32+
33+ const tabs = [
34+ {
35+ name : 'Chats' ,
36+ Icon : ( isSelected : boolean , isDesktop : boolean ) => (
37+ < Message isFilled = { isSelected } color = { isDesktop ? 'black' : 'white' } width = "16" height = "16" />
38+ ) ,
39+ route : '/chats' ,
40+ } ,
41+ {
42+ name : 'Home' ,
43+ Icon : ( isSelected : boolean , isDesktop : boolean ) => (
44+ < Home isFilled = { isSelected } color = { isDesktop ? 'black' : 'white' } width = "18" height = "18" />
45+ ) ,
46+ route : '/' ,
47+ } ,
48+ {
49+ name : 'Profile' ,
50+ Icon : ( isSelected : boolean , isDesktop : boolean ) => (
51+ < MyPage isFilled = { isSelected } color = { isDesktop ? 'black' : 'white' } />
52+ ) ,
53+ route : `/profile/${ currentUserId } ` ,
54+ } ,
55+ ] ;
5456
5557 useEffect ( ( ) => {
5658 const currentTab = tabs . find ( ( tab ) => tab . route === location . pathname ) ;
@@ -68,7 +70,7 @@ const NavBar: React.FC = () => {
6870 }
6971 } ;
7072
71- const handleConfirmLogout = ( ) => {
73+ const handleLogoutConfirmButtonClick = ( ) => {
7274 localStorage . clear ( ) ;
7375 setIsLogoutModalOpen ( false ) ;
7476
@@ -87,18 +89,17 @@ const NavBar: React.FC = () => {
8789 content : '이 기기에서 정말 로그아웃 할까요?' ,
8890 button : {
8991 content : '로그아웃' ,
90- onClick : handleConfirmLogout ,
92+ onClick : handleLogoutConfirmButtonClick ,
9193 } ,
9294 } ;
9395
9496 return (
9597 < >
96- { isLogoutModalOpen && < Modal { ...logoutModalProps } /> }
9798 < NavBarContainer >
9899 < NavBarWrapper >
99100 { tabs . map ( ( tab ) => (
100101 < IconWrapper key = { tab . name } onClick = { ( ) => handleTabClick ( tab ) } >
101- < IconImg src = { selectedTab === tab . name ? tab . iconSelected : tab . iconUnselected } / >
102+ < Icon > { tab . Icon ( selectedTab === tab . name , false ) } </ Icon >
102103 < p > { tab . name } </ p >
103104 </ IconWrapper >
104105 ) ) }
@@ -108,16 +109,14 @@ const NavBar: React.FC = () => {
108109 < SideNavBarHeader >
109110 < img src = { logo } alt = "oodd" className = "logo" />
110111 < button className = "alarm" >
111- < img src = { alarm } alt = "알림" / >
112+ < Alarm > </ Alarm >
112113 </ button >
113114 </ SideNavBarHeader >
114115 < SideNavBarList >
115- { desktopTabs . map ( ( tab ) => (
116+ { tabs . map ( ( tab ) => (
116117 < SideNavBarItem key = { tab . name } onClick = { ( ) => handleTabClick ( tab ) } >
117118 < SideNavBarButton >
118- < button >
119- < img src = { selectedTab === tab . name ? tab . iconSelected : tab . iconUnselected } />
120- </ button >
119+ < button > { tab . Icon ( selectedTab === tab . name , true ) } </ button >
121120 < StyledText
122121 className = "styled-text"
123122 $textTheme = { { style : selectedTab === tab . name ? `heading2-bold` : 'heading2-medium' } }
@@ -132,11 +131,12 @@ const NavBar: React.FC = () => {
132131 < SideNavBarFooter >
133132 < SideNavBarButton onClick = { handleLogoutButtonClick } >
134133 < button >
135- < img src = { logout } alt = "" />
134+ < img src = { logout } alt = "로그아웃 " />
136135 </ button >
137136 </ SideNavBarButton >
138137 </ SideNavBarFooter >
139138 </ SideNavBarContainer >
139+ { isLogoutModalOpen && < Modal { ...logoutModalProps } /> }
140140 </ >
141141 ) ;
142142} ;
0 commit comments