사용자 화면 · 마이페이지
찜한 작품
MYP-007 · 2026. 03. 17
| 0 | 화면 접근 조건 | - 찜한 작품은 로그인 사용자만 접근 가능
- 비로그인 상태에서
- 마이페이지 > 찜한 작품 선택 시
- 로그인 안내 모달(LOG-008) 노출
- 로그인 완료 후 구매 내역 화면으로 이동
|
| 1 | 헤더 영역 | |
| 2 | 찜한 작품 리스트 | - 구성 요소
- 작품 썸네일 이미지 / 작품 구분 태그(마켓/프라이빗세일) / 작품명 / 작가명 / 작품 타입 / 가격 정보 / 찜 아이콘(하트)
- 작품 카드 탭 시
- 해당 작품 상세 화면으로 이동 (MKT-013)
- 마켓 작품은 마켓 작품 상세 화면
- 프라이빗 세일은 프라이빗 세일 상세 화면
- 해당 작품 찜 해제
- 리스트에서 즉시 제거
- 보조 UX 처리
- 찜 해제 시
- 리스트는 최신찜 순으로 노출
- 동일 작품 중복 찜 불가
- 작품 상태 변경(판매 완료 등) 시
- 리스트에서는 유지
- 상세 화면 진입 시 상태 반영
|
| 3 | 찜한 작품 내역 없음 화면 | |
| 7 | 토스트 메시지 정의 | - 찜한 작품 로딩 실패 시
- 찜한 작품 내역을 불러오지 못했어요. 잠시 후 다시 시도해주세요.
|
| 8 | 공통 규칙 | - 찜한 작품은 조회 전용 화면
- 데이터 없음 상태는 오류가 아닌 정상 상태
|
Design Output
UI 디자인 산출물
위 스토리보드 기획을 CHAART OS 디자인 토큰으로 변환한 결과물. 실제 구현 시 참조할 최종 디자인.
작품명
작가명
작품 타입
12,345,678 원
프라이빗 세일
작품명
작가명
작품 타입
12,345,678 원
작품명
작가명
작품 타입
12,345,678 원
Update History
2026.03.19sb-wireframe-frame 패턴 전환 (MKT 품질 통일), DS v2 연동, 구조 정합성 수정
2026.03.16구현 가이드 최신화 — Applied Design Tokens 통합, Description/디자인 산출물 기준 전면 재작성
2026.03.11구현 가이드 추가 (7섹션: 화면구조, 레이어구조, 작품카드, 찜해제, 빈상태, 에러처리, 예외처리)
2026.03.04초기 디자인 작성
Implementation Specification
1. 화면 구조 개요
- 화면 ID: MYP-007, 찜한 작품 목록
- 뷰포트: 393 x 852px (iPhone 기준), 전체 배경
--bg #FAFAF8 - 수직 구조: 상태바(44px) → 네비바(48px) → 작품 리스트(flex:1, 스크롤) → 홈 인디케이터
- 탭 없음, 하단 CTA 없음 — 단순 리스트 구조
- 2개 상태: 찜한 작품 있음(아이템 리스트 + 하트 아이콘) / 빈 상태(CHRT 모노그램 120x120 + 안내 문구)
- 로그인 필수 화면 — 비로그인 시 로그인 안내 모달(LOG-009) 노출
2. 레이어 구조 + 치수
| # | 영역 | 높이/위치 | 세부 스펙 |
| 1 | 상태바 | 44px | iOS 시스템 상태바, 시간 9:41 |
| 2 | 네비바 | 48px | bg: --bg #FAFAF8, padding: 0 24px. 좌: 뒤로가기 20x20 stroke --charcoal stroke-width:1.5 round/round. 중앙: "찜한 작품" --sans 17px/700 --charcoal ls:-0.02em. 우: 20px 빈 공간 |
| 3 | 작품 리스트 | flex:1 (스크롤) | padding: 0 24px. 아이템 간 border-bottom: 1px solid rgba(26,26,26,0.06). 아이템당 padding: 18px 0, display:flex gap:14px |
| 4 | 홈 인디케이터 | 34px | iOS 하단 홈바 |
3. 핵심 인터랙션
- 작품 카드 구조: display:flex, gap:14px. 좌: 썸네일 72x72px bg
--paper #F0EDE6 직각(R=0) + linen 텍스처(4px 패턴, opacity:0.6) + CHRT 워터마크(24x28 viewBox, opacity:0.15). 중앙: 텍스트 블록. 우: 하트 아이콘 - 텍스트 블록 순서: [PS 뱃지(선택)] → 작품명 14px/700
--charcoal ls:-0.01em mb:3px → 작가명 12px --text-secondary #555555 mb:2px → 작품 타입 --mono 11px --text-muted ls:0.02em mb:6px → 가격 14px/700 --charcoal ls:-0.01em - PS 태그 뱃지: "프라이빗 세일" — inline-block,
--mono 9px/600, --charcoal, border: 1px solid rgba(26,26,26,0.12), padding: 2px 6px, ls:0.02em, mb:4px. 프라이빗 세일 작품에만 표시 - 하트 아이콘 (활성): 18x18px, fill:
--red-brand #961E23, stroke: --red-brand, stroke-width: 1.5, stroke-linecap: square, stroke-linejoin: miter. align-items:flex-start, padding-top:4px - 찜 해제: 하트 아이콘 탭 → 리스트에서 즉시 제거 + 토스트 "찜한 작품에서 제거했습니다". 찜 목록 전체 비어지면 빈 상태 뷰로 전환
- 카드 전체 영역 탭: 해당 작품 상세 화면(MKT-013)으로 이동. 프라이빗 세일인 경우 프라이빗 작품 상세 화면으로 이동
- 뒤로가기: 마이페이지 메인(MYP-001)으로 이동
- 정렬: 최신 찜 순으로 노출
4. 상태 변화
- 데이터 있음 → 리스트 뷰: 찜한 작품 아이템 리스트 표시. 마켓/프라이빗 세일 작품 혼합 가능. PS 뱃지로 프라이빗 세일 구분
- 데이터 없음 → 빈 상태: CHRT 모노그램 히어로(120x120px) + "찜한 작품 내역이 없습니다" 14px
--text-muted ls:-0.01em 중앙 정렬, gap:16px - 찜 해제 시: 리스트에서 즉시 제거 반영. 별도 작품 영역(필터/탭)에서는 리스트에서 유지, 상세 화면 진입 시 삭제 반영
- 작품 가격: 현재 최신 가격으로 실시간 노출 (조건 전용이 아닌 최신 반영)
5. 네비게이션 플로우
- 진입 경로: MYP-001 마이페이지 메인 → 찜한 작품
- 뒤로가기 (chevron): → MYP-001 마이페이지 메인
- 리스트 아이템 탭 (마켓): → MKT-013 작품 상세
- 리스트 아이템 탭 (프라이빗 세일): → 프라이빗 작품 상세 화면
- 비로그인 접근: → LOG-009 로그인 안내 모달 → 로그인 완료 후 본 화면 복귀
6. 에러/예외 처리
- 찜 목록 로딩 실패: 토스트 "찜한 목록을 불러오지 못했어요. 잠시 후 다시 시도해주세요."
- 네트워크 오류: 토스트 "네트워크 오류 — 잠시 후 다시 시도해주세요"
- 찜 해제 도중 네트워크 오류: 상태 롤백(하트 아이콘 활성 복원) + 에러 토스트
- 비로그인 접근: 로그인 안내 모달(LOG-009) 노출 → 로그인 유도 (오류가 아닌 정상 상태)
7. 모션 스펙
- 화면 진입: translateX(100% → 0), duration 350ms, easing
--ease-ios-spring - 카드 pressed: background rgba(26,26,26,0.04) 즉시 적용 → 150ms fade-out으로 해제
- 찜 해제: 하트 아이콘 scale(1 → 0.8 → 1), duration 200ms. 아이템 제거 시 height collapse + opacity 0, duration 300ms ease-out
- 화면 퇴장 (뒤로가기): translateX(0 → 100%), duration 300ms, easing ease-in
8. 여백 · 간격 요약
| 요소 | 속성 | 값 |
| 네비바 | padding | 0 24px |
| 리스트 컨테이너 | padding | 0 24px |
| 리스트 아이템 | padding / gap | padding: 18px 0, gap: 14px (썸네일-텍스트) |
| 텍스트 스택 | margin-bottom | 작품명 3px → 작가명 2px → 타입 6px → 가격 0 |
| PS 뱃지 | padding / margin | padding: 2px 6px, margin-bottom: 4px |
| 하트 아이콘 | padding-top | 4px (flex-start 정렬) |
| 빈 상태 | gap | 16px (모노그램-텍스트 사이) |
9. 적용 디자인 토큰
- [색상]
--bg: #FAFAF8 --charcoal: #1A1A1A --red-brand: #961E23 --text-muted: #888888 --text-secondary: #555555 - [타이포그래피]
--mono: TASA Orbiter --sans: Pretendard Variable - [기타]
--paper: (see tokens.css)