Skip to content

feat: 로그인 중 로띠 추가#103

Merged
Seojunhwan merged 3 commits intomainfrom
feat/login-lottie
Jul 29, 2025
Merged

feat: 로그인 중 로띠 추가#103
Seojunhwan merged 3 commits intomainfrom
feat/login-lottie

Conversation

@Seojunhwan
Copy link
Member

@Seojunhwan Seojunhwan commented Jul 29, 2025

✅ 이슈 번호

close


🪄 작업 내용 (변경 사항)

  • [x]

📸 스크린샷


💡 설명


🗣️ 리뷰어에게 전달 사항

수빈님 요것 이슈 안 만들고 바로 올릴게요,,!

근데 저희 public 폴더를 사용하지 않는 이유가 있을까요?,,


📍 트러블 슈팅

Summary by CodeRabbit

  • 신규 기능

    • 로그인 콜백 페이지에 Lottie 기반 애니메이션 스피너와 안내 문구가 포함된 개선된 로딩 UI가 적용되었습니다.
  • 기타

    • Lottie 애니메이션을 위한 "lottie-react" 라이브러리가 추가되었습니다.
    • 로그인 스피너용 Lottie 애니메이션 에셋이 추가되었습니다.

@coderabbitai
Copy link

coderabbitai bot commented Jul 29, 2025

Walkthrough

로그인 콜백 페이지의 로딩 UI가 Lottie 애니메이션을 활용한 시각적으로 향상된 레이아웃으로 개선되었습니다. 이를 위해 새로운 Lottie 애니메이션 JSON 파일이 추가되고, 관련 라이브러리(lottie-react)가 의존성에 포함되었습니다. 기존 로그인 로직에는 변경이 없습니다.

Changes

Cohort / File(s) Change Summary
Dependency 업데이트
package.json
"lottie-react"(^2.4.1) 의존성 추가, "framer-motion" 위치 조정
로딩 UI 개선
src/app/(auth)/login/callback/page.tsx
기존 텍스트 기반 로딩을 Lottie 애니메이션 및 스타일링된 텍스트로 대체
애니메이션 에셋 추가
src/assets/login-spinner.json
로그인 로딩용 Lottie 애니메이션 JSON 파일 신규 추가

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant LoginCallbackPage
    participant LottieAnimation

    User->>LoginCallbackPage: 접근 (로그인 콜백)
    LoginCallbackPage->>LottieAnimation: 애니메이션 로드 및 재생
    LoginCallbackPage-->>User: "로그인 중입니다.." 메시지 및 스피너 표시
    LoginCallbackPage->>LoginCallbackPage: 로그인 처리 (기존 로직)
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~7 minutes

Suggested labels

✨ feature

Poem

🥕
로그인 기다림, 이제는 예쁘게
스피너가 빙글빙글, 토끼도 신나게
Lottie가 춤추며 반겨주네
새로운 의존성, 패키지에 살포시
로그인 여정, 한층 더 산뜻하게!
🐇✨

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/login-lottie

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.
    • Explain this complex logic.
    • 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 explain this code block.
    • @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 explain its main purpose.
    • @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 generate unit tests to generate unit tests for 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.

@github-actions
Copy link

🎨 Storybook Preview: https://685a32a1c0bbd269fdb67af4-tdpaxkbxlb.chromatic.com/
🔗 Chromatic Build: https://www.chromatic.com/build?appId=685a32a1c0bbd269fdb67af4&number=148
🕖 Updated at: 2025년 07월 29일 20시 32분 13초

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/app/(auth)/login/callback/page.tsx (2)

52-52: 애니메이션 크기를 반응형으로 개선하는 것을 고려해보세요.

현재 고정 크기(76x76px)로 설정되어 있는데, 다양한 화면 크기에서 일관된 경험을 위해 반응형 크기를 고려해볼 수 있습니다.

- <Lottie animationData={loginSpinner} style={{ width: 76, height: 76 }} />
+ <Lottie 
+   animationData={loginSpinner} 
+   style={{ 
+     width: 'min(76px, 20vw)', 
+     height: 'min(76px, 20vw)' 
+   }} 
+ />

61-62: 로딩 메시지에 접근성 속성 추가를 고려해보세요.

시각적으로 훌륭하지만, 스크린 리더 사용자를 위한 aria-live 속성을 추가하면 더 좋은 접근성을 제공할 수 있습니다.

  <Text
    as='h1'
    typo='title2Md'
    color='text.normal'
