Skip to content

refactor: 위시에서 가져오기 화면 개선 (+ 공유 위시 카드 개편) - #356

Merged
soyeong0115 merged 7 commits into
devfrom
refactor/338-wish-card-ui
Jul 21, 2026
Merged

refactor: 위시에서 가져오기 화면 개선 (+ 공유 위시 카드 개편)#356
soyeong0115 merged 7 commits into
devfrom
refactor/338-wish-card-ui

Conversation

@soyeong0115

@soyeong0115 soyeong0115 commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

작업 요약

  • 위시 카드 UI를 이미지/텍스트 고정 높이 구조로 개편합니다
  • 위시에서 가져오기 화면의 헤더·타이포·체크박스를 디자인 스펙에 맞게 개선합니다
  • 아카이브 위시 그리드 및 레이아웃 패딩을 조정합니다
  • 위시 카드 커머스 칩 구현 (sourcePlatform 연동)

작업 세부 내용

위시 카드 (공유 컴포넌트)

  • 이미지 영역 고정 높이 166px, 텍스트 영역 고정 높이 124px 적용
  • rounded-2xl, aspect-ratio 제거 → 카드 간 여백 없이 그리드에 꽉 참
  • 상품명 body-2-medium, 가격 body-2-semibold 타이포 적용
  • 커머스 칩 추가: sourcePlatform 필드 연동, caption-1-regular / gray-75 배경 스타일 적용

위시에서 가져오기 화면

  • Header 컴포넌트 및 뒤로가기 아이콘 적용 (heading-1 타이포)
  • WishSelectHeader: 서브타이틀 문구 변경, 카운트 표기 N/N개 선택 중N/N개 선택
  • 체크박스 unchecked: border-[1.4px] border-white bg-black/[0.08] CSS 구현
  • 체크박스 checked: SVG scale-[1.334]로 20×20 크기 일치, 흰 배경으로 체크마크 표시
  • 그리드 gap 제거, 단일 CTA (다음 버튼만 유지)

레이아웃 패딩

  • ArchivePageLayout: px-5를 sticky 헤더 영역으로만 적용 → 위시 그리드 풀블리드
  • ByWishContent: px-5를 Header + WishSelectHeader 영역으로만 적용

스크린샷

스크린샷 2026-07-20 오전 12 00 07

연관 이슈

closes #338

Summary by CodeRabbit

  • 새로운 기능

    • 위시 카드에 상품이 등록된 커머스 플랫폼 정보가 표시됩니다.
    • 위시리스트와 토너먼트 생성 화면의 카드에서도 플랫폼 정보가 일관되게 제공됩니다.
  • 개선 사항

    • 플랫폼 정보가 없는 상품은 불필요한 표시 없이 기존과 동일하게 노출됩니다.

@soyeong0115 soyeong0115 self-assigned this Jul 19, 2026
@soyeong0115 soyeong0115 added feature New feature or request refactor Extra attention is needed style labels Jul 19, 2026
@vercel

vercel Bot commented Jul 19, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
piki Ready Ready Preview, Comment Jul 21, 2026 12:58pm

@github-actions
github-actions Bot requested review from iOdiO89 and ychany July 19, 2026 15:03
@github-actions

Copy link
Copy Markdown

Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다.

@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

위시 데이터에 sourcePlatform 필드를 추가하고, API 매핑부터 보관 및 위시 선택 화면의 WishCard까지 전달합니다. WishCard는 값이 있을 때 커머스 플랫폼 칩을 표시합니다.

Changes

위시 출처 플랫폼 표시

Layer / File(s) Summary
위시 출처 데이터 계약
apps/web/src/types/item.ts, apps/web/src/types/wish.ts, apps/web/src/apis/getWishlist.ts
ItemTWishItemTsourcePlatform을 추가하고 위시리스트 매핑 결과에 값을 포함합니다.
카드 플랫폼 표시 연결
apps/web/src/components/common/wish-card/index.tsx, apps/web/src/app/tournament/.../WishSelectCard.tsx, apps/web/src/app/tournament/.../ByWishContent.tsx, apps/web/src/app/archive/.../wish-grid/index.tsx
sourcePlatform을 카드 호출부로 전달하고, WishCard에서 플랫폼 칩을 조건부 렌더링합니다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Sequence Diagram(s)

sequenceDiagram
  participant getWishlist
  participant ByWishContent
  participant WishSelectCard
  participant WishGrid
  participant WishCard
  getWishlist->>ByWishContent: sourcePlatform이 포함된 위시 항목
  getWishlist->>WishGrid: sourcePlatform이 포함된 위시 항목
  ByWishContent->>WishSelectCard: sourcePlatform 전달
  WishSelectCard->>WishCard: sourcePlatform 전달
  WishGrid->>WishCard: sourcePlatform 전달
  WishCard-->>ByWishContent: 플랫폼 칩 렌더링
  WishCard-->>WishGrid: 플랫폼 칩 렌더링
Loading

Possibly related PRs

  • TeamPiKi/client#365: 동일한 WishCard 가격 영역의 스타일을 변경해 렌더링 영역이 겹칠 수 있습니다.

Suggested labels: WEB

Suggested reviewers: ychany, iodio89

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning sourcePlatform 연동은 반영됐지만 by-wish 헤더, 체크박스, 카드 고정 높이/타이포 조정은 보이지 않아 요구사항을 모두 충족하지 못합니다. WishSelectHeader와 체크박스, 카드 레이아웃/타이포 변경을 추가하고 by-wish와 보관 화면에 의도한 UI 개선을 반영하세요.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 위시 가져오기 화면 개선과 공유 WishCard 개편이라는 핵심 변경을 잘 요약합니다.
Out of Scope Changes check ✅ Passed 변경은 위시카드와 위시리스트 데이터의 sourcePlatform 연동에 집중되어 있어 PR 목적과 무관한 범위 확장은 보이지 않습니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/338-wish-card-ui

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/web/src/components/common/wish-card/index.tsx (1)

14-23: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Skeleton 로딩 폴백의 라운드 코너가 카드 컨테이너 변경과 불일치합니다.

카드 컨테이너에서 rounded-2xl이 제거되었지만, Skeleton 폴백에는 여전히 rounded-t-2xl rounded-b-none이 남아 있습니다. 로딩 중에는 둥근 상단 코너가 보이고 이미지 로드 후에는 각진 코너로 전환되어 매 카드 로드 시마다 시각적 불일치가 발생합니다.

🔧 제안 수정
-            loadingFallback={<Skeleton className="absolute inset-0 rounded-t-2xl rounded-b-none" />}
+            loadingFallback={<Skeleton className="absolute inset-0" />}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/web/src/components/common/wish-card/index.tsx` around lines 14 - 23,
Update the Skeleton passed to BaseImage via loadingFallback in the wish card so
it no longer applies rounded-t-2xl or rounded-b-none, matching the current
non-rounded card container and keeping loading and loaded states visually
consistent.
🧹 Nitpick comments (1)
apps/web/src/app/tournament/[id]/create/by-wish/_components/WishSelectHeader.tsx (1)

19-36: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

하드코�된 색상값 대신 디자인 토큰 사용을 고려해보세요.

text-[#737373]는 하드코�된 색상입니다. 프로젝트에 text-text-neutral-tertiary 등의 토큰이 존재한다면, 일관성을 위해 토큰을 사용하는 것이 좋습니다. 디자인 스펙상 정확한 색상이 필요하다면 의도된 것으로 무시하셔도 됩니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@apps/web/src/app/tournament/`[id]/create/by-wish/_components/WishSelectHeader.tsx
around lines 19 - 36, Update the selected-count suffix in the component’s return
markup to use the existing design-token class for the neutral tertiary text
color instead of the hard-coded text-[`#737373`] value; keep the selectedCount
accent styling unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@apps/web/src/app/tournament/`[id]/create/by-wish/_components/ByWishContent.tsx:
- Line 62: HeaderIcon name="BACK" in ByWishContent must receive an onClick
handler that invokes the existing history.back() behavior. Pass the handler to
the header icon while preserving the current bottom “뒤로” button behavior.

---

Outside diff comments:
In `@apps/web/src/components/common/wish-card/index.tsx`:
- Around line 14-23: Update the Skeleton passed to BaseImage via loadingFallback
in the wish card so it no longer applies rounded-t-2xl or rounded-b-none,
matching the current non-rounded card container and keeping loading and loaded
states visually consistent.

---

Nitpick comments:
In
`@apps/web/src/app/tournament/`[id]/create/by-wish/_components/WishSelectHeader.tsx:
- Around line 19-36: Update the selected-count suffix in the component’s return
markup to use the existing design-token class for the neutral tertiary text
color instead of the hard-coded text-[`#737373`] value; keep the selectedCount
accent styling unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 36548f78-b504-4ae1-b175-6ab2f01307ee

