Skip to content

Feature/#11 네비게이션 바, 헤더 구현#12

Merged
Lseojeong merged 4 commits intodevelopfrom
feature/#11
Nov 27, 2025
Merged

Feature/#11 네비게이션 바, 헤더 구현#12
Lseojeong merged 4 commits intodevelopfrom
feature/#11

Conversation

@Lseojeong
Copy link
Copy Markdown
Contributor

#️⃣연관된 이슈

📝작업 내용

헤더 및 네비게이션 구현

📷preview

변경사항을 참고하기 쉽도록 이미지 첨부

@Lseojeong Lseojeong linked an issue Nov 16, 2025 that may be closed by this pull request
2 tasks
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello @Lseojeong, 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은 애플리케이션의 핵심 UI 요소인 헤더와 네비게이션 바를 구현합니다. 이를 통해 사용자 인터페이스의 기본 구조를 확립하고, 아이콘의 재사용성과 테마 적용 유연성을 높였습니다. 새로운 컴포넌트들은 Storybook을 통해 시각적으로 검증 가능하며, 향후 기능 확장을 위한 기반을 마련합니다.

Highlights

  • SVG 아이콘 색상 동적 제어: 기존 SVG 아이콘들의 strokefill 속성을 currentColor로 변경하여 CSS를 통해 색상을 쉽게 제어할 수 있도록 개선했습니다.
  • 새로운 아이콘 추가: ic_chat.svgsymbol_logo.svg 두 가지 새로운 SVG 아이콘이 추가되었습니다.
  • 아이콘 컴포넌트 인덱스 파일 생성: 모든 SVG 아이콘을 중앙에서 관리하고 쉽게 가져올 수 있도록 src/components/Icons/index.ts 파일이 생성되었습니다.
  • Header 컴포넌트 구현: 애플리케이션의 상단 헤더를 구현하는 Header 컴포넌트가 추가되었으며, 로고와 선택적 설정 버튼을 포함합니다.
  • Navigation 컴포넌트 구현: 애플리케이션의 하단 네비게이션 바를 구현하는 Navigation 컴포넌트가 추가되었으며, 동적인 활성 상태와 클릭 핸들러를 지원합니다.
  • Storybook 스토리 추가: HeaderNavigation 컴포넌트의 다양한 상태를 시각적으로 테스트하고 문서화하기 위한 Storybook 스토리가 각각 추가되었습니다.
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.

@github-actions
Copy link
Copy Markdown

스토리북 URL 확인하기 - https://6908bd6605f813993a4103e1-yiomyrizfa.chromatic.com/

Copy link
Copy Markdown

@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

안녕하세요. 헤더와 네비게이션 바 구현에 대한 Pull Request를 잘 보았습니다. 전반적으로 컴포넌트 구조가 잘 잡혀있고, 아이콘 관리 방식도 훌륭합니다. 특히 여러 SVG 아이콘의 하드코딩된 색상을 currentColor로 변경하여 테마 적용 및 재사용성을 높인 점이 인상적입니다. 코드 품질을 더욱 향상시키기 위해 접근성 개선, 중복 코드 제거, 그리고 몇 가지 모범 사례 적용에 대한 제안을 몇 가지 드립니다.

type="button"
onClick={onClick}
className={`${getBaseButtonClasses()} relative`}
aria-label={item.id}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

접근성 향상을 위해 aria-label은 스크린 리더 사용자에게 더 의미 있는 정보를 제공해야 합니다. 현재 item.id ('chat')를 사용하고 있는데, item.label ('챗봇')을 사용하면 더 명확한 정보를 전달할 수 있습니다.

Suggested change
aria-label={item.id}
aria-label={item.label}

Comment on lines +5 to +13
<circle cx="11.5" cy="10.5" r="1.5" fill="#00B999"/>
<circle cx="17.5" cy="10.5" r="1.5" fill="#00B999"/>
<circle cx="23.5" cy="10.5" r="1.5" fill="#00B999"/>
</g>
<circle cx="10.5" cy="10.5" r="10.5" transform="matrix(-1 0 0 1 25.2151 0)" fill="white"/>
<path d="M7.7886 12.2306C7.21775 11.8093 6.40191 12.0999 6.226 12.7873L4.36957 20.0409C4.171 20.8167 4.9195 21.4996 5.67392 21.2308L13.5546 18.4235C14.309 18.1547 14.4572 17.1524 13.8129 16.6769L7.7886 12.2306Z" fill="white"/>
<circle cx="1.5" cy="1.5" r="1.5" transform="matrix(-1 0 0 1 22.2151 9)" fill="#00B999"/>
<circle cx="1.5" cy="1.5" r="1.5" transform="matrix(-1 0 0 1 16.2151 9)" fill="#00B999"/>
<circle cx="1.5" cy="1.5" r="1.5" transform="matrix(-1 0 0 1 10.2151 9)" fill="#00B999"/>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

아이콘에 색상 값을 하드코딩하면 테마 변경이나 재사용이 어려워집니다. 다른 아이콘들처럼 currentColor를 사용하여 CSS로 색상을 제어하는 것이 좋습니다. 이 파일의 모든 #00B999 색상을 currentColor로 변경하는 것을 제안합니다.

<circle cx="11.5" cy="10.5" r="1.5" fill="currentColor"/>
<circle cx="17.5" cy="10.5" r="1.5" fill="currentColor"/>
<circle cx="23.5" cy="10.5" r="1.5" fill="currentColor"/>
</g>
<circle cx="10.5" cy="10.5" r="10.5" transform="matrix(-1 0 0 1 25.2151 0)" fill="white"/>
<path d="M7.7886 12.2306C7.21775 11.8093 6.40191 12.0999 6.226 12.7873L4.36957 20.0409C4.171 20.8167 4.9195 21.4996 5.67392 21.2308L13.5546 18.4235C14.309 18.1547 14.4572 17.1524 13.8129 16.6769L7.7886 12.2306Z" fill="white"/>
<circle cx="1.5" cy="1.5" r="1.5" transform="matrix(-1 0 0 1 22.2151 9)" fill="currentColor"/>
<circle cx="1.5" cy="1.5" r="1.5" transform="matrix(-1 0 0 1 16.2151 9)" fill="currentColor"/>
<circle cx="1.5" cy="1.5" r="1.5" transform="matrix(-1 0 0 1 10.2151 9)" fill="currentColor"/>


export default function Header({ showSettings = true, onSettingsClick }: HeaderProps) {
return (
<header className="fixed top-0 right-0 left-0 z-50" role="header">
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

<header> 태그는 이미 header 역할을 암시적으로 가지고 있으므로, role="header" 속성은 중복됩니다. 코드를 더 간결하게 유지하기 위해 이 속성을 제거하는 것이 좋습니다.

Suggested change
<header className="fixed top-0 right-0 left-0 z-50" role="header">
<header className="fixed top-0 right-0 left-0 z-50">

Comment on lines +37 to +41
export const ActiveCalendar: Story = {
args: {
defaultActiveId: 'calendar',
},
};
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

ActiveCalendar 스토리는 Default 스토리와 동일한 args를 가지고 있어 중복됩니다. 불필요한 코드를 줄이기 위해 ActiveCalendar 스토리를 제거하는 것을 고려해 보세요.

Comment on lines +54 to +56
function getChatButtonClasses(): string {
return 'flex h-11 w-11 items-center justify-center rounded-full bg-[var(--color-green-normal)] transition-colors hover:bg-[var(--color-green-normal-hover)] active:bg-[var(--color-green-normal-active)]';
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

앞서 ic_chat.svg 아이콘의 점 색상을 currentColor로 변경하도록 제안했습니다. 이 변경에 따라, 아이콘의 색상을 여기서 지정해주어야 합니다. getChatButtonClasses가 반환하는 클래스 문자열에 text-[var(--color-green-normal)]을 추가하면, currentColor가 테마의 녹색으로 올바르게 적용됩니다.

Suggested change
function getChatButtonClasses(): string {
return 'flex h-11 w-11 items-center justify-center rounded-full bg-[var(--color-green-normal)] transition-colors hover:bg-[var(--color-green-normal-hover)] active:bg-[var(--color-green-normal-active)]';
}
function getChatButtonClasses(): string {
return 'flex h-11 w-11 items-center justify-center rounded-full bg-[var(--color-green-normal)] text-[var(--color-green-normal)] transition-colors hover:bg-[var(--color-green-normal-hover)] active:bg-[var(--color-green-normal-active)]';
}

@github-actions
Copy link
Copy Markdown

스토리북 URL 확인하기 - https://6908bd6605f813993a4103e1-uhdzknzbnr.chromatic.com/

@Lseojeong Lseojeong self-assigned this Nov 27, 2025
@Lseojeong Lseojeong merged commit 46b8417 into develop Nov 27, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] 네비게이션 바, 헤더 구현

1 participant