Skip to content

Conversation

@Insung-Jo
Copy link
Contributor

@Insung-Jo Insung-Jo commented Apr 28, 2025

🧩 관련 이슈 번호

✨ 요약

  • 캐러셀 부분 전체적으로 리팩토링 작업 실시했습니다.

📌 주요 변경 사항

  • 캐러셀 코드에서 복잡한 로직 변경했습니다.
  • 캐러셀과 관련된 컴포넌트 부분 수정 했습니다.
  • 화면 크기에 따라서 이미지가 잘리는 현상 수정
  • 화면 크기에 따라서 오버플로우가 일어나던 현상 수정
  • 반응형 수정

✅ 체크리스트

  • PR 하기 전에 이슈에서 빼먹은건 없는지 확인했습니다.
    • 구현 기간에 맞는 이슈에서 서브이슈로 등록했습니다.
    • 라벨 및 마일스톤을 사이드 탭에서 등록했습니다.
    • PR 사이드 탭에서는 Projects을 등록 하지않았습니다.
  • PR을 보내는 브랜치가 올바른지 확인했습니다.
  • 팀원들이 리뷰하기 쉽도록 설명을 자세하게 작성했습니다.
  • 변경사항을 충분히 테스트 했습니다.
  • (함수를 구현 했을 때) JSDoc을 양식에 맞춰서 작성했습니다.
  • 컨벤션에 맞게 구현했습니다.

📷 UI 변경 사항 (선택)

구현 전 구현 후
UI 이미지 UI 이미지

❓무슨 문제가 발생했나요 ?

  • 커서가 오히려 복잡하게 가고 있었던 느낌이네요 흑흑
  • 프론트 어렵네요 (한 입 봐야징)

💬 논의 사항

💬 기타 참고 사항

Summary by CodeRabbit

  • 버그 수정

    • 상태바 이미지가 크레딧 아이콘에서 로고로 변경되었습니다.
    • 남은 일수 갱신 주기가 55초에서 60초로 조정되었습니다.
    • 상태바 텍스트의 폰트 크기가 반응형으로 개선되고 정렬이 향상되었습니다.
  • 스타일

    • 캐러셀, 카드, 모달 입력창 등에서 레이아웃과 버튼, 텍스트, 이미지의 위치 및 크기가 개선되었습니다.
    • 불필요한 주석과 사용되지 않는 애니메이션 코드가 제거되었습니다.
  • 신규 기능

    • 캐러셀의 반응형 동작이 고정된 브레이크포인트 방식으로 단순화되어, 화면 크기에 따라 보여지는 아이템 수가 자동으로 조정됩니다.
  • 리팩터

    • 캐러셀 관련 상수 및 스타일 구조가 정리되고, 네비게이션 버튼의 동작 및 스타일이 개선되었습니다.
    • 모달의 알림 기능이 중앙 집중식 알림 시스템으로 통합되었습니다.
  • 기타

    • 일부 메시지 및 안내 문구가 더 명확하게 변경되었습니다.

- 캐러셀 일부 스타일 변경
- 캐러셀 로직 간소화
- 일부 변수 상수화

# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
@Insung-Jo Insung-Jo added 🐛Fix 버그 수정 ♻️Refactor 리팩토링 💄Style 스타일링 labels Apr 28, 2025
@Insung-Jo Insung-Jo added this to the 2차 구현 기간 milestone Apr 28, 2025
@Insung-Jo Insung-Jo self-assigned this Apr 28, 2025
@Insung-Jo Insung-Jo linked an issue Apr 28, 2025 that may be closed by this pull request
2 tasks
@coderabbitai
Copy link

coderabbitai bot commented Apr 28, 2025

📝 Walkthrough

"""

Walkthrough

이번 변경에서는 Carousel 컴포넌트의 반응형 아이템 뷰 계산 방식이 동적 측정에서 고정된 브레이크포인트 기반 방식으로 단순화되었습니다. Carousel 관련 스타일과 상수 파일이 이에 맞게 수정 및 정리되었으며, Card 컴포넌트의 상태바 이미지와 남은 일수 계산 주기가 변경되었습니다. DonationModal에서는 내부 Alert 상태와 컴포넌트가 제거되고 외부 alert controller를 활용하도록 리팩토링되었으며, 입력 필드와 이미지 위치 및 스타일이 조정되었습니다. 불필요한 스타일 코드와 상수 파일이 삭제 및 교체되었습니다.

Changes

파일(들) 변경 요약
src/components/card/Card.jsx 상태바 이미지 credit.png → logo.png로 변경, 남은 일수 갱신 주기 55,000ms → 60,000ms, useEffect 의존성 배열 변경 및 lint 주석 추가
src/components/card/card.styles.js statusBar에 align-items: center 추가, p 태그 폰트 사이즈를 0.9rem~1.2rem로 반응형 조정
src/components/carousel/Carousel.jsx 컨테이너 측정 기반 뷰 계산 → window.innerWidth 기반 고정 브레이크포인트 방식으로 변경, 내비게이션 및 스타일 로직 단순화, 빈 상태 메시지 및 스타일 변경
src/components/carousel/carousel.styles.js wrapper, carouselTitle, viewportArea 등 반응형 마진/레이아웃 조정, carouselTrack과 navigationButton을 함수형 스타일로 변경, notthingTitle 스타일 추가
src/constants/carousel/carousel.js CAROUSEL 상수 객체(DESKTOP_ITEM_WIDTH, ITEM_GAP, ITEMS_VIEW) 신설 및 export
src/constants/carousel/carouselConstants.js CAROUSEL_CONSTANTS(모바일/데스크탑 너비, gap 등) 상수 파일 삭제
src/constants/carousel/index.js export 대상 및 이름 변경: CAROUSEL_CONSTANTS → CAROUSEL, 소스 파일 변경
src/components/modals/donationModal/DonationModal.jsx 내부 Alert 상태/컴포넌트 제거, 외부 showAlert 함수로 대체, 입력 타입 명시, keydown 핸들러 수정, 이미지 변경, 메시지 변경
src/components/modals/donationModal/donationModal.styles.js 미사용 애니메이션 코드 제거, input 내부 이미지 위치 오른쪽→왼쪽, 패딩 조정, 이미지 크기 축소
src/components/modals/creditChargeModal/index.js 파일 끝에 개행 추가 (기능 변화 없음)

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant DonationModal
    participant AlertController

    User->>DonationModal: 금액 입력 및 후원 요청
    DonationModal->>DonationModal: 입력 검증 및 처리
    alt 성공
        DonationModal->>AlertController: showAlert("투표에 성공했습니다", "success")
    else 실패
        DonationModal->>AlertController: showAlert("투표에 실패했습니다.", "error")
    end
Loading
sequenceDiagram
    participant User
    participant Carousel

    User->>Carousel: 화면 크기 변경(Resize)
    Carousel->>Carousel: window.innerWidth로 itemsView 결정 (1~4개)
    User->>Carousel: Next/Prev 버튼 클릭
    Carousel->>Carousel: currentIndex를 itemsView만큼 증감, 슬라이드 이동
Loading

Possibly related PRs

  • StarSync-FE/StarSync#242: Card 컴포넌트의 남은 일수 useEffect 및 상태 관리 로직을 리팩토링한 PR로, 본 PR의 Card.jsx 변경과 밀접하게 관련됨.
  • StarSync-FE/StarSync#264: creditChargeModal 관련 이미지 및 스타일 변경과 알림 기능 추가를 다룬 PR로, 본 PR과 관련 있음.
  • StarSync-FE/StarSync#231: Carousel 내비게이션 버튼을 별도 컴포넌트로 분리한 PR로, 본 PR의 Carousel 내비게이션 변경과 관련됨.

Suggested reviewers

  • pappaya109

Poem

🐇
새 로고 반짝, 별빛 Carousel
버튼 한 번에 쏙쏙 이동
알림은 밖에서 깔끔하게
스타일도 반응형으로 산뜻하게
오늘도 토끼는 코드 숲을 뛰놀아요!
✨🌟
"""