📥 Commits

Reviewing files that changed from the base of the PR and between 8a09a24 and 616be85.

📒 Files selected for processing (7)
  • apps/web/src/app/archive/_common/_components/ArchivePageLayout.tsx
  • apps/web/src/app/archive/wish/_components/WishlistList.tsx
  • apps/web/src/app/archive/wish/_components/wish-grid/index.tsx
  • apps/web/src/app/tournament/[id]/create/by-wish/_components/ByWishContent.tsx
  • apps/web/src/app/tournament/[id]/create/by-wish/_components/WishSelectCard.tsx
  • apps/web/src/app/tournament/[id]/create/by-wish/_components/WishSelectHeader.tsx
  • apps/web/src/components/common/wish-card/index.tsx

Comment on lines +10 to +11
<div className="flex min-h-dvh flex-col bg-bg-layer-basement">
<div className="sticky top-0 z-20 inline-flex w-full flex-col items-start gap-5 bg-bg-layer-basement px-5 pt-padding-top pb-6">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

하단 cta 빼고 bg-white인거 같은데!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

피그마에 다 bg/layer/basement 이렇게 되어 있는데 뭐지?!

<p className="line-clamp-2 self-stretch body-2-medium text-text-neutral-primary">{name}</p>
<p className="body-2-semibold text-text-neutral-primary">{price.toLocaleString()}원</p>
</div>
{/* TODO: 커머스칩 — 백엔드에 sourceName 필드 추가 후 구현 (WishItemT.sourceName) */}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 추가됐다고 들었어! 한번 확인해볼래?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넵넵

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/web/src/components/common/wish-card/index.tsx (1)

15-17: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

로딩 스켈레톤의 라운딩도 새 카드 스펙에 맞춰 주세요.

카드 루트의 rounded-2xl은 제거됐지만 loadingFallback에는 rounded-t-2xl rounded-b-none이 남아 있어 로딩 중에만 상단 모서리가 둥글게 표시됩니다. fallback의 라운딩을 제거하거나 최종 카드와 동일하게 맞춰 주세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/web/src/components/common/wish-card/index.tsx` around lines 15 - 17,
Update the loadingFallback styling in the wish-card component to remove its
remaining rounded-t-2xl and rounded-b-none classes, matching the card root’s
non-rounded styling during loading.
🧹 Nitpick comments (1)
apps/web/src/components/common/wish-card/index.tsx (1)

45-49: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

sourcePlatform 추가로 발생한 긴 TypeScript/JSX 라인을 100자 이하로 정리해 주세요.

세 변경 지점이 모두 print width 100을 초과합니다. As per coding guidelines, TypeScript 파일은 print width 100을 사용해야 합니다.

  • apps/web/src/components/common/wish-card/index.tsx#L45-L49: 칩 <span> 선언을 줄바꿈합니다.
  • apps/web/src/app/archive/wish/_components/wish-grid/index.tsx#L41-L41: 삭제 모드 WishCard props를 여러 줄로 나눕니다.
  • apps/web/src/app/tournament/[id]/create/by-wish/_components/WishSelectCard.tsx#L13-L21: 함수 시그니처와 WishCard 호출을 여러 줄로 나눕니다.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/web/src/components/common/wish-card/index.tsx` around lines 45 - 49,
