Skip to content

release/v2.0.0#333

Merged
WonJuneKim merged 151 commits into
mainfrom
dev
Dec 29, 2025
Merged

release/v2.0.0#333
WonJuneKim merged 151 commits into
mainfrom
dev

Conversation

@WonJuneKim

@WonJuneKim WonJuneKim commented Dec 29, 2025

Copy link
Copy Markdown
Contributor

💡 작업 내용

  • 젝트 웹사이트 리뉴얼 릴리즈

💡 자세한 설명

구현한 의도를 설명해주세요.
수정 사항이 있다면 수정한 이유를 적어주세요.
필요하다면 스크린샷 또는 코드 조각을 사용해주세요.

📗 참고 자료 (선택)

📢 리뷰 요구 사항 (선택)

✅ 셀프 체크리스트

  • 머지할 브랜치 확인했나요?
  • 이슈는 close 했나요?
  • Reviewers, Labels, Projects를 등록했나요?
  • 기능이 잘 동작하나요?
  • 불필요한 코드는 제거했나요?

closes #329

rkdcodus and others added 30 commits January 26, 2025 12:31
* feat: 프로젝트 초기 세팅

* feat: eslint "import/order" 설정 추가

* fix: prettier "semi" 설정값 true로 수정
* chore: style-dictionary 설치

* feat: 시멘틱 컬러 디자인 토큰을 테일윈드 css 변수로 적용

* feat: 폰트 디자인 토큰 적용

* fix: label-xs 폰트 사이즈 수정

* feat: scheme (gap, radius, stroke, opacity) 토큰 설정

* rename: 폰트 css 파일명 변경 (index.css -> typography.css)

* fix: 디자인 토큰 파일 위치 styles/tokens/으로 변경

* feat: environment 토큰 설정 (shadow, motion)

* feat: index.js 로 토큰 css파일 한번에 import 하기

* feat: typescript-eslint/naming-convention 설정

* feat: 글로벌 스타일 설정 (폰트)

* fix: font-display 속성 block으로 변경

* chore: zustand 설치

* fix: font-display 속성 swap 으로 변경

* rename: build-tokens.js -> token.config.js로 파일명 변경,  index.js -> index.ts로 변경

* fix: 타이포그래피 @layer utilities 사용

* remove: 불필요한 코드 제거

* remove: 주석 제거
* Add qodana.yaml file

* Add github workflow file

---------

Co-authored-by: Qodana Application <qodana-support@jetbrains.com>
* chore: storybook 패키지를 설치합니다.

* chore: ts컴파일러에 스토리북을 포함시킵니다.

* fix: naming convention 설정이 rules에 포함되도록 구문을 수정합니다.

* feat: eslint ignore 옵션에 storybook 디렉토리를 추가합니다.

* feat: storybook preview에 디자인 토큰 경로를 추가합니다.

* feat: storybook preview 시 개발 환경과 동일한 스타일 설정을 주입합니다.

* move: 기본적으로 설치된 스토리북 예시 파일을 삭제합니다.

* feat: 스토리북 테스트를 위한 버튼 컴포넌트를 생성합니다.

* feat: 버튼 컴포넌트에 대한 스토리북 코드를 추가합니다.

* chore: dev dependencies에 chromatic 패키지를 설치합니다.

* feat: 스토리북 자동 배포를 위한 yml 파일을 작성합니다.

* feat: chormatic 명렁어를 삽입합니다.

* feat: 버튼 디버깅을 위해 width 속성을 수정합니다.

* chore: eslint 추가 설정을 위한 패키지를 설치합니다.

* move: 사용하지 않는 tailwind 설정 파일을 제거합니다.

* feat: 추가 패키지를 통해 eslint와 prettier에서 충돌이 나는 구간을 제어합니다.

* fix: 수정된 eslint 설정에 맞춰 스토리북 코드를 수정합니다.
* feat: 폴더 아키텍처 설정 (임시파일생성)

* chore: 절대 경로 처리를 위한 @types/node 모듈 설치

* feat: @(src) 절대 경로 설정

* fix: main.tsx 절대 경로로 import 하기

* chore: Tanstack query 관련 모듈 설치

* feat: eslint-plugin-query 플러그인 설정

* style: 파일 import 시 확장자 제거
* feat: 정적 분석 스크립트에 커스터마이징 옵션을 추가합니다.

* feat: 스크립트 실행 시 의존성 설치를 선행하도록 처리합니다.

* chore: yml파일의 네이밍을 수정합니다.
* feat: Interaction 컴포넌트 구현

* feat: Interaction의 공통 스타일 분리 (.interaction)

* remove: 필요하지 않은 opacity 토큰 제거

tailwind 자체에서 제공하는 스타일과 동일하게 사용 가능

* fix: interaction 유틸리티 오류로 분리 작업 원상복귀

* Merge branch 'dev' of https://github.com/JECT-Study/JECT-Official-WebSite-Client into feat/9-interactionComponent

* move: Interaction 파일 common 폴더로 이동

* feat: Interaction 스토리북 작성

* feat: InteractionStyle 객체 정의

* refactor: InteractionStyle 객체 활용하여 중복되는 코드 정리

* fix:  tailwind의 클래스 네임 동적 구성으로 인한 오류 해결

객체에 저장된 클래스 네임을 완전한 클래스 네임으로 변경

* fix: 변경한 interactionStyle 객체 적용

* feat: 인터렉션 스토리북 추가 작성

* rename: 스토리 변수 대문자로 변경

* feat: eslint const 네이밍 컨벤션 PascalCase 허용

* feat: radius 기본값 빈문자열로 처리
* feat: Badge 컴포넌트 구현

* feat: Label 컴포넌트 구현

* feat: Badge 컴포넌트 재구현

Label 컴포넌트 이용

* feat: Badge 스토리북 작성

* feat: Label 스토리북 작성

* style: Label 객체 구성 수정 및 객체명 변경

* style: 코드 정리

* rename: 스토리 이름 Primary로 변경
* feat(preview.ts): 스토리북 배경색 dark로 기본 설정

* feat: Label의 텍스트 children으로 받도록 수정

* fix: Badge에 변경된 Label 적용

* feat: Label 스토리북 argTypes 및 폰트 색상 수정

* feat: 인터렉션 컴포넌트 수정

- 배경색 없는 자식 요소도 잘 동작하도록 함
- props명 변경 및 추가

* feat: 인터렉션 스토리북 수정

* style: Badge 및 Label 스토리 타입 코드 정리

* feat: 인터렉션 description 추가

* feat: ReactNode import 하기

* feat: Badge 컴포넌트 text props -> children으로 변경

* style: 타이포그래피 오타 수정

* feat: Badge, Interaction, Label 스토리북 컴포넌트 방식의 스토리 작성

* feat: 인터렉션 childHasBg, childRadius 값 받지 않고 인터렉션 내부에서 접근하도록 수정

* feat: 인터렉션 스토리북 수정
* feat: Title 컴포넌트 구현

* feat: Title 스토리북 작성

* fix: border-radius 스킴 토큰 오버라이딩 실패 문제로 토큰 파일 수정

* feat: CalloutNumerical 컴포넌트 구현

* feat: CalloutInformation 컴포넌트 구현

* feat: HeroIndex 컴포넌트 구현

* feat: Hero 컴포넌트 구현

* feat: HeroIndex의 index min-width 설정

* feat: CalloutNumerical 스토리북 작성

* feat: CalloutInformation 스토리북 작성

* feat: HeroIndex 스토리북 작성

* feat: Hero 스토리북 작성

* feat: Title ReactNode import 하기

* remove: titleStyle lineHeight 제거

* remove: labelStyle lineHeight 제거

* feat: 22PR 변경된 Label Badge 컴포넌트 반영

* feat: Title 스토리객체 타입 수정
* feat: ProgressIndex 컴포넌트 구현

* feat: ProgressBridge 및 ProgressIndicator 컴포넌트 구현

* feat: ProgressItem 컴포넌트 구현

* feat: Title textColor 선택적인 Prop 추가

* feat: ProgressVerticalBridge 구현

* feat: Progress 관련 스토리북 작성 (Bridge 컴포넌트 제외)

* refactor: active style 상수 분리

* remove: console.log 제거

* feat: new Array -> Array.from() 방식으로 변경

* feat: Title || -> ?? 널 병합 연산자로 변경

undefined, null 일 경우에만 기본 폰트 색상 적용 (빈문자열과 같이 실수로 값을 넣었을 경우는 스타일 적용 X)
* chore: tailwind 사용 시 편의성을 위해 clsx 패키지를 설치합니다.

* move: 예시로 사용된 버튼 컴포넌트를 제거합니다.

* feat: BlockButton 컴포넌트를 구현합니다.

* feat: BlockButton의 스토리북을 추가합니다.

* feat: LabelButton 컴포넌트를 구현합니다.

* feat: LabelButton의 스토리북을 추가합니다.

* feat: storybook에서 사용할 수 있는 스타일 시트를 추가합니다.

* feat: storybook이 기본적으로 docs를 생성하도록 설정합니다.

* refactor: 버튼 컴포넌트들의 타입명을 수정합니다.

* refactor: 스토리북 상에서 다양한 버튼을 표현하도록 수정합니다.

* typo: import 파일의 네이밍 오류를 수정합니다.

* typo: 스타일 파일에 잘못 선언된 스타일을 수정합니다.

* typo: radius의 유틸리티 값 네이밍을 수정합니다.