-   style={{ fontWeight: 700, textAlign: "center" }}
+   style={{ fontWeight: 700, textAlign: "center" }}
+   aria-live="polite"
  >
    로그인 중입니다..
  </Text>
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 4929051 and 13ef8f9.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • package.json (1 hunks)
  • src/app/(auth)/login/callback/page.tsx (2 hunks)
  • src/assets/login-spinner.json (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
src/**/*.{ts,tsx}

📄 CodeRabbit Inference Engine (.cursor/rules/nextjs-folder-structure.mdc)

All files must use TypeScript.

Files:

  • src/app/(auth)/login/callback/page.tsx
⏰ 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: test
🔇 Additional comments (9)
package.json (2)

31-31: 의존성 재정렬은 문제없습니다.

framer-motion 패키지의 위치 변경은 알파벳 순서 정렬을 위한 것으로 보이며, 기능적 영향은 없습니다.


34-34: lottie-react 패키지 버전 확인 완료: 최신(2.4.1), 보안 이슈 없음

npm view lottie-react version 결과 2.4.1로 package.json에 지정된 ^2.4.1과 일치합니다.
npm audit 결과(잠금 파일 부재로 직접 실행은 불가) 공식 취약점 데이터베이스에는 관련 이슈가 등록되어 있지 않습니다.
추가 검증이 필요하다면 package-lock.json 생성 후 npm audit를 실행해 주세요.

src/app/(auth)/login/callback/page.tsx (3)

3-3: Lottie import가 올바르게 추가되었습니다.

lottie-react 패키지에서 Lottie 컴포넌트를 정확히 import하고 있습니다.


8-10: 필요한 컴포넌트들이 적절히 import되었습니다.

로그인 스피너 애니메이션 데이터와 UI 컴포넌트들이 올바르게 import되었습니다.


45-73: 사용자 경험이 크게 개선되었습니다.

기존의 단순한 로딩 표시를 시각적으로 매력적인 Lottie 애니메이션과 명확한 텍스트로 교체한 것은 훌륭한 개선입니다. 전체 뷰포트 높이를 사용한 중앙 정렬 레이아웃도 적절합니다.

src/assets/login-spinner.json (4)

1-6: Lottie 애니메이션 기본 설정이 적절합니다.

300x300 크기와 @lottiefiles/creator로 생성된 애니메이션은 표준적인 설정입니다. 메인 씬 구조도 올바릅니다.


294-296: 애니메이션 성능 설정이 적절합니다.

25fps와 79프레임(약 3.16초)의 애니메이션 길이는 로딩 스피너로 적절하며, 무한 반복에 적합한 길이입니다.


7-148: 첫 번째 레이어 구성이 올바릅니다.

두 번째 아이콘 레이어(icon 2)가 39-79프레임에서 실행되며, 회전과 trim path 애니메이션이 적절히 설정되어 있습니다.


149-291: 두 번째 레이어 구성이 올바릅니다.

첫 번째 아이콘 레이어(icon)가 0-40프레임에서 실행되어 부드러운 연속 애니메이션을 만들어냅니다.

"ml": 10,
"o": { "a": 0, "k": 100, "ix": 4 },
"w": { "a": 0, "k": 8, "ix": 5 },
"c": { "a": 0, "k": [1, 0.4353, 0.0588], "ix": 3 }
Copy link

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

애니메이션 색상이 브랜드와 일치하는지 확인해보세요.

두 레이어 모두 동일한 오렌지색([1, 0.4353, 0.0588])을 사용하고 있습니다. 이 색상이 프로젝트의 브랜드 색상과 일치하는지 확인해 주세요.

프로젝트의 색상 시스템을 확인하여 이 색상이 적절한지 검토해 주세요:

Also applies to: 239-239


🏁 Script executed:

#!/bin/bash
# 프로젝트에서 사용되는 색상 변수들 확인
rg -r '$1' 'color.*=.*["\']([^"\']*)["\']' --only-matching src/ | head -20
rg -r '$1' '(#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3})' --only-matching src/ | head -20

Length of output: 257


색상 변수 검색 스크립트 수정 및 재실행 요청

이전 스크립트에서 발생한 문법 오류를 수정했습니다. 아래 스크립트를 실행해 프로젝트 전반에 정의된 색상 변수와 헥스 코드를 추출한 뒤, [1, 0.4353, 0.0588](≈ #? )이 브랜드 색상과 일치하는지 검토해 주세요.

위 결과에서 브랜드 색상과 일치하는 헥스 코드(또는 RGB 값)를 확인해 주세요.
특히 Lottie 애니메이션에서 사용된 [1, 0.4353, 0.0588]이 브랜드 가이드와 동일한지 검증이 필요합니다.


🏁 Script executed:

#!/bin/bash
# CSS/SCSS 변수 패턴
rg --only-matching '^\s*\$[a-zA-Z0-9_-]+:\s*#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})' -h src/ | head -20
# JS/TS 상수 패턴
rg --only-matching "const\s+[A-Z0-9_]+(?:Color)?\s*=\s*['\"]#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})['\"]" -h src/ | head -20
# JSON·JSX 등 범용 hex 코드
rg --only-matching '#[0-9a-fA-F]{6}\b' -h src/ | sort | uniq | head -20

Length of output: 2878


색상 변수 검색 스크립트 수정 및 재실행 안내

이전 스크립트에 -h 옵션이 잘못 포함되어 도움말이 출력되었습니다. 아래와 같이 -h를 제거하고 재실행해 주세요.

위 결과에서 Lottie 애니메이션 색상 [1, 0.4353, 0.0588]에 대응하는 #FF6F0F(≈255,111,15)가 브랜드 색상 변수나 상수로 정의되어 있는지 검토해 주세요.


🏁 Script executed:

#!/bin/bash
# 1) SCSS 변수에서 헥스 코드 추출
rg --only-matching '^\s*\$[A-Za-z0-9_-]+:\s*#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})' src/ --no-filename | head -20

# 2) JS/TS 상수에서 헥스 코드 추출
rg --only-matching "const\s+[A-Z0-9_]+(?:Color)?\s*=\s*['\"]#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})['\"]" src/ --no-filename | head -20

# 3) 프로젝트 전반에 사용된 모든 헥스 코드 확인
rg --only-matching '#[0-9A-Fa-f]{6}\b' src/ --no-filename | sort | uniq | head -20

Length of output: 493


Lottie 애니메이션 색상 브랜드 변수화 필요

현재 Lottie JSON(src/assets/login-spinner.json) 97, 239번 라인에서 사용된 RGBA [1, 0.4353, 0.0588] (≈ #FF6F0F)는 코드베이스 내 SCSS 변수나 JS 상수로 정의되어 있지 않습니다.
브랜드 색상인 경우 아래 작업을 권장드립니다:

  • 브랜드 가이드 확인 후 #FF6F0F이 공식 브랜드 오렌지인지 확정
  • SCSS 변수(예: $brand-orange: #FF6F0F;) 또는 JS 상수(예: export const BRAND_ORANGE = '#FF6F0F';)로 정의
  • Lottie JSON에서 직접 하드코딩된 [1,0.4353,0.0588] 값을 정의한 변수/상수를 참조하도록 로딩 로직 개선 또는 JSON 덮어쓰기

위 작업 후, 애니메이션 색상이 브랜드 가이드와 일치하는지 최종 검증 부탁드립니다.

🤖 Prompt for AI Agents
In src/assets/login-spinner.json at lines 97 and 239, the color value [1,
0.4353, 0.0588] (approx #FF6F0F) is hardcoded and not linked to any SCSS
variable or JS constant. Verify if #FF6F0F is the official brand orange, then
define it as a SCSS variable (e.g., $brand-orange) or a JS constant (e.g.,
BRAND_ORANGE). Modify the Lottie JSON loading logic or apply JSON overrides so
the animation color references this variable/constant instead of the hardcoded
array. Finally, confirm the animation color matches the brand guidelines.

Copy link
Contributor

@wkdtnqls0506 wkdtnqls0506 left a comment

Choose a reason for hiding this comment

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

수고하셨습니다~!👍🏻👍🏻👍🏻

@wkdtnqls0506
Copy link
Contributor

오 준환님 코멘트 이제 봤습니다!
저희 지금 public 폴더 사용하고 있지 않나유?!

@Seojunhwan
Copy link
Member Author

@wkdtnqls0506 에셋들이 src 안에 있어서,,! 아ㅏ아이콘이라 저기에 있어야 쓸 수 있나욥 (잘 모름)

@Seojunhwan Seojunhwan merged commit 227675e into main Jul 29, 2025
7 checks passed
@Seojunhwan Seojunhwan deleted the feat/login-lottie branch July 29, 2025 23:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants