Skip to content

Commit

Permalink
FE-54πŸ”€ 브랜치 μ΅œμ‹ ν™” (#219)
Browse files Browse the repository at this point in the history
* FE-32 πŸ”€ κ²€μƒ‰νŽ˜μ΄μ§€ 였λ₯˜ μˆ˜μ • (#178)

* πŸ’„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]>

* FE-32 브랜치 μ΅œμ‹ ν™” (#176)

* build 였λ₯˜ ν•΄κ²°

* build 였λ₯˜ ν•΄κ²° 쀑

* .http 파일 μ‚­μ œ

* merge main

* 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: AuthLayo…
  • Loading branch information
12 people authored Aug 6, 2024
1 parent 564f25f commit 6075bb9
Show file tree
Hide file tree
Showing 16 changed files with 204 additions and 132 deletions.
7 changes: 6 additions & 1 deletion src/apis/auth.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { PostSigninRequestType, PostSigninResponseType, PostSignUpRequestType, PostSignUpResponseType } from '@/schema/auth';
import type { PostRefreshTokenRequestType, PostRefreshTokenResponseType, PostSigninRequestType, PostSigninResponseType, PostSignUpRequestType, PostSignUpResponseType } from '@/schema/auth';
import httpClient from '.';

export const postSignin = async (request: PostSigninRequestType): Promise<PostSigninResponseType> => {
Expand All @@ -10,3 +10,8 @@ export const postSignup = async (request: PostSignUpRequestType): Promise<PostSi
const response = await httpClient.post('/auth/signUp', request);
return response.data;
};

export const postRefreshToken = async (request: PostRefreshTokenRequestType): Promise<PostRefreshTokenResponseType> => {
const response = await httpClient.post('/auth/refresh-token', request);
return response.data;
};
16 changes: 9 additions & 7 deletions src/apis/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,15 @@ export const createPresignedUrl = async (request: PostPresignedUrlRequestType):
export const getMyContentCount = async (request: GetUserRequestType): Promise<GetMyContentCountType> => {
const { id } = request;

// μ—ν”Όκ·Έλž¨ 카운트
const epigram = await httpClient.get(`/epigrams`, { params: { limit: 1, cursor: 0, writerId: id } });
// Promise.all을 μ‚¬μš©ν•˜μ—¬ 병렬 μš”μ²­ μ‹€ν–‰
const [epigramResponse, commentResponse] = await Promise.all([
httpClient.get(`/epigrams`, { params: { limit: 1, cursor: 0, writerId: id } }),
httpClient.get(`/users/${id}/comments`, { params: { limit: 1, cursor: 0 } }),
]);

// λŒ“κΈ€ 카운트
const comment = await httpClient.get(`/users/${id}/comments`, { params: { limit: 1, cursor: 0 } });
// κ²°κ³Ό
const epigramCount = epigramResponse.data.totalCount;
const commentCount = commentResponse.data.totalCount;

const response = { epigramCount: epigram.data.totalCount, commentCount: comment.data.totalCount };

return response;
return { epigramCount, commentCount };
};
18 changes: 12 additions & 6 deletions src/components/Header/NewHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { useRouter } from 'next/router';
import Image from 'next/image';
import { useQuery } from '@tanstack/react-query';
import queries from '@/apis/queries';
import { logout } from '@/apis';
import LOGO_ICON from '../../../public/epigram-icon.png';
import PROFILE_ICON from '../../../public/icon/user-icon.svg';
import MENU_ICON from '../../../public/icon/menu-icon.svg';
Expand Down Expand Up @@ -50,12 +51,17 @@ export default function NewHeader() {
</button>
</div>
</div>
<button type='button' onClick={() => handleNavigateTo('/mypage')} className='flex items-center gap-1.5'>
<div className='w-4 h-4 lg:w-6 lg:h-6 relative'>
<Image src={PROFILE_ICON} alt='ν”„λ‘œν•„ 이미지' />
</div>
<div className='text-gray-300 text-[13px] lg:text-sm font-medium font-pretendard leading-snug'>{getNickName()}</div>
</button>
<div className='flex gap-3 items-center justify-center'>
<button type='button' onClick={() => handleNavigateTo('/mypage')} className='flex items-center gap-1.5'>
<div className='w-4 h-4 lg:w-6 lg:h-6 relative'>
<Image src={PROFILE_ICON} alt='ν”„λ‘œν•„ 이미지' />
</div>
<div className='text-gray-300 text-[13px] lg:text-sm font-medium font-pretendard leading-snug'>{getNickName()}</div>
</button>
<button type='button' onClick={logout} className='text-gray-200 text-[13px] lg:text-sm font-medium font-pretendard leading-snug border bg-background-100 rounded-lg py-1.5 px-3'>
λ‘œκ·Έμ•„μ›ƒ
</button>
</div>
</div>
<Sidebar isOpen={isSidebarOpen} toggleSidebar={() => setIsSidebarOpen(false)} />
</div>
Expand Down
4 changes: 2 additions & 2 deletions src/components/epigram/Comment/CommentItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ function CommentItem({ comment, status, onEditComment, isEditing, epigramId }: C
</UserProfileModal>
<div className={`flex-col justify-start items-start ${gapStyles.sm} ${gapStyles.md} ${gapStyles.lg} inline-flex ${contentWidthStyles.sm} ${contentWidthStyles.md} ${contentWidthStyles.lg}`}>
<div className='justify-between items-center w-full inline-flex'>
<div className='justify-start items-start gap-2 flex'>
<div className='justify-start items-center gap-2 flex'>
<div className={`text-zinc-600 font-normal font-pretendard leading-normal ${textSizeStyles.sm.name} ${textSizeStyles.md.name} ${textSizeStyles.lg.name}`}>{comment.writer.nickname}</div>
<div className={`text-zinc-600 font-normal font-pretendard leading-normal ${textSizeStyles.sm.time} ${textSizeStyles.md.time} ${textSizeStyles.lg.time}`}>
{getCustomRelativeTime(comment.createdAt)}
</div>
<Image src={comment.isPrivate ? '/icon/privateIcon.png' : '/Icon/publicIcon.png'} width={16} height={16} alt={comment.isPrivate ? 'λΉ„κ³΅κ°œ' : '곡개'} />
{comment.isPrivate && <Image src='/icon/privateIcon.png' width={16} height={16} alt='λΉ„κ³΅κ°œ' />}
</div>
{status === 'edit' && (
<div className='justify-start items-start gap-4 flex'>
Expand Down
4 changes: 2 additions & 2 deletions src/components/main/FAB.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ function FAB() {
<button
type='button'
onClick={scrollToTop}
className='fixed z-10 bottom-20 right-6 w-12 h-12 md:w-16 md:h-16 bg-blue-900 rounded-full flex items-center justify-center shadow-lg'
className='fixed z-10 bottom-[80px] right-6 w-12 h-12 md:w-16 md:h-16 bg-blue-900 rounded-full flex items-center justify-center shadow-lg'
aria-label='Scroll to top'
>
<Image src='/icon/FAB-icon-lg.svg' alt='Scroll to top' width={24} height={24} className='md:w-16 md:h-16' />
<Image src='/icon/FAB-icon-lg.svg' alt='Scroll to top' width={24} height={24} className='w-full h-full' />
</button>
);
}
Expand Down
112 changes: 56 additions & 56 deletions src/components/mypage/MyComment.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { CommentType } from '@/schema/comment';
import { Button } from '@/components/ui/button';
import DeleteAlertModal from '@/components/epigram/DeleteAlertModal';
import CommentTextarea from '@/components/epigram/Comment/CommentTextarea';
import getCustomRelativeTime from '@/lib/dateUtils';
import NONE_EPI from '../../../public/none-epi.svg';

const sizeStyles = {
Expand Down Expand Up @@ -63,69 +64,68 @@ function MyComment({ comments, totalCount, onMoreEpigramLoad, onDeleteComment, o

return totalCount > 0 ? (
<div className='flex flex-col'>
{comments.map((comment) => {
const formattedDate = new Date(comment.createdAt).toLocaleString();

return (
<div
key={comment.id}
className={`bg-background-100 border-t border-slate-300 flex-col justify-start items-start gap-2.5 inline-flex ${sizeStyles.sm} ${sizeStyles.md} ${sizeStyles.lg} ${paddingStyles.sm} ${paddingStyles.md} ${paddingStyles.lg}`}
>
<div className='justify-start items-start gap-4 inline-flex w-full'>
<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 relative'>
<Image src={comment.writer.image || '/ProfileTestImage.jpg'} alt='ν”„λ‘œν•„ 이미지' width={50} height={50} className='rounded-full' />
</div>
{comments.map((comment) => (
<div
key={comment.id}
className={`bg-background-100 border-t border-slate-300 flex-col justify-start items-start gap-2.5 inline-flex ${sizeStyles.sm} ${sizeStyles.md} ${sizeStyles.lg} ${paddingStyles.sm} ${paddingStyles.md} ${paddingStyles.lg}`}
>
<div className='justify-start items-start gap-4 inline-flex w-full'>
<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 relative'>
<Image src={comment.writer.image || '/ProfileTestImage.jpg'} alt='ν”„λ‘œν•„ 이미지' width={50} height={50} className='rounded-full' />
</div>
{editingCommentId === comment.id ? (
<div className='w-full mb-4'>
<CommentTextarea epigramId={comment.epigramId} editingComment={comment} onEditComplete={handleEditComplete} />
</div>
) : (
<div
className={`flex-col justify-start items-start ${gapStyles.sm} ${gapStyles.md} ${gapStyles.lg} inline-flex ${contentWidthStyles.sm} ${contentWidthStyles.md} ${contentWidthStyles.lg}`}
>
<div className='justify-between items-center w-full inline-flex'>
<div className='justify-start items-start gap-2 flex'>
<div className={`text-zinc-600 font-normal font-pretendard leading-normal ${textSizeStyles.sm.name} ${textSizeStyles.md.name} ${textSizeStyles.lg.name}`}>
{comment.writer.nickname}
</div>
<div className={`text-zinc-600 font-normal font-pretendard leading-normal ${textSizeStyles.sm.time} ${textSizeStyles.md.time} ${textSizeStyles.lg.time}`}>{formattedDate}</div>
</div>
{editingCommentId === comment.id ? (
<div className='w-full mb-4'>
<CommentTextarea epigramId={comment.epigramId} editingComment={comment} onEditComplete={handleEditComplete} />
</div>
) : (
<div
className={`flex-col justify-start items-start ${gapStyles.sm} ${gapStyles.md} ${gapStyles.lg} inline-flex ${contentWidthStyles.sm} ${contentWidthStyles.md} ${contentWidthStyles.lg}`}
>
<div className='justify-between items-center w-full inline-flex'>
<div className='justify-start items-center gap-2 flex'>
<div className={`text-zinc-600 font-normal font-pretendard leading-normal ${textSizeStyles.sm.name} ${textSizeStyles.md.name} ${textSizeStyles.lg.name}`}>
{comment.writer.nickname}
</div>
<div className='justify-start items-start gap-4 flex'>
<Button
onClick={() => handleEditComment(comment)}
className={`text-neutral-700 underline leading-[18px] cursor-pointer p-0 ${textSizeStyles.sm.action} ${textSizeStyles.md.action} ${textSizeStyles.lg.action}`}
>
μˆ˜μ •
</Button>
<Button
onClick={() => {
setSelectedCommentId(comment.id);
setIsDeleteModalOpen(true);
}}
type='button'
className={`text-red-400 underline leading-[18px] cursor-pointer p-0 ${textSizeStyles.sm.action} ${textSizeStyles.md.action} ${textSizeStyles.lg.action}`}
>
μ‚­μ œ
</Button>
<div className={`text-zinc-600 font-normal font-pretendard leading-normal ${textSizeStyles.sm.time} ${textSizeStyles.md.time} ${textSizeStyles.lg.time}`}>
{getCustomRelativeTime(comment.createdAt)}
</div>
{comment.isPrivate && <Image src='/icon/privateIcon.png' width={16} height={16} alt='λΉ„κ³΅κ°œ' />}
</div>
<div
onClick={() => handleCommentClick(comment.epigramId)}
onKeyDown={(event) => handleKeyDown(event, comment.epigramId)}
role='button'
tabIndex={0}
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 className='justify-start items-start gap-4 flex'>
<Button
onClick={() => handleEditComment(comment)}
className={`text-neutral-700 underline leading-[18px] cursor-pointer p-0 ${textSizeStyles.sm.action} ${textSizeStyles.md.action} ${textSizeStyles.lg.action}`}
>
μˆ˜μ •
</Button>
<Button
onClick={() => {
setSelectedCommentId(comment.id);
setIsDeleteModalOpen(true);
}}
type='button'
className={`text-red-400 underline leading-[18px] cursor-pointer p-0 ${textSizeStyles.sm.action} ${textSizeStyles.md.action} ${textSizeStyles.lg.action}`}
>
μ‚­μ œ
</Button>
</div>
</div>
)}
</div>
<div
onClick={() => handleCommentClick(comment.epigramId)}
onKeyDown={(event) => handleKeyDown(event, comment.epigramId)}
role='button'
tabIndex={0}
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>
</div>
)}
</div>
);
})}
</div>
))}
{totalCount > comments.length && (
<div className='w-full flex items-center justify-center'>
<Button className='text-slate-400 border border-slate-300 rounded-[100px] py-[12px] px-[20px]' onClick={onMoreEpigramLoad}>
Expand Down
7 changes: 6 additions & 1 deletion src/hooks/useCommentsHook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ import quries from '@/apis/queries';
import { CommentRequestType } from '@/schema/comment';
import { useQuery } from '@tanstack/react-query';

const useCommentsHook = (requset: CommentRequestType) => useQuery(quries.epigramComment.getMyComments(requset));
const useCommentsHook = (request: CommentRequestType) =>
useQuery({
...quries.epigramComment.getMyComments(request),
refetchOnWindowFocus: false,
enabled: !!request,
});

export default useCommentsHook;
12 changes: 12 additions & 0 deletions src/hooks/useDeleteCommentHook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import queries from '@/apis/queries';
interface DeleteCommentVariables {
commentId: number;
epigramId?: number;
userId?: number;
}

const useDeleteCommentMutation = (options?: { onSuccess?: (variables: DeleteCommentVariables) => void }) => {
Expand All @@ -19,6 +20,17 @@ const useDeleteCommentMutation = (options?: { onSuccess?: (variables: DeleteComm
queryKey: queries.epigramComment.getComments(variables.epigramId).queryKey,
});
}

if (variables.userId) {
queryClient.invalidateQueries({
queryKey: queries.epigramComment.getMyComments({
id: variables.userId,
limit: 3,
cursor: 0,
}).queryKey,
});
}

toast({
title: 'λŒ“κΈ€μ΄ μ‚­μ œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.',
variant: 'destructive',
Expand Down
16 changes: 16 additions & 0 deletions src/hooks/useRefreshToken.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { useMutation } from '@tanstack/react-query';
import { postRefreshToken } from '@/apis/auth';
import { PostRefreshTokenRequestType, PostRefreshTokenResponseType } from '@/schema/auth';

const useRefreshToken = () =>
useMutation<PostRefreshTokenResponseType, Error, PostRefreshTokenRequestType>({
mutationFn: postRefreshToken,
onSuccess: (data) => {
localStorage.setItem('accessToken', data.accessToken);
},
onError: () => {
localStorage.removeItem('refreshToken');
},
});

export default useRefreshToken;
8 changes: 4 additions & 4 deletions src/pageLayout/About/AboutPageLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ function AboutLayout() {
<>
<Header icon='search' isLogo insteadOfLogo='' isProfileIcon isShareIcon={false} isButton={false} textInButton='' disabled={false} onClick={() => {}} />
<main className='w-full h-[3000px] lg:h-[5000px] relative bg-slate-100'>
<section className='absolute w-full h-[676px] lg:h-[900px] left-0 bg-stripes'>
<section className='absolute w-full h-[676px] lg:h-[900px] left-0 top-[1px] bg-stripes'>
<div className='absolute left-1/2 transform -translate-x-1/2 top-[200px] lg:top-[320px] flex-col justify-start items-center gap-12 inline-flex'>
<div className='flex-col justify-start items-center gap-[8px] md:gap-[24px] lg:gap-[40px] flex'>
<div className='text-center text-zinc-700 text-[24px] md:text-[32px] lg:text-[40px] font-normal font-iropkeBatang leading-[40px] md:leading-[48px] lg:leading-[64px]'>
Expand Down Expand Up @@ -75,12 +75,12 @@ function AboutLayout() {
</div>
</section>

<section className='absolute w-[312px] md:w-[385px] lg:w-[1195px] left-1/2 transform -translate-x-1/2 top-[1938px] md:top-[2031px] lg:top-[2825px] justify-center items-end gap-[40px] lg:gap-[80px] inline-flex'>
<section className='absolute w-[312px] md:w-[385px] lg:w-[1188px] flex-col lg:flex-row left-1/2 transform -translate-x-1/2 top-[1938px] md:top-[2031px] lg:top-[2825px] justify-center lg:items-end gap-[40px] lg:gap-[80px] inline-flex'>
<div className='block md:hidden lg:hidden'>
<Image src='/AboutPage/Mobile/AboutEpigram3.png' alt='Epigram Mobile' width={312} height={210} />
<Image className='w-[312px] h-[210px]' src='/AboutPage/Mobile/AboutEpigram3.png' alt='Epigram Mobile' width={312} height={210} />
</div>
<div className='hidden md:block lg:hidden'>
<Image src='/AboutPage/Tablet/AboutEpigram3.png' alt='Epigram Tablet' width={384} height={240} />
<Image className='w-[384px] h-[240px]' src='/AboutPage/Tablet/AboutEpigram3.png' alt='Epigram Tablet' width={384} height={240} />
</div>
<div className='hidden md:hidden lg:block'>
<Image className='w-[744px] h-[388px]' src='/AboutPage/Desktop/AboutEpigram3.png' alt='Epigram Desktop' width={744} height={388} />
Expand Down
2 changes: 2 additions & 0 deletions src/pageLayout/Epigrams/MainLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import TodayEmotion from '@/components/main/TodayEmotion';
import RecentEpigrams from '@/components/main/RecentEpigram';
import RecentComments from '@/components/main/RecentComment';
import FAB from '@/components/main/FAB';
import AddEpigramFAB from '../Feed/AddEpigramFAB';

function MainLayout() {
return (
Expand All @@ -26,6 +27,7 @@ function MainLayout() {
</section>
</div>
</main>
<AddEpigramFAB />
<FAB />
</>
);
Expand Down
2 changes: 1 addition & 1 deletion src/pageLayout/Feed/AddEpigramFAB.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ function AddEpigramFAB() {
variant='default'
size='lg'
onClick={handleAddEpigramClick}
className='z-10 h-12 lg:h-16 px-3.5 lg:px-5 py-3 lg:py-4 bg-[#2c394d] text-white rounded-[100px] shadow-lg justify-center items-center gap-1 inline-flex fixed bottom-40 right-6 cursor-pointer'
className='z-10 bottom-[140px] md:bottom-[160px] right-6 h-12 lg:h-16 px-3.5 lg:px-5 py-3 lg:py-4 bg-[#2c394d] text-white rounded-[100px] shadow-lg justify-center items-center gap-1 inline-flex fixed cursor-pointer'
role='button'
aria-label='Add Epigram'
tabIndex={0}
Expand Down
Loading

0 comments on commit 6075bb9

Please sign in to comment.