* feat: Interaction 컴포넌트를 적용하기 위한 맵 객체를 선언합니다.

* feat: 선언한 map 객체를 이용해 BlockButton에 인터렉션을 적용합니다.

* feat: 선언된 radius를 추출하기 위한 유틸리티 함수를 구현합니다.

* refactor: 유틸리티 함수를 이용해 BlockButton의 radius 값을 Interaction 컴포넌트에 전달합니다.

* feat: blockButton의 맵 객체 네이밍을 구체화합니다.

* feat: labelButton의 Interaction 스타일 객체를 선언합니다.

* feat: labelButton에 Interaction 컴포넌트를 적용합니다.

* refactor: 수정된 Interaction 컴포넌트는 더이상 radius를 props로 받지 않습니다.

* refactor: 버튼 컴포넌트가 Interaction 컴포넌트에 맞춰진 radius를 가지도록 설정합니다.

* move: 사용하지 않는 유틸리티 함수를 삭제합니다.

* feat: Interaction 컴포넌트에 outlineOffset 설정을 추가합니다.

* feat: LabelButton의 스타일 객체에 사이즈 별 offset 값을 추가합니다.

* refactor: labelButton이 Interaction 시에 offset 값을 동적으로 할당합니다.

* feat: 동적 스타일링을 위한 매핑 객체를 생성합니다.

* refactor: Interaction의 동적 스타일링 방식을 수정합니다.
* feat: 아이콘 13개 컴포넌트 구현

* feat: 아이콘 사이즈 스타일 객체 생성

* feat: 아이콘 사이즈 스타일 객체 생성

* feat: 아이콘 스토리북 작성

* feat: 스토리북 description 컴포넌트 이름 수정

* remove: 아이콘 개별 컴포넌트 삭제

* remove: 아이콘 개별 컴포넌트 스토리북 삭제

* chore: vite-plugin-svgr 설치

* chore: svg 아이콘을 컴포넌트로 사용하기 위한 설정

* feat: assets/svg 위치에 아이콘 svg 파일들 추가

* feat: 아이콘 통합 컴포넌트 생성 및 아이콘 이름 타입 정의

* feat: Icon 컴포넌트 스토리북 작성

* feat: Icon 컴포넌트 switch -> 객체 매핑 방식으로 변경
* fix: 인터렉션 재구현

- 인터렉션 scale 값으로 크기 조정
- 인터렉션 컴포넌트 부모 자식 관계 -> 형제 관계로 방식 변경

* design: semantic 토큰 업데이트

* feat: Interaction 컴포넌트 isInversed props 추가

* feat: 수정된 interactionStyle 반영

* remove: 불필요 코드 삭제

* feat: Interaction 컴포넌트 className props 추가

* feat: 인터렉션 스토리북 수정

* fix: LabelButton import 버그 수정

* remove: semantic.json 파일 삭제

* docs: token.config.js 에 semantic.css 파일 생성 방법 주석 달기

* style: Interaction className 코드 줄바꿈
* feat: InputTextArea 컴포넌트 구현

* Merge branch 'dev' of https://github.com/JECT-Study/JECT-Official-WebSite-Client into feat/24-input

* feat: TextAreaField 컴포넌트 분리, AnswerBox로 컴포넌트명 변경

* design: InputField grow 값 수정

* feat: environment의 duration 토큰 값 생성

* feat: AnswerBox, InputField 컴포넌트 스토리북 작성

* feat: InputField, TextAreaField에 duration 및 motion 적용

* rename: AnswerBox -> InputArea 로 컴포넌트명 변경

* rename: InputField -> Input 컴포넌트명 변경

* feat: Input 스토리북 아이콘 스토리 추가

* rename: TextAreaField -> TextArea로 컴포넌트명 변경

* feat: InputArea required args 추가

* style: TextArea 코드 정리

* style: Input 코드 정리

* feat: Label cursor-default 속성 추가

* style: inputArea 코드 정리

* feat: InputField 버튼 요소들 children으로 전부 변경

* feat: Input 스토리북 수정

* feat: InputField 불필요한 props 제거

* feat: InputField 스토리북 작성

* style: TextArea 코드 정리

* feat: input, textarea 요소 타입 ComponentPropsWithoutRef 사용
* chore: react-router-dom 설치

* feat: router 세팅 및 /apply 라우터 설정

* feat: ProgressItem의 content prop 타입 ReactNode로 변경

* feat: client-apply-01 페이지 UI 구현 (버튼 제외)

* feat: 지원하기 링크 클릭 시 페이지 하단으로 이동

* fix: 아이콘 설정 추가

* feat: 지원 하기 버튼 생성

* feat: ProgressItem p 태그 -> div 태그로 변경

* feat: 머지시 충돌있었던 파일 병합

* remove: 불필요한 코드 제거

* feat: moveToBottom utils 함수 생성

* feat: CreateNewTab 컴포넌트 생성 - 새로운 탭으로 하이퍼링크 열기

* rename: scrollFucion -> scrollFunction으로 파일명 오타 수정

* feat: apply page에 필요한 데이터 객체 배열 생성

* feat: 리팩토링 및 지원하기 버튼 ui 구현

* style: 코드 스타일 정리

* remove: router.tsx 파일 이동

* fix: router import 경로 수정

* feat: now -> currentDate로 변수명 변경 및 applyData 객체 id 값 추가

* feat: 지원하기 페이지 타이틀 상수화

* rename: CreateNewTab -> NewTabLink 컴포넌트명 수정
* feat: Post 컴포넌트를 퍼블리싱 합니다.

* feat: Post 컴포넌트의 스토리북을 추가합니다.

* feat: Card 컴포넌트를 퍼블리싱 합니다.

* feat: 스토리북을 위한 샘플 이미지를 추가합니다.

* feat: Card 컴포넌트의 스토리북을 추가합니다.

* feat: descriptionVisible props에 따라 children 요소의 출력 유무를 조건부로 렌더링합니다.

* feat: 조건부 렌더링 시 분기가 필요한 태그를 반영합니다.

* feat: 추가된 props를 스토리북에 반영합니다.

* fix: 공용 컴포넌트가 단독 디렉토리를 가지도록 수정합니다.

* rename: boolean typo의 props 네이밍을 수정합니다.

* refactor: 부모 container에 items-stretch를 적용하고, flex grow를 적용합니다.

* feat: 스토리북에 기본 args를 주입합니다.
* feat: Tab 컴포넌트를 구현합니다.

* feat: Tab 컴포넌트의 스토리북을 추가합니다.

* feat: Tab 컴포넌트에 Interaction을 적용합니다.

* feat: active 시 TabItem의 stroke가 기본 stroke에 올라오도록 합니다.

* refactor: context API를 사용하여 Tab의 전반적인 콘텐츠와 탭 헤더를 관리합니다.

* feat: 실질적인 메인 인터페이스를 분리합니다.

* typo: 컴포넌트와 인터페이스의 네이밍을 단수형으로 수정합니다.

* feat: 수정된 컴포넌트를 스토리북에 반영합니다.

* refactor: tab의 id를 number 형태로 변환합니다.

* refactor: tab header의 width를 100%로 처리합니다.

* feat: 추가적인 케이스의 스토리북을 주입합니다.

* feat: 태그에 명시적인 aria-label을 추가합니다.
* feat: faq 페이지 및 라우터 생성

* move: Badge, Label, Title  폴더로 묶음

* feat: Badge, Label, Title 변경된 경로 수정

* fix: Title textColor null 타입 허용

* feat: Accordion 컴포넌트 생성

* feat: list-ject(list-style-type) 유틸리티 스타일 생성

* feat: faq '지원 관련' TabPanel 구성

* feat: Accordion 컴포넌트 expand 아이콘 및 캡션 prop 추가

* feat: FAQ 페이지 데이터 객체 배열 생성

* feat: list-decimal margin 수정 및 list-ject -> list-disc-ject 로 스타일 네이밍 변경

* feat: Faq 페이지 컴포넌트 faq 객체 데이터 적용

* feat: Accordion 스토리북 작성

* fix: Accordion 컴포넌트, ref 이용한 스타일 주입 방식 -> className에 직접 조건부 처리 방식으로 변경
* move: 불필요한 import 문을 제거합니다.

* feat: Select 컴포넌트를 구현합니다.

* feat: Select 컴포넌트의 스토리북을 추가합니다.

* feat: Select 컴포넌트에 Interaction을 주입합니다.

* feat: Interaction 사용시 duration과 motion 속성을 추가합니다.

* refactor: Select 컴포넌트에 disabled props를 추가합니다.

* feat: 수정된 컴포넌트를 스토리북에 반영합니다.

* fix: 적용되지 않던 motion과 duration 스타일을 수정합니다.

* refactor: SelectItem의 인터페이스 구조를 확장성 있게 변경합니다.

* fix: 최상위 div의 width를 100%로 수정합니다.

* rename: rest props의 네이밍을 직관적으로 수정합니다.

* rename: props로 전달된 onClick 핸들러의 이름을 구분 짓습니다.

* refactor: Select 컴포넌트에 defaultValue 옵셔널 props를 추가합니다.
* feat: blockButton의 Interaction에 isInversed 값을 추가합니다.

* feat: button 컴포넌트에 peer 스타일을 추가합니다.

* refactor: BlockButton에 disabled 속성을 추가합니다.

* feat: BlockButton의 disabled case의 추가에 맞춰 스토리북을 수정합니다.

* feat: Icon이 있을 시에 disabled 케이스를 추가합니다.

* feat: BlockButton의 Interaction에 motion과 duration을 추가합니다.

* refactor: LabelButton에 disabled 속성을 주입합니다.

* move: 더 이상 사용하지 않는 Interaction 관련 객체를 제거합니다.

* feat: LabelButton의 Interaction에 isInversed 요소를 추가합니다.

* feat: LabelButton의 Interaction에 duration과 motion을 추가합니다.

* feat: LabelButton의 Interaction에 scale을 주입합니다.

* feat: 수정된 LabelButton을 스토리북에 반영합니다.

* feat: LabelButton에 Interaction 주입을 위한 peer 속성을 추가합니다.

* rename: 버튼 컴포넌트들의 스토리북 네이밍을 컴포넌트 이름과 통일합니다.

* feat: SnackBar 컴포넌트를 구현합니다.

* feat: SnackBar 컴포넌트의 스토리북을 추가합니다.

* feat: LabelButton의 children을 옵셔널로 수정합니다.

* feat: LabelButton에서 아이콘만 있는 스토리를 추가합니다.

* refactor: onAction props를 옵셔널에서 필수로 변경합니다.
* feat: 인터렉션 스타일 네임 생성

* feat: global.css에 interaction.css 등록

* remove: 기존 인터렉션 컴포넌트, 스토리북, 스타일 파일 삭제

* fix: 기존 인터렉션 적용되어있던 컴포넌트에 새로운 인터렉션 스타일 적용

* feat: transition-faster-fluent 스타일 정의

* refactor: transition-faster-fluent 공통으로 들어가는 곳에 적용

* fix: Variant, Density 타입 생성하여 eslint 에러 해결
* feat: Header, Footer 컴포넌트 생성

* feat: Layout 컴포넌트 생성

* feat: 레이아웃 라우터 설정

* feat: Logo 컴포넌트 구현

* feat: NavigationItem 컴포넌트 구현

* feat: /project, /activity 라우터 생성 및 pathName 타입 생성

* feat: NavigationItem path에 따라 UI 변경

* feat: Navigation 컴포넌트 구현

* feat: Header 구현

* fix: NewTabLink 컴포넌트 children 타입 ReactNode로 변경

* feat: Footer 컴포넌트 구현

* chore: footer 용 유튜브 svg 생성

* fix: Navigation 컴포넌트 시멘틱 태그 활용

* feat: PageContainer 생성 - page 컴포넌트들의 높이, 배경색 지정

* refactor: NavigationItem button props 제거 및 disabled props 추가

* move: PathName 타입 NavigationItem.tsx로 이동

* feat: Navigation Logo 홈 이동 기능 구현 및 focus-visible 스타일 지정

* feat: Footer의 젝트 소개 문구 및 이메일 상수화

* rename: Footer, Header, Layout, PagesContainer 파일 위치 수정

* fix: NavigationItem의 PathName 타입 수정

* feat: Footer, Navigation, NavigationItem 컴포넌트 스토리북 작성

* fix: router Layout import 경로 수정

* fix: faq 페이지 main태그->section태그로 변경

* feat: Logo 스토리북 작성

* remove: Logo 스토리북 불필요한 코드 제거

* fix: Navigation 스토리북 스토리 수정

* rename: ject.ts -> footer.ts 로 파일명 변경

* feat: 네비게이션 PathName 타입 생성

* fix: 생성한 PathName 타입 적용

* feat: footer.ts 상수 임포트 경로 수정

* feat: PATH 네임 상수화

* feat: PathKeys, PathValues 타입 생성

* refactor: PATH 상수 적용

* fix: NavigationItem pathName 타입 PathValues 로 지정

* remove: 불필요파일 삭제

* fix: NavigationItem, button -> NavLink 태그로 변경 및 인터렉션 재적용

* fix: NavigationItem className 띄어쓰기 추가

* feat: NavigationItem disabled 상태 태그 제거
* refactor: Card 컴포넌트의 최상위 태그를 button으로 변경합니다.

* feat: Card 컴포넌트에 Interaction을 주입합니다.

* refactor: Card 컴포넌트에 disabled 속성을 추가합니다.

* refactor: Card 컴포넌트의 사진이 출력되는 구조를 변경합니다.

* feat: Card 컴포넌트의 imageContainer에 하단 border을 추가합니다.

* feat: 스토리북에 disabled의 사례를 추가합니다.

* feat: disabled의 유무에 따라 cursor 이벤트를 추가합니다.

* feat: Card 컴포넌트의 disabled 기본 옵션을 추가합니다.

* refactor: Post 컴포넌트에 disabled 속성을 추가합니다.

* fix: 잘못적용된 Interaction의 duration을 수정합니다.

* feat: Post 컴포넌트에 Interaction을 주입합니다.

* feat: Post 컴포넌트에 Pointer 이벤트를 추가합니다.

* feat: Post 컴포넌트의 실제 사용 예시와 disabled 케이스를 추가합니다.

* refactor: 스타일링을 내부 clsx로 통일하여 관리합니다.

* refactor: 최상위 button 태그를 a 태그로 수정합니다.

* feat: 텍스트가 표현되는 부분에 truncate 클래스를 주입합니다.

* refactor: Label와 Title 컴포넌트에 스타일을 오버라이딩 할 수 있는 요소를 추가합니다.

* refactor: Card 컴포넌트의 텍스트 요소들이 오버플로우 시 말줄임표 처리를 합니다.

* fix: 잘못 적용된 border을 수정합니다.

* refactor: Post 컴포넌트의 최상위 태그를 a 태그로 변경합니다.

* refactor: Post 컴포넌트에서 잘못 적용된 스타일링을 수정합니다.

* feat: Post 컴포넌트의 args를 주입하여 Default 케이스를 생성합니다.

* refactor: Post 컴포넌트의 구조를 변경하고, 말줄임표 처리가 될 수 있도록 합니다.

* move: disabled 시 선언된 불필요한 속성을 제거합니다.

* refactor: Card 컴포넌트의 최상위 태그를 Link 태그로 변경합니다.

* refactor: Card 컴포넌트의 스토리북에 MemoryRouter을 주입 후 To 기본 설정을 추가합니다.

* refactor: 덮어씌워지는 block 요소를 제거 후 className으로만 스타일을 재설정합니다.

* refactor: 내용 필드의 height를 재주입합니다.

* refactor: Post 컴포넌트에서 덮어씌워지는 block 요소를 제거 후 className으로만 스타일을 재설정합니다.

* move: 사용하지 않게된 date props를 제거합니다.

* refactor: Post 컴포넌트의 수정된 구조를 반영합니다.

* feat: a 태그에 적합한 기본 target과 rel을 추가합니다.

* feat: Post 컴포넌트의 기본 target과 rel 설정에 대한 설명을 스토리북에 추가합니다.

* feat: Post 컴포넌트의 스토리북에 href를 사용하는 케이스를 추가합니다.

* refactor: Title 컴포넌트 구조를 단순화합니다.

* refactor: Label 컴포넌트 구조를 단순화하고 className props를 제거합니다.

* refactor: Interaction 컴포넌트를 제거하고, className으로 말줄임표 처리를 처리합니다.

* feat: 자주 사용되는 interaction의 케이스를 추가합니다.

* refactor: 수정된 Interaction을 Post에 재적용합니다.

* fix: 수정된 interaction의 네이밍을 적용합니다.

* refactor: 수정된 Interaction을 Card 컴포넌트에 적용합니다.

* move: 사용하지 않는 className을 제거합니다.

* refactor: focus 효과는 키보드 사용자에게만 나타납니다.
* feat: 이미지 asset을 png 형태로 추가합니다.

* feat: Badge 컴포넌트를 구현합니다.

* feat: Badge 컴포넌트의 storybook을 추가합니다.

* feat: Role 컴포넌트 중 Hero를 구현합니다.

* feat: Hero 컴포넌트의 스토리북을 추가합니다.

* fix: 스토리북의 title을 중복되지 않게 수정합니다.

* fix: props의 네이밍을 직관적으로 수정합니다.

* refactor: 단순한 스타일을 템플릿 리터럴 형식으로 수정합니다.

* rename: 공통된 이름을 가진 Badge를 RoleBadge로 네이밍을 수정합니다.

* rename: 공통된 이름을 가진 Hero를 RoleHero로 네이밍을 수정합니다.

* refactor: img의 alt 네이밍을 직관적으로 수정합니다.

* refactor: 최상위 div의 스타일을 템플릿 리터럴 형태로 변경합니다.

* move: 불필요한 import 문을 제거합니다.

* move: 불필요한 import 문을 제거합니다.

* refactor: 컴포넌트 배경에 반영된 opacity를 반영합니다.

* refactor: 공통적으로 사용되는 타입을 분리합니다.

* fix: opacity 스타일 적용 방식을 변경합니다.
* feat: Dialog 컴포넌트 구현

* feat: useDialog 훅 생성

* feat: Dialog 스토리북 작성

* remove: 불필요한 index.ts 파일 삭제

* refactor: useDialog useState 타입 명시 제거

* fix: props 네이밍 변경 및 btnLayout에 따른 버튼 위치 수정 + 스토리북 수정

* feat: Dialog BlockButton className 제거
* chore: 파비콘 png 추가

* chore: index.html 파비콘 설정
* chore: 새로운 아이콘 svg 파일 6개 추가

* feat: 아이콘 컴포넌트에 새로운 아이콘 추가

* feat: 아이콘 스토리북 업데이트 (새로운 아이콘 6개 추가)
* fix: HeroIndex의 Badge 배경색상/폰트색상 주입가능하도록 props 수정

* feat: HeroIndex 스토리북 작성 수정
* feat: 활동 페이지 router 설정

* feat: 임시 데이터 이용하여 Activity 페이지 UI 구현
rkdcodus and others added 24 commits December 1, 2025 03:01
* feat radix의 NavigationMenu를 기반으로 한 네비게이션 컴포넌트를 구현합니다

- 디바이스 환경에대한 변형 구현 X

* chore: menu-line 아이콘을 추가합니다

* feat: device 환경에 따른 네비게이션 스타일을 구현합니다(모바일 반응형)

* docs: viewport에 따라 네비게이션 스토리를 작성합니다

* fix: ThemeSwitcher를 제거하고 해당 요소는 외부에서 조합하는 방식으로 변경합니다

* refactor: 네이밍 변경 및 몇몇 컴포넌트를 asChild 대신 emotion 스타일 컴포넌트로 수정합니다

* fix: NavigationBlockItem의 BlockButton 컴포넌트를 스타일링이 같은 a 태그 컴포넌트로 대체합니다

* refactor: LabelButton, BlockButton을 외부에서 조합하는 방식으로 변경합니다

* refactor: Navigation.Trigger의 asChild를 true 기본값을 가지도록 수정합니다

* refactor: GlobalNavigation으로 네이밍을 변경합니다

* refactor: useNavigationVariant 훅을 useGlobalNavigationVariant로 네이밍을 변경합니다

* fix: Title 컴포넌트를 다형성 컴포넌트로 변경합니다

* feat: LocalNavigation 컴포넌트를 구현합니다

* feat: useMediaQuery, useMediaQueryFlags 훅을 생성합니다

* feat: LocalNavigation device에 따른 반응형 스타일을 구현합니다

* docs: GlobalNavigation 스토리를 수정합니다

* refactor: GlobalNavigation, LocalNavigation 디렉토리를 분리합니다

* feat: components/index.ts에 Navigation 컴포넌트를 추가합니다

* refactor: localNavigation.types.ts에 사용하지 않는 타입을 제거합니다

* feat: aria-label를 추가합니다

* refactor: aria-label을 수정합니다

* refactor: @/components로 import 경로를 수정합니다.

* feat: GlobalNavigation.List에 align 속성을 추가합니다

* fix: Navigation 파일들 순환참조 문제를 해결합니다

* fix: 다른 컴포넌트 순환참조 문제를 상대경로로 변경하여 해결합니다

* fix: 버튼을 제외한 aria-label을 제거합니다

* fix: NavigationMenu가 radix-ui에서 import되도록 변경합니다

* fix: Title props 타입을 ComponentProps<typeof StyledTitle>로 처리합니다

* fix: useMediaQuery에서는 Breakpoints 타입만 사용하도록 변경합니다

* refactor: LocalNavigation의 뒤로 가기 버튼 aria-label을 수정합니다

* refactor: LocalNavigationButtonGroup의 return 값을 null로 변경합니다

* feat: LocalNavigation.BackButton 서브 컴포넌트를 생성합니다

* feat: useMediaQuery 훅에서 resize 이벤트 대신 matchMedia 메서드 및 change 이벤트를 사용합니다

* fix: hooks/index.ts를 수정합니다.

* fix: LocalNavigation BackButton의 aria-label을 제거합니다

* feat: 범용적인 훅은 @ject/jds/hooks로 import할 수 있도록 설정합니다

* fix: 명시적인 import를 위해 src/index.ts에 hooks export 를 제거합니다

* chore: lint를 적용합니다
* feat: Step 컴포넌트와 컴포넌트의 스타일링을 구현합니다.

* feat: Step 컴포넌트의 인터페이스를 작성합니다.

* feat: 변경된 인터페이스에 따라 컴포넌트의 구조를 간소화합니다.

* feat: controlled, uncontrolled 상태일 때의 status를 제어하기 위한 순수 유틸리티 함수를 작성합니다.

* feat: Context를 사용하여 CardItem이 Context의 Consumer이 되는 구조로 변경합니다.

* feat: css로 선언된 counter를 제거하고, 불필요한 스타일 객체를 제거합니다.

* test: Step 컴포넌트의 스토리 파일을 작성 후 테스트 합니다.

* test: Uncontrolled로 사용할 때의 케이스를 구체화합니다.

* feat: 구현한 Step 컴포넌트를 export합니다.

* feat: Footer에서 export가 누락된 부분을 추가합니다.

* feat: 다른 컴포넌트의 lineHeight가 영향을 미치는 테스트 케이스를 변경합니다.
* feat: interceptor에서 에러를 처리하는 플로우를 throw를 사용하여 직관적으로 개선합니다.
- 암묵적으로 undefined 로 처리되는 에러 플로우 제거
- early return으로 중첩된 조건문 개선

* feat: httpClient의 책임을 줄이고 zod를 활용하여 응답 데이터의 런타임 타입 검증 로직을 구현합니다.
- httpClient는 요청을 수행하고, 응답 데이터의 런타임 타입 검증만 수행합니다.
- 에러 처리는 상위 레이어에 위임

* feat: API 요청에서 스키마를 선택적으로 사용할 수 있도록 변경합니다.
- request 수행 시 스키마가 있으면 검증 수행
- 검증 여부와는 관련 없이 response.data 반환

* feat: 이중으로 에러를 throw하는 구조를 제거하고, 단순화합니다.

* chore(web): react-error-boundary를 설치합니다.

* feat: Suspense 용도로 사용되는 임시 로딩 페이지를 생성합니다.

* feat: ErrorBoundary와 fallback용 임시 ui를 구현합니다.

* feat: 전역 설정에 에러 바운더리와 Suspense를 추가합니다.

* feat: 에러 타입에 유효성 에러를 추가합니다.

* feat: 글로벌 error 핸들러에 zod 스키마 타입 검증 에러 발생 케이스를 추가합니다.

* feat: 환경별 API URL 상수를 추가합니다.

* feat: NonSpecificError에서 undefined error 처리를 추가합니다.
- useRouteError가 undefined를 반환할 수 있는 경우 대응
- 실제 error가 존재할 때만 Sentry로 전송하도록 한 변경점

* feat: 환경별 URL 상수를 외부에 선언 후 import합니다.

* chore: 변경된 API 스펙 적용을 위한 TODO를 추가합니다.

* move: 사용하지 않는 스크립트를 제거합니다.
- assignReviewer 자체가 중복된 리뷰어를 할당하는 문제
- web 작업에 참석하지 않는 유저들에게도 reviewers 가 할당되는 문제

* feat: zod 에러는 sentry로 전송하고 re-throw 하지 않도록 변경합니다.

* test: localhost와 qa 사이트에서 테스트를 위한 테스트 스크립트를 생성합니다.

* feat: httpClient의 타입 추론을 개선합니다.
- Promise<T> 반환을 통해 스키마 사용 시 타입을 자동 추론할 수 있도록 합니다.

* feat: 추가된 API의 엔드포인트를 작성합니다.

* feat: 수정된 Error Code에 맞춰 Status의 타입을 추가합니다.

* feat: refreshToken을 요청하는 로직에 수정된 에러코드를 반영합니다.

* test: API 테스트 코드에 사용해야하는 모든 API를 반영합니다.
* feat: NumericBadge의 empty 스타일의 패딩값을 0으로 수정합니다

* feat: contentBadgeFeedbackStylesMap의 alpha 스타일의 배경색상을 subtle에서 subtler로 변경합니다

* feat: contentBadgeThemeMutedStylesMap의 alpha, outlined의 텍스트 색상을 assistive에서 subtle로 변경합니다

* feat: navigation/global, local의 좌우 padding값을 md에서 lg로 수정합니다

* feat: GlobalNavigationList에 role='list'를 추가합니다
* feat: Label 컴포넌트 color 기본값을 currentColor로 설정합니다

* feat: MenuItem 컴포넌트를 생성합니다

* feat: resetCss에서 a 태그의 color inherit 속성을 제거하고 button padding을 초기화합니다

* feat: MenuItem index.ts에 MenuItemVariant, MenuItemSize 타입을 추가합니다

* feat: MenuItem의 Label를 span 태그로 사용합니다

* feat: resetCss에 ul, button를 수정합니다

* feat: Menu 컴포넌트를 생성합니다

* feat: MegaMenu 컴포넌트를 생성합니다

* refactor: Menu 관련 스토리를 Components/Menu 디렉토리로 이동합니다

* feat: resetCss에 li 태그 outline을 none으로 초기화합니다

* feat: index.ts에 Menu 관련 컴포넌트를 추가합니다

* remove: 쓰지 않는 StyledMenuItem 스타일 컴포넌트를 제거합니다

* feat: menuItem에 hoverStyle transition을 추가합니다

* fix: MenuItem prefixIconVisible, suffixIconVisible 기본값을 true로 변경합니다.

* fix: isPropValid import 경로를 수정합니다
* feat: 제네릭을 이용해 다형성 처리 시 forwardRef 를 돕는 헬퍼 함수를 생성합니다.

* refactor: Label 컴포넌트가 다양한 메타 태그로 사용될 수 있도록 다형성 처리를 적용합니다.

