From f11a175674085f15f1373b4fc8dc905c53b8262a Mon Sep 17 00:00:00 2001 From: zenn Date: Thu, 13 Aug 2026 19:02:13 +0900 Subject: [PATCH] Unify month navigation UI --- components/MonthNavigator.vue | 53 +++++++++++++++++++++++++++++++++++ docs/changelog.md | 2 ++ pages/assets.vue | 24 ++++------------ pages/index.vue | 25 +---------------- pages/stats.vue | 28 ++++-------------- todo.md | 1 - 6 files changed, 67 insertions(+), 66 deletions(-) create mode 100644 components/MonthNavigator.vue diff --git a/components/MonthNavigator.vue b/components/MonthNavigator.vue new file mode 100644 index 0000000..bf8d7ec --- /dev/null +++ b/components/MonthNavigator.vue @@ -0,0 +1,53 @@ + + + diff --git a/docs/changelog.md b/docs/changelog.md index 46e7f55..3128af2 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -63,3 +63,5 @@ - 개발 환경에서만 노출되는 테스트 로그인 버튼과 개발용 로그인 API를 추가했다. - 카테고리 상세 화면에 삭제 동작을 추가하고, 하위 카테고리나 거래가 연결된 카테고리는 삭제하지 못하도록 안내를 추가했다. - 하단 네비게이션과 PC 사이드바 SVG 아이콘을 마스크 방식 대신 인라인 SVG 렌더링으로 변경해 네모 박스로 보이는 문제를 수정했다. +- 내역, 통계, 자산 화면의 월 이동 UI를 공통 `MonthNavigator` 컴포넌트로 통일했다. +- 통계와 자산 화면의 상단 헤더와 월 이동 영역을 분리해 페이지 간 날짜 조작 위치를 맞췄다. diff --git a/pages/assets.vue b/pages/assets.vue index 7c2ff5f..9b4f392 100644 --- a/pages/assets.vue +++ b/pages/assets.vue @@ -14,17 +14,11 @@

{{ selectedAsset?.name || '자산' }}

-
- - - -
+ + +
+
@@ -107,17 +101,15 @@
- diff --git a/pages/index.vue b/pages/index.vue index 9d0b9aa..8eb0d48 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -25,17 +25,7 @@
-
- - - -
+
@@ -180,7 +170,6 @@ - @@ -193,7 +182,6 @@ const weekSwipeStartX = ref(0) const weekDirection = ref<'next' | 'prev'>('next') const searchOpen = ref(false) const filterSheetOpen = ref(false) -const monthPickerOpen = ref(false) const searchKeyword = ref('') const filters = reactive({ type: '', @@ -249,11 +237,6 @@ const groupedTransactions = computed(() => { return Array.from(groups.values()).sort((a, b) => b.date.localeCompare(a.date)) }) -const displayMonth = computed(() => { - const date = parse(selectedMonth.value, 'yyyy-MM', new Date()) - return format(date, 'M월') -}) - const weekDays = computed(() => { const base = parse(selectedDate.value, 'yyyy-MM-dd', new Date()) const start = startOfWeek(base, { weekStartsOn: 0 }) @@ -298,12 +281,6 @@ watch(() => filters.type, () => { if (selected && selected.type !== filters.type) filters.categoryId = '' }) -function moveMonth(amount: number) { - weekDirection.value = amount > 0 ? 'next' : 'prev' - const date = parse(selectedDate.value, 'yyyy-MM-dd', new Date()) - selectedDate.value = format(addMonths(date, amount), 'yyyy-MM-dd') -} - function moveWeek(amount: number) { weekDirection.value = amount > 0 ? 'next' : 'prev' const date = parse(selectedDate.value, 'yyyy-MM-dd', new Date()) diff --git a/pages/stats.vue b/pages/stats.vue index 9f00027..5f2e69a 100644 --- a/pages/stats.vue +++ b/pages/stats.vue @@ -2,22 +2,16 @@
-
- - - -
+

통계

+
+ +
+
diff --git a/todo.md b/todo.md index cafe604..68a9cad 100644 --- a/todo.md +++ b/todo.md @@ -5,7 +5,6 @@ ## 1. 공통 화면 구조 정리 - 모든 주요 페이지의 상단 헤더 구조를 통일한다. -- 내역, 통계, 자산 페이지의 월 표시 위치와 좌우 이동 버튼 위치를 맞춘다. - PC 화면에서 각 페이지가 너무 모바일 화면처럼 보이지 않도록 표/패널 밀도를 조정한다. - 모바일과 PC에서 같은 기능이 서로 다른 위치에 흩어지지 않도록 액션 버튼 배치를 정리한다. - 화면 전환, 날짜 이동, 바텀 시트 표시처럼 사용자가 조작 결과를 바로 느껴야 하는 부분에 모션 피드백을 추가한다.