Skip to content

๐Ÿ›Fix : Address Copy Button - ์‹ค ์ฃผ์†Œ๊ฐ’ Placeholder#63

Merged
KongMezu merged 3 commits intodevelopfrom
fix/#62/addresscopy-button
Oct 27, 2025
Merged

๐Ÿ›Fix : Address Copy Button - ์‹ค ์ฃผ์†Œ๊ฐ’ Placeholder#63
KongMezu merged 3 commits intodevelopfrom
fix/#62/addresscopy-button

Conversation

@KongMezu
Copy link
Copy Markdown
Contributor

@KongMezu KongMezu commented Oct 26, 2025

๐Ÿ”ฅ ์ž‘์—… ๋‚ด์šฉ

  • ๋ฒ„ํŠผ ๊ธฐ์กด ๊ณ ์ • label(address copy) ์—์„œ ์‹ค ์ฃผ์†Œ๊ฐ’ ๋ฐ›์•„์˜ค๋„๋ก ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ •
  • ์ปดํฌ๋„ŒํŠธ ๋ฐ–์œผ๋กœ ๊ธ€์ž ๋ฒ—์–ด๋‚˜๋ฉด ์ถ•์•ฝ

๐Ÿค” ์ถ”ํ›„ ์ž‘์—… ์‚ฌํ•ญ

  • svgo

๐Ÿ”—ย ์ด์Šˆ

PR Point (To Reviewer)

๋ฒ„ํŠผ ๊ณ ์ • ๋ผ๋ฒจ -> ์‹ค์ฃผ์†Œ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ

address copy ๊ฐ€ ๋ฒ„ํŠผ ์ „์ฒด ๊ณ ์ • ui ์ธ์ค„ ์•Œ๊ณ  ์ž‘์—…ํ–ˆ์œผ๋‚˜, ์‹ค ์ฃผ์†Œ๊ฐ€ ๋ณด์—ฌ์ ธ์•ผ ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ”๊ฟ”๋†จ์Šต๋‹ˆ๋‹ค.
๊ณ ์ • ๋ฒ„ํŠผ ๊ฐ’์ด ์˜€๋˜ label ๊ณผ ์ฃผ์†Œ๊ฐ’ value ๋ถ„๋ฆฌ๋ฅผ value ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.
image

์‚ฌ์šฉ๋ฒ•

์ €๋ฒˆ์ด๋ž‘ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

<AddressCopy
        value='์ธ์ฒœ๊ด‘์—ญ์‹œ ๊ณ„์–‘๊ตฌ ์–ด์ฉŒ๊ตฌ๋กœ 0000 ์šฐ๋ฆฌ์ง‘ 11์ธต์ด๋‹ค '
        variant='mint'
      />

์ถ•์•ฝ & ์ฃผ์†Œ ๋ณต์‚ฌ์‹œ ์•ก์…˜

๊ธ€์ž๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ์ถ•์•ฝ๋˜๊ฒŒ ํ•ด๋†จ์Šต๋‹ˆ๋‹ค.
์ฃผ์†Œ ๋ณต์‚ฌํ•˜๊ณ  ํŒ์—…์ฐฝ์ด๋‚˜ ๋ฉ˜ํŠธ๋ฅผ ๋„์šธ๊นŒ ํ•˜๋‹ค๊ฐ€ ์•„์ด์ฝ˜์— ์ฒดํฌ ํ‘œ์‹œ๊ฐ€ ์žˆ๋Š”๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  1.5์ดˆ๊ฐ„ ์ฒดํฌ ํ‘œ์‹œ ๋ณด์—ฌ์ฃผ๋Š”๊ฒŒ ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์„œ ๋ฐ”๊ฟ”๋ดค์Šต๋‹ˆ๋‹ค.
์ž์„ธํ•œ๊ฑด ์˜์ƒ๋ณด์‹œ๋ฉด ์ดํ•ด๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค!

๐Ÿ“ธย ํ”ผ๊ทธ๋งˆ ์Šคํฌ๋ฆฐ์ƒท or ๊ธฐ๋Šฅ GIF

KakaoTalk_20251027_011413350.mp4

Summary by CodeRabbit

๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ

  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ

    • ์ตœ๊ทผ ์‚ฌ์šฉํ•œ ๋กœ๊ทธ์ธ ํ”Œ๋žซํผ ์ถ”์  ๋ฐ ํ‘œ์‹œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
    • ์žฅ์†Œ ํƒํ—˜ ๊ถŒ์žฅ ๊ฐœ์ˆ˜๋ฅผ 10๊ฐœ๋กœ ์—…๋ฐ์ดํŠธ
  • ์Šคํƒ€์ผ

    • ๋ฒ„ํŠผ ๋ฐ ์นด๋“œ ์ปดํฌ๋„ŒํŠธ์˜ ๋„ˆ๋น„๋ฅผ ๊ณ ์ •๊ฐ’์—์„œ ๋ฐ˜์‘ํ˜• ์ „์ฒด ๋„ˆ๋น„๋กœ ๋ณ€๊ฒฝ
    • ์ฃผ์†Œ ๋ณต์‚ฌ ์ปดํฌ๋„ŒํŠธ ํ…์ŠคํŠธ ๋ง์ค„์ž„ ๋ฐ ๋ ˆ์ด์•„์›ƒ ๊ฐœ์„ 

@vercel
Copy link
Copy Markdown

vercel bot commented Oct 26, 2025

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

Project Deployment Preview Comments Updated (UTC)
af-fe Ready Ready Preview Comment Oct 26, 2025 4:15pm

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Oct 26, 2025

๐Ÿš€ ์ „์ฒด ์š”์•ฝ

Walkthrough

๋ณธ PR์€ ์„ธ ๊ฐœ์˜ ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ ํŽ˜์ด์ง€์—์„œ ์ตœ๊ทผ ๋กœ๊ทธ์ธ ํ”Œ๋žซํผ ์ถ”์  ์ƒํƒœ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ๋ณ„ ํ”ผ๋“œ๋ฐฑ UI๋ฅผ ํ†ตํ•ฉํ–ˆ์œผ๋ฉฐ, AddressCopy ์ปดํฌ๋„ŒํŠธ์˜ props ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝ(label โ†’ value + truncate)ํ•˜๊ณ , Card ์ปดํฌ๋„ŒํŠธ์˜ ๋„ˆ๋น„๋ฅผ ๊ณ ์ •๊ฐ’์—์„œ ๋ฐ˜์‘ํ˜•์œผ๋กœ ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

Changes

์‘์ง‘๊ตฐ / ํŒŒ์ผ(๋“ค) ๋ณ€๊ฒฝ ์š”์•ฝ
์ธ์ฆ ํŽ˜์ด์ง€ ๋กœ์ง ๋ฐ UI ๊ตฌ์กฐ ๊ฐœ์„ 
src/pages/auth/index.tsx
๋กœ๊ทธ์ธ ํ”Œ๋žซํผ ์ถ”์ ์„ ์œ„ํ•œ recentPlatform ์ƒํƒœ ์ถ”๊ฐ€; handleLoginClick ํ•ธ๋“ค๋Ÿฌ ๊ฐ•ํ™”(์ฝ˜์†” ๋กœ๊น… ๋ฐ ์ƒํƒœ ์—…๋ฐ์ดํŠธ); ์ตœ๊ทผ ๋กœ๊ทธ์ธ ๋ฒ„๋ธ”์„ ๊ฐ LoginButton ๊ทผ์ฒ˜์— ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋งํ•˜๋„๋ก ๊ตฌ์กฐ ๋ณ€๊ฒฝ; ํŒ ํ…์ŠคํŠธ ์—…๋ฐ์ดํŠธ("8๊ฐœ" โ†’ "10๊ฐœ ๋ช…์†Œ")
AddressCopy ์ปดํฌ๋„ŒํŠธ Props ๋ฐ ๋ Œ๋”๋ง ์žฌ์„ค๊ณ„
src/shared/components/button/AddressCopy.tsx
AddressCopyProps ์ธํ„ฐํŽ˜์ด์Šค: label ์ œ๊ฑฐ, truncate ์˜ต์…˜ ์ถ”๊ฐ€; ๋ Œ๋”๋ง: ๊ณ ์ • ๋„ˆ๋น„(w-[35.4rem])์—์„œ w-full๋กœ ๋ณ€๊ฒฝ; ์•„์ด์ฝ˜์„ copied ์ƒํƒœ๋ณ„๋กœ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง(CopySimple/Check); ํ…์ŠคํŠธ span์— flex-1 min-w-0 ๋ฐ ์„ ํƒ์  ์ž˜๋ฆผ ์Šคํƒ€์ผ ์ถ”๊ฐ€; title ์†์„ฑ์œผ๋กœ value ํ‘œ์‹œ
Card ์ปดํฌ๋„ŒํŠธ ๋„ˆ๋น„ ๋ฐ˜์‘ํ˜• ์กฐ์ •
src/shared/components/container/Card.tsx
ํฌ๊ธฐ ๋ฐฐ๋ฆฌ์–ธํŠธ(medium/large)์˜ ๊ณ ์ • ๋„ˆ๋น„(w-[17rem], w-[35.4rem])๋ฅผ w-full๋กœ ํ†ต์ผ; ๋†’์ด๋Š” ์œ ์ง€(medium: 17rem, large: 12rem)

Estimated code review effort

๐ŸŽฏ 3 (Moderate) | โฑ๏ธ ~20โ€“25 minutes

์ถ”๊ฐ€ ์ฃผ์˜ ํ•„์š” ์˜์—ญ:

  • AddressCopy์˜ ๊ณต๊ฐœ API ๋ณ€๊ฒฝ(label ์ œ๊ฑฐ, truncate ์ถ”๊ฐ€)์œผ๋กœ ์ธํ•œ ๊ธฐ์กด ์‚ฌ์šฉ์ฒ˜ ์˜ํ–ฅ ๊ฒ€์ฆ ํ•„์ˆ˜
  • ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง(recentPlatform)๊ณผ UI ํ†ตํ•ฉ ํ๋ฆ„์ด ์˜๋„๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ
  • Card ์ปดํฌ๋„ŒํŠธ ๋„ˆ๋น„ ๋ณ€๊ฒฝ์ด ์ „์ฒด ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ๊ณผ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฒ€ํ† 

Possibly related issues

  • [fix] ์ฃผ์†Œ ๋ณต์‚ฌ ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ •ย #62: AddressCopy ์ปดํฌ๋„ŒํŠธ์˜ props ๊ตฌ์กฐ ๋ณ€๊ฒฝ(label โ†’ value) ๋ฐ ๋ Œ๋”๋ง ๋กœ์ง ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•ด๋‹น ์ด์Šˆ์—์„œ ์š”์ฒญํ•œ ๋™์ผํ•œ ์ปดํฌ๋„ŒํŠธ ๊ฐœ์„ ๊ณผ ์ง์ ‘ ๋ถ€ํ•ฉํ•จ

Possibly related PRs

Suggested labels

comment

Suggested reviewers

  • skyblue1232
  • jjangminii

Poem

๐Ÿฐ ๋กœ๊ทธ์ธ ํ๋ฆ„์„ ๋‹ค๋“ฌ๊ณ ,
์ฃผ์†Œ ๋ณต์‚ฌ๋Š” ๋”์šฑ ์œ ์—ฐํ•˜๊ฒŒ,
์นด๋“œ๋Š” ํ™”๋ฉด ๊ฐ€๋“ ํŽผ์ณ์ง€๊ณ ,
10๊ฐœ ๋ช…์†Œ๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ชจํ—˜ ์ค€๋น„ ์™„๋ฃŒ!
๋ณ€ํ™”์™€ ๋‹ค๋“ฌ์Œ์˜ ์ถค์„ ์ถ˜๋‹ค๋„ค โœจ

Pre-merge checks and finishing touches