* test: 스토리북에서 Label 컴포넌트의 색상이 주입되는 케이스를 추가합니다.

* feat: 수정된 Label 컴포넌트 관련 속성을 barrel export합니다.

* feat: 수정된 Label 컴포넌트의 영향을 받는 Badge 컴포넌트의 구조를 수정합니다.

* feat: Interaction 유틸리티가 CSS Object 타입을 반환하도록 명시합니다.

* feat: 다형성 처리를 돕는 유틸리티 함수가 displayName을 지원하도록 변경합니다.
- polymorphicForward 래핑 시 displayName을 명시할 수 있도록 처리하는 변경점

* feat: Image 컴포넌트가 다양한 메타 태그를 가질 수 있도록 변경합니다.
- 기존 readOnly 일 때 <button>을 가지는 의미론적 문제점에 대한 개선안

* feat: Compound Component 패턴을 사용하기 위한 내부 Context를 선언합니다.

* feat: Card 컴포넌트의 Image 부분을 구현합니다.

* feat: Compound Component에서 사용하는 스타일링 코드의 초안을 작성합니다.

* feat: CardContent의 구현 및 추가 스타일링을 처리합니다.

* feat: Card의 context 내부에서 titleVariant 변경을 처리하지 않습니다.
- variant 변경 이벤트를 전파할 필요가 없다고 판단

* feat: Card의 base가 되는 Card.Root를 선언합니다.

* feat: 변경된 context를 CardImage에 반영합니다.

* feat: 변경된 context를 스타일링에 반영합니다.

* feat: Card 컴포넌트 중 Title 부분을 구현합니다.

* feat: Card 컴포넌트 중 label을 담당하는 컴포넌트 들을 구현합니다.

* feat: Card 컴포넌트 중 MetaData를 전달하는 요소들을 구현합니다.

* feat: Card 컴포넌트의 Preset를 생성합니다.
- 프리셋에 맞는 인터페이스 생성
- 프리셋은 케이스에 따라 미리 지정된 Compound의 세트입니다.

* feat: Label 컴포넌트의 스타일링과 동일한 액션을 수행하는 유틸리티 함수를 생성합니다.

* feat: 공통 InteractionLayer 를 생성하는 유틸리티 함수를 생성합니다.

* feat: 구현한 컴포넌트들을 barrel export합니다.

* fix: where 로 표현된 의사 클래스의 미적용 문제를 직접 선언으로 해결합니다.

* feat: 변경된 스타일 토큰을 기존 스타일링에 반영합니다.

* feat: Card Root의 다형성 구조를 제거하고 Article Element Type으로 변경합니다.
- 추상화된 비즈니스 레이어 내에서 다형성 구조로 사용하기 위함

* feat: 추상화된 비즈니스 레이어 내에서 Polymorphic한 구조를 사용하도록 변경합니다.

* test: Card 컴포넌트의 스토리북을 작성합니다.

* chore: Storybook에 Globalstyles를 추가합니다.

* feat: forwardRef의 타입캐스팅 방식을 변경하고, ref를 병합하는 방식을 변경합니다.

* feat: Card의 인터렉션을 위한 Overlay를 추가합니다.

* refactor: Card의 root는 div로 명시하고, context 내에서 interactive props을 관리하도록합니다.

* refactor: 스타일링에 overlay를 추가합니다.

* refactor: 추상화된 프리셋 레이어에 유니온 타입을 활용해 특정 태그로 사용될 수 있음을 명시합니다.

* feat: CardImage의 구조를 variant 분기로 다른 구조를 가지도록합니다.

* refactor: Image가 Card 내부에서 사용될 때 크기를 명시적으로 선언합니다.

* refactor: Image가 Card 내부에서 사용될 때 크기를 명시적으로 선언합니다.

* feat: 프리셋에서 캡션의 위치를 변경합니다.

* feat: 불필요한 description을 제거하고, 하위 요소의 말줄임 속성을 통일합니다.

* test: 스토리북의 Card 테스트 케이스를 구체화합니다.

* feat: Card.Root와 Image는 항상 부모의 width와 height를 따르도록 합니다.

* test: Card 스토리북에 description을 작성하고, 부모 컨테이너의 스타일에 width, height를 명시합니다.

* feat: 작성한 컴포넌트들을 export합니다.

* docs: 불필요하게 처리된 개행을 제거합니다.

* merge: dev branch와의 포맷팅 차이를 해결합니다.

* fix: 변경된 Image props에 맞춰서 Banner의 인터페이스를 변경합니다.
- Image가 다형성 구조로, ImageOwnProps로 인터페이스 구조 변경에 대한 변경점

* fix: storybook의 import 경로를 변경합니다.

* fix: 변경된 Label props의 구조를 checkbox에 반영합니다.

* fix: storybook의 import 경로를 변경합니다.

* fix: 스토리 파일의 중복되는 name annotation을 제거합니다.

* feat: Label 컴포넌트의 다형성에 맞춰 의미론적으로 span 태그로 사용하는 부분을 변경합니다.
- Snackbar, InputArea, FileItem 등 아직 명시하지 않은 부분 존재
- 일괄 수정 보다 명확하게 판단되는 컴포넌트들에 대해 우선 수정 적용

* feat: CardOverlay가 context 내부에서 소비되도록 구조를 변경합니다.

* feat: 프리셋에서 CardOverlay에 layout 값을 전달하도록 변경합니다.

* feat: 디자인 의도에 맞춰 가로형의 Post 프리셋에 Image가 고정 크기를 가지도록 변경합니다.

* feat: CardImage의 ratio 객체는 ratio를 선언하지 않았을 때의 fallback으로만 사용하도록 합니다.

* test: 스토리북에서 카드의 부모 container의 크기에 맞춰 Card 컴포넌트의 크기를 결정 짓도록 하고, Interaction의 구체적인 케이스를 추가합니다.

* fix: Interaction에서 offset이 요구되는 부분에 스타일링 버그를 수정합니다.
- Interaction에 offset을 주입
- focus 링이 정상적으로 출력되지 않는 문제 해결

* feat: 상수와 헬퍼 함수를 이용해 스타일링 구조를 개선합니다.

* feat: 스타일링에 중첩 삼항 연산자를 제거하고 early return 하는 구조로 변경합니다.
- 일부 case에 대해 any를 허용

* move: SSOT 관점에 위배되는 스타일링 함수를 제거합니다.

* feat: 스프레드 연산자를 사용해 사용하는 텍스트의 스타일링을 선언합니다.

* feat: CardLabel이 CardRoot로 부터 variant context를 제공 받아 스타일링을 수행하도록 변경합니다.

* feat: Card 프리셋에서 caption 단독 사용을 판단할 수 있는 prop을 추가 후 스타일링을 분기합니다.

* feat: disabled 상태를 전달하여 인터렉션이 발생하지 않도록 변경합니다.

* feat: Label 컴포넌트의 기본 메타 태그 변경점을 todo에 작성합니다.

* feat: import 경로 에러를 해결합니다.
* feat: GlobalNavigation.Item의 position을 relative로 수정합니다. Content를 Item의 중앙에 위치하도록 수정합니다.

* fix: GlobalNavigation의 NavigationMenu import 경로를 수정합니다

* fix: megaMenu의 minHeight를 제거합니다

* fix: megaMenu의 gap 값을 수정합니다

* feat: GNB UI를 구현합니다

* feat: PATH 생성 및 GNB에 href를 연결합니다

* feat: GlobalNavigation.MobileMenuButton을 분리합니다.

* chore: jds의 utils를 외부에서 사용할 수 있도록 설정합니다

* fix: GlobalNavigation의 viewport에 따른 크기를 수정합니다

* feat: 모바일 버전의 사이드바를 구현합니다.

* fix: theme 빌드 에러를 수정합니다. jds/tokens/index.ts를 외부에서 사용할 수 있도록 설정합니다.

* feat: style에서 className을 사용하도록 수정합니다

* fix: 스타일을 emotion에서 tailwind 적용 방식으로 변경합니다
* chore: Header 컴포넌트 임시 비활성화

* feat: 직군별 아이콘 추가 (frontend, backend, product, design)

* feat: 메인 페이지 Hero Section 구현 및 텍스트 로테이션 애니메이션 추가

* feat: Callout 컴포넌트에 className prop 추가 및 width 100% 적용

* feat: EmptyState 컴포넌트 export 추가

* feat: semantic-margin-5xl 토큰 추가

* feat: IntroSection 컴포넌트 구현 및 메인 페이지 적용

* feat: Banner.Image 컴포넌트 스타일 개선

* feat: CycleSection 컴포넌트 구현 및 메인 페이지 적용

* feat: Banner.Image 그라데이션 색상을 테마 토큰으로 변경

* feat: JoinSection 컴포넌트 구현 및 메인 페이지 적용

* feat: Logo 컴포넌트에 inverse hierarchy 추가

* feat: Footer 컴포넌트에 static inverse 토큰 적용

* feat: Layout에 jds Footer 컴포넌트 적용

* feat: JoinSection 모바일 반응형 레이아웃 적용

* refactor: 메인 페이지 섹션별 스크롤 트리거 설정 조정

* chore: 단일 파일 섹션 폴더들을 sections 폴더로 병합

* refactor: HeroSection 그라디언트에 디자인 토큰 적용

* refactor: IntroSection 배경색에 테마 대응 토큰 적용

* fix: Footer Divider가 테마에 영향받지 않도록 수정

* fix: HeroSection Label 텍스트 색상 흰색으로 고정

* feat: Banner.Image fullScreen 옵션 추가로 뷰포트 전체 높이 지원

* fix: Banner 컴포넌트에서 불필요한 fullScreen 옵션 제거

* style: JoinSection 레이아웃 하단 패딩 추가
* feat: 아코디언 컴포넌트를 구현합니다

* feat: 아코디언의 애니메이션 토큰값을 변경합니다.

* feat: Tab 컴포넌트를 다시 구현합니다

* feat: 아코디언 컴포넌트 스타일을 수정합니다

* feat: jds/src/components/index.ts에 Tab 컴포넌트를 추가합니다

* feat: Tab 컴포너트의 borderBottom이 겹쳐보이도록 수정합니다

* feat: 아코디언의 content에 textStyle을 지정합니다

* feat: Tab.List의 border 크기를 1px로 수정합니다

* feat: Accordion의 isStretched에 따른 padding 값을 수정합니다

* feat: FAQ 페이지를 구현합니다

* feat: 아코디언, tab의 줄바꿈 및 정렬을 수정합니다

* feat: faq 모바일 반응현 UI를 구현합니다

* feat: 랜딩페이지에서만 GNB가 항상 다크모드가 되도록 수정합니다.

* feat: PagesContainer의 배경색상에 토큰 변수를 사용합니다

* feat: tailwind global.css에 브레이크포인트 prefix를 지정합니다

* feat: StyledAccordionTrigger에 색상 토큰을 지정합니다

* feat: 아코디언 레이블에 textWrap: wrap 속성을 설정합니다

* feat: FAQ 모바일 뷰포트 크기를 360px으로 수정합니다

* remove: 아코디언 컴포넌트에서 중복되는 textStyle 코드를 제거합니다.

* remove: 사용하지 않는 import 를 제거하여 빌드에러를 수정합니다

* feat: FAQ 페이지 margin top 40px를 추가합니다

* feat: faq 젝트 이메일에 underline 스타일을 추가합니다
* feat: 비전 페이지 및 Hero 섹션 구현

* feat: ProjectStartSection, GoalSection 섹션 구현

* feat: 비전 페이지 MemberSection 구현

* feat: 비전 페이지 GrowthStorySection 구현

* fix: Footer 개인정보처리방침 링크 수정

* fix: GNB 클릭 이벤트 블로킹 문제 수정

* refactor: MemberSection에 변경된 Tab 컴포넌트 적용 및 breakpoint 수정

* refactor: 랜딩 페이지 breakpoint 수정
* feat: dialog 컴포넌트 구현

* feat: dialog 컴포넌트 스토리북 추가

* fix: Title 컴포넌트 textAlign prop 값 추가
* feat: GlobalNavigation.Item의 position을 relative로 수정합니다. Content를 Item의 중앙에 위치하도록 수정합니다.

* fix: GlobalNavigation의 NavigationMenu import 경로를 수정합니다

* fix: megaMenu의 minHeight를 제거합니다

* fix: megaMenu의 gap 값을 수정합니다

* feat: GNB UI를 구현합니다

* feat: PATH 생성 및 GNB에 href를 연결합니다

* feat: GlobalNavigation.MobileMenuButton을 분리합니다.

* chore: jds의 utils를 외부에서 사용할 수 있도록 설정합니다

* fix: GlobalNavigation의 viewport에 따른 크기를 수정합니다

* feat: 모바일 버전의 사이드바를 구현합니다.

* fix: theme 빌드 에러를 수정합니다. jds/tokens/index.ts를 외부에서 사용할 수 있도록 설정합니다.

* feat: style에서 className을 사용하도록 수정합니다

* fix: 랜딩페이지일 경우에만 GlobalNavigationBar(empty)가 항상 다크모드가 되도록 수정합니다

* feat: 팀 프로젝트 페이지 UI 구현 및 API를 연동합니다.

* fix: GNB에 pointer-events-none 속성을 추가합니다

* fix: 다크/라이트 모드 전환을 위해 PagesContainer의 배경색을 테마 변수 사용으로 변경합니다.

* feat: 팀 프로젝트 페이지 반응형 UI를 구현합니다

* feat: 기존 Project 컴포넌트를 deprecated 처리합니다

* chore: 포지션 아이콘을 추가합니다

* feat: 프로젝트 상세 페이지 desktop UI를 구현합니다

* feat: 프로젝트 목록 조회 페이지 너비를 설정합니다.

* feat: 프로젝트 상세 페이지 UI 구현 및 API를 연동합니다

* feat: 프로젝트 상세 페이지 반응형 UI를 구현합니다

* feat: 프로젝트 목록 조회 페이지에서 무한스크롤을 적용합니다

* feat: 프로젝트 목록 아이템의 body 값을 description 내용으로 변경합니다.

* fix: 빌드 에러를 해결합니다

* feat: 변경된 팀프로젝트 목록 조회 API를 연동합니다.

* fix: TeamProject에서 semesterMap을 수정합니다

* feat: 팀프로젝트 상세 페이지의 변경된 API 데이터 구조를 반영합니다

* feat: map 함수 사용되는 곳에 key 속성을 작성합니다

* feat: 모바일 접근 불가 페이지를 제거합니다

* feat: 팀 프로젝트 상세 페이지 배너 사이즈 비율을 수정합니다

* fix: 빌드 에러를 수정합니다

* fix: 사용하지 않는 route를 제거하여 빌드 에러를 수정합니다

* remove: 과거 Project 페이지 컴포넌트를 제거해 빌드 에러를 해결합니다

* feat: marginTop으로 인해 헤더가 흰색 배경으로 보이는 현상을 해결합니다

* feat: 프로젝트 상세 페이지 반응형 UI를 구현합니다
* feat: 미니 스터디 페이지 구현

* feat: 라이브 세션 페이지 구현

* refactor: 라이브 세션 기수 필터링을 semesters api 기반으로 개선

* chore: 사용하지 않는 Project 관련 import 제거
* chore: @use-funnel 패키지를 설치합니다.
- 지원 플로우에 funnel 구조 도입을 위함

* feat: funnel 구조를 사용하기 위해 step별 context를 정의합니다.

* feat: @use-funnel에서 권장하는 패턴에 맞춰 funnel 구조를 개선합니다.
- 불필요한 옵셔널 props 제거
- 타입 가드를 제거하고 런타임에서 직접 검사할 수 있는 방식

* feat: 지원 플로우에서 사용하는 공통 헤더 컴포넌트를 구현합니다.
- current 유무에 따라 Step의 렌더링을 결정
- jobFamily가 있다면 데이터 객체를 사용
- 지원 플로우, 핀 재설정, 이어서 작성하기 플로우 모두 공통적으로 사용하는 컴포넌트

* feat: 지원하기 플로우에서 공통적으로 사용하는 폼을 구현합니다.
- 이메일 입력 폼
- 인증번호 입력 폼

* feat: 지원 상태를 확인할 수 있는 컴포넌트를 생성합니다.
- STEP을 동적으로 할당할 때 사용

* feat: #291의 Dialog 컴포넌트를 사용합니다.

* feat: 지원단계에서 사용하는 공통 레이아웃을 구현합니다.

* feat: 지원하기 Funnel에서 이메일 인증을 수행하는 Step 컴포넌트를 구현합니다.

* feat: 지원하기 Funnel에서 존재하는 이메일의 지원상태를 검증하는 Step 컴포넌트를 구현합니다.

* feat: 타이머 동작을 수행하는 커스텀 훅을 구현합니다.

* refactor: 불필요한 state를 제거하고 AuthCode를 다루는 로직에 집중합니다.
- 타이머와 같은 부수적인 로직은 커스텀 훅으로 전환
- 불필요하게 선언된 외부 의존성 컴포넌트 제거

* feat: AuthCodeForm에서 실제 비즈니스 로직이 수행되는 변경점을 반영합니다.

* refactor: getter 함수 패턴을 제거하고 validation 정책을 선언부에 드러나도록 변경합니다.
- 순수 함수를 통해 명시적으로 상태를 드러내기 위함
- JSX 내에서 getter 함수의 가독성 저하 문제 해결

* feat: 약관 동의 체크박스 그룹 컴포넌트를 구현합니다.
- 개인정보 수집 및 이용 동의
- 회비 및 보증금 납입 정책 동의

* refactor: TextField 대신 TextField.Button을 사용하고, 컴포넌트 렌더링 구조를 변경합니다.
- CheckBoxGroup 추가
- validation 조건(정책)을 명시적으로 선언
- mutation 호출 시 불필요한 isPending 값 제거(다음 Step으로 이동하기 때문)

* feat: 이메일 인증 Step에서도 CheckBox의 상태를 전달하도록 변경합니다.

* feat: PIN 로그인에서 공통으로 사용하는 TextField 컴포넌트를 작성합니다.

* feat: validation 상태를 return하는 유틸리티 함수를 생성합니다.

* feat: CheckBox를 제거하고, 폼 상태를 react-hook-form에서만 관리하도록 변경합니다.

* feat: AuthCodeForm의 readonly UI를 재사용하기 위한 컴포넌트를 작성합니다.

* feat: Apply 단계에서 필요한 공통 컴포넌트를 export합니다.

* feat: 이메일 인증 단계에서부터 CTA 버튼이 출력되도록 변경합니다.

* feat: PIN 인증 단계를 담당하는 컴포넌트를 구현합니다.

* feat: 지원자 프로필을 작성하는 Step 컴포넌트를 작성합니다.

* feat: jobFamily에 대한 레이블 데이터는 지원 안내 페이지에서만 관리하도록 변경합니다.

* feat: 지원 완료 Step 컴포넌트를 작성합니다.

* feat: 질문 제목과 입력 필드를 감싸는 공통 레이아웃을 생성합니다.

* feat: Text 형태로 렌더링 되는 필드들을 구현합니다.
- InputArea를 사용하는 TextQuestionField
- TextField를 사용하는 UrlQuestionField

* feat: Apply에서 지원서 작성을 담당하는 Step을 구현합니다.

* feat: 업로드된 파일 아이템을 담당하는 순수 표시 컴포넌트를 구현합니다.
- 업로드 로직은 FileQuestionField에서 컬렉션 단위로 관리
- 클릭 시 파일 미리보기 및 삭제 버튼 표시용

* feat: 포트폴리오 파일을 다루는 포맷팅 함수들을 생성합니다.
- tsDocs로 상세 설명

* feat: File 타입을 가지는 객체 데이터에 대한 필드 컴포넌트를 구현합니다.
- 공통 Wrapper + Uploader로 구성

* feat: 신규 생성한 포트폴리오 포맷팅 유틸리티를 export합니다.

* feat: 수정된 포트폴리오 등록 로직을 RegistrationStep에 반영합니다.

* feat: 지원서 작성에 필요한 상수들을 선언합니다.

* feat: 지원서 등록에 사용하는 컴포넌트들을 export합니다.

* feat: 지원서 작성 시의 form 상태와 임시 저장 상태를 초기화 하는 커스텀 훅을 구현합니다.

* feat: registrationStep을 export합니다.

* feat: 이어쓰기 Funnel의 첫단계를 담당하는 Step 컴포넌트를 구현합니다.
- 이메일+PIN 검증으로 본인확인을 담당
- PIN 재설정에서 들어오는 경우도 고려

* feat: 이어쓰기 단계에서 사용자 인증 시 pending 상태에서 스피너가 도는 액션을 추가합니다.

* feat: 지원 상태를 담당하는 step들을 export합니다.

* feat: 신규 회원 지원하기 플로우를 관리하는 Funnel 컴포넌트를 구현합니다.
- 기존 회원의 이어쓰기는 ContinueWritingFunnel에서 담당

* feat: 기존 회원이 이어쓰기를 할 수 있는 Funnel을 구현합니다.

* feat: ApplyFunnel 안에서 지원자 정보(step2)에 해당하는 데이터를 전달하지 않도록 변경합니다.

* feat: PIN 재설정 Funnel에서 이메일 입력과 인증번호를 받는 STEP 컴포넌트를 구현합니다.
- 이메일 + 인증번호 받기
- 기존회원은 인증번호 입력란 표시 후 새 PIN 설정으로 이동
- 미가입 회원의 경우 에러 메시지 표시

* feat: PIN 재설정 Funnel에서 새로운 6자리 PIN 설정을 담당하는 STEP 컴포넌트를 작성합니다.
- 새로운 6자리 PIN 설정
- 완료 시 returnTo 경로로 이동, 토스트 표시

* feat: PIN 재설정 플로우를 관리하는 Funnel 컴포넌트를 구현합니다.
- 모든 단계에서 returnTo 사용
- funnel 외부로 나가는 경우 navigate 사용

* feat: Auth Step에서 사용하는 컴포넌트들을 export합니다.

* move: 레거시 코드들을 제거합니다.

* feat: API 응답에 대한 타입을 스키마로 설정합니다.
- API 응답은 외부 데이터이기 때문에 런타임 검증이 필요
- request 시 payload나 클라이언트 도미엔 전용 타입의 경우 해당 스키마가 불필요

* feat: 스키마로 선언된 타입은 스키마 파일에서 추출하여 사용하도록 변경합니다.
- SSOT를 보장

* feat: 스키마로 선언된 타입은 스키마 파일에서 추출하여 사용하도록 변경합니다.
- SSOT를 보장

* feat: Apply 도메인에서 사용하는 Query Key와 Query Option을 선언합니다.
- queryKey와 queryFn은 함께 정의해서 관리
- 의미 단위로 key 분리

* feat: Apply 도메인에서 사용하는 API 호출부를 factory 패턴을 사용하여 선언합니다.

* feat: 스키마로 선언된 타입은 스키마 파일에서 추출하여 사용하도록 변경합니다.
- SSOT를 보장

* feat: API의 엔드 포인트를 최신화합니다.

* feat: Dialog 컴포넌트의 객체 데이터를 추가합니다.

* feat: 스키마로 선언된 타입은 스키마 파일에서 추출하여 사용하도록 변경합니다.
- SSOT를 보장

* feat: JDS에서 export되고 있지 않던 컴포넌트들을 export 합니다.

* feat: Layout에서 Toast 컴포넌트를 제거합니다.

* feat: Toast를 JDS의 Provider를 이용해 사용합니다.

* move: API 테스트용 파일을 제거합니다.

* feat: Apply 도메인의 API 모듈을 export합니다.

* feat: Label과 Value로 이루어진 프로필 타입을 선언합니다.
- (value-label) 형태의 상수 데이터

* feat: GlobalErrorHandler에서 토스트 출력 방식을 변경합니다.

* feat: Apply Funnel 별 라우터 경로를 추가합니다.

* feat: Apply Funnel 별 라우터 경로를 추가합니다.

* feat: 레거시 Navigation 컴포넌트에 수정된 라우팅 경로를 반영합니다.

* feat: 스키마로 선언된 타입은 스키마 파일에서 추출하여 사용하도록 변경합니다.
- SSOT를 보장

* feat: 스키마로 선언된 타입은 스키마 파일에서 추출하여 사용하도록 변경합니다.
- SSOT를 보장

* feat: 업데이트된 상수 데이터를 추가합니다.

* feat: 토스트 출력 로직은 mutation 내부에서 처리합니다.

* feat: 페이지 Container에 기본 배경색을 변경합니다.

* feat: 지원자 정보 입력 폼 훅의 구조를 변경합니다.
- form이 모든 필드의 상태와 유효성 검사를 담당
- Step 컴포넌트는 UI 조립만 하도록

* feat: 이메일 인증 번호의 유효성은 제출 시에만 검증하도록 변경합니다.

* feat: 변경된 라우팅 경로를 반영합니다.

* feat: 지원자 정보 데이터 스키마를 추가합니다.

* feat: 변경된 funnel 구조에 맞춰 타입을 수정합니다.
- ApplyFunnel에서 다음 Step으로 넘어갈 때 ProfileData를 전달하지 않음

* feat: 변경된 API에 맞춰 Apply 도메인에 사용되는 커스텀 훅을 구현합니다.
- React Query v5 콜백 시그니처 적용
- Factory Pattern으로 선언된 쿼리키 사용

* feat: 수정된 커스텀 훅을 apply 관련 컴포넌트에 적용합니다.

* merge: dev branch의 변경사항을 merge 합니다.

* feat: 지원 안내 페이지에 사용하는 png assets을 추가합니다.

* feat: 지원 목록 페이지를 퍼블리싱 합니다.

* feat: 사용하지 않는 라우트 경로를 제거합니다.

* feat: 지원 목록 페이지를 라우터에 추가합니다.

* feat: GNB에 지원하기 클릭시 이동하는 path를 추가합니다.

* feat: 지원 완료 페이지에 사용하는 이미지를 추가합니다.

* feat: 지원 목록 페이지의 라우팅 경로를 SideBar에 추가합니다.

* feat: 지원 완료 Step에서 누락된 이미지를 추가합니다.

* feat: 지원 상세 페이지를 퍼블리싱합니다.

* feat: 지원 상세 페이지 중 Tab에 들어갈 내용을 추가합니다.

* feat: (JDS)Accordion 컴포넌트에 size prop을 추가합니다.

* feat: (JDS)Accordion 컴포넌트에 width를 조정합니다.

* feat: 미작성된 Tab Content 항목을 작성합니다.

* feat: (JDS)Accordion의 Label이 남은 공간을 다 채우도록 변경합니다.

* feat: 객체 데이터에 값들을 추가합니다.

* feat: 퍼블리싱 시 누락된 디자인 부분을 조정합니다.

* feat: CTA 버튼이 부모 요소에 영향을 받지 않도록 변경합니다.

* feat: Email 템플릿 코드 파라미터를 수정합니다.
-API 스펙 변경에 따른 수정 사항

* feat: Email 템플릿 코드 파라미터를 수정합니다.
-API 스펙 변경에 따른 수정 사항

* feat: interceptor가 항상 응답을 unwrap하여 사용하도록 변경합니다.
- 실제 데이터를 사용
- 객체 데이터(응답 형식)은 항상 truthy 하기 때문

* feat: URL params로 Tab을 제어할 수 있도록 변경합니다.

* feat: 미구현된 라우팅 로직과 타이머 메시지를 수정합니다.

* feat: 토스트 표시 문구를 변경합니다.

* feat: 이메일 인증 실패 시 에러 토스트를 출력합니다.
- onError시 토스트 출력으로 로직 변경
- 기타 레이아웃 조정

* feat: 인증번호 검증 API에 주어지는 params 명을 정정합니다.

* feat: 인증번호 검증 API 실패 시 토스트 로직을 추가합니다.

* feat: Apply 단계에 레이아웃 스타일을 수정합니다.

