Skip to content

feat: Layout 컴포넌트 추가#10

Merged
youngminss merged 11 commits intomainfrom
feature/layout-init
Jan 17, 2026
Merged

feat: Layout 컴포넌트 추가#10
youngminss merged 11 commits intomainfrom
feature/layout-init

Conversation

@youngminss
Copy link
Member

@youngminss youngminss commented Jan 17, 2026

🎯 PR 제목

feat: Layout 시스템 초기화 및 모바일 최적화

📑 작업 상세 내역

  • Layout 컴포넌트 구조 생성

    • Root: 최대 너비 430px, 중앙 정렬, 동적 뷰포트 높이 적용
    • Header: Fixed positioning, 상단 고정, z-index 적용
    • Content: Header/Footer 높이만큼 padding 적용
    • Footer: Fixed positioning, 하단 고정, Safe Area 지원, z-index 적용
  • src/styles/layout.css 레이아웃 변수 정의

    • --max-width-root-layout: 430px (모바일/PC 공통 최대 너비)
    • --spacing-layout-header-height: 48px
    • --spacing-layout-footer-height: calc(72px + env(safe-area-inset-bottom))
    • min-h-screen-dynamic utility: 동적 뷰포트 높이 (100vh → 100dvh)
  • src/styles/dimension.css z-index 변수 정의

    • --z-index-layout-header: 9
    • --z-index-layout-footer: 9
  • app/layout.tsx viewport 설정 추가

    • viewportFit: "cover" 설정으로 Safe Area 지원
  • app/globals.css 스타일 파일 import 추가

    • layout.css, dimension.css import

🙏 리뷰 요청 사항

  • z-index 값(9)이 적절한지 확인 (다른 컴포넌트와의 레이어링 고려)
  • 430px 최대 너비가 디자인 시안과 일치하는지 확인
  • 모바일 브라우저(에코 브라우저 등)에서 동적 뷰포트 높이가 올바르게 작동하는지 확인
  • Safe Area가 올바르게 적용되는지 (iPhone X 이후 기기에서 테스트)

📃 참고 자료

🖼️ 작업 결과물

ygi-layout-example

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @youngminss, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 애플리케이션의 페이지에 일관된 구조적 기반을 제공하는 BaseLayout 컴포넌트를 도입하여 전반적인 유지보수성과 반응형 디자인을 향상시킵니다. 또한, 모바일 환경에 최적화된 동적 뷰포트 높이와 최대 너비 설정을 위한 새로운 CSS 유틸리티를 포함하여, 사용자 인터페이스의 안정성과 예측 가능성을 높이는 데 중점을 둡니다.

Highlights

  • 새로운 Layout 컴포넌트 추가: 페이지의 구조적 일관성을 제공하는 BaseLayout 컴포넌트가 src/components/layout 경로에 새로 추가되었습니다.
  • 페이지 구조 리팩토링: app/page.tsx 파일이 기존의 RadiusExample 컴포넌트 사용을 중단하고 새로 추가된 BaseLayout 컴포넌트를 활용하도록 변경되었습니다.
  • 레이아웃 관련 CSS 스타일 도입: 동적 뷰포트 높이(min-h-screen-dynamic)와 최대 레이아웃 너비(--max-width-root-layout)를 정의하는 새로운 layout.css 파일이 추가되고 전역 CSS에 임포트되었습니다.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

이 PR은 BaseLayout 컴포넌트를 추가하고 이를 app/page.tsx에 적용하는 변경 사항을 담고 있습니다. 새로운 레이아웃 컴포넌트와 관련 스타일(CSS) 추가는 잘 이루어졌습니다. 코드의 명확성과 유지보수성을 높이기 위해 몇 가지 개선 사항을 제안합니다. BaseLayout 컴포넌트의 props 타입을 더 명확하게 정의하고, page.tsx의 반복적인 JSX 구조를 리팩토링하는 것을 고려해 보세요.

@@ -0,0 +1,7 @@
export const BaseLayout = ({ children }: { children: React.ReactNode }) => {
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

컴포넌트의 props 타입을 인라인으로 정의하는 것보다 React.PropsWithChildren을 사용하거나 별도의 type 또는 interface로 분리하여 정의하는 것이 더 명확하고 재사용성이 높습니다. React.PropsWithChildren을 사용하면 children prop의 타입을 간결하게 정의할 수 있습니다.

Suggested change
export const BaseLayout = ({ children }: { children: React.ReactNode }) => {
export const BaseLayout = ({ children }: React.PropsWithChildren) => {

@RookieAND RookieAND added ✨ Feature 기능 개발 ☑️ Need Review 작업이 완료되어 리뷰를 기다리고 있는 PR 입니다 labels Jan 17, 2026
@youngminss youngminss removed the ☑️ Need Review 작업이 완료되어 리뷰를 기다리고 있는 PR 입니다 label Jan 17, 2026
@youngminss youngminss requested a review from RookieAND January 17, 2026 16:07
@youngminss youngminss added the ☑️ Need Review 작업이 완료되어 리뷰를 기다리고 있는 PR 입니다 label Jan 17, 2026
@youngminss
Copy link
Member Author

@RookieAND
prettier job 만 수정해봤는데 확인만 해주고, 리뷰하고 merge 해서 main 에 싹다 합치고 광인이 작업 이어서 할거면 해 !

@RookieAND RookieAND added ✅ In Review 현재 리뷰를 진행하여 수정 사항을 반영 중인 PR 입니다. and removed ☑️ Need Review 작업이 완료되어 리뷰를 기다리고 있는 PR 입니다 labels Jan 17, 2026
Copy link
Collaborator

@RookieAND RookieAND left a comment

Choose a reason for hiding this comment

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

좋아! 내가 보기에는 문제되는 부분은 없어보이네. 바로 병합해줘!

@RookieAND RookieAND removed the ✅ In Review 현재 리뷰를 진행하여 수정 사항을 반영 중인 PR 입니다. label Jan 17, 2026
@youngminss youngminss merged commit 9efce6f into main Jan 17, 2026
2 checks passed
RookieAND pushed a commit that referenced this pull request Jan 19, 2026
* feat: 최대 너비theme variable, 최소 높이 utility variable 추가

* feat: BaseLayout 컴포넌트

* feat: BaseLayout 컴포넌트 예시

* feat: 공통 Header, Footer 컴포넌트 추가

* feat: 공통 Header, Footer 제외한 Content 컴포넌트 추가

* feat: 공통 Layout 컴포넌트 추가

* feat: safe-area 관련 meta 태그 추가

* feat: z-index variable 추가

* feat: layout header safe-area 추가

* fix: prettier job 체크 범위를 src와 app 디렉토리로 제한하고 .prettierignore 추가
RookieAND pushed a commit that referenced this pull request Feb 16, 2026
* feat: 최대 너비theme variable, 최소 높이 utility variable 추가

* feat: BaseLayout 컴포넌트

* feat: BaseLayout 컴포넌트 예시

* feat: 공통 Header, Footer 컴포넌트 추가

* feat: 공통 Header, Footer 제외한 Content 컴포넌트 추가

* feat: 공통 Layout 컴포넌트 추가

* feat: safe-area 관련 meta 태그 추가

* feat: z-index variable 추가

* feat: layout header safe-area 추가

* fix: prettier job 체크 범위를 src와 app 디렉토리로 제한하고 .prettierignore 추가
github-actions bot pushed a commit that referenced this pull request Feb 16, 2026
## 1.0.0-beta.1 (2026-02-16)

### Features

* [#70](#70) ([#72](#72)) ([b676e0e](b676e0e))
* [QA] 모임 생성 완료, 결과페이지 페이지 UI 개선 ([#66](#66)) ([f10225d](f10225d))
* [QA] 서비스 전체 배경색 및 Layout Root 그림자 효과 적용 ([#59](#59)) ([384b56f](384b56f))
* api client 모듈 생성 ([#37](#37)) ([a37b0a9](a37b0a9)), closes [#38](#38) [#39](#39) [#40](#40) [#41](#41)
* Button 컴포넌트 추가 ([#11](#11)) ([83b7607](83b7607))
* Chip Component 추가 ([#9](#9)) ([e9d8b8f](e9d8b8f))
* Color theme 초기화 ([#2](#2)) ([97f1dcc](97f1dcc))
* DotsLoader 컴포넌트 추가  ([#48](#48)) ([cfe4582](cfe4582)), closes [#49](#49)
* GA4 이벤트 트래킹 통합 ([#70](#70)) ([0c1b9fa](0c1b9fa))
* GTM(Google Tag Manager) 통합을 위한 Analytics 컴포넌트 추가 ([#57](#57)) ([87a6ded](87a6ded))
* IconBase 컴포넌트 및 아이콘 컴포넌트들 구축 ([#13](#13)) ([8557b75](8557b75)), closes [#FFCD00](https://github.com/Nexters/yogieat/issues/FFCD00) [#FFAD00](https://github.com/Nexters/yogieat/issues/FFAD00) [#15](#15) [#ff5a3c](https://github.com/Nexters/yogieat/issues/ff5a3c)
* InputField 컴포넌트 추가 ([#16](#16)) ([99b8aa2](99b8aa2))
* Landing / Opinion Form 페이지 분리 ([#61](#61)) ([0f11e71](0f11e71))
* Layout 컴포넌트 추가 ([#10](#10)) ([9efce6f](9efce6f))
* Semantic Color Token 추가 ([#19](#19)) ([fcaedaf](fcaedaf))
* Spacing utility 클래스 초기화 ([#8](#8)) ([2e38d7a](2e38d7a))
* Tag 컴포넌트 추가 ([#20](#20)) ([f69dd05](f69dd05))
* Toast 컴포넌트 추가 ([#21](#21)) ([76e84b0](76e84b0))
* 모임 생성 퍼널 Step 1 (인원 선택) 구현 ([#23](#23)) ([7fc01a1](7fc01a1)), closes [#24](#24) [#1f2933](https://github.com/Nexters/yogieat/issues/1f2933) [#ff5a3c](https://github.com/Nexters/yogieat/issues/ff5a3c) [#25](#25) [#26](#26) [#27](#27) [#28](#28) [#29](#29) [#30](#30) [#31](#31) [#32](#32) [#34](#34)
* 프로젝트 기초 세팅 진행 ([aa0ec20](aa0ec20))
* 프로젝트 폴더 구조 반영 ([e54962d](e54962d))

### Bug Fixes

* 1순위를 1개라도 선택했다면 바로 CTA 가 활성화 되도록 수정 ([#60](#60)) ([e5758b4](e5758b4))
* 1차 MVP 배포 이전 최종 QA 항목 반영 ([#58](#58)) ([6574231](6574231))
* Button/Chip type 속성 추가 및 의견 수렴 UX 개선 ([#50](#50)) ([7e86e4a](7e86e4a)), closes [#51](#51) [#52](#52) [#53](#53) [#54](#54) [#55](#55) [#56](#56)
* cat 에서 echo 로 env.production 파일을 생성하도록 수정 ([f15307d](f15307d))
* CI/CD health check 타이밍 개선 및 수동 배포 기능 추가 ([54fd2b8](54fd2b8))
* Docker build-args로 환경 변수 전달 방식 변경 ([#77](#77)) ([e5fa0b9](e5fa0b9))
* Docker 이미지 강제 pull 및 컨테이너 재생성 ([#79](#79)) ([c253ec1](c253ec1))
* Health check 전략 개선 및 curl 기반으로 변경 ([765d3da](765d3da))
* nginx http2 deprecated 경고 해결 ([2fd9c75](2fd9c75))
* PendingView 내에서 ShareButton 을 렌더링 하지 않도록 수정 ([7bc3e12](7bc3e12))
* 결과 페이지 맛집 이미지 기본 placeholder, 공유하기 toast 미노출 ([#68](#68)) ([3c80844](3c80844))
* 동시 배포 방지를 위한 concurrency 설정 추가 ([e9bfd52](e9bfd52))
* 모임 생성 퍼널 필드 상태 초기화 버그 수정 ([#64](#64)) ([3934066](3934066)), closes [#65](#65)
* 모임 생성 폼 필드명 변경 (meetingDate → scheduledDate, location → region) ([#35](#35)) ([e90beed](e90beed))
* 배포 워크플로우에 GA4 환경 변수 추가 ([#73](#73)) ([835ae1f](835ae1f))
* 의견 수렴 페이지 내 UI 수정 및 인터렉션 개선 ([#36](#36)) ([a74f7da](a74f7da))
* 의견 수합 Form Capacity 폴링 제거 및 ErrorCode 타입 시스템 추가 ([#67](#67)) ([d55dba1](d55dba1))
* 인원 수 선택 Grid 및 의견 수렴 QA 수정 사항 반영 ([f01626e](f01626e))
* 테스트 용으로 추가했던 페이지 제거 및 icons 폴더 추가 ([4116025](4116025))

### Code Refactoring

* Button 컴포넌트 스펙을 Figma 명세에 맞춰 수정 ([#14](#14)) ([2e27f17](2e27f17))

### Build System

* Docker 빌드 시 NEXT_PUBLIC 환경변수 주입 프로세스 추가 ([#47](#47)) ([88ba163](88ba163))

### Documentation

* 프로젝트 개발 가이드 문서 추가 ([#84](#84)) ([4313145](4313145))
github-actions bot pushed a commit that referenced this pull request Feb 16, 2026
## 1.0.0 (2026-02-16)

### Features

* [#70](#70) ([#72](#72)) ([b676e0e](b676e0e))
* [QA] 모임 생성 완료, 결과페이지 페이지 UI 개선 ([#66](#66)) ([f10225d](f10225d))
* [QA] 서비스 전체 배경색 및 Layout Root 그림자 효과 적용 ([#59](#59)) ([384b56f](384b56f))
* analytics 개선 및 네이버 서치 어드바이저 등록 ([#88](#88)) ([4372aa5](4372aa5))
* api client 모듈 생성 ([#37](#37)) ([a37b0a9](a37b0a9)), closes [#38](#38) [#39](#39) [#40](#40) [#41](#41)
* Button 컴포넌트 추가 ([#11](#11)) ([83b7607](83b7607))
* Chip Component 추가 ([#9](#9)) ([e9d8b8f](e9d8b8f))
* Color theme 초기화 ([#2](#2)) ([97f1dcc](97f1dcc))
* DotsLoader 컴포넌트 추가  ([#48](#48)) ([cfe4582](cfe4582)), closes [#49](#49)
* GA4 이벤트 트래킹 통합 ([#70](#70)) ([0c1b9fa](0c1b9fa))
* GTM(Google Tag Manager) 통합을 위한 Analytics 컴포넌트 추가 ([#57](#57)) ([87a6ded](87a6ded))
* IconBase 컴포넌트 및 아이콘 컴포넌트들 구축 ([#13](#13)) ([8557b75](8557b75)), closes [#FFCD00](https://github.com/Nexters/yogieat/issues/FFCD00) [#FFAD00](https://github.com/Nexters/yogieat/issues/FFAD00) [#15](#15) [#ff5a3c](https://github.com/Nexters/yogieat/issues/ff5a3c)
* InputField 컴포넌트 추가 ([#16](#16)) ([99b8aa2](99b8aa2))
* Landing / Opinion Form 페이지 분리 ([#61](#61)) ([0f11e71](0f11e71))
* Layout 컴포넌트 추가 ([#10](#10)) ([9efce6f](9efce6f))
* Semantic Color Token 추가 ([#19](#19)) ([fcaedaf](fcaedaf))
* Spacing utility 클래스 초기화 ([#8](#8)) ([2e38d7a](2e38d7a))
* Tag 컴포넌트 추가 ([#20](#20)) ([f69dd05](f69dd05))
* Toast 컴포넌트 추가 ([#21](#21)) ([76e84b0](76e84b0))
* 모임 생성 완료 페이지 UI 리뉴얼 ([#89](#89)) ([17a3fc1](17a3fc1))
* 모임 생성 퍼널 Step 1 (인원 선택) 구현 ([#23](#23)) ([7fc01a1](7fc01a1)), closes [#24](#24) [#1f2933](https://github.com/Nexters/yogieat/issues/1f2933) [#ff5a3c](https://github.com/Nexters/yogieat/issues/ff5a3c) [#25](#25) [#26](#26) [#27](#27) [#28](#28) [#29](#29) [#30](#30) [#31](#31) [#32](#32) [#34](#34)
* 프로젝트 기초 세팅 진행 ([aa0ec20](aa0ec20))
* 프로젝트 폴더 구조 반영 ([e54962d](e54962d))

### Bug Fixes

* 1순위를 1개라도 선택했다면 바로 CTA 가 활성화 되도록 수정 ([#60](#60)) ([e5758b4](e5758b4))
* 1차 MVP 배포 이전 최종 QA 항목 반영 ([#58](#58)) ([6574231](6574231))
* Button/Chip type 속성 추가 및 의견 수렴 UX 개선 ([#50](#50)) ([7e86e4a](7e86e4a)), closes [#51](#51) [#52](#52) [#53](#53) [#54](#54) [#55](#55) [#56](#56)
* cat 에서 echo 로 env.production 파일을 생성하도록 수정 ([f15307d](f15307d))
* CI/CD health check 타이밍 개선 및 수동 배포 기능 추가 ([54fd2b8](54fd2b8))
* Docker build-args로 환경 변수 전달 방식 변경 ([#77](#77)) ([e5fa0b9](e5fa0b9))
* Docker 이미지 강제 pull 및 컨테이너 재생성 ([#79](#79)) ([c253ec1](c253ec1))
* Health check 전략 개선 및 curl 기반으로 변경 ([765d3da](765d3da))
* nginx http2 deprecated 경고 해결 ([2fd9c75](2fd9c75))
* PendingView 내에서 ShareButton 을 렌더링 하지 않도록 수정 ([7bc3e12](7bc3e12))
* 결과 페이지 맛집 이미지 기본 placeholder, 공유하기 toast 미노출 ([#68](#68)) ([3c80844](3c80844))
* 동시 배포 방지를 위한 concurrency 설정 추가 ([e9bfd52](e9bfd52))
* 모임 생성 퍼널 필드 상태 초기화 버그 수정 ([#64](#64)) ([3934066](3934066)), closes [#65](#65)
* 모임 생성 폼 필드명 변경 (meetingDate → scheduledDate, location → region) ([#35](#35)) ([e90beed](e90beed))
* 배포 워크플로우에 GA4 환경 변수 추가 ([#73](#73)) ([835ae1f](835ae1f))
* 의견 수렴 페이지 내 UI 수정 및 인터렉션 개선 ([#36](#36)) ([a74f7da](a74f7da))
* 의견 수합 Form Capacity 폴링 제거 및 ErrorCode 타입 시스템 추가 ([#67](#67)) ([d55dba1](d55dba1))
* 인원 수 선택 Grid 및 의견 수렴 QA 수정 사항 반영 ([f01626e](f01626e))
* 테스트 용으로 추가했던 페이지 제거 및 icons 폴더 추가 ([4116025](4116025))

### Code Refactoring

* Button 컴포넌트 스펙을 Figma 명세에 맞춰 수정 ([#14](#14)) ([2e27f17](2e27f17))

### Build System

* Docker 빌드 시 NEXT_PUBLIC 환경변수 주입 프로세스 추가 ([#47](#47)) ([88ba163](88ba163))

### Documentation

* 프로젝트 개발 가이드 문서 추가 ([#84](#84)) ([4313145](4313145))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants