Conversation
* 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 구현
* 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 시에 빌드 테스트를 스크립트에 추가합니다.
* release/v2.0.0 (#329) * feat: 프로젝트 개발 환경 세팅 (#2) * feat: 프로젝트 초기 세팅 * feat: eslint "import/order" 설정 추가 * fix: prettier "semi" 설정값 true로 수정 * feat: 디자인 시스템 및 스타일링 셋업 (#5) * 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: 주석 제거 * chore: Qodana ci 파이프라인 구축 (#7) * Add qodana.yaml file * Add github workflow file --------- Co-authored-by: Qodana Application <qodana-support@jetbrains.com> * chore: 스토리북 환경 구축 및 CI 설정 (#10) * 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: 폴더 구조 세팅 및 절대 경로 처리 (#13) * feat: 폴더 아키텍처 설정 (임시파일생성) * chore: 절대 경로 처리를 위한 @types/node 모듈 설치 * feat: @(src) 절대 경로 설정 * fix: main.tsx 절대 경로로 import 하기 * chore: Tanstack query 관련 모듈 설치 * feat: eslint-plugin-query 플러그인 설정 * style: 파일 import 시 확장자 제거 * chore: Qodana 스크립트 수정 (#15) * feat: 정적 분석 스크립트에 커스터마이징 옵션을 추가합니다. * feat: 스크립트 실행 시 의존성 설치를 선행하도록 처리합니다. * chore: yml파일의 네이밍을 수정합니다. * feat: Interaction 컴포넌트 구현 (#17) * 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: Label 및 Badge 컴포넌트 구현 (#20) * feat: Badge 컴포넌트 구현 * feat: Label 컴포넌트 구현 * feat: Badge 컴포넌트 재구현 Label 컴포넌트 이용 * feat: Badge 스토리북 작성 * feat: Label 스토리북 작성 * style: Label 객체 구성 수정 및 객체명 변경 * style: 코드 정리 * rename: 스토리 이름 Primary로 변경 * fix: 인터렉션 컴포넌트 수정 및 storybook 설정 (#22) * 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, Callout, Hero 컴포넌트 구현 (#23) * 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: progress 컴포넌트 구현 (#29) * 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) * feat: 범용성있는 버튼 컴포넌트 구현 (#30) * 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: 아이코노그래피를 기반으로 아이콘 컴포넌트 구현 (#32) * 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: 인터랙션 컴포넌트 재구현 및 semantic 컬러 토큰 업데이트 (#35) * 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: Input 컴포넌트 구현 (#36) * 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 사용 * feat: 지원하기 페이지 UI 구현 (#40) * 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: Card와 Post 컴포넌트 구현 (#37) * 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: 탭 컴포넌트 구현 (#39) * 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 페이지 UI 구현 및 아코디언 컴포넌트 구현 (#53) * 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에 직접 조건부 처리 방식으로 변경 * feat: Select 컴포넌트 구현 (#44) * 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: SnackBar 컴포넌트 구현 (#45) * 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를 옵셔널에서 필수로 변경합니다. * Fix: 인터렉션 재구현 3차 (#60) * feat: 인터렉션 스타일 네임 생성 * feat: global.css에 interaction.css 등록 * remove: 기존 인터렉션 컴포넌트, 스토리북, 스타일 파일 삭제 * fix: 기존 인터렉션 적용되어있던 컴포넌트에 새로운 인터렉션 스타일 적용 * feat: transition-faster-fluent 스타일 정의 * refactor: transition-faster-fluent 공통으로 들어가는 곳에 적용 * fix: Variant, Density 타입 생성하여 eslint 에러 해결 * feat: Header, Footer 관련 컴포넌트 구현 및 Layout 적용 (#56) * 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 및 Post 컴포넌트 Interaction 주입 (#55) * 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: Role 컴포넌트 구현 (#63) * 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 컴포넌트 구현 (#61) * feat: Dialog 컴포넌트 구현 * feat: useDialog 훅 생성 * feat: Dialog 스토리북 작성 * remove: 불필요한 index.ts 파일 삭제 * refactor: useDialog useState 타입 명시 제거 * fix: props 네이밍 변경 및 btnLayout에 따른 버튼 위치 수정 + 스토리북 수정 * feat: Dialog BlockButton className 제거 * chore: favicon 설정 (#58) * chore: 파비콘 png 추가 * chore: index.html 파비콘 설정 * feat: 아이콘 추가 (#74) * chore: 새로운 아이콘 svg 파일 6개 추가 * feat: 아이콘 컴포넌트에 새로운 아이콘 추가 * feat: 아이콘 스토리북 업데이트 (새로운 아이콘 6개 추가) * fix: HeroIndex 컴포넌트 수정 (#80) * fix: HeroIndex의 Badge 배경색상/폰트색상 주입가능하도록 props 수정 * feat: HeroIndex 스토리북 작성 수정 * feat: 활동 페이지 UI 구현 (#77) * feat: 활동 페이지 router 설정 * feat: 임시 데이터 이용하여 Activity 페이지 UI 구현 * feat: Toast 구현 (#67) * feat: toastStore 생성 * feat: Toast 컴포넌트 구현 및 toast 애니메이션 정의 * feat: useToast 훅 생성 * feat: Toast, useToast 스토리북 작성 * feat: Layout에 Toast 컴포넌트 추가 * refactor: ToastType bg -> backgroundColor로 네이밍 수정 * refactor: Toast 컴포넌트 useState 타입 추론 방식으로 변경 * refactor: Toast className clsx 사용 * remove: useToast 삭제 * fix: useToast -> useToastActions 사용으로 스토리북 수정 * feat: toastStore 스프레드 연산자 사용으로 불변성 지키기 * refactor: animation.css 생성 및 애니메이션 관련 css 코드 분리 * feat: 메인페이지 UI 구현 (#78) * feat: 애니메이션 부분에 쌓이는 이미지를 추가합니다. * feat: Main 페이지의 틀을 구현합니다. * feat: 애니메이션이 들어가는 부분을 컴포넌트화합니다. * feat: AnimatedSection의 스토리북을 추가합니다. * chore: gsap 라이브러리를 설치합니다. * refactor: gsap를 이용해 애니메이션을 재구성합니다. * feat: AnimatedSection을 메인페이지에 적용합니다. * feat: 메인페이지를 라우트에 추가합니다. * feat: 메인페이지의 두번째 섹션을 구현합니다. * refactor: HeroIndex의 width에 100%를 부여합니다. * refactor: CalloutNumerical의 width에 100%를 부여합니다. * feat: 메인페이지의 세번째 section을 구현합니다. * feat: 공통적으로 적용되는 프레임의 className을 상수화합니다. * feat: Tab 컴포넌트에 cursor pointer 스타일을 추가합니다. * feat: 메인페이지의 네번째 section을 구현합니다. * refactor: Hero 컴포넌트의 content를 children 형태로 받도록 수정합니다. * refactor: HeroIndex 컴포넌트의 content를 children 형태로 받도록 수정합니다. * feat: 메인페이지의 마지막 section을 구현합니다. * refactor: 수정된 HeroIndex 컴포넌트의 props 구조를 반영합니다. * move: 불필요한 import 문을 제거하고 정렬합니다. * rename: 공통 wrapper의 스타일 명칭을 직관적으로 변경합니다. * refactor: Hero 컴포넌트가 badge의 조건부 렌더링을 수행하도록 수정합니다. * move: 사용하지 않는 badgeText props 값을 제거합니다. * fix: 애니메이션을 위한 section의 스타일을 요구사항에 맞춰 변경합니다. * feat: 메인페이지에 scroll 스타일을 추가합니다. * feat: 메인 페이지에 스크롤 트리거를 추가합니다. * feat: 스크롤 트리거 진행 시 context를 이용해 메모리 누수를 최소화합니다. * refactor: 랜딩 페이지 애니메이션이 한글자 씩 타이핑 되도록 수정합니다. * feat: 타임라인 section에 필요한 객체 데이터를 분리합니다. * feat: 타임라인 section을 구조 분해 할당을 이용하여 객체 데이터를 매핑합니다. * fix: 잘못 반영된 RoleHero의 디자인을 수정합니다. * feat: 포지션 section의 객체 데이터를 분리합니다. * feat: 포지션 section의 객체 데이터를 구조 분해 할당으로 매핑합니다. * fix: Hero 컴포넌트의 잘못 적용된 스타일을 수정합니다. * feat: 핵심 가치 section의 객체 데이터를 분리합니다. * feat: 핵심 가치 section 데이터를 구조 분해 할당으로 매핑합니다. * fix: HeroIndex의 잘못 적용된 padding 값을 수정합니다. * move: 불필요한 주석을 제거합니다. * feat: Title의 일부분에 accent 색상을 주입합니다. * fix: 잘못 적용된 스타일을 수정합니다. * fix: 잘못 적용된 스타일을 재수정합니다. * fix: 불필요한 fragment를 제거하고 객체 데이터를 단순화합니다. * feat: 객체 데이터의 타입을 구체화합니다. * move: 불필요하게 적용된 스타일을 제거합니다. * feat: section의 뷰포트를 dvh로 재정의합니다. * feat: 스크롤 가능한 요소에 스크롤 바를 표시하지 않는 global 스타일을 추가합니다. * refactor: 스크롤 애니메이션 동작 시 기본 스크롤을 비활성화하도록 구조를 수정합니다. * feat: gsap 플러그인의 진입점을 main.tsx로 설정합니다. * refactor: context를 이용해 context 내부 section에 대해서만 애니메이션 처리를 수행합니다. * feat: 하단에서 상단으로 올라가는 스크롤 애니메이션을 추가합니다. * feat: 객체 데이터에 뱃지 스타일 데이터를 추가합니다. * feat: HeroIndex의 뱃지 스타일을 추가합니다. * move: 애니메이션 디버깅을 위한 marker 옵션을 제거합니다. * move: 상단 스크롤 애니메이션 디버깅을 위한 marker 옵션을 제거합니다. * feat: apply-3 페이지 및 지원 완료 페이지 UI 구현 (#81) * feat: 지원 과정 페이지 PATH 추가 * feat: 지원 과정 페이지들 router 설정 * feat: 지원 관련 페이지의 타이틀 문구 APPLY_TITLE 객체화 및 적용 - 파일명 applyData -> applyPageData로 변경 * rename: faqData -> faqPageData로 파일명 수정 및 임포트 수정 * feat: 지원 관련 페이지 내 사용되는 메시지 상수화 * feat: 지원 완료 페이지 UI 구현 * remove: 지원 완료페이지 불필요한 버튼 className 삭제 * feat: apply-3 페이지 UI 구현 (이름, 전화번호 입력 페이지) * feat: apply-3 페이지 router에 컴포넌트 추가 * fix: ApplyComplete 버튼 className w-full 추가 * refactor: ApplyApplicationInfo 컴포넌트 css 수정 * refactor: ApplyComplete 페이지 css 수정 및 Link -> navigate 사용 * refactor: ApplyApplicationInfo 페이지 Link -> navigate 사용 * fix: 지원 완료 페이지 컨텐츠 중앙 정렬 * fix: ProgressIndicator key값 추가 * fix: APPLY_HELPER_MESSAGE 네이밍 방식 통일 * fix: APPLY_MESSAGE 구조 및 문구 수정 * refactor: ApplyComplete 컴포넌트 내용글 및 버튼 문구 상수화 * feat: File, Uploader 컴포넌트 구현 (#76) * feat: validateFileType util 함수 생성 * feat: file 확장자 및 fileMine 객체 생성 * feat: changeFileSizeUnit util 함수 생성 * feat: TextArea 컴포넌트 outline-none 클래스 추가 * fix: InputArea 컴포넌트 w-full 로 변경 * feat: Uploader 컴포넌트 구현 및 스토리북 작성 * feat: File 컴포넌트 구현 및 스토리북 작성 * feat: InputFile 컴포넌트(File+Uploader) 구현 및 스토리북 작성 * fix: inputFile -> InputFile 파일명 변경 및 file 타입에 따라 key값 처리 * feat: InputFile 스토리북 수정 * refactor: File openFile 함수 코드 수정 (if문 대신 삼항연산자 사용) * fix: File 컴포넌트의 deleteHandler event 타입 수정 * remove: 불필요한 코드 제거 * feat: fileUrl 타입 추가 * fix: fileUrl 타입 대문자 시작으로 수정 * feat: File 컴포넌트 CDN URL만 받는 걸로 수정 * fix: InputFile도 CDN URl 만 받도록 수정 * fix: Uploader disabled 상태 수정 및 깜박임 현상 해결 + 중복 코드 정리 * feat: Uploader disabled 스토리 추가 * style: File 커서포인터 추가 * docs: File 스토리북 업데이트 * feat: InputFile UI 업데이트 (레이블 및 용량 표기 추가) * feat: feedback 타입의 File 컴포넌트 추가 * fix: feedback 타입 File cursor pointer 제거 * fix: Uploader 컴포넌트 확장자 검증 로직 제거 확장자 검증은 File 컴포넌트 렌더링 타이밍에 수행 * fix: InputFile에서 File 컴포넌트 제거 File 컴포넌트는 children으로 받도록 수정 * refactor: fileStyle 분리 * fix: FileUrl id 타입 string으로 변경 * design: useState의 <boolean> 삭제 * refactor: maxSize 초기값 삭제 * feat: 프로젝트, 프로젝트 상세페이지 구현 (#84) * feat: 프로젝트 페이지 틀을 생성합니다. * feat: 프로젝트 페이지를 라우터에 추가합니다. * feat: 프로젝트와 해커톤을 위한 임시 데이터를 생성합니다. * feat: 프로젝트 후기 section을 더미 데이터로 퍼블리싱 합니다. * feat: 프로젝트 상세 페이지의 틀을 생성합니다. * feat: 프로젝트 상세 페이지의 경로를 router에 추가합니다. * refactor: CalloutInformation 컴포넌트의 최상위 태그에 w-full을 적용합니다. * feat: 프로젝트 상세페이지의 화면을 더미데이터를 이용해 퍼블리싱합니다. * feat: 프로젝트 페이지의 버튼 텍스트를 기입합니다. * fix: 잘못 적용된 버튼 아이콘의 스타일을 수정합니다. * fix: content를 감싸는 wrapper의 높이를 고정값이 아닌 최솟 값으로 수정합니다. * feat: 해커톤 페이지 경로를 추가합니다. * refactor: 경로 호출을 상수화된 경로로 변경합니다. * design: grid 대신 flex-col 사용하여 단일 column 레이아웃으로 합니다. * fix: router의 import order을 eslint 설정에 맞게 수정합니다. * design: 레이아웃의 최소 크기를 요구사항에 맞춰 제거합니다. * refactor: TabItem의 props 구조를 변경 후 disabled 속성을 주입합니다. * refactor: type으로 선언된 props를 interface 구조로 통일합니다. * feat: TabItem의 비활성화 색상과 포인터 이벤트 제어를 반영합니다. * feat: 해커톤 Tab에 disabled을 주입합니다. * feat: 프로젝트 상세 페이지에 Select 컴포넌트를 적용합니다. * fix: 인터렉션 focus-visible 효과 나타날 때 border가 보이지 않는 버그 해결 (#89) * fix: focus-visible 효과 나타날 때 border이 보이지 않는 버그 해결 * fix: scale 고려한 interaction 스타일 생성 * refactor: scale 인터렉션이 필요한 컴포넌트에 적용 (아코디언, 라벨버튼) * bug: 빌드 파일 생성 과정에서 발생한 에러 수정 (#88) * refactor: BlockButton의 style props명을 기본 button style과 명확히 구분 짓습니다. * docs: 수정된 props 이름을 BlockButton 스토리 파일에 반영합니다. * docs: 잘못 기입된 size 명칭을 변경합니다. * docs: fileId 의 값을 file 타입에서 선언한 string 타입으로 변경합니다. * docs: snackBar에서 누락된 onaction props를 스토리 파일에 작성합니다. * refactor: TabItem의 인터페이스 중 id를 커스텀 props로 재구성합니다. * move: 사용하지 않는 import 문을 제거합니다. * docs: 잘못 선언된 컴포넌트 네이밍을 수정합니다. * fix: 타입 import 경로를 절대경로에서 상대경로로 변경합니다. * move: 사용하지 않는 변수를 제거합니다. * fix: BlockButton의 인터페이스 명은 기존의 이름으로 재수정합니다. * feat: apply-2 페이지 UI 구현 (#82) * feat: ApplyVerify 페이지 UI 구현 * fix: InputField 헬퍼메시지 폰트색상 조건부 수정 * refactor: Title 감싸는 div 태그 제거 * fix: 잘못 수정된 부분 복구 * fix: isExist -> isNewApplicant 로 변수명 변경 * refactor: 중첩 삼항연산자 표현 변경 * refactor: 중첨삼항연산자 clsx 사용 * refactor: ApplyVerify를 ApplyVerifyEmail, ApplyVerifyPin 페이지 컴포넌트로 분리 * feat: Input 컴포넌트 disabled 일때 text 색상 추가 * fix: NewTabLink className props으로 받도록 수정 * feat: 비밀번호 재설정 페이지 연결 * feat: 비밀번호 재설정일 경우 조건부 렌더링 * fix: applyInfoList NewTabLink className 달기 * feat: 이메일 인증 페이지 라우터 설정 * fix: 이메일 인증 페이지 PATH 수정 * remove: ApplyVerify 컴포넌트 삭제 * feat: APPLY_TITLE 비밀번호재설정 페이지 타이틀 추가 * feat: 지원하기 페이지에서 이메일 인증 페이지 navigate 설정 * fix: ApplyApplicationInfo 컴포넌트 isReady -> isStepCompleted 변수명 수정 * fix: prop 전달받은 값으로 컴포넌트 렌더링 불가로 방식 변경 * fix: PATH 변수명 applyVerify로 재수정 * remove: 불필요한 임포트 삭제 * refactor: setter 제거 * refactor: Input isError 옵셔널 처리 * refactor: 순환 렌더링 문제 발생 우려로 ApplyVerify 컴포넌트에서 페이지 컴포넌트 조건부 렌더링하도록 수정 * refactor: Apply 페이지 중 main 태그 -> section태그로 변경 및 사용하지 않는 form 태그의 action='' 제거 * refactor: email 더미데이터 빈문자열로 변경 * refactor: useState 불리언타입 지정 제거 * refactor: ApplyVerify 조건부 리팩토링 * refactor: ApplyVerify 삼항연산자 사용하여 return 하기 * feat: 지원서 작성 페이지 UI 구현(apply-4) (#85) * feat: ApplyRegistration 페이지 생성 및 select에 따른 문항 나타나도록 UI 구현 * fix: InputArea 고정된 width 값 제거 * refactor: TextArea 컴포넌트 outline none 처리 및 자동 높이 조절을 위한 row=1 지정 * feat: 텍스트 양만큼 TextArea의 높이 자동 조절 기능 추가 * feat: ApplyRegistration 페이지 컴포넌트 라우터 등록 * feat: 에러일 경우 TextArea border 처리 * feat: InputArea 헬퍼메시지 기능 추가 및 에러일 경우 스타일 처리 * refactor: 불필요한 스타일 및 태그 제거 * remove: console.log 제거 * feat: select 키보드 입력으로 포지션 선택하기 및 select outside 클릭 시 닫히기 * feat: mergeRefs 유틸함수 생성 * feat: mergeRefs 유틸함수 사용하여 textareaRef, ref 받도록 함 * refactor: ApplyRegistration 코드 정리 * refactor: POSITIONS 배열 상수 사용 * feat: Uploader 최대 가능 용량값 동적으로 변경되도록 함. * refactor: ApplyRegistration 컴포넌트 파일 더미 데이터 사용하여 InputFile 구현 * refactor: InputFile File 컴포넌트 배열을 받도록 수정 File 컴포넌트 리스트들을 감싸는 컨테이너 태그를 일일이 작성하지 않도록 InputFile에서 이동시키기 위함. 추가로 리스트가 있을 경우에만 컨테이너 태그가 나타나도록 하기 위해 children 속성이 아닌 배열을 받도록 변경. * refactor: ApplyRegistration에 수정된 InputFile 적용 * refactor: InputArea errorHelper 조건부 수정 * docs: InputArea 스토리북 업데이트 * docs: mergeRefs TSDoc 추가 * fix: 직군 선택 초기에만 키보드 작성 가능한 버그 수정 * fix: ApplyRegistration select 키보드 탭 선택 버그 해결 * fix: ApplyRegistration 키보드 타이핑 기능 제거 select 선택지를 선택하기 위한 input이므로 타이핑 기능 불필요 타이핑이 가능할 경우, 혼란이 있을 수 있음 * design: Input 컴포넌트 readonly일 경우엔 cursor default * refactor: TextArea에 className props 추가, focus 효과 디자인 수정 * docs: InputArea 스토리북 description 추가 * feat: forwardRef 컴포넌트에 displayName 달기 * refactor: Input, InputField, TextArea isError 옵셔널 처리 * remove: 불필요한 index.ts 삭제 * refactor: setIsSelectOpen false로 수정 * refactor: MutableRefObject import 하기 * refactor: Ref import 하기 * feat: 리팩토링 이슈 템플릿 추가 (#92) 리팩토링 이슈 템플릿을 추가합니다. * chore: api 연동을 위한 axios, tanstack query 세팅 및 테스트 (#90) * feat: QueryClientProvider 및 DevTools 설정 * chore: axios 설치 * chore: gitignore에 .env 추가 * feat: axiosInstance 생성 * feat: vite proxy 설정 * feat: 프록시 서버 이용하므로 axioInstance BASE_URL 임시로 '/api' 설정 * feat: requestHandler 생성 * feat: ApiResponse 공통 타입 정의 ( + Sort) * feat: fetchMiniStudies 함수 생성 * feat: Tanstack query 사용한 useMiniStudies 훅 생성 * refactor: 미니스터디 api 연동 * refactor: 미니스터디 fetch 함수 한줄로 줄이기 * refactor: axiosInstance 불필요한 변수 제거 * remove: 불필요한 index.ts 파일 삭제 * rename: axiosInstance.ts -> httpClient.ts 파일명 변경 및 utils/ 로 이동 * refactor: 경로 수정 * refactor: ReactQueryDevtools는 개발환경 조건부 렌더링 처리 * refactor: api endpoint 및 타입 인터페이스 분리 * refactor: fetchMiniStudies -> getMiniStudies로 함수명 변경 * refactor: types 폴더 정리 * refactor: types 폴더 정리한 파일들 경로 수정 * feat: requestHandler에 401,403, 500, 기타 네트워크 에러 전역 처리 * feat: ApiResponse의 State 종류 업데이트 * refactor: TODO 추가 * refactor: Sort 타입 sort 파일로 분리 및 적용 * refactor: requestHandler 제네릭 타입 수정 (#102) * refactor: requestHandler 제네릭 타입 수정 * refactor: getMiniStudies에서 ApiResponse 제거 * feat: CheckBox 컴포넌트 구현 (#86) * feat: CheckBox 컴포넌트의 type을 선언합니다. * feat: CheckBox 컴포넌트에서 사용되는 CheckBoxIcon 컴포넌트를 구현합니다. * feat: CheckBox 컴포넌트를 구현합니다. * docs: CheckBox 컴포넌트의 스토리북을 작성합니다. * design: interaction의 click 요소 효과를 카테고리화합니다. * design: CheckBox에 interaction 요소를 주입합니다. * fix: 실제 interaction이 적용되는 태그에 interaction을 재주입합니다. * style: import 문의 절대경로를 상대경로로 수정합니다. * typo: 컴포넌트의 오탈자를 수정합니다. * feat: CheckBox에 hover interaction을 추가합니다. * typo: 함수와 타입 명을 파스칼 케이스로 수정합니다. * feat: interaction을 커스텀 하여 CheckBox 컴포넌트에 부여합니다. * docs: checkbox 스토리 파일에 interaction이 적용되는 케이스를 추가합니다. * docs: useState 을 render 콜백에서 호출하지 않도록 변경합니다. * refactor: tabIndex를 이용해 interaction 역할을 수행하는 div에 interaction을 주입합니다. * move: 사용하지 않는 interaction 을 제거합니다. * feat: interaction이 적용되는 div에 tabIndex를 추가합니다. * move: 사용하지 않는 group 속성을 제거합니다. * refactor: Icon 컴포넌트의 import 방식을 변경합니다. * refactor: interaction을 위한 div을 제거하고 실제 요소에 interaction을 수행합니다. * fix: focus 시 before 가상요소를 제거하고 자식 요소의 상태에 따라 focus 되도록 스타일을 수정합니다. * refactor: 스타일 폴더 리팩토링 (#100) * refactor: 블럭 버튼, 라벨 버튼 스타일 파일 컴포넌트 폴더로 이동 * refactor: file 스타일 파일 파일 컴포넌트 폴더로 이동 * refactor: 아이콘 스타일 파일 컴포넌트 폴더로 이동 * refactor: 타이틀 스타일 파일 컴포넌트 폴더로 이동 * refactor: 레이블 스타일 파일 컴포넌트 폴더로 이동 * refactor: 직군명, 이메일 변경 및 데브옵스 애니메이션 비활성화 (#104) * refactor: 프로젝트 매니저에서 프로덕트 매니저로 변경 * refactor: jectofficial@ject.kr로 변경 * refactor: 메인페이지 데브옵스 애니메이션 비활성화 처리 * feat: 젝톡 조회 기능 및 EmptyData 컴포넌트 구현 (#99) * feat: jectalk Response 타입 생성 * feat: getJectalks fetch 함수 생성 * feat: useJectalks 훅 생성 * feat: EmptyData 공통 컴포넌트 생성 및 스토리북 작성 * feat: activity page, 잭톡 조회 API 연결 및 EmptyData 컴포넌트 적용 * refactor: jectalk fetch 함수 타입 수정 * refactor: EmptyData 컴포넌트 Label 절대경로로 수정 * refactor: react-query 사용 훅은 Query 접미사 사용 * refactor: useQuery 에러 로그 출력 * refactor: 에러 로그 문구 수정 * feat: 젝톡 summary 표시 및 EmptyData 조건부 수정 (#111) * feat: 젝톡 레이블 표시 * refactor: 미니스터디, 젝톡 렌더링 조건 수정 * feat: 파일 업로드 기능 구현 (#109) * feat: 파일 업로드 api 요청 함수 및 훅 생성 * fix: Uploader 컴포넌트 동일한 파일 연속 선택 불가 버그 해결 * refactor: changeFileSizeUnit 유틸함수 수정 - 단위 표기 여부 추가 * feat: validateMaxSize 유틸함수 추가 * feat: Portfolio, NewPortfolio 타입 생성 * remove: FileUrl 타입 삭제 * chore: lottie-react 라이브러리 설치 * chore: loadingSpinner json 파일 추가 * refactor: select 외부 클릭 시 닫히기 로직 useCloseOutSide 훅으로 분리 * feat: S3 파일 업로드 요청 및 File 컴포넌트명 FileItem으로 변경 * docs: FileItem 스토리북 업데이트 * refactor: InputFile의 fileNode prop -> children으로 변경 * docs: InputFile 스토리북 수정 * feat: 파일 presignedUrl 생성 요청 및 ApplyRegistration에서 문항 코드 분리 * feat: 네트워크 불안정 이슈, 확인할 수 없는 파일 형식 예외 처리 * fix: eslint 에러 수정 * refactor: uploadFileToS3 axios 함수 파일 분리 및 mutate 변수명 붙이기 * feat: S3 파일 업로드 실패 시 retry 3회 설정 * design: 메시지 문구 수정 * feat: 손상된 파일 확인 및 분리해주는 유틸함수 생성 * fix: 파일 필터링 및 예외 처리 수정 - pdf가 아닌 파일일 경우 에러 토스트만 제시 - 손상된 pdf 파일일 경우 에러 UI 파일, 토스트 제시 * feat: 파일 비어있을 경우 예외 처리 * feat: 업로드 중인 파일 업로드 요청 취소 기능 추가 및 네트워크 에러시 파일 업로드 예외처리 수정 * refactor: fileExtensions 변수명 복수 처리 * refactor: changeFileSizeUnit 유틸함수 로직 수정 및 리팩토링 * refactor: 유틸 함수 가독성을 위한 개행 처리 * refactor: 응답 데이터 타입명 ~ResponseData 형식으로 변경 * refactor: 유틸 함수 가독성을 위한 개행 처리 * refactor: splitValidAndInvalidFiles 유틸함수 filter -> reduce 메서드 사용 * refactor: useCloseOutside 얼리리턴 * refactor: Uploader handleClick 함수 얼리리턴 * refactor: description 띄어쓰기 처리 * refactor: FileField 가독성을 위한 개행 처리 * refactor: FileItem의 extractFileInfo 유틸함수 생성 후 적용 * refactor: 포트폴리오 업로드 api 응답 데이터 keyName -> cdnUrl 수정 반영 * remove: validateFileType 유틸 함수 제거 * refactor: 타입명에 Response, Request suffix 추가 - uploadPortfolio.ts - answer.ts * refactor: 젝톡, 미니스터디 데이터타입 Response suffix 추가 * remove: 불필요한 로그 출력 코드 제거 * feat: 지원서 플로우 기능 구현 (#112) * feat: 파일 업로드 api 요청 함수 및 훅 생성 * fix: Uploader 컴포넌트 동일한 파일 연속 선택 불가 버그 해결 * refactor: changeFileSizeUnit 유틸함수 수정 - 단위 표기 여부 추가 * feat: validateMaxSize 유틸함수 추가 * feat: Portfolio, NewPortfolio 타입 생성 * remove: FileUrl 타입 삭제 * chore: lottie-react 라이브러리 설치 * chore: loadingSpinner json 파일 추가 * refactor: select 외부 클릭 시 닫히기 로직 useCloseOutSide 훅으로 분리 * feat: S3 파일 업로드 요청 및 File 컴포넌트명 FileItem으로 변경 * docs: FileItem 스토리북 업데이트 * refactor: InputFile의 fileNode prop -> children으로 변경 * docs: InputFile 스토리북 수정 * feat: 파일 presignedUrl 생성 요청 및 ApplyRegistration에서 문항 코드 분리 * feat: 지원서 문항 조회 api 함수 및 훅 생성 * remove: validateFileType 유틸함수 삭제 * feat: url 형식 검증 유틸함수 생성 * feat: Answers 타입 정의 * feat: 직군에 맞는 지원서 문항 렌더링 및 URL 검증 로직 추가 * refactor: detailedRegex 수정 * feat: 임시 저장 API 연동 * feat: 수동 임시저장 기능 구현 * refactor: select의 jobFamily 매핑 방향 수정 FE, BE, PM, PO를 key로 변경 * refactor: postDraft의 param prop null 타입 추가 * feat: 임시 저장 조회 api 요청 함수 및 훅 생성 * feat: 임시저장 조회 기능 구현 * refactor: handleChangeAnswer, handleChangePortfolios 함수 useCallback 처리 * feat: 임시 저장 조회 기능 구현 (임시저장 불러오기 다이얼로그 제외) - react router의 location.state 이용하여 임시저장 불러오기 여부 결정 - 작성 중 새로고침 시 임시 저장된 글 자동 불러오기 * refactor: Dialog 수정 - p 태그 -> div 태그로 변경 ( ReactNode로 받을 때 포괄적인 태그 사용을 위해) - children 공간에 오는 문구 text-center 처리 - useDialog state 변수명 수정 (isCloseOutside의 state와 겹침 문제) * feat: 지원서 직군 변경 기능 구현 - apiEndpoint 추가 - axios 함수 생성 - react query 훅 생성 - 직군 변경 전 dialog 띄우기 - 직군 변경 시 답변 초기화 및 직군 변경 api 요청 별개로, - 초반에 임시저장 불러오지 않고 새로 작성할 경우, 추가적인 임시저장 전까지 임시저장 불러오지 않도록 수정 * refactor: ApplyRegistration 코드 리팩토링 변수명 변경, 함수 분리 변수명 변경 - selectPosition -> selectedPosition - selectQuestion -> questionPosition - values -> answersPayload 함수 분리 - formatNewPortfolio 함수 생성 (FileField에서 사용) - notLoadDraft 함수 생성 * design: textField 답변 길이 제한 초과 시 필드 스타일 변경 - 헬퍼 메시지 표시 - 필드 테두리 및 글자 수 텍스트 빨간색 표시 * feat: 지원서 제출 답변 유효성 검사 - 필수 답변 작성 검사 - 답변 글자 수 제한 검사 - url 유효성 검사 * refactor: useDialog state 변수명 원상복구 - 변수명 겹칠 경우 별칭 사용 * refactor: mutationKey 달기 * feat: 지원서 제출 기능 구현 - 지원서 제출 api endpoint 생성 - submitAnswer 함수 생성 - useSubmitAnswerQuery 훅 생성 - 제출 시 다이얼로그 표시 및 성공 시 지원 완료 페이지 이동 * feat: 15분마다 자동 임시저장 기능 구현 * refactor: ApplyRegistration 리팩토링 - state와 관련 함수를 관리하는 useApplicationState 훅 생성 - 포지션 선택 관련 selectBox 컴포넌트 분리 - 문항 및 답변 관련 Answers 컴포넌트 분리 * remove: 불필요한 주석 제거 * refactor: 직군을 표현하는 단어 position -> job으로 변경 * refactor: isLoadDraft 함수 수정 (불필요한 리턴 제거) * refactor: validateAnswersPayload if문 간소화 * refactor: draft 데이터 uuid 추출 오류 해결 * refactor: isLoadDraft 함수 간소화 * refactor: 지원서 문항 조회 실패 시 빈 폼 반환. * feat: Input read-only 일 때 커서 기본 스타일 지정 * feat: api 임시 에러 처리 (에러 로그 출력) * refactor: onKeyDown -> onKeyUp으로 변경 * refactor: draft, submitAnswer 호출 전 param null 처리 * refactor: formatForPresignedUrl, formatNewPortfolio 구조 분해 할당 처리 * refactor: Dialog title p 태그로 변경 * refactor: submitButtonActive -> setSubmitButtonActive 로 함수명 변경 * refactor: 훅 선언 개행처리 * refactor: File 타입 file -> rawFile로 네이밍 변경 * refactor: AnswersRequest answers key 타입 number로 변경 * refactor: QuestionResponse 타입 정의 * refactor: putJob request 타입 정의 * refactor: 제출 다이얼로그 내용 문구 띄어쓰기 수정 * refactor: initialAnswer 타입 설정 * feat: 페이지 하단 지원 스낵바 구현 (#120) * feat: 3기 지원 스낵바 공통 컴포넌트 생성 * feat: 메인, 프로젝트, 활동, faq 페이지에 스낵바 노출 * remove: 불필요한 index.ts 파일 삭제 * refactor: isMain -> width 로 props 변경 페이지 단에서 어떤 width 값이 들어가는지 확인할 수 있도록 변경 * refactor: SnackBar 컴포넌트 색상 수정 * refactor: 지원 스낵바 높이 수정 * feat: 지원 스낵바 애니메이션 추가 * feat: 로컬스토리지 자동 임시 저장 기능 구현 (#122) * feat: 로컬스토리지를 이용한 자동 임시저장 기능 구현 * fix: 업로드된 파일 열기 실패 버그 해결 * refactor: 함수명 수정 * refactor: 불필요한 변수 제거 * feat: 회원 비회원 인증 및 회원정보 등록 기능 (#114) * chore: zod와 react-hook-form 라이브러리를 설치합니다. * feat: zod를 이용해 지원 페이지에 사용되는 스키마를 생성합니다. * feat: zod와 react-hook-form을 연동하여 유효성 검사 훅을 생성합니다. * refactor: umd 변수로 선언된 props를 유니온 타입을 변환합니다. * feat: api 연동을 위한 엔드 포인트를 설정합니다. * feat: apply 관련 api response를 반영하여 인터페이스를 생성합니다. * feat: 폼 핸들러 처리를 돕는 유틸리티 함수를 생성합니다. * feat: 요구사항을 반영하여 지원 api 호출부를 설정합니다. * feat: 커스텀 훅을 이용하여 데이터 패칭을 처리하는 로직을 로깅과 함께 생성합니다. * feat: input 컴포넌트에 undefined 처리되는 옵셔널 props에 기본 값을 할당합니다. * feat: 지원하기 데이터 패칭 로직을 지원페이지에 적용합니다. * refactor: 폼 제출 핼퍼 함수의 데이터 타입은 해당 함수를 사용하는 부분에서 처리하도록 변경합니다. * fix: 최신 react-query의 속성을 반영하여 isLoading isPending 으로 수정합니다. * feat: Label 컴포넌트의 개선사항을 표기합니다. * refactor: Label 컴포넌트가 htmlFor 속성을 받지 못하는 문제를 추가 태그를 이용해 처리합니다. * move: 스토리북에 인터렉션 예시를 제거합니다. * feat: CheckBox 컴포넌트를 하단 Label에 추가합니다. * feat: 핀 로그인 성공시 navigate 로직을 추가합니다. * design: 잘못 적용된 gap 값을 수정합니다. * feat: 회원 존재 여부 확인 api의 엔드포인트를 생성합니다. * feat: 회원 존재 여부 확인 api의 반환 인터페이스를 생성합니다. * feat: 회원 존재 여부 api의 호출부를 구현합니다. * feat: 이메일 인증 api 를 호출하기 전 이메일 존재 여부를 확인합니다. * feat: email 값을 state로 처리하여 전달할 수 있도록 처리합니다. * feat: 회원 존재 여부 api에 대한 커스텀 훅을 생성합니다. * feat: status 타입을 추가합니다. * feat: 이메일 인증 api에 대한 에러 상황을 처리합니다. * feat: 버튼 비활성화 상태에 조건을 추가합니다. * feat: 기존 회원의 PIN 로그인 로직을 구현합니다. * move: 불필요하게 추가된 상태와 매개변수를 제거합니다. * feat: 지원자 정보에 대한 스키마를 생성합니다. * feat: 지원자 정보 스키마의 예외 상황을 엄밀하게 제한합니다. * feat: 회원 정보 업데이트 api의 엔드포인트를 생성합니다. * feat: 회원 정보 업데이트 api의 인터페이스를 생성합니다. * feat: 회원 정보 업데이트 api의 호출부를 구현합니다. * feat: zod를 이용해서 지정된 스키마의 유효성 검사를 수행합니다. * feat: 커스텀 훅을 이용해 회원 정보 저장에 대한 데이터 패칭을 진행합니다. * feat: 항목이 비어있을 때도 유효하지 않은 스키마로 판단합니다. * feat: 지원자 정보 입력 페이지에 데이터 패칭 로직을 부여합니다. * feat: auth 관리를 위한 api의 엔드포인트를 추가합니다. * chore: 추가된 env 파일에 대한 컴파일 옵션을 설정합니다. * chore: 전역 변수의 타입을 설정합니다. * feat: 순환 참조를 고려하여 requestHandler를 사용하지 않고 토큰 리프레쉬 api를 호출합니다. * feat: interceptor를 이용해 api 호출 전후 header와 개발 환경 별 토큰 관리를 처리합니다. * feat: requestHandler에 option 매개변수를 추가합니다. * feat: 토큰 관리를 위한 인터페이스를 추가합니다. * feat: 회원 정보 등록을 위한 인터페이스를 생성합니다. * feat: 회원 정보 등록 api의 호출부를 생성합니다. * feat: 회원 정보 등록 api를 커스텀 훅을 이용해 관리합니다. * feat: PIN을 이용한 로그인 시 로컬 개발 환경에서 토큰을 header에 사용하도록 설정합니다. * fix: 신규 사용자의 경우 임시 회원 가입 api를 통해 플로우를 진행합니다. * fix: 디자인 요구사항에 맞춰 컴포넌트 간 간격을 조정합니다. * feat: FAQ 란에 객체 데이터를 추가합니다. * feat: Accordion에 추가되어야 할 요구사항을 TODO를 이용해 기재합니다. * feat: cta 버튼에 onClick 핸들러를 추가합니다. * fix: 불필요하게 설정된 error의 타입 검사를 제거합니다. * typo: Email 인증 인터페이스 타입명을 통일합니다. * refactor: 이메일 관련 api의 매개변수와 payload를 객체 분할 형태로 통일합니다. * refactor: 커스텀 훅에 mutationKey를 추가합니다. * refactor: 변경된 커스텀 훅의 매개변수를 mutate 객체에 반영합니다. * typo: 변경된 api의 response에 맞게 인터페이스 명을 수정합니다. * typo: 변경된 인터페이스에 맞춰 스키마의 변수 명을 수정합니다. * refactor: 변경된 api에 맞게 함수명을 변경합니다. * refactor: 이메일 인증 api에 query params를 추가합니다. * refactor: 이메일 인증 커스텀 훅에 mutationKey를 추가하고 매개변수로 query params를 추가합니다. * refactor: 이메일 인증 api의 변경점을 추가합니다. * feat: 이메일 인증 api에 사용되는 인터페이스를 추가합니다. * refactor: 수정된 이메일 인증 api의 호출부에 query params를 부여하는 로직을 추가합니다. * refactor: 이메일 인증 api를 사용하는 커스텀 훅의 매개변수를 구체화합니다. * feat: 변경된 이메일 인증 로직을 지원 페이지에 적용합니다. * typo: PIN을 이용한 로그인 시 사용되는 인터페이스 명을 간소화합니다. * refactor: PIN을 이용한 로그인 커스텀 훅에 변경된 인터페이스 명을 적용하고 mutationKey를 추가합니다. * refactor: PIN을 이용한 로그인의 API 호출부에 공통 인터페이스를 사용하여 간소화합니다. * typo: 회원 정보 업데이트 인터페이스의 명칭을 통일합니다. * typo: 임시 회원가입 api 인터페이스의 명칭을 통일합니다. * feat: api 호출 전에 이전 로그인 정보를 제거하는 로직을 추가합니다. * feat: base url의 선언 조건을 prod로 변경합니다. * feat: interceptor 가 로컬 환경이 아닐 때 withCredentials가 true 값을 가지도록 설정을 추가합니다. * move: 불필요하게 기입된 import 문을 수정합니다. * feat: 인증 번호 유효 시간 초과 시 이메일 버튼을 enabled 하고 label을 변경합니다. * refactor: 인증번호의 Input 창을 감지하여 값이 존재하지 않을 때 버튼을 표시하지 않습니다. * fix: 버튼의 문구를 디자인에 맞는 텍스트로 변경합니다. * feat: 제출 버튼에 아이콘과 조건부 렌더링을 추가합니다. * feat: input 태그에 자동완성 스타일이 커스텀 색상으로 처리되도록 처리합니다. * bug: workflow runner 버전 업데이트 (#133) * refactor: 다이얼로그 함수 호출식으로 재구현 (#127) * feat: dialogStore 생성 * refactor: Dialog 컴포넌트 수정 (dialogStore 이용) * remove: useDialog 훅 삭제 * refactor: Dialog 컴포넌트 Layout 에 추가 * refactor: 지원서 작성 페이지 수정된 다이얼로그 적용 * docs: Dialog 스토리북 수정 * refactor: dialog promise 제거 * docs: 다이얼로그 스토리북 수정 (promise 사용 스토리 수정) * remove: 불필요한 파일 제거 (useApplicationDialog) * feat: 다이얼로그 열린 상태 스크롤 정지 기능 구현 * feat: primary 버튼만 있는 Dialog 추가 * docs: 버튼 하나 Dialog 스토리 추가 * refactor: 불필요한 void 제거 * docs: Dialog 스토리북 설명 수정 * docs: Dialog 스토리북 함수명 수정 * refactor: dialogStore의 타입명 복수로 수정 * refactor: 다이얼로그 상태 관리 방식 수정 - 정적인 데이터는 객체 데이터로 관리, constants/dialog.tsx 생성 - dialogStore는 열고 닫힘 상태, 다이얼로그 타입, 버튼 액션를 관리 - 위 2가지를 Dialog 컴포넌트에 반영 * docs: Dialog 스토리북 수정 * refactor: ApplyRegistration 페이지 다이얼로그 코드 수정 * docs: Dialog 스토리북 설명 추가 * refactor: dialog 오타 수정 및 DialogTypes types/ 폴더로 분리 * refactor: dialogStore openDialog 간소화 * refactor: Dialog 버튼 handleClick 함수 간소화 * style: dialogStore 한줄 작성 * chore: 배포 스크립트 및 환경 설정 (#135) * fix: Uploader 스토리북 에러 해결 (#138) * feat: 답변 SELECT 필드 추가 (#130) * refactor: useCloseOutside 훅 ref 배열도 받을 수 있도록 수정 * refactor: selectBox 닫기 깜박임 수정 * feat: 지원서 작성 페이지의 객관식 문항을 위한 selectField 구현 * feat: Question 서버 데이터 타입 변경 및 적용 * refactor: 답변 필드 label 서버 데이터 연결 * fix: 초기 렌더링 시 select field 선택해도 빈문자열로 저장되는 버그 해결 * style: question 타입 표현 수정 * feat: 임시저장 불러오기 다이얼로그 표시 및 임시지원서 제거 api 연동 (+지원서 관련 함수 및 타입 리팩토링) (#134) * feat: 직군 변경 api가 임시지원서 제거 api로 변경되어 changeJob api 제거 및 deleteDraft api 생성 * refactor: 직군 변경 시 임시지원서 제거 api 요청 * rename: mutation 훅은 use~Mutation으로 훅 명 변경 및 적용 * feat:…
* chore: GTM과 Amplitude를 사용하는 커스텀 함수를 생성합니다. * chore: index.html에 메타 픽셀 코드를 삽입합니다. * chore: 생성한 트래킹 함수를 지원하기 및 지원 관련 액션을 수행하는 구간에 삽입합니다. * feat: index.html에 meta pixel 코드를 제거합니다. - head 부분에 <img>가 올라가는건 권장되지 않는 방식 - react 환경(SPA)에서 스크립트가 적절하지 초기화 되지 않는 문제 * feat: analytics 내부에 meta pixel 분석 함수를 생성합니다. - 원하는 타이밍에 함수 호출을 통한 동적 초기화 - QA, localhost 환경에서는 분석 제어 옵션 추가 * chore: 프로젝트 루트 파일에 분석 도구를 초기화합니다.
* chore: vercel의 request와 response 타입 사용을 위한 @vercel/node를 설치합니다. * feat: sentry의 알림을 discord로 전파할 수 있는 커스텀 웹 훅을 생성합니다. * chore: 웹훅 파일을 tsconfig에 include 시킵니다. - Vercel Node.js 에서 실행되는 파일이기 때문에(sentry-discord.ts) tsconfig.node.json에 포함 * chore: 신규 커스텀 웹 훅을 vercel.json에 경로를 추가합니다. * chore: 잘못 기재된 런타임 문자열을 제거합니다. - Node 런타임을 명시하지 않고, Vercel 자체에서 판단하도록 변경 * fix: 웹 훅 파일의 디렉토리를 변경합니다. -Vercel이 모노레포 내부 함수를 자동 감지하지 못하기 이슈가 생겨 이동 * fix: 디버깅을 위한 에러 콘솔을 추가합니다. * fix: ES Module로 인식안되는 문제를 해결합니다. * fix: 에러 디버깅을 위해 설정했던 디버깅 코드를 제거합니다. * fix: 운영 사이트 테스트에서 발생하는 에러 지점 파악을 위해 추가 콘솔을 작성합니다. * fix: trigger 요소를 필터 목록에 추가합니다. -에러 테스트 시 트리거를 시키기 때문 * feat: webhook payload를 통합하고 payload 검증을 추가합니다. * fix: Discord embed가 유효하지 않은 URL 요청을 거부하는 문제를 해결합니다. -event.web.url이 있을 때만 URL을 포함 -없다면 URL 필드 제거 * feat: 디버깅 코드를 제거합니다. - 디버깅 로그 제거 - web_url을 각 payload에서 직접 가져오도록 수정
* feat: 하드코딩된 phoneNumber 제거하고, 수정된 API 스펙에 맞는 스키마를 생성합니다. * feat: 토스트 제목과 메시지를 상수 데이터로 선언합니다. * feat: draft 조회 실패시 destructive 토스트를 출력합니다. - 상수화된 토스트 메시지로 변경 * feat: 요구사항에 명시된 토스트의 title과 body로 문구를 재작성합니다. * feat: error의 타입을 의미론적으로 직관적인 네이밍으로 명시합니다. * feat: 지원 상태 확인 실패 시 출력되어야 하는 문구를 추가합니다.
* fix: 푸터의 인스타 링크를 올바르게 수정합니다 * fix: devDependencies에 typescript를 추가하여 빌드 에러를 해결합니다 * fix: 사용하지않는 변수를 제거하여 타입 에러를 해결합니다 * fix: 타입스크립트를 다시 제거합니다
* fix: Button 컴포넌트의 레이블(텍스트)이 줄바꿈 되지 않도록 변경합니다. - 버튼은 일반적으로 단일 라인 액션 레이블을 가지기 때문 * fix: Input에서 버튼 사용 시 버튼이 축소되지 않도록 변경합니다. * fix: 사용하지 않는 NudgeItem을 제거합니다. - card/post의 hover 시 보이는 nudge 용도의 "포스트 보기", ">" 항목들이 제거되었습니다.에 대한 변경점 * feat: 사용하지 않게된 스타일링 속성을 제거합니다. * fix: vertical 스타일에서 layout에 gap을 추가합니다. * fix: 메타 데이터 항목을 ContentWrap의 자식으로 설정하고, CardImage는 분리합니다. * fix: 다이얼로그의 상수 데이터를 JSX와 <br/>를 사용하는 방식으로 변경합니다.
- commit message 기반(Squash Merge를 사용하기 때문에 실제로는 PR 제목) - dev에서 main으로 merge 시 발생
* release/v2.0.0 (#329) * feat: 프로젝트 개발 환경 세팅 (#2) * feat: 프로젝트 초기 세팅 * feat: eslint "import/order" 설정 추가 * fix: prettier "semi" 설정값 true로 수정 * feat: 디자인 시스템 및 스타일링 셋업 (#5) * 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: 주석 제거 * chore: Qodana ci 파이프라인 구축 (#7) * Add qodana.yaml file * Add github workflow file --------- Co-authored-by: Qodana Application <qodana-support@jetbrains.com> * chore: 스토리북 환경 구축 및 CI 설정 (#10) * 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: 폴더 구조 세팅 및 절대 경로 처리 (#13) * feat: 폴더 아키텍처 설정 (임시파일생성) * chore: 절대 경로 처리를 위한 @types/node 모듈 설치 * feat: @(src) 절대 경로 설정 * fix: main.tsx 절대 경로로 import 하기 * chore: Tanstack query 관련 모듈 설치 * feat: eslint-plugin-query 플러그인 설정 * style: 파일 import 시 확장자 제거 * chore: Qodana 스크립트 수정 (#15) * feat: 정적 분석 스크립트에 커스터마이징 옵션을 추가합니다. * feat: 스크립트 실행 시 의존성 설치를 선행하도록 처리합니다. * chore: yml파일의 네이밍을 수정합니다. * feat: Interaction 컴포넌트 구현 (#17) * 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: Label 및 Badge 컴포넌트 구현 (#20) * feat: Badge 컴포넌트 구현 * feat: Label 컴포넌트 구현 * feat: Badge 컴포넌트 재구현 Label 컴포넌트 이용 * feat: Badge 스토리북 작성 * feat: Label 스토리북 작성 * style: Label 객체 구성 수정 및 객체명 변경 * style: 코드 정리 * rename: 스토리 이름 Primary로 변경 * fix: 인터렉션 컴포넌트 수정 및 storybook 설정 (#22) * 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, Callout, Hero 컴포넌트 구현 (#23) * 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: progress 컴포넌트 구현 (#29) * 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) * feat: 범용성있는 버튼 컴포넌트 구현 (#30) * 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: 아이코노그래피를 기반으로 아이콘 컴포넌트 구현 (#32) * 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: 인터랙션 컴포넌트 재구현 및 semantic 컬러 토큰 업데이트 (#35) * 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: Input 컴포넌트 구현 (#36) * 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 사용 * feat: 지원하기 페이지 UI 구현 (#40) * 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: Card와 Post 컴포넌트 구현 (#37) * 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: 탭 컴포넌트 구현 (#39) * 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 페이지 UI 구현 및 아코디언 컴포넌트 구현 (#53) * 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에 직접 조건부 처리 방식으로 변경 * feat: Select 컴포넌트 구현 (#44) * 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: SnackBar 컴포넌트 구현 (#45) * 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를 옵셔널에서 필수로 변경합니다. * Fix: 인터렉션 재구현 3차 (#60) * feat: 인터렉션 스타일 네임 생성 * feat: global.css에 interaction.css 등록 * remove: 기존 인터렉션 컴포넌트, 스토리북, 스타일 파일 삭제 * fix: 기존 인터렉션 적용되어있던 컴포넌트에 새로운 인터렉션 스타일 적용 * feat: transition-faster-fluent 스타일 정의 * refactor: transition-faster-fluent 공통으로 들어가는 곳에 적용 * fix: Variant, Density 타입 생성하여 eslint 에러 해결 * feat: Header, Footer 관련 컴포넌트 구현 및 Layout 적용 (#56) * 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 및 Post 컴포넌트 Interaction 주입 (#55) * 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: Role 컴포넌트 구현 (#63) * 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 컴포넌트 구현 (#61) * feat: Dialog 컴포넌트 구현 * feat: useDialog 훅 생성 * feat: Dialog 스토리북 작성 * remove: 불필요한 index.ts 파일 삭제 * refactor: useDialog useState 타입 명시 제거 * fix: props 네이밍 변경 및 btnLayout에 따른 버튼 위치 수정 + 스토리북 수정 * feat: Dialog BlockButton className 제거 * chore: favicon 설정 (#58) * chore: 파비콘 png 추가 * chore: index.html 파비콘 설정 * feat: 아이콘 추가 (#74) * chore: 새로운 아이콘 svg 파일 6개 추가 * feat: 아이콘 컴포넌트에 새로운 아이콘 추가 * feat: 아이콘 스토리북 업데이트 (새로운 아이콘 6개 추가) * fix: HeroIndex 컴포넌트 수정 (#80) * fix: HeroIndex의 Badge 배경색상/폰트색상 주입가능하도록 props 수정 * feat: HeroIndex 스토리북 작성 수정 * feat: 활동 페이지 UI 구현 (#77) * feat: 활동 페이지 router 설정 * feat: 임시 데이터 이용하여 Activity 페이지 UI 구현 * feat: Toast 구현 (#67) * feat: toastStore 생성 * feat: Toast 컴포넌트 구현 및 toast 애니메이션 정의 * feat: useToast 훅 생성 * feat: Toast, useToast 스토리북 작성 * feat: Layout에 Toast 컴포넌트 추가 * refactor: ToastType bg -> backgroundColor로 네이밍 수정 * refactor: Toast 컴포넌트 useState 타입 추론 방식으로 변경 * refactor: Toast className clsx 사용 * remove: useToast 삭제 * fix: useToast -> useToastActions 사용으로 스토리북 수정 * feat: toastStore 스프레드 연산자 사용으로 불변성 지키기 * refactor: animation.css 생성 및 애니메이션 관련 css 코드 분리 * feat: 메인페이지 UI 구현 (#78) * feat: 애니메이션 부분에 쌓이는 이미지를 추가합니다. * feat: Main 페이지의 틀을 구현합니다. * feat: 애니메이션이 들어가는 부분을 컴포넌트화합니다. * feat: AnimatedSection의 스토리북을 추가합니다. * chore: gsap 라이브러리를 설치합니다. * refactor: gsap를 이용해 애니메이션을 재구성합니다. * feat: AnimatedSection을 메인페이지에 적용합니다. * feat: 메인페이지를 라우트에 추가합니다. * feat: 메인페이지의 두번째 섹션을 구현합니다. * refactor: HeroIndex의 width에 100%를 부여합니다. * refactor: CalloutNumerical의 width에 100%를 부여합니다. * feat: 메인페이지의 세번째 section을 구현합니다. * feat: 공통적으로 적용되는 프레임의 className을 상수화합니다. * feat: Tab 컴포넌트에 cursor pointer 스타일을 추가합니다. * feat: 메인페이지의 네번째 section을 구현합니다. * refactor: Hero 컴포넌트의 content를 children 형태로 받도록 수정합니다. * refactor: HeroIndex 컴포넌트의 content를 children 형태로 받도록 수정합니다. * feat: 메인페이지의 마지막 section을 구현합니다. * refactor: 수정된 HeroIndex 컴포넌트의 props 구조를 반영합니다. * move: 불필요한 import 문을 제거하고 정렬합니다. * rename: 공통 wrapper의 스타일 명칭을 직관적으로 변경합니다. * refactor: Hero 컴포넌트가 badge의 조건부 렌더링을 수행하도록 수정합니다. * move: 사용하지 않는 badgeText props 값을 제거합니다. * fix: 애니메이션을 위한 section의 스타일을 요구사항에 맞춰 변경합니다. * feat: 메인페이지에 scroll 스타일을 추가합니다. * feat: 메인 페이지에 스크롤 트리거를 추가합니다. * feat: 스크롤 트리거 진행 시 context를 이용해 메모리 누수를 최소화합니다. * refactor: 랜딩 페이지 애니메이션이 한글자 씩 타이핑 되도록 수정합니다. * feat: 타임라인 section에 필요한 객체 데이터를 분리합니다. * feat: 타임라인 section을 구조 분해 할당을 이용하여 객체 데이터를 매핑합니다. * fix: 잘못 반영된 RoleHero의 디자인을 수정합니다. * feat: 포지션 section의 객체 데이터를 분리합니다. * feat: 포지션 section의 객체 데이터를 구조 분해 할당으로 매핑합니다. * fix: Hero 컴포넌트의 잘못 적용된 스타일을 수정합니다. * feat: 핵심 가치 section의 객체 데이터를 분리합니다. * feat: 핵심 가치 section 데이터를 구조 분해 할당으로 매핑합니다. * fix: HeroIndex의 잘못 적용된 padding 값을 수정합니다. * move: 불필요한 주석을 제거합니다. * feat: Title의 일부분에 accent 색상을 주입합니다. * fix: 잘못 적용된 스타일을 수정합니다. * fix: 잘못 적용된 스타일을 재수정합니다. * fix: 불필요한 fragment를 제거하고 객체 데이터를 단순화합니다. * feat: 객체 데이터의 타입을 구체화합니다. * move: 불필요하게 적용된 스타일을 제거합니다. * feat: section의 뷰포트를 dvh로 재정의합니다. * feat: 스크롤 가능한 요소에 스크롤 바를 표시하지 않는 global 스타일을 추가합니다. * refactor: 스크롤 애니메이션 동작 시 기본 스크롤을 비활성화하도록 구조를 수정합니다. * feat: gsap 플러그인의 진입점을 main.tsx로 설정합니다. * refactor: context를 이용해 context 내부 section에 대해서만 애니메이션 처리를 수행합니다. * feat: 하단에서 상단으로 올라가는 스크롤 애니메이션을 추가합니다. * feat: 객체 데이터에 뱃지 스타일 데이터를 추가합니다. * feat: HeroIndex의 뱃지 스타일을 추가합니다. * move: 애니메이션 디버깅을 위한 marker 옵션을 제거합니다. * move: 상단 스크롤 애니메이션 디버깅을 위한 marker 옵션을 제거합니다. * feat: apply-3 페이지 및 지원 완료 페이지 UI 구현 (#81) * feat: 지원 과정 페이지 PATH 추가 * feat: 지원 과정 페이지들 router 설정 * feat: 지원 관련 페이지의 타이틀 문구 APPLY_TITLE 객체화 및 적용 - 파일명 applyData -> applyPageData로 변경 * rename: faqData -> faqPageData로 파일명 수정 및 임포트 수정 * feat: 지원 관련 페이지 내 사용되는 메시지 상수화 * feat: 지원 완료 페이지 UI 구현 * remove: 지원 완료페이지 불필요한 버튼 className 삭제 * feat: apply-3 페이지 UI 구현 (이름, 전화번호 입력 페이지) * feat: apply-3 페이지 router에 컴포넌트 추가 * fix: ApplyComplete 버튼 className w-full 추가 * refactor: ApplyApplicationInfo 컴포넌트 css 수정 * refactor: ApplyComplete 페이지 css 수정 및 Link -> navigate 사용 * refactor: ApplyApplicationInfo 페이지 Link -> navigate 사용 * fix: 지원 완료 페이지 컨텐츠 중앙 정렬 * fix: ProgressIndicator key값 추가 * fix: APPLY_HELPER_MESSAGE 네이밍 방식 통일 * fix: APPLY_MESSAGE 구조 및 문구 수정 * refactor: ApplyComplete 컴포넌트 내용글 및 버튼 문구 상수화 * feat: File, Uploader 컴포넌트 구현 (#76) * feat: validateFileType util 함수 생성 * feat: file 확장자 및 fileMine 객체 생성 * feat: changeFileSizeUnit util 함수 생성 * feat: TextArea 컴포넌트 outline-none 클래스 추가 * fix: InputArea 컴포넌트 w-full 로 변경 * feat: Uploader 컴포넌트 구현 및 스토리북 작성 * feat: File 컴포넌트 구현 및 스토리북 작성 * feat: InputFile 컴포넌트(File+Uploader) 구현 및 스토리북 작성 * fix: inputFile -> InputFile 파일명 변경 및 file 타입에 따라 key값 처리 * feat: InputFile 스토리북 수정 * refactor: File openFile 함수 코드 수정 (if문 대신 삼항연산자 사용) * fix: File 컴포넌트의 deleteHandler event 타입 수정 * remove: 불필요한 코드 제거 * feat: fileUrl 타입 추가 * fix: fileUrl 타입 대문자 시작으로 수정 * feat: File 컴포넌트 CDN URL만 받는 걸로 수정 * fix: InputFile도 CDN URl 만 받도록 수정 * fix: Uploader disabled 상태 수정 및 깜박임 현상 해결 + 중복 코드 정리 * feat: Uploader disabled 스토리 추가 * style: File 커서포인터 추가 * docs: File 스토리북 업데이트 * feat: InputFile UI 업데이트 (레이블 및 용량 표기 추가) * feat: feedback 타입의 File 컴포넌트 추가 * fix: feedback 타입 File cursor pointer 제거 * fix: Uploader 컴포넌트 확장자 검증 로직 제거 확장자 검증은 File 컴포넌트 렌더링 타이밍에 수행 * fix: InputFile에서 File 컴포넌트 제거 File 컴포넌트는 children으로 받도록 수정 * refactor: fileStyle 분리 * fix: FileUrl id 타입 string으로 변경 * design: useState의 <boolean> 삭제 * refactor: maxSize 초기값 삭제 * feat: 프로젝트, 프로젝트 상세페이지 구현 (#84) * feat: 프로젝트 페이지 틀을 생성합니다. * feat: 프로젝트 페이지를 라우터에 추가합니다. * feat: 프로젝트와 해커톤을 위한 임시 데이터를 생성합니다. * feat: 프로젝트 후기 section을 더미 데이터로 퍼블리싱 합니다. * feat: 프로젝트 상세 페이지의 틀을 생성합니다. * feat: 프로젝트 상세 페이지의 경로를 router에 추가합니다. * refactor: CalloutInformation 컴포넌트의 최상위 태그에 w-full을 적용합니다. * feat: 프로젝트 상세페이지의 화면을 더미데이터를 이용해 퍼블리싱합니다. * feat: 프로젝트 페이지의 버튼 텍스트를 기입합니다. * fix: 잘못 적용된 버튼 아이콘의 스타일을 수정합니다. * fix: content를 감싸는 wrapper의 높이를 고정값이 아닌 최솟 값으로 수정합니다. * feat: 해커톤 페이지 경로를 추가합니다. * refactor: 경로 호출을 상수화된 경로로 변경합니다. * design: grid 대신 flex-col 사용하여 단일 column 레이아웃으로 합니다. * fix: router의 import order을 eslint 설정에 맞게 수정합니다. * design: 레이아웃의 최소 크기를 요구사항에 맞춰 제거합니다. * refactor: TabItem의 props 구조를 변경 후 disabled 속성을 주입합니다. * refactor: type으로 선언된 props를 interface 구조로 통일합니다. * feat: TabItem의 비활성화 색상과 포인터 이벤트 제어를 반영합니다. * feat: 해커톤 Tab에 disabled을 주입합니다. * feat: 프로젝트 상세 페이지에 Select 컴포넌트를 적용합니다. * fix: 인터렉션 focus-visible 효과 나타날 때 border가 보이지 않는 버그 해결 (#89) * fix: focus-visible 효과 나타날 때 border이 보이지 않는 버그 해결 * fix: scale 고려한 interaction 스타일 생성 * refactor: scale 인터렉션이 필요한 컴포넌트에 적용 (아코디언, 라벨버튼) * bug: 빌드 파일 생성 과정에서 발생한 에러 수정 (#88) * refactor: BlockButton의 style props명을 기본 button style과 명확히 구분 짓습니다. * docs: 수정된 props 이름을 BlockButton 스토리 파일에 반영합니다. * docs: 잘못 기입된 size 명칭을 변경합니다. * docs: fileId 의 값을 file 타입에서 선언한 string 타입으로 변경합니다. * docs: snackBar에서 누락된 onaction props를 스토리 파일에 작성합니다. * refactor: TabItem의 인터페이스 중 id를 커스텀 props로 재구성합니다. * move: 사용하지 않는 import 문을 제거합니다. * docs: 잘못 선언된 컴포넌트 네이밍을 수정합니다. * fix: 타입 import 경로를 절대경로에서 상대경로로 변경합니다. * move: 사용하지 않는 변수를 제거합니다. * fix: BlockButton의 인터페이스 명은 기존의 이름으로 재수정합니다. * feat: apply-2 페이지 UI 구현 (#82) * feat: ApplyVerify 페이지 UI 구현 * fix: InputField 헬퍼메시지 폰트색상 조건부 수정 * refactor: Title 감싸는 div 태그 제거 * fix: 잘못 수정된 부분 복구 * fix: isExist -> isNewApplicant 로 변수명 변경 * refactor: 중첩 삼항연산자 표현 변경 * refactor: 중첨삼항연산자 clsx 사용 * refactor: ApplyVerify를 ApplyVerifyEmail, ApplyVerifyPin 페이지 컴포넌트로 분리 * feat: Input 컴포넌트 disabled 일때 text 색상 추가 * fix: NewTabLink className props으로 받도록 수정 * feat: 비밀번호 재설정 페이지 연결 * feat: 비밀번호 재설정일 경우 조건부 렌더링 * fix: applyInfoList NewTabLink className 달기 * feat: 이메일 인증 페이지 라우터 설정 * fix: 이메일 인증 페이지 PATH 수정 * remove: ApplyVerify 컴포넌트 삭제 * feat: APPLY_TITLE 비밀번호재설정 페이지 타이틀 추가 * feat: 지원하기 페이지에서 이메일 인증 페이지 navigate 설정 * fix: ApplyApplicationInfo 컴포넌트 isReady -> isStepCompleted 변수명 수정 * fix: prop 전달받은 값으로 컴포넌트 렌더링 불가로 방식 변경 * fix: PATH 변수명 applyVerify로 재수정 * remove: 불필요한 임포트 삭제 * refactor: setter 제거 * refactor: Input isError 옵셔널 처리 * refactor: 순환 렌더링 문제 발생 우려로 ApplyVerify 컴포넌트에서 페이지 컴포넌트 조건부 렌더링하도록 수정 * refactor: Apply 페이지 중 main 태그 -> section태그로 변경 및 사용하지 않는 form 태그의 action='' 제거 * refactor: email 더미데이터 빈문자열로 변경 * refactor: useState 불리언타입 지정 제거 * refactor: ApplyVerify 조건부 리팩토링 * refactor: ApplyVerify 삼항연산자 사용하여 return 하기 * feat: 지원서 작성 페이지 UI 구현(apply-4) (#85) * feat: ApplyRegistration 페이지 생성 및 select에 따른 문항 나타나도록 UI 구현 * fix: InputArea 고정된 width 값 제거 * refactor: TextArea 컴포넌트 outline none 처리 및 자동 높이 조절을 위한 row=1 지정 * feat: 텍스트 양만큼 TextArea의 높이 자동 조절 기능 추가 * feat: ApplyRegistration 페이지 컴포넌트 라우터 등록 * feat: 에러일 경우 TextArea border 처리 * feat: InputArea 헬퍼메시지 기능 추가 및 에러일 경우 스타일 처리 * refactor: 불필요한 스타일 및 태그 제거 * remove: console.log 제거 * feat: select 키보드 입력으로 포지션 선택하기 및 select outside 클릭 시 닫히기 * feat: mergeRefs 유틸함수 생성 * feat: mergeRefs 유틸함수 사용하여 textareaRef, ref 받도록 함 * refactor: ApplyRegistration 코드 정리 * refactor: POSITIONS 배열 상수 사용 * feat: Uploader 최대 가능 용량값 동적으로 변경되도록 함. * refactor: ApplyRegistration 컴포넌트 파일 더미 데이터 사용하여 InputFile 구현 * refactor: InputFile File 컴포넌트 배열을 받도록 수정 File 컴포넌트 리스트들을 감싸는 컨테이너 태그를 일일이 작성하지 않도록 InputFile에서 이동시키기 위함. 추가로 리스트가 있을 경우에만 컨테이너 태그가 나타나도록 하기 위해 children 속성이 아닌 배열을 받도록 변경. * refactor: ApplyRegistration에 수정된 InputFile 적용 * refactor: InputArea errorHelper 조건부 수정 * docs: InputArea 스토리북 업데이트 * docs: mergeRefs TSDoc 추가 * fix: 직군 선택 초기에만 키보드 작성 가능한 버그 수정 * fix: ApplyRegistration select 키보드 탭 선택 버그 해결 * fix: ApplyRegistration 키보드 타이핑 기능 제거 select 선택지를 선택하기 위한 input이므로 타이핑 기능 불필요 타이핑이 가능할 경우, 혼란이 있을 수 있음 * design: Input 컴포넌트 readonly일 경우엔 cursor default * refactor: TextArea에 className props 추가, focus 효과 디자인 수정 * docs: InputArea 스토리북 description 추가 * feat: forwardRef 컴포넌트에 displayName 달기 * refactor: Input, InputField, TextArea isError 옵셔널 처리 * remove: 불필요한 index.ts 삭제 * refactor: setIsSelectOpen false로 수정 * refactor: MutableRefObject import 하기 * refactor: Ref import 하기 * feat: 리팩토링 이슈 템플릿 추가 (#92) 리팩토링 이슈 템플릿을 추가합니다. * chore: api 연동을 위한 axios, tanstack query 세팅 및 테스트 (#90) * feat: QueryClientProvider 및 DevTools 설정 * chore: axios 설치 * chore: gitignore에 .env 추가 * feat: axiosInstance 생성 * feat: vite proxy 설정 * feat: 프록시 서버 이용하므로 axioInstance BASE_URL 임시로 '/api' 설정 * feat: requestHandler 생성 * feat: ApiResponse 공통 타입 정의 ( + Sort) * feat: fetchMiniStudies 함수 생성 * feat: Tanstack query 사용한 useMiniStudies 훅 생성 * refactor: 미니스터디 api 연동 * refactor: 미니스터디 fetch 함수 한줄로 줄이기 * refactor: axiosInstance 불필요한 변수 제거 * remove: 불필요한 index.ts 파일 삭제 * rename: axiosInstance.ts -> httpClient.ts 파일명 변경 및 utils/ 로 이동 * refactor: 경로 수정 * refactor: ReactQueryDevtools는 개발환경 조건부 렌더링 처리 * refactor: api endpoint 및 타입 인터페이스 분리 * refactor: fetchMiniStudies -> getMiniStudies로 함수명 변경 * refactor: types 폴더 정리 * refactor: types 폴더 정리한 파일들 경로 수정 * feat: requestHandler에 401,403, 500, 기타 네트워크 에러 전역 처리 * feat: ApiResponse의 State 종류 업데이트 * refactor: TODO 추가 * refactor: Sort 타입 sort 파일로 분리 및 적용 * refactor: requestHandler 제네릭 타입 수정 (#102) * refactor: requestHandler 제네릭 타입 수정 * refactor: getMiniStudies에서 ApiResponse 제거 * feat: CheckBox 컴포넌트 구현 (#86) * feat: CheckBox 컴포넌트의 type을 선언합니다. * feat: CheckBox 컴포넌트에서 사용되는 CheckBoxIcon 컴포넌트를 구현합니다. * feat: CheckBox 컴포넌트를 구현합니다. * docs: CheckBox 컴포넌트의 스토리북을 작성합니다. * design: interaction의 click 요소 효과를 카테고리화합니다. * design: CheckBox에 interaction 요소를 주입합니다. * fix: 실제 interaction이 적용되는 태그에 interaction을 재주입합니다. * style: import 문의 절대경로를 상대경로로 수정합니다. * typo: 컴포넌트의 오탈자를 수정합니다. * feat: CheckBox에 hover interaction을 추가합니다. * typo: 함수와 타입 명을 파스칼 케이스로 수정합니다. * feat: interaction을 커스텀 하여 CheckBox 컴포넌트에 부여합니다. * docs: checkbox 스토리 파일에 interaction이 적용되는 케이스를 추가합니다. * docs: useState 을 render 콜백에서 호출하지 않도록 변경합니다. * refactor: tabIndex를 이용해 interaction 역할을 수행하는 div에 interaction을 주입합니다. * move: 사용하지 않는 interaction 을 제거합니다. * feat: interaction이 적용되는 div에 tabIndex를 추가합니다. * move: 사용하지 않는 group 속성을 제거합니다. * refactor: Icon 컴포넌트의 import 방식을 변경합니다. * refactor: interaction을 위한 div을 제거하고 실제 요소에 interaction을 수행합니다. * fix: focus 시 before 가상요소를 제거하고 자식 요소의 상태에 따라 focus 되도록 스타일을 수정합니다. * refactor: 스타일 폴더 리팩토링 (#100) * refactor: 블럭 버튼, 라벨 버튼 스타일 파일 컴포넌트 폴더로 이동 * refactor: file 스타일 파일 파일 컴포넌트 폴더로 이동 * refactor: 아이콘 스타일 파일 컴포넌트 폴더로 이동 * refactor: 타이틀 스타일 파일 컴포넌트 폴더로 이동 * refactor: 레이블 스타일 파일 컴포넌트 폴더로 이동 * refactor: 직군명, 이메일 변경 및 데브옵스 애니메이션 비활성화 (#104) * refactor: 프로젝트 매니저에서 프로덕트 매니저로 변경 * refactor: jectofficial@ject.kr로 변경 * refactor: 메인페이지 데브옵스 애니메이션 비활성화 처리 * feat: 젝톡 조회 기능 및 EmptyData 컴포넌트 구현 (#99) * feat: jectalk Response 타입 생성 * feat: getJectalks fetch 함수 생성 * feat: useJectalks 훅 생성 * feat: EmptyData 공통 컴포넌트 생성 및 스토리북 작성 * feat: activity page, 잭톡 조회 API 연결 및 EmptyData 컴포넌트 적용 * refactor: jectalk fetch 함수 타입 수정 * refactor: EmptyData 컴포넌트 Label 절대경로로 수정 * refactor: react-query 사용 훅은 Query 접미사 사용 * refactor: useQuery 에러 로그 출력 * refactor: 에러 로그 문구 수정 * feat: 젝톡 summary 표시 및 EmptyData 조건부 수정 (#111) * feat: 젝톡 레이블 표시 * refactor: 미니스터디, 젝톡 렌더링 조건 수정 * feat: 파일 업로드 기능 구현 (#109) * feat: 파일 업로드 api 요청 함수 및 훅 생성 * fix: Uploader 컴포넌트 동일한 파일 연속 선택 불가 버그 해결 * refactor: changeFileSizeUnit 유틸함수 수정 - 단위 표기 여부 추가 * feat: validateMaxSize 유틸함수 추가 * feat: Portfolio, NewPortfolio 타입 생성 * remove: FileUrl 타입 삭제 * chore: lottie-react 라이브러리 설치 * chore: loadingSpinner json 파일 추가 * refactor: select 외부 클릭 시 닫히기 로직 useCloseOutSide 훅으로 분리 * feat: S3 파일 업로드 요청 및 File 컴포넌트명 FileItem으로 변경 * docs: FileItem 스토리북 업데이트 * refactor: InputFile의 fileNode prop -> children으로 변경 * docs: InputFile 스토리북 수정 * feat: 파일 presignedUrl 생성 요청 및 ApplyRegistration에서 문항 코드 분리 * feat: 네트워크 불안정 이슈, 확인할 수 없는 파일 형식 예외 처리 * fix: eslint 에러 수정 * refactor: uploadFileToS3 axios 함수 파일 분리 및 mutate 변수명 붙이기 * feat: S3 파일 업로드 실패 시 retry 3회 설정 * design: 메시지 문구 수정 * feat: 손상된 파일 확인 및 분리해주는 유틸함수 생성 * fix: 파일 필터링 및 예외 처리 수정 - pdf가 아닌 파일일 경우 에러 토스트만 제시 - 손상된 pdf 파일일 경우 에러 UI 파일, 토스트 제시 * feat: 파일 비어있을 경우 예외 처리 * feat: 업로드 중인 파일 업로드 요청 취소 기능 추가 및 네트워크 에러시 파일 업로드 예외처리 수정 * refactor: fileExtensions 변수명 복수 처리 * refactor: changeFileSizeUnit 유틸함수 로직 수정 및 리팩토링 * refactor: 유틸 함수 가독성을 위한 개행 처리 * refactor: 응답 데이터 타입명 ~ResponseData 형식으로 변경 * refactor: 유틸 함수 가독성을 위한 개행 처리 * refactor: splitValidAndInvalidFiles 유틸함수 filter -> reduce 메서드 사용 * refactor: useCloseOutside 얼리리턴 * refactor: Uploader handleClick 함수 얼리리턴 * refactor: description 띄어쓰기 처리 * refactor: FileField 가독성을 위한 개행 처리 * refactor: FileItem의 extractFileInfo 유틸함수 생성 후 적용 * refactor: 포트폴리오 업로드 api 응답 데이터 keyName -> cdnUrl 수정 반영 * remove: validateFileType 유틸 함수 제거 * refactor: 타입명에 Response, Request suffix 추가 - uploadPortfolio.ts - answer.ts * refactor: 젝톡, 미니스터디 데이터타입 Response suffix 추가 * remove: 불필요한 로그 출력 코드 제거 * feat: 지원서 플로우 기능 구현 (#112) * feat: 파일 업로드 api 요청 함수 및 훅 생성 * fix: Uploader 컴포넌트 동일한 파일 연속 선택 불가 버그 해결 * refactor: changeFileSizeUnit 유틸함수 수정 - 단위 표기 여부 추가 * feat: validateMaxSize 유틸함수 추가 * feat: Portfolio, NewPortfolio 타입 생성 * remove: FileUrl 타입 삭제 * chore: lottie-react 라이브러리 설치 * chore: loadingSpinner json 파일 추가 * refactor: select 외부 클릭 시 닫히기 로직 useCloseOutSide 훅으로 분리 * feat: S3 파일 업로드 요청 및 File 컴포넌트명 FileItem으로 변경 * docs: FileItem 스토리북 업데이트 * refactor: InputFile의 fileNode prop -> children으로 변경 * docs: InputFile 스토리북 수정 * feat: 파일 presignedUrl 생성 요청 및 ApplyRegistration에서 문항 코드 분리 * feat: 지원서 문항 조회 api 함수 및 훅 생성 * remove: validateFileType 유틸함수 삭제 * feat: url 형식 검증 유틸함수 생성 * feat: Answers 타입 정의 * feat: 직군에 맞는 지원서 문항 렌더링 및 URL 검증 로직 추가 * refactor: detailedRegex 수정 * feat: 임시 저장 API 연동 * feat: 수동 임시저장 기능 구현 * refactor: select의 jobFamily 매핑 방향 수정 FE, BE, PM, PO를 key로 변경 * refactor: postDraft의 param prop null 타입 추가 * feat: 임시 저장 조회 api 요청 함수 및 훅 생성 * feat: 임시저장 조회 기능 구현 * refactor: handleChangeAnswer, handleChangePortfolios 함수 useCallback 처리 * feat: 임시 저장 조회 기능 구현 (임시저장 불러오기 다이얼로그 제외) - react router의 location.state 이용하여 임시저장 불러오기 여부 결정 - 작성 중 새로고침 시 임시 저장된 글 자동 불러오기 * refactor: Dialog 수정 - p 태그 -> div 태그로 변경 ( ReactNode로 받을 때 포괄적인 태그 사용을 위해) - children 공간에 오는 문구 text-center 처리 - useDialog state 변수명 수정 (isCloseOutside의 state와 겹침 문제) * feat: 지원서 직군 변경 기능 구현 - apiEndpoint 추가 - axios 함수 생성 - react query 훅 생성 - 직군 변경 전 dialog 띄우기 - 직군 변경 시 답변 초기화 및 직군 변경 api 요청 별개로, - 초반에 임시저장 불러오지 않고 새로 작성할 경우, 추가적인 임시저장 전까지 임시저장 불러오지 않도록 수정 * refactor: ApplyRegistration 코드 리팩토링 변수명 변경, 함수 분리 변수명 변경 - selectPosition -> selectedPosition - selectQuestion -> questionPosition - values -> answersPayload 함수 분리 - formatNewPortfolio 함수 생성 (FileField에서 사용) - notLoadDraft 함수 생성 * design: textField 답변 길이 제한 초과 시 필드 스타일 변경 - 헬퍼 메시지 표시 - 필드 테두리 및 글자 수 텍스트 빨간색 표시 * feat: 지원서 제출 답변 유효성 검사 - 필수 답변 작성 검사 - 답변 글자 수 제한 검사 - url 유효성 검사 * refactor: useDialog state 변수명 원상복구 - 변수명 겹칠 경우 별칭 사용 * refactor: mutationKey 달기 * feat: 지원서 제출 기능 구현 - 지원서 제출 api endpoint 생성 - submitAnswer 함수 생성 - useSubmitAnswerQuery 훅 생성 - 제출 시 다이얼로그 표시 및 성공 시 지원 완료 페이지 이동 * feat: 15분마다 자동 임시저장 기능 구현 * refactor: ApplyRegistration 리팩토링 - state와 관련 함수를 관리하는 useApplicationState 훅 생성 - 포지션 선택 관련 selectBox 컴포넌트 분리 - 문항 및 답변 관련 Answers 컴포넌트 분리 * remove: 불필요한 주석 제거 * refactor: 직군을 표현하는 단어 position -> job으로 변경 * refactor: isLoadDraft 함수 수정 (불필요한 리턴 제거) * refactor: validateAnswersPayload if문 간소화 * refactor: draft 데이터 uuid 추출 오류 해결 * refactor: isLoadDraft 함수 간소화 * refactor: 지원서 문항 조회 실패 시 빈 폼 반환. * feat: Input read-only 일 때 커서 기본 스타일 지정 * feat: api 임시 에러 처리 (에러 로그 출력) * refactor: onKeyDown -> onKeyUp으로 변경 * refactor: draft, submitAnswer 호출 전 param null 처리 * refactor: formatForPresignedUrl, formatNewPortfolio 구조 분해 할당 처리 * refactor: Dialog title p 태그로 변경 * refactor: submitButtonActive -> setSubmitButtonActive 로 함수명 변경 * refactor: 훅 선언 개행처리 * refactor: File 타입 file -> rawFile로 네이밍 변경 * refactor: AnswersRequest answers key 타입 number로 변경 * refactor: QuestionResponse 타입 정의 * refactor: putJob request 타입 정의 * refactor: 제출 다이얼로그 내용 문구 띄어쓰기 수정 * refactor: initialAnswer 타입 설정 * feat: 페이지 하단 지원 스낵바 구현 (#120) * feat: 3기 지원 스낵바 공통 컴포넌트 생성 * feat: 메인, 프로젝트, 활동, faq 페이지에 스낵바 노출 * remove: 불필요한 index.ts 파일 삭제 * refactor: isMain -> width 로 props 변경 페이지 단에서 어떤 width 값이 들어가는지 확인할 수 있도록 변경 * refactor: SnackBar 컴포넌트 색상 수정 * refactor: 지원 스낵바 높이 수정 * feat: 지원 스낵바 애니메이션 추가 * feat: 로컬스토리지 자동 임시 저장 기능 구현 (#122) * feat: 로컬스토리지를 이용한 자동 임시저장 기능 구현 * fix: 업로드된 파일 열기 실패 버그 해결 * refactor: 함수명 수정 * refactor: 불필요한 변수 제거 * feat: 회원 비회원 인증 및 회원정보 등록 기능 (#114) * chore: zod와 react-hook-form 라이브러리를 설치합니다. * feat: zod를 이용해 지원 페이지에 사용되는 스키마를 생성합니다. * feat: zod와 react-hook-form을 연동하여 유효성 검사 훅을 생성합니다. * refactor: umd 변수로 선언된 props를 유니온 타입을 변환합니다. * feat: api 연동을 위한 엔드 포인트를 설정합니다. * feat: apply 관련 api response를 반영하여 인터페이스를 생성합니다. * feat: 폼 핸들러 처리를 돕는 유틸리티 함수를 생성합니다. * feat: 요구사항을 반영하여 지원 api 호출부를 설정합니다. * feat: 커스텀 훅을 이용하여 데이터 패칭을 처리하는 로직을 로깅과 함께 생성합니다. * feat: input 컴포넌트에 undefined 처리되는 옵셔널 props에 기본 값을 할당합니다. * feat: 지원하기 데이터 패칭 로직을 지원페이지에 적용합니다. * refactor: 폼 제출 핼퍼 함수의 데이터 타입은 해당 함수를 사용하는 부분에서 처리하도록 변경합니다. * fix: 최신 react-query의 속성을 반영하여 isLoading isPending 으로 수정합니다. * feat: Label 컴포넌트의 개선사항을 표기합니다. * refactor: Label 컴포넌트가 htmlFor 속성을 받지 못하는 문제를 추가 태그를 이용해 처리합니다. * move: 스토리북에 인터렉션 예시를 제거합니다. * feat: CheckBox 컴포넌트를 하단 Label에 추가합니다. * feat: 핀 로그인 성공시 navigate 로직을 추가합니다. * design: 잘못 적용된 gap 값을 수정합니다. * feat: 회원 존재 여부 확인 api의 엔드포인트를 생성합니다. * feat: 회원 존재 여부 확인 api의 반환 인터페이스를 생성합니다. * feat: 회원 존재 여부 api의 호출부를 구현합니다. * feat: 이메일 인증 api 를 호출하기 전 이메일 존재 여부를 확인합니다. * feat: email 값을 state로 처리하여 전달할 수 있도록 처리합니다. * feat: 회원 존재 여부 api에 대한 커스텀 훅을 생성합니다. * feat: status 타입을 추가합니다. * feat: 이메일 인증 api에 대한 에러 상황을 처리합니다. * feat: 버튼 비활성화 상태에 조건을 추가합니다. * feat: 기존 회원의 PIN 로그인 로직을 구현합니다. * move: 불필요하게 추가된 상태와 매개변수를 제거합니다. * feat: 지원자 정보에 대한 스키마를 생성합니다. * feat: 지원자 정보 스키마의 예외 상황을 엄밀하게 제한합니다. * feat: 회원 정보 업데이트 api의 엔드포인트를 생성합니다. * feat: 회원 정보 업데이트 api의 인터페이스를 생성합니다. * feat: 회원 정보 업데이트 api의 호출부를 구현합니다. * feat: zod를 이용해서 지정된 스키마의 유효성 검사를 수행합니다. * feat: 커스텀 훅을 이용해 회원 정보 저장에 대한 데이터 패칭을 진행합니다. * feat: 항목이 비어있을 때도 유효하지 않은 스키마로 판단합니다. * feat: 지원자 정보 입력 페이지에 데이터 패칭 로직을 부여합니다. * feat: auth 관리를 위한 api의 엔드포인트를 추가합니다. * chore: 추가된 env 파일에 대한 컴파일 옵션을 설정합니다. * chore: 전역 변수의 타입을 설정합니다. * feat: 순환 참조를 고려하여 requestHandler를 사용하지 않고 토큰 리프레쉬 api를 호출합니다. * feat: interceptor를 이용해 api 호출 전후 header와 개발 환경 별 토큰 관리를 처리합니다. * feat: requestHandler에 option 매개변수를 추가합니다. * feat: 토큰 관리를 위한 인터페이스를 추가합니다. * feat: 회원 정보 등록을 위한 인터페이스를 생성합니다. * feat: 회원 정보 등록 api의 호출부를 생성합니다. * feat: 회원 정보 등록 api를 커스텀 훅을 이용해 관리합니다. * feat: PIN을 이용한 로그인 시 로컬 개발 환경에서 토큰을 header에 사용하도록 설정합니다. * fix: 신규 사용자의 경우 임시 회원 가입 api를 통해 플로우를 진행합니다. * fix: 디자인 요구사항에 맞춰 컴포넌트 간 간격을 조정합니다. * feat: FAQ 란에 객체 데이터를 추가합니다. * feat: Accordion에 추가되어야 할 요구사항을 TODO를 이용해 기재합니다. * feat: cta 버튼에 onClick 핸들러를 추가합니다. * fix: 불필요하게 설정된 error의 타입 검사를 제거합니다. * typo: Email 인증 인터페이스 타입명을 통일합니다. * refactor: 이메일 관련 api의 매개변수와 payload를 객체 분할 형태로 통일합니다. * refactor: 커스텀 훅에 mutationKey를 추가합니다. * refactor: 변경된 커스텀 훅의 매개변수를 mutate 객체에 반영합니다. * typo: 변경된 api의 response에 맞게 인터페이스 명을 수정합니다. * typo: 변경된 인터페이스에 맞춰 스키마의 변수 명을 수정합니다. * refactor: 변경된 api에 맞게 함수명을 변경합니다. * refactor: 이메일 인증 api에 query params를 추가합니다. * refactor: 이메일 인증 커스텀 훅에 mutationKey를 추가하고 매개변수로 query params를 추가합니다. * refactor: 이메일 인증 api의 변경점을 추가합니다. * feat: 이메일 인증 api에 사용되는 인터페이스를 추가합니다. * refactor: 수정된 이메일 인증 api의 호출부에 query params를 부여하는 로직을 추가합니다. * refactor: 이메일 인증 api를 사용하는 커스텀 훅의 매개변수를 구체화합니다. * feat: 변경된 이메일 인증 로직을 지원 페이지에 적용합니다. * typo: PIN을 이용한 로그인 시 사용되는 인터페이스 명을 간소화합니다. * refactor: PIN을 이용한 로그인 커스텀 훅에 변경된 인터페이스 명을 적용하고 mutationKey를 추가합니다. * refactor: PIN을 이용한 로그인의 API 호출부에 공통 인터페이스를 사용하여 간소화합니다. * typo: 회원 정보 업데이트 인터페이스의 명칭을 통일합니다. * typo: 임시 회원가입 api 인터페이스의 명칭을 통일합니다. * feat: api 호출 전에 이전 로그인 정보를 제거하는 로직을 추가합니다. * feat: base url의 선언 조건을 prod로 변경합니다. * feat: interceptor 가 로컬 환경이 아닐 때 withCredentials가 true 값을 가지도록 설정을 추가합니다. * move: 불필요하게 기입된 import 문을 수정합니다. * feat: 인증 번호 유효 시간 초과 시 이메일 버튼을 enabled 하고 label을 변경합니다. * refactor: 인증번호의 Input 창을 감지하여 값이 존재하지 않을 때 버튼을 표시하지 않습니다. * fix: 버튼의 문구를 디자인에 맞는 텍스트로 변경합니다. * feat: 제출 버튼에 아이콘과 조건부 렌더링을 추가합니다. * feat: input 태그에 자동완성 스타일이 커스텀 색상으로 처리되도록 처리합니다. * bug: workflow runner 버전 업데이트 (#133) * refactor: 다이얼로그 함수 호출식으로 재구현 (#127) * feat: dialogStore 생성 * refactor: Dialog 컴포넌트 수정 (dialogStore 이용) * remove: useDialog 훅 삭제 * refactor: Dialog 컴포넌트 Layout 에 추가 * refactor: 지원서 작성 페이지 수정된 다이얼로그 적용 * docs: Dialog 스토리북 수정 * refactor: dialog promise 제거 * docs: 다이얼로그 스토리북 수정 (promise 사용 스토리 수정) * remove: 불필요한 파일 제거 (useApplicationDialog) * feat: 다이얼로그 열린 상태 스크롤 정지 기능 구현 * feat: primary 버튼만 있는 Dialog 추가 * docs: 버튼 하나 Dialog 스토리 추가 * refactor: 불필요한 void 제거 * docs: Dialog 스토리북 설명 수정 * docs: Dialog 스토리북 함수명 수정 * refactor: dialogStore의 타입명 복수로 수정 * refactor: 다이얼로그 상태 관리 방식 수정 - 정적인 데이터는 객체 데이터로 관리, constants/dialog.tsx 생성 - dialogStore는 열고 닫힘 상태, 다이얼로그 타입, 버튼 액션를 관리 - 위 2가지를 Dialog 컴포넌트에 반영 * docs: Dialog 스토리북 수정 * refactor: ApplyRegistration 페이지 다이얼로그 코드 수정 * docs: Dialog 스토리북 설명 추가 * refactor: dialog 오타 수정 및 DialogTypes types/ 폴더로 분리 * refactor: dialogStore openDialog 간소화 * refactor: Dialog 버튼 handleClick 함수 간소화 * style: dialogStore 한줄 작성 * chore: 배포 스크립트 및 환경 설정 (#135) * fix: Uploader 스토리북 에러 해결 (#138) * feat: 답변 SELECT 필드 추가 (#130) * refactor: useCloseOutside 훅 ref 배열도 받을 수 있도록 수정 * refactor: selectBox 닫기 깜박임 수정 * feat: 지원서 작성 페이지의 객관식 문항을 위한 selectField 구현 * feat: Question 서버 데이터 타입 변경 및 적용 * refactor: 답변 필드 label 서버 데이터 연결 * fix: 초기 렌더링 시 select field 선택해도 빈문자열로 저장되는 버그 해결 * style: question 타입 표현 수정 * feat: 임시저장 불러오기 다이얼로그 표시 및 임시지원서 제거 api 연동 (+지원서 관련 함수 및 타입 리팩토링) (#134) * feat: 직군 변경 api가 임시지원서 제거 api로 변경되어 changeJob api 제거 및 deleteDraft api 생성 * refactor: 직군 변경 시 임시지원서 제거 api 요청 * rename: mutation 훅은 use~Mutation으로 훅 명 변경 및 적용 * feat…
* release/v2.0.0 (#329) * feat: 프로젝트 개발 환경 세팅 (#2) * feat: 프로젝트 초기 세팅 * feat: eslint "import/order" 설정 추가 * fix: prettier "semi" 설정값 true로 수정 * feat: 디자인 시스템 및 스타일링 셋업 (#5) * 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: 주석 제거 * chore: Qodana ci 파이프라인 구축 (#7) * Add qodana.yaml file * Add github workflow file --------- Co-authored-by: Qodana Application <qodana-support@jetbrains.com> * chore: 스토리북 환경 구축 및 CI 설정 (#10) * 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: 폴더 구조 세팅 및 절대 경로 처리 (#13) * feat: 폴더 아키텍처 설정 (임시파일생성) * chore: 절대 경로 처리를 위한 @types/node 모듈 설치 * feat: @(src) 절대 경로 설정 * fix: main.tsx 절대 경로로 import 하기 * chore: Tanstack query 관련 모듈 설치 * feat: eslint-plugin-query 플러그인 설정 * style: 파일 import 시 확장자 제거 * chore: Qodana 스크립트 수정 (#15) * feat: 정적 분석 스크립트에 커스터마이징 옵션을 추가합니다. * feat: 스크립트 실행 시 의존성 설치를 선행하도록 처리합니다. * chore: yml파일의 네이밍을 수정합니다. * feat: Interaction 컴포넌트 구현 (#17) * 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: Label 및 Badge 컴포넌트 구현 (#20) * feat: Badge 컴포넌트 구현 * feat: Label 컴포넌트 구현 * feat: Badge 컴포넌트 재구현 Label 컴포넌트 이용 * feat: Badge 스토리북 작성 * feat: Label 스토리북 작성 * style: Label 객체 구성 수정 및 객체명 변경 * style: 코드 정리 * rename: 스토리 이름 Primary로 변경 * fix: 인터렉션 컴포넌트 수정 및 storybook 설정 (#22) * 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, Callout, Hero 컴포넌트 구현 (#23) * 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: progress 컴포넌트 구현 (#29) * 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) * feat: 범용성있는 버튼 컴포넌트 구현 (#30) * 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: 아이코노그래피를 기반으로 아이콘 컴포넌트 구현 (#32) * 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: 인터랙션 컴포넌트 재구현 및 semantic 컬러 토큰 업데이트 (#35) * 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: Input 컴포넌트 구현 (#36) * 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 사용 * feat: 지원하기 페이지 UI 구현 (#40) * 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: Card와 Post 컴포넌트 구현 (#37) * 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: 탭 컴포넌트 구현 (#39) * 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 페이지 UI 구현 및 아코디언 컴포넌트 구현 (#53) * 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에 직접 조건부 처리 방식으로 변경 * feat: Select 컴포넌트 구현 (#44) * 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: SnackBar 컴포넌트 구현 (#45) * 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를 옵셔널에서 필수로 변경합니다. * Fix: 인터렉션 재구현 3차 (#60) * feat: 인터렉션 스타일 네임 생성 * feat: global.css에 interaction.css 등록 * remove: 기존 인터렉션 컴포넌트, 스토리북, 스타일 파일 삭제 * fix: 기존 인터렉션 적용되어있던 컴포넌트에 새로운 인터렉션 스타일 적용 * feat: transition-faster-fluent 스타일 정의 * refactor: transition-faster-fluent 공통으로 들어가는 곳에 적용 * fix: Variant, Density 타입 생성하여 eslint 에러 해결 * feat: Header, Footer 관련 컴포넌트 구현 및 Layout 적용 (#56) * 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 및 Post 컴포넌트 Interaction 주입 (#55) * 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: Role 컴포넌트 구현 (#63) * 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 컴포넌트 구현 (#61) * feat: Dialog 컴포넌트 구현 * feat: useDialog 훅 생성 * feat: Dialog 스토리북 작성 * remove: 불필요한 index.ts 파일 삭제 * refactor: useDialog useState 타입 명시 제거 * fix: props 네이밍 변경 및 btnLayout에 따른 버튼 위치 수정 + 스토리북 수정 * feat: Dialog BlockButton className 제거 * chore: favicon 설정 (#58) * chore: 파비콘 png 추가 * chore: index.html 파비콘 설정 * feat: 아이콘 추가 (#74) * chore: 새로운 아이콘 svg 파일 6개 추가 * feat: 아이콘 컴포넌트에 새로운 아이콘 추가 * feat: 아이콘 스토리북 업데이트 (새로운 아이콘 6개 추가) * fix: HeroIndex 컴포넌트 수정 (#80) * fix: HeroIndex의 Badge 배경색상/폰트색상 주입가능하도록 props 수정 * feat: HeroIndex 스토리북 작성 수정 * feat: 활동 페이지 UI 구현 (#77) * feat: 활동 페이지 router 설정 * feat: 임시 데이터 이용하여 Activity 페이지 UI 구현 * feat: Toast 구현 (#67) * feat: toastStore 생성 * feat: Toast 컴포넌트 구현 및 toast 애니메이션 정의 * feat: useToast 훅 생성 * feat: Toast, useToast 스토리북 작성 * feat: Layout에 Toast 컴포넌트 추가 * refactor: ToastType bg -> backgroundColor로 네이밍 수정 * refactor: Toast 컴포넌트 useState 타입 추론 방식으로 변경 * refactor: Toast className clsx 사용 * remove: useToast 삭제 * fix: useToast -> useToastActions 사용으로 스토리북 수정 * feat: toastStore 스프레드 연산자 사용으로 불변성 지키기 * refactor: animation.css 생성 및 애니메이션 관련 css 코드 분리 * feat: 메인페이지 UI 구현 (#78) * feat: 애니메이션 부분에 쌓이는 이미지를 추가합니다. * feat: Main 페이지의 틀을 구현합니다. * feat: 애니메이션이 들어가는 부분을 컴포넌트화합니다. * feat: AnimatedSection의 스토리북을 추가합니다. * chore: gsap 라이브러리를 설치합니다. * refactor: gsap를 이용해 애니메이션을 재구성합니다. * feat: AnimatedSection을 메인페이지에 적용합니다. * feat: 메인페이지를 라우트에 추가합니다. * feat: 메인페이지의 두번째 섹션을 구현합니다. * refactor: HeroIndex의 width에 100%를 부여합니다. * refactor: CalloutNumerical의 width에 100%를 부여합니다. * feat: 메인페이지의 세번째 section을 구현합니다. * feat: 공통적으로 적용되는 프레임의 className을 상수화합니다. * feat: Tab 컴포넌트에 cursor pointer 스타일을 추가합니다. * feat: 메인페이지의 네번째 section을 구현합니다. * refactor: Hero 컴포넌트의 content를 children 형태로 받도록 수정합니다. * refactor: HeroIndex 컴포넌트의 content를 children 형태로 받도록 수정합니다. * feat: 메인페이지의 마지막 section을 구현합니다. * refactor: 수정된 HeroIndex 컴포넌트의 props 구조를 반영합니다. * move: 불필요한 import 문을 제거하고 정렬합니다. * rename: 공통 wrapper의 스타일 명칭을 직관적으로 변경합니다. * refactor: Hero 컴포넌트가 badge의 조건부 렌더링을 수행하도록 수정합니다. * move: 사용하지 않는 badgeText props 값을 제거합니다. * fix: 애니메이션을 위한 section의 스타일을 요구사항에 맞춰 변경합니다. * feat: 메인페이지에 scroll 스타일을 추가합니다. * feat: 메인 페이지에 스크롤 트리거를 추가합니다. * feat: 스크롤 트리거 진행 시 context를 이용해 메모리 누수를 최소화합니다. * refactor: 랜딩 페이지 애니메이션이 한글자 씩 타이핑 되도록 수정합니다. * feat: 타임라인 section에 필요한 객체 데이터를 분리합니다. * feat: 타임라인 section을 구조 분해 할당을 이용하여 객체 데이터를 매핑합니다. * fix: 잘못 반영된 RoleHero의 디자인을 수정합니다. * feat: 포지션 section의 객체 데이터를 분리합니다. * feat: 포지션 section의 객체 데이터를 구조 분해 할당으로 매핑합니다. * fix: Hero 컴포넌트의 잘못 적용된 스타일을 수정합니다. * feat: 핵심 가치 section의 객체 데이터를 분리합니다. * feat: 핵심 가치 section 데이터를 구조 분해 할당으로 매핑합니다. * fix: HeroIndex의 잘못 적용된 padding 값을 수정합니다. * move: 불필요한 주석을 제거합니다. * feat: Title의 일부분에 accent 색상을 주입합니다. * fix: 잘못 적용된 스타일을 수정합니다. * fix: 잘못 적용된 스타일을 재수정합니다. * fix: 불필요한 fragment를 제거하고 객체 데이터를 단순화합니다. * feat: 객체 데이터의 타입을 구체화합니다. * move: 불필요하게 적용된 스타일을 제거합니다. * feat: section의 뷰포트를 dvh로 재정의합니다. * feat: 스크롤 가능한 요소에 스크롤 바를 표시하지 않는 global 스타일을 추가합니다. * refactor: 스크롤 애니메이션 동작 시 기본 스크롤을 비활성화하도록 구조를 수정합니다. * feat: gsap 플러그인의 진입점을 main.tsx로 설정합니다. * refactor: context를 이용해 context 내부 section에 대해서만 애니메이션 처리를 수행합니다. * feat: 하단에서 상단으로 올라가는 스크롤 애니메이션을 추가합니다. * feat: 객체 데이터에 뱃지 스타일 데이터를 추가합니다. * feat: HeroIndex의 뱃지 스타일을 추가합니다. * move: 애니메이션 디버깅을 위한 marker 옵션을 제거합니다. * move: 상단 스크롤 애니메이션 디버깅을 위한 marker 옵션을 제거합니다. * feat: apply-3 페이지 및 지원 완료 페이지 UI 구현 (#81) * feat: 지원 과정 페이지 PATH 추가 * feat: 지원 과정 페이지들 router 설정 * feat: 지원 관련 페이지의 타이틀 문구 APPLY_TITLE 객체화 및 적용 - 파일명 applyData -> applyPageData로 변경 * rename: faqData -> faqPageData로 파일명 수정 및 임포트 수정 * feat: 지원 관련 페이지 내 사용되는 메시지 상수화 * feat: 지원 완료 페이지 UI 구현 * remove: 지원 완료페이지 불필요한 버튼 className 삭제 * feat: apply-3 페이지 UI 구현 (이름, 전화번호 입력 페이지) * feat: apply-3 페이지 router에 컴포넌트 추가 * fix: ApplyComplete 버튼 className w-full 추가 * refactor: ApplyApplicationInfo 컴포넌트 css 수정 * refactor: ApplyComplete 페이지 css 수정 및 Link -> navigate 사용 * refactor: ApplyApplicationInfo 페이지 Link -> navigate 사용 * fix: 지원 완료 페이지 컨텐츠 중앙 정렬 * fix: ProgressIndicator key값 추가 * fix: APPLY_HELPER_MESSAGE 네이밍 방식 통일 * fix: APPLY_MESSAGE 구조 및 문구 수정 * refactor: ApplyComplete 컴포넌트 내용글 및 버튼 문구 상수화 * feat: File, Uploader 컴포넌트 구현 (#76) * feat: validateFileType util 함수 생성 * feat: file 확장자 및 fileMine 객체 생성 * feat: changeFileSizeUnit util 함수 생성 * feat: TextArea 컴포넌트 outline-none 클래스 추가 * fix: InputArea 컴포넌트 w-full 로 변경 * feat: Uploader 컴포넌트 구현 및 스토리북 작성 * feat: File 컴포넌트 구현 및 스토리북 작성 * feat: InputFile 컴포넌트(File+Uploader) 구현 및 스토리북 작성 * fix: inputFile -> InputFile 파일명 변경 및 file 타입에 따라 key값 처리 * feat: InputFile 스토리북 수정 * refactor: File openFile 함수 코드 수정 (if문 대신 삼항연산자 사용) * fix: File 컴포넌트의 deleteHandler event 타입 수정 * remove: 불필요한 코드 제거 * feat: fileUrl 타입 추가 * fix: fileUrl 타입 대문자 시작으로 수정 * feat: File 컴포넌트 CDN URL만 받는 걸로 수정 * fix: InputFile도 CDN URl 만 받도록 수정 * fix: Uploader disabled 상태 수정 및 깜박임 현상 해결 + 중복 코드 정리 * feat: Uploader disabled 스토리 추가 * style: File 커서포인터 추가 * docs: File 스토리북 업데이트 * feat: InputFile UI 업데이트 (레이블 및 용량 표기 추가) * feat: feedback 타입의 File 컴포넌트 추가 * fix: feedback 타입 File cursor pointer 제거 * fix: Uploader 컴포넌트 확장자 검증 로직 제거 확장자 검증은 File 컴포넌트 렌더링 타이밍에 수행 * fix: InputFile에서 File 컴포넌트 제거 File 컴포넌트는 children으로 받도록 수정 * refactor: fileStyle 분리 * fix: FileUrl id 타입 string으로 변경 * design: useState의 <boolean> 삭제 * refactor: maxSize 초기값 삭제 * feat: 프로젝트, 프로젝트 상세페이지 구현 (#84) * feat: 프로젝트 페이지 틀을 생성합니다. * feat: 프로젝트 페이지를 라우터에 추가합니다. * feat: 프로젝트와 해커톤을 위한 임시 데이터를 생성합니다. * feat: 프로젝트 후기 section을 더미 데이터로 퍼블리싱 합니다. * feat: 프로젝트 상세 페이지의 틀을 생성합니다. * feat: 프로젝트 상세 페이지의 경로를 router에 추가합니다. * refactor: CalloutInformation 컴포넌트의 최상위 태그에 w-full을 적용합니다. * feat: 프로젝트 상세페이지의 화면을 더미데이터를 이용해 퍼블리싱합니다. * feat: 프로젝트 페이지의 버튼 텍스트를 기입합니다. * fix: 잘못 적용된 버튼 아이콘의 스타일을 수정합니다. * fix: content를 감싸는 wrapper의 높이를 고정값이 아닌 최솟 값으로 수정합니다. * feat: 해커톤 페이지 경로를 추가합니다. * refactor: 경로 호출을 상수화된 경로로 변경합니다. * design: grid 대신 flex-col 사용하여 단일 column 레이아웃으로 합니다. * fix: router의 import order을 eslint 설정에 맞게 수정합니다. * design: 레이아웃의 최소 크기를 요구사항에 맞춰 제거합니다. * refactor: TabItem의 props 구조를 변경 후 disabled 속성을 주입합니다. * refactor: type으로 선언된 props를 interface 구조로 통일합니다. * feat: TabItem의 비활성화 색상과 포인터 이벤트 제어를 반영합니다. * feat: 해커톤 Tab에 disabled을 주입합니다. * feat: 프로젝트 상세 페이지에 Select 컴포넌트를 적용합니다. * fix: 인터렉션 focus-visible 효과 나타날 때 border가 보이지 않는 버그 해결 (#89) * fix: focus-visible 효과 나타날 때 border이 보이지 않는 버그 해결 * fix: scale 고려한 interaction 스타일 생성 * refactor: scale 인터렉션이 필요한 컴포넌트에 적용 (아코디언, 라벨버튼) * bug: 빌드 파일 생성 과정에서 발생한 에러 수정 (#88) * refactor: BlockButton의 style props명을 기본 button style과 명확히 구분 짓습니다. * docs: 수정된 props 이름을 BlockButton 스토리 파일에 반영합니다. * docs: 잘못 기입된 size 명칭을 변경합니다. * docs: fileId 의 값을 file 타입에서 선언한 string 타입으로 변경합니다. * docs: snackBar에서 누락된 onaction props를 스토리 파일에 작성합니다. * refactor: TabItem의 인터페이스 중 id를 커스텀 props로 재구성합니다. * move: 사용하지 않는 import 문을 제거합니다. * docs: 잘못 선언된 컴포넌트 네이밍을 수정합니다. * fix: 타입 import 경로를 절대경로에서 상대경로로 변경합니다. * move: 사용하지 않는 변수를 제거합니다. * fix: BlockButton의 인터페이스 명은 기존의 이름으로 재수정합니다. * feat: apply-2 페이지 UI 구현 (#82) * feat: ApplyVerify 페이지 UI 구현 * fix: InputField 헬퍼메시지 폰트색상 조건부 수정 * refactor: Title 감싸는 div 태그 제거 * fix: 잘못 수정된 부분 복구 * fix: isExist -> isNewApplicant 로 변수명 변경 * refactor: 중첩 삼항연산자 표현 변경 * refactor: 중첨삼항연산자 clsx 사용 * refactor: ApplyVerify를 ApplyVerifyEmail, ApplyVerifyPin 페이지 컴포넌트로 분리 * feat: Input 컴포넌트 disabled 일때 text 색상 추가 * fix: NewTabLink className props으로 받도록 수정 * feat: 비밀번호 재설정 페이지 연결 * feat: 비밀번호 재설정일 경우 조건부 렌더링 * fix: applyInfoList NewTabLink className 달기 * feat: 이메일 인증 페이지 라우터 설정 * fix: 이메일 인증 페이지 PATH 수정 * remove: ApplyVerify 컴포넌트 삭제 * feat: APPLY_TITLE 비밀번호재설정 페이지 타이틀 추가 * feat: 지원하기 페이지에서 이메일 인증 페이지 navigate 설정 * fix: ApplyApplicationInfo 컴포넌트 isReady -> isStepCompleted 변수명 수정 * fix: prop 전달받은 값으로 컴포넌트 렌더링 불가로 방식 변경 * fix: PATH 변수명 applyVerify로 재수정 * remove: 불필요한 임포트 삭제 * refactor: setter 제거 * refactor: Input isError 옵셔널 처리 * refactor: 순환 렌더링 문제 발생 우려로 ApplyVerify 컴포넌트에서 페이지 컴포넌트 조건부 렌더링하도록 수정 * refactor: Apply 페이지 중 main 태그 -> section태그로 변경 및 사용하지 않는 form 태그의 action='' 제거 * refactor: email 더미데이터 빈문자열로 변경 * refactor: useState 불리언타입 지정 제거 * refactor: ApplyVerify 조건부 리팩토링 * refactor: ApplyVerify 삼항연산자 사용하여 return 하기 * feat: 지원서 작성 페이지 UI 구현(apply-4) (#85) * feat: ApplyRegistration 페이지 생성 및 select에 따른 문항 나타나도록 UI 구현 * fix: InputArea 고정된 width 값 제거 * refactor: TextArea 컴포넌트 outline none 처리 및 자동 높이 조절을 위한 row=1 지정 * feat: 텍스트 양만큼 TextArea의 높이 자동 조절 기능 추가 * feat: ApplyRegistration 페이지 컴포넌트 라우터 등록 * feat: 에러일 경우 TextArea border 처리 * feat: InputArea 헬퍼메시지 기능 추가 및 에러일 경우 스타일 처리 * refactor: 불필요한 스타일 및 태그 제거 * remove: console.log 제거 * feat: select 키보드 입력으로 포지션 선택하기 및 select outside 클릭 시 닫히기 * feat: mergeRefs 유틸함수 생성 * feat: mergeRefs 유틸함수 사용하여 textareaRef, ref 받도록 함 * refactor: ApplyRegistration 코드 정리 * refactor: POSITIONS 배열 상수 사용 * feat: Uploader 최대 가능 용량값 동적으로 변경되도록 함. * refactor: ApplyRegistration 컴포넌트 파일 더미 데이터 사용하여 InputFile 구현 * refactor: InputFile File 컴포넌트 배열을 받도록 수정 File 컴포넌트 리스트들을 감싸는 컨테이너 태그를 일일이 작성하지 않도록 InputFile에서 이동시키기 위함. 추가로 리스트가 있을 경우에만 컨테이너 태그가 나타나도록 하기 위해 children 속성이 아닌 배열을 받도록 변경. * refactor: ApplyRegistration에 수정된 InputFile 적용 * refactor: InputArea errorHelper 조건부 수정 * docs: InputArea 스토리북 업데이트 * docs: mergeRefs TSDoc 추가 * fix: 직군 선택 초기에만 키보드 작성 가능한 버그 수정 * fix: ApplyRegistration select 키보드 탭 선택 버그 해결 * fix: ApplyRegistration 키보드 타이핑 기능 제거 select 선택지를 선택하기 위한 input이므로 타이핑 기능 불필요 타이핑이 가능할 경우, 혼란이 있을 수 있음 * design: Input 컴포넌트 readonly일 경우엔 cursor default * refactor: TextArea에 className props 추가, focus 효과 디자인 수정 * docs: InputArea 스토리북 description 추가 * feat: forwardRef 컴포넌트에 displayName 달기 * refactor: Input, InputField, TextArea isError 옵셔널 처리 * remove: 불필요한 index.ts 삭제 * refactor: setIsSelectOpen false로 수정 * refactor: MutableRefObject import 하기 * refactor: Ref import 하기 * feat: 리팩토링 이슈 템플릿 추가 (#92) 리팩토링 이슈 템플릿을 추가합니다. * chore: api 연동을 위한 axios, tanstack query 세팅 및 테스트 (#90) * feat: QueryClientProvider 및 DevTools 설정 * chore: axios 설치 * chore: gitignore에 .env 추가 * feat: axiosInstance 생성 * feat: vite proxy 설정 * feat: 프록시 서버 이용하므로 axioInstance BASE_URL 임시로 '/api' 설정 * feat: requestHandler 생성 * feat: ApiResponse 공통 타입 정의 ( + Sort) * feat: fetchMiniStudies 함수 생성 * feat: Tanstack query 사용한 useMiniStudies 훅 생성 * refactor: 미니스터디 api 연동 * refactor: 미니스터디 fetch 함수 한줄로 줄이기 * refactor: axiosInstance 불필요한 변수 제거 * remove: 불필요한 index.ts 파일 삭제 * rename: axiosInstance.ts -> httpClient.ts 파일명 변경 및 utils/ 로 이동 * refactor: 경로 수정 * refactor: ReactQueryDevtools는 개발환경 조건부 렌더링 처리 * refactor: api endpoint 및 타입 인터페이스 분리 * refactor: fetchMiniStudies -> getMiniStudies로 함수명 변경 * refactor: types 폴더 정리 * refactor: types 폴더 정리한 파일들 경로 수정 * feat: requestHandler에 401,403, 500, 기타 네트워크 에러 전역 처리 * feat: ApiResponse의 State 종류 업데이트 * refactor: TODO 추가 * refactor: Sort 타입 sort 파일로 분리 및 적용 * refactor: requestHandler 제네릭 타입 수정 (#102) * refactor: requestHandler 제네릭 타입 수정 * refactor: getMiniStudies에서 ApiResponse 제거 * feat: CheckBox 컴포넌트 구현 (#86) * feat: CheckBox 컴포넌트의 type을 선언합니다. * feat: CheckBox 컴포넌트에서 사용되는 CheckBoxIcon 컴포넌트를 구현합니다. * feat: CheckBox 컴포넌트를 구현합니다. * docs: CheckBox 컴포넌트의 스토리북을 작성합니다. * design: interaction의 click 요소 효과를 카테고리화합니다. * design: CheckBox에 interaction 요소를 주입합니다. * fix: 실제 interaction이 적용되는 태그에 interaction을 재주입합니다. * style: import 문의 절대경로를 상대경로로 수정합니다. * typo: 컴포넌트의 오탈자를 수정합니다. * feat: CheckBox에 hover interaction을 추가합니다. * typo: 함수와 타입 명을 파스칼 케이스로 수정합니다. * feat: interaction을 커스텀 하여 CheckBox 컴포넌트에 부여합니다. * docs: checkbox 스토리 파일에 interaction이 적용되는 케이스를 추가합니다. * docs: useState 을 render 콜백에서 호출하지 않도록 변경합니다. * refactor: tabIndex를 이용해 interaction 역할을 수행하는 div에 interaction을 주입합니다. * move: 사용하지 않는 interaction 을 제거합니다. * feat: interaction이 적용되는 div에 tabIndex를 추가합니다. * move: 사용하지 않는 group 속성을 제거합니다. * refactor: Icon 컴포넌트의 import 방식을 변경합니다. * refactor: interaction을 위한 div을 제거하고 실제 요소에 interaction을 수행합니다. * fix: focus 시 before 가상요소를 제거하고 자식 요소의 상태에 따라 focus 되도록 스타일을 수정합니다. * refactor: 스타일 폴더 리팩토링 (#100) * refactor: 블럭 버튼, 라벨 버튼 스타일 파일 컴포넌트 폴더로 이동 * refactor: file 스타일 파일 파일 컴포넌트 폴더로 이동 * refactor: 아이콘 스타일 파일 컴포넌트 폴더로 이동 * refactor: 타이틀 스타일 파일 컴포넌트 폴더로 이동 * refactor: 레이블 스타일 파일 컴포넌트 폴더로 이동 * refactor: 직군명, 이메일 변경 및 데브옵스 애니메이션 비활성화 (#104) * refactor: 프로젝트 매니저에서 프로덕트 매니저로 변경 * refactor: jectofficial@ject.kr로 변경 * refactor: 메인페이지 데브옵스 애니메이션 비활성화 처리 * feat: 젝톡 조회 기능 및 EmptyData 컴포넌트 구현 (#99) * feat: jectalk Response 타입 생성 * feat: getJectalks fetch 함수 생성 * feat: useJectalks 훅 생성 * feat: EmptyData 공통 컴포넌트 생성 및 스토리북 작성 * feat: activity page, 잭톡 조회 API 연결 및 EmptyData 컴포넌트 적용 * refactor: jectalk fetch 함수 타입 수정 * refactor: EmptyData 컴포넌트 Label 절대경로로 수정 * refactor: react-query 사용 훅은 Query 접미사 사용 * refactor: useQuery 에러 로그 출력 * refactor: 에러 로그 문구 수정 * feat: 젝톡 summary 표시 및 EmptyData 조건부 수정 (#111) * feat: 젝톡 레이블 표시 * refactor: 미니스터디, 젝톡 렌더링 조건 수정 * feat: 파일 업로드 기능 구현 (#109) * feat: 파일 업로드 api 요청 함수 및 훅 생성 * fix: Uploader 컴포넌트 동일한 파일 연속 선택 불가 버그 해결 * refactor: changeFileSizeUnit 유틸함수 수정 - 단위 표기 여부 추가 * feat: validateMaxSize 유틸함수 추가 * feat: Portfolio, NewPortfolio 타입 생성 * remove: FileUrl 타입 삭제 * chore: lottie-react 라이브러리 설치 * chore: loadingSpinner json 파일 추가 * refactor: select 외부 클릭 시 닫히기 로직 useCloseOutSide 훅으로 분리 * feat: S3 파일 업로드 요청 및 File 컴포넌트명 FileItem으로 변경 * docs: FileItem 스토리북 업데이트 * refactor: InputFile의 fileNode prop -> children으로 변경 * docs: InputFile 스토리북 수정 * feat: 파일 presignedUrl 생성 요청 및 ApplyRegistration에서 문항 코드 분리 * feat: 네트워크 불안정 이슈, 확인할 수 없는 파일 형식 예외 처리 * fix: eslint 에러 수정 * refactor: uploadFileToS3 axios 함수 파일 분리 및 mutate 변수명 붙이기 * feat: S3 파일 업로드 실패 시 retry 3회 설정 * design: 메시지 문구 수정 * feat: 손상된 파일 확인 및 분리해주는 유틸함수 생성 * fix: 파일 필터링 및 예외 처리 수정 - pdf가 아닌 파일일 경우 에러 토스트만 제시 - 손상된 pdf 파일일 경우 에러 UI 파일, 토스트 제시 * feat: 파일 비어있을 경우 예외 처리 * feat: 업로드 중인 파일 업로드 요청 취소 기능 추가 및 네트워크 에러시 파일 업로드 예외처리 수정 * refactor: fileExtensions 변수명 복수 처리 * refactor: changeFileSizeUnit 유틸함수 로직 수정 및 리팩토링 * refactor: 유틸 함수 가독성을 위한 개행 처리 * refactor: 응답 데이터 타입명 ~ResponseData 형식으로 변경 * refactor: 유틸 함수 가독성을 위한 개행 처리 * refactor: splitValidAndInvalidFiles 유틸함수 filter -> reduce 메서드 사용 * refactor: useCloseOutside 얼리리턴 * refactor: Uploader handleClick 함수 얼리리턴 * refactor: description 띄어쓰기 처리 * refactor: FileField 가독성을 위한 개행 처리 * refactor: FileItem의 extractFileInfo 유틸함수 생성 후 적용 * refactor: 포트폴리오 업로드 api 응답 데이터 keyName -> cdnUrl 수정 반영 * remove: validateFileType 유틸 함수 제거 * refactor: 타입명에 Response, Request suffix 추가 - uploadPortfolio.ts - answer.ts * refactor: 젝톡, 미니스터디 데이터타입 Response suffix 추가 * remove: 불필요한 로그 출력 코드 제거 * feat: 지원서 플로우 기능 구현 (#112) * feat: 파일 업로드 api 요청 함수 및 훅 생성 * fix: Uploader 컴포넌트 동일한 파일 연속 선택 불가 버그 해결 * refactor: changeFileSizeUnit 유틸함수 수정 - 단위 표기 여부 추가 * feat: validateMaxSize 유틸함수 추가 * feat: Portfolio, NewPortfolio 타입 생성 * remove: FileUrl 타입 삭제 * chore: lottie-react 라이브러리 설치 * chore: loadingSpinner json 파일 추가 * refactor: select 외부 클릭 시 닫히기 로직 useCloseOutSide 훅으로 분리 * feat: S3 파일 업로드 요청 및 File 컴포넌트명 FileItem으로 변경 * docs: FileItem 스토리북 업데이트 * refactor: InputFile의 fileNode prop -> children으로 변경 * docs: InputFile 스토리북 수정 * feat: 파일 presignedUrl 생성 요청 및 ApplyRegistration에서 문항 코드 분리 * feat: 지원서 문항 조회 api 함수 및 훅 생성 * remove: validateFileType 유틸함수 삭제 * feat: url 형식 검증 유틸함수 생성 * feat: Answers 타입 정의 * feat: 직군에 맞는 지원서 문항 렌더링 및 URL 검증 로직 추가 * refactor: detailedRegex 수정 * feat: 임시 저장 API 연동 * feat: 수동 임시저장 기능 구현 * refactor: select의 jobFamily 매핑 방향 수정 FE, BE, PM, PO를 key로 변경 * refactor: postDraft의 param prop null 타입 추가 * feat: 임시 저장 조회 api 요청 함수 및 훅 생성 * feat: 임시저장 조회 기능 구현 * refactor: handleChangeAnswer, handleChangePortfolios 함수 useCallback 처리 * feat: 임시 저장 조회 기능 구현 (임시저장 불러오기 다이얼로그 제외) - react router의 location.state 이용하여 임시저장 불러오기 여부 결정 - 작성 중 새로고침 시 임시 저장된 글 자동 불러오기 * refactor: Dialog 수정 - p 태그 -> div 태그로 변경 ( ReactNode로 받을 때 포괄적인 태그 사용을 위해) - children 공간에 오는 문구 text-center 처리 - useDialog state 변수명 수정 (isCloseOutside의 state와 겹침 문제) * feat: 지원서 직군 변경 기능 구현 - apiEndpoint 추가 - axios 함수 생성 - react query 훅 생성 - 직군 변경 전 dialog 띄우기 - 직군 변경 시 답변 초기화 및 직군 변경 api 요청 별개로, - 초반에 임시저장 불러오지 않고 새로 작성할 경우, 추가적인 임시저장 전까지 임시저장 불러오지 않도록 수정 * refactor: ApplyRegistration 코드 리팩토링 변수명 변경, 함수 분리 변수명 변경 - selectPosition -> selectedPosition - selectQuestion -> questionPosition - values -> answersPayload 함수 분리 - formatNewPortfolio 함수 생성 (FileField에서 사용) - notLoadDraft 함수 생성 * design: textField 답변 길이 제한 초과 시 필드 스타일 변경 - 헬퍼 메시지 표시 - 필드 테두리 및 글자 수 텍스트 빨간색 표시 * feat: 지원서 제출 답변 유효성 검사 - 필수 답변 작성 검사 - 답변 글자 수 제한 검사 - url 유효성 검사 * refactor: useDialog state 변수명 원상복구 - 변수명 겹칠 경우 별칭 사용 * refactor: mutationKey 달기 * feat: 지원서 제출 기능 구현 - 지원서 제출 api endpoint 생성 - submitAnswer 함수 생성 - useSubmitAnswerQuery 훅 생성 - 제출 시 다이얼로그 표시 및 성공 시 지원 완료 페이지 이동 * feat: 15분마다 자동 임시저장 기능 구현 * refactor: ApplyRegistration 리팩토링 - state와 관련 함수를 관리하는 useApplicationState 훅 생성 - 포지션 선택 관련 selectBox 컴포넌트 분리 - 문항 및 답변 관련 Answers 컴포넌트 분리 * remove: 불필요한 주석 제거 * refactor: 직군을 표현하는 단어 position -> job으로 변경 * refactor: isLoadDraft 함수 수정 (불필요한 리턴 제거) * refactor: validateAnswersPayload if문 간소화 * refactor: draft 데이터 uuid 추출 오류 해결 * refactor: isLoadDraft 함수 간소화 * refactor: 지원서 문항 조회 실패 시 빈 폼 반환. * feat: Input read-only 일 때 커서 기본 스타일 지정 * feat: api 임시 에러 처리 (에러 로그 출력) * refactor: onKeyDown -> onKeyUp으로 변경 * refactor: draft, submitAnswer 호출 전 param null 처리 * refactor: formatForPresignedUrl, formatNewPortfolio 구조 분해 할당 처리 * refactor: Dialog title p 태그로 변경 * refactor: submitButtonActive -> setSubmitButtonActive 로 함수명 변경 * refactor: 훅 선언 개행처리 * refactor: File 타입 file -> rawFile로 네이밍 변경 * refactor: AnswersRequest answers key 타입 number로 변경 * refactor: QuestionResponse 타입 정의 * refactor: putJob request 타입 정의 * refactor: 제출 다이얼로그 내용 문구 띄어쓰기 수정 * refactor: initialAnswer 타입 설정 * feat: 페이지 하단 지원 스낵바 구현 (#120) * feat: 3기 지원 스낵바 공통 컴포넌트 생성 * feat: 메인, 프로젝트, 활동, faq 페이지에 스낵바 노출 * remove: 불필요한 index.ts 파일 삭제 * refactor: isMain -> width 로 props 변경 페이지 단에서 어떤 width 값이 들어가는지 확인할 수 있도록 변경 * refactor: SnackBar 컴포넌트 색상 수정 * refactor: 지원 스낵바 높이 수정 * feat: 지원 스낵바 애니메이션 추가 * feat: 로컬스토리지 자동 임시 저장 기능 구현 (#122) * feat: 로컬스토리지를 이용한 자동 임시저장 기능 구현 * fix: 업로드된 파일 열기 실패 버그 해결 * refactor: 함수명 수정 * refactor: 불필요한 변수 제거 * feat: 회원 비회원 인증 및 회원정보 등록 기능 (#114) * chore: zod와 react-hook-form 라이브러리를 설치합니다. * feat: zod를 이용해 지원 페이지에 사용되는 스키마를 생성합니다. * feat: zod와 react-hook-form을 연동하여 유효성 검사 훅을 생성합니다. * refactor: umd 변수로 선언된 props를 유니온 타입을 변환합니다. * feat: api 연동을 위한 엔드 포인트를 설정합니다. * feat: apply 관련 api response를 반영하여 인터페이스를 생성합니다. * feat: 폼 핸들러 처리를 돕는 유틸리티 함수를 생성합니다. * feat: 요구사항을 반영하여 지원 api 호출부를 설정합니다. * feat: 커스텀 훅을 이용하여 데이터 패칭을 처리하는 로직을 로깅과 함께 생성합니다. * feat: input 컴포넌트에 undefined 처리되는 옵셔널 props에 기본 값을 할당합니다. * feat: 지원하기 데이터 패칭 로직을 지원페이지에 적용합니다. * refactor: 폼 제출 핼퍼 함수의 데이터 타입은 해당 함수를 사용하는 부분에서 처리하도록 변경합니다. * fix: 최신 react-query의 속성을 반영하여 isLoading isPending 으로 수정합니다. * feat: Label 컴포넌트의 개선사항을 표기합니다. * refactor: Label 컴포넌트가 htmlFor 속성을 받지 못하는 문제를 추가 태그를 이용해 처리합니다. * move: 스토리북에 인터렉션 예시를 제거합니다. * feat: CheckBox 컴포넌트를 하단 Label에 추가합니다. * feat: 핀 로그인 성공시 navigate 로직을 추가합니다. * design: 잘못 적용된 gap 값을 수정합니다. * feat: 회원 존재 여부 확인 api의 엔드포인트를 생성합니다. * feat: 회원 존재 여부 확인 api의 반환 인터페이스를 생성합니다. * feat: 회원 존재 여부 api의 호출부를 구현합니다. * feat: 이메일 인증 api 를 호출하기 전 이메일 존재 여부를 확인합니다. * feat: email 값을 state로 처리하여 전달할 수 있도록 처리합니다. * feat: 회원 존재 여부 api에 대한 커스텀 훅을 생성합니다. * feat: status 타입을 추가합니다. * feat: 이메일 인증 api에 대한 에러 상황을 처리합니다. * feat: 버튼 비활성화 상태에 조건을 추가합니다. * feat: 기존 회원의 PIN 로그인 로직을 구현합니다. * move: 불필요하게 추가된 상태와 매개변수를 제거합니다. * feat: 지원자 정보에 대한 스키마를 생성합니다. * feat: 지원자 정보 스키마의 예외 상황을 엄밀하게 제한합니다. * feat: 회원 정보 업데이트 api의 엔드포인트를 생성합니다. * feat: 회원 정보 업데이트 api의 인터페이스를 생성합니다. * feat: 회원 정보 업데이트 api의 호출부를 구현합니다. * feat: zod를 이용해서 지정된 스키마의 유효성 검사를 수행합니다. * feat: 커스텀 훅을 이용해 회원 정보 저장에 대한 데이터 패칭을 진행합니다. * feat: 항목이 비어있을 때도 유효하지 않은 스키마로 판단합니다. * feat: 지원자 정보 입력 페이지에 데이터 패칭 로직을 부여합니다. * feat: auth 관리를 위한 api의 엔드포인트를 추가합니다. * chore: 추가된 env 파일에 대한 컴파일 옵션을 설정합니다. * chore: 전역 변수의 타입을 설정합니다. * feat: 순환 참조를 고려하여 requestHandler를 사용하지 않고 토큰 리프레쉬 api를 호출합니다. * feat: interceptor를 이용해 api 호출 전후 header와 개발 환경 별 토큰 관리를 처리합니다. * feat: requestHandler에 option 매개변수를 추가합니다. * feat: 토큰 관리를 위한 인터페이스를 추가합니다. * feat: 회원 정보 등록을 위한 인터페이스를 생성합니다. * feat: 회원 정보 등록 api의 호출부를 생성합니다. * feat: 회원 정보 등록 api를 커스텀 훅을 이용해 관리합니다. * feat: PIN을 이용한 로그인 시 로컬 개발 환경에서 토큰을 header에 사용하도록 설정합니다. * fix: 신규 사용자의 경우 임시 회원 가입 api를 통해 플로우를 진행합니다. * fix: 디자인 요구사항에 맞춰 컴포넌트 간 간격을 조정합니다. * feat: FAQ 란에 객체 데이터를 추가합니다. * feat: Accordion에 추가되어야 할 요구사항을 TODO를 이용해 기재합니다. * feat: cta 버튼에 onClick 핸들러를 추가합니다. * fix: 불필요하게 설정된 error의 타입 검사를 제거합니다. * typo: Email 인증 인터페이스 타입명을 통일합니다. * refactor: 이메일 관련 api의 매개변수와 payload를 객체 분할 형태로 통일합니다. * refactor: 커스텀 훅에 mutationKey를 추가합니다. * refactor: 변경된 커스텀 훅의 매개변수를 mutate 객체에 반영합니다. * typo: 변경된 api의 response에 맞게 인터페이스 명을 수정합니다. * typo: 변경된 인터페이스에 맞춰 스키마의 변수 명을 수정합니다. * refactor: 변경된 api에 맞게 함수명을 변경합니다. * refactor: 이메일 인증 api에 query params를 추가합니다. * refactor: 이메일 인증 커스텀 훅에 mutationKey를 추가하고 매개변수로 query params를 추가합니다. * refactor: 이메일 인증 api의 변경점을 추가합니다. * feat: 이메일 인증 api에 사용되는 인터페이스를 추가합니다. * refactor: 수정된 이메일 인증 api의 호출부에 query params를 부여하는 로직을 추가합니다. * refactor: 이메일 인증 api를 사용하는 커스텀 훅의 매개변수를 구체화합니다. * feat: 변경된 이메일 인증 로직을 지원 페이지에 적용합니다. * typo: PIN을 이용한 로그인 시 사용되는 인터페이스 명을 간소화합니다. * refactor: PIN을 이용한 로그인 커스텀 훅에 변경된 인터페이스 명을 적용하고 mutationKey를 추가합니다. * refactor: PIN을 이용한 로그인의 API 호출부에 공통 인터페이스를 사용하여 간소화합니다. * typo: 회원 정보 업데이트 인터페이스의 명칭을 통일합니다. * typo: 임시 회원가입 api 인터페이스의 명칭을 통일합니다. * feat: api 호출 전에 이전 로그인 정보를 제거하는 로직을 추가합니다. * feat: base url의 선언 조건을 prod로 변경합니다. * feat: interceptor 가 로컬 환경이 아닐 때 withCredentials가 true 값을 가지도록 설정을 추가합니다. * move: 불필요하게 기입된 import 문을 수정합니다. * feat: 인증 번호 유효 시간 초과 시 이메일 버튼을 enabled 하고 label을 변경합니다. * refactor: 인증번호의 Input 창을 감지하여 값이 존재하지 않을 때 버튼을 표시하지 않습니다. * fix: 버튼의 문구를 디자인에 맞는 텍스트로 변경합니다. * feat: 제출 버튼에 아이콘과 조건부 렌더링을 추가합니다. * feat: input 태그에 자동완성 스타일이 커스텀 색상으로 처리되도록 처리합니다. * bug: workflow runner 버전 업데이트 (#133) * refactor: 다이얼로그 함수 호출식으로 재구현 (#127) * feat: dialogStore 생성 * refactor: Dialog 컴포넌트 수정 (dialogStore 이용) * remove: useDialog 훅 삭제 * refactor: Dialog 컴포넌트 Layout 에 추가 * refactor: 지원서 작성 페이지 수정된 다이얼로그 적용 * docs: Dialog 스토리북 수정 * refactor: dialog promise 제거 * docs: 다이얼로그 스토리북 수정 (promise 사용 스토리 수정) * remove: 불필요한 파일 제거 (useApplicationDialog) * feat: 다이얼로그 열린 상태 스크롤 정지 기능 구현 * feat: primary 버튼만 있는 Dialog 추가 * docs: 버튼 하나 Dialog 스토리 추가 * refactor: 불필요한 void 제거 * docs: Dialog 스토리북 설명 수정 * docs: Dialog 스토리북 함수명 수정 * refactor: dialogStore의 타입명 복수로 수정 * refactor: 다이얼로그 상태 관리 방식 수정 - 정적인 데이터는 객체 데이터로 관리, constants/dialog.tsx 생성 - dialogStore는 열고 닫힘 상태, 다이얼로그 타입, 버튼 액션를 관리 - 위 2가지를 Dialog 컴포넌트에 반영 * docs: Dialog 스토리북 수정 * refactor: ApplyRegistration 페이지 다이얼로그 코드 수정 * docs: Dialog 스토리북 설명 추가 * refactor: dialog 오타 수정 및 DialogTypes types/ 폴더로 분리 * refactor: dialogStore openDialog 간소화 * refactor: Dialog 버튼 handleClick 함수 간소화 * style: dialogStore 한줄 작성 * chore: 배포 스크립트 및 환경 설정 (#135) * fix: Uploader 스토리북 에러 해결 (#138) * feat: 답변 SELECT 필드 추가 (#130) * refactor: useCloseOutside 훅 ref 배열도 받을 수 있도록 수정 * refactor: selectBox 닫기 깜박임 수정 * feat: 지원서 작성 페이지의 객관식 문항을 위한 selectField 구현 * feat: Question 서버 데이터 타입 변경 및 적용 * refactor: 답변 필드 label 서버 데이터 연결 * fix: 초기 렌더링 시 select field 선택해도 빈문자열로 저장되는 버그 해결 * style: question 타입 표현 수정 * feat: 임시저장 불러오기 다이얼로그 표시 및 임시지원서 제거 api 연동 (+지원서 관련 함수 및 타입 리팩토링) (#134) * feat: 직군 변경 api가 임시지원서 제거 api로 변경되어 changeJob api 제거 및 deleteDraft api 생성 * refactor: 직군 변경 시 임시지원서 제거 api 요청 * rename: mutation 훅은 use~Mutation으로 훅 명 변경 및 적용 * feat…
* feat: 프로젝트 개발 환경 세팅 (#2) * feat: 프로젝트 초기 세팅 * feat: eslint "import/order" 설정 추가 * fix: prettier "semi" 설정값 true로 수정 * feat: 디자인 시스템 및 스타일링 셋업 (#5) * 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: 주석 제거 * chore: Qodana ci 파이프라인 구축 (#7) * Add qodana.yaml file * Add github workflow file --------- * chore: 스토리북 환경 구축 및 CI 설정 (#10) * 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: 폴더 구조 세팅 및 절대 경로 처리 (#13) * feat: 폴더 아키텍처 설정 (임시파일생성) * chore: 절대 경로 처리를 위한 @types/node 모듈 설치 * feat: @(src) 절대 경로 설정 * fix: main.tsx 절대 경로로 import 하기 * chore: Tanstack query 관련 모듈 설치 * feat: eslint-plugin-query 플러그인 설정 * style: 파일 import 시 확장자 제거 * chore: Qodana 스크립트 수정 (#15) * feat: 정적 분석 스크립트에 커스터마이징 옵션을 추가합니다. * feat: 스크립트 실행 시 의존성 설치를 선행하도록 처리합니다. * chore: yml파일의 네이밍을 수정합니다. * feat: Interaction 컴포넌트 구현 (#17) * 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: Label 및 Badge 컴포넌트 구현 (#20) * feat: Badge 컴포넌트 구현 * feat: Label 컴포넌트 구현 * feat: Badge 컴포넌트 재구현 Label 컴포넌트 이용 * feat: Badge 스토리북 작성 * feat: Label 스토리북 작성 * style: Label 객체 구성 수정 및 객체명 변경 * style: 코드 정리 * rename: 스토리 이름 Primary로 변경 * fix: 인터렉션 컴포넌트 수정 및 storybook 설정 (#22) * 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, Callout, Hero 컴포넌트 구현 (#23) * 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: progress 컴포넌트 구현 (#29) * 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) * feat: 범용성있는 버튼 컴포넌트 구현 (#30) * 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: 아이코노그래피를 기반으로 아이콘 컴포넌트 구현 (#32) * 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: 인터랙션 컴포넌트 재구현 및 semantic 컬러 토큰 업데이트 (#35) * 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: Input 컴포넌트 구현 (#36) * 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 사용 * feat: 지원하기 페이지 UI 구현 (#40) * 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: Card와 Post 컴포넌트 구현 (#37) * 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: 탭 컴포넌트 구현 (#39) * 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 페이지 UI 구현 및 아코디언 컴포넌트 구현 (#53) * 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에 직접 조건부 처리 방식으로 변경 * feat: Select 컴포넌트 구현 (#44) * 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: SnackBar 컴포넌트 구현 (#45) * 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를 옵셔널에서 필수로 변경합니다. * Fix: 인터렉션 재구현 3차 (#60) * feat: 인터렉션 스타일 네임 생성 * feat: global.css에 interaction.css 등록 * remove: 기존 인터렉션 컴포넌트, 스토리북, 스타일 파일 삭제 * fix: 기존 인터렉션 적용되어있던 컴포넌트에 새로운 인터렉션 스타일 적용 * feat: transition-faster-fluent 스타일 정의 * refactor: transition-faster-fluent 공통으로 들어가는 곳에 적용 * fix: Variant, Density 타입 생성하여 eslint 에러 해결 * feat: Header, Footer 관련 컴포넌트 구현 및 Layout 적용 (#56) * 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 및 Post 컴포넌트 Interaction 주입 (#55) * 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: Role 컴포넌트 구현 (#63) * 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 컴포넌트 구현 (#61) * feat: Dialog 컴포넌트 구현 * feat: useDialog 훅 생성 * feat: Dialog 스토리북 작성 * remove: 불필요한 index.ts 파일 삭제 * refactor: useDialog useState 타입 명시 제거 * fix: props 네이밍 변경 및 btnLayout에 따른 버튼 위치 수정 + 스토리북 수정 * feat: Dialog BlockButton className 제거 * chore: favicon 설정 (#58) * chore: 파비콘 png 추가 * chore: index.html 파비콘 설정 * feat: 아이콘 추가 (#74) * chore: 새로운 아이콘 svg 파일 6개 추가 * feat: 아이콘 컴포넌트에 새로운 아이콘 추가 * feat: 아이콘 스토리북 업데이트 (새로운 아이콘 6개 추가) * fix: HeroIndex 컴포넌트 수정 (#80) * fix: HeroIndex의 Badge 배경색상/폰트색상 주입가능하도록 props 수정 * feat: HeroIndex 스토리북 작성 수정 * feat: 활동 페이지 UI 구현 (#77) * feat: 활동 페이지 router 설정 * feat: 임시 데이터 이용하여 Activity 페이지 UI 구현 * feat: Toast 구현 (#67) * feat: toastStore 생성 * feat: Toast 컴포넌트 구현 및 toast 애니메이션 정의 * feat: useToast 훅 생성 * feat: Toast, useToast 스토리북 작성 * feat: Layout에 Toast 컴포넌트 추가 * refactor: ToastType bg -> backgroundColor로 네이밍 수정 * refactor: Toast 컴포넌트 useState 타입 추론 방식으로 변경 * refactor: Toast className clsx 사용 * remove: useToast 삭제 * fix: useToast -> useToastActions 사용으로 스토리북 수정 * feat: toastStore 스프레드 연산자 사용으로 불변성 지키기 * refactor: animation.css 생성 및 애니메이션 관련 css 코드 분리 * feat: 메인페이지 UI 구현 (#78) * feat: 애니메이션 부분에 쌓이는 이미지를 추가합니다. * feat: Main 페이지의 틀을 구현합니다. * feat: 애니메이션이 들어가는 부분을 컴포넌트화합니다. * feat: AnimatedSection의 스토리북을 추가합니다. * chore: gsap 라이브러리를 설치합니다. * refactor: gsap를 이용해 애니메이션을 재구성합니다. * feat: AnimatedSection을 메인페이지에 적용합니다. * feat: 메인페이지를 라우트에 추가합니다. * feat: 메인페이지의 두번째 섹션을 구현합니다. * refactor: HeroIndex의 width에 100%를 부여합니다. * refactor: CalloutNumerical의 width에 100%를 부여합니다. * feat: 메인페이지의 세번째 section을 구현합니다. * feat: 공통적으로 적용되는 프레임의 className을 상수화합니다. * feat: Tab 컴포넌트에 cursor pointer 스타일을 추가합니다. * feat: 메인페이지의 네번째 section을 구현합니다. * refactor: Hero 컴포넌트의 content를 children 형태로 받도록 수정합니다. * refactor: HeroIndex 컴포넌트의 content를 children 형태로 받도록 수정합니다. * feat: 메인페이지의 마지막 section을 구현합니다. * refactor: 수정된 HeroIndex 컴포넌트의 props 구조를 반영합니다. * move: 불필요한 import 문을 제거하고 정렬합니다. * rename: 공통 wrapper의 스타일 명칭을 직관적으로 변경합니다. * refactor: Hero 컴포넌트가 badge의 조건부 렌더링을 수행하도록 수정합니다. * move: 사용하지 않는 badgeText props 값을 제거합니다. * fix: 애니메이션을 위한 section의 스타일을 요구사항에 맞춰 변경합니다. * feat: 메인페이지에 scroll 스타일을 추가합니다. * feat: 메인 페이지에 스크롤 트리거를 추가합니다. * feat: 스크롤 트리거 진행 시 context를 이용해 메모리 누수를 최소화합니다. * refactor: 랜딩 페이지 애니메이션이 한글자 씩 타이핑 되도록 수정합니다. * feat: 타임라인 section에 필요한 객체 데이터를 분리합니다. * feat: 타임라인 section을 구조 분해 할당을 이용하여 객체 데이터를 매핑합니다. * fix: 잘못 반영된 RoleHero의 디자인을 수정합니다. * feat: 포지션 section의 객체 데이터를 분리합니다. * feat: 포지션 section의 객체 데이터를 구조 분해 할당으로 매핑합니다. * fix: Hero 컴포넌트의 잘못 적용된 스타일을 수정합니다. * feat: 핵심 가치 section의 객체 데이터를 분리합니다. * feat: 핵심 가치 section 데이터를 구조 분해 할당으로 매핑합니다. * fix: HeroIndex의 잘못 적용된 padding 값을 수정합니다. * move: 불필요한 주석을 제거합니다. * feat: Title의 일부분에 accent 색상을 주입합니다. * fix: 잘못 적용된 스타일을 수정합니다. * fix: 잘못 적용된 스타일을 재수정합니다. * fix: 불필요한 fragment를 제거하고 객체 데이터를 단순화합니다. * feat: 객체 데이터의 타입을 구체화합니다. * move: 불필요하게 적용된 스타일을 제거합니다. * feat: section의 뷰포트를 dvh로 재정의합니다. * feat: 스크롤 가능한 요소에 스크롤 바를 표시하지 않는 global 스타일을 추가합니다. * refactor: 스크롤 애니메이션 동작 시 기본 스크롤을 비활성화하도록 구조를 수정합니다. * feat: gsap 플러그인의 진입점을 main.tsx로 설정합니다. * refactor: context를 이용해 context 내부 section에 대해서만 애니메이션 처리를 수행합니다. * feat: 하단에서 상단으로 올라가는 스크롤 애니메이션을 추가합니다. * feat: 객체 데이터에 뱃지 스타일 데이터를 추가합니다. * feat: HeroIndex의 뱃지 스타일을 추가합니다. * move: 애니메이션 디버깅을 위한 marker 옵션을 제거합니다. * move: 상단 스크롤 애니메이션 디버깅을 위한 marker 옵션을 제거합니다. * feat: apply-3 페이지 및 지원 완료 페이지 UI 구현 (#81) * feat: 지원 과정 페이지 PATH 추가 * feat: 지원 과정 페이지들 router 설정 * feat: 지원 관련 페이지의 타이틀 문구 APPLY_TITLE 객체화 및 적용 - 파일명 applyData -> applyPageData로 변경 * rename: faqData -> faqPageData로 파일명 수정 및 임포트 수정 * feat: 지원 관련 페이지 내 사용되는 메시지 상수화 * feat: 지원 완료 페이지 UI 구현 * remove: 지원 완료페이지 불필요한 버튼 className 삭제 * feat: apply-3 페이지 UI 구현 (이름, 전화번호 입력 페이지) * feat: apply-3 페이지 router에 컴포넌트 추가 * fix: ApplyComplete 버튼 className w-full 추가 * refactor: ApplyApplicationInfo 컴포넌트 css 수정 * refactor: ApplyComplete 페이지 css 수정 및 Link -> navigate 사용 * refactor: ApplyApplicationInfo 페이지 Link -> navigate 사용 * fix: 지원 완료 페이지 컨텐츠 중앙 정렬 * fix: ProgressIndicator key값 추가 * fix: APPLY_HELPER_MESSAGE 네이밍 방식 통일 * fix: APPLY_MESSAGE 구조 및 문구 수정 * refactor: ApplyComplete 컴포넌트 내용글 및 버튼 문구 상수화 * feat: File, Uploader 컴포넌트 구현 (#76) * feat: validateFileType util 함수 생성 * feat: file 확장자 및 fileMine 객체 생성 * feat: changeFileSizeUnit util 함수 생성 * feat: TextArea 컴포넌트 outline-none 클래스 추가 * fix: InputArea 컴포넌트 w-full 로 변경 * feat: Uploader 컴포넌트 구현 및 스토리북 작성 * feat: File 컴포넌트 구현 및 스토리북 작성 * feat: InputFile 컴포넌트(File+Uploader) 구현 및 스토리북 작성 * fix: inputFile -> InputFile 파일명 변경 및 file 타입에 따라 key값 처리 * feat: InputFile 스토리북 수정 * refactor: File openFile 함수 코드 수정 (if문 대신 삼항연산자 사용) * fix: File 컴포넌트의 deleteHandler event 타입 수정 * remove: 불필요한 코드 제거 * feat: fileUrl 타입 추가 * fix: fileUrl 타입 대문자 시작으로 수정 * feat: File 컴포넌트 CDN URL만 받는 걸로 수정 * fix: InputFile도 CDN URl 만 받도록 수정 * fix: Uploader disabled 상태 수정 및 깜박임 현상 해결 + 중복 코드 정리 * feat: Uploader disabled 스토리 추가 * style: File 커서포인터 추가 * docs: File 스토리북 업데이트 * feat: InputFile UI 업데이트 (레이블 및 용량 표기 추가) * feat: feedback 타입의 File 컴포넌트 추가 * fix: feedback 타입 File cursor pointer 제거 * fix: Uploader 컴포넌트 확장자 검증 로직 제거 확장자 검증은 File 컴포넌트 렌더링 타이밍에 수행 * fix: InputFile에서 File 컴포넌트 제거 File 컴포넌트는 children으로 받도록 수정 * refactor: fileStyle 분리 * fix: FileUrl id 타입 string으로 변경 * design: useState의 <boolean> 삭제 * refactor: maxSize 초기값 삭제 * feat: 프로젝트, 프로젝트 상세페이지 구현 (#84) * feat: 프로젝트 페이지 틀을 생성합니다. * feat: 프로젝트 페이지를 라우터에 추가합니다. * feat: 프로젝트와 해커톤을 위한 임시 데이터를 생성합니다. * feat: 프로젝트 후기 section을 더미 데이터로 퍼블리싱 합니다. * feat: 프로젝트 상세 페이지의 틀을 생성합니다. * feat: 프로젝트 상세 페이지의 경로를 router에 추가합니다. * refactor: CalloutInformation 컴포넌트의 최상위 태그에 w-full을 적용합니다. * feat: 프로젝트 상세페이지의 화면을 더미데이터를 이용해 퍼블리싱합니다. * feat: 프로젝트 페이지의 버튼 텍스트를 기입합니다. * fix: 잘못 적용된 버튼 아이콘의 스타일을 수정합니다. * fix: content를 감싸는 wrapper의 높이를 고정값이 아닌 최솟 값으로 수정합니다. * feat: 해커톤 페이지 경로를 추가합니다. * refactor: 경로 호출을 상수화된 경로로 변경합니다. * design: grid 대신 flex-col 사용하여 단일 column 레이아웃으로 합니다. * fix: router의 import order을 eslint 설정에 맞게 수정합니다. * design: 레이아웃의 최소 크기를 요구사항에 맞춰 제거합니다. * refactor: TabItem의 props 구조를 변경 후 disabled 속성을 주입합니다. * refactor: type으로 선언된 props를 interface 구조로 통일합니다. * feat: TabItem의 비활성화 색상과 포인터 이벤트 제어를 반영합니다. * feat: 해커톤 Tab에 disabled을 주입합니다. * feat: 프로젝트 상세 페이지에 Select 컴포넌트를 적용합니다. * fix: 인터렉션 focus-visible 효과 나타날 때 border가 보이지 않는 버그 해결 (#89) * fix: focus-visible 효과 나타날 때 border이 보이지 않는 버그 해결 * fix: scale 고려한 interaction 스타일 생성 * refactor: scale 인터렉션이 필요한 컴포넌트에 적용 (아코디언, 라벨버튼) * bug: 빌드 파일 생성 과정에서 발생한 에러 수정 (#88) * refactor: BlockButton의 style props명을 기본 button style과 명확히 구분 짓습니다. * docs: 수정된 props 이름을 BlockButton 스토리 파일에 반영합니다. * docs: 잘못 기입된 size 명칭을 변경합니다. * docs: fileId 의 값을 file 타입에서 선언한 string 타입으로 변경합니다. * docs: snackBar에서 누락된 onaction props를 스토리 파일에 작성합니다. * refactor: TabItem의 인터페이스 중 id를 커스텀 props로 재구성합니다. * move: 사용하지 않는 import 문을 제거합니다. * docs: 잘못 선언된 컴포넌트 네이밍을 수정합니다. * fix: 타입 import 경로를 절대경로에서 상대경로로 변경합니다. * move: 사용하지 않는 변수를 제거합니다. * fix: BlockButton의 인터페이스 명은 기존의 이름으로 재수정합니다. * feat: apply-2 페이지 UI 구현 (#82) * feat: ApplyVerify 페이지 UI 구현 * fix: InputField 헬퍼메시지 폰트색상 조건부 수정 * refactor: Title 감싸는 div 태그 제거 * fix: 잘못 수정된 부분 복구 * fix: isExist -> isNewApplicant 로 변수명 변경 * refactor: 중첩 삼항연산자 표현 변경 * refactor: 중첨삼항연산자 clsx 사용 * refactor: ApplyVerify를 ApplyVerifyEmail, ApplyVerifyPin 페이지 컴포넌트로 분리 * feat: Input 컴포넌트 disabled 일때 text 색상 추가 * fix: NewTabLink className props으로 받도록 수정 * feat: 비밀번호 재설정 페이지 연결 * feat: 비밀번호 재설정일 경우 조건부 렌더링 * fix: applyInfoList NewTabLink className 달기 * feat: 이메일 인증 페이지 라우터 설정 * fix: 이메일 인증 페이지 PATH 수정 * remove: ApplyVerify 컴포넌트 삭제 * feat: APPLY_TITLE 비밀번호재설정 페이지 타이틀 추가 * feat: 지원하기 페이지에서 이메일 인증 페이지 navigate 설정 * fix: ApplyApplicationInfo 컴포넌트 isReady -> isStepCompleted 변수명 수정 * fix: prop 전달받은 값으로 컴포넌트 렌더링 불가로 방식 변경 * fix: PATH 변수명 applyVerify로 재수정 * remove: 불필요한 임포트 삭제 * refactor: setter 제거 * refactor: Input isError 옵셔널 처리 * refactor: 순환 렌더링 문제 발생 우려로 ApplyVerify 컴포넌트에서 페이지 컴포넌트 조건부 렌더링하도록 수정 * refactor: Apply 페이지 중 main 태그 -> section태그로 변경 및 사용하지 않는 form 태그의 action='' 제거 * refactor: email 더미데이터 빈문자열로 변경 * refactor: useState 불리언타입 지정 제거 * refactor: ApplyVerify 조건부 리팩토링 * refactor: ApplyVerify 삼항연산자 사용하여 return 하기 * feat: 지원서 작성 페이지 UI 구현(apply-4) (#85) * feat: ApplyRegistration 페이지 생성 및 select에 따른 문항 나타나도록 UI 구현 * fix: InputArea 고정된 width 값 제거 * refactor: TextArea 컴포넌트 outline none 처리 및 자동 높이 조절을 위한 row=1 지정 * feat: 텍스트 양만큼 TextArea의 높이 자동 조절 기능 추가 * feat: ApplyRegistration 페이지 컴포넌트 라우터 등록 * feat: 에러일 경우 TextArea border 처리 * feat: InputArea 헬퍼메시지 기능 추가 및 에러일 경우 스타일 처리 * refactor: 불필요한 스타일 및 태그 제거 * remove: console.log 제거 * feat: select 키보드 입력으로 포지션 선택하기 및 select outside 클릭 시 닫히기 * feat: mergeRefs 유틸함수 생성 * feat: mergeRefs 유틸함수 사용하여 textareaRef, ref 받도록 함 * refactor: ApplyRegistration 코드 정리 * refactor: POSITIONS 배열 상수 사용 * feat: Uploader 최대 가능 용량값 동적으로 변경되도록 함. * refactor: ApplyRegistration 컴포넌트 파일 더미 데이터 사용하여 InputFile 구현 * refactor: InputFile File 컴포넌트 배열을 받도록 수정 File 컴포넌트 리스트들을 감싸는 컨테이너 태그를 일일이 작성하지 않도록 InputFile에서 이동시키기 위함. 추가로 리스트가 있을 경우에만 컨테이너 태그가 나타나도록 하기 위해 children 속성이 아닌 배열을 받도록 변경. * refactor: ApplyRegistration에 수정된 InputFile 적용 * refactor: InputArea errorHelper 조건부 수정 * docs: InputArea 스토리북 업데이트 * docs: mergeRefs TSDoc 추가 * fix: 직군 선택 초기에만 키보드 작성 가능한 버그 수정 * fix: ApplyRegistration select 키보드 탭 선택 버그 해결 * fix: ApplyRegistration 키보드 타이핑 기능 제거 select 선택지를 선택하기 위한 input이므로 타이핑 기능 불필요 타이핑이 가능할 경우, 혼란이 있을 수 있음 * design: Input 컴포넌트 readonly일 경우엔 cursor default * refactor: TextArea에 className props 추가, focus 효과 디자인 수정 * docs: InputArea 스토리북 description 추가 * feat: forwardRef 컴포넌트에 displayName 달기 * refactor: Input, InputField, TextArea isError 옵셔널 처리 * remove: 불필요한 index.ts 삭제 * refactor: setIsSelectOpen false로 수정 * refactor: MutableRefObject import 하기 * refactor: Ref import 하기 * feat: 리팩토링 이슈 템플릿 추가 (#92) 리팩토링 이슈 템플릿을 추가합니다. * chore: api 연동을 위한 axios, tanstack query 세팅 및 테스트 (#90) * feat: QueryClientProvider 및 DevTools 설정 * chore: axios 설치 * chore: gitignore에 .env 추가 * feat: axiosInstance 생성 * feat: vite proxy 설정 * feat: 프록시 서버 이용하므로 axioInstance BASE_URL 임시로 '/api' 설정 * feat: requestHandler 생성 * feat: ApiResponse 공통 타입 정의 ( + Sort) * feat: fetchMiniStudies 함수 생성 * feat: Tanstack query 사용한 useMiniStudies 훅 생성 * refactor: 미니스터디 api 연동 * refactor: 미니스터디 fetch 함수 한줄로 줄이기 * refactor: axiosInstance 불필요한 변수 제거 * remove: 불필요한 index.ts 파일 삭제 * rename: axiosInstance.ts -> httpClient.ts 파일명 변경 및 utils/ 로 이동 * refactor: 경로 수정 * refactor: ReactQueryDevtools는 개발환경 조건부 렌더링 처리 * refactor: api endpoint 및 타입 인터페이스 분리 * refactor: fetchMiniStudies -> getMiniStudies로 함수명 변경 * refactor: types 폴더 정리 * refactor: types 폴더 정리한 파일들 경로 수정 * feat: requestHandler에 401,403, 500, 기타 네트워크 에러 전역 처리 * feat: ApiResponse의 State 종류 업데이트 * refactor: TODO 추가 * refactor: Sort 타입 sort 파일로 분리 및 적용 * refactor: requestHandler 제네릭 타입 수정 (#102) * refactor: requestHandler 제네릭 타입 수정 * refactor: getMiniStudies에서 ApiResponse 제거 * feat: CheckBox 컴포넌트 구현 (#86) * feat: CheckBox 컴포넌트의 type을 선언합니다. * feat: CheckBox 컴포넌트에서 사용되는 CheckBoxIcon 컴포넌트를 구현합니다. * feat: CheckBox 컴포넌트를 구현합니다. * docs: CheckBox 컴포넌트의 스토리북을 작성합니다. * design: interaction의 click 요소 효과를 카테고리화합니다. * design: CheckBox에 interaction 요소를 주입합니다. * fix: 실제 interaction이 적용되는 태그에 interaction을 재주입합니다. * style: import 문의 절대경로를 상대경로로 수정합니다. * typo: 컴포넌트의 오탈자를 수정합니다. * feat: CheckBox에 hover interaction을 추가합니다. * typo: 함수와 타입 명을 파스칼 케이스로 수정합니다. * feat: interaction을 커스텀 하여 CheckBox 컴포넌트에 부여합니다. * docs: checkbox 스토리 파일에 interaction이 적용되는 케이스를 추가합니다. * docs: useState 을 render 콜백에서 호출하지 않도록 변경합니다. * refactor: tabIndex를 이용해 interaction 역할을 수행하는 div에 interaction을 주입합니다. * move: 사용하지 않는 interaction 을 제거합니다. * feat: interaction이 적용되는 div에 tabIndex를 추가합니다. * move: 사용하지 않는 group 속성을 제거합니다. * refactor: Icon 컴포넌트의 import 방식을 변경합니다. * refactor: interaction을 위한 div을 제거하고 실제 요소에 interaction을 수행합니다. * fix: focus 시 before 가상요소를 제거하고 자식 요소의 상태에 따라 focus 되도록 스타일을 수정합니다. * refactor: 스타일 폴더 리팩토링 (#100) * refactor: 블럭 버튼, 라벨 버튼 스타일 파일 컴포넌트 폴더로 이동 * refactor: file 스타일 파일 파일 컴포넌트 폴더로 이동 * refactor: 아이콘 스타일 파일 컴포넌트 폴더로 이동 * refactor: 타이틀 스타일 파일 컴포넌트 폴더로 이동 * refactor: 레이블 스타일 파일 컴포넌트 폴더로 이동 * refactor: 직군명, 이메일 변경 및 데브옵스 애니메이션 비활성화 (#104) * refactor: 프로젝트 매니저에서 프로덕트 매니저로 변경 * refactor: jectofficial@ject.kr로 변경 * refactor: 메인페이지 데브옵스 애니메이션 비활성화 처리 * feat: 젝톡 조회 기능 및 EmptyData 컴포넌트 구현 (#99) * feat: jectalk Response 타입 생성 * feat: getJectalks fetch 함수 생성 * feat: useJectalks 훅 생성 * feat: EmptyData 공통 컴포넌트 생성 및 스토리북 작성 * feat: activity page, 잭톡 조회 API 연결 및 EmptyData 컴포넌트 적용 * refactor: jectalk fetch 함수 타입 수정 * refactor: EmptyData 컴포넌트 Label 절대경로로 수정 * refactor: react-query 사용 훅은 Query 접미사 사용 * refactor: useQuery 에러 로그 출력 * refactor: 에러 로그 문구 수정 * feat: 젝톡 summary 표시 및 EmptyData 조건부 수정 (#111) * feat: 젝톡 레이블 표시 * refactor: 미니스터디, 젝톡 렌더링 조건 수정 * feat: 파일 업로드 기능 구현 (#109) * feat: 파일 업로드 api 요청 함수 및 훅 생성 * fix: Uploader 컴포넌트 동일한 파일 연속 선택 불가 버그 해결 * refactor: changeFileSizeUnit 유틸함수 수정 - 단위 표기 여부 추가 * feat: validateMaxSize 유틸함수 추가 * feat: Portfolio, NewPortfolio 타입 생성 * remove: FileUrl 타입 삭제 * chore: lottie-react 라이브러리 설치 * chore: loadingSpinner json 파일 추가 * refactor: select 외부 클릭 시 닫히기 로직 useCloseOutSide 훅으로 분리 * feat: S3 파일 업로드 요청 및 File 컴포넌트명 FileItem으로 변경 * docs: FileItem 스토리북 업데이트 * refactor: InputFile의 fileNode prop -> children으로 변경 * docs: InputFile 스토리북 수정 * feat: 파일 presignedUrl 생성 요청 및 ApplyRegistration에서 문항 코드 분리 * feat: 네트워크 불안정 이슈, 확인할 수 없는 파일 형식 예외 처리 * fix: eslint 에러 수정 * refactor: uploadFileToS3 axios 함수 파일 분리 및 mutate 변수명 붙이기 * feat: S3 파일 업로드 실패 시 retry 3회 설정 * design: 메시지 문구 수정 * feat: 손상된 파일 확인 및 분리해주는 유틸함수 생성 * fix: 파일 필터링 및 예외 처리 수정 - pdf가 아닌 파일일 경우 에러 토스트만 제시 - 손상된 pdf 파일일 경우 에러 UI 파일, 토스트 제시 * feat: 파일 비어있을 경우 예외 처리 * feat: 업로드 중인 파일 업로드 요청 취소 기능 추가 및 네트워크 에러시 파일 업로드 예외처리 수정 * refactor: fileExtensions 변수명 복수 처리 * refactor: changeFileSizeUnit 유틸함수 로직 수정 및 리팩토링 * refactor: 유틸 함수 가독성을 위한 개행 처리 * refactor: 응답 데이터 타입명 ~ResponseData 형식으로 변경 * refactor: 유틸 함수 가독성을 위한 개행 처리 * refactor: splitValidAndInvalidFiles 유틸함수 filter -> reduce 메서드 사용 * refactor: useCloseOutside 얼리리턴 * refactor: Uploader handleClick 함수 얼리리턴 * refactor: description 띄어쓰기 처리 * refactor: FileField 가독성을 위한 개행 처리 * refactor: FileItem의 extractFileInfo 유틸함수 생성 후 적용 * refactor: 포트폴리오 업로드 api 응답 데이터 keyName -> cdnUrl 수정 반영 * remove: validateFileType 유틸 함수 제거 * refactor: 타입명에 Response, Request suffix 추가 - uploadPortfolio.ts - answer.ts * refactor: 젝톡, 미니스터디 데이터타입 Response suffix 추가 * remove: 불필요한 로그 출력 코드 제거 * feat: 지원서 플로우 기능 구현 (#112) * feat: 파일 업로드 api 요청 함수 및 훅 생성 * fix: Uploader 컴포넌트 동일한 파일 연속 선택 불가 버그 해결 * refactor: changeFileSizeUnit 유틸함수 수정 - 단위 표기 여부 추가 * feat: validateMaxSize 유틸함수 추가 * feat: Portfolio, NewPortfolio 타입 생성 * remove: FileUrl 타입 삭제 * chore: lottie-react 라이브러리 설치 * chore: loadingSpinner json 파일 추가 * refactor: select 외부 클릭 시 닫히기 로직 useCloseOutSide 훅으로 분리 * feat: S3 파일 업로드 요청 및 File 컴포넌트명 FileItem으로 변경 * docs: FileItem 스토리북 업데이트 * refactor: InputFile의 fileNode prop -> children으로 변경 * docs: InputFile 스토리북 수정 * feat: 파일 presignedUrl 생성 요청 및 ApplyRegistration에서 문항 코드 분리 * feat: 지원서 문항 조회 api 함수 및 훅 생성 * remove: validateFileType 유틸함수 삭제 * feat: url 형식 검증 유틸함수 생성 * feat: Answers 타입 정의 * feat: 직군에 맞는 지원서 문항 렌더링 및 URL 검증 로직 추가 * refactor: detailedRegex 수정 * feat: 임시 저장 API 연동 * feat: 수동 임시저장 기능 구현 * refactor: select의 jobFamily 매핑 방향 수정 FE, BE, PM, PO를 key로 변경 * refactor: postDraft의 param prop null 타입 추가 * feat: 임시 저장 조회 api 요청 함수 및 훅 생성 * feat: 임시저장 조회 기능 구현 * refactor: handleChangeAnswer, handleChangePortfolios 함수 useCallback 처리 * feat: 임시 저장 조회 기능 구현 (임시저장 불러오기 다이얼로그 제외) - react router의 location.state 이용하여 임시저장 불러오기 여부 결정 - 작성 중 새로고침 시 임시 저장된 글 자동 불러오기 * refactor: Dialog 수정 - p 태그 -> div 태그로 변경 ( ReactNode로 받을 때 포괄적인 태그 사용을 위해) - children 공간에 오는 문구 text-center 처리 - useDialog state 변수명 수정 (isCloseOutside의 state와 겹침 문제) * feat: 지원서 직군 변경 기능 구현 - apiEndpoint 추가 - axios 함수 생성 - react query 훅 생성 - 직군 변경 전 dialog 띄우기 - 직군 변경 시 답변 초기화 및 직군 변경 api 요청 별개로, - 초반에 임시저장 불러오지 않고 새로 작성할 경우, 추가적인 임시저장 전까지 임시저장 불러오지 않도록 수정 * refactor: ApplyRegistration 코드 리팩토링 변수명 변경, 함수 분리 변수명 변경 - selectPosition -> selectedPosition - selectQuestion -> questionPosition - values -> answersPayload 함수 분리 - formatNewPortfolio 함수 생성 (FileField에서 사용) - notLoadDraft 함수 생성 * design: textField 답변 길이 제한 초과 시 필드 스타일 변경 - 헬퍼 메시지 표시 - 필드 테두리 및 글자 수 텍스트 빨간색 표시 * feat: 지원서 제출 답변 유효성 검사 - 필수 답변 작성 검사 - 답변 글자 수 제한 검사 - url 유효성 검사 * refactor: useDialog state 변수명 원상복구 - 변수명 겹칠 경우 별칭 사용 * refactor: mutationKey 달기 * feat: 지원서 제출 기능 구현 - 지원서 제출 api endpoint 생성 - submitAnswer 함수 생성 - useSubmitAnswerQuery 훅 생성 - 제출 시 다이얼로그 표시 및 성공 시 지원 완료 페이지 이동 * feat: 15분마다 자동 임시저장 기능 구현 * refactor: ApplyRegistration 리팩토링 - state와 관련 함수를 관리하는 useApplicationState 훅 생성 - 포지션 선택 관련 selectBox 컴포넌트 분리 - 문항 및 답변 관련 Answers 컴포넌트 분리 * remove: 불필요한 주석 제거 * refactor: 직군을 표현하는 단어 position -> job으로 변경 * refactor: isLoadDraft 함수 수정 (불필요한 리턴 제거) * refactor: validateAnswersPayload if문 간소화 * refactor: draft 데이터 uuid 추출 오류 해결 * refactor: isLoadDraft 함수 간소화 * refactor: 지원서 문항 조회 실패 시 빈 폼 반환. * feat: Input read-only 일 때 커서 기본 스타일 지정 * feat: api 임시 에러 처리 (에러 로그 출력) * refactor: onKeyDown -> onKeyUp으로 변경 * refactor: draft, submitAnswer 호출 전 param null 처리 * refactor: formatForPresignedUrl, formatNewPortfolio 구조 분해 할당 처리 * refactor: Dialog title p 태그로 변경 * refactor: submitButtonActive -> setSubmitButtonActive 로 함수명 변경 * refactor: 훅 선언 개행처리 * refactor: File 타입 file -> rawFile로 네이밍 변경 * refactor: AnswersRequest answers key 타입 number로 변경 * refactor: QuestionResponse 타입 정의 * refactor: putJob request 타입 정의 * refactor: 제출 다이얼로그 내용 문구 띄어쓰기 수정 * refactor: initialAnswer 타입 설정 * feat: 페이지 하단 지원 스낵바 구현 (#120) * feat: 3기 지원 스낵바 공통 컴포넌트 생성 * feat: 메인, 프로젝트, 활동, faq 페이지에 스낵바 노출 * remove: 불필요한 index.ts 파일 삭제 * refactor: isMain -> width 로 props 변경 페이지 단에서 어떤 width 값이 들어가는지 확인할 수 있도록 변경 * refactor: SnackBar 컴포넌트 색상 수정 * refactor: 지원 스낵바 높이 수정 * feat: 지원 스낵바 애니메이션 추가 * feat: 로컬스토리지 자동 임시 저장 기능 구현 (#122) * feat: 로컬스토리지를 이용한 자동 임시저장 기능 구현 * fix: 업로드된 파일 열기 실패 버그 해결 * refactor: 함수명 수정 * refactor: 불필요한 변수 제거 * feat: 회원 비회원 인증 및 회원정보 등록 기능 (#114) * chore: zod와 react-hook-form 라이브러리를 설치합니다. * feat: zod를 이용해 지원 페이지에 사용되는 스키마를 생성합니다. * feat: zod와 react-hook-form을 연동하여 유효성 검사 훅을 생성합니다. * refactor: umd 변수로 선언된 props를 유니온 타입을 변환합니다. * feat: api 연동을 위한 엔드 포인트를 설정합니다. * feat: apply 관련 api response를 반영하여 인터페이스를 생성합니다. * feat: 폼 핸들러 처리를 돕는 유틸리티 함수를 생성합니다. * feat: 요구사항을 반영하여 지원 api 호출부를 설정합니다. * feat: 커스텀 훅을 이용하여 데이터 패칭을 처리하는 로직을 로깅과 함께 생성합니다. * feat: input 컴포넌트에 undefined 처리되는 옵셔널 props에 기본 값을 할당합니다. * feat: 지원하기 데이터 패칭 로직을 지원페이지에 적용합니다. * refactor: 폼 제출 핼퍼 함수의 데이터 타입은 해당 함수를 사용하는 부분에서 처리하도록 변경합니다. * fix: 최신 react-query의 속성을 반영하여 isLoading isPending 으로 수정합니다. * feat: Label 컴포넌트의 개선사항을 표기합니다. * refactor: Label 컴포넌트가 htmlFor 속성을 받지 못하는 문제를 추가 태그를 이용해 처리합니다. * move: 스토리북에 인터렉션 예시를 제거합니다. * feat: CheckBox 컴포넌트를 하단 Label에 추가합니다. * feat: 핀 로그인 성공시 navigate 로직을 추가합니다. * design: 잘못 적용된 gap 값을 수정합니다. * feat: 회원 존재 여부 확인 api의 엔드포인트를 생성합니다. * feat: 회원 존재 여부 확인 api의 반환 인터페이스를 생성합니다. * feat: 회원 존재 여부 api의 호출부를 구현합니다. * feat: 이메일 인증 api 를 호출하기 전 이메일 존재 여부를 확인합니다. * feat: email 값을 state로 처리하여 전달할 수 있도록 처리합니다. * feat: 회원 존재 여부 api에 대한 커스텀 훅을 생성합니다. * feat: status 타입을 추가합니다. * feat: 이메일 인증 api에 대한 에러 상황을 처리합니다. * feat: 버튼 비활성화 상태에 조건을 추가합니다. * feat: 기존 회원의 PIN 로그인 로직을 구현합니다. * move: 불필요하게 추가된 상태와 매개변수를 제거합니다. * feat: 지원자 정보에 대한 스키마를 생성합니다. * feat: 지원자 정보 스키마의 예외 상황을 엄밀하게 제한합니다. * feat: 회원 정보 업데이트 api의 엔드포인트를 생성합니다. * feat: 회원 정보 업데이트 api의 인터페이스를 생성합니다. * feat: 회원 정보 업데이트 api의 호출부를 구현합니다. * feat: zod를 이용해서 지정된 스키마의 유효성 검사를 수행합니다. * feat: 커스텀 훅을 이용해 회원 정보 저장에 대한 데이터 패칭을 진행합니다. * feat: 항목이 비어있을 때도 유효하지 않은 스키마로 판단합니다. * feat: 지원자 정보 입력 페이지에 데이터 패칭 로직을 부여합니다. * feat: auth 관리를 위한 api의 엔드포인트를 추가합니다. * chore: 추가된 env 파일에 대한 컴파일 옵션을 설정합니다. * chore: 전역 변수의 타입을 설정합니다. * feat: 순환 참조를 고려하여 requestHandler를 사용하지 않고 토큰 리프레쉬 api를 호출합니다. * feat: interceptor를 이용해 api 호출 전후 header와 개발 환경 별 토큰 관리를 처리합니다. * feat: requestHandler에 option 매개변수를 추가합니다. * feat: 토큰 관리를 위한 인터페이스를 추가합니다. * feat: 회원 정보 등록을 위한 인터페이스를 생성합니다. * feat: 회원 정보 등록 api의 호출부를 생성합니다. * feat: 회원 정보 등록 api를 커스텀 훅을 이용해 관리합니다. * feat: PIN을 이용한 로그인 시 로컬 개발 환경에서 토큰을 header에 사용하도록 설정합니다. * fix: 신규 사용자의 경우 임시 회원 가입 api를 통해 플로우를 진행합니다. * fix: 디자인 요구사항에 맞춰 컴포넌트 간 간격을 조정합니다. * feat: FAQ 란에 객체 데이터를 추가합니다. * feat: Accordion에 추가되어야 할 요구사항을 TODO를 이용해 기재합니다. * feat: cta 버튼에 onClick 핸들러를 추가합니다. * fix: 불필요하게 설정된 error의 타입 검사를 제거합니다. * typo: Email 인증 인터페이스 타입명을 통일합니다. * refactor: 이메일 관련 api의 매개변수와 payload를 객체 분할 형태로 통일합니다. * refactor: 커스텀 훅에 mutationKey를 추가합니다. * refactor: 변경된 커스텀 훅의 매개변수를 mutate 객체에 반영합니다. * typo: 변경된 api의 response에 맞게 인터페이스 명을 수정합니다. * typo: 변경된 인터페이스에 맞춰 스키마의 변수 명을 수정합니다. * refactor: 변경된 api에 맞게 함수명을 변경합니다. * refactor: 이메일 인증 api에 query params를 추가합니다. * refactor: 이메일 인증 커스텀 훅에 mutationKey를 추가하고 매개변수로 query params를 추가합니다. * refactor: 이메일 인증 api의 변경점을 추가합니다. * feat: 이메일 인증 api에 사용되는 인터페이스를 추가합니다. * refactor: 수정된 이메일 인증 api의 호출부에 query params를 부여하는 로직을 추가합니다. * refactor: 이메일 인증 api를 사용하는 커스텀 훅의 매개변수를 구체화합니다. * feat: 변경된 이메일 인증 로직을 지원 페이지에 적용합니다. * typo: PIN을 이용한 로그인 시 사용되는 인터페이스 명을 간소화합니다. * refactor: PIN을 이용한 로그인 커스텀 훅에 변경된 인터페이스 명을 적용하고 mutationKey를 추가합니다. * refactor: PIN을 이용한 로그인의 API 호출부에 공통 인터페이스를 사용하여 간소화합니다. * typo: 회원 정보 업데이트 인터페이스의 명칭을 통일합니다. * typo: 임시 회원가입 api 인터페이스의 명칭을 통일합니다. * feat: api 호출 전에 이전 로그인 정보를 제거하는 로직을 추가합니다. * feat: base url의 선언 조건을 prod로 변경합니다. * feat: interceptor 가 로컬 환경이 아닐 때 withCredentials가 true 값을 가지도록 설정을 추가합니다. * move: 불필요하게 기입된 import 문을 수정합니다. * feat: 인증 번호 유효 시간 초과 시 이메일 버튼을 enabled 하고 label을 변경합니다. * refactor: 인증번호의 Input 창을 감지하여 값이 존재하지 않을 때 버튼을 표시하지 않습니다. * fix: 버튼의 문구를 디자인에 맞는 텍스트로 변경합니다. * feat: 제출 버튼에 아이콘과 조건부 렌더링을 추가합니다. * feat: input 태그에 자동완성 스타일이 커스텀 색상으로 처리되도록 처리합니다. * bug: workflow runner 버전 업데이트 (#133) * refactor: 다이얼로그 함수 호출식으로 재구현 (#127) * feat: dialogStore 생성 * refactor: Dialog 컴포넌트 수정 (dialogStore 이용) * remove: useDialog 훅 삭제 * refactor: Dialog 컴포넌트 Layout 에 추가 * refactor: 지원서 작성 페이지 수정된 다이얼로그 적용 * docs: Dialog 스토리북 수정 * refactor: dialog promise 제거 * docs: 다이얼로그 스토리북 수정 (promise 사용 스토리 수정) * remove: 불필요한 파일 제거 (useApplicationDialog) * feat: 다이얼로그 열린 상태 스크롤 정지 기능 구현 * feat: primary 버튼만 있는 Dialog 추가 * docs: 버튼 하나 Dialog 스토리 추가 * refactor: 불필요한 void 제거 * docs: Dialog 스토리북 설명 수정 * docs: Dialog 스토리북 함수명 수정 * refactor: dialogStore의 타입명 복수로 수정 * refactor: 다이얼로그 상태 관리 방식 수정 - 정적인 데이터는 객체 데이터로 관리, constants/dialog.tsx 생성 - dialogStore는 열고 닫힘 상태, 다이얼로그 타입, 버튼 액션를 관리 - 위 2가지를 Dialog 컴포넌트에 반영 * docs: Dialog 스토리북 수정 * refactor: ApplyRegistration 페이지 다이얼로그 코드 수정 * docs: Dialog 스토리북 설명 추가 * refactor: dialog 오타 수정 및 DialogTypes types/ 폴더로 분리 * refactor: dialogStore openDialog 간소화 * refactor: Dialog 버튼 handleClick 함수 간소화 * style: dialogStore 한줄 작성 * chore: 배포 스크립트 및 환경 설정 (#135) * fix: Uploader 스토리북 에러 해결 (#138) * feat: 답변 SELECT 필드 추가 (#130) * refactor: useCloseOutside 훅 ref 배열도 받을 수 있도록 수정 * refactor: selectBox 닫기 깜박임 수정 * feat: 지원서 작성 페이지의 객관식 문항을 위한 selectField 구현 * feat: Question 서버 데이터 타입 변경 및 적용 * refactor: 답변 필드 label 서버 데이터 연결 * fix: 초기 렌더링 시 select field 선택해도 빈문자열로 저장되는 버그 해결 * style: question 타입 표현 수정 * feat: 임시저장 불러오기 다이얼로그 표시 및 임시지원서 제거 api 연동 (+지원서 관련 함수 및 타입 리팩토링) (#134) * feat: 직군 변경 api가 임시지원서 제거 api로 변경되어 changeJob api 제거 및 deleteDraft api 생성 * refactor: 직군 변경 시 임시지원서 제거 api 요청 * rename: mutation 훅은 use~Mutation으로 훅 명 변경 … Co-authored-by: codus <97906653+rkdcodus@users.norepl…
* feat: GNB 모바일 뷰에 지원하기 cta 버튼을 추가합니다 * feat: GNB 테마 스위처 위치를 수정합니다
* fix: 미니 스터디 페이지 레이아웃 및 API 스펙 반영 * fix: 라이브 세션 페이지 레이아웃 및 API 스펙 반영 * fix: 콘텐츠 페이지 레이아웃 및 API 스펙 반영
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
WonJuneKim
approved these changes
Jan 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
💡 작업 내용
💡 자세한 설명
구현한 의도를 설명해주세요.
수정 사항이 있다면 수정한 이유를 적어주세요.
필요하다면 스크린샷 또는 코드 조각을 사용해주세요.
📗 참고 자료 (선택)
📢 리뷰 요구 사항 (선택)
✅ 셀프 체크리스트
closes #이슈번호