From cbd43e16c21ada7b3154d45d62b0946a14d87634 Mon Sep 17 00:00:00 2001 From: zenn Date: Fri, 14 Aug 2026 13:27:57 +0900 Subject: [PATCH] Polish empty states --- components/EmptyState.vue | 25 +++++++++++++++++++++++++ docs/changelog.md | 1 + docs/project-guidelines.md | 1 + pages/assets.vue | 19 +++++++++++++------ pages/index.vue | 9 ++++++--- pages/settings.vue | 27 ++++++++++++++++++--------- pages/share/[token].vue | 19 ++++++++++++------- pages/stats.vue | 9 ++++++--- todo.md | 1 - 9 files changed, 82 insertions(+), 29 deletions(-) create mode 100644 components/EmptyState.vue diff --git a/components/EmptyState.vue b/components/EmptyState.vue new file mode 100644 index 0000000..b23096b --- /dev/null +++ b/components/EmptyState.vue @@ -0,0 +1,25 @@ + + + diff --git a/docs/changelog.md b/docs/changelog.md index d995ca9..b03f043 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -85,3 +85,4 @@ - PC 중간 폭 화면에서 콘텐츠 오른쪽이 잘리지 않도록 전역 레이아웃을 margin 기반에서 padding 기반으로 변경했다. - 내역 헤더의 검색과 필터 버튼을 `assets/icons/search.svg`, `assets/icons/tune.svg` 인라인 SVG로 교체했다. - CSV 내보내기 컬럼을 한글 컬럼명과 앱의 거래 흐름에 맞는 순서로 정리하고 Excel 호환 BOM을 추가했다. +- 빈 데이터 상태 화면을 공통 컴포넌트로 분리하고 내역, 통계, 자산, 설정, 공유 화면에 적용했다. diff --git a/docs/project-guidelines.md b/docs/project-guidelines.md index 39ae881..c5bc43f 100644 --- a/docs/project-guidelines.md +++ b/docs/project-guidelines.md @@ -30,6 +30,7 @@ - 검색과 필터 같은 헤더 액션도 텍스트 기호 대신 `assets/icons`의 SVG 아이콘을 사용한다. - 거래 목록의 카테고리 표시는 하위 카테고리가 있으면 하위 이름만, 없으면 상위 이름만 보여준다. - 카테고리 아이콘과 색상은 카테고리 관리 상세 화면에서 수정하고 거래 목록 아이콘에 즉시 반영한다. +- 빈 데이터 화면은 단순 텍스트만 노출하지 않고 공통 EmptyState 형태로 제목, 짧은 설명, 다음 행동의 힌트를 제공한다. ## 데이터 기준 diff --git a/pages/assets.vue b/pages/assets.vue index 6366836..7394327 100644 --- a/pages/assets.vue +++ b/pages/assets.vue @@ -73,9 +73,13 @@ {{ formatWon(asset.balance || 0) }} -

- 등록된 자산이 없습니다. -

+
@@ -120,9 +124,12 @@ /> -

- 이 자산의 {{ displayMonth }} 거래가 없습니다. -

+
diff --git a/pages/index.vue b/pages/index.vue index 9b50cc2..f6a7c40 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -106,9 +106,12 @@
-
- 아직 거래가 없습니다. -
+ diff --git a/pages/settings.vue b/pages/settings.vue index 2caafce..53c50cf 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -155,9 +155,12 @@ -

- 만든 공유 링크가 없습니다. -

+ @@ -269,9 +272,12 @@ -

- 등록된 자산이 없습니다. -

+ @@ -398,9 +404,12 @@ -

- {{ selectedParentCategory ? '하위 카테고리가 없습니다.' : `${categoryTypeLabel} 상위 카테고리가 없습니다.` }} -

+ diff --git a/pages/share/[token].vue b/pages/share/[token].vue index 79db624..afe4e3c 100644 --- a/pages/share/[token].vue +++ b/pages/share/[token].vue @@ -8,10 +8,12 @@

-
-

공유 링크를 볼 수 없습니다.

-

링크가 만료되었거나 삭제되었을 수 있습니다.

-
+ diff --git a/pages/stats.vue b/pages/stats.vue index c04cf3b..dd89acb 100644 --- a/pages/stats.vue +++ b/pages/stats.vue @@ -61,9 +61,12 @@ {{ formatWon(item.total) }} -

- {{ selectedType === 'income' ? '집계할 수입이 없습니다.' : '집계할 지출이 없습니다.' }} -

+ diff --git a/todo.md b/todo.md index 35c572a..71e2aba 100644 --- a/todo.md +++ b/todo.md @@ -36,7 +36,6 @@ - 회원 탈퇴 또는 데이터 삭제 정책을 정한다. - 로그인 실패, 세션 만료, 네트워크 오류 상태를 화면에서 더 명확히 보여준다. -- 빈 데이터 상태 화면을 페이지별로 다듬는다. ## 8. 공유