Ensure all three TypeScript/JSX sites stay within the 100-character print width:
in apps/web/src/components/common/wish-card/index.tsx lines 45-49, wrap the
sourcePlatform chip span declaration; in
apps/web/src/app/archive/wish/_components/wish-grid/index.tsx line 41, split the
delete-mode WishCard props across lines; and in
apps/web/src/app/tournament/[id]/create/by-wish/_components/WishSelectCard.tsx
lines 13-21, wrap the function signature and WishCard invocation. Preserve the
existing behavior and props.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@apps/web/src/components/common/wish-card/index.tsx`:
- Around line 15-17: Update the loadingFallback styling in the wish-card
component to remove its remaining rounded-t-2xl and rounded-b-none classes,
matching the card root’s non-rounded styling during loading.

---

Nitpick comments:
In `@apps/web/src/components/common/wish-card/index.tsx`:
- Around line 45-49: Ensure all three TypeScript/JSX sites stay within the
100-character print width: in apps/web/src/components/common/wish-card/index.tsx
lines 45-49, wrap the sourcePlatform chip span declaration; in
apps/web/src/app/archive/wish/_components/wish-grid/index.tsx line 41, split the
delete-mode WishCard props across lines; and in
apps/web/src/app/tournament/[id]/create/by-wish/_components/WishSelectCard.tsx
lines 13-21, wrap the function signature and WishCard invocation. Preserve the
existing behavior and props.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 68b2cef5-c8cc-4927-bcbc-2b724ebdeb70

📥 Commits

Reviewing files that changed from the base of the PR and between 2c02ebc and dac657b.

📒 Files selected for processing (7)
  • apps/web/src/apis/getWishlist.ts
  • apps/web/src/app/archive/wish/_components/wish-grid/index.tsx
  • apps/web/src/app/tournament/[id]/create/by-wish/_components/ByWishContent.tsx
  • apps/web/src/app/tournament/[id]/create/by-wish/_components/WishSelectCard.tsx
  • apps/web/src/components/common/wish-card/index.tsx
  • apps/web/src/types/item.ts
  • apps/web/src/types/wish.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/web/src/app/tournament/[id]/create/by-wish/_components/ByWishContent.tsx

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/web/src/components/common/wish-card/index.tsx (1)

17-17: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

이미지 영역을 166px 고정 높이로 맞춰 주세요.

aspect-[201/166]은 카드 너비에 따라 이미지 높이를 변경하므로, PR 스펙의 고정 166px과 어긋납니다. 삭제 모드 오버레이도 같은 기준으로 고정해야 이미지와 정확히 겹칩니다.

  • apps/web/src/components/common/wish-card/index.tsx#L17-L17: 이미지 래퍼를 h-[166px] w-full로 변경하세요.
  • apps/web/src/app/archive/wish/_components/wish-grid/index.tsx#L42-L42: 오버레이를 h-[166px]로 변경하세요.
수정 예시
-<div className="relative aspect-[201/166] w-full bg-bg-layer-basement">
+<div className="relative h-[166px] w-full bg-bg-layer-basement">

-<div className={`pointer-events-none absolute top-0 left-0 right-0 z-[11] aspect-[201/166] ...`} />
+<div className={`pointer-events-none absolute top-0 left-0 right-0 z-[11] h-[166px] ...`} />
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/web/src/components/common/wish-card/index.tsx` at line 17, 이미지 영역을 카드
너비에 따른 비율이 아닌 166px 고정 높이로 변경하세요.
apps/web/src/components/common/wish-card/index.tsx 17-17의 이미지 래퍼는 h-[166px]
w-full을 사용하고, apps/web/src/app/archive/wish/_components/wish-grid/index.tsx
42-42의 삭제 모드 오버레이도 h-[166px]로 맞추세요.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@apps/web/src/components/common/wish-card/index.tsx`:
- Line 17: 이미지 영역을 카드 너비에 따른 비율이 아닌 166px 고정 높이로 변경하세요.
apps/web/src/components/common/wish-card/index.tsx 17-17의 이미지 래퍼는 h-[166px]
w-full을 사용하고, apps/web/src/app/archive/wish/_components/wish-grid/index.tsx
42-42의 삭제 모드 오버레이도 h-[166px]로 맞추세요.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 6217e9ab-d36c-4b0e-bcd9-3a0f331f8e79

📥 Commits

Reviewing files that changed from the base of the PR and between dac657b and dffbfb3.

📒 Files selected for processing (4)
  • apps/web/src/app/archive/wish/_components/wish-grid/index.tsx
  • apps/web/src/app/tournament/[id]/create/by-wish/_components/ByWishContent.tsx
  • apps/web/src/app/tournament/[id]/create/by-wish/_components/WishSelectCard.tsx
  • apps/web/src/components/common/wish-card/index.tsx

@soyeong0115
soyeong0115 merged commit a5f38b4 into dev Jul 21, 2026
9 checks passed
@soyeong0115
soyeong0115 deleted the refactor/338-wish-card-ui branch July 21, 2026 13:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or request refactor Extra attention is needed style

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor: 위시에서 가져오기 화면 개선 (+ 공유 위시 카드 개편)

2 participants