Skip to content

Commit

Permalink
FE-29 🔀 브랜치 최신화 (#160)
Browse files Browse the repository at this point in the history
* FE-46 ✨공용 컴포넌트 헤더 뒤로가기 함수 추가 (#135) (#136)

* :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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



* :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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



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

---------





* 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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



---------





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

---------








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

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

* .nvmrc 버전 수정

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

* font-family 추가

* tailwind common color 추가

* color 명 변경

* lang 수정

---------



* :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 오류 해결 중

---------





* 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 수정

---------



* :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 오류 해결 중

---------







* 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 수정

---------



* :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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



* :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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



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

---------





* 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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



---------





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

---------








* .http 파일 삭제

---------










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

* .nvmrc 버전 수정

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

* font-family 추가

* tailwind common color 추가

* color 명 변경

* lang 수정

---------



* :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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



* :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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



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

---------





* 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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



---------





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

---------








* .http 파일 삭제

* merge main

---------










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

* .nvmrc 버전 수정

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

* font-family 추가

* tailwind common color 추가

* color 명 변경

* lang 수정

---------



* :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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



* :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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



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

---------





* 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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



---------





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

---------








---------










---------










* 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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



---------





* 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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



---------





* 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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



---------





* 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주석 추가

---------



* 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유효성검사 에러 메세지 안뜨는 버그 수정

---------



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

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

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

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

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

---------



* :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컴포넌트…

Co-authored-by: MOON <[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: JeonYumin <[email protected]>
Co-authored-by: NEWJIN <[email protected]>
Co-authored-by: 전유민 <[email protected]>
Co-authored-by: kich555 <[email protected]>
Co-authored-by: morrison <[email protected]>

* FE-29 :twisted_rightwards_arrows: 로그인, 간편 로그인 수정 사항 반영 요청 (#140)

* :sparkles: 네이버 post api 추가

* :sparkles: 구글 post api 추가

* :wrench: 라우팅 수정

* :sparkles: 네이버 로그인 훅 추가 및 라우팅, 에러 핸들링 구현

* :sparkles: 구글 로그인 훅 추가 및 라우팅, 에러 핸들링 구현

* :sparkles: 네이버 간편 로그인 리다이렉트 설정

* :sparkles: 구글 간편 로그인 리다이렉트 설정

* :wrench: 환경 변수 적용: 네이버, 구글, 카카오 로그인 URL 업데이트

* :wrench: 가입하기 경로 수정

* :wrench: 로그인 훅 라우팅 수정

* :wrench: 로그인 훅 에러처리 로직 수정

* FE-27 :twisted_rightwards_arrows: 마이페이지 main 머지 요청 (#147)

* 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 <115…
  • Loading branch information
10 people authored Aug 2, 2024
1 parent 48c3297 commit b5a041e
Show file tree
Hide file tree
Showing 24 changed files with 325 additions and 160 deletions.
8 changes: 8 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion src/apis/getRecentComments.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import type { GetRecentCommentsResponseType } from '@/schema/recentcomment';
import httpClient from './index';

const getRecentComments = async (limit: number): Promise<GetRecentCommentsResponseType> => {
const getRecentComments = async (cursor: number, limit: number): Promise<GetRecentCommentsResponseType> => {
const response = await httpClient.get('/comments', {
params: {
cursor,
limit,
},
});
Expand Down
3 changes: 2 additions & 1 deletion src/apis/getRecentEpigrams.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import type { GetRecentEpigramsResponseType } from '@/schema/recentEpigram';
import httpClient from './index';

const getRecentEpigrams = async (limit: number): Promise<GetRecentEpigramsResponseType> => {
const getRecentEpigrams = async (cursor: number | null, limit: number): Promise<GetRecentEpigramsResponseType> => {
const response = await httpClient.get('/epigrams', {
params: {
cursor,
limit,
},
});
Expand Down
2 changes: 1 addition & 1 deletion src/components/Card/CommentCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ function CommentCard({ writer, content, createdAt, status }: CommentCardProps) {
<div className='justify-start items-start gap-4 inline-flex'>
<div className='w-12 h-12 relative'>
<div className='w-12 h-12 bg-zinc-300 rounded-full overflow-hidden flex items-center justify-center'>
<Image src='/ProfileTestImage.jpg' alt='프로필 이미지' layout='fill' objectFit='cover' className='rounded-full' />
<Image src={writer.image || '/ProfileTestImage.jpg'} alt={`${writer.nickname}프로필 이미지`} layout='fill' objectFit='cover' className='rounded-full' />{' '}
</div>
</div>
<div className={`flex-col justify-start items-start ${gapStyles.sm} ${gapStyles.md} ${gapStyles.lg} inline-flex ${contentWidthStyles.sm} ${contentWidthStyles.md} ${contentWidthStyles.lg}`}>
Expand Down
23 changes: 20 additions & 3 deletions src/components/Emotion/EmotionSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@ import EmotionSaveToast from './EmotionSaveToast';
* EmotionSelector 컴포넌트는 여러 개의 EmotionIconCard를 관리하고
* 사용자의 오늘의 감정을 선택하고 저장하고 출력합니다.
*/
function EmotionSelector() {

interface EmotionSelectorProps {
onEmotionSaved: () => void; // Callback for when the emotion is saved
}

function EmotionSelector({ onEmotionSaved }: EmotionSelectorProps) {
// 반응형 디자인을 위한 미디어 쿼리 훅
const isTablet = useMediaQuery('(min-width: 768px) and (max-width: 1024px)');
const isMobile = useMediaQuery('(max-width: 767px)');
Expand All @@ -26,6 +31,8 @@ function EmotionSelector() {

// 현재 선택된 감정을 관리하는 useState 훅
const [selectedEmotion, setSelectedEmotion] = useState<EmotionType | null>(null);
const [showToast, setShowToast] = useState<boolean>(false); // State for controlling the toast

// 오늘의 감정을 조회하기 위한 훅
const { data: emotion, error: getError, isLoading: isGetLoading } = useGetEmotion();
// 감정을 저장하기 위한 훅
Expand All @@ -49,7 +56,9 @@ function EmotionSelector() {
* 감정을 서버에 저장합니다.
* @param iconType - 클릭된 감정의 타입
*/

const handleCardClick = async (iconType: EmotionType) => {
let emotionChanged = false;
setStates((prevStates) => {
const newStates = { ...prevStates };

Expand All @@ -63,6 +72,7 @@ function EmotionSelector() {
Object.keys(newStates).forEach((key) => {
newStates[key as EmotionType] = key === iconType ? 'Clicked' : 'Unclicked';
});
emotionChanged = true;
}

return newStates;
Expand All @@ -71,7 +81,14 @@ function EmotionSelector() {
// 오늘의 감정 저장
postEmotionMutation.mutate(iconType, {
onSuccess: (_, clickedIconType) => {
setSelectedEmotion(clickedIconType);
if (emotionChanged) {
setSelectedEmotion(clickedIconType);
setShowToast(true);
setTimeout(() => {
setShowToast(false);
onEmotionSaved();
}, 1000);
}
},
onError: (error: unknown) => {
// eslint-disable-next-line
Expand Down Expand Up @@ -103,7 +120,7 @@ function EmotionSelector() {
))}
</div>
{/* 감정이 선택되었을 때 토스트 메시지 표시 */}
{selectedEmotion && <EmotionSaveToast iconType={selectedEmotion} />}
{showToast && selectedEmotion && <EmotionSaveToast iconType={selectedEmotion} />}
</>
);
}
Expand Down
12 changes: 9 additions & 3 deletions src/components/Header/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ import SHARE_ICON from '../../../public/icon/share-icon.svg';
// NOTE isButton 일 경우 textInButton의 값을 무조건 지정해줘야 합니다.
// NOTE SHARE_ICON 추가 시 토스트 기능도 사용하려면 해당 컴포넌트 아래 <Toaster /> 를 추가해주세요.

// TODO 새로 바뀐 피그마 시안으로 바꿀지 추후 결정

export interface HeaderProps {
icon: 'back' | 'search' | '';
routerPage: string;
isLogo: boolean;
insteadOfLogo: string;
isProfileIcon: boolean;
Expand All @@ -31,10 +32,15 @@ export interface HeaderProps {
onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;
}

function Header({ isLogo, icon, insteadOfLogo, isButton, isProfileIcon, isShareIcon, textInButton, routerPage, disabled, onClick }: HeaderProps) {
function Header({ isLogo, icon, insteadOfLogo, isButton, isProfileIcon, isShareIcon, textInButton, disabled, onClick }: HeaderProps) {
const router = useRouter();
const { toast } = useToast();

// 뒤로가기
const handleBack = () => {
router.back();
};

// 페이지 이동 함수
const handleNavigateTo = (path: string) => {
router.push(path);
Expand Down Expand Up @@ -65,7 +71,7 @@ function Header({ isLogo, icon, insteadOfLogo, isButton, isProfileIcon, isShareI
<div className='container flex justify-between items-center'>
<div className='flex items-center space-x-4'>
{icon === 'back' && (
<button className='w-5 h-5 lg:w-9 lg:h-9' type='button' onClick={() => handleNavigateTo(routerPage)} aria-label='뒤로가기 버튼'>
<button className='w-5 h-5 lg:w-9 lg:h-9' type='button' onClick={handleBack} aria-label='뒤로가기 버튼'>
<Image src={ARROW_LEFT_ICON} alt='뒤로가기 버튼 이미지' />
</button>
)}
Expand Down
13 changes: 1 addition & 12 deletions src/components/epigram/EditEpigram.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -121,18 +121,7 @@ function EditEpigram({ epigram }: EditEpigramProps) {

return (
<>
<Header
icon='back'
routerPage={`/epigrams/${epigram.id}`}
isLogo
insteadOfLogo='에피그램 수정'
isProfileIcon
isShareIcon={false}
isButton={false}
textInButton=''
disabled={false}
onClick={() => {}}
/>
<Header icon='back' isLogo insteadOfLogo='에피그램 수정' isProfileIcon isShareIcon={false} isButton={false} textInButton='' disabled={false} onClick={() => {}} />
<div className='border-t-2 w-full flex flex-col justify-center items-center'>
<Form {...form}>
<form onSubmit={form.handleSubmit(handleSubmit)} className='flex flex-col justify-center item-center gap-6 lg:gap-8 w-[312px] md:w-[384px] lg:w-[640px] py-6'>
Expand Down
42 changes: 30 additions & 12 deletions src/components/main/RecentComment.tsx
Original file line number Diff line number Diff line change
@@ -1,25 +1,38 @@
import React, { useState } from 'react';
import React, { useState, useEffect } from 'react';
import useGetRecentComments from '@/hooks/useGetRecentComments';
import CommentCard from '@/components/Card/CommentCard';
import type { CommentType } from '@/schema/recentcomment';
import Image from 'next/image';
import LoadMoreButton from './LoadMoreButton';
import spinner from '../../../public/spinner.svg';

function RecentComments() {
const [comments, setComments] = useState<CommentType[]>([]);
const [limit, setLimit] = useState(3);
const { data, error, isLoading } = useGetRecentComments(limit);
const [cursor, setCursor] = useState<number>(0);
const [limit, setLimit] = useState<number>(3);
const [isLoadingMore, setIsLoadingMore] = useState<boolean>(false);
const [shouldFetch, setShouldFetch] = useState<boolean>(true);

React.useEffect(() => {
if (data?.list) {
setComments(data.list);
const { data, error, isLoading } = useGetRecentComments({ cursor, limit, enabled: shouldFetch });

useEffect(() => {
if (data) {
setComments((prevComments) => [...prevComments, ...data.list]);
if (data.list.length > 0) {
setCursor(data.list[data.list.length - 1].id);
}
setIsLoadingMore(false);
setShouldFetch(false);
}
}, [data]);

const handleLoadMore = () => {
setLimit((prevLimit) => prevLimit + 4);
const loadMore = () => {
setIsLoadingMore(true);
setLimit(4);
setShouldFetch(true);
};

if (isLoading) return <p>로딩 중...</p>;
if (isLoading && comments.length === 0) return <p>로딩 중...</p>;
if (error) return <p>{error.message}</p>;

return (
Expand All @@ -29,9 +42,14 @@ function RecentComments() {
{comments.map((comment) => (
<CommentCard key={comment.id} writer={comment.writer} content={comment.content} createdAt={new Date(comment.createdAt)} status='view' />
))}
{data?.totalCount && comments.length < data.totalCount && (
<div className='mt-10 flex justify-center w-full'>
<LoadMoreButton onClick={handleLoadMore} />
{isLoadingMore && (
<div className='w-full flex items-center justify-center lg:mt-[70px] md:mt-[50px]'>
<Image src={spinner} alt='로딩중' width={50} height={50} />
</div>
)}
{!isLoadingMore && data?.nextCursor !== null && (
<div className='mt-10 w-full flex justify-center'>
<LoadMoreButton onClick={loadMore} />
</div>
)}
</div>
Expand Down
39 changes: 32 additions & 7 deletions src/components/main/RecentEpigram.tsx
Original file line number Diff line number Diff line change
@@ -1,31 +1,51 @@
import React, { useState } from 'react';
import React, { useState, useEffect } from 'react';
import { useRouter } from 'next/router';
import useGetRecentEpigrams from '@/hooks/useGetRecentEpigrams';
import EpigramCard from '@/components/Card/EpigramCard';
import { RecentEpigramType } from '@/schema/recentEpigram';
import Image from 'next/image';
import LoadMoreButton from './LoadMoreButton';
import spinner from '../../../public/spinner.svg';

function RecentEpigrams() {
const router = useRouter();
const [limit, setLimit] = useState(3);
const { data, error, isLoading } = useGetRecentEpigrams(limit);
const [epigrams, setEpigrams] = useState<RecentEpigramType[]>([]);
const [cursor, setCursor] = useState<number>(0);
const [limit, setLimit] = useState<number>(3);
const [isLoadingMore, setIsLoadingMore] = useState(false);
const [shouldFetch, setShouldFetch] = useState<boolean>(true);

const { data, error, isLoading } = useGetRecentEpigrams({ cursor, limit, enabled: shouldFetch });

useEffect(() => {
if (data) {
setEpigrams((prevEpigrams) => [...prevEpigrams, ...data.list]);
if (data.list.length > 0) {
setCursor(data.list[data.list.length - 1].id);
}
setIsLoadingMore(false);
setShouldFetch(false);
}
}, [data]);

const handleEpigramClick = (id: number) => {
router.push(`/epigrams/${id}`);
};

const loadMore = () => {
setLimit((prevLimit) => prevLimit + 5);
setIsLoadingMore(true);
setLimit(5);
setShouldFetch(true);
};

if (isLoading) return <p>로딩 중...</p>;
if (isLoading && epigrams.length === 0) return <p>로딩 중...</p>;
if (error) return <p>{error.message}</p>;

return (
<div>
<h1 className='text-black-600 text-2xl font-semibold font-pretendard leading-loose text-[16px] lg:text-[24px]'>최신 에피그램</h1>
<div className='mt-[24px] lg:mt-[40px] gap-[16px] flex flex-col items-center'>
{data?.list.map((epigram: RecentEpigramType) => (
{epigrams.map((epigram: RecentEpigramType) => (
<div
key={epigram.id}
onClick={() => handleEpigramClick(epigram.id)}
Expand All @@ -40,7 +60,12 @@ function RecentEpigrams() {
<EpigramCard content={epigram.content} author={epigram.author} tags={epigram.tags} />
</div>
))}
{data && limit < data.totalCount && (
{isLoadingMore && (
<div className='w-full flex items-center justify-center lg:mt-[70px] md:mt-[50px]'>
<Image src={spinner} alt='로딩중' width={50} height={50} />
</div>
)}
{!isLoadingMore && data?.nextCursor !== null && (
<div className='mt-10 w-full flex justify-center'>
<LoadMoreButton onClick={loadMore} />
</div>
Expand Down
11 changes: 9 additions & 2 deletions src/components/main/TodayEmotion.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
import React from 'react';
import React, { useState } from 'react';
import EmotionSelector from '../Emotion/EmotionSelector';

function TodayEmotion() {
const [isVisible, setIsVisible] = useState<boolean>(true);

const handleEmotionSaved = () => {
setIsVisible(false);
};

if (!isVisible) return null;
return (
<div className='w-[312px] md:w-[384px] lg:w-[640px]'>
<h1 className='text-black-600 font-semibold font-pretendard leading-loose text-[16px] lg:text-[24px]'>오늘의 감정</h1>
<div className='mt-[24px] lg:mt-[40px] flex justify-end'>
<EmotionSelector />;
<EmotionSelector onEmotionSaved={handleEmotionSaved} />
</div>
</div>
);
Expand Down
2 changes: 1 addition & 1 deletion src/components/main/TodayEpigram.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ function TodayEpigram() {
<div>
<h1 className='text-black-600 font-semibold font-pretendard leading-loose text-[16px] lg:text-[24px]'>오늘의 에피그램</h1>
<div className='mt-[24px] lg:mt-[40px]'>
<EpigramCard content={epigram.content} author={epigram.author} tags={epigram.tags} />;
<EpigramCard content={epigram.content} author={epigram.author} tags={epigram.tags} />
</div>
</div>
);
Expand Down
2 changes: 1 addition & 1 deletion src/components/ui/toast.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const toastVariants = cva(
{
variants: {
variant: {
default: 'border bg-background text-foreground',
default: 'border bg-white text-foreground',
destructive: 'destructive group border-destructive bg-destructive text-destructive-foreground',
},
},
Expand Down
7 changes: 4 additions & 3 deletions src/hooks/useGetRecentComments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ import { useQuery } from '@tanstack/react-query';
import getRecentComments from '@/apis/getRecentComments';
import { GetRecentCommentsResponseType } from '@/schema/recentcomment';

const useGetRecentComments = (limit: number) =>
const useGetRecentComments = ({ cursor, limit, enabled }: { cursor: number; limit: number; enabled: boolean }) =>
useQuery<GetRecentCommentsResponseType, Error>({
queryKey: ['recentComments', limit],
queryFn: () => getRecentComments(limit),
queryKey: ['recentComments', cursor, limit],
queryFn: () => getRecentComments(cursor, limit),
enabled,
});

export default useGetRecentComments;
7 changes: 4 additions & 3 deletions src/hooks/useGetRecentEpigrams.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ import { useQuery } from '@tanstack/react-query';
import getRecentEpigrams from '@/apis/getRecentEpigrams';
import { GetRecentEpigramsResponseType } from '@/schema/recentEpigram';

const useGetRecentEpigrams = (limit: number) =>
const useGetRecentEpigrams = ({ cursor, limit, enabled }: { cursor: number | null; limit: number; enabled: boolean }) =>
useQuery<GetRecentEpigramsResponseType, Error>({
queryKey: ['recentEpigrams', limit],
queryFn: () => getRecentEpigrams(limit),
queryKey: ['recentEpigrams', cursor, limit],
queryFn: () => getRecentEpigrams(cursor, limit),
enabled,
});

export default useGetRecentEpigrams;
Loading

0 comments on commit b5a041e

Please sign in to comment.