Skip to content

사이드네비게이션 모바일 디자인 수정 - #573

Merged
Bangdayeon merged 1 commit into
mainfrom
design/#568-mobile-sidenavigation
Aug 17, 2026
Merged

사이드네비게이션 모바일 디자인 수정#573
Bangdayeon merged 1 commit into
mainfrom
design/#568-mobile-sidenavigation

Conversation

@Bangdayeon

@Bangdayeon Bangdayeon commented Aug 11, 2026

Copy link
Copy Markdown
Member

관련 이슈

PR 설명

  • 사이드 내비 열렸을 때 background 스크롤 block
  • 사이드내비 드로어 내부를 단일 스크롤러로 재구성
  • 메뉴 선택 후 항상 닫히도록 수정
  • 채팅 아이템 메뉴 버튼 상시 노출
  • 사이드 내비 트리거 배경색 지정(tertiary_neutral)
  • 진한 그림자 대신 약한 blur 처리

같이 고친 부수 버그

  • Popover/Trigger.tsx가 모든 팝오버 트리거의 접근성 이름을 지우고 있었음 — 'aria-label': undefined를 무조건 주입하는데, 호출부는 IconButton/Button의 자체
    prop인 ariaLabel을 넘기고, 두 컴포넌트가 {...rest}를 aria-label={ariaLabel} 뒤에 펼쳐서 덮어씀. 값이 있을 때만 주입하도록 수정 + 두 컴포넌트의 스프레드 순서
    정리
  • usePopoverPosition에 autoUpdate 없음 — 내비가 스크롤되면(프로젝트 프레임워크 확정 논의 #2) 열린 채팅 kebab 팝오버가 행에서 떨어짐. 추가하지 않았으면 #2가 새 버그를 만들 상황
  • AddLinkModal / DeleteChatModal이 드로어 서브트리 안에서 렌더 — #3을 켜면 방금 연 모달이 드로어와 함께 언마운트되어 깜빡이고 사라짐. SideNavModals로 셸 밖에
    호이스팅
  • triggerRef가 선언만 되고 어디에도 부착 안 됨 → 포커스 복원이 no-op. 게다가 닫힘 effect가 마운트 시에도 실행되어 모바일 진입마다 포커스를 훔칠 뻔한 구조.
    하나의 effect로 정리하고 에 inert를 걸어 실제 focus trap 확보. Esc도 패널 onKeyDown(포커스가 안에 있을 때만 동작) → document 레벨 useEscKeyPress로 이동
  • useIsMobile이 useLayoutEffect 기반 → SSR 경고 + 한 커밋 늦은 값. useSyncExternalStore 기반 src/hooks/util/useIsMobile.ts로 분리
  • ChatItem이 role="button" div로 진짜 을 감싼 중첩 인터랙티브 위반 → next/link로 교체. 미들클릭 / cmd+클릭 / AT 시맨틱 복원, 행별 고유
    ariaLabel(기존엔 전부 동일한 이름), aria-current, prefetch={false}(채팅 수십 개 일괄 prefetch 방지)
  • layout.tsx의 viewport가 문자열 export — App Router의 Viewport 객체 형태가 아니고, 생성 라우트 타입이 viewport?: any라 빌드에서도 안 잡히던 상태. 타입 객체로
    교체. maximum-scale=1은 복원 안 함 (확대 차단은 WCAG 1.4.4 위반)
  • Modal에 최대 높이 없음 → 짧은 모바일 화면에서 긴 본문이 잘림. max-h-[85dvh] overflow-y-auto overscroll-contain 추가
  • Storybook SideNavigation 스토리가 깨져 있었음 — preview.ts에 QueryClientProvider가 없어 ChatRoomSection/SideNavigationBottom이 "No QueryClient set"으로 죽던
    상태. 전역 데코레이터 추가 + 앱 셸 래퍼 + 데스크톱 확장/축소, 모바일 열림/닫힘, 짧은 뷰포트 5개 스토리로 확장

@Bangdayeon Bangdayeon linked an issue Aug 11, 2026 that may be closed by this pull request
@Bangdayeon Bangdayeon self-assigned this Aug 11, 2026
@github-actions

Copy link
Copy Markdown

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 82d1ec46-f43b-4a35-898a-a6fe4a7f4528

📥 Commits

Reviewing files that changed from the base of the PR and between a51983d and 5e3c329.

📒 Files selected for processing (1)
  • src/app/(dev)/mock-chat/MockChatPage.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/app/(dev)/mock-chat/MockChatPage.tsx

Walkthrough

Storybook 전역에 React Query Provider를 적용했다. 모바일 사이드 내비게이션에 드로어 포커스 관리, Escape 닫기, 백드롭, inert 본문 처리를 추가했다. 메뉴와 채팅 항목 선택 시 모바일 내비게이션을 닫도록 변경했다. 페이지 높이를 부모 기준으로 통일하고 overscroll 전파를 제한했다. 버튼 속성 우선순위, 모달 스크롤, Popover 위치 갱신과 접근성 라벨 처리도 변경했다.

Possibly related PRs

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 제목이 모바일 사이드 내비게이션 디자인 수정이라는 주요 변경 사항을 명확하게 설명합니다.
Description check ✅ Passed 필수 섹션과 이슈 링크를 포함하며 주요 변경 사항과 관련 버그 수정 내용을 구체적으로 설명합니다.
Linked Issues check ✅ Passed [#568]의 배경 스크롤 차단, 내부 스크롤, 자동 닫기, 메뉴 버튼, 트리거 디자인 요구 사항을 모두 반영합니다.
Out of Scope Changes check ✅ Passed Storybook, 팝오버, 모달, 포커스 처리 등의 변경은 모바일 사이드 내비게이션 동작을 지원하는 관련 범위입니다.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch design/#568-mobile-sidenavigation

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/app/`(dev)/mock-chat/MockChatPage.tsx:
- Line 147: 모바일 스크롤 컨테이너인 해당 div에 h-full 클래스를 추가하세요. 기존 flex-1 및 overflow 설정은
유지하여 모바일에서도 컨테이너가 부모 높이를 채우고 내부 세로 스크롤이 생성되도록 하세요.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 03457b89-7e23-4c44-9beb-d9397673363e

📥 Commits

Reviewing files that changed from the base of the PR and between e71d17e and a51983d.

📒 Files selected for processing (30)
  • .storybook/preview.ts
  • .storybook/withQueryClient.tsx
  • src/app/(dev)/mock-chat/MockChatPage.tsx
  • src/app/(route)/all-link/AllLink.tsx
  • src/app/(route)/chat/[id]/ChatPage.tsx
  • src/app/(route)/home/HomePage.tsx
  • src/app/(route)/home/loading.tsx
  • src/app/(route)/mypage/Mypage.tsx
  • src/app/layout-client.tsx
  • src/app/layout.tsx
  • src/app/loading.tsx
  • src/components/basics/Button/Button.tsx
  • src/components/basics/IconButton/IconButton.tsx
  • src/components/basics/Modal/Modal.style.ts
  • src/components/basics/Popover/Content.tsx
  • src/components/basics/Popover/Trigger.tsx
  • src/components/basics/Popover/hooks/usePopoverPosition.ts
  • src/components/layout/SideNavigation/SideNavigation.tsx
  • src/components/layout/SideNavigation/components/Bottom/SideNavigationBottom.tsx
  • src/components/layout/SideNavigation/components/ChatRoomSection/ChatItem.tsx
  • src/components/layout/SideNavigation/components/ChatRoomSection/ChatRoomSection.tsx
  • src/components/layout/SideNavigation/components/Header/SideNavigationHeader.tsx
  • src/components/layout/SideNavigation/components/MenuSection/MenuSection.tsx
  • src/components/layout/SideNavigation/components/NavItem/LinkNavItem.tsx
  • src/components/layout/SideNavigation/components/SideNavModals.tsx
  • src/components/wrappers/LinkCardDetailPanel/LinkCardDetailPanel.style.ts
  • src/hooks/util/useCloseSideNavOnSelect.ts
  • src/hooks/util/useIsMobile.ts
  • src/stories/SideNavigation.stories.tsx
  • src/styles/globals.css

Comment thread src/app/(dev)/mock-chat/MockChatPage.tsx Outdated
@Bangdayeon
Bangdayeon force-pushed the design/#568-mobile-sidenavigation branch from a51983d to 5e3c329 Compare August 11, 2026 03:31
@github-actions

Copy link
Copy Markdown

@Bangdayeon
Bangdayeon merged commit bec775c into main Aug 17, 2026
5 checks passed
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.

SideNavigation 모바일뷰 디자인 수정

2 participants