📜 Recent review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c2c1a3f and 1fb8205.

📒 Files selected for processing (2)
  • src/components/carousel/Carousel.jsx (3 hunks)
  • src/constants/carousel/carousel.js (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/constants/carousel/carousel.js
  • src/components/carousel/Carousel.jsx
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary or @coderabbitai 요약 to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@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: 1

🧹 Nitpick comments (2)
src/components/carousel/carousel.styles.js (1)

65-75: 내비게이션 버튼 스타일이 개선되었습니다.

함수형으로 변경하여 방향에 따라 적절한 위치 스타일을 적용하는 것은 코드 가독성과 유지보수성을 높입니다. backdrop-filter를 사용한 블러 효과와 부드러운 투명도 전환은 시각적 경험을 향상시킵니다.

다만, translateY(-125%)는 컨테이너 크기에 따라 다르게 동작할 수 있으므로, 절대적인 위치 지정(예: top: 50%, transform: translateY(-50%))을 고려해 볼 수 있습니다.

src/components/carousel/Carousel.jsx (1)

12-29: 화면 크기에 따른 아이템 뷰 설정 로직이 개선되었습니다.

윈도우 크기 기반의 브레이크포인트 접근 방식으로 변경한 것은 이전의 복잡한 동적 계산보다 단순하고 이해하기 쉽습니다. 리사이즈 이벤트 리스너의 추가 및 정리도 적절하게 처리되었습니다.

다만, 브레이크포인트 값(1200, 1000)이 하드코딩되어 있어서 다른 상수들과 일관성이 떨어집니다. 이 값들도 CAROUSEL 상수에 추가하는 것이 좋을 것 같습니다.

// src/constants/carousel/carousel.js에 추가
const CAROUSEL = {
  DESKTOP_ITEM_WIDTH: 282,
  ITEM_GAP: 12,
  ITEMS_VIEW: 4,
+  BREAKPOINTS: {
+    LARGE: 1200,
+    MEDIUM: 1000,
+  }
};
// Carousel.jsx에서 사용
const updateItemsView = () => {
-  if (window.innerWidth >= 1200) {
+  if (window.innerWidth >= CAROUSEL.BREAKPOINTS.LARGE) {
    setItemsView(3);
-  } else if (window.innerWidth >= 1000) {
+  } else if (window.innerWidth >= CAROUSEL.BREAKPOINTS.MEDIUM) {
    setItemsView(2);
  } else {
    setItemsView(1);
  }
};
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 62f2833 and df46408.

📒 Files selected for processing (10)
  • src/components/card/Card.jsx (3 hunks)
  • src/components/card/card.styles.js (1 hunks)
  • src/components/carousel/Carousel.jsx (3 hunks)
  • src/components/carousel/carousel.styles.js (3 hunks)
  • src/components/modals/creditChargeModal/index.js (1 hunks)
  • src/components/modals/donationModal/DonationModal.jsx (4 hunks)
  • src/components/modals/donationModal/donationModal.styles.js (2 hunks)
  • src/constants/carousel/carousel.js (1 hunks)
  • src/constants/carousel/carouselConstants.js (0 hunks)
  • src/constants/carousel/index.js (1 hunks)
💤 Files with no reviewable changes (1)
  • src/constants/carousel/carouselConstants.js
🧰 Additional context used
🧬 Code Graph Analysis (3)
src/components/card/card.styles.js (1)
src/styles/responsive.js (1)
  • media (14-14)
src/components/card/Card.jsx (1)
src/utils/format/getDaysRemaining.js (1)
  • getDaysRemaining (23-36)
src/components/carousel/carousel.styles.js (2)
src/styles/responsive.js (1)
  • media (14-14)
src/components/button/arrowButton/arrowButton.styles.js (2)
  • navigationButton (11-34)
  • navigationButton (11-34)
🔇 Additional comments (27)
src/components/modals/creditChargeModal/index.js (1)

1-2: 파일 끝에 개행 추가가 적절합니다.

많은 코드 에디터와 린터가 파일 끝에 개행을 권장하는데, 이는 버전 관리 시스템에서 파일 비교와 병합을 더 쉽게 해주기 때문입니다. 이 작은 변경은 좋은 코딩 관행을 따르고 있습니다.

src/components/card/card.styles.js (2)

102-106: 수직 정렬 추가로 UI가 개선되었습니다.

align-items: center 속성 추가는 상태 바 내 요소들의 수직 정렬을 개선하여 더 세련된 UI를 제공합니다. 이는 새로운 로고 이미지와 함께 더 균형 잡힌 디자인을 만들어 줍니다.


107-115: 반응형 폰트 크기 적용이 잘 되었습니다.

고정된 폰트 크기에서 반응형 접근 방식으로 변경한 것은 훌륭합니다. 미디어 쿼리를 사용하여 다양한 화면 크기에 맞게 폰트 크기를 조정함으로써 다양한 기기에서 더 나은 사용자 경험을 제공할 것입니다.

src/components/card/Card.jsx (4)

3-4: 이미지 변경이 적절합니다.

기존 credit.png에서 logo.png로의 변경은 스타일 개선과 일관성을 위한 좋은 선택입니다. 이미지 변경은 card.styles.js의 스타일 업데이트와 잘 맞습니다.


12-20: useEffect 의존성 배열 변경에 대한 검토가 필요합니다.

의존성 배열이 [data.deadline]에서 []로 변경되었습니다. 이로 인해 data.deadline이 변경되어도 interval이 재설정되지 않을 수 있습니다. 이는 의도적인 변경일 수 있지만, 다음 사항을 고려해보세요:

  1. deadline이 변경되면 interval을 재설정하지 않아도 되는지 확인
  2. getDaysRemaining 함수가 항상 최신 data.deadline 값에 접근할 수 있는지 확인

리렌더링을 최적화하기 위한 변경이라면 적절한 주석을 추가하는 것이 좋습니다.


16-17: 인터벌 시간 증가가 적절합니다.

인터벌 시간을 60000ms(1분)로 설정한 것은 합리적입니다. 남은 일 수 계산은 초 단위로 자주 업데이트할 필요가 없으므로 이 변경은 성능을 향상시킬 수 있습니다.


54-55: 이미지 소스 변경이 적절합니다.

starImg를 사용하는 이미지 소스 변경은 가져오기 변경과 일치하며 UI 일관성을 개선합니다.

src/components/modals/donationModal/donationModal.styles.js (3)

78-79: 입력 필드 패딩 변경이 적절합니다.

패딩을 1.6rem 4rem 1.6rem 1.6rem에서 1.6rem 1.6rem 1.6rem 6rem으로 변경한 것은 이미지가 오른쪽에서 왼쪽으로 이동했기 때문에 적절합니다. 왼쪽 패딩이 증가하여 텍스트와 이미지 간의 충돌을 방지합니다.


102-104: 이미지 위치 변경이 UI 배치를 개선합니다.

이미지를 입력 필드의 오른쪽에서 왼쪽으로 이동한 것은 일반적인 입력 필드 디자인 패턴과 더 잘 일치합니다. 이는 사용자가 입력 필드의 용도를 빠르게 인식하는 데 도움이 됩니다.


105-107: 이미지 크기 조정이 적절합니다.

이미지 크기를 3.6rem에서 3rem으로 줄인 것은 입력 필드 내에서 더 균형 잡힌 모습을 제공합니다. 이로써 이미지가 입력 필드에서 너무 크게 보이지 않도록 하여 UI 일관성을 유지합니다.

src/components/modals/donationModal/DonationModal.jsx (5)

4-4: 불러오기(import) 개선 및 일관성 향상

경고 시스템을 중앙 집중화하여 코드 유지보수성을 향상시키고, 이미지 에셋을 일관되게 사용하는 변경이 좋습니다.

Also applies to: 7-7


42-42: 입력 제한 개선

숫자 입력 필드에서 소수점과 공백 문자를 모두 방지하도록 핸들러가 개선되었습니다. 사용자가 의도하지 않은 입력을 방지할 수 있어 좋은 접근입니다.


58-58: 알림 메시지 변경 및 중앙화

기존의 로컬 알림 상태 관리 대신 중앙화된 showAlert 함수를 사용하여 코드가 간결해졌습니다. 메시지도 "투표"라는 용어를 사용하여 사용자에게 더 친숙하게 변경되었습니다.

하지만 메시지 일관성에 대해 확인이 필요합니다. 컴포넌트는 "후원하기"라는 제목을 사용하는데 알림 메시지는 "투표"라는 용어를 사용하고 있습니다.

사용자에게 표시되는 용어가 일관되게 유지되는지 확인해 주세요. "후원"과 "투표"가 같은 개념을 의미하는지, 아니면 의도적으로 다른 용어를 사용하는 것인지 검토가 필요합니다.

Also applies to: 64-64


84-84: 이미지 자산 변경

크레딧 이미지가 스타 로고로 변경되었습니다. 이는 카드 컴포넌트와의 시각적 일관성을 향상시킨다는 점에서 좋은 변경입니다.


86-86: 입력 필드 타입 명시적 지정

입력 필드에 type="text"를 명시적으로 지정하여 코드 가독성이 향상되었습니다. 이는 좋은 관행입니다.

src/constants/carousel/index.js (1)

1-1: 모듈 내보내기가 업데이트되었습니다.

기존의 CAROUSEL_CONSTANTS 대신 새로운 CAROUSEL 모듈을 내보내는 방식으로 변경하여 전체 리팩토링 방향성에 맞게 업데이트되었습니다.

src/constants/carousel/carousel.js (1)

1-7: 캐러셀 상수가 간결하게 정의되었습니다.

캐러셀 관련 상수 값들이 명확하게 구조화되어 있습니다. 이 접근 방식은 이전의 복잡한 설정보다 훨씬 이해하기 쉽고 유지보수하기 좋습니다.

다만, ITEMS_VIEW 값이 4로 설정되어 있지만 실제 컴포넌트에서는 3, 2, 1로 동적으로 변경되는 부분이 일관성 측면에서 확인이 필요합니다. 상수의 목적이 초기값인지 최대값인지 명확히 하면 더 좋을 것 같습니다.

src/components/carousel/carousel.styles.js (4)

8-10: 반응형 여백 설정이 개선되었습니다.

media 쿼리를 사용하여 각 화면 크기별로 적절한 여백을 설정한 부분이 좋습니다. 사용자 경험을 일관성 있게 유지하면서도 화면 크기에 따라 최적화된 UI를 제공합니다.


24-26: 뷰포트 영역 스타일이 단순화되었습니다.

이전의 복잡한 플렉스 컨테이너 설정에서 단순한 relative 포지셔닝으로 변경된 것은 전체 레이아웃 구조의 단순화에 기여합니다. 이는 절대 위치 지정 방식의 내비게이션 버튼 설정과 함께 잘 작동할 것입니다.


39-53: 캐러셀 트랙의 동적 스타일 적용 방식이 개선되었습니다.

함수형 스타일 컴포넌트로 변경하여 슬라이드 오프셋을 파라미터로 받는 방식은 매우 좋은 접근법입니다. 인라인 CSS 변수를 사용하는 것보다 React의 패턴에 더 적합합니다. 또한 다양한 화면 크기에 따라 트랜지션 시간을 세분화한 것은 사용자 경험 향상에 도움이 됩니다.


77-85: 빈 상태 메시지 스타일이 추가되었습니다.

콘텐츠가 없을 때 표시될 메시지의 스타일이 적절하게 정의되어 있습니다. 중앙 정렬과 여백 설정이 UI의 일관성을 유지하는 데 도움이 됩니다.

src/components/carousel/Carousel.jsx (6)

1-5: 불필요한 의존성이 제거되고 새로운 상수가 추가되었습니다.

useRef가 더 이상 사용되지 않아 제거되었고, 새로운 CAROUSEL 상수를 가져오는 것으로 변경되었습니다. 이는 코드 정리와 모듈화 측면에서 긍정적인 변화입니다.


31-40: 네비게이션 함수가 개선되었습니다.

handleNext와 handlePrev 함수가 고정된 값 대신 itemsView에 따라 증감하도록 변경되어 다양한 화면 크기에서 효율적인 탐색이 가능해졌습니다. 경계 조건 검사도 적절히 수행되고 있습니다.


42-44: 슬라이드 오프셋 계산 방식이 단순화되었습니다.

복잡한 계산 함수 대신 상수를 사용하여 오프셋을 계산하는 방식으로 단순화되었습니다. 이는 코드의 가독성과 유지보수성을 향상시킵니다.


54-59: 스타일 적용 방식이 일관되고 개선되었습니다.

네비게이션 버튼과 캐러셀 트랙에 함수형 스타일을 적용하는 것으로 변경되어, 동적인 스타일 적용이 보다 명확해졌습니다. 이는 코드의 가독성과 유지보수성을 크게 향상시킵니다.


70-71: 빈 상태 메시지가 개선되었습니다.

새로운 스타일을 적용한 빈 상태 메시지 텍스트로 변경되어 사용자에게 더 명확한 정보를 제공합니다.


77-78: 네비게이션 버튼 비활성화 및 스타일 적용 로직이 개선되었습니다.

itemsView를 고려한 비활성화 조건과 방향에 따른 스타일 적용으로 네비게이션 경험이 향상되었습니다. 특히 오른쪽 버튼의 비활성화 조건 변경은 논리적으로 더 정확합니다.

# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
- 컴포넌트 로직 일부 수정
- 스타일 일부 수정
- 상수 수정

# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
Copy link

@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

♻️ Duplicate comments (1)
src/components/carousel/Carousel.jsx (1)

9-9: 초기 itemsView 값이 CAROUSEL.ITEMS_VIEW로 설정되었습니다.

CAROUSEL.ITEMS_VIEW 값이 1로 설정되어 있어 작은 화면 크기에 맞게 초기화됩니다. 이전 리뷰에서 논의된 내용에 따르면, 이는 적절한 초기값 설정입니다.

🧹 Nitpick comments (2)
src/components/carousel/Carousel.jsx (2)

56-56: 네비게이션 버튼 스타일 적용 방식이.개선되었습니다.

navigationButton 스타일 함수에 방향 정보를 전달하는 방식으로 변경되었습니다. false는 왼쪽 버튼을 의미하는 것으로 보입니다.

boolean 대신 'left', 'right'와 같은 명시적인 문자열을 사용하면 코드 가독성이 더 좋아질 수 있습니다:

-          styles={S.navigationButton(false)}
+          styles={S.navigationButton('left')}

79-80: 다음 버튼의 비활성화 조건과 스타일이 업데이트되었습니다.

현재 인덱스에 보여지는 아이템 수를 더한 값이 전체 아이템 길이 이상일 때 다음 버튼이 비활성화되는 조건이 적절합니다. navigationButton 함수에 true를 전달하여 오른쪽 버튼임을 표시하고 있습니다.

앞서 언급한 것처럼, boolean 대신 'right'와 같은 명시적인 문자열을 사용하면 코드 가독성이 더 좋아질 수 있습니다:

-          styles={S.navigationButton(true)}
+          styles={S.navigationButton('right')}
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4da2a08 and 672637e.

📒 Files selected for processing (3)
  • src/components/carousel/Carousel.jsx (3 hunks)
  • src/components/carousel/carousel.styles.js (1 hunks)
  • src/constants/carousel/carousel.js (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/constants/carousel/carousel.js
  • src/components/carousel/carousel.styles.js
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/components/carousel/Carousel.jsx (1)
src/constants/carousel/carousel.js (1)
  • CAROUSEL (1-5)
🔇 Additional comments (7)
src/components/carousel/Carousel.jsx (7)

1-4: import 문이 간결하게 정리되었네요.

React hooks와 CAROUSEL 상수를 직접 가져오는 방식으로 변경하여 코드가 더 명확해졌습니다. 이전 코드에서 사용하던 직접적인 DOM 참조 대신 상수 기반 접근 방식으로 전환한 것이 좋은 선택입니다.


13-31: 반응형 동작이 브레이크포인트 기반으로 개선되었습니다.

화면 너비에 따라 보여줄 아이템 수를 조정하는 로직이 잘 구현되었습니다. 이전에 논의된 대로 화면 크기별로 적절히 아이템 개수가 설정됩니다:

  • 1920px 이상: 4개
  • 1200px 이상 1920px 미만: 3개
  • 1000px 이상 1200px 미만: 2개
  • 1000px 미만: 1개

resize 이벤트 리스너도 적절히 추가/제거되어 메모리 누수를 방지합니다.


34-38: handleNext 함수의 로직이 개선되었습니다.

현재 인덱스에 itemsView를 더해 다음 인덱스를 계산하고, 아이템 길이를 초과하지 않도록 체크하는 로직이 적절합니다. 이로써 보여지는 아이템 수에 따라 정확하게 다음 세트로 이동할 수 있습니다.


41-41: handlePrev 함수가 간결해졌습니다.

한 줄로 정리된 handlePrev 함수는 이전 인덱스에서 itemsView만큼 뺀 값과 0 중 더 큰 값을 선택하여 인덱스가 음수가 되지 않도록 보장합니다. 깔끔한 구현입니다.


45-45: 슬라이드 오프셋 계산이 상수를 활용하도록 개선되었습니다.

하드코딩된 값 대신 CAROUSEL 상수를 사용하여 슬라이드 오프셋을 계산하는 방식으로 변경되었습니다. 이는 코드 가독성과 유지보수성을 높이는 좋은 접근입니다.


58-59: 캐러셀 컨테이너 및 트랙 스타일링이 함수형으로 개선되었습니다.

carouselTrack에 슬라이드 오프셋을 직접 전달하는 방식으로 변경되어 동적 스타일링이 더 깔끔하게 처리됩니다. 이 접근 방식은 styled-components의 장점을 잘 활용하고 있습니다.


72-72: 빈 상태 메시지의 스타일이 개선되었습니다.

이전에는 인라인 스타일을 사용했을 것으로 추정되는데, 이제 notthingTitle이라는 전용 CSS 클래스를 사용하여 스타일을 적용합니다. 이는 스타일 일관성과 관리를 위한 좋은 개선입니다.

# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
Copy link
Contributor

@HarrySeop HarrySeop left a comment

Choose a reason for hiding this comment

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

고생하셨어요! 코드레빗이 얘기한 부분 적용 됐으면 머지해주셔도 좋을 것 같습니다!
그리고 지금 코드레빗이랑 대화하신 부분 사용 예시로 사용해도 괜찮을까요? 이건 이따가 오시면 다시 얘기 하겠습니다

# 커밋 메시지 형식
# <이모지><타입>: <제목> (#이슈 번호)
#
# ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지
# ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat)
# ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요

# ✅ 제목은 커밋의 "무엇"을 나타냅니다
# ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다
# ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분

# 예시:
# ✨Feat: 마이페이지 수정 기능 추가 (#15)

# 커밋 타입 가이드:
# ✨ Feat     : 새로운 기능 추가
# 🐛 Fix      : 버그 수정
# 📦 Chore    : 설정/빌드 수정, 기타 잡일
# 💄 Style    : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경
# 📝 Docs     : 문서 작성 및 수정
# ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
@Insung-Jo Insung-Jo merged commit ed37874 into develop Apr 29, 2025
1 check passed
@github-project-automation github-project-automation bot moved this to Done in StarSync Apr 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐛Fix 버그 수정 ♻️Refactor 리팩토링 💄Style 스타일링

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

♻️Refactor: 캐러셀 리펙토링 작업

3 participants