* feat: 체크박스의 디자인을 디자인 에셋에 맞춰 변경합니다.

* feat: 핀번호 설정 디자인을 디자인 에셋에 맞춰 변경합니다.

* feat: 회원 등록 API의 경로를 API 스펙에 맞춰 변경합니다.

* feat: 핀번호 유효성 검증 문구를 변경합니다.

* feat: (JDS)Select의 Item이 overflow되도록 변경합니다.

* feat: (JDS)Input 컴포넌트의 Label의 타입을 ReactNode로 변경합니다.
- Label 위치에 오는 스타일링의 다양성에 대응하기 위한 수정

* chore: (Web) Theme에 미기재된 색상을 추가합니다.

* feat: 지원자 정보 입력 Step에 구조를 디자인 에셋에 맞게 수정합니다.

* feat: 지원자 등록 폼에서 기본 값을 전부 undefined로 할당합니다.

* feat: 프로필 저장 API 호출 시 request body에 jobFamily를 추가합니다.

* feat: queryFn에서 404 에러를 catch하여 빈 데이터를 반환하도록 변경합니다.
- [GET] /apply/temp 호출 시 404 응답은 정상 케이스로 처리
- 신규 사용자의 경우 불러올 데이터가 없기 때문

* feat: (JDS) Uploader의 크기 설정을 변경합니다.
- width 가 고정 값으로 선언되어있던 문제

* feat: 상수 데이터의 값을 변경합니다.

* feat: 지원서 문항 목록에 isRequired 값에 따라 추가 텍스트를 삽입합니다.

* feat: RegistrationStep의 레이아웃을 조정합니다.

* feat: Suspense와 ErrorBoundary를 결합한 AsyncBoundary 컴포넌트를 선언합니다.

* feat: Apply 관련 페이지들의 공통 레이아웃을 선언합니다.
- AsyncBoundary를 통해 공통 Suspense/ErrorBoundary 처리
- Apply 플로우에서만 다른 Layout 사용

* feat: Apply 플로우에 사용되는 페이지를 생성합니다.

* feat: async-boundary에서 선언한 값들을 export합니다.

* merge: 병합 과정에서 발생하는 에러를 해결합니다.

* feat: (JDS) InputArea의 스타일링 속성을 변경합니다.
- 브라우저 마다 다르게 적용되는 속성 제거

* feat: (JDS) 토스트의 position을 변경합니다.
- relative일 때도 같은 위치에 적용하기 위함

* feat: 상수 데이터의 값을 변경하여 적용합니다.

* feat: 이어쓰기에서 사용되는 Step은 독립적인 TextField를 사용하도록 변경합니다.

* feat: 인증 단계에서 사용하는 CTA 버튼을 분리합니다.

* feat: 이어서 작성하기 플로우에서 본인확인 후 status API 호출하도록 변경
  - ContinueWritingFunnel에서 URL 파라미터 대신 /apply/status API로 실제 상태 확인
  - 이미 제출 완료/이어서 작성할 내용이 없는 경우 안내 후 리다이렉트
  - tempSavedStep URL 파라미터 및 관련 prop 제거

* feat: 스키마에서 실제 response와 일치하지 않는 부분을 optional로 변경합니다.

* feat: (JDS) FileItem의 색상을 변경합니다.

* feat: 상수 데이터를 수정합니다.

* feat: 지원 완료 페이지의 디자인을 디자인 스펙에 맞춰 변경합니다.

* feat: 지원 완료 페이지의 디자인을 디자인 스펙에 맞춰 변경합니다.

* feat: useUploadFileToS3Mutation에서 에러 토스트 옵션을 추가합니다.

* feat: 에러 토스트는 catch 블록에서 한번만 출력되도록 변경합니다.
* style: HeroSection에 고정 다크 테마 배경색 적용

* fix: 랜딩 페이지에서 새로고침 시 스크롤이 최상단으로 이동되도록 수정

* fix: 모바일/태블릿에서 CycleSection 위로 스크롤 시 이전 섹션으로 이동되지 않는 문제 수정

* style: HeroSection 상단에 그라디언트 오버레이 추가

* fix: 모바일에서 랜딩 페이지에 가로 스크롤이 발생하는 문제 수정

* fix: IntroSection EmptyState가 1열일 때 전체 너비 차지하도록 수정

* fix: MemberSection 이미지 로드 실패 시 대체 이미지 표시되도록 수정

* fix: miniStudy, jectalk, semester API 응답 타입 불일치 수정

* refactor: IntroSection Hero 컴포넌트 통합 및 불필요한 wrapper 제거

* feat: JoinSection 지원하러 가기 버튼 클릭 시 /apply/list 페이지로 이동하도록 수정

* refactor: live-session 페이지에서 기수 선택 select 관련 코드 제거

* refactor: mini-study 페이지에서 기수 선택 select 관련 코드 제거

* refactor: MemberSection useState 불필요한 타입 명시 제거
* feat: Footer를 별도의 컴포넌트로 분리합니다

* feat: 404 에러 페이지 UI를 구현합니다

* feat: 공용 에러 페이지 UI를 구현합니다

* feat: 404 에러 페이지 UI를 수정합니다

* remove: 사용하지 않는 import를 제거합니다

* feat: 서비스 점검 중 페이지 UI를 구현합니다

* feat: 토큰 만료 다이얼로그 내용을 수정합니다

* fix: 토큰 변수 오타를 수정합니다
* feat: GNB sideBar가 열려있을 때 스크롤 기능을 비활성화합니다

* fix: FAQ 페이지에서 중복되는 질문과 답변을 제거합니다

* feat: 파비콘을 변경합니다
* fix: 지원 안내 페이지 로우레이블 밀림 현상을 해결합니다.

Card의 Post 레이아웃 구조를 변경함.

Card의 Post 컴포넌트 이슈
- variant='label' 구현 안되어있음. 'title'만 되어있음.
- 타이틀 요소가 말줄임 처리되어있음.

* feat: Card 타이틀 textWrap을 warp 속성으로 변경합니다

* fix: step의 레이블이 줄바꿈 되지 않도록 합니다

* fix: 팀프로젝트 목록 및 상세 페이지 조회 실패 문제를 해결합니다

* fix: 스토리북 에러를 해결합니다

* fix: GNB 스크롤 발생/미발생 시 높이 값 차이 발생 문제를 해결합니다

* fix: ProjectDetail 페이지에서 발생하는 빌드 에러를 수정합니다

* fix: TeamProject에서 발생하는 사용하지 않는 import를 제거하여 빌드 에러를 해결합니다
* feat: 이메일을 가지고 프로필 등록 여부를 파악할 수 있는 API를 추가합니다.

* feat: apply status 를 검증하는 쿼리를 suspenseQuery 형태로 변경합니다.
- 해당 쿼리 호출 전에 await을 해야하는 상황이 발생

* feat: 이메일을 가지고 프로필 등록 여부를 파악할 수 있는 API의 엔드포인트와 호출부를 선언합니다.

* feat: 지원상태에서 사용하지 않는 스키마를 제거합니다.

* feat: 회원 인증과 지원 인증 상태를 판단하는 API를 분리해서 적용합니다.

* feat: 불필요한 step을 제거하고 인증 책임을 EmailVerificationStep에 위임합니다.

* feat: 이어서 작성하기 단계에서 프로필 작성 여부를 먼저 검증하고, 지원 상태를 조회하도록 변경합니다.

* feat: 사용자 인증을 관리하는 커스텀 훅을 생성하여 pending 상태로 state를 대체합니다.

* feat: Dialog의 상수 데이터를 변경합니다.

* feat: (JDS) Dialog 반응형과 props 구조를 개선합니다.

* fix: 제출 완료 시 Dialog의 hierachy를 변경합니다.

* fix: 프로필 작성 시 잘못 적용되어있던 required 스키마를 변경합니다.

* fix: 상수 데이터를 업데이트합니다.

* fix: 관심 도메인 선택 관련 정책 상수를 정의하고 render 내부에 정책을 명확한 이름으로 선언합니다.

* fix: 관심 도메인의 반응형 그리드를 재적용합니다.

* fix: Tab 내부 Content를 상수 데이터 기반으로 출력하는 구조로 변경합니다.

* fix: 파일 업로드 시 누락된 토스트 메시지를 추가합니다.
* feat: feat: 지원서 작성 페이지 이탈 차단 기능 구현

* feat: 브라우저 뒤로가기/새로고침 시 이탈 확인 다이얼로그 추가

* chore: 테스트용 funnel 초기 설정 복구

* chore: dev 브랜치 머지 및 미사용 import 정리

* fix: 미니스터디, 라이브세션 페이지 상단 여백 mt에서 pt로 변경

* refactor: useNavigationBlock 전역 상태를 useRef로 변경 및 최적화
* chore: 모노레포 구조로 변경된 build 디렉토리를 deploy.yml에 반영합니다.

* chore: Pull Request 시에 빌드 테스트를 스크립트에 추가합니다.
@WonJuneKim WonJuneKim self-assigned this Dec 29, 2025
@WonJuneKim WonJuneKim added the release 배포 관련 label Dec 29, 2025
@vercel

vercel Bot commented Dec 29, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
ject-official-web-site-client-web Ready Ready Preview, Comment Dec 29, 2025 9:55am

@WonJuneKim WonJuneKim merged commit 1d2bec7 into main Dec 29, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release 배포 관련

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants