Skip to content

Comments

Feat: global layout 설정 및 nav-home 구현#66

Merged
seueooo merged 53 commits intodevelopfrom
feature/add-global-layout-home-nav/#61
Jul 14, 2025
Merged

Feat: global layout 설정 및 nav-home 구현#66
seueooo merged 53 commits intodevelopfrom
feature/add-global-layout-home-nav/#61

Conversation

@seueooo
Copy link
Contributor

@seueooo seueooo commented Jul 13, 2025

📌 Summary

📚 Tasks

  • global.css, reset.css 설정
  • global layout 설정
  • sprinkle-container 컴포넌트 구현, 전역 레이아웃에 적용, 스토리 작성
  • nav-home 구현
  • 수정된 타이포/컬러 시스템 반영
  • screen, z-index, gradient 토큰 추가

👀 To Reviewer

⓵ breakpoint에 따른 screen token 추가

디자인 요구사항에 따른 breakpoint는 다음과 같습니다.

  • 홈 - 1200px, 800px
  • 나머지 페이지 - 800px

선언적으로 미디어쿼리 적용할 수 있게끔 screen token 추가했어요. 대부분의 페이지가 800이 기준이라, 아래와 같이 md(800px 이상)일 때 스타일을 적용해주시면 됩니다.

gap: "0.8rem",
...screen.md({
    gap: "1.6rem",
  }),

⓶ 수정된 타이포/컬러 시스템 반영 및 폰트사이즈 반응형 대응

  • 수정된 타이포그래피 및 컬러 시스템을 모두 추가했습니다.
    토큰 단에서 미디어쿼리를 적용하여 반응형 폰트 사이즈도 이미 반영해두었으니, 스타일 작성 시 폰트 반응형은 신경 쓰지 않으셔도 됩니다!
  • 피그마에 그라디언트 색상이 변수명 없이 올라와 있어, 임의로 변수명을 지정했습니다.
    그라디언트 색상 종류가 많고 미세한 차이가 있으니, 적용 시 실제 색상과 맞는지 꼭 확인해주세요!
  • 기존 createGlobalTheme 방식에서 createTheme 방식으로 토큰 관리를 변경했습니다!
    screen 토큰은 미디어 쿼리 함수가 포함되어 있어 createTheme에 포함시키기 어려워 별도로 export했습니다. 토큰 사용할 때 themevars import 후 사용할 토큰에 접근해서 사용하시면 될 것 같아요. (screen 토큰은 따로 import 필요)

⓷ sprinkle-container 컴포넌트 구현

  • 모든 페이지 배경에 전역으로 적용되는 반짝이 인터렉션 구현하고 적용했습니다. storybook으로 확인 가능합니다

⓸ nav-home 구현

  • 홈, 탐색, 내캡슐, 설정 페이지에서 쓰이는 헤더부분 nav바 컴포넌트를 구현했습니다. nav-home이 쓰이는 페이지들을 (main)폴더에 그룹핑하고 하나의 레이아웃 파일로 관리하도록 했습니다.
  • 디자인 기준 nav가 총 3개인데, ui와 용도가 모두 달라 nav-home, nav-detail, nav-back 각각 구현하면 될 것 같습니다. (네이밍은 계속 고민하다가 프레이머에 분류된 기준대로 했습니다..!)

스토리북, 테스트 코드 관련..

  • 스토리북 foundation (폰트 , 컬러, 아이콘)을 먼저 설정해야 할 것 같은데 이 pr에선 해당 작업 제외하겠습니다..
  • 저희 26일날 해커톤 데모시연을 목표로 빨리 뷰를 쳐내고, UT 이전에 버그 확인용 e2e 테스트를 한번에 진행하는게 어떤가 싶어요.. 프레이머도 처음이고 반응형도 다 구현해야되다보니 생각보다 시간이 좀 걸릴거같아, 뷰 우선해서 작업하는 게 좋을 것 같아요!
  • 추후 여유가 생기면 스토리북, 테스트를 보완할 예정이며, 이번 PR은 빠른 진행을 위해 양해 부탁드립니다 🙇‍♀️ (이번주 정처기만 끝나면 달릴 것..)

추가적인 설명이 필요한 부분 편하게 물어봐주세요!

Summary by CodeRabbit

Summary by CodeRabbit

  • 신규 기능

    • 반응형 내비게이션 헤더(NavHome) 및 토글 가능한 메뉴 추가
    • SprinkleContainer 컴포넌트로 애니메이션 효과 제공
    • 새로운 "explore", "my", "setting" 페이지 및 메인 레이아웃 도입
    • Storybook에 문서화 애드온 및 새로운 컴포넌트 스토리 추가
    • 햄버거 메뉴 버튼 컴포넌트 및 애니메이션 추가
    • SVG 파일을 React 컴포넌트로 사용 가능하도록 타입 선언 추가
  • 스타일

    • 글로벌 및 리셋 CSS, 테마, 색상, 텍스트, z-index 토큰 등 디자인 시스템 전반 개선
    • 반응형 및 접근성 향상된 내비게이션/버튼 스타일 추가
  • 버그 수정

    • 더미 테스트로 CI 오류 방지
  • 문서화

    • SVG 타입 선언 및 Storybook 문서화 강화
  • 기타

    • 앱 타이틀을 "Lettie"로 변경
    • 코드 스타일 및 VSCode 자동 정리 설정 업데이트
    • 리뷰 스타일을 ‘chill’로 변경

@seueooo seueooo requested a review from seung365 as a code owner July 13, 2025 19:53
@coderabbitai
Copy link

coderabbitai bot commented Jul 13, 2025

Walkthrough

이번 변경에서는 전체적으로 글로벌 스타일 시스템과 테마 구조를 재정비하고, 내비게이션 컴포넌트와 스프링클 애니메이션 UI를 추가했으며, Storybook 및 VSCode 설정, 테스트 코드, 타입 선언 등 개발 환경도 개선되었습니다. 또한, 기존 About 페이지를 제거하고, 메인 레이아웃 및 라우팅 구조를 확장했습니다.

Changes

파일/경로 그룹 변경 요약
.storybook/main.ts, package.json Storybook에 addon-docs 추가 및 Storybook 버전 업데이트, motion 라이브러리 추가
.storybook/preview.tsx, shared/ui/sprinkle-container/sprinkle-container.stories.tsx Storybook 프리뷰 설정 및 신규 SprinkleContainer 컴포넌트 스토리 추가, 글로벌 스타일 적용
.vscode/settings.json Biome 코드 액션 항상 실행하도록 설정 변경
.coderabbit.yaml 리뷰 프로필을 'assertive'에서 'chill'로 변경
app/layout.tsx, shared/styles/base/global.css.ts, shared/styles/base/theme.css.ts 글로벌/리셋 CSS 및 테마 클래스 적용, 레이아웃 구조 개선, 글로벌 스타일 확장
app/page.tsx, shared/ui/nav-home/nav-home.tsx, shared/ui/nav-home/nav-home.css.ts 내비게이션 컴포넌트 도입, 기존 Link 구조 제거, 반응형 내비 스타일 추가
app/about/page.tsx, tests/example.spec.ts About 페이지 및 관련 테스트 제거, 더미 테스트로 대체
app/(main)/layout.tsx, app/(main)/explore/page.tsx, app/(main)/my/page.tsx, app/(main)/setting/page.tsx 메인 레이아웃 및 신규 페이지(탐색, 내 캡슐, 설정) 추가
shared/ui/sprinkle-container/sprinkle-container.tsx, shared/ui/sprinkle-container/sprinkle-container.css.ts 스프링클 애니메이션 컴포넌트 및 스타일 추가
shared/styles/tokens/color.css.ts, shared/styles/tokens/color.ts 컬러 토큰 구조를 객체 기반으로 변경, 글로벌 테마 생성 방식 변경
shared/styles/tokens/text.ts 텍스트 토큰을 객체 기반으로 리팩토링, 반응형 폰트 적용, 캡션 스타일 추가/수정
shared/styles/tokens/screen.ts, shared/styles/tokens/z-index.ts 반응형 미디어 쿼리 및 z-index 토큰 신규 추가
shared/types/svg.d.ts SVG를 React 컴포넌트로 임포트 가능하도록 타입 선언 추가
shared/ui/button/Button.stories.ts 스토리북 스토리 타이틀 변경("Example/Button" → "UI/Button")
shared/ui/hamburger-menu-button/hamburger-menu-button.tsx, shared/ui/hamburger-menu-button/hamburger-menu-button.css.ts, shared/ui/hamburger-menu-button/hamburger-menu-button.stories.tsx 햄버거 메뉴 버튼 컴포넌트 및 스타일, 스토리북 스토리 추가

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant NavHome
    participant NextRouter

    User->>NavHome: 햄버거 메뉴 버튼 클릭
    NavHome->>NavHome: isMenuOpen 상태 토글
    NavHome-->>User: 메뉴 오픈/클로즈 UI 반영

    User->>NavHome: 메뉴 내 링크 클릭
    NavHome->>NextRouter: Link를 통한 라우팅
    NavHome->>NavHome: isMenuOpen=false로 메뉴 닫기
Loading
sequenceDiagram
    participant App
    participant SprinkleContainer
    participant motion

    App->>SprinkleContainer: 컴포넌트 렌더링
    SprinkleContainer->>motion: 각 dot에 애니메이션 적용
    motion-->>SprinkleContainer: fade-in/out 반복 애니메이션
Loading

📜 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 bc6eeb5 and 5002000.

📒 Files selected for processing (2)
  • shared/styles/tokens/screen.ts (1 hunks)
  • shared/styles/tokens/text.ts (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • shared/styles/tokens/screen.ts
  • shared/styles/tokens/text.ts
⏰ 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). (2)
  • GitHub Check: deploy
  • GitHub Check: test
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/add-global-layout-home-nav/#61

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

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

github-actions bot commented Jul 13, 2025

🚀 Storybook 배포

📖 Storybook: https://683d91ab23651aa0b399e435-liomxrkacb.chromatic.com/
🔗 Chromatic Build: https://www.chromatic.com/build?appId=683d91ab23651aa0b399e435&number=60
✅ Status: success

@github-actions
Copy link

This pull request (commit 67eb5b6) has been deployed to Vercel ▲ - View GitHub Actions Workflow Logs

Name Link
🌐 Unique https://time-capsule-lrv57bi3c-hs-projects-b4a69d5f.vercel.app
🔍 Inspect https://vercel.com/hs-projects-b4a69d5f/time-capsule/DWeFieJ9MzVSdyLXNGkVPsXQqr8v

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: 21

♻️ Duplicate comments (2)
app/explore/page.tsx (1)

5-8: 중복 레이아웃/스타일 추출 권장
app/my/page.tsx 코멘트 참고.

app/setting/page.tsx (1)

5-8: 중복 레이아웃/스타일 추출 권장
app/my/page.tsx 코멘트 참고.

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between ce70809 and 67eb5b6.

⛔ Files ignored due to path filters (2)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • shared/assets/svgs/search.svg is excluded by !**/*.svg
📒 Files selected for processing (24)
  • .storybook/main.ts (1 hunks)
  • .storybook/preview.tsx (1 hunks)
  • .vscode/settings.json (1 hunks)
  • app/about/page.tsx (0 hunks)
  • app/explore/page.tsx (1 hunks)
  • app/layout.tsx (2 hunks)
  • app/my/page.tsx (1 hunks)
  • app/page.tsx (1 hunks)
  • app/setting/page.tsx (1 hunks)
  • package.json (2 hunks)
  • shared/styles/base/global.css.ts (1 hunks)
  • shared/styles/tokens/color.css.ts (0 hunks)
  • shared/styles/tokens/color.ts (1 hunks)
  • shared/styles/tokens/index.ts (1 hunks)
  • shared/styles/tokens/screen.ts (1 hunks)
  • shared/styles/tokens/text.ts (2 hunks)
  • shared/styles/tokens/z-index.ts (1 hunks)
  • shared/ui/button/Button.stories.ts (1 hunks)
  • shared/ui/nav-home/nav-home.css.ts (1 hunks)
  • shared/ui/nav-home/nav-home.tsx (1 hunks)
  • shared/ui/sprinkle-container/sprinkle-container.css.ts (1 hunks)
  • shared/ui/sprinkle-container/sprinkle-container.stories.tsx (1 hunks)
  • shared/ui/sprinkle-container/sprinkle-container.tsx (1 hunks)
  • tests/example.spec.ts (1 hunks)
💤 Files with no reviewable changes (2)
  • app/about/page.tsx
  • shared/styles/tokens/color.css.ts
🧰 Additional context used
🧬 Code Graph Analysis (4)
shared/ui/sprinkle-container/sprinkle-container.stories.tsx (1)
shared/styles/tokens/color.ts (1)
  • colorTheme (1-62)
app/layout.tsx (1)
shared/styles/base/global.css.ts (1)
  • rootStyle (28-37)
shared/ui/nav-home/nav-home.tsx (1)
shared/utils/cn.ts (1)
  • cn (3-5)
shared/styles/base/global.css.ts (1)
shared/styles/tokens/color.ts (1)
  • colorTheme (1-62)
🪛 GitHub Check: build
shared/ui/nav-home/nav-home.tsx

[failure] 3-3:
Cannot find module '@/shared/assets/svgs/search.svg' or its corresponding type declarations.

🪛 GitHub Actions: Build Check
shared/ui/nav-home/nav-home.tsx

[error] 3-3: TypeScript error TS2307: Cannot find module '@/shared/assets/svgs/search.svg' or its corresponding type declarations.

⏰ 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 (17)
.vscode/settings.json (1)

3-4: 자동 저장 시 Biome 포맷팅 설정 – 팀 합의 및 성능 확인 권장

현재 .vscode/settings.json에 아래 옵션이 항상 적용되도록 설정되어 있습니다:

"source.organizeImports.biome": "always",
"source.fixAll.biome": "always"
  • 프로젝트에 Prettier 설정 파일이나 package.json 내 Prettier 키가 없어 다른 포매터와 충돌 가능성은 낮습니다.
  • 다만, 대용량 파일 편집 후 저장 시 자동 포맷으로 인한 지연이 발생할 수 있으니 실제 대형 파일에서 성능 저하 여부를 확인해 주세요.
  • 팀 전체가 Biome을 유일한 포맷터로 사용하는 것에 동의했는지도 함께 검토 부탁드립니다.
tests/example.spec.ts (1)

1-8: E2E 테스트 공백 발생, 회복 계획 필요

About 페이지 제거로 테스트를 전부 주석 처리했습니다. 당장은 빌드 통과용으로 이해되지만, E2E 커버리지가 0%가 됩니다.

  • 새로 추가된 홈·Explore·My·Setting 페이지 중 최소 1-2개에 대해 smoke test를 빠르게 만들어 두는 편이 좋습니다.
  • Playwright fixture만 남겨 두고 test.skip()으로 관리하면 CI 이탈 없이 추후 복구가 수월합니다.
.storybook/preview.tsx (1)

3-5: @/ 경로 별칭이 Storybook 빌드에서 인식되는지 확인하세요

Next.js 앱에선 paths 설정으로 동작하지만, Storybook은 별도로 alias를 주입해야 합니다. 로컬에서 Storybook 실행 시 Module not found: Error: Can't resolve '@/shared/styles/... 가 발생하지 않는지 확인이 필요합니다. 필요한 경우 .storybook/main.ts에 아래와 같이 alias를 추가하세요.

import path from "path";

webpackFinal: async (config) => {
  config.resolve ??= {};
  config.resolve.alias ??= {};
  config.resolve.alias["@"] = path.resolve(__dirname, "../");
  /* 기존 VanillaExtractPlugin... */
  return config;
};
shared/ui/button/Button.stories.ts (1)

8-9: 스토리 그룹 변경 확인 완료

스토리북 상단 트리 정리가 목적이라면 LGTM입니다. 기존 링크 경로가 깨지지 않는지만 한번 더 확인해 주세요.

.storybook/main.ts (1)

8-8: Docs 애드온 추가 👍

@storybook/addon-docs 추가로 컴포넌트 문서화가 가능해졌습니다. MDX 스토리 렌더링에 필요한 @mdx-js/react 등이 peer dependency로 요구될 수 있으니 빌드 로그를 한번 체크해 주세요.

package.json (2)

26-26: motion 패키지 추가 시 번들 크기 검토 필요
motion(Framer Motion) 은 기능이 풍부한 대신 번들 크기가 상당합니다. 페이지 단위 애니메이션에만 일부 API가 필요하다면 import { m } from "motion" 등 tree-shaking 이 가능한 경로를 사용하고, 불필요한 전역 import를 피해주세요.

빌드 후 next build --profilemotion 모듈 크기를 확인해 보시길 권장합니다.


38-40: Storybook 9 + @storybook/addon-docs 버전 호환성 확인
현재 core(storybook), @storybook/nextjs, @storybook/addon-docs 를 모두 9.x 로 맞춰두셨지만, 9 beta 단계에서는 마이너 버전 간 깨지는 경우가 있습니다. CI 에서 storybook build 가 통과하는지 한 번 더 확인해주세요.

shared/styles/tokens/index.ts (1)

1-4: 좋은 디자인 토큰 구조입니다.

barrel export 패턴을 사용하여 디자인 토큰에 대한 중앙화된 접근점을 제공하는 것은 모범 사례입니다. 모듈화된 구조로 유지보수성이 향상됩니다.

shared/styles/tokens/screen.ts (1)

3-21: 미디어 쿼리 헬퍼 함수가 잘 구현되었습니다.

as const 사용으로 타입 안전성이 확보되었고, 반응형 스타일링을 위한 깔끔한 API를 제공합니다.

app/layout.tsx (1)

7-9: 글로벌 CSS 임포트 순서가 적절합니다.

reset.css → global.css 순서로 임포트하여 스타일 적용 우선순위가 올바르게 설정되었습니다.

shared/ui/sprinkle-container/sprinkle-container.stories.tsx (2)

6-32: 잘 구성된 Storybook 스토리입니다.

적절한 메타데이터 설정, 컴포넌트 설명, 그리고 전체 뷰포트를 활용한 데코레이터를 통해 SprinkleContainer 컴포넌트를 효과적으로 시연하고 있습니다. 새로운 디자인 토큰 시스템과의 연동도 잘 되어 있습니다.


13-15: 한국어 컴포넌트 설명이 유용합니다.

개발자들이 컴포넌트의 목적을 명확히 이해할 수 있도록 도와주는 좋은 문서화입니다.

shared/styles/base/global.css.ts (1)

1-37: 글로벌 스타일 구조가 잘 설계되었습니다.

CSS 변수 사용, 색상 테마 통합, 반응형 고려사항이 모두 잘 적용되었습니다. 100dvh 사용으로 모바일 뷰포트 이슈도 적절히 해결했습니다.

shared/ui/nav-home/nav-home.css.ts (4)

1-7: 의존성 구조가 잘 정리되어 있습니다.

토큰 기반 스타일 시스템을 잘 활용하고 있어 일관성 있는 디자인을 유지할 수 있습니다.


22-41: 반응형 네비게이션 구조가 잘 설계되었습니다.

모바일에서는 숨기고 중간 사이즈 이상에서 표시하는 패턴이 적절합니다.


55-73: 버튼 크기가 일관성 있게 설정되어 있습니다.

44px 크기는 터치 인터페이스에 적합한 최소 크기를 만족합니다.


9-20: 네비게이션 바 --max-width 변수 정의 확인 완료

확인 결과, shared/styles/base/global.css.ts:root 전역 스타일에서
"--max-width": "1200px"로 정의되어 있어 별도 수정이 필요 없습니다.

@github-actions
Copy link

This pull request (commit db08802) has been deployed to Vercel ▲ - View GitHub Actions Workflow Logs

Name Link
🌐 Unique https://time-capsule-iolb819b9-hs-projects-b4a69d5f.vercel.app
🔍 Inspect https://vercel.com/hs-projects-b4a69d5f/time-capsule/HPqkdThqVszRhMFwxxztcVs32oht

@github-actions
Copy link

This pull request (commit 9d16168) has been deployed to Vercel ▲ - View GitHub Actions Workflow Logs

Name Link
🌐 Unique https://time-capsule-8dart03lf-hs-projects-b4a69d5f.vercel.app
🔍 Inspect https://vercel.com/hs-projects-b4a69d5f/time-capsule/S85s42aBy9HwXZUDAnfS3yFYtNBT

@seueooo seueooo self-assigned this Jul 14, 2025
@github-actions
Copy link

This pull request (commit dd5c9d8) has been deployed to Vercel ▲ - View GitHub Actions Workflow Logs

Name Link
🌐 Unique https://time-capsule-m8r21ox2d-hs-projects-b4a69d5f.vercel.app
🔍 Inspect https://vercel.com/hs-projects-b4a69d5f/time-capsule/DAt5HwSuki1uFcu3GQKfuLYyqEG2

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)
shared/styles/tokens/z-index.ts (1)

1-5: z-index 값을 숫자로 변경해주세요

이전 리뷰에서 지적된 것과 동일한 문제입니다. z-index 값을 문자열로 저장하면 숫자 연산 시 매번 파싱이 필요하고 타입 추론이 복잡해집니다.

-    content: "99",
+    content: 99,
🧹 Nitpick comments (1)
.storybook/preview.tsx (1)

2-2: 경로 별칭 일관성을 위해 @/ 사용을 권장합니다.

다른 임포트에서는 @/ 별칭을 사용하고 있는데, themeClass 임포트에서만 상대경로를 사용하고 있습니다. 프로젝트 전반의 일관성을 위해 별칭 사용을 고려해보세요.

-import { themeClass } from "../shared/styles/base/theme.css";
+import { themeClass } from "@/shared/styles/base/theme.css";
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 9d16168 and dd5c9d8.

📒 Files selected for processing (9)
  • .storybook/preview.tsx (1 hunks)
  • app/layout.tsx (2 hunks)
  • shared/styles/base/global.css.ts (1 hunks)
  • shared/styles/base/theme.css.ts (1 hunks)
  • shared/styles/tokens/screen.ts (1 hunks)
  • shared/styles/tokens/z-index.ts (1 hunks)
  • shared/ui/nav-home/nav-home.css.ts (1 hunks)
  • shared/ui/nav-home/nav-home.tsx (1 hunks)
  • tests/example.spec.ts (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • shared/styles/base/theme.css.ts
🚧 Files skipped from review as they are similar to previous changes (6)
  • tests/example.spec.ts
  • shared/styles/tokens/screen.ts
  • shared/ui/nav-home/nav-home.tsx
  • app/layout.tsx
  • shared/ui/nav-home/nav-home.css.ts
  • shared/styles/base/global.css.ts
🧰 Additional context used
🧬 Code Graph Analysis (1)
.storybook/preview.tsx (1)
shared/styles/base/theme.css.ts (1)
  • themeClass (14-14)
⏰ 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). (3)
  • GitHub Check: test
  • GitHub Check: deploy
  • GitHub Check: storybook-deploy
🔇 Additional comments (1)
.storybook/preview.tsx (1)

8-24: Storybook 설정이 잘 구성되어 있습니다.

  • controls matchers 설정이 적절하고 표준적입니다
  • themeClass decorator를 통한 전역 테마 적용이 올바르게 구현되었습니다
  • TypeScript 타입 정의도 정확합니다

@github-actions
Copy link

This pull request (commit b9c8649) has been deployed to Vercel ▲ - View GitHub Actions Workflow Logs

Name Link
🌐 Unique https://time-capsule-ipicwqleq-hs-projects-b4a69d5f.vercel.app
🔍 Inspect https://vercel.com/hs-projects-b4a69d5f/time-capsule/DN4XWbDn4FaQAtbs2DaxAbDpb7mL

@github-actions
Copy link

This pull request (commit 6ae5c23) has been deployed to Vercel ▲ - View GitHub Actions Workflow Logs

Name Link
🌐 Unique https://time-capsule-5pbd9z33y-hs-projects-b4a69d5f.vercel.app
🔍 Inspect https://vercel.com/hs-projects-b4a69d5f/time-capsule/3GweEmMv5bRb8yhT2mw431ucJd7B

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

🧹 Nitpick comments (1)
shared/ui/hamburger-menu-button/hamburger-menu-button.tsx (1)

11-35: 불필요한 Fragment 제거를 권장합니다.

컴포넌트 로직과 조건부 스타일링은 잘 구현되어 있으나, 단일 요소만 반환하므로 Fragment가 불필요합니다.

다음과 같이 수정하는 것을 권장합니다:

-  return (
-    <>
-      {/* 메뉴버튼 클릭시 햄버거바 -> x버튼으로 rotate */}
-      <button className={styles.menuButtonStyle} {...props}>
-        <div className={styles.hamburgerIcon}>
-          <div
-            className={cn(
-              styles.hamburgerLineTop,
-              isMenuOpen ? styles.xIconTop : "",
-            )}
-          ></div>
-          <div
-            className={cn(
-              styles.hamburgerLineMiddle,
-              isMenuOpen ? styles.xIconMiddle : "",
-            )}
-          ></div>
-          <div
-            className={cn(
-              styles.hamburgerLineBottom,
-              isMenuOpen ? styles.xIconBottom : "",
-            )}
-          ></div>
-        </div>
-      </button>
-    </>
-  );
+  return (
+    // 메뉴버튼 클릭시 햄버거바 -> x버튼으로 rotate
+    <button className={styles.menuButtonStyle} {...props}>
+      <div className={styles.hamburgerIcon}>
+        <div
+          className={cn(
+            styles.hamburgerLineTop,
+            isMenuOpen ? styles.xIconTop : "",
+          )}
+        ></div>
+        <div
+          className={cn(
+            styles.hamburgerLineMiddle,
+            isMenuOpen ? styles.xIconMiddle : "",
+          )}
+        ></div>
+        <div
+          className={cn(
+            styles.hamburgerLineBottom,
+            isMenuOpen ? styles.xIconBottom : "",
+          )}
+        ></div>
+      </div>
+    </button>
+  );
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between b9c8649 and 6ae5c23.

📒 Files selected for processing (5)
  • shared/ui/hamburger-menu-button/hamburger-menu-button.css.ts (1 hunks)
  • shared/ui/hamburger-menu-button/hamburger-menu-button.stories.tsx (1 hunks)
  • shared/ui/hamburger-menu-button/hamburger-menu-button.tsx (1 hunks)
  • shared/ui/nav-home/nav-home.css.ts (1 hunks)
  • shared/ui/nav-home/nav-home.tsx (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • shared/ui/hamburger-menu-button/hamburger-menu-button.stories.tsx
  • shared/ui/hamburger-menu-button/hamburger-menu-button.css.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • shared/ui/nav-home/nav-home.tsx
  • shared/ui/nav-home/nav-home.css.ts
🧰 Additional context used
🧬 Code Graph Analysis (1)
shared/ui/hamburger-menu-button/hamburger-menu-button.tsx (1)
shared/utils/cn.ts (1)
  • cn (3-5)
⏰ 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). (3)
  • GitHub Check: comment-pr
  • GitHub Check: deploy
  • GitHub Check: test
🔇 Additional comments (3)
shared/ui/hamburger-menu-button/hamburger-menu-button.tsx (3)

1-3: 임포트 구조가 깔끔합니다.

필요한 의존성만 정확히 임포트하고 있으며, 타입 임포트와 유틸리티 임포트가 적절히 구분되어 있습니다.


5-7: 인터페이스 정의가 우수합니다.

HTMLAttributes<HTMLButtonElement>을 확장하여 button 요소의 모든 네이티브 속성을 지원하면서도 커스텀 isMenuOpen 프로퍼티를 추가한 것이 좋은 설계입니다.


9-37: 컴포넌트 구현이 견고합니다.

props 스프레딩, 조건부 스타일링, 그리고 접근성을 고려한 구조가 잘 구현되어 있습니다. cn 유틸리티를 사용한 조건부 클래스 적용도 적절합니다.

@github-actions
Copy link

This pull request (commit bc6eeb5) has been deployed to Vercel ▲ - View GitHub Actions Workflow Logs

Name Link
🌐 Unique https://time-capsule-2aiduueo5-hs-projects-b4a69d5f.vercel.app
🔍 Inspect https://vercel.com/hs-projects-b4a69d5f/time-capsule/E2CMWV6Vco3UU3zmSpdqXM6TVinN

@seung365
Copy link
Member

엄청 많은 내용 반영하시느라 고생하셨습니다~!~!

sm: "(min-width: 345px)",
md: "(min-width: 800px)",
lg: "(min-width: 1200px)",
} as const;
Copy link
Member

@seung365 seung365 Jul 14, 2025

Choose a reason for hiding this comment

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

screenBreakpointsscreen.ts에 있는 거랑 동일한 내용같은데 따로 constants에 빼서 관리하는거 어떤가요??

Copy link
Contributor Author

@seueooo seueooo Jul 14, 2025

Choose a reason for hiding this comment

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

향후 breakpoint 변경 시 파일하나만 수정하면되도록 screen.ts에서 관리하는 것이 응집성 측면에서 좋을 것 같다는 생각입니다! text.ts에서는 import하여 사용하도록 수정했습니다👍

@github-actions
Copy link

This pull request (commit 5002000) has been deployed to Vercel ▲ - View GitHub Actions Workflow Logs

Name Link
🌐 Unique https://time-capsule-83z8d6gvu-hs-projects-b4a69d5f.vercel.app
🔍 Inspect https://vercel.com/hs-projects-b4a69d5f/time-capsule/Ehwkk9hcSJkM9QMFhyKu5dYyfTjC

@seueooo seueooo merged commit 383186e into develop Jul 14, 2025
8 checks passed
@seueooo seueooo deleted the feature/add-global-layout-home-nav/#61 branch July 14, 2025 11:07
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.

[Feature]: global-layout, nav-home 추가, 수정된 디자인시스템 반영

2 participants