Skip to content

Commit

Permalink
FE-13 🔀 메인페이지 브랜치 최신화 (#236)
Browse files Browse the repository at this point in the history
* FE-13 💄 메인 페이지 ui 수정 (#222)

* FE-15 :sparkles: 오늘의 에피그램 조회용 데이터 스키마 정의

* FE-15 :sparkles: 오늘의 에피그램 조회 api 생성

* FE-15 :sparkles: 오늘의 에피그램 useQuery 커스텀 훅 구현

* FE-15 :hammer: EpigramCard 컴포넌트 수정

테스트 데이터 제거
props 생성

* FE-15 :sparkles: 오늘의 에피그램 컴포넌트 생성

* FE-15 :fire: api 함수 불필요한 부분 제거

* FE-18 :sparkles: 최근 댓글 조회 데이터 스키마 정의

* FE-18 :sparkles: 최근 댓글 조회 api 생성

* FE-18 :sparkles: 댓글 조회 관리용 커스텀 훅 생성

* FE-18 :fire: 공용 컴포넌트 댓글 카드 테스트 데이터 제거

데이터를 props로 받도록 수정

* FE-18 :sparkles: RecentComment 컴포넌트 생성

* FE-17 :sparkles: 최근 에피그램 조회 데이터 스키마 정의

* FE-17 :sparkles: 최근 에피그램 조회 api 생성

* FE-17 :sparkles: 에피그램 조회 관리용 커스텀 훅 생성

* FE-17 :sparkles: RecentEpigram 컴포넌트 생성

* FE-17 :fire: 공용컴포넌트 테스트 데이터 제거

* FE-17 :sparkles: 최근 에피그램 더보기 버튼 구현

* FE-17 :sparkles: 최근 에피그램 클릭 시 상세 페이지 이동

* FE-17 :lipstick: 더보기 버튼 스타일 수정

* FE-18 :sparkles: 최근 댓글 더보기 기능 구현

* FE-14 ✨ 메인페이지 ui 구현 (#121)

* FE-14 :sparkles: 메인 페이지 레이아웃 파일 생성

* FE-14 :lipstick: 로컬 테스트를 위해 테스트 이미지 삽입

* FE-14 :lipstick: 메인 페이지 레이아웃 수정

* FE-14 :lipstick: 컴포넌트 제목 추가

* FE-14 :fire: 에피그램 카드 사이즈 수정

* FE-14 :lipstick: 컴포넌트 간의 gap 수정

* FE-14 :lipstick: 오늘의 감정 ui 수정

* FE-14 :lipstick: FAB icon 생성

* FE-14 :sparkles: FAB 버튼 생성

* FE-13 🔀 브랜치 최신화 (#124)

* FE-32 🔀검색 페이지 메인 머지 (#107)

* 💄FE-33 검색 페이지 UI (#10)

* .nvmrc 버전 수정

* 폰트 및 공용컬러 추가 (#6)

* font-family 추가

* tailwind common color 추가

* color 명 변경

* lang 수정

---------

Co-authored-by: 전유민 <[email protected]>

* :lipstick: 공용 컴포넌트 shadcn ui 추가 (#7)

* :lipstick: Feat: shadcn-ui init

* :lipstick: Feat: add toast ui

* Feat: add textarea ui

* Feat: add switch ui

* Feat: add radio-group ui

* Feat: add label ui

* Feat: add input ui

* Feat: add form ui

* Feat: add button ui

* Feat: add dropdown-menu ui

* Feat: add card ui

* Feat: add badge ui

* Feat: add avatar ui

* Feat: add alert dialog ui

* Chore: add eslint rules

* Chore: add shadcn ui

* ✨Feat: SearchBar UI 초안 완성

* styles: tailwind css 폰트 사이즈 추가

* feat: RecentSearches UI 초안 완성

* �styles: SearchResults UI 수정

* �styles: RecentSearches UI 수정

* ✨styles: 반응형  UI 추가

* FE-33 fix: build 오류 수정 중

* FE-33 fix: build 오류 해결 중

* FE-33 fix: build 오류 해결 중

* FE-33 fix: build 오류 해결 중

* fix: build 오류 해결 중

---------

Co-authored-by: 전유민 <[email protected]>
Co-authored-by: JeonYumin94 <[email protected]>
Co-authored-by: MOON <[email protected]>

* FE-65  ✨최근 검색어 기능 (#51)

* FE-65 ✨feat: 최근 검색어 기능 구현

* FE-65 ✨feat: 검색바와 연동하여 즉시 반영되도록 수정

* FE-65 ✨feat: debounce를 위한 lodash 라이브러리 설치

* FE-65 ✨feat: debounce 기능 적용(++lodash 라이브러리)

* FE-65 ✨feat: useEffectt로 debouncedSearch함수 의존성 설정

* FE-65 ✨feat: useCallback 대신 useRef로 변경

* FE-65 ✨fix:: debounce 기능 제거(불필요)

* FE-65 ✨feat:  focus될 때 placeholder 사라지게 수정 및 UI 수정

* FE-65 ✨feat:  isInitialMount 선언 및 주석 추가

* FE-65 ✨fix: 주석 수정

* FE-65 ✨feat: 최근 검색어 클릭 시 그 검색어로 검색되는  기능

* FE-65 styles: 주석 추가

* FE-74  ✨검색 결과 기능 (#73)

* FE-74 fix: 사용하지 않는 lodash 라이브러리 삭제

* FE-74 ✨feat: 테스트 용 api 코드 가져오기

* FE-74 ✨feat: 검색 결과 기능 구현

* FE-74 ✨fix: 중복된 key, href 제거 및 규칙 무시 주석 추가

* FE-74 ✨test: 테스트 데이터 추가

* FE-74 ✨feat: 검색어 하이라이팅 및 순서 기능 추가

* FE-74 ✨fix:  주석 수정 및 api 파일 삭제

* FE-74 ✨styles:  주석 추가

* FE-74 ✨fix: 멘토링  내용 주석으로  추가

* FE-32 🔀 epic브랜치 최신화 (#77)

* .nvmrc 버전 수정

* 폰트 및 공용컬러 추가 (#6)

* font-family 추가

* tailwind common color 추가

* color 명 변경

* lang 수정

---------

Co-authored-by: 전유민 <[email protected]>

* :lipstick: 공용 컴포넌트 shadcn ui 추가 (#7)

* :lipstick: Feat: shadcn-ui init

* :lipstick: Feat: add toast ui

* Feat: add textarea ui

* Feat: add switch ui

* Feat: add radio-group ui

* Feat: add label ui

* Feat: add input ui

* Feat: add form ui

* Feat: add button ui

* Feat: add dropdown-menu ui

* Feat: add card ui

* Feat: add badge ui

* Feat: add avatar ui

* Feat: add alert dialog ui

* Chore: add eslint rules

* Chore: add shadcn ui

* FE-48 📰 공용 컴포넌트 face emoji svg 파일 생성

* FE-48 :art: 감정 이모티콘 폴더 구조 변경

* FE-48 :sparkles: 감정 이모티콘 카드 컴포넌트 ui 생성

* FE-48 :sparkles: 감정 이모티콘 상태에 따른 클래스 설정

* FE-48 :lipstick: 감정 이모티콘 카드 컴포넌트 ui 수정

* FE-48 :sparkles: 감정 이모티콘 카드 클릭 이벤트 구현

- EmotionIconCardContainer를 사용해 상태관리와 이벤트 처리 (Clicked<->UnClicked)

* FE-48 📝 컴포넌트 이름 변경

명확한 의미 전달을 위해 컴포넌트 이름 변경

* FE-48 :sparkles: 감정 이모티콘 상태 변화 동기화 구

감정 카드를 클릭할 때 상태가 올바르게 전환되고, 다른 카드의 상태도 동기화되는 기능 구현

* FE-48 :sparkles: EmotionSelector 컴포넌트 동적 크기 변경 구현

useMediaQuery 훅 생성: 화면의 크기가 변경될 때마다 리스너 추가 및 제거

* FE-48 :fire: 출력 확인을 위한 테스트 컴포넌트 삭제

* FE-48 :hammer: EmotionTypes 인터페이스 정의

emotion 관련 컴포넌트에서 해당 인터페이스를 import하여 사용하게 구현

* FE-59 :sparkles: 에피그램 카드 ui 구현

tailwind css를 확장해 줄무늬 배경 이미지 구현

* FE-59 :sparkles: 에피그램 카드 반응현 디자인 구현

* FE-59 :lipstick: 에피그램 카드 글씨체 적용

* FE-59 :fire: 에피그램 카드 테스트 코드 삭제

* FE-59 :fire: 테스트 흔적 삭제

* FE-58 :sparkles: 공용 컴포넌트 댓글 카드 기본 ui 구현

* FE-58 :lipstick: 공용 컴포넌트 반응형 디자인 적용

* FE-58 :fire: 댓글 카드 테스트 코드 삭제

* FE-58 :lips: 댓글 카드 관련 인터페이스, 스타일 분리

* FE-50 ✨공용컴포넌트 헤더 구현 (#19)

* FE-5050✨ feat:  헤더 부분 기능 초안

* FE-50 ✨styles: 주석 추가

* FE-50 ✨styles: 주석 추추가

* FE-5050 ✨test: 테스트 코드

* FE-50 ✨fix: 테스트 코드 삭제

* FE-50 ✨feat: 공유 이미지 추가 및 현재 URL 복사 기능 추가

* FE-50 ✨styles: U셋 중 하나가 빠지더라도 안무너지게 UI 수정

* FE-50 ✨comment:  주석 수정 및 추가

* FE-50 ✨fix: 테스트 코드 삭제

* FE-50 ✨fix:  함수명 컨벤션에 맞게 변경

* FE-50 ✨fix: types 폴더에 interface 정의

* FE-50 fix: build 오류 수정

* FE-61 🔨 eslint 규칙 수정

* FE-61 🔥 InteractiveEmotionIconCard 삭제

단순 래핑 기능밖에 없는 컴포넌트 삭제 / emotionselector에서 emotioniconcard를 직접 사용하도록 수정

* FE-61 🔨 EpigramCard 사이즈 재정의

base -> xs로 변경

* FE-61 📝 공용 컴포넌트 테스트 텍스트 주석 추가

* FE-61 🔨 CommentCard 타입 내부 정의

* FE-61 :truck: 감정 카드 폴더 구조 변경

* FE-61 📝 감정 카드, 감정 셀렉터 주석 추가

* FE-61 :fire: 댓글 카드 디폴트 프롭 삭제

* FE-62 ✨fix:  주석 수정 및 타입 수정 (#27)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* build 오류 해결

* build 오류 해결 중

---------

Co-authored-by: 전유민 <[email protected]>
Co-authored-by: JeonYumin94 <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: NEWJIN <[email protected]>

* FE-75  ✨무한 스크롤, 검색 결과 URL에 저장 기능 구현 (#104)

* FE-75 ✨styles: tailwind .config 파일 메인과 통합

* FE-75 ✨feat: 공용 컴포넌트 Header 추가

* FE-75 ✨refactor: useMemo 사용

* FE-75 ✨feat: URL에 검색 결과  저장

* FE-75 ✨styles: 로딩 스타일 구현

* FE-75 ✨feat: 실제 api 추가

* FE-75 ✨feat: api 기능 구현

* FE-75 ✨feat: 무한 스크롤 구현

* FE-75 ✨fix: 의존성 배열에서 로딩 상태 제거

* FE-75 ✨styles: 주석 추가

* FE-75 ✨feat:: 사용자마다 최근 검색어 관리할 수 있게 변경

* FE-75 ✨fix: 검색 전 검색 결과가  나오지 않도록 수정

* FE-32 🔀브랜치 최신화 (#105)

* .nvmrc 버전 수정

* 폰트 및 공용컬러 추가 (#6)

* font-family 추가

* tailwind common color 추가

* color 명 변경

* lang 수정

---------

Co-authored-by: 전유민 <[email protected]>

* :lipstick: 공용 컴포넌트 shadcn ui 추가 (#7)

* :lipstick: Feat: shadcn-ui init

* :lipstick: Feat: add toast ui

* Feat: add textarea ui

* Feat: add switch ui

* Feat: add radio-group ui

* Feat: add label ui

* Feat: add input ui

* Feat: add form ui

* Feat: add button ui

* Feat: add dropdown-menu ui

* Feat: add card ui

* Feat: add badge ui

* Feat: add avatar ui

* Feat: add alert dialog ui

* Chore: add eslint rules

* Chore: add shadcn ui

* FE-48 📰 공용 컴포넌트 face emoji svg 파일 생성

* FE-48 :art: 감정 이모티콘 폴더 구조 변경

* FE-48 :sparkles: 감정 이모티콘 카드 컴포넌트 ui 생성

* FE-48 :sparkles: 감정 이모티콘 상태에 따른 클래스 설정

* FE-48 :lipstick: 감정 이모티콘 카드 컴포넌트 ui 수정

* FE-48 :sparkles: 감정 이모티콘 카드 클릭 이벤트 구현

- EmotionIconCardContainer를 사용해 상태관리와 이벤트 처리 (Clicked<->UnClicked)

* FE-48 📝 컴포넌트 이름 변경

명확한 의미 전달을 위해 컴포넌트 이름 변경

* FE-48 :sparkles: 감정 이모티콘 상태 변화 동기화 구

감정 카드를 클릭할 때 상태가 올바르게 전환되고, 다른 카드의 상태도 동기화되는 기능 구현

* FE-48 :sparkles: EmotionSelector 컴포넌트 동적 크기 변경 구현

useMediaQuery 훅 생성: 화면의 크기가 변경될 때마다 리스너 추가 및 제거

* FE-48 :fire: 출력 확인을 위한 테스트 컴포넌트 삭제

* FE-48 :hammer: EmotionTypes 인터페이스 정의

emotion 관련 컴포넌트에서 해당 인터페이스를 import하여 사용하게 구현

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-59 :sparkles: 에피그램 카드 ui 구현

tailwind css를 확장해 줄무늬 배경 이미지 구현

* FE-59 :sparkles: 에피그램 카드 반응현 디자인 구현

* FE-59 :lipstick: 에피그램 카드 글씨체 적용

* FE-59 :fire: 에피그램 카드 테스트 코드 삭제

* FE-59 :fire: 테스트 흔적 삭제

* FE-58 :sparkles: 공용 컴포넌트 댓글 카드 기본 ui 구현

* FE-58 :lipstick: 공용 컴포넌트 반응형 디자인 적용

* FE-58 :fire: 댓글 카드 테스트 코드 삭제

* FE-58 :lips: 댓글 카드 관련 인터페이스, 스타일 분리

* FE-60 :sparkles: react hook form, zod 추가

* FE-50 ✨공용컴포넌트 헤더 구현 (#19)

* FE-5050✨ feat:  헤더 부분 기능 초안

* FE-50 ✨styles: 주석 추가

* FE-50 ✨styles: 주석 추추가

* FE-5050 ✨test: 테스트 코드

* FE-50 ✨fix: 테스트 코드 삭제

* FE-50 ✨feat: 공유 이미지 추가 및 현재 URL 복사 기능 추가

* FE-50 ✨styles: U셋 중 하나가 빠지더라도 안무너지게 UI 수정

* FE-50 ✨comment:  주석 수정 및 추가

* FE-50 ✨fix: 테스트 코드 삭제

* FE-50 ✨fix:  함수명 컨벤션에 맞게 변경

* FE-50 ✨fix: types 폴더에 interface 정의

* FE-50 fix: build 오류 수정

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* FE-61 🔨 eslint 규칙 수정

* FE-61 🔥 InteractiveEmotionIconCard 삭제

단순 래핑 기능밖에 없는 컴포넌트 삭제 / emotionselector에서 emotioniconcard를 직접 사용하도록 수정

* FE-61 🔨 EpigramCard 사이즈 재정의

base -> xs로 변경

* FE-61 📝 공용 컴포넌트 테스트 텍스트 주석 추가

* FE-61 🔨 CommentCard 타입 내부 정의

* FE-61 :truck: 감정 카드 폴더 구조 변경

* FE-61 📝 감정 카드, 감정 셀렉터 주석 추가

* FE-61 :fire: 댓글 카드 디폴트 프롭 삭제

* FE-62 ✨fix:  주석 수정 및 타입 수정 (#27)

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :lipstick: 회원가입 페이지 레이아웃 추가

* :lipstick: 간편 로그인 로고 추가

* :lipstick: 회원가입 ui 추가

* :sparkles: 회원가입 스키마 정의

* :heavy_plus_sign: 회원가입 페이지에 스키마 적용

* :lipstick: 에러 메시지 뜰 때 라벨, 인풋도 같은 에러 색깔 추가

* :memo: 유효성 검사를 통한 버튼의 비활성화 처리

* :memo: 유효성 검사에 따른 인풋 테두리 색상 처리

* :fire: AuthLayout 삭제

* :art: 회원가입 페이지 브라우저 확대시 ui 깨짐 수정

* :truck: 정규표현식 네이밍 변경

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :sparkles: 회원가입 응답 데이터 스키마 정의

* :sparkles: 회원가입 api 생성

* :sparkles: useRegisterMutation hook 생성

* :zap: 회원가입 폼에 mutaion hook 적용

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :zap: isAxiosError로 변경

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :twisted_rightwards_arrows: 충돌 해결

* :bug: postSignup 함수 추가

* :bug: postSignin 내보내는 방식 수정

* :wrench: lint 수정

* build 오류 해결

* build 오류 해결 중

* :sparkles: oauth api 생성

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

* :sparkles: 카카오톡 리디렉트 uri 설정

* :sparkles: useKakaoLogin mutation hook 생성

* :zap: 네이버 구글 카카오 간편 로그인 링크 설정

* :recycle: 에러처리 로직 수정

* FE-51 :twisted_rightwards_arrows: 공용 API 머지 요청 (#92)

* FE-52  ✨에피그램 목록조회 API (#34)

* FE-52 feat: api schema 작성

* FE-52 ✨feat: getEpigrams api 작성

* FE-522 ✨fix:  default export로 변경

* FE-52 ✨test: 테스트 코드 작성

* FE-52 ✨feat: BaseUrl, TeamID 상수 추가 및 axios baseTRL 수정

* FE-52 ✨fix: schema 및 apis 파일 수정

* FE-52 ✨test:  테스트 코드 삭제

* FE-52 ✨fix: .env파일 생성 및 BaseURL 수정

* FE-52 ✨fix: limit 타입  수정(optional 삭제)

* FE-52 ✨text: 테 테스트코드 삭제

* FE-52 ✨fix: api GET요청 주소 수정('epigrams' -> '/epigrams')

* FE-53 :sparkles: 감정이모티콘 저장 스키마 정의

* FE-53 :sparkles: 오늘의 감정 저장 api 생성

* FE-53 :sparkles: getMe 함수를 사용해 로그인 상태 확인 기능 구현

* FE-53 :sparkles: 감정 한영 변환 함수

* FE-53 :sparkles: 감정 저장 후 토스트 알림 표시

* FE-53 :sparkles: 오늘의 감정 조회 api 생성

* FE-53 :hammer: 감정 한영 변환 함수 추가

+) post, get 함수 내부로 한영 변환 함수 이동

* FE-53 :sparkles: 오늘의 감정 스키마 추가 정의

* FE-53 :sparkles: 오늘의 감정 조회 함수 적용

* FE-53 :truck: 오늘의 감정 type 이름 변경

* FE-53 :sparkles: useMutation 훅 사용

* FE-53 :memo: EmotionSelector 주석 추가

* FE-53 :fire: api 함수 에러 처리 부분 제거

* FE-53 :hammer: useQuery를 사용해 오늘의 감정 조회

데이터를 조회할 때는 useQuery를 사용하는거라 함

* FE-56 :sparkles: 댓글 수정 API (#84)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-56 :sparkles: 댓글 수정 API

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-57 :sparkles: 댓글 삭제 API (#88)

* FE-51 :twisted_rightwards_arrows: 공용 API 최신화 (#93)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-51 :twisted_rightwards_arrows: 공용 API 최신화 (충돌수정) (#98)

---------

Co-authored-by: imsoohyeok <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* .http 파일 삭제

---------

Co-authored-by: 전유민 <[email protected]>
Co-authored-by: JeonYumin94 <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-32 🔀브랜치 최신화 (#110)

* .nvmrc 버전 수정

* 폰트 및 공용컬러 추가 (#6)

* font-family 추가

* tailwind common color 추가

* color 명 변경

* lang 수정

---------

Co-authored-by: 전유민 <[email protected]>

* :lipstick: 공용 컴포넌트 shadcn ui 추가 (#7)

* :lipstick: Feat: shadcn-ui init

* :lipstick: Feat: add toast ui

* Feat: add textarea ui

* Feat: add switch ui

* Feat: add radio-group ui

* Feat: add label ui

* Feat: add input ui

* Feat: add form ui

* Feat: add button ui

* Feat: add dropdown-menu ui

* Feat: add card ui

* Feat: add badge ui

* Feat: add avatar ui

* Feat: add alert dialog ui

* Chore: add eslint rules

* Chore: add shadcn ui

* FE-48 📰 공용 컴포넌트 face emoji svg 파일 생성

* FE-48 :art: 감정 이모티콘 폴더 구조 변경

* FE-48 :sparkles: 감정 이모티콘 카드 컴포넌트 ui 생성

* FE-48 :sparkles: 감정 이모티콘 상태에 따른 클래스 설정

* FE-48 :lipstick: 감정 이모티콘 카드 컴포넌트 ui 수정

* FE-48 :sparkles: 감정 이모티콘 카드 클릭 이벤트 구현

- EmotionIconCardContainer를 사용해 상태관리와 이벤트 처리 (Clicked<->UnClicked)

* FE-48 📝 컴포넌트 이름 변경

명확한 의미 전달을 위해 컴포넌트 이름 변경

* FE-48 :sparkles: 감정 이모티콘 상태 변화 동기화 구

감정 카드를 클릭할 때 상태가 올바르게 전환되고, 다른 카드의 상태도 동기화되는 기능 구현

* FE-48 :sparkles: EmotionSelector 컴포넌트 동적 크기 변경 구현

useMediaQuery 훅 생성: 화면의 크기가 변경될 때마다 리스너 추가 및 제거

* FE-48 :fire: 출력 확인을 위한 테스트 컴포넌트 삭제

* FE-48 :hammer: EmotionTypes 인터페이스 정의

emotion 관련 컴포넌트에서 해당 인터페이스를 import하여 사용하게 구현

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-59 :sparkles: 에피그램 카드 ui 구현

tailwind css를 확장해 줄무늬 배경 이미지 구현

* FE-59 :sparkles: 에피그램 카드 반응현 디자인 구현

* FE-59 :lipstick: 에피그램 카드 글씨체 적용

* FE-59 :fire: 에피그램 카드 테스트 코드 삭제

* FE-59 :fire: 테스트 흔적 삭제

* FE-58 :sparkles: 공용 컴포넌트 댓글 카드 기본 ui 구현

* FE-58 :lipstick: 공용 컴포넌트 반응형 디자인 적용

* FE-58 :fire: 댓글 카드 테스트 코드 삭제

* FE-58 :lips: 댓글 카드 관련 인터페이스, 스타일 분리

* FE-60 :sparkles: react hook form, zod 추가

* FE-50 ✨공용컴포넌트 헤더 구현 (#19)

* FE-5050✨ feat:  헤더 부분 기능 초안

* FE-50 ✨styles: 주석 추가

* FE-50 ✨styles: 주석 추추가

* FE-5050 ✨test: 테스트 코드

* FE-50 ✨fix: 테스트 코드 삭제

* FE-50 ✨feat: 공유 이미지 추가 및 현재 URL 복사 기능 추가

* FE-50 ✨styles: U셋 중 하나가 빠지더라도 안무너지게 UI 수정

* FE-50 ✨comment:  주석 수정 및 추가

* FE-50 ✨fix: 테스트 코드 삭제

* FE-50 ✨fix:  함수명 컨벤션에 맞게 변경

* FE-50 ✨fix: types 폴더에 interface 정의

* FE-50 fix: build 오류 수정

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* FE-61 🔨 eslint 규칙 수정

* FE-61 🔥 InteractiveEmotionIconCard 삭제

단순 래핑 기능밖에 없는 컴포넌트 삭제 / emotionselector에서 emotioniconcard를 직접 사용하도록 수정

* FE-61 🔨 EpigramCard 사이즈 재정의

base -> xs로 변경

* FE-61 📝 공용 컴포넌트 테스트 텍스트 주석 추가

* FE-61 🔨 CommentCard 타입 내부 정의

* FE-61 :truck: 감정 카드 폴더 구조 변경

* FE-61 📝 감정 카드, 감정 셀렉터 주석 추가

* FE-61 :fire: 댓글 카드 디폴트 프롭 삭제

* FE-62 ✨fix:  주석 수정 및 타입 수정 (#27)

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :lipstick: 회원가입 페이지 레이아웃 추가

* :lipstick: 간편 로그인 로고 추가

* :lipstick: 회원가입 ui 추가

* :sparkles: 회원가입 스키마 정의

* :heavy_plus_sign: 회원가입 페이지에 스키마 적용

* :lipstick: 에러 메시지 뜰 때 라벨, 인풋도 같은 에러 색깔 추가

* :memo: 유효성 검사를 통한 버튼의 비활성화 처리

* :memo: 유효성 검사에 따른 인풋 테두리 색상 처리

* :fire: AuthLayout 삭제

* :art: 회원가입 페이지 브라우저 확대시 ui 깨짐 수정

* :truck: 정규표현식 네이밍 변경

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :sparkles: 회원가입 응답 데이터 스키마 정의

* :sparkles: 회원가입 api 생성

* :sparkles: useRegisterMutation hook 생성

* :zap: 회원가입 폼에 mutaion hook 적용

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :zap: isAxiosError로 변경

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :twisted_rightwards_arrows: 충돌 해결

* :bug: postSignup 함수 추가

* :bug: postSignin 내보내는 방식 수정

* :wrench: lint 수정

* build 오류 해결

* build 오류 해결 중

* :sparkles: oauth api 생성

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

* :sparkles: 카카오톡 리디렉트 uri 설정

* :sparkles: useKakaoLogin mutation hook 생성

* :zap: 네이버 구글 카카오 간편 로그인 링크 설정

* :recycle: 에러처리 로직 수정

* FE-51 :twisted_rightwards_arrows: 공용 API 머지 요청 (#92)

* FE-52  ✨에피그램 목록조회 API (#34)

* FE-52 feat: api schema 작성

* FE-52 ✨feat: getEpigrams api 작성

* FE-522 ✨fix:  default export로 변경

* FE-52 ✨test: 테스트 코드 작성

* FE-52 ✨feat: BaseUrl, TeamID 상수 추가 및 axios baseTRL 수정

* FE-52 ✨fix: schema 및 apis 파일 수정

* FE-52 ✨test:  테스트 코드 삭제

* FE-52 ✨fix: .env파일 생성 및 BaseURL 수정

* FE-52 ✨fix: limit 타입  수정(optional 삭제)

* FE-52 ✨text: 테 테스트코드 삭제

* FE-52 ✨fix: api GET요청 주소 수정('epigrams' -> '/epigrams')

* FE-53 :sparkles: 감정이모티콘 저장 스키마 정의

* FE-53 :sparkles: 오늘의 감정 저장 api 생성

* FE-53 :sparkles: getMe 함수를 사용해 로그인 상태 확인 기능 구현

* FE-53 :sparkles: 감정 한영 변환 함수

* FE-53 :sparkles: 감정 저장 후 토스트 알림 표시

* FE-53 :sparkles: 오늘의 감정 조회 api 생성

* FE-53 :hammer: 감정 한영 변환 함수 추가

+) post, get 함수 내부로 한영 변환 함수 이동

* FE-53 :sparkles: 오늘의 감정 스키마 추가 정의

* FE-53 :sparkles: 오늘의 감정 조회 함수 적용

* FE-53 :truck: 오늘의 감정 type 이름 변경

* FE-53 :sparkles: useMutation 훅 사용

* FE-53 :memo: EmotionSelector 주석 추가

* FE-53 :fire: api 함수 에러 처리 부분 제거

* FE-53 :hammer: useQuery를 사용해 오늘의 감정 조회

데이터를 조회할 때는 useQuery를 사용하는거라 함

* FE-56 :sparkles: 댓글 수정 API (#84)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-56 :sparkles: 댓글 수정 API

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-57 :sparkles: 댓글 삭제 API (#88)

* FE-51 :twisted_rightwards_arrows: 공용 API 최신화 (#93)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-51 :twisted_rightwards_arrows: 공용 API 최신화 (충돌수정) (#98)

---------

Co-authored-by: imsoohyeok <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* .http 파일 삭제

* merge main

---------

Co-authored-by: 전유민 <[email protected]>
Co-authored-by: JeonYumin94 <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-32 검색페이지 메인 충돌 수정 (#112)

* .nvmrc 버전 수정

* 폰트 및 공용컬러 추가 (#6)

* font-family 추가

* tailwind common color 추가

* color 명 변경

* lang 수정

---------

Co-authored-by: 전유민 <[email protected]>

* :lipstick: 공용 컴포넌트 shadcn ui 추가 (#7)

* :lipstick: Feat: shadcn-ui init

* :lipstick: Feat: add toast ui

* Feat: add textarea ui

* Feat: add switch ui

* Feat: add radio-group ui

* Feat: add label ui

* Feat: add input ui

* Feat: add form ui

* Feat: add button ui

* Feat: add dropdown-menu ui

* Feat: add card ui

* Feat: add badge ui

* Feat: add avatar ui

* Feat: add alert dialog ui

* Chore: add eslint rules

* Chore: add shadcn ui

* FE-48 📰 공용 컴포넌트 face emoji svg 파일 생성

* FE-48 :art: 감정 이모티콘 폴더 구조 변경

* FE-48 :sparkles: 감정 이모티콘 카드 컴포넌트 ui 생성

* FE-48 :sparkles: 감정 이모티콘 상태에 따른 클래스 설정

* FE-48 :lipstick: 감정 이모티콘 카드 컴포넌트 ui 수정

* FE-48 :sparkles: 감정 이모티콘 카드 클릭 이벤트 구현

- EmotionIconCardContainer를 사용해 상태관리와 이벤트 처리 (Clicked<->UnClicked)

* FE-48 📝 컴포넌트 이름 변경

명확한 의미 전달을 위해 컴포넌트 이름 변경

* FE-48 :sparkles: 감정 이모티콘 상태 변화 동기화 구

감정 카드를 클릭할 때 상태가 올바르게 전환되고, 다른 카드의 상태도 동기화되는 기능 구현

* FE-48 :sparkles: EmotionSelector 컴포넌트 동적 크기 변경 구현

useMediaQuery 훅 생성: 화면의 크기가 변경될 때마다 리스너 추가 및 제거

* FE-48 :fire: 출력 확인을 위한 테스트 컴포넌트 삭제

* FE-48 :hammer: EmotionTypes 인터페이스 정의

emotion 관련 컴포넌트에서 해당 인터페이스를 import하여 사용하게 구현

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-59 :sparkles: 에피그램 카드 ui 구현

tailwind css를 확장해 줄무늬 배경 이미지 구현

* FE-59 :sparkles: 에피그램 카드 반응현 디자인 구현

* FE-59 :lipstick: 에피그램 카드 글씨체 적용

* FE-59 :fire: 에피그램 카드 테스트 코드 삭제

* FE-59 :fire: 테스트 흔적 삭제

* FE-58 :sparkles: 공용 컴포넌트 댓글 카드 기본 ui 구현

* FE-58 :lipstick: 공용 컴포넌트 반응형 디자인 적용

* FE-58 :fire: 댓글 카드 테스트 코드 삭제

* FE-58 :lips: 댓글 카드 관련 인터페이스, 스타일 분리

* FE-60 :sparkles: react hook form, zod 추가

* FE-50 ✨공용컴포넌트 헤더 구현 (#19)

* FE-5050✨ feat:  헤더 부분 기능 초안

* FE-50 ✨styles: 주석 추가

* FE-50 ✨styles: 주석 추추가

* FE-5050 ✨test: 테스트 코드

* FE-50 ✨fix: 테스트 코드 삭제

* FE-50 ✨feat: 공유 이미지 추가 및 현재 URL 복사 기능 추가

* FE-50 ✨styles: U셋 중 하나가 빠지더라도 안무너지게 UI 수정

* FE-50 ✨comment:  주석 수정 및 추가

* FE-50 ✨fix: 테스트 코드 삭제

* FE-50 ✨fix:  함수명 컨벤션에 맞게 변경

* FE-50 ✨fix: types 폴더에 interface 정의

* FE-50 fix: build 오류 수정

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* FE-61 🔨 eslint 규칙 수정

* FE-61 🔥 InteractiveEmotionIconCard 삭제

단순 래핑 기능밖에 없는 컴포넌트 삭제 / emotionselector에서 emotioniconcard를 직접 사용하도록 수정

* FE-61 🔨 EpigramCard 사이즈 재정의

base -> xs로 변경

* FE-61 📝 공용 컴포넌트 테스트 텍스트 주석 추가

* FE-61 🔨 CommentCard 타입 내부 정의

* FE-61 :truck: 감정 카드 폴더 구조 변경

* FE-61 📝 감정 카드, 감정 셀렉터 주석 추가

* FE-61 :fire: 댓글 카드 디폴트 프롭 삭제

* FE-62 ✨fix:  주석 수정 및 타입 수정 (#27)

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :lipstick: 회원가입 페이지 레이아웃 추가

* :lipstick: 간편 로그인 로고 추가

* :lipstick: 회원가입 ui 추가

* :sparkles: 회원가입 스키마 정의

* :heavy_plus_sign: 회원가입 페이지에 스키마 적용

* :lipstick: 에러 메시지 뜰 때 라벨, 인풋도 같은 에러 색깔 추가

* :memo: 유효성 검사를 통한 버튼의 비활성화 처리

* :memo: 유효성 검사에 따른 인풋 테두리 색상 처리

* :fire: AuthLayout 삭제

* :art: 회원가입 페이지 브라우저 확대시 ui 깨짐 수정

* :truck: 정규표현식 네이밍 변경

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :sparkles: 회원가입 응답 데이터 스키마 정의

* :sparkles: 회원가입 api 생성

* :sparkles: useRegisterMutation hook 생성

* :zap: 회원가입 폼에 mutaion hook 적용

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :zap: isAxiosError로 변경

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :twisted_rightwards_arrows: 충돌 해결

* :bug: postSignup 함수 추가

* :bug: postSignin 내보내는 방식 수정

* :wrench: lint 수정

* :sparkles: oauth api 생성

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

* :sparkles: 카카오톡 리디렉트 uri 설정

* :sparkles: useKakaoLogin mutation hook 생성

* :zap: 네이버 구글 카카오 간편 로그인 링크 설정

* :recycle: 에러처리 로직 수정

* FE-51 :twisted_rightwards_arrows: 공용 API 머지 요청 (#92)

* FE-52  ✨에피그램 목록조회 API (#34)

* FE-52 feat: api schema 작성

* FE-52 ✨feat: getEpigrams api 작성

* FE-522 ✨fix:  default export로 변경

* FE-52 ✨test: 테스트 코드 작성

* FE-52 ✨feat: BaseUrl, TeamID 상수 추가 및 axios baseTRL 수정

* FE-52 ✨fix: schema 및 apis 파일 수정

* FE-52 ✨test:  테스트 코드 삭제

* FE-52 ✨fix: .env파일 생성 및 BaseURL 수정

* FE-52 ✨fix: limit 타입  수정(optional 삭제)

* FE-52 ✨text: 테 테스트코드 삭제

* FE-52 ✨fix: api GET요청 주소 수정('epigrams' -> '/epigrams')

* FE-53 :sparkles: 감정이모티콘 저장 스키마 정의

* FE-53 :sparkles: 오늘의 감정 저장 api 생성

* FE-53 :sparkles: getMe 함수를 사용해 로그인 상태 확인 기능 구현

* FE-53 :sparkles: 감정 한영 변환 함수

* FE-53 :sparkles: 감정 저장 후 토스트 알림 표시

* FE-53 :sparkles: 오늘의 감정 조회 api 생성

* FE-53 :hammer: 감정 한영 변환 함수 추가

+) post, get 함수 내부로 한영 변환 함수 이동

* FE-53 :sparkles: 오늘의 감정 스키마 추가 정의

* FE-53 :sparkles: 오늘의 감정 조회 함수 적용

* FE-53 :truck: 오늘의 감정 type 이름 변경

* FE-53 :sparkles: useMutation 훅 사용

* FE-53 :memo: EmotionSelector 주석 추가

* FE-53 :fire: api 함수 에러 처리 부분 제거

* FE-53 :hammer: useQuery를 사용해 오늘의 감정 조회

데이터를 조회할 때는 useQuery를 사용하는거라 함

* FE-56 :sparkles: 댓글 수정 API (#84)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-56 :sparkles: 댓글 수정 API

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-57 :sparkles: 댓글 삭제 API (#88)

* FE-51 :twisted_rightwards_arrows: 공용 API 최신화 (#93)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-51 :twisted_rightwards_arrows: 공용 API 최신화 (충돌수정) (#98)

---------

Co-authored-by: imsoohyeok <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

---------

Co-authored-by: 전유민 <[email protected]>
Co-authored-by: JeonYumin94 <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

---------

Co-authored-by: 전유민 <[email protected]>
Co-authored-by: JeonYumin94 <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-27 :twisted_rightwards_arrows: 마이페이지 머지 요청 (#100)

* FE-34 :sparkles: 마이페이지 프로필 수정 기능 (#53)

* FE-34 :lipstick: 마이페이지 UI 초기작업

* FE-34 :sparkles: 내 정보 조회 API 연동

* FE-34 :lipstick: shadcn/ui Dialog 설치

* FE-34 :sparkles: 프로필 수정 API 연동

* FE-34 :sparkles: 이미지 실패 토스트 추가

* FE-36 :sparkles: 마이페이지 캘린더 출력 함수 (#58)

* FE-36 :lipstick: 감정달력 UI

* FE-36 :sparkles: 캘린더 함수 생성

* FE-36 :sparkles: 마이페이지 감정달력 (#65)

* FE-36 :lipstick: 감정달력 UI

* FE-36 :sparkles: 캘린더 함수 생성

* FE-36 :sparkles: 마이페이지 감정달력: 오늘 날짜 표시

* FE-36 :sparkles: 마이페이지 월 별 감정로그 조회 API 연동

* FE-36 :sparkles: 월별 감정 로그 해당 날짜에 출력

* FE-36 :lipstick: 달력 css 수정

* FE-36 :art: 마이페이지 캘린더 헤더 컴포넌트 분리

* FE-36 :sparkles: 마이페이지 감정달력 필터기능

* FE-27 :twisted_rightwards_arrows: 에픽 브랜치 최신화 (#81)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-27 :twisted_rightwards_arrows: 마이페이지 에픽 브랜치 최신화 (#85)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-27 :twisted_rightwards_arrows: 브랜치 최신화 (#86)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-37 :sparkles: 마이페이지 감정차트 (#89)

* FE-37 :recycle: 월별 감정로그 조회 코드 리팩토링

* FE-37 :sparkles: 감정 차트

* FE-37 :hammer: 상수 컨벤션 수정

* FE-27 :twisted_rightwards_arrows: 브랜치 최신화 (#99)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :lipstick: 회원가입 페이지 레이아웃 추가

* :lipstick: 간편 로그인 로고 추가

* :lipstick: 회원가입 ui 추가

* :sparkles: 회원가입 스키마 정의

* :heavy_plus_sign: 회원가입 페이지에 스키마 적용

* :lipstick: 에러 메시지 뜰 때 라벨, 인풋도 같은 에러 색깔 추가

* :memo: 유효성 검사를 통한 버튼의 비활성화 처리

* :memo: 유효성 검사에 따른 인풋 테두리 색상 처리

* :fire: AuthLayout 삭제

* :art: 회원가입 페이지 브라우저 확대시 ui 깨짐 수정

* :truck: 정규표현식 네이밍 변경

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :sparkles: 회원가입 응답 데이터 스키마 정의

* :sparkles: 회원가입 api 생성

* :sparkles: useRegisterMutation hook 생성

* :zap: 회원가입 폼에 mutaion hook 적용

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :zap: isAxiosError로 변경

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :twisted_rightwards_arrows: 충돌 해결

* :bug: postSignup 함수 추가

* :bug: postSignin 내보내는 방식 수정

* :wrench: lint 수정

* :sparkles: oauth api 생성

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

* :sparkles: 카카오톡 리디렉트 uri 설정

* :sparkles: useKakaoLogin mutation hook 생성

* :zap: 네이버 구글 카카오 간편 로그인 링크 설정

* :recycle: 에러처리 로직 수정

* FE-51 :twisted_rightwards_arrows: 공용 API 머지 요청 (#92)

* FE-52  ✨에피그램 목록조회 API (#34)

* FE-52 feat: api schema 작성

* FE-52 ✨feat: getEpigrams api 작성

* FE-522 ✨fix:  default export로 변경

* FE-52 ✨test: 테스트 코드 작성

* FE-52 ✨feat: BaseUrl, TeamID 상수 추가 및 axios baseTRL 수정

* FE-52 ✨fix: schema 및 apis 파일 수정

* FE-52 ✨test:  테스트 코드 삭제

* FE-52 ✨fix: .env파일 생성 및 BaseURL 수정

* FE-52 ✨fix: limit 타입  수정(optional 삭제)

* FE-52 ✨text: 테 테스트코드 삭제

* FE-52 ✨fix: api GET요청 주소 수정('epigrams' -> '/epigrams')

* FE-53 :sparkles: 감정이모티콘 저장 스키마 정의

* FE-53 :sparkles: 오늘의 감정 저장 api 생성

* FE-53 :sparkles: getMe 함수를 사용해 로그인 상태 확인 기능 구현

* FE-53 :sparkles: 감정 한영 변환 함수

* FE-53 :sparkles: 감정 저장 후 토스트 알림 표시

* FE-53 :sparkles: 오늘의 감정 조회 api 생성

* FE-53 :hammer: 감정 한영 변환 함수 추가

+) post, get 함수 내부로 한영 변환 함수 이동

* FE-53 :sparkles: 오늘의 감정 스키마 추가 정의

* FE-53 :sparkles: 오늘의 감정 조회 함수 적용

* FE-53 :truck: 오늘의 감정 type 이름 변경

* FE-53 :sparkles: useMutation 훅 사용

* FE-53 :memo: EmotionSelector 주석 추가

* FE-53 :fire: api 함수 에러 처리 부분 제거

* FE-53 :hammer: useQuery를 사용해 오늘의 감정 조회

데이터를 조회할 때는 useQuery를 사용하는거라 함

* FE-56 :sparkles: 댓글 수정 API (#84)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-56 :sparkles: 댓글 수정 API

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-57 :sparkles: 댓글 삭제 API (#88)

* FE-51 :twisted_rightwards_arrows: 공용 API 최신화 (#93)

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-51 :twisted_rightwards_arrows: 공용 API 최신화 (충돌수정) (#98)

---------

Co-authored-by: imsoohyeok <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>

* FE-27 :hammer: 충돌오류 수정

* FE-27 :hammer: 충돌내역 수정

* FE-27 :twisted_rightwards_arrows: 충돌오류 수정

---------

Co-authored-by: MOON <[email protected]>
Co-authored-by: MOON <[email protected]>
Co-authored-by: Jiseok Woo <[email protected]>
Co-authored-by: 우지석 <[email protected]>
Co-authored-by: imsoohyeok <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: NEWJIN <[email protected]>

* �FE-27 :twisted_rightwards_arrows: 마이페이지 최신화 (#102)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :lipstick: 회원가입 페이지 레이아웃 추가

* :lipstick: 간편 로그인 로고 추가

* :lipstick: 회원가입 ui 추가

* :sparkles: 회원가입 스키마 정의

* :heavy_plus_sign: 회원가입 페이지에 스키마 적용

* :lipstick: 에러 메시지 뜰 때 라벨, 인풋도 같은 에러 색깔 추가

* :memo: 유효성 검사를 통한 버튼의 비활성화 처리

* :memo: 유효성 검사에 따른 인풋 테두리 색상 처리

* :fire: AuthLayout 삭제

* :art: 회원가입 페이지 브라우저 확대시 ui 깨짐 수정

* :truck: 정규표현식 네이밍 변경

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :sparkles: 회원가입 응답 데이터 스키마 정의

* :sparkles: 회원가입 api 생성

* :sparkles: useRegisterMutation hook 생성

* :zap: 회원가입 폼에 mutaion hook 적용

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :zap: isAxiosError로 변경

* FE-29 :twisted_rightwards_arrows: 로그인 페이지 머지 요청 (#39)

* :heavy_plus_sign: 이미지 파일 추가

* :lipstick: 로그인 페이지 레이아웃 생성

* :lipstick: 로그인 페이지 UI 생성 및 반응형 디자인 구현

* FE-60 :sparkles: react hook form, zod 추가

* FE-60 :lipstick: 로그인 폼 스타일 수정

- 텍스트 인풋 테두리
- 로그인 버튼

* FE-60 :recycle: 로그인 스키마 분리

* :sparkles: 로그인 응답 데이터 스키마 정의

* :sparkles: 로그인 api 생성

* :sparkles: 요청과 응답에 관한 인터셉터 추가

* :sparkles: useSignin mutation hook 생성

* :zap: useSignin hook 로그인 폼에 적용

* :fire: AuthLayout 삭제

* :art: onSubmit 함수 인라인으로 정의

* :recycle: 응답 인터셉터의 에러 처리 및 토큰 갱신 로직 개선

* :recycle: postSignin api 에러처리 로직 삭제

* :fire: useSignin hook 삭제

* :truck: useSigninMutation hook으로 이름 변경 및 파일 이동

* :sparkles: Toaster 컴포넌트 추가

* :sparkles: toast로 에러메시지 띄우기

* :twisted_rightwards_arrows: 충돌 해결

* :bug: postSignup 함수 추가

* :bug: postSignin 내보내는 방식 수정

* :wrench: lint 수정

* :sparkles: oauth api 생성

* FE-71 🔀 에피그램 작성 페이지 (#71)

* FE-64💄 글작성 페이지 UI추가 (#44)

* FE-72 ✨ 에피그램 등록 api연동 (#52)

* FE-72✨ 글작성페이지 스키마 추가

* FE-72✨ form태그 Form컴포넌트로 변경

* FE-72✨ 태그 저장기능 추가

* FE-72✨ 에피그램 등록 api연동

* FE-72✨ 에피그램 등록시 해당 에피그램 페이지로 이동 기능 추가

* FE-72✨ 등록 중일때의 로직추가

* FE-72✨  toast-> alert-dailog로 변경

* FE-72📝 TODO주석 추가

---------

Co-authored-by: 우지석 <[email protected]>

* FE-73✨ 유효성검사 추가 (#66)

* FE-73♻️  Tag관리 함수 훅으로 분리

* FE-73✨  RadioGroup 로직 수정

* FE-73✨ 유효성검사 추가

* FE-73♻️  저자 본인 선택시의  로직 변경

* FE-73✨ 중복 태그 검사 로직 추가

* FE-73♻️ 출처 유효성(optional)검사 수정

* FE-73✨  필수항목 입력했을때 버튼 활성화

* FE-73🐛 태그를 입력했다가 지웠을때 버튼 활성화되있는 버그 수정

* FE-73🐛 useEffect 의존성배열 lint problem 해결

* FE-73🐛 url유효성검사 에러 메세지 안뜨는 버그 수정

---------

Co-authored-by: 우지석 <[email protected]>

* FE-71♻️ epic브랜치 코드리뷰 반영 (#76)

* FE-71♻️  token,interceptor 로직 수정

* FE-71♻️  AddEpigram 코드리뷰 반영

* FE-71🔥 테스트용 상세페이지 삭제

* FE-71♻️  onKeyDown -> onKeyUp 수정

---------

Co-authored-by: 우지석 <[email protected]>

* :sparkles: 카카오톡 리디렉트 uri 설정

* :sparkles: useKakaoLogin mutation hook 생성

* :zap: 네이버 구글 카카오 간편 로그인 링크 설정

* :recycle: 에러처리 로직 수정

* FE-51 :twisted_rightwards_arrows: 공용 API 머지 요청 (#92)

* FE-52  ✨에피그램 목록조회 API (#34)

* FE-52 feat: api schema 작성

* FE-52 ✨feat: getEpigrams api 작성

* FE-522 ✨fix:  default export로 변경…
  • Loading branch information
12 people authored Aug 9, 2024
1 parent 57e604c commit cc7c633
Show file tree
Hide file tree
Showing 25 changed files with 3,014 additions and 166 deletions.
2,824 changes: 2,808 additions & 16 deletions package-lock.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
"zod": "^3.23.8"
},
"devDependencies": {
"@svgr/webpack": "^8.1.0",
"@tanstack/eslint-plugin-query": "^5.50.0",
"@types/node": "^20.14.10",
"@types/qs": "^6.9.15",
Expand Down
11 changes: 0 additions & 11 deletions src/apis/oauth.ts

This file was deleted.

11 changes: 11 additions & 0 deletions src/apis/postKakaoOauth.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import httpClient from '.';

const postKakaoOauth = async (code: string) => {
const response = await httpClient.post('/auth/signIn/KAKAO', {
redirectUri: process.env.NEXT_PUBLIC_REDIRECT_URI,
token: code,
});
return response.data;
};

export default postKakaoOauth;
2 changes: 1 addition & 1 deletion src/components/Header/NewHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export default function NewHeader() {

return (
<div className='w-full px-6 py-4 bg-white border-b border-line-100 flex items-center gap-2.5 lg:px-[120px] md:px-[72px] md:h-[60px] lg:h-20 md:py-[19px] lg:py-[26px]'>
<div className='flex justify-between items-center w-full md:w-[744px] lg:w-[1920px]'>
<div className='max-w-screen-xl mx-auto flex justify-between items-center w-full md:w-[744px] lg:w-[1920px]'>
<div className='flex items-center gap-3 md:gap-6 lg:gap-9'>
<div className='flex items-center gap-3'>
<button type='button' onClick={() => setIsSidebarOpen(!isSidebarOpen)} className='md:hidden'>
Expand Down
5 changes: 3 additions & 2 deletions src/components/epigram/Comment/CommentItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import getCustomRelativeTime from '@/lib/dateUtils';
import { Button } from '@/components/ui/button';
import useDeleteCommentMutation from '@/hooks/useDeleteCommentHook';
import UserProfileModal from '@/components/Card/UserProfileModal';
import { sampleImage } from '@/user/utill/constants';
import DeleteAlertModal from '../DeleteAlertModal';
import CommentTextarea from './CommentTextarea';

Expand Down Expand Up @@ -46,7 +47,7 @@ function CommentItem({ comment, status, onEditComment, isEditing, epigramId }: C
<UserProfileModal username={comment.writer.nickname} profileImage={comment.writer.image || '/ProfileTestImage.jpg'}>
<div className='w-12 h-12 relative cursor-pointer rounded-full'>
<div>
<Image src={comment.writer.image || '/ProfileTestImage.jpg'} alt='프로필 이미지' layout='fill' objectFit='cover' className='rounded-full' />
<Image src={comment.writer.image || sampleImage} alt='프로필 이미지' layout='fill' objectFit='cover' className='rounded-full' />
</div>
</div>
</UserProfileModal>
Expand Down Expand Up @@ -79,7 +80,7 @@ function CommentItem({ comment, status, onEditComment, isEditing, epigramId }: C
)}
</div>
<div
className={`w-full text-zinc-800 font-normal font-pretendard whitespace-pre ${textSizeStyles.sm.content} ${textSizeStyles.md.content} ${textSizeStyles.lg.content} ${contentWidthStyles.sm} ${contentWidthStyles.md} ${contentWidthStyles.lg}`}
className={`w-full text-zinc-800 font-normal font-pretendard ${textSizeStyles.sm.content} ${textSizeStyles.md.content} ${textSizeStyles.lg.content} ${contentWidthStyles.sm} ${contentWidthStyles.md} ${contentWidthStyles.lg}`}
>
{comment.content}
</div>
Expand Down
21 changes: 20 additions & 1 deletion src/components/epigram/EditEpigram.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ function EditEpigram({ epigram }: EditEpigramProps) {
const router = useRouter();
const [isAlertOpen, setIsAlertOpen] = useState(false);
const [alertContent, setAlertContent] = useState({ title: '', description: '' });
const [textCount, setTextCount] = useState(epigram.content.length);

const form = useForm<AddEpigramFormType>({
resolver: zodResolver(AddEpigramFormSchema),
Expand Down Expand Up @@ -53,6 +54,15 @@ function EditEpigram({ epigram }: EditEpigramProps) {
}
}, [epigram, form]);

useEffect(() => {
const subscription = form.watch((value, { name }) => {
if (name === 'content') {
setTextCount(value.content?.length || 0);
}
});
return () => subscription.unsubscribe();
}, [form]);

const { currentTag, setCurrentTag, handleAddTag, handleRemoveTag } = useTagManagement({
setValue: form.setValue,
getValues: form.getValues,
Expand Down Expand Up @@ -134,7 +144,16 @@ function EditEpigram({ epigram }: EditEpigramProps) {
내용
</FormLabel>
<FormControl>
<Textarea className='h-[132px] lg:h-[148px] lg:text-xl border-blue-300 border-2 rounded-xl resize-none p-2' id='content' {...field} placeholder='에피그램 내용을 입력하세요.' />
<div className='relative'>
<Textarea
className='h-[132px] lg:h-[148px] lg:text-xl border-blue-300 border-2 rounded-xl resize-none p-2'
id='content'
placeholder='500자 이내로 입력해주세요.'
{...field}
maxLength={500}
/>
<div className={`absolute bottom-2 right-6 text-sm ${textCount === 500 ? 'text-state-error' : 'text-gray-500'}`}>{textCount}/500</div>
</div>
</FormControl>
<FormMessage className='text-state-error text-right' />
</FormItem>
Expand Down
2 changes: 1 addition & 1 deletion src/components/epigram/MoreOptionMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ function MoreOptionsMenu({ epigram }: MoreOptionsMenuProps) {
title: '삭제 완료',
description: `에피그램 ${data.id}가 성공적으로 삭제되었습니다.`,
});
router.push('/');
router.push('/epigrams');
},
onError: () => {
toast({
Expand Down
2 changes: 0 additions & 2 deletions src/components/mypage/Calendar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ export default function Calendar({ currentDate, setCurrentDate, monthlyEmotionLo
))}
</div>
{weekCalendarList.map((week, weekIndex) => (
// TODO: index 값 Lint error. 임시로 주석 사용. 추후 수정 예정
// eslint-disable-next-line react/no-array-index-key
<div key={weekIndex} className='flex'>
{week.map((day, dayIndex) => {
Expand All @@ -82,7 +81,6 @@ export default function Calendar({ currentDate, setCurrentDate, monthlyEmotionLo

return (
<div
// TODO: index 값 Lint error. 임시로 주석 사용. 추후 수정 예정
// eslint-disable-next-line react/no-array-index-key
key={dayIndex}
className={`w-[91px] h-[91px] font-semibold flex items-center justify-center ${isToday ? 'border-4 border-red-400 text-red-400 rounded-[3px]' : 'border-b border-gray-100 text-stone-300'}`}
Expand Down
1 change: 0 additions & 1 deletion src/components/mypage/Chart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ export default function Chart({ monthlyEmotionLogs }: ChartProps) {
fill='#8884d8'
>
{chartData.map((emotion, index) => (
// TODO: index 값 Lint error. 임시로 주석 사용. 추후 수정 예정
// eslint-disable-next-line react/no-array-index-key
<Cell key={`cell-${index}`} fill={COLORS[emotion.name]} />
))}
Expand Down
1 change: 0 additions & 1 deletion src/components/mypage/Profile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ export default function Profile({ image, nickname }: UserProfileProps) {
setIsModalOpen(false);
};

// TODO: 여러개의 샘플 이미지 랜덤하게 뜨도록 추가 할 예정
const profileImage = image || sampleImage;

return (
Expand Down
2 changes: 0 additions & 2 deletions src/components/search/SearchBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ import React, { useState, useEffect } from 'react';
import Image from 'next/image';
import SEARCH_ICON from '../../../public/md.svg';

// TODO react-hook-form 사용

interface SearchBarProps {
onSearch: (search: string) => void;
currentSearch: string;
Expand Down
2 changes: 0 additions & 2 deletions src/components/search/SearchResults.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ import React, { useMemo } from 'react';
import Link from 'next/link';
import { GetEpigramsResponseType } from '@/schema/epigrams';

// TODO highlightedSections의 key 설정 부분에 더 나은 방법이 생각나면 변경

interface SearchResultsProps {
results: GetEpigramsResponseType | null;
query: string;
Expand Down
2 changes: 1 addition & 1 deletion src/hooks/useEpigramCommentsQueryHook.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { InfiniteData, useInfiniteQuery } from '@tanstack/react-query';
import { CommentResponseType } from '@/schema/comment';
import queries from '@/apis/queries';
import { CommentResponseType } from '@/schema/comment';

const useEpigramCommentsQuery = (epigramId: number) =>
useInfiniteQuery<CommentResponseType, Error, InfiniteData<CommentResponseType>>({
Expand Down
4 changes: 2 additions & 2 deletions src/hooks/useKakaoLogin.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import postOauth from '@/apis/oauth';
import postKakaoOauth from '@/apis/postKakaoOauth';
import { toast } from '@/components/ui/use-toast';
import { useMutation } from '@tanstack/react-query';
import { isAxiosError } from 'axios';
Expand All @@ -9,7 +9,7 @@ const useKakaoLogin = () => {

return useMutation({
mutationFn: async (code: string) => {
const result = await postOauth(code);
const result = await postKakaoOauth(code);
localStorage.setItem('accessToken', result.accessToken);
localStorage.setItem('refreshToken', result.refreshToken);
return result;
Expand Down
104 changes: 104 additions & 0 deletions src/hooks/useMyContentState.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
// useMyContentState.ts
import { useState, useEffect } from 'react';
import useGetEpigrams from '@/hooks/useGetEpigrams';
import useCommentsHook from '@/hooks/useCommentsHook';
import useGetMyContentHook from '@/hooks/useGetMyContentHook';
import { EpigramsResponse } from '@/types/epigram.types';
import { CommentResponseType } from '@/schema/comment';
import UserInfo from '@/types/user';

export default function useMyContentState(user: UserInfo) {
const limit = 3;
const [isLoadingMore, setIsLoadingMore] = useState(false);
const [selectedTab, setSelectedTab] = useState<'epigrams' | 'comments'>('epigrams');

const [epigramCursor, setEpigramCursor] = useState<number>(0);
const [commentCursor, setCommentCursor] = useState<number>(0);
const [epigrams, setEpigrams] = useState<EpigramsResponse>({ totalCount: 0, nextCursor: null, list: [] });
const [comments, setComments] = useState<CommentResponseType>({ totalCount: 0, nextCursor: null, list: [] });

const { data: countData } = useGetMyContentHook({ id: user.id });
const epigramsRequest = { limit, cursor: epigramCursor, writerId: user.id };
const commentsRequest = { limit, cursor: commentCursor, id: user.id };

const { data: epigramsData, isLoading: isEpigramsLoading, error: epigramsError } = useGetEpigrams(epigramsRequest);
const { data: commentData, isLoading: isCommentsLoading, error: commentsError, refetch: refetchComments } = useCommentsHook(commentsRequest);

useEffect(() => {
if (countData) {
setEpigrams((prev) => ({
...prev,
totalCount: countData.epigramCount,
}));
setComments((prev) => ({
...prev,
totalCount: countData.commentCount,
}));
}
}, [countData]);

useEffect(() => {
if (selectedTab === 'epigrams' && epigramsData) {
setEpigrams((prev) => ({
totalCount: epigramsData.totalCount,
nextCursor: epigramsData.nextCursor,
list: [...prev.list.filter((epigram) => !epigramsData.list.some((newEpigram) => newEpigram.id === epigram.id)), ...epigramsData.list],
}));
setIsLoadingMore(false);
}
}, [epigramsData, selectedTab]);

useEffect(() => {
if (selectedTab === 'comments' && commentData) {
setComments((prev) => ({
totalCount: commentData.totalCount,
nextCursor: commentData.nextCursor,
list: [...prev.list.filter((comment) => !commentData.list.some((newComment) => newComment.id === comment.id)), ...commentData.list],
}));
setIsLoadingMore(false);
}
}, [commentData, selectedTab]);

useEffect(() => {
if (selectedTab === 'comments') {
refetchComments();
}
}, [commentCursor, selectedTab]);

const handleMoreLoad = () => {
if (selectedTab === 'epigrams' && epigrams.nextCursor) {
setEpigramCursor(epigrams.nextCursor);
setIsLoadingMore(true);
} else if (selectedTab === 'comments' && comments.nextCursor) {
setCommentCursor(comments.nextCursor);
setIsLoadingMore(true);
}
};

const handleTabClick = (tab: 'epigrams' | 'comments') => {
setSelectedTab(tab);
setIsLoadingMore(false);
if (tab === 'epigrams') {
setEpigrams({ totalCount: 0, nextCursor: null, list: [] });
setEpigramCursor(0);
} else {
setComments({ totalCount: 0, nextCursor: null, list: [] });
setCommentCursor(0);
}
};

return {
isLoadingMore,
selectedTab,
epigrams,
comments,
isEpigramsLoading,
isCommentsLoading,
epigramsError,
commentsError,
handleMoreLoad,
handleTabClick,
setComments,
refetchComments,
};
}
3 changes: 1 addition & 2 deletions src/hooks/useRegisterMutation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,9 @@ const useRegisterMutation = (onRegisterError: (field: 'email' | 'nickname') => v
onSuccess: (data) => {
localStorage.setItem('accessToken', data.accessToken);
localStorage.setItem('refreshToken', data.refreshToken);
router.push('/auth/SignIn');
router.push('/epigrams');
toast({
title: '회원가입 성공!',
description: '로그인 후 이용해주세요.',
className: 'bg-illust-green text-white font-semibold',
});
},
Expand Down
1 change: 1 addition & 0 deletions src/hooks/useTagManagementHook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ const useTagManagement = ({
const currentTags = getValues('tags') || [];

if (currentTags.length >= 3) {
setError('tags', { type: 'manual', message: '태그는 3개까지 저장할 수 있습니다.' });
return;
}
if (currentTags.includes(currentTag)) {
Expand Down
24 changes: 21 additions & 3 deletions src/pageLayout/Epigram/AddEpigram.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ function AddEpigram() {
const [isAlertOpen, setIsAlertOpen] = useState(false);
const [alertContent, setAlertContent] = useState({ title: '', description: '' });
const [isFormValid, setIsFormValid] = useState(false);

const [textCount, setTextCount] = useState(0);
const form = useForm<AddEpigramFormType>({
resolver: zodResolver(AddEpigramFormSchema),
defaultValues: {
Expand Down Expand Up @@ -51,6 +51,15 @@ function AddEpigram() {
return () => subscription.unsubscribe();
}, [form, watchForm]);

useEffect(() => {
const subscription = form.watch((value, { name }) => {
if (name === 'content') {
setTextCount(value.content?.length || 0);
}
});
return () => subscription.unsubscribe();
}, [form]);

const { currentTag, setCurrentTag, handleAddTag, handleRemoveTag } = useTagManagement({
setValue: form.setValue,
getValues: form.getValues,
Expand Down Expand Up @@ -120,7 +129,16 @@ function AddEpigram() {
<span className='text-state-error'>*</span>
</FormLabel>
<FormControl>
<Textarea className='h-[132px] lg:h-[148px] lg:text-xl border-blue-300 border-2 rounded-xl resize-none p-2' id='content' placeholder='500자 이내로 입력해주세요.' {...field} />
<div className='relative'>
<Textarea
className='h-[132px] lg:h-[148px] lg:text-xl border-blue-300 border-2 rounded-xl resize-none p-2'
id='content'
placeholder='500자 이내로 입력해주세요.'
{...field}
maxLength={500}
/>
<div className={`absolute bottom-2 right-6 text-sm ${textCount === 500 ? 'text-state-error' : 'text-gray-500'}`}>{textCount}/500</div>
</div>
</FormControl>
<FormMessage className='text-state-error text-right' />
</FormItem>
Expand Down Expand Up @@ -232,7 +250,7 @@ function AddEpigram() {
type='button'
className='absolute right-2 top-1/2 transform -translate-y-1/2 h-8 px-3 bg-blue-500 text-white rounded'
onClick={handleAddTag}
disabled={field.value.length >= 3 || currentTag.length === 0}
disabled={currentTag.length === 0}
>
저장
</Button>
Expand Down
9 changes: 3 additions & 6 deletions src/pageLayout/Epigram/EpigramComment.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import CommentTextarea from '@/components/epigram/Comment/CommentTextarea';
import { paddingStyles } from '@/styles/CommentCardStyles';
import { EpigramCommentProps } from '@/types/epigram.types';
import Image from 'next/image';
import { sampleImage } from '@/user/utill/constants';

function EpigramComment({ epigramId, currentUserId, userImage }: EpigramCommentProps) {
// NOTE: 수정상태를 수정중인 댓글의 ID로 변경
Expand All @@ -16,12 +17,8 @@ function EpigramComment({ epigramId, currentUserId, userImage }: EpigramCommentP
<h3 className='text-base lg:text-xl font-semibold'>댓글 작성</h3>
<div className={`flex flex-col gap-4 lg:gap-6 ${paddingStyles.sm} ${paddingStyles.md} ${paddingStyles.lg}`}>
<div className='flex gap-4 lg:gap-6'>
<div className='w-12 h-12'>
{userImage ? (
<Image src={userImage} alt='사용자 프로필 사진' width={48} height={48} className='rounded-full' />
) : (
<Image src='/profile.svg' alt='기본 프로필 사진' width={48} height={48} />
)}
<div className='min-w-12 h-12 bg-white rounded-full relative'>
<Image src={userImage || sampleImage} alt={userImage ? '사용자 프로필 사진' : '기본 프로필 사진'} layout='fill' objectFit='cover' className='rounded-full' />
</div>
{/* NOTE: editingCommentId을 null로 바꿈으로써 수정중인 상태가 아니라는걸 알림 */}
<CommentTextarea epigramId={epigramId} onEditComplete={() => setEditingCommentId(null)} />
Expand Down
Loading

0 comments on commit cc7c633

Please sign in to comment.