diff --git a/src/app/dashboard/[id]/edit/page.tsx b/src/app/dashboard/[id]/edit/page.tsx
index 0f1b81d..8d1cd97 100644
--- a/src/app/dashboard/[id]/edit/page.tsx
+++ b/src/app/dashboard/[id]/edit/page.tsx
@@ -23,14 +23,16 @@ export default function DashBoardEditPage() {
+
+ {/* 컨텐츠 박스: 기본 너비 500px, 화면 작으면 100% 최대 500px */}
+
- {/* 삭제 버튼 영역 */}
-
+ {/* 삭제 버튼 영역: 기본 너비 292px, 화면 작으면 100% 최대 292px, 좌측 margin 제거 */}
+
diff --git a/src/app/features/auth/hooks/useAuth.ts b/src/app/features/auth/hooks/useAuth.ts
index 18a0140..6432b31 100644
--- a/src/app/features/auth/hooks/useAuth.ts
+++ b/src/app/features/auth/hooks/useAuth.ts
@@ -24,5 +24,6 @@ export function useAuth() {
return {
updateAuthState,
logout,
+ setUser,
}
}
diff --git a/src/app/features/dashboard/components/edit/DeleteDashboardButton.tsx b/src/app/features/dashboard/components/edit/DeleteDashboardButton.tsx
index f0b5764..29d4460 100644
--- a/src/app/features/dashboard/components/edit/DeleteDashboardButton.tsx
+++ b/src/app/features/dashboard/components/edit/DeleteDashboardButton.tsx
@@ -58,7 +58,7 @@ export default function DeleteDashboardButton({
onClick={handleDelete}
// isLoading -> isPending으로 수정됨
disabled={mutation.isPending}
- className={`Text-black my-8 rounded-8 font-semibold transition-opacity ${
+ className={`Text-black my-8 whitespace-nowrap rounded-8 font-semibold transition-opacity ${
mutation.isPending
? 'cursor-not-allowed opacity-50'
: 'hover:opacity-90'
diff --git a/src/app/features/dashboard/components/edit/EditInfo.tsx b/src/app/features/dashboard/components/edit/EditInfo.tsx
index 2c0534f..2fe513c 100644
--- a/src/app/features/dashboard/components/edit/EditInfo.tsx
+++ b/src/app/features/dashboard/components/edit/EditInfo.tsx
@@ -16,7 +16,7 @@ export default function EditInfo() {
return (
-
+
{selectedDashboard?.title || '대시보드 편집'}
diff --git a/src/app/features/dashboard/components/edit/EditInvitation.tsx b/src/app/features/dashboard/components/edit/EditInvitation.tsx
index 3f732e1..a7fa396 100644
--- a/src/app/features/dashboard/components/edit/EditInvitation.tsx
+++ b/src/app/features/dashboard/components/edit/EditInvitation.tsx
@@ -97,85 +97,77 @@ export default function EditInvitation() {
: null
return (
-
-
-
+
+
-
-
+ )
+ })}
+
+
)
}
diff --git a/src/app/features/dashboard/components/edit/EditMember.tsx b/src/app/features/dashboard/components/edit/EditMember.tsx
index ba12246..bf43e2e 100644
--- a/src/app/features/dashboard/components/edit/EditMember.tsx
+++ b/src/app/features/dashboard/components/edit/EditMember.tsx
@@ -64,7 +64,7 @@ export default function EditMember() {
return (
-
+
+
{title}
-
-
+
+
{totalPages} 페이지 중 {currentPage}
diff --git a/src/app/features/mypage/components/ProfileEditForm.tsx b/src/app/features/mypage/components/ProfileEditForm.tsx
index 5cab41e..a6d2eaa 100644
--- a/src/app/features/mypage/components/ProfileEditForm.tsx
+++ b/src/app/features/mypage/components/ProfileEditForm.tsx
@@ -7,6 +7,8 @@ import { useRouter } from 'next/navigation'
import { useEffect, useState } from 'react'
import { Controller, useForm } from 'react-hook-form'
+import { useAuthStore } from '@/app/features/auth/store/useAuthStore'
+
import { useUpdateMyProfileMutation } from '../hook/useUpdateMyProfileMutation'
import { useUploadProfileImageMutation } from '../hook/useUploadProfileImageMutation'
import { useUserQuery } from '../hook/useUserQurey'
@@ -41,6 +43,9 @@ export default function ProfileEditForm() {
const { mutateAsync: uploadImage } = useUploadProfileImageMutation()
const { mutateAsync: updateProfile } = useUpdateMyProfileMutation()
+ // Zustand 상태 갱신 함수 가져오기
+ const setUser = useAuthStore((state) => state.setUser)
+
// 유저 정보가 비동기적으로 넘어오기 때문에 유저가 로딩된 시점에서 RHF을 초기화 하기 위함 (SSR 도입 시 변경 예정)
useEffect(() => {
if (user) {
@@ -69,8 +74,18 @@ export default function ProfileEditForm() {
profileImageUrl: imageUrl,
}
- // 서버에 프로필 정보 수정 요청 (PUT)
- await updateProfile(submitData)
+ // 서버에 프로필 수정 요청
+ const updatedUser = await updateProfile(submitData)
+
+ if (!user) return // user가 없으면 갱신하지 않음
+
+ // zustand 상태 갱신 (전역 사용자 정보 업데이트)
+ setUser({
+ ...user,
+ nickname: updatedUser.nickname ?? data.nickname,
+ profileImageUrl: updatedUser.profileImageUrl ?? imageUrl,
+ // 필요 시 추가 필드도 넣기
+ })
// 사용자에게 성공 알림 + 컴포넌트 최신화
showSuccess('프로필 변경이 완료되었습니다.')
diff --git a/src/app/mypage/page.tsx b/src/app/mypage/page.tsx
index a9b209b..63f7a1b 100644
--- a/src/app/mypage/page.tsx
+++ b/src/app/mypage/page.tsx
@@ -11,7 +11,10 @@ export default function Mypage() {
const router = useRouter()
return (
<>
-
+
+
+
+
{/* 사이드바 */}
diff --git a/src/app/shared/components/common/UserInfo.tsx b/src/app/shared/components/common/UserInfo.tsx
index 30e8418..d195133 100644
--- a/src/app/shared/components/common/UserInfo.tsx
+++ b/src/app/shared/components/common/UserInfo.tsx
@@ -22,7 +22,9 @@ export function UserInfo({ nickname, imageUrl, size = 36 }: UserInfoProps) {
{/* Avatar에 nickname, profileImageUrl 모두 넘겨줌 */}
-
{displayNickname}
+
+ {displayNickname}
+
)
}
diff --git a/src/app/shared/components/common/header/Collaborator/CollaboratorList.tsx b/src/app/shared/components/common/header/Collaborator/CollaboratorList.tsx
index 47d6bbd..2a66b73 100644
--- a/src/app/shared/components/common/header/Collaborator/CollaboratorList.tsx
+++ b/src/app/shared/components/common/header/Collaborator/CollaboratorList.tsx
@@ -31,7 +31,7 @@ export default function CollaboratorList() {
const extraCount = members.length - MAX_COLLABS
return (
-
+
{visibleCollaborators.map((collab) => (
diff --git a/src/app/shared/components/common/header/Header.tsx b/src/app/shared/components/common/header/Header.tsx
index 01b4b76..8720485 100644
--- a/src/app/shared/components/common/header/Header.tsx
+++ b/src/app/shared/components/common/header/Header.tsx
@@ -9,13 +9,15 @@ import UserDropdown from './UserDropdown'
export default function Header() {
return (
-
+
{/* 좌측 대시보드명 */}
-
+
+
+
{/* 우측 사용자 정보/다크모드 */}
-
+
{/* 협업자 목록 */}
diff --git a/src/app/shared/components/common/header/LeftHeaderContent.tsx b/src/app/shared/components/common/header/LeftHeaderContent.tsx
index f429b71..4ce27c4 100644
--- a/src/app/shared/components/common/header/LeftHeaderContent.tsx
+++ b/src/app/shared/components/common/header/LeftHeaderContent.tsx
@@ -1,19 +1,24 @@
'use client'
import Image from 'next/image'
+import { usePathname } from 'next/navigation'
import { useSelectedDashboardStore } from '@/app/shared/store/useSelectedDashboardStore'
export default function LeftHeaderContent() {
const { selectedDashboard } = useSelectedDashboardStore()
+ const pathname = usePathname()
if (!selectedDashboard) return null
return (
- {selectedDashboard.title || '내 대시보드'}
+ {pathname === '/mypage'
+ ? '계정관리'
+ : selectedDashboard.title || '내 대시보드'}
- {selectedDashboard.createdByMe && (
+
+ {selectedDashboard.createdByMe && pathname !== '/mypage' && (