From a0ead0bc39bfffa6bf91004b3d1758ad28cb3b73 Mon Sep 17 00:00:00 2001 From: mgYang53 Date: Thu, 19 Feb 2026 23:10:34 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=EB=A0=88=EC=9D=B4=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81=20=EB=B0=8F=20?= =?UTF-8?q?CSS=20=ED=95=B5=20=EC=A0=9C=EA=B1=B0=20(#83)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FullWidthLayout으로 9개 페이지 전환하여 뷰포트 핵 제거. SubPageHeader/FormPageHeader 공유 컴포넌트로 뒤로가기 헤더 통일. useScrollShadow 훅 추출로 스크롤 shadow 로직 DRY 개선. shadow 값을 shadow-drop-bottom으로 전체 통일. 회고 페이지 CSS 변수 버그(--gnb-height) 수정 및 콘텐츠 래퍼 추가. 라우트 중복 경로 제거. --- src/features/book/components/BookLogList.tsx | 6 +- src/pages/Books/BookDetailPage.tsx | 12 +- src/pages/Books/BookReviewHistoryPage.tsx | 36 +- src/pages/Gatherings/GatheringSettingPage.tsx | 270 +++++------ src/pages/Meetings/MeetingCreatePage.tsx | 427 +++++++++--------- src/pages/Meetings/MeetingDetailPage.tsx | 246 +++++----- src/pages/Meetings/MeetingSettingPage.tsx | 126 +++--- src/pages/PreOpinions/PreOpinionListPage.tsx | 70 ++- .../MeetingRetrospectiveCreatePage.tsx | 38 +- .../MeetingRetrospectivePage.tsx | 30 +- src/pages/Topics/TopicCreatePage.tsx | 146 +++--- src/routes/index.tsx | 99 +--- src/shared/components/FormPageHeader.tsx | 84 ++++ src/shared/components/SubPageHeader.tsx | 11 +- src/shared/hooks/index.ts | 1 + src/shared/hooks/useScrollShadow.ts | 14 + src/shared/layout/LandingLayout.tsx | 12 +- 17 files changed, 828 insertions(+), 800 deletions(-) create mode 100644 src/shared/components/FormPageHeader.tsx create mode 100644 src/shared/hooks/useScrollShadow.ts diff --git a/src/features/book/components/BookLogList.tsx b/src/features/book/components/BookLogList.tsx index 600a5d8..5990759 100644 --- a/src/features/book/components/BookLogList.tsx +++ b/src/features/book/components/BookLogList.tsx @@ -111,7 +111,7 @@ const BookLogList = ({ bookId, isRecording }: BookLogListProps) => { return (
{/* 감상 기록 헤더 - sticky */} -
+

감상 기록

@@ -174,8 +174,8 @@ const BookLogList = ({ bookId, isRecording }: BookLogListProps) => {
{/* 기록 목록 - full-bleed 배경 */} -
-
+
+
{allRecords.length === 0 ? (

diff --git a/src/pages/Books/BookDetailPage.tsx b/src/pages/Books/BookDetailPage.tsx index 86096ca..4495476 100644 --- a/src/pages/Books/BookDetailPage.tsx +++ b/src/pages/Books/BookDetailPage.tsx @@ -17,11 +17,13 @@ export default function BookDetailPage() { return ( <> - toggleReadingStatus()} - /> +

+ toggleReadingStatus()} + /> +
) diff --git a/src/pages/Books/BookReviewHistoryPage.tsx b/src/pages/Books/BookReviewHistoryPage.tsx index 8b7216e..cdfcb52 100644 --- a/src/pages/Books/BookReviewHistoryPage.tsx +++ b/src/pages/Books/BookReviewHistoryPage.tsx @@ -18,23 +18,25 @@ export default function BookReviewHistoryPage() { return ( <> -
-

지난 평가

- {isLoading &&
로딩중...
} - {historyData?.items.map((item, idx) => ( - - - {historyData?.items.length !== idx + 1 && } - - ))} - {!isLoading && historyData?.items.length === 0 && ( -
-

- 아직 이 책을 평가하지 않았어요.
다 읽고 나서 이 책이 어땠는지 알려주세요! -

-
- )} -
+
+
+

지난 평가

+ {isLoading &&
로딩중...
} + {historyData?.items.map((item, idx) => ( + + + {historyData?.items.length !== idx + 1 && } + + ))} + {!isLoading && historyData?.items.length === 0 && ( +
+

+ 아직 이 책을 평가하지 않았어요.
다 읽고 나서 이 책이 어땠는지 알려주세요! +

+
+ )} +
+
) } diff --git a/src/pages/Gatherings/GatheringSettingPage.tsx b/src/pages/Gatherings/GatheringSettingPage.tsx index c6a4e11..f5988a3 100644 --- a/src/pages/Gatherings/GatheringSettingPage.tsx +++ b/src/pages/Gatherings/GatheringSettingPage.tsx @@ -14,7 +14,7 @@ import { useRemoveMember, useUpdateGathering, } from '@/features/gatherings' -import SubPageHeader from '@/shared/components/SubPageHeader' +import FormPageHeader from '@/shared/components/FormPageHeader' import { ROUTES } from '@/shared/constants' import { showErrorToast, showToast } from '@/shared/lib/toast' import { @@ -187,140 +187,142 @@ export default function GatheringSettingPage() { if (!gathering || gathering.currentUserRole !== 'LEADER') return null return ( -
- - -

독서모임 설정

- {/* 독서모임 정보 섹션 */} - -
- 독서모임 정보 -
- - + <> + +
+
+
+ {/* 독서모임 정보 섹션 */} + +
+ 독서모임 정보 + +
+ + setName(e.target.value)} + maxLength={MAX_NAME_LENGTH} + /> +
+

독서모임 설명

+