Skip to content

칩 컴포넌트 개발 #32

Merged
yooolleee merged 5 commits into
mainfrom
feature/chip
Feb 8, 2026
Merged

칩 컴포넌트 개발 #32
yooolleee merged 5 commits into
mainfrom
feature/chip

Conversation

@yooolleee

Copy link
Copy Markdown
Contributor

Summary

특이사항은 없고 스토리북에 컴포넌트 관련 설명까지 자세히 적어뒀습니다.

Issue

  • Closes #

Scope

  • 포함

    • 변경한 내용
  • 특이사항

@yooolleee yooolleee added this to the 컴포넌트 milestone Feb 6, 2026
@yooolleee yooolleee requested review from a team, HWAN0218, Jieunsse and jungwon123 February 6, 2026 05:29
@yooolleee yooolleee self-assigned this Feb 6, 2026
@yooolleee yooolleee added the 기능추가 기능개발 및 추가할 때 사용해주세요. label Feb 6, 2026
@yooolleee yooolleee added this to workers Feb 6, 2026
@github-project-automation github-project-automation Bot moved this to 개발 대기중 in workers Feb 6, 2026
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @yooolleee, 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 요소를 제공하여 컴포넌트 라이브러리를 풍부하게 만드는 데 중점을 둡니다. 새로운 Chip 컴포넌트와 다양한 도메인별 Button 컴포넌트가 추가되었으며, 이들은 Storybook을 통해 상세하게 문서화되어 있습니다. 또한, 필요한 스타일 및 SVG 에셋도 함께 포함되어 있습니다.

Highlights

  • 새로운 Chip 컴포넌트 개발: 필터, 카테고리, 상태 선택 등에 활용될 수 있는 Chip 컴포넌트가 새로 추가되었습니다. largesmall 두 가지 크기와 selected, disabled 상태를 지원하며, 라벨과 선택적인 개수 표시 기능을 제공합니다.
  • 다양한 Button 컴포넌트 추가: 기존 BaseButton을 기반으로, 특정 도메인에 특화된 여러 버튼 컴포넌트들이 추가되었습니다. 여기에는 ArrowButton (좌우 탐색), DatePickerButton (요일 선택), EditButton (이미지 편집), EnterButton (전송), FilledRoundButton (CTA), FloatingButton (플로팅 액션), FloatingLikeButton (좋아요 토글), GnbAddButton (GNB 추가), OutlineIconTextButton (아웃라인 아이콘 텍스트), ProgressButton (진행 상태 추가) 등이 포함됩니다.
  • Storybook 문서화 및 설정 업데이트: 새로 추가된 모든 컴포넌트에 대해 상세한 Storybook 스토리가 작성되었습니다. 각 스토리에는 컴포넌트의 사용법, Props, 실제 사용 예시, 상호작용 테스트, 접근성 테스트 및 크기 스펙이 포함되어 있습니다. 또한, Storybook 환경 설정 및 ESLint 규칙이 업데이트되었습니다.
  • 공통 스타일 및 SVG 에셋 추가: 새로운 컴포넌트들을 지원하기 위해 src/shared/styles/color.css에 배경 및 상태 관련 CSS 변수가 추가 및 업데이트되었으며, 다양한 버튼 및 아이콘에 사용될 여러 SVG 에셋 파일들이 추가되었습니다.

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

Changelog
  • .storybook/preview.ts
    • 새로운 공통 스타일시트 color.css 임포트 추가
  • eslint.config.mjs
    • Storybook 파일에 대한 ESLint 규칙 업데이트: react/no-unescaped-entities 비활성화
  • src/app/layout.tsx
    • 새로운 공통 스타일시트 color.css 임포트 추가
  • src/assets/buttons/plus/plusBoxButton.svg
    • 새로운 SVG 에셋 추가
  • src/assets/buttons/plus/plusGnbAddButton.svg
    • 새로운 SVG 에셋 추가
  • src/assets/icons/check/hovercheck.svg
    • 새로운 SVG 에셋 추가
  • src/assets/icons/check/inactivecheck.svg
    • 새로운 SVG 에셋 추가
  • src/assets/icons/check/pressedcheck.svg
    • 새로운 SVG 에셋 추가
  • src/assets/icons/check/primarycheck.svg
    • 새로운 SVG 에셋 추가
  • src/components/Button/base/BaseButton.module.css
    • 새로운 BaseButton 컴포넌트의 스타일 정의
  • src/components/Button/base/BaseButton.stories.tsx
    • BaseButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/base/BaseButton.tsx
    • 새로운 BaseButton 컴포넌트 구현
  • src/components/Button/base/index.ts
    • BaseButton 및 관련 타입 내보내기
  • src/components/Button/domain/ArrowButton/ArrowButton.module.css
    • 새로운 ArrowButton 컴포넌트의 스타일 정의
  • src/components/Button/domain/ArrowButton/ArrowButton.stories.tsx
    • ArrowButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/domain/ArrowButton/ArrowButton.tsx
    • 새로운 ArrowButton 컴포넌트 구현
  • src/components/Button/domain/DatePickerButton/DatePickerButton.module.css
    • 새로운 DatePickerButton 컴포넌트의 스타일 정의
  • src/components/Button/domain/DatePickerButton/DatePickerButton.stories.tsx
    • DatePickerButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/domain/DatePickerButton/DatePickerButton.tsx
    • 새로운 DatePickerButton 컴포넌트 구현
  • src/components/Button/domain/EditButton/EditButton.module.css
    • 새로운 EditButton 컴포넌트의 스타일 정의
  • src/components/Button/domain/EditButton/EditButton.stories.tsx
    • EditButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/domain/EditButton/EditButton.tsx
    • 새로운 EditButton 컴포넌트 구현
  • src/components/Button/domain/EnterButton/EnterButton.module.css
    • 새로운 EnterButton 컴포넌트의 스타일 정의
  • src/components/Button/domain/EnterButton/EnterButton.stories.tsx
    • EnterButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/domain/EnterButton/EnterButton.tsx
    • 새로운 EnterButton 컴포넌트 구현
  • src/components/Button/domain/FilledRoundButton/FilledRoundButton.module.css
    • 새로운 FilledRoundButton 컴포넌트의 스타일 정의
  • src/components/Button/domain/FilledRoundButton/FilledRoundButton.stories.tsx
    • FilledRoundButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/domain/FilledRoundButton/FilledRoundButton.tsx
    • 새로운 FilledRoundButton 컴포넌트 구현
  • src/components/Button/domain/FilledRoundButton/index.ts
    • FilledRoundButton 내보내기
  • src/components/Button/domain/FloatingButton/FloatingButton.module.css
    • 새로운 FloatingButton 컴포넌트의 스타일 정의
  • src/components/Button/domain/FloatingButton/FloatingButton.stories.tsx
    • FloatingButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/domain/FloatingButton/FloatingButton.tsx
    • 새로운 FloatingButton 컴포넌트 구현
  • src/components/Button/domain/FloatingButton/FloatingLikeButton.module.css
    • 새로운 FloatingLikeButton 컴포넌트의 스타일 정의
  • src/components/Button/domain/FloatingButton/FloatingLikeButton.stories.tsx
    • FloatingLikeButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/domain/FloatingButton/FloatingLikeButton.tsx
    • 새로운 FloatingLikeButton 컴포넌트 구현
  • src/components/Button/domain/GnbAddButton/GnbAddButton.module.css
    • 새로운 GnbAddButton 컴포넌트의 스타일 정의
  • src/components/Button/domain/GnbAddButton/GnbAddButton.stories.tsx
    • GnbAddButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/domain/GnbAddButton/GnbAddButton.tsx
    • 새로운 GnbAddButton 컴포넌트 구현
  • src/components/Button/domain/OutlineIconTextButton/OutlineIconTextButton.module.css
    • 새로운 OutlineIconTextButton 컴포넌트의 스타일 정의
  • src/components/Button/domain/OutlineIconTextButton/OutlineIconTextButton.stories.tsx
    • OutlineIconTextButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/domain/OutlineIconTextButton/OutlineIconTextButton.tsx
    • 새로운 OutlineIconTextButton 컴포넌트 구현
  • src/components/Button/domain/OutlineIconTextButton/index.ts
    • OutlineIconTextButton 내보내기
  • src/components/Button/domain/ProgressButton/ProgressButton.module.css
    • 새로운 ProgressButton 컴포넌트의 스타일 정의
  • src/components/Button/domain/ProgressButton/ProgressButton.stories.tsx
    • ProgressButton 컴포넌트의 Storybook 스토리 추가
  • src/components/Button/domain/ProgressButton/ProgressButton.tsx
    • 새로운 ProgressButton 컴포넌트 구현
  • src/components/Button/shared/ButtonBehavior.module.css
    • 버튼의 공통 동작 및 리셋 스타일 정의
  • src/components/Chip/Chip.module.css
    • 새로운 Chip 컴포넌트의 스타일 정의
  • src/components/Chip/Chip.stories.tsx
    • Chip 컴포넌트의 Storybook 스토리 추가
  • src/components/Chip/Chip.tsx
    • 새로운 Chip 컴포넌트 구현
  • src/shared/styles/color.css
    • 배경색 color-background-primary#0f172a에서 #ffffff로 변경
    • 새로운 상태 색상 변수 color-status-danger-hovercolor-status-danger-pressed 추가
  • src/stories/Configure.mdx
    • 불필요한 Storybook 설정 문서 파일 제거
Activity
  • yooolleee님이 새로운 Chip 컴포넌트와 다양한 Button 컴포넌트를 추가했습니다.
  • 모든 신규 컴포넌트에 대한 Storybook 스토리가 상세한 설명과 함께 추가되었습니다.
  • 공통 스타일 및 SVG 에셋이 업데이트되어 새로운 컴포넌트들을 지원합니다.
  • 불필요한 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.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

전반적으로 칩 컴포넌트와 다양한 버튼 컴포넌트들이 체계적으로 잘 개발되었습니다. 특히 Storybook 문서화가 매우 상세하고 명확하여 컴포넌트의 사용법과 설계 의도를 이해하기 쉬웠습니다. 공통 스타일(ButtonBehavior.module.css)을 분리하여 일관성을 유지한 점도 훌륭합니다. 몇 가지 사소한 개선점을 발견하여 리뷰 코멘트를 남겼으니 확인 부탁드립니다.

Comment on lines +340 to +342
<BaseButton size="small" variant="danger">
Danger
</BaseButton>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

AllVariantsDisabled 스토리에서 small 사이즈의 danger 버튼에 disabled 속성이 누락되었습니다. 이로 인해 비활성화 상태를 보여주는 스토리의 목적과 다르게 버튼이 활성화된 상태로 렌더링됩니다. disabled 속성을 추가하여 수정해야 합니다.

Suggested change
<BaseButton size="small" variant="danger">
Danger
</BaseButton>
<BaseButton size="small" variant="danger" disabled>
Danger
</BaseButton>

}: OutlineIconTextButtonProps) {
return (
<button
type={type}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

className을 조합하는 방식이 다른 버튼 컴포넌트(BaseButton 등)와 일관되지 않습니다. className ?? ''을 사용하는 대신, 배열에 className을 직접 포함하고 filter(Boolean)을 사용하는 것이 더 안전하고 일관성 있는 방법입니다. className prop이 false0과 같은 falsy 값으로 전달될 경우 예기치 않은 동작을 유발할 수 있습니다.

Suggested change
type={type}
className={[behavior.buttonBase, styles.root, className].filter(Boolean).join(' ')}

<button
type="button"
className={chipClassName}
onClick={isClickable ? onClick : undefined}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

버튼의 onClick 핸들러를 조건부로 할당하는 로직이 다소 복잡합니다. isClickable 변수를 사용하는 대신, onClick 핸들러를 직접 전달하고 disabled 속성에 의해 버튼의 클릭 가능 여부가 제어되도록 하는 것이 더 간결하고 일반적인 패턴입니다. HTML <button> 요소는 disabled 상태일 때 자동으로 클릭 이벤트를 방지하므로, 추가적인 조건부 로직이 필요하지 않습니다.

Suggested change
onClick={isClickable ? onClick : undefined}
onClick={onClick}

@yooolleee yooolleee merged commit c9aea00 into main Feb 8, 2026
1 check passed
@github-project-automation github-project-automation Bot moved this from 개발 대기중 to 개발 완료 in workers Feb 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

기능추가 기능개발 및 추가할 때 사용해주세요.

Projects

Status: 개발 완료

Development

Successfully merging this pull request may close these issues.

2 participants