[FE-06] 한정판 상세·카운트다운 화면 (S1)
작업 내용 (설계 의도)
변경 사항
근거: design-fe-app.md “S1 와이어프레임” · “화면별 상태 표”.
app/limited-drop/[id]/index.tsx(신규): 회차 상태를 표시하고 구매로 진입하는 컨테이너 화면.
useLimitedDrop(조회) +useCountdown(openAt) 소비.- 상태별 hero/CTA: SCHEDULED=카운트다운+비활성 CTA”판매 시작 전”, OPEN=RemainingStockBar+활성”구매하기”(→ S2), SOLD_OUT=비활성”재고 소진”, CLOSED=비활성”판매 종료”.
- 화면 상태: loading(스피너), error(404”없는 회차”/5xx”불러오지 못함 [다시 시도]”), success(상태별 렌더).
- openAt 도달 시 CTA 활성화 + 1회 refetch로 서버 동기화.
- 토스 패턴: 단일 CTA, accent 1곳, 카운트다운 hero. 라이트/다크 both.
의존
- FE-01 (테마), FE-03 (useLimitedDrop·useCountdown), FE-05 (컴포넌트)
다이어그램
처리 흐름
sequenceDiagram participant U as 사용자 participant S as S1 화면 participant Q as useLimitedDrop U->>S: 진입 S->>Q: getLimitedDrop(id) Q-->>S: status/remaining/openAt S-->>U: 상태별 hero + CTA U->>S: 구매하기(OPEN) → S2
테스트 케이스
- 조회 중 loading 스피너를 표시한다.
- 404 응답 시 “없는 회차” 에러 UI를 표시한다.
- SCHEDULED일 때 카운트다운과 비활성 “판매 시작 전” CTA를 표시한다.
- OPEN일 때 남은 수량과 활성 “구매하기” CTA를 표시한다.
- SOLD_OUT일 때 비활성 “재고 소진”을 표시한다.
- openAt 도달 시 CTA가 활성화된다.
- 라이트/다크 두 모드에서 렌더된다.