โŒ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage โš ๏ธ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
โœ… Passed checks (2 passed)
Check name Status Explanation
Title Check โœ… Passed PR ์ œ๋ชฉ "๐Ÿ›Fix : Address Copy Button - ์‹ค ์ฃผ์†Œ๊ฐ’ Placeholder"๋Š” changeset์˜ ์ฃผ์š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ •ํ™•ํžˆ ๋ฐ˜์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. raw_summary์— ๋”ฐ๋ฅด๋ฉด AddressCopy ์ปดํฌ๋„ŒํŠธ์˜ ๊ณต๊ฐœ API๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด (label ์†์„ฑ ์ œ๊ฑฐ, truncate ์†์„ฑ ์ถ”๊ฐ€) ์‹ค์ œ ์ฃผ์†Œ๊ฐ’์„ ํ‘œ์‹œํ•˜๋„๋ก ์ˆ˜์ •๋œ ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ์ด๋ฉฐ, ์ œ๋ชฉ์ด ์ด๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋น„๋ก Card ์ปดํฌ๋„ŒํŠธ์™€ auth ํŽ˜์ด์ง€์—๋„ ๋ณ€๊ฒฝ์ด ์žˆ์ง€๋งŒ, AddressCopy ๋ฒ„ํŠผ ์ˆ˜์ •์ด ์ด PR์˜ ํ•ต์‹ฌ ์˜๋„์ด๋ฉฐ ์ œ๋ชฉ์ด ์ด๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
Description Check โœ… Passed PR ์„ค๋ช…์ด ์ €์žฅ์†Œ์˜ ํ•„์ˆ˜ template์„ ์ถฉ์‹คํžˆ ๋”ฐ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ”ฅ ์ž‘์—… ๋‚ด์šฉ, ๐Ÿค” ์ถ”ํ›„ ์ž‘์—… ์‚ฌํ•ญ, ๐Ÿ”— ์ด์Šˆ, PR Point (To Reviewer), ๐Ÿ“ธ ํ”ผ๊ทธ๋งˆ ์Šคํฌ๋ฆฐ์ƒท ์„น์…˜์ด ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ฐ ์„น์…˜์ด ๋ช…ํ™•ํ•˜๊ณ  ์ƒ์„ธํ•˜๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ PR Point ์„น์…˜์—์„œ๋Š” ๋ณ€๊ฒฝ ์‚ฌ์œ , ์‚ฌ์šฉ ์˜ˆ์ œ ์ฝ”๋“œ, ๋™์ž‘ ๋ฐฉ์‹ ์„ค๋ช…์ด ์ฒด๊ณ„์ ์œผ๋กœ ์ œ์‹œ๋˜์–ด ์žˆ๊ณ , ๋™์ž‘์„ ๋ณด์—ฌ์ฃผ๋Š” GIF๊นŒ์ง€ ์ฒจ๋ถ€๋˜์–ด ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โœจ Finishing touches
  • ๐Ÿ“ Generate docstrings
๐Ÿงช Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/#62/addresscopy-button

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

โค๏ธ Share

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

@github-actions github-actions bot added the comment ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ label Oct 26, 2025
@github-actions
Copy link
Copy Markdown

๐Ÿท๏ธ Labeler has automatically applied labels based on your PR title, branch name, or commit message.
Please verify that they are correct before merging.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

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

โš ๏ธ Outside diff range comments (1)
src/shared/components/button/AddressCopy.tsx (1)

51-59: Clickable div โ†’ button ์ „ํ™˜์œผ๋กœ ํ‚ค๋ณด๋“œ ์ ‘๊ทผ์„ฑ/์—ญํ•  ๋ณด์žฅ

ํ˜„์žฌ div์— onClick๋งŒ ์žˆ์–ด ํ‚ค๋ณด๋“œ ์กฐ์ž‘(Enter/Space)๊ณผ ํฌ์ปค์Šค, ์—ญํ• ์ด ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ <button>์œผ๋กœ ๊ต์ฒดํ•˜๊ณ  type="button", ์ ์ ˆํ•œ aria-label/๋ผ์ด๋ธŒ ๋ฆฌ์ „์— ์˜ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ด์ฃผ์„ธ์š”.

Apply this diff:

-interface AddressCopyProps
-  extends React.HTMLAttributes<HTMLDivElement>,
+interface AddressCopyProps
+  extends React.ButtonHTMLAttributes<HTMLButtonElement>,
     VariantProps<typeof addressCopyStyle> {
   value: string;
   truncate?: boolean;
 }
 
 const AddressCopy = ({
   value,
   variant = 'gray',
   truncate = true,
   className,
   ...props
 }: AddressCopyProps) => {
   const [copied, setCopied] = useState(false);
@@
-  return (
-    <div
-      onClick={handleCopy}
+  const ariaLabel = copied ? '์ฃผ์†Œ๊ฐ€ ๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค' : '์ฃผ์†Œ ๋ณต์‚ฌ';
+  return (
+    <button
+      type="button"
+      onClick={handleCopy}
       className={cn(
         addressCopyStyle({ variant }),
         'w-full h-[4rem] px-[1.3rem] py-[1rem] gap-[0.4rem]',
-        'cursor-pointer select-none',
+        'cursor-pointer select-none',
         className,
       )}
       {...props}
-    >
+      aria-label={ariaLabel}
+    >
@@
-    </div>
+      <span className="sr-only" aria-live="polite" aria-atomic="true">
+        {copied ? '๋ณต์‚ฌ๋จ' : ''}
+      </span>
+    </button>
   );
๐Ÿงน Nitpick comments (6)
src/shared/components/container/Card.tsx (2)

14-16: w-full ์ „ํ™˜ ์‹œ flex-shrink-0์™€์˜ ์ƒํ˜ธ์ž‘์šฉ ์ ๊ฒ€ ํ•„์š”

๋ถ€๋ชจ๊ฐ€ ์ข๊ฑฐ๋‚˜ gap/padding์ด ํฐ ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ์ผ ๋•Œ, w-full + flex-shrink-0 ์กฐํ•ฉ์ด ์ˆ˜ํ‰ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ด์•„์›ƒ ์ƒ ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฉด OK์ง€๋งŒ, ์ด์Šˆ๊ฐ€ ๋ณด์ด๋ฉด flex-shrink ํ—ˆ์šฉ(์˜ˆ: flex-shrink ์ œ๊ฑฐ) ๋˜๋Š” ๋ถ€๋ชจ์— min-w-0/overflow-hidden ๋ณด์™„์„ ๊ณ ๋ คํ•ด์ฃผ์„ธ์š”.


39-44: large์˜ ๊ธฐ์กด padding๊ณผ customPadding์˜ ๋ณ‘ํ•ฉ ๊ฒฐ๊ณผ ์žฌํ™•์ธ

large๋Š” pt/pb/px๋ฅผ ์ง€์ •ํ•˜๊ณ , customPadding์€ py/px๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. twMerge ์ˆœ์„œ์ƒ py๊ฐ€ pt/pb๋ฅผ ๋ฎ์–ด ๋™์ผํ•œ ์ƒํ•˜ ํŒจ๋”ฉ(1.4rem)์œผ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ์˜๋„๋ผ๋ฉด OK, ์•„๋‹ˆ๋ผ๋ฉด customPadding์„ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ(์˜ˆ: pt ๋˜๋Š” pb๋งŒ) ์ง€์ •ํ•ด ์ฃผ์„ธ์š”.

src/pages/auth/index.tsx (3)

11-15: ์•Œ๋ฆผ(alert) ๋Œ€์‹  ๋น„์ฐจ๋‹จ ํ”ผ๋“œ๋ฐฑ์œผ๋กœ ์ „ํ™˜ ๊ถŒ์žฅ

alert๋Š” UI ํ๋ฆ„์„ ๋ง‰์Šต๋‹ˆ๋‹ค. ์ƒ๋‹จ ๋ฒ„๋ธ”/ํ† ์ŠคํŠธ๋กœ ๋Œ€์ฒดํ•˜๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋งŒ ๋™์ž‘ํ•˜๋„๋ก ๊ฐ€๋“œํ•˜๋Š” ํŽธ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Apply this diff (๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋งŒ alert ์œ ์ง€):

-  const handleLoginClick = (platform: string) => {
-    alert(`${platform} ๋กœ๊ทธ์ธ ์ค€๋น„์ค‘`);
-    console.log(`${platform} ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ`);
-    setRecentPlatform(platform);
-  };
+  const handleLoginClick = (platform: string) => {
+    if (process.env.NODE_ENV === 'development') {
+      // dev ์ „์šฉ ์•ˆ๋‚ด
+      alert(`${platform} ๋กœ๊ทธ์ธ ์ค€๋น„์ค‘`);
+    }
+    console.info(`[auth] ${platform} ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ`);
+    setRecentPlatform(platform);
+  };

72-103: ๋ฒ„๋ธ” ํฌ์ง€์…”๋‹์€ ๐Ÿ‘ โ€” a11y ๋ณด์™„์€ ๋ณ„๋„ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ฒ€ํ† 

pointer-events-none๋กœ ํด๋ฆญ ๊ฐ„์„ญ์„ ๋ง‰์€ ์  ์ข‹์Šต๋‹ˆ๋‹ค. RecentLoginBubble์— role="status"์™€ aria-live="polite"๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ณด์กฐ๊ธฐ๊ธฐ์— ๋ณต๊ท€ ์‹ ํ˜ธ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌ ์ œ์•ˆ๋“œ๋ฆฝ๋‹ˆ๋‹ค.


9-15: Platform ์‹๋ณ„์ž๋ฅผ ๋ฌธ์ž์—ด ์ƒํƒœ์—์„œ ๋ถ„๋ฆฌํ•˜์—ฌ ์œ ํ˜• ์•ˆ์ „์„ฑ ํ–ฅ์ƒ

๊ฒ€์ฆ ๊ฒฐ๊ณผ, ์ œ์•ˆ๋œ ๋ฆฌํŒฉํ† ๋ง์ด ์ •ํ™•ํ•˜๊ณ  ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ฝ”๋“œ๋Š” ํ•œ๊ตญ์–ด ๋ฌธ์ž์—ด('์นด์นด์˜ค', '๊ตฌ๊ธ€')์„ ์ƒํƒœ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด, ๋ผ๋ฒจ ๋ณ€๊ฒฝ ์‹œ ์ด๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๋ฌธ์ œ:

  • ๋ผ์ธ 9: useState<string | null>(null) - ํƒ€์ž…์ด ๊ณผ๋„ํ•˜๊ฒŒ ๊ด‘๋ฒ”์œ„
  • ๋ผ์ธ 77, 79, 93, 95: ํ•œ๊ตญ์–ด ๋ฌธ์ž์—ด์ด ํ•ธ๋“ค๋Ÿฌ ํ˜ธ์ถœ๊ณผ ์กฐ๊ฑด ๋น„๊ต์— ์ง์ ‘ ์‚ฌ์šฉ๋จ
  • LoginButton.tsx๋Š” ์ด๋ฏธ ID ๊ธฐ๋ฐ˜ ์„ค๊ณ„('kakao' | 'google')๋ฅผ ๋ชจ๋ฒ”์ ์œผ๋กœ ๊ตฌํ˜„ ์ค‘

์ œ์•ˆ๋œ ํ•ด๊ฒฐ์ฑ…(diff ์ฐธ๊ณ ):

+  type PlatformId = 'kakao' | 'google';
+  const [recentPlatform, setRecentPlatform] = useState<PlatformId | null>(null);
+  const labelMap: Record<PlatformId, string> = { kakao: '์นด์นด์˜ค', google: '๊ตฌ๊ธ€' };
-  const handleLoginClick = (platform: string) => {
+  const handleLoginClick = (platform: PlatformId) => {
-    onClick={() => handleLoginClick('์นด์นด์˜ค')}
+    onClick={() => handleLoginClick('kakao')}
-    {recentPlatform === '์นด์นด์˜ค' && (
+    {recentPlatform === 'kakao' && (

์ด ๋ณ€๊ฒฝ์€ LoginButton.tsx์˜ ์„ค๊ณ„ ํŒจํ„ด๊ณผ ์ผ๊ด€๋˜๋ฉฐ, ๋‹ค๋ฅธ ํŒŒ์ผ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ผ๋ฒจ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํ•œ ๊ณณ(labelMap)์—์„œ๋งŒ ์ด๋ฃจ์–ด์ ธ ๋ฒ„๊ทธ ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ž…๋‹ˆ๋‹ค.

src/shared/components/button/AddressCopy.tsx (1)

39-48: ๋ณต์‚ฌ ์‹คํŒจ ์ฝœ๋ฐฑ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€ ๊ถŒ์žฅ

Copy(..., onSuccess, undefined)๋กœ ์‹คํŒจ ์ฒ˜๋ฆฌ ๋ถ€์žฌ. ๋„คํŠธ์›Œํฌ/๊ถŒํ•œ ๋ฌธ์ œ ์‹œ ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ์ฝ˜์†”/ํ† ์ŠคํŠธ๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”.

Apply this diff:

   const handleCopy = () => {
     Copy(
       value,
       () => {
         setCopied(true);
         setTimeout(() => setCopied(false), 1500);
       },
-      undefined,
+      (err) => {
+        console.warn('[AddressCopy] copy failed', err);
+        // TODO: ํ•„์š” ์‹œ ํ† ์ŠคํŠธ/์•Œ๋ฆผ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ˆ๋‚ด
+      },
     );
   };
๐Ÿ“œ Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

๐Ÿ“ฅ Commits

Reviewing files that changed from the base of the PR and between 07d6602 and d8ef795.

๐Ÿ“’ Files selected for processing (3)
  • src/pages/auth/index.tsx (4 hunks)
  • src/shared/components/button/AddressCopy.tsx (3 hunks)
  • src/shared/components/container/Card.tsx (1 hunks)
๐Ÿงฐ Additional context used
๐Ÿงฌ Code graph analysis (2)
src/pages/auth/index.tsx (1)
src/pages/auth/components/LoginButton.tsx (1)
  • LoginButton (33-67)
src/shared/components/button/AddressCopy.tsx (1)
src/shared/lib/utils.ts (1)
  • cn (71-73)
โฐ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build-and-deploy
๐Ÿ”‡ Additional comments (3)
src/shared/components/button/AddressCopy.tsx (3)

9-9: ์ปจํ…Œ์ด๋„ˆ overflow-hidden ์ถ”๊ฐ€๋Š” ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค

๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ์—์„œ ๋‚ด์šฉ ๋„˜์นจ ์ž˜๋ฆผ ์ฒ˜๋ฆฌ์— ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ€์ผ ๋ณ€๊ฒฝ์€ ๋ฌธ์ œ ์—†์–ด ๋ณด์ž…๋‹ˆ๋‹ค.


55-55: w-full ์ „ํ™˜ ์˜ํ–ฅ ๋ฒ”์œ„ ์ ๊ฒ€

๊ณ ์ • ํญ์—์„œ w-full๋กœ ๋ฐ”๋€Œ๋ฉด์„œ ๋ถ€๋ชจ ๋ ˆ์ด์•„์›ƒ์— ๋”ฐ๋ผ ์ค„๋ฐ”๊ฟˆ/์ถ•์•ฝ ํญ์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ฒ˜์—์„œ ์˜๋„๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.


23-28: API ๋ณ€๊ฒฝ ํ˜ธํ™˜์„ฑ ๊ฒ€์ฆ ๊ฒฐ๊ณผ: ๊ธฐ์กด ํ˜ธ์ถœ๋ถ€ ์—†์Œ - ์ถ”๊ฐ€ ๊ฒ€์ฆ ํ•„์š”

AddressCopy ์ปดํฌ๋„ŒํŠธ๋Š” ์ •์˜๋งŒ ์žˆ๊ณ  ํ˜„์žฌ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ์ฒ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค (import/usage ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ 0). ๋”ฐ๋ผ์„œ label โ†’ value API ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ๊ธฐ์กด ํ˜ธ์ถœ๋ถ€์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋นˆ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋ฐฉ์–ด ๋กœ์ง์€ ์—ฌ์ „ํžˆ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค:

  • value๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ผ ๋•Œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„  (disabled ์ƒํƒœ ๋˜๋Š” ํด๋ฐฑ ํ…์ŠคํŠธ)
  • ์˜ˆ์ œ ์ œ์•ˆ์€ ์œ ํšจํ•˜๋‚˜ ํ•„์ˆ˜ ์‚ฌํ•ญ์€ ์•„๋‹˜

ํ™•์ธ ํ•„์š”: ์ด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒˆ๋กœ์šด ๊ฒƒ์ธ์ง€, ๋˜๋Š” ์™„์ „ํžˆ ๊ต์ฒด๋œ ๊ฒƒ์ธ์ง€ ๊ฐœ๋ฐœ์ž ํ™•์ธ ๊ถŒ์žฅ.

Copy link
Copy Markdown
Contributor

@skyblue1232 skyblue1232 left a comment

Choose a reason for hiding this comment

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

๋น ๋ฅธ ์ˆ˜์ • ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!

@KongMezu KongMezu merged commit 827a6d7 into develop Oct 27, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comment ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants