Skip to content

Comments

[feature] 소개페이지 임시 이미지로 대체 및 메뉴바 구현#366

Merged
seongwon030 merged 27 commits intodevelop-fefrom
feature/#365-alter-introduce-page-FE-100
May 9, 2025
Merged

[feature] 소개페이지 임시 이미지로 대체 및 메뉴바 구현#366
seongwon030 merged 27 commits intodevelop-fefrom
feature/#365-alter-introduce-page-FE-100

Conversation

@seongwon030
Copy link
Member

@seongwon030 seongwon030 commented May 2, 2025

#️⃣연관된 이슈

ex) #365

📝작업 내용

소개페이지 이미지 적용

  • 소개페이지 컴포넌트 및 스타일 1d73cf6
  • 라우터 0c28e82
  • 네비게이션 3260145
  • 기존 헤더 스타일 상속 및 max-width: none 설정 e2e3125

스피너 구현

  • png라 너무 오래 걸려 임시로 스피너 구현했습니다.

메뉴바 구현

2025-05-06.20.04.53.mov
  • 모바일 메뉴바 서비스 로직 분리 410575e

중점적으로 리뷰받고 싶은 부분(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

논의하고 싶은 부분(선택)

🫡 참고사항

Summary by CodeRabbit

Summary by CodeRabbit

  • 신규 기능

    • "모아동 소개" 버튼 클릭 시 소개 페이지(/introduce)로 이동하는 기능이 추가되었습니다.
    • 새로운 소개 페이지가 추가되어, 소개 이미지를 전체 화면에 표시하고 로딩 중에는 스피너가 보여집니다.
    • 로딩 상태를 표시하는 원형 스피너 컴포넌트가 도입되었습니다.
    • 모바일 메뉴에 "모아동 소개" 항목이 포함된 슬라이드 아웃 메뉴가 추가되어 접근성이 향상되었습니다.
  • 스타일

    • 소개 이미지를 가로로 넓게 보여주는 새로운 스타일이 적용되었습니다.
    • 소개 페이지의 헤더와 푸터 스타일이 조정되었습니다.
    • 모바일 메뉴 드로어의 시각적 스타일과 애니메이션이 추가되었습니다.

@seongwon030 seongwon030 added ✨ Feature 기능 개발 💻 FE Frontend labels May 2, 2025
@seongwon030 seongwon030 requested a review from oesnuj May 2, 2025 06:22
@seongwon030 seongwon030 self-assigned this May 2, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented May 2, 2025

"""

Walkthrough

이번 변경 사항에서는 소개 페이지(IntroducePage)가 새로 추가되었습니다. IntroducePage 컴포넌트와 스타일 파일이 생성되었고, 해당 컴포넌트는 이미지를 보여주는 역할을 합니다. 라우터에 /introduce 경로가 등록되어 이 페이지로의 이동이 가능해졌습니다. 헤더의 "모아동 소개" 버튼은 외부 링크에서 내부 라우팅으로 전환되었으며, 버튼 클릭 시 /introduce 페이지로 이동하도록 서비스 로직이 수정되었습니다.

Changes

파일/경로 그룹 변경 요약
frontend/src/pages/IntroducePage/IntroducePage.tsx,
frontend/src/pages/IntroducePage/IntroducePage.styles.ts
IntroducePage 컴포넌트 및 스타일 파일 추가, 소개 이미지를 렌더링
frontend/src/components/common/Spinner/Spinner.tsx 로딩 스피너 컴포넌트 추가
frontend/src/App.tsx /introduce 경로에 대한 라우트 추가, IntroducePage 연결
frontend/src/components/common/Header/Header.tsx,
frontend/src/components/common/Header/Header.styles.ts
"모아동 소개" 버튼을 외부 링크에서 내부 라우팅 버튼으로 변경, 모바일 메뉴 드로어 추가 및 상태 관리 기능 구현
frontend/src/services/header/useHeaderService.ts goIntroducePage 함수에서 /introduce로 네비게이션 추가
frontend/src/services/header/useMobileMenu.ts 모바일 메뉴 상태 관리용 커스텀 훅 useMobileMenu 추가
frontend/.prettierrc bracketSameLine 설정 제거 및 파일 끝에 개행 추가

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Header
    participant useHeaderService
    participant Router
    participant IntroducePage

    User->>Header: "모아동 소개" 버튼 클릭
    Header->>useHeaderService: handleIntroduceClick()
    useHeaderService->>Router: navigate('/introduce')
    Router->>IntroducePage: Render IntroducePage
    IntroducePage->>User: 소개 이미지 표시
Loading

Assessment against linked issues

Objective Addressed Explanation
소개 페이지를 이미지로 대체 (FE-100)

Possibly related PRs

Suggested labels

🎨 Design

Suggested reviewers

  • oesnuj
  • uuhagyeong
    """

Tip

⚡️ Faster reviews with caching
  • CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.

Enjoy the performance boost—your workflow just got faster.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4df930d and eb3d510.

📒 Files selected for processing (1)
  • frontend/src/pages/IntroducePage/IntroducePage.styles.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • frontend/src/pages/IntroducePage/IntroducePage.styles.ts
✨ Finishing Touches
  • 📝 Generate Docstrings

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
🪧 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.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

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 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.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

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.

@netlify
Copy link

netlify bot commented May 2, 2025

Deploy Preview for moadong ready!

Name Link
🔨 Latest commit eb3d510
🔍 Latest deploy log https://app.netlify.com/sites/moadong/deploys/681da8fb68a4400008f30d10
😎 Deploy Preview https://deploy-preview-366--moadong.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 42
Accessibility: 87
Best Practices: 92
SEO: 92
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify site configuration.

coderabbitai[bot]

This comment was marked as outdated.

@seongwon030 seongwon030 linked an issue May 2, 2025 that may be closed by this pull request
3 tasks
coderabbitai[bot]

This comment was marked as outdated.

Copy link
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: 1

♻️ Duplicate comments (1)
frontend/src/pages/IntroducePage/IntroducePage.styles.ts (1)

8-13: 이미지 반응형 처리 및 스크롤 관련 개선사항

이미지 스타일링에 관한 몇 가지 개선점이 있습니다:

  1. 100vw는 스크롤바가 있을 때 가로 스크롤을 발생시킬 수 있습니다. width: 100%로 변경하는 것이 좋습니다.
  2. 헤더 높이(62px)가 하드코딩되어 있습니다. 헤더 높이가 변경될 경우 여기도 수정해야 합니다. CSS 변수나 상수를 사용하는 것이 좋습니다.
  3. 모바일 환경에서 헤더는 사라지지만 이미지 마진은 그대로입니다. 반응형 대응이 필요합니다.
export const IntroduceImage = styled.img`
-  width: 100vw;
+  width: 100%;
  height: auto;
  object-fit: cover;
  margin-top: 62px;
+  
+  @media (max-width: 500px) {
+    margin-top: 0;
+  }
`;
🧹 Nitpick comments (1)
frontend/src/pages/IntroducePage/IntroducePage.styles.ts (1)

1-6: 패턴 일관성: Header 스타일 확장에 대한 고려사항

IntroducePageHeaderHeaderStyles를 확장하여 max-width: none으로 설정한 것은 목적에 맞는 접근법입니다. 그러나 이 변경으로 인해 전체 애플리케이션의 일관된 스타일링 패턴에서 벗어날 수 있습니다.

또한 HeaderStyles가 변경될 경우(예: 높이, 여백 등) 이 컴포넌트에도 영향을 줄 수 있으므로 유의해야 합니다.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 291d45f and e2e3125.

📒 Files selected for processing (2)
  • frontend/src/pages/IntroducePage/IntroducePage.styles.ts (1 hunks)
  • frontend/src/pages/IntroducePage/IntroducePage.tsx (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • frontend/src/pages/IntroducePage/IntroducePage.tsx
🧰 Additional context used
🧬 Code Graph Analysis (1)
frontend/src/pages/IntroducePage/IntroducePage.styles.ts (1)
frontend/src/components/common/Header/Header.styles.ts (1)
  • HeaderStyles (3-18)

@seongwon030 seongwon030 changed the title [feature] 소개페이지 이미지로 대체 [feature] 소개페이지 임시 이미지로 대체 May 3, 2025
coderabbitai[bot]

This comment was marked as outdated.

coderabbitai[bot]

This comment was marked as outdated.

coderabbitai[bot]

This comment was marked as outdated.

@seongwon030 seongwon030 changed the title [feature] 소개페이지 임시 이미지로 대체 [feature] 소개페이지 임시 이미지로 대체 및 메뉴바 구현 May 6, 2025
Copy link
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

🧹 Nitpick comments (4)
frontend/src/services/header/useMobileMenu.ts (4)

12-15: openMenu 함수 이름과 기능의 불일치

openMenu 함수명은 메뉴를 여는 동작을 의미하지만, 실제로는 토글 기능을 수행합니다. 함수 이름과 동작이 일치하도록 수정하는 것이 좋습니다.

-  const openMenu = () => {
+  const toggleMenu = () => {
     handleMenuClick();
     setIsMenuOpen((prev) => !prev);
   };

또는 실제로 '열기' 동작만 수행하도록 변경:

-  const openMenu = () => {
+  const openMenu = () => {
     handleMenuClick();
-    setIsMenuOpen((prev) => !prev);
+    setIsMenuOpen(true);
   };

22-28: 이벤트 리스너 정리 함수 개선

현재 코드는 항상 이벤트 리스너를 제거하려고 시도합니다. 이벤트 리스너가 추가된 경우에만 제거하도록 정리 함수를 개선하는 것이 더 안전합니다.

  useEffect(() => {
    const handleEsc = (e: KeyboardEvent) => {
      if (e.key === 'Escape') closeMenu();
    };
    if (isMenuOpen) window.addEventListener('keydown', handleEsc);
-   return () => window.removeEventListener('keydown', handleEsc);
+   return () => {
+     if (isMenuOpen) window.removeEventListener('keydown', handleEsc);
+   };
  }, [isMenuOpen, closeMenu]);

17-20: Mixpanel 이벤트 이름 개선

현재 closeMenu 함수에서 추적하는 이벤트 이름이 특정 UI 요소(삭제 버튼)에 한정되어 있습니다. 그러나 이 함수는 Escape 키를 통해서도 호출될 수 있습니다. 이벤트 이름을 더 일반적으로 변경하거나, 호출 맥락에 따라 다른 이벤트를 추적하는 것이 좋습니다.

  const closeMenu = useCallback(() => {
    setIsMenuOpen(false);
-   trackEvent('Mobile Menubar delete Button Clicked');
+   trackEvent('Mobile Menu Closed');
  }, []);

30-30: 반환 객체 확장 제안

현재 훅은 기본적인 기능만 제공합니다. 필요에 따라 메뉴 상태를 직접 설정하는 함수나 토글 함수를 별도로 제공하는 것도 고려해볼 수 있습니다.

-  return { isMenuOpen, openMenu, closeMenu };
+  return { 
+    isMenuOpen, 
+    openMenu, 
+    closeMenu,
+    setMenuState: setIsMenuOpen 
+  };
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c2a4ed8 and 410575e.

📒 Files selected for processing (2)
  • frontend/src/components/common/Header/Header.tsx (4 hunks)
  • frontend/src/services/header/useMobileMenu.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • frontend/src/components/common/Header/Header.tsx
🔇 Additional comments (1)
frontend/src/services/header/useMobileMenu.ts (1)

1-33: 잘 구현된 모바일 메뉴 훅 코드입니다.

전체적으로 모바일 메뉴의 상태 관리와 키보드 접근성을 고려한 훌륭한 구현입니다.

Copy link
Member

@oesnuj oesnuj left a comment

Choose a reason for hiding this comment

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

모바일 헤더에 스피너까지 완성도 있네요 ㅎㅎ
수고하셨습니다 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💻 FE Frontend ✨ Feature 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] FE-100 소개 페이지 이미지로 대체 및 메뉴바 구현

2 participants