1- import React , { useState , useEffect , useRef } from "react" ;
1+ import React , { useState , useEffect } from "react" ;
22import { useRouter } from "next/router" ;
33import SkeletonUser from "@/shared/skeletonUser" ;
44import Image from "next/image" ;
@@ -9,6 +9,7 @@ import { getDashboardById } from "@/api/dashboards";
99import { TEAM_ID } from "@/constants/team" ;
1010import { MemberAvatars , UserAvatars } from "@/components/gnb/Avatars" ;
1111import UserMenu from "@/components/gnb/UserMenu" ;
12+ import MemberListMenu from "@/components/gnb/MemberListMenu" ;
1213import InviteDashboard from "@/components/modal/InviteDashboard" ;
1314
1415interface HeaderDashboardProps {
@@ -26,6 +27,7 @@ const HeaderDashboard: React.FC<HeaderDashboardProps> = ({
2627 const [ user , setUser ] = useState < UserType | null > ( null ) ;
2728 const [ members , setMembers ] = useState < MemberType [ ] > ( [ ] ) ;
2829 const [ isMenuOpen , setIsMenuOpen ] = useState ( false ) ;
30+ const [ isListOpen , setIsListOpen ] = useState ( false ) ;
2931 const [ errorMessage , setErrorMessage ] = useState ( "" ) ;
3032 const [ dashboard , setDashboard ] = useState < {
3133 title : string ;
@@ -113,14 +115,22 @@ const HeaderDashboard: React.FC<HeaderDashboardProps> = ({
113115 </ p >
114116 ) }
115117 < div className = "flex items-center gap-[8px]" >
116- < p className = "text-base text-black3 font-bold md:text-xl" > { title } </ p >
118+ < p
119+ className = { `text-base text-black3 font-bold md:text-xl ${ variant !== "mydashboard" ? "hidden md:block" : "" } ` }
120+ >
121+ { title }
122+ </ p >
117123 { dashboard ?. createdByMe && (
118124 < Image
119125 src = "/svgs/crown.svg"
120126 alt = "왕관 아이콘"
121127 width = { 22 }
122128 height = { 22 }
123- className = "inline-block"
129+ className = {
130+ variant === "mydashboard"
131+ ? "inline-block"
132+ : "hidden md:inline-block"
133+ }
124134 unoptimized
125135 priority
126136 />
@@ -129,7 +139,9 @@ const HeaderDashboard: React.FC<HeaderDashboardProps> = ({
129139
130140 < div className = "flex items-center" >
131141 { /*관리 버튼*/ }
132- < div className = "flex gap-[6px] md:gap-[16px] pr-[40px]" >
142+ < div
143+ className = { `flex gap-[6px] md:gap-[16px] ${ variant === "mydashboard" ? "pr-[22px] md:pr-[32px]" : "" } ` }
144+ >
133145 < button
134146 onClick = { ( ) => {
135147 if ( dashboardId ) {
@@ -167,13 +179,33 @@ const HeaderDashboard: React.FC<HeaderDashboardProps> = ({
167179 </ div >
168180
169181 { /*멤버 목록*/ }
170- < MemberAvatars
171- members = { members }
172- isLoading = { isLoading }
173- variant = { variant }
174- />
182+ { variant !== "mydashboard" && (
183+ < div className = "relative flex items-center justify-center w-[150px] md:w-[190px] h-[60px] md:h-[70px]" >
184+ { isLoading ? (
185+ < SkeletonUser />
186+ ) : (
187+ members && (
188+ < div
189+ onClick = { ( ) => setIsListOpen ( ( prev ) => ! prev ) }
190+ className = "flex items-center pl-[15px] md:pl-[25px] lg:pl-[30px] pr-[15px] md:pr-[25px] lg:pr-[30px] cursor-pointer"
191+ >
192+ < MemberAvatars
193+ members = { members }
194+ isLoading = { isLoading }
195+ variant = { variant }
196+ />
197+ </ div >
198+ )
199+ ) }
200+ < MemberListMenu
201+ members = { members }
202+ isListOpen = { isListOpen }
203+ setIsListOpen = { setIsListOpen }
204+ />
205+ </ div >
206+ ) }
175207
176- { /*드롭다운 메뉴 너비 지정 목적의 섹션 구분용 div*/ }
208+ { /*드롭다운 메뉴 너비 지정 목적의 유저 정보 섹션 div*/ }
177209 < div className = "relative flex items-center h-[60px] md:h-[70px] pr-[10px] md:pr-[30px] lg:pr-[80px]" >
178210 { /*구분선*/ }
179211 < div className = "h-[34px] md:h-[38px] w-[1px] bg-[var(--color-gray3)]" />
0 commit comments