Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
FE-54π λΈλμΉ μ΅μ ν (#219)
* 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