Skip to content

Commit 1d2bec7

Browse files
WonJuneKimrkdcodusqodana-cloud[bot]qodana-botwhdgur5717
authored
release/v2.0.0 (#333)
* 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: 임시저장 다이얼로그 표…
1 parent 758afde commit 1d2bec7

941 files changed

Lines changed: 71733 additions & 1 deletion

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
name: Refactor issue template
3+
about: 리팩토링 이슈 템플릿
4+
title: 'refactor: '
5+
labels: "♻refactor"
6+
assignees: ''
7+
8+
---
9+
10+
## 💡 리팩토링 내용
11+
간단하게 작업 내용을 설명해주세요.
12+
단, 기존 내용을 수정하거나 무언가 추가해야한다면 상세한 이유를 설명해주세요.
13+
14+
## ✅ 체크리스트
15+
- [ ] 작업할 내용 1
16+
- [ ] 작업할 내용 2
17+
18+
## ⏰ 예상 소요 시간

.github/workflows/deploy.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Deploy React App to AWS S3 and CloudFront
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
branches:
9+
- main
10+
11+
jobs:
12+
deploy:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: Checkout code
17+
uses: actions/checkout@v4
18+
19+
- name: Set up Node.js
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version: '18'
23+
24+
- name: Cache npm packages
25+
uses: actions/cache@v4
26+
with:
27+
path: ~/.npm
28+
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
29+
restore-keys: |
30+
${{ runner.os }}-npm
31+
32+
- name: Install dependencies
33+
run: npm ci
34+
35+
- name: Build the project
36+
env:
37+
NODE_ENV: production
38+
API_URL: ${{ secrets.API_URL }}
39+
run: npm run build
40+
41+
- name: Set up AWS credentials
42+
if: github.event_name == 'push'
43+
uses: aws-actions/configure-aws-credentials@v4
44+
with:
45+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
46+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
47+
aws-region: ${{ secrets.AWS_REGION }}
48+
49+
- name: Deploy to S3
50+
if: github.event_name == 'push'
51+
run: |
52+
aws s3 sync ./apps/web/dist/ s3://${{ secrets.S3_BUCKET_NAME }} --delete
53+
54+
- name: Invalidate CloudFront cache
55+
if: github.event_name == 'push'
56+
run: |
57+
aws cloudfront create-invalidation \
58+
--distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} \
59+
--paths "/*"

.github/workflows/storybook.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Storybook Deployment and Visual Testing
2+
run-name: ${{ github.actor }}의 스토리북 배포 및 테스트
3+
4+
on:
5+
pull_request:
6+
branches:
7+
- dev
8+
jobs:
9+
storybook:
10+
runs-on: ubuntu-22.04
11+
defaults:
12+
run:
13+
working-directory: packages/jds
14+
15+
steps:
16+
- name: Checkout repository
17+
uses: actions/checkout@v4
18+
with:
19+
fetch-depth: 0
20+
21+
- name: Cache node_modules
22+
id: cache
23+
uses: actions/cache@v4
24+
with:
25+
path: '**/node_modules'
26+
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-storybook
27+
28+
- name: Install dependencies
29+
if: steps.cache.outputs.cache-hit != 'true'
30+
run: npm ci
31+
32+
- name: Publish to Chromatic
33+
uses: chromaui/action@latest
34+
with:
35+
projectToken: ${{ secrets.CHROMATIC_TOKEN }}
36+
workingDir: packages/jds

.gitignore

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
pnpm-debug.log*
8+
lerna-debug.log*
9+
10+
# Dependencies
11+
node_modules
12+
13+
# Production builds
14+
dist
15+
dist-ssr
16+
build
17+
out
18+
*.local
19+
20+
# Editor directories and files
21+
.vscode/*
22+
!.vscode/extensions.json
23+
.idea
24+
.DS_Store
25+
*.suo
26+
*.ntvs*
27+
*.njsproj
28+
*.sln
29+
*.sw?
30+
31+
# Storybook
32+
*storybook.log
33+
storybook-static/
34+
.cache/
35+
36+
# Environment variables
37+
.env
38+
.env*.local
39+
.env.development.local
40+
.env.test.local
41+
.env.production.local
42+
43+
# Sentry Config File
44+
.env.sentry-build-plugin
45+
.sentryclirc
46+
47+
# Turborepo
48+
.turbo/
49+
turbo-*.log
50+
51+
# TypeScript
52+
*.tsbuildinfo
53+
tsconfig.tsbuildinfo
54+
55+
# Workspace specific builds
56+
apps/*/dist
57+
apps/*/build
58+
apps/*/.turbo
59+
apps/*/.next
60+
packages/*/dist
61+
packages/*/build
62+
packages/*/.turbo
63+
packages/*/tsconfig.tsbuildinfo
64+
65+
# Build tools
66+
.parcel-cache/
67+
.vite/
68+
69+
# Chromatic
70+
build-storybook.log
71+
chromatic.log
72+
chromatic-build/
73+

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
# JECT-Official-WebSite-Client
1+
# JECT-Official-WebSite-Client

apps/web/.storybook/main.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import type { StorybookConfig } from "@storybook/react-vite";
2+
3+
import { dirname } from "path";
4+
5+
import { fileURLToPath } from "url";
6+
7+
/**
8+
* This function is used to resolve the absolute path of a package.
9+
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
10+
*/
11+
function getAbsolutePath(value: string): any {
12+
return dirname(fileURLToPath(import.meta.resolve(`${value}/package.json`)));
13+
}
14+
const config: StorybookConfig = {
15+
stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
16+
addons: [
17+
getAbsolutePath("@chromatic-com/storybook"),
18+
getAbsolutePath("@storybook/addon-docs"),
19+
getAbsolutePath("@storybook/addon-onboarding"),
20+
getAbsolutePath("@storybook/addon-a11y"),
21+
getAbsolutePath("@storybook/addon-vitest"),
22+
],
23+
framework: {
24+
name: getAbsolutePath("@storybook/react-vite"),
25+
options: {},
26+
},
27+
};
28+
export default config;

apps/web/.storybook/preview.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import type { Preview } from "@storybook/react-vite";
2+
import "@/styles/tokens/index";
3+
import "@/styles/global.css";
4+
5+
const preview: Preview = {
6+
parameters: {
7+
controls: {
8+
matchers: {
9+
color: /(background|color)$/i,
10+
date: /Date$/i,
11+
},
12+
},
13+
14+
a11y: {
15+
// 'todo' - show a11y violations in the test UI only
16+
// 'error' - fail CI on a11y violations
17+
// 'off' - skip a11y checks entirely
18+
test: "todo",
19+
},
20+
},
21+
};
22+
23+
export default preview;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import * as a11yAddonAnnotations from "@storybook/addon-a11y/preview";
2+
import { setProjectAnnotations } from "@storybook/react-vite";
3+
import * as projectAnnotations from "./preview";
4+
5+
// This is an important step to apply the right configuration when testing your stories.
6+
// More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations
7+
setProjectAnnotations([a11yAddonAnnotations, projectAnnotations]);

apps/web/eslint.config.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// For more info, see https://github.com/storybookjs/eslint-plugin-storybook#configuration-flat-config-format
2+
import storybook from "eslint-plugin-storybook";
3+
4+
import appConfig from "@ject/eslint-config/app";
5+
6+
export default [
7+
{
8+
ignores: ["**/.storybook/**"],
9+
},
10+
...appConfig,
11+
...storybook.configs["flat/recommended"],
12+
];

apps/web/index.html

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<!doctype html>
2+
<html lang="ko">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<meta name="robots" content="index, follow" />
7+
<meta
8+
name="keywords"
9+
content="IT 사이드 프로젝트 동아리,협업,프론트엔드 개발자,백엔드 개발자,프로덕트 매니저(PM),프로덕트 디자이너"
10+
/>
11+
12+
<link rel="apple-touch-icon" sizes="180x180" href="/favicon-180x180.png" />
13+
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
14+
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
15+
16+
<script src="https://cdn.amplitude.com/libs/analytics-browser-2.11.1-min.js.gz"></script>
17+
<script src="https://cdn.amplitude.com/libs/plugin-session-replay-browser-1.8.0-min.js.gz"></script>
18+
19+
<!-- Google Tag Manager -->
20+
<script>
21+
(function (w, d, s, l, i) {
22+
w[l] = w[l] || [];
23+
w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" });
24+
var f = d.getElementsByTagName(s)[0],
25+
j = d.createElement(s),
26+
dl = l != "dataLayer" ? "&l=" + l : "";
27+
j.async = true;
28+
j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
29+
f.parentNode.insertBefore(j, f);
30+
})(window, document, "script", "dataLayer", "GTM-TMPMTHJ3");
31+
</script>
32+
<!-- End Google Tag Manager -->
33+
34+
<title>젝트</title>
35+
<meta
36+
name="description"
37+
content="젝트(JECT)는 다양한 포지션 멤버들과 협업할 수 있는 IT 사이드 프로젝트 동아리예요. 홈페이지에서 더 자세한 내용을 확인해보세요!"
38+
/>
39+
40+
<!--Open Graph-->
41+
<meta property="og:type" content="website" />
42+
<meta property="og:title" content="젝트" />
43+
<meta
44+
property="og:description"
45+
content="젝트(JECT)는 다양한 포지션 멤버들과 협업할 수 있는 IT 사이드 프로젝트 동아리예요. 홈페이지에서 더 자세한 내용을 확인해보세요!"
46+
/>
47+
<meta property="og:url" content="https://ject.kr/" />
48+
</head>
49+
<body>
50+
<!-- Google Tag Manager (noscript) -->
51+
<noscript>
52+
<iframe
53+
src="https://www.googletagmanager.com/ns.html?id=GTM-TMPMTHJ3"
54+
height="0"
55+
width="0"
56+
style="display: none; visibility: hidden"
57+
></iframe>
58+
</noscript>
59+
<!-- End Google Tag Manager (noscript) -->
60+
<div id="root"></div>
61+
<script type="module" src="/src/main.tsx"></script>
62+
</body>
63+
</html>

0 commit comments

Comments
 (0)