Skip to content

Conversation

@WonJuneKim
Copy link
Contributor

@WonJuneKim WonJuneKim commented Dec 29, 2025

๐Ÿ’ก ์ž‘์—… ๋‚ด์šฉ

  • ์ž‘์—… ๋‚ด์šฉ

๐Ÿ’ก ์ž์„ธํ•œ ์„ค๋ช…

๊ตฌํ˜„ํ•œ ์˜๋„๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.
์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ๋‹ค๋ฉด ์ˆ˜์ •ํ•œ ์ด์œ ๋ฅผ ์ ์–ด์ฃผ์„ธ์š”.
ํ•„์š”ํ•˜๋‹ค๋ฉด ์Šคํฌ๋ฆฐ์ƒท ๋˜๋Š” ์ฝ”๋“œ ์กฐ๊ฐ์„ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”.

๐Ÿ“— ์ฐธ๊ณ  ์ž๋ฃŒ (์„ ํƒ)

๐Ÿ“ข ๋ฆฌ๋ทฐ ์š”๊ตฌ ์‚ฌํ•ญ (์„ ํƒ)

โœ… ์…€ํ”„ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • ๋จธ์ง€ํ•  ๋ธŒ๋žœ์น˜ ํ™•์ธํ–ˆ๋‚˜์š”?
  • ์ด์Šˆ๋Š” close ํ–ˆ๋‚˜์š”?
  • Reviewers, Labels, Projects๋ฅผ ๋“ฑ๋กํ–ˆ๋‚˜์š”?
  • ๊ธฐ๋Šฅ์ด ์ž˜ ๋™์ž‘ํ•˜๋‚˜์š”?
  • ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋Š” ์ œ๊ฑฐํ–ˆ๋‚˜์š”?

closes #์ด์Šˆ๋ฒˆํ˜ธ

WonJuneKim and others added 8 commits December 29, 2025 18:25
* feat: ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ… (#2)

* feat: ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ…

* feat: eslint "import/order" ์„ค์ • ์ถ”๊ฐ€

* fix: prettier "semi" ์„ค์ •๊ฐ’ true๋กœ ์ˆ˜์ •

* feat: ๋””์ž์ธ ์‹œ์Šคํ…œ  ๋ฐ ์Šคํƒ€์ผ๋ง ์…‹์—… (#5)

* chore: style-dictionary ์„ค์น˜

* feat: ์‹œ๋ฉ˜ํ‹ฑ ์ปฌ๋Ÿฌ ๋””์ž์ธ ํ† ํฐ์„ ํ…Œ์ผ์œˆ๋“œ css ๋ณ€์ˆ˜๋กœ ์ ์šฉ

* feat: ํฐํŠธ ๋””์ž์ธ ํ† ํฐ ์ ์šฉ

* fix: label-xs ํฐํŠธ ์‚ฌ์ด์ฆˆ ์ˆ˜์ •

* feat: scheme (gap, radius, stroke, opacity) ํ† ํฐ ์„ค์ •

* rename: ํฐํŠธ css ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ (index.css -> typography.css)

* fix: ๋””์ž์ธ ํ† ํฐ ํŒŒ์ผ ์œ„์น˜ styles/tokens/์œผ๋กœ ๋ณ€๊ฒฝ

* feat: environment ํ† ํฐ ์„ค์ • (shadow, motion)

* feat: index.js ๋กœ ํ† ํฐ cssํŒŒ์ผ ํ•œ๋ฒˆ์— import ํ•˜๊ธฐ

* feat: typescript-eslint/naming-convention ์„ค์ •

* feat: ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ ์„ค์ • (ํฐํŠธ)

* fix: font-display ์†์„ฑ block์œผ๋กœ ๋ณ€๊ฒฝ

* chore: zustand ์„ค์น˜

* fix: font-display ์†์„ฑ swap ์œผ๋กœ ๋ณ€๊ฒฝ

* rename: build-tokens.js -> token.config.js๋กœ ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ,  index.js -> index.ts๋กœ ๋ณ€๊ฒฝ

* fix: ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ @layer utilities ์‚ฌ์šฉ

* remove: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ

* remove: ์ฃผ์„ ์ œ๊ฑฐ

* chore: Qodana ci ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• (#7)

* Add qodana.yaml file

* Add github workflow file

---------

Co-authored-by: Qodana Application <[email protected]>

* chore: ์Šคํ† ๋ฆฌ๋ถ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐ CI ์„ค์ • (#10)

* chore: storybook ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* chore: ts์ปดํŒŒ์ผ๋Ÿฌ์— ์Šคํ† ๋ฆฌ๋ถ์„ ํฌํ•จ์‹œํ‚ต๋‹ˆ๋‹ค.

* fix: naming convention ์„ค์ •์ด rules์— ํฌํ•จ๋˜๋„๋ก ๊ตฌ๋ฌธ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: eslint ignore ์˜ต์…˜์— storybook ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: storybook preview์— ๋””์ž์ธ ํ† ํฐ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: storybook preview ์‹œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•œ ์Šคํƒ€์ผ ์„ค์ •์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* move: ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜๋œ ์Šคํ† ๋ฆฌ๋ถ ์˜ˆ์‹œ ํŒŒ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํ† ๋ฆฌ๋ถ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ์Šคํ† ๋ฆฌ๋ถ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* chore: dev dependencies์— chromatic ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํ† ๋ฆฌ๋ถ ์ž๋™ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ yml ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: chormatic ๋ช…๋ ์–ด๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฒ„ํŠผ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด width ์†์„ฑ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* chore: eslint ์ถ”๊ฐ€ ์„ค์ •์„ ์œ„ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” tailwind ์„ค์ • ํŒŒ์ผ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ถ”๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด eslint์™€ prettier์—์„œ ์ถฉ๋Œ์ด ๋‚˜๋Š” ๊ตฌ๊ฐ„์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ˆ˜์ •๋œ eslint ์„ค์ •์— ๋งž์ถฐ ์Šคํ† ๋ฆฌ๋ถ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํด๋” ๊ตฌ์กฐ ์„ธํŒ… ๋ฐ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ฒ˜๋ฆฌ  (#13)

* feat: ํด๋” ์•„ํ‚คํ…์ฒ˜ ์„ค์ • (์ž„์‹œํŒŒ์ผ์ƒ์„ฑ)

* chore: ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ @types/node ๋ชจ๋“ˆ ์„ค์น˜

* feat: @(src) ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์„ค์ •

* fix: main.tsx ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ import ํ•˜๊ธฐ

* chore: Tanstack query ๊ด€๋ จ ๋ชจ๋“ˆ ์„ค์น˜

* feat: eslint-plugin-query ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •

* style: ํŒŒ์ผ import ์‹œ ํ™•์žฅ์ž ์ œ๊ฑฐ

* chore: Qodana ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ • (#15)

* feat: ์ •์  ๋ถ„์„ ์Šคํฌ๋ฆฝํŠธ์— ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ ์˜์กด์„ฑ ์„ค์น˜๋ฅผ ์„ ํ–‰ํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* chore: ymlํŒŒ์ผ์˜ ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Interaction ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#17)

* feat: Interaction ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Interaction์˜ ๊ณตํ†ต ์Šคํƒ€์ผ ๋ถ„๋ฆฌ (.interaction)

* remove: ํ•„์š”ํ•˜์ง€ ์•Š์€ opacity ํ† ํฐ ์ œ๊ฑฐ

tailwind ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ์Šคํƒ€์ผ๊ณผ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

* fix: interaction ์œ ํ‹ธ๋ฆฌํ‹ฐ ์˜ค๋ฅ˜๋กœ ๋ถ„๋ฆฌ ์ž‘์—… ์›์ƒ๋ณต๊ท€

* Merge branch 'dev' of https://github.com/JECT-Study/JECT-Official-WebSite-Client into feat/9-interactionComponent

* move: Interaction ํŒŒ์ผ common ํด๋”๋กœ ์ด๋™

* feat: Interaction ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: InteractionStyle ๊ฐ์ฒด ์ •์˜

* refactor: InteractionStyle ๊ฐ์ฒด ํ™œ์šฉํ•˜์—ฌ ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ ์ •๋ฆฌ

* fix:  tailwind์˜ ํด๋ž˜์Šค ๋„ค์ž„ ๋™์  ๊ตฌ์„ฑ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

๊ฐ์ฒด์— ์ €์žฅ๋œ ํด๋ž˜์Šค ๋„ค์ž„์„ ์™„์ „ํ•œ ํด๋ž˜์Šค ๋„ค์ž„์œผ๋กœ ๋ณ€๊ฒฝ

* fix: ๋ณ€๊ฒฝํ•œ interactionStyle ๊ฐ์ฒด ์ ์šฉ

* feat: ์ธํ„ฐ๋ ‰์…˜ ์Šคํ† ๋ฆฌ๋ถ ์ถ”๊ฐ€ ์ž‘์„ฑ

* rename: ์Šคํ† ๋ฆฌ ๋ณ€์ˆ˜ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝ

* feat: eslint const ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜ PascalCase ํ—ˆ์šฉ

* feat: radius ๊ธฐ๋ณธ๊ฐ’ ๋นˆ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌ

* feat: Label ๋ฐ Badge ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#20)

* feat: Badge ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Label ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Badge ์ปดํฌ๋„ŒํŠธ ์žฌ๊ตฌํ˜„

Label ์ปดํฌ๋„ŒํŠธ ์ด์šฉ

* feat: Badge ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: Label ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* style: Label ๊ฐ์ฒด ๊ตฌ์„ฑ ์ˆ˜์ • ๋ฐ ๊ฐ์ฒด๋ช… ๋ณ€๊ฒฝ

* style: ์ฝ”๋“œ ์ •๋ฆฌ

* rename: ์Šคํ† ๋ฆฌ ์ด๋ฆ„ Primary๋กœ ๋ณ€๊ฒฝ

* fix: ์ธํ„ฐ๋ ‰์…˜ ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ • ๋ฐ storybook ์„ค์ •  (#22)

* feat(preview.ts): ์Šคํ† ๋ฆฌ๋ถ ๋ฐฐ๊ฒฝ์ƒ‰ dark๋กœ ๊ธฐ๋ณธ ์„ค์ •

* feat: Label์˜ ํ…์ŠคํŠธ children์œผ๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •

* fix: Badge์— ๋ณ€๊ฒฝ๋œ Label ์ ์šฉ

* feat: Label ์Šคํ† ๋ฆฌ๋ถ argTypes ๋ฐ ํฐํŠธ ์ƒ‰์ƒ ์ˆ˜์ •

* feat: ์ธํ„ฐ๋ ‰์…˜ ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ •

- ๋ฐฐ๊ฒฝ์ƒ‰ ์—†๋Š” ์ž์‹ ์š”์†Œ๋„ ์ž˜ ๋™์ž‘ํ•˜๋„๋ก ํ•จ
- props๋ช… ๋ณ€๊ฒฝ ๋ฐ ์ถ”๊ฐ€

* feat: ์ธํ„ฐ๋ ‰์…˜ ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* style: Badge ๋ฐ Label ์Šคํ† ๋ฆฌ ํƒ€์ž… ์ฝ”๋“œ ์ •๋ฆฌ

* feat: ์ธํ„ฐ๋ ‰์…˜ description ์ถ”๊ฐ€

* feat: ReactNode import ํ•˜๊ธฐ

* feat: Badge ์ปดํฌ๋„ŒํŠธ text props -> children์œผ๋กœ ๋ณ€๊ฒฝ

* style: ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ์˜คํƒ€ ์ˆ˜์ •

* feat: Badge, Interaction, Label ์Šคํ† ๋ฆฌ๋ถ ์ปดํฌ๋„ŒํŠธ ๋ฐฉ์‹์˜ ์Šคํ† ๋ฆฌ ์ž‘์„ฑ

* feat: ์ธํ„ฐ๋ ‰์…˜ childHasBg, childRadius ๊ฐ’ ๋ฐ›์ง€ ์•Š๊ณ  ์ธํ„ฐ๋ ‰์…˜ ๋‚ด๋ถ€์—์„œ ์ ‘๊ทผํ•˜๋„๋ก ์ˆ˜์ •

* feat: ์ธํ„ฐ๋ ‰์…˜ ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: Title, Callout, Hero ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„  (#23)

* feat: Title ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Title ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* fix: border-radius ์Šคํ‚ด ํ† ํฐ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์‹คํŒจ ๋ฌธ์ œ๋กœ ํ† ํฐ ํŒŒ์ผ ์ˆ˜์ •

* feat: CalloutNumerical ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: CalloutInformation ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: HeroIndex ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Hero ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: HeroIndex์˜ index min-width ์„ค์ •

* feat: CalloutNumerical ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: CalloutInformation ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: HeroIndex ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: Hero ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: Title ReactNode import ํ•˜๊ธฐ

* remove: titleStyle lineHeight ์ œ๊ฑฐ

* remove: labelStyle lineHeight ์ œ๊ฑฐ

* feat: 22PR ๋ณ€๊ฒฝ๋œ Label Badge ์ปดํฌ๋„ŒํŠธ ๋ฐ˜์˜

* feat: Title ์Šคํ† ๋ฆฌ๊ฐ์ฒด ํƒ€์ž… ์ˆ˜์ •

* feat: progress ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#29)

* feat: ProgressIndex ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: ProgressBridge ๋ฐ ProgressIndicator ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: ProgressItem ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Title textColor ์„ ํƒ์ ์ธ Prop ์ถ”๊ฐ€

* feat: ProgressVerticalBridge ๊ตฌํ˜„

* feat: Progress ๊ด€๋ จ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ (Bridge ์ปดํฌ๋„ŒํŠธ ์ œ์™ธ)

* refactor: active style ์ƒ์ˆ˜ ๋ถ„๋ฆฌ

* remove: console.log ์ œ๊ฑฐ

* feat: new Array -> Array.from() ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ

* feat: Title || -> ?? ๋„ ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž๋กœ ๋ณ€๊ฒฝ

undefined, null ์ผ ๊ฒฝ์šฐ์—๋งŒ ๊ธฐ๋ณธ ํฐํŠธ ์ƒ‰์ƒ ์ ์šฉ (๋นˆ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์ด ์‹ค์ˆ˜๋กœ ๊ฐ’์„ ๋„ฃ์—ˆ์„ ๊ฒฝ์šฐ๋Š” ์Šคํƒ€์ผ ์ ์šฉ X)

* feat: ๋ฒ”์šฉ์„ฑ์žˆ๋Š” ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#30)

* chore: tailwind ์‚ฌ์šฉ ์‹œ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด clsx ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* move: ์˜ˆ์‹œ๋กœ ์‚ฌ์šฉ๋œ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: BlockButton ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: BlockButton์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: storybook์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํƒ€์ผ ์‹œํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: storybook์ด ๊ธฐ๋ณธ์ ์œผ๋กœ docs๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ํƒ€์ž…๋ช…์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์Šคํ† ๋ฆฌ๋ถ ์ƒ์—์„œ ๋‹ค์–‘ํ•œ ๋ฒ„ํŠผ์„ ํ‘œํ˜„ํ•˜๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* typo: import ํŒŒ์ผ์˜ ๋„ค์ด๋ฐ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* typo: ์Šคํƒ€์ผ ํŒŒ์ผ์— ์ž˜๋ชป ์„ ์–ธ๋œ ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* typo: radius์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๊ฐ’ ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Interaction ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋งต ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

* feat: ์„ ์–ธํ•œ map ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด BlockButton์— ์ธํ„ฐ๋ ‰์…˜์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* feat: ์„ ์–ธ๋œ radius๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด BlockButton์˜ radius ๊ฐ’์„ Interaction ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

* feat: blockButton์˜ ๋งต ๊ฐ์ฒด ๋„ค์ด๋ฐ์„ ๊ตฌ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.

* feat: labelButton์˜ Interaction ์Šคํƒ€์ผ ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

* feat: labelButton์— Interaction ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ˆ˜์ •๋œ Interaction ์ปดํฌ๋„ŒํŠธ๋Š” ๋”์ด์ƒ radius๋ฅผ props๋กœ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

* refactor: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๊ฐ€ Interaction ์ปดํฌ๋„ŒํŠธ์— ๋งž์ถฐ์ง„ radius๋ฅผ ๊ฐ€์ง€๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

* feat: Interaction ์ปดํฌ๋„ŒํŠธ์— outlineOffset ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ ์Šคํƒ€์ผ ๊ฐ์ฒด์— ์‚ฌ์ด์ฆˆ ๋ณ„ offset ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: labelButton์ด Interaction ์‹œ์— offset ๊ฐ’์„ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋™์  ์Šคํƒ€์ผ๋ง์„ ์œ„ํ•œ ๋งคํ•‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* refactor: Interaction์˜ ๋™์  ์Šคํƒ€์ผ๋ง ๋ฐฉ์‹์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์•„์ด์ฝ”๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•„์ด์ฝ˜ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#32)

* feat: ์•„์ด์ฝ˜ 13๊ฐœ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ ์Šคํƒ€์ผ ๊ฐ์ฒด ์ƒ์„ฑ

* feat: ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ ์Šคํƒ€์ผ ๊ฐ์ฒด ์ƒ์„ฑ

* feat: ์•„์ด์ฝ˜ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: ์Šคํ† ๋ฆฌ๋ถ description ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ ์ˆ˜์ •

* remove: ์•„์ด์ฝ˜ ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ ์‚ญ์ œ

* remove: ์•„์ด์ฝ˜ ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ ์Šคํ† ๋ฆฌ๋ถ ์‚ญ์ œ

* chore: vite-plugin-svgr ์„ค์น˜

* chore: svg ์•„์ด์ฝ˜์„ ์ปดํฌ๋„ŒํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •

* feat: assets/svg ์œ„์น˜์— ์•„์ด์ฝ˜ svg ํŒŒ์ผ๋“ค ์ถ”๊ฐ€

* feat: ์•„์ด์ฝ˜ ํ†ตํ•ฉ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๋ฐ ์•„์ด์ฝ˜ ์ด๋ฆ„ ํƒ€์ž… ์ •์˜

* feat: Icon ์ปดํฌ๋„ŒํŠธ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: Icon ์ปดํฌ๋„ŒํŠธ switch -> ๊ฐ์ฒด ๋งคํ•‘ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ

* fix: ์ธํ„ฐ๋ž™์…˜ ์ปดํฌ๋„ŒํŠธ ์žฌ๊ตฌํ˜„ ๋ฐ semantic ์ปฌ๋Ÿฌ ํ† ํฐ ์—…๋ฐ์ดํŠธ (#35)

* fix: ์ธํ„ฐ๋ ‰์…˜ ์žฌ๊ตฌํ˜„

- ์ธํ„ฐ๋ ‰์…˜ scale ๊ฐ’์œผ๋กœ ํฌ๊ธฐ ์กฐ์ •
- ์ธํ„ฐ๋ ‰์…˜ ์ปดํฌ๋„ŒํŠธ ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„ -> ํ˜•์ œ ๊ด€๊ณ„๋กœ ๋ฐฉ์‹ ๋ณ€๊ฒฝ

* design: semantic ํ† ํฐ ์—…๋ฐ์ดํŠธ

* feat: Interaction ์ปดํฌ๋„ŒํŠธ isInversed props ์ถ”๊ฐ€

* feat: ์ˆ˜์ •๋œ interactionStyle ๋ฐ˜์˜

* remove: ๋ถˆํ•„์š” ์ฝ”๋“œ ์‚ญ์ œ

* feat: Interaction ์ปดํฌ๋„ŒํŠธ className props ์ถ”๊ฐ€

* feat: ์ธํ„ฐ๋ ‰์…˜ ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* fix: LabelButton import ๋ฒ„๊ทธ ์ˆ˜์ •

* remove: semantic.json ํŒŒ์ผ ์‚ญ์ œ

* docs: token.config.js ์— semantic.css ํŒŒ์ผ ์ƒ์„ฑ ๋ฐฉ๋ฒ• ์ฃผ์„ ๋‹ฌ๊ธฐ

* style: Interaction className ์ฝ”๋“œ ์ค„๋ฐ”๊ฟˆ

* feat: Input ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#36)

* feat: InputTextArea ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* Merge branch 'dev' of https://github.com/JECT-Study/JECT-Official-WebSite-Client into feat/24-input

* feat: TextAreaField ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ, AnswerBox๋กœ ์ปดํฌ๋„ŒํŠธ๋ช… ๋ณ€๊ฒฝ

* design: InputField grow ๊ฐ’ ์ˆ˜์ •

* feat: environment์˜ duration ํ† ํฐ ๊ฐ’ ์ƒ์„ฑ

* feat: AnswerBox, InputField ์ปดํฌ๋„ŒํŠธ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: InputField, TextAreaField์— duration ๋ฐ motion ์ ์šฉ

* rename: AnswerBox -> InputArea ๋กœ ์ปดํฌ๋„ŒํŠธ๋ช… ๋ณ€๊ฒฝ

* rename: InputField -> Input ์ปดํฌ๋„ŒํŠธ๋ช… ๋ณ€๊ฒฝ

* feat: Input ์Šคํ† ๋ฆฌ๋ถ ์•„์ด์ฝ˜ ์Šคํ† ๋ฆฌ ์ถ”๊ฐ€

* rename: TextAreaField -> TextArea๋กœ ์ปดํฌ๋„ŒํŠธ๋ช… ๋ณ€๊ฒฝ

* feat: InputArea required args ์ถ”๊ฐ€

* style: TextArea ์ฝ”๋“œ ์ •๋ฆฌ

* style: Input ์ฝ”๋“œ ์ •๋ฆฌ

* feat: Label cursor-default ์†์„ฑ ์ถ”๊ฐ€

* style: inputArea ์ฝ”๋“œ ์ •๋ฆฌ

* feat: InputField ๋ฒ„ํŠผ ์š”์†Œ๋“ค children์œผ๋กœ ์ „๋ถ€ ๋ณ€๊ฒฝ

* feat: Input ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: InputField ๋ถˆํ•„์š”ํ•œ props ์ œ๊ฑฐ

* feat: InputField ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* style: TextArea ์ฝ”๋“œ ์ •๋ฆฌ

* feat: input, textarea ์š”์†Œ ํƒ€์ž… ComponentPropsWithoutRef ์‚ฌ์šฉ

* feat: ์ง€์›ํ•˜๊ธฐ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (#40)

* chore: react-router-dom ์„ค์น˜

* feat: router ์„ธํŒ… ๋ฐ /apply ๋ผ์šฐํ„ฐ ์„ค์ •

* feat: ProgressItem์˜ content prop ํƒ€์ž… ReactNode๋กœ ๋ณ€๊ฒฝ

* feat: client-apply-01 ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (๋ฒ„ํŠผ ์ œ์™ธ)

* feat: ์ง€์›ํ•˜๊ธฐ ๋งํฌ ํด๋ฆญ ์‹œ ํŽ˜์ด์ง€ ํ•˜๋‹จ์œผ๋กœ ์ด๋™

* fix: ์•„์ด์ฝ˜ ์„ค์ • ์ถ”๊ฐ€

* feat: ์ง€์› ํ•˜๊ธฐ ๋ฒ„ํŠผ ์ƒ์„ฑ

* feat: ProgressItem p ํƒœ๊ทธ -> div ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ

* feat: ๋จธ์ง€์‹œ ์ถฉ๋Œ์žˆ์—ˆ๋˜ ํŒŒ์ผ ๋ณ‘ํ•ฉ

* remove: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ

* feat: moveToBottom utils ํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: CreateNewTab ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ - ์ƒˆ๋กœ์šด ํƒญ์œผ๋กœ ํ•˜์ดํผ๋งํฌ ์—ด๊ธฐ

* rename: scrollFucion -> scrollFunction์œผ๋กœ ํŒŒ์ผ๋ช… ์˜คํƒ€ ์ˆ˜์ •

* feat: apply page์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด ๋ฐฐ์—ด ์ƒ์„ฑ

* feat: ๋ฆฌํŒฉํ† ๋ง ๋ฐ ์ง€์›ํ•˜๊ธฐ ๋ฒ„ํŠผ ui ๊ตฌํ˜„

* style: ์ฝ”๋“œ ์Šคํƒ€์ผ ์ •๋ฆฌ

* remove: router.tsx ํŒŒ์ผ ์ด๋™

* fix: router import ๊ฒฝ๋กœ ์ˆ˜์ •

* feat: now -> currentDate๋กœ ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ ๋ฐ applyData ๊ฐ์ฒด id ๊ฐ’ ์ถ”๊ฐ€

* feat: ์ง€์›ํ•˜๊ธฐ ํŽ˜์ด์ง€ ํƒ€์ดํ‹€ ์ƒ์ˆ˜ํ™”

* rename: CreateNewTab -> NewTabLink ์ปดํฌ๋„ŒํŠธ๋ช… ์ˆ˜์ •

* feat: Card์™€ Post ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#37)

* feat: Post ์ปดํฌ๋„ŒํŠธ๋ฅผ ํผ๋ธ”๋ฆฌ์‹ฑ ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Card ์ปดํฌ๋„ŒํŠธ๋ฅผ ํผ๋ธ”๋ฆฌ์‹ฑ ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํ† ๋ฆฌ๋ถ์„ ์œ„ํ•œ ์ƒ˜ํ”Œ ์ด๋ฏธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Card ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: descriptionVisible props์— ๋”ฐ๋ผ children ์š”์†Œ์˜ ์ถœ๋ ฅ ์œ ๋ฌด๋ฅผ ์กฐ๊ฑด๋ถ€๋กœ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

* feat: ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ์‹œ ๋ถ„๊ธฐ๊ฐ€ ํ•„์š”ํ•œ ํƒœ๊ทธ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ถ”๊ฐ€๋œ props๋ฅผ ์Šคํ† ๋ฆฌ๋ถ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* fix: ๊ณต์šฉ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹จ๋… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* rename: boolean typo์˜ props ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋ถ€๋ชจ container์— items-stretch๋ฅผ ์ ์šฉํ•˜๊ณ , flex grow๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํ† ๋ฆฌ๋ถ์— ๊ธฐ๋ณธ args๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํƒญ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#39)

* feat: Tab ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: Tab ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Tab ์ปดํฌ๋„ŒํŠธ์— Interaction์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* feat: active ์‹œ TabItem์˜ stroke๊ฐ€ ๊ธฐ๋ณธ stroke์— ์˜ฌ๋ผ์˜ค๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

* refactor: context API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Tab์˜ ์ „๋ฐ˜์ ์ธ ์ฝ˜ํ…์ธ ์™€ ํƒญ ํ—ค๋”๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ์‹ค์งˆ์ ์ธ ๋ฉ”์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* typo: ์ปดํฌ๋„ŒํŠธ์™€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋„ค์ด๋ฐ์„ ๋‹จ์ˆ˜ํ˜•์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ˆ˜์ •๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์Šคํ† ๋ฆฌ๋ถ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* refactor: tab์˜ id๋ฅผ number ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

* refactor: tab header์˜ width๋ฅผ 100%๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ถ”๊ฐ€์ ์ธ ์ผ€์ด์Šค์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํƒœ๊ทธ์— ๋ช…์‹œ์ ์ธ aria-label์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: FAQ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ ๋ฐ ์•„์ฝ”๋””์–ธ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#53)

* feat: faq ํŽ˜์ด์ง€ ๋ฐ ๋ผ์šฐํ„ฐ ์ƒ์„ฑ

* move: Badge, Label, Title  ํด๋”๋กœ ๋ฌถ์Œ

* feat: Badge, Label, Title ๋ณ€๊ฒฝ๋œ ๊ฒฝ๋กœ ์ˆ˜์ •

* fix: Title textColor null ํƒ€์ž… ํ—ˆ์šฉ

* feat: Accordion ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ

* feat: list-ject(list-style-type) ์œ ํ‹ธ๋ฆฌํ‹ฐ ์Šคํƒ€์ผ ์ƒ์„ฑ

* feat: faq '์ง€์› ๊ด€๋ จ' TabPanel ๊ตฌ์„ฑ

* feat: Accordion ์ปดํฌ๋„ŒํŠธ expand ์•„์ด์ฝ˜ ๋ฐ ์บก์…˜ prop ์ถ”๊ฐ€

* feat: FAQ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด ๋ฐฐ์—ด ์ƒ์„ฑ

* feat: list-decimal margin ์ˆ˜์ • ๋ฐ list-ject -> list-disc-ject ๋กœ ์Šคํƒ€์ผ ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ

* feat: Faq ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ faq ๊ฐ์ฒด ๋ฐ์ดํ„ฐ ์ ์šฉ

* feat: Accordion ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* fix: Accordion ์ปดํฌ๋„ŒํŠธ, ref ์ด์šฉํ•œ ์Šคํƒ€์ผ ์ฃผ์ž… ๋ฐฉ์‹ -> className์— ์ง์ ‘ ์กฐ๊ฑด๋ถ€ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ

* feat: Select ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#44)

* move: ๋ถˆํ•„์š”ํ•œ import ๋ฌธ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: Select ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: Select ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Select ์ปดํฌ๋„ŒํŠธ์— Interaction์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: Interaction ์‚ฌ์šฉ์‹œ duration๊ณผ motion ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Select ์ปดํฌ๋„ŒํŠธ์— disabled props๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ˆ˜์ •๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์Šคํ† ๋ฆฌ๋ถ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ ์šฉ๋˜์ง€ ์•Š๋˜ motion๊ณผ duration ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: SelectItem์˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์กฐ๋ฅผ ํ™•์žฅ์„ฑ ์žˆ๊ฒŒ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ตœ์ƒ์œ„ div์˜ width๋ฅผ 100%๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* rename: rest props์˜ ๋„ค์ด๋ฐ์„ ์ง๊ด€์ ์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* rename: props๋กœ ์ „๋‹ฌ๋œ onClick ํ•ธ๋“ค๋Ÿฌ์˜ ์ด๋ฆ„์„ ๊ตฌ๋ถ„ ์ง“์Šต๋‹ˆ๋‹ค.

* refactor: Select ์ปดํฌ๋„ŒํŠธ์— defaultValue ์˜ต์…”๋„ props๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: SnackBar ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#45)

* feat: blockButton์˜ Interaction์— isInversed ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: button ์ปดํฌ๋„ŒํŠธ์— peer ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: BlockButton์— disabled ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: BlockButton์˜ disabled case์˜ ์ถ”๊ฐ€์— ๋งž์ถฐ ์Šคํ† ๋ฆฌ๋ถ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Icon์ด ์žˆ์„ ์‹œ์— disabled ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: BlockButton์˜ Interaction์— motion๊ณผ duration์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: LabelButton์— disabled ์†์„ฑ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Interaction ๊ด€๋ จ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ Interaction์— isInversed ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ Interaction์— duration๊ณผ motion์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ Interaction์— scale์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ˆ˜์ •๋œ LabelButton์„ ์Šคํ† ๋ฆฌ๋ถ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์— Interaction ์ฃผ์ž…์„ ์œ„ํ•œ peer ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* rename: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์Šคํ† ๋ฆฌ๋ถ ๋„ค์ด๋ฐ์„ ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„๊ณผ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* feat: SnackBar ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: SnackBar ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ children์„ ์˜ต์…”๋„๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์—์„œ ์•„์ด์ฝ˜๋งŒ ์žˆ๋Š” ์Šคํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: onAction props๋ฅผ ์˜ต์…”๋„์—์„œ ํ•„์ˆ˜๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* Fix: ์ธํ„ฐ๋ ‰์…˜ ์žฌ๊ตฌํ˜„ 3์ฐจ (#60)

* feat: ์ธํ„ฐ๋ ‰์…˜ ์Šคํƒ€์ผ ๋„ค์ž„ ์ƒ์„ฑ

* feat: global.css์— interaction.css ๋“ฑ๋ก

* remove: ๊ธฐ์กด ์ธํ„ฐ๋ ‰์…˜ ์ปดํฌ๋„ŒํŠธ, ์Šคํ† ๋ฆฌ๋ถ, ์Šคํƒ€์ผ ํŒŒ์ผ ์‚ญ์ œ

* fix: ๊ธฐ์กด ์ธํ„ฐ๋ ‰์…˜ ์ ์šฉ๋˜์–ด์žˆ๋˜ ์ปดํฌ๋„ŒํŠธ์— ์ƒˆ๋กœ์šด ์ธํ„ฐ๋ ‰์…˜ ์Šคํƒ€์ผ ์ ์šฉ

* feat: transition-faster-fluent ์Šคํƒ€์ผ ์ •์˜

* refactor: transition-faster-fluent ๊ณตํ†ต์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ณณ์— ์ ์šฉ

* fix: Variant, Density ํƒ€์ž… ์ƒ์„ฑํ•˜์—ฌ eslint ์—๋Ÿฌ ํ•ด๊ฒฐ

* feat: Header, Footer ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ ๋ฐ Layout ์ ์šฉ (#56)

* feat: Header, Footer ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ

* feat: Layout ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ

* feat: ๋ ˆ์ด์•„์›ƒ ๋ผ์šฐํ„ฐ ์„ค์ •

* feat: Logo ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: NavigationItem ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: /project, /activity ๋ผ์šฐํ„ฐ ์ƒ์„ฑ ๋ฐ pathName ํƒ€์ž… ์ƒ์„ฑ

* feat: NavigationItem path์— ๋”ฐ๋ผ UI ๋ณ€๊ฒฝ

* feat: Navigation ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Header ๊ตฌํ˜„

* fix: NewTabLink ์ปดํฌ๋„ŒํŠธ children ํƒ€์ž… ReactNode๋กœ ๋ณ€๊ฒฝ

* feat: Footer ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* chore: footer ์šฉ ์œ ํŠœ๋ธŒ svg ์ƒ์„ฑ

* fix: Navigation ์ปดํฌ๋„ŒํŠธ ์‹œ๋ฉ˜ํ‹ฑ ํƒœ๊ทธ ํ™œ์šฉ

* feat: PageContainer ์ƒ์„ฑ - page ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ๋†’์ด, ๋ฐฐ๊ฒฝ์ƒ‰ ์ง€์ •

* refactor: NavigationItem button props ์ œ๊ฑฐ ๋ฐ disabled props ์ถ”๊ฐ€

* move: PathName ํƒ€์ž… NavigationItem.tsx๋กœ ์ด๋™

* feat: Navigation Logo ํ™ˆ ์ด๋™ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ focus-visible ์Šคํƒ€์ผ ์ง€์ •

* feat: Footer์˜ ์ ํŠธ ์†Œ๊ฐœ ๋ฌธ๊ตฌ ๋ฐ ์ด๋ฉ”์ผ ์ƒ์ˆ˜ํ™”

* rename: Footer, Header, Layout, PagesContainer ํŒŒ์ผ ์œ„์น˜ ์ˆ˜์ •

* fix: NavigationItem์˜ PathName ํƒ€์ž… ์ˆ˜์ •

* feat: Footer, Navigation, NavigationItem ์ปดํฌ๋„ŒํŠธ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* fix: router Layout import ๊ฒฝ๋กœ ์ˆ˜์ •

* fix: faq ํŽ˜์ด์ง€ mainํƒœ๊ทธ->sectionํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ

* feat: Logo ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* remove: Logo ์Šคํ† ๋ฆฌ๋ถ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ

* fix: Navigation ์Šคํ† ๋ฆฌ๋ถ ์Šคํ† ๋ฆฌ ์ˆ˜์ •

* rename: ject.ts -> footer.ts ๋กœ ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ

* feat: ๋„ค๋น„๊ฒŒ์ด์…˜ PathName ํƒ€์ž… ์ƒ์„ฑ

* fix: ์ƒ์„ฑํ•œ PathName ํƒ€์ž… ์ ์šฉ

* feat: footer.ts ์ƒ์ˆ˜ ์ž„ํฌํŠธ ๊ฒฝ๋กœ ์ˆ˜์ •

* feat: PATH ๋„ค์ž„ ์ƒ์ˆ˜ํ™”

* feat: PathKeys, PathValues ํƒ€์ž… ์ƒ์„ฑ

* refactor: PATH ์ƒ์ˆ˜ ์ ์šฉ

* fix: NavigationItem pathName ํƒ€์ž… PathValues ๋กœ ์ง€์ •

* remove: ๋ถˆํ•„์š”ํŒŒ์ผ ์‚ญ์ œ

* fix: NavigationItem, button -> NavLink ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ ๋ฐ ์ธํ„ฐ๋ ‰์…˜ ์žฌ์ ์šฉ

* fix: NavigationItem className ๋„์–ด์“ฐ๊ธฐ ์ถ”๊ฐ€

* feat: NavigationItem disabled ์ƒํƒœ ํƒœ๊ทธ ์ œ๊ฑฐ

* refactor: Card ๋ฐ Post ์ปดํฌ๋„ŒํŠธ Interaction ์ฃผ์ž… (#55)

* refactor: Card ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ ํƒœ๊ทธ๋ฅผ button์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: Card ์ปดํฌ๋„ŒํŠธ์— Interaction์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Card ์ปดํฌ๋„ŒํŠธ์— disabled ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Card ์ปดํฌ๋„ŒํŠธ์˜ ์‚ฌ์ง„์ด ์ถœ๋ ฅ๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: Card ์ปดํฌ๋„ŒํŠธ์˜ imageContainer์— ํ•˜๋‹จ border์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํ† ๋ฆฌ๋ถ์— disabled์˜ ์‚ฌ๋ก€๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: disabled์˜ ์œ ๋ฌด์— ๋”ฐ๋ผ cursor ์ด๋ฒคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Card ์ปดํฌ๋„ŒํŠธ์˜ disabled ๊ธฐ๋ณธ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์— disabled ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป์ ์šฉ๋œ Interaction์˜ duration์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์— Interaction์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์— Pointer ์ด๋ฒคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์˜ ์‹ค์ œ ์‚ฌ์šฉ ์˜ˆ์‹œ์™€ disabled ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์Šคํƒ€์ผ๋ง์„ ๋‚ด๋ถ€ clsx๋กœ ํ†ต์ผํ•˜์—ฌ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ตœ์ƒ์œ„ button ํƒœ๊ทธ๋ฅผ a ํƒœ๊ทธ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ…์ŠคํŠธ๊ฐ€ ํ‘œํ˜„๋˜๋Š” ๋ถ€๋ถ„์— truncate ํด๋ž˜์Šค๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Label์™€ Title ์ปดํฌ๋„ŒํŠธ์— ์Šคํƒ€์ผ์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Card ์ปดํฌ๋„ŒํŠธ์˜ ํ…์ŠคํŠธ ์š”์†Œ๋“ค์ด ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์‹œ ๋ง์ค„์ž„ํ‘œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป ์ ์šฉ๋œ border์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ ํƒœ๊ทธ๋ฅผ a ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž˜๋ชป ์ ์šฉ๋œ ์Šคํƒ€์ผ๋ง์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์˜ args๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ Default ์ผ€์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ , ๋ง์ค„์ž„ํ‘œ ์ฒ˜๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

* move: disabled ์‹œ ์„ ์–ธ๋œ ๋ถˆํ•„์š”ํ•œ ์†์„ฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: Card ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ ํƒœ๊ทธ๋ฅผ Link ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: Card ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์— MemoryRouter์„ ์ฃผ์ž… ํ›„ To ๊ธฐ๋ณธ ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋ฎ์–ด์”Œ์›Œ์ง€๋Š” block ์š”์†Œ๋ฅผ ์ œ๊ฑฐ ํ›„ className์œผ๋กœ๋งŒ ์Šคํƒ€์ผ์„ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋‚ด์šฉ ํ•„๋“œ์˜ height๋ฅผ ์žฌ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฎ์–ด์”Œ์›Œ์ง€๋Š” block ์š”์†Œ๋ฅผ ์ œ๊ฑฐ ํ›„ className์œผ๋กœ๋งŒ ์Šคํƒ€์ผ์„ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒŒ๋œ date props๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์˜ ์ˆ˜์ •๋œ ๊ตฌ์กฐ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: a ํƒœ๊ทธ์— ์ ํ•ฉํ•œ ๊ธฐ๋ณธ target๊ณผ rel์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์˜ ๊ธฐ๋ณธ target๊ณผ rel ์„ค์ •์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์Šคํ† ๋ฆฌ๋ถ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์— href๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Title ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Label ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ  className props๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: Interaction ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , className์œผ๋กœ ๋ง์ค„์ž„ํ‘œ ์ฒ˜๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” interaction์˜ ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ˆ˜์ •๋œ Interaction์„ Post์— ์žฌ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ˆ˜์ •๋œ interaction์˜ ๋„ค์ด๋ฐ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ˆ˜์ •๋œ Interaction์„ Card ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” className์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: focus ํšจ๊ณผ๋Š” ํ‚ค๋ณด๋“œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

* feat: Role ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#63)

* feat: ์ด๋ฏธ์ง€ asset์„ png ํ˜•ํƒœ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Badge ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: Badge ์ปดํฌ๋„ŒํŠธ์˜ storybook์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Role ์ปดํฌ๋„ŒํŠธ ์ค‘ Hero๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: Hero ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์Šคํ† ๋ฆฌ๋ถ์˜ title์„ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: props์˜ ๋„ค์ด๋ฐ์„ ์ง๊ด€์ ์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋‹จ์ˆœํ•œ ์Šคํƒ€์ผ์„ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ํ˜•์‹์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* rename: ๊ณตํ†ต๋œ ์ด๋ฆ„์„ ๊ฐ€์ง„ Badge๋ฅผ RoleBadge๋กœ ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* rename: ๊ณตํ†ต๋œ ์ด๋ฆ„์„ ๊ฐ€์ง„ Hero๋ฅผ RoleHero๋กœ ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: img์˜ alt ๋„ค์ด๋ฐ์„ ์ง๊ด€์ ์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ตœ์ƒ์œ„ div์˜ ์Šคํƒ€์ผ์„ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•œ import ๋ฌธ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•œ import ๋ฌธ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ปดํฌ๋„ŒํŠธ ๋ฐฐ๊ฒฝ์— ๋ฐ˜์˜๋œ opacity๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํƒ€์ž…์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* fix: opacity ์Šคํƒ€์ผ ์ ์šฉ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: dialog ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#61)

* feat: Dialog ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: useDialog ํ›… ์ƒ์„ฑ

* feat: Dialog ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* remove: ๋ถˆํ•„์š”ํ•œ index.ts ํŒŒ์ผ ์‚ญ์ œ

* refactor: useDialog useState ํƒ€์ž… ๋ช…์‹œ ์ œ๊ฑฐ

* fix: props ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ ๋ฐ btnLayout์— ๋”ฐ๋ฅธ ๋ฒ„ํŠผ ์œ„์น˜ ์ˆ˜์ • + ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: Dialog BlockButton className ์ œ๊ฑฐ

* chore: favicon ์„ค์ • (#58)

* chore: ํŒŒ๋น„์ฝ˜ png ์ถ”๊ฐ€

* chore: index.html ํŒŒ๋น„์ฝ˜ ์„ค์ •

* feat: ์•„์ด์ฝ˜ ์ถ”๊ฐ€ (#74)

* chore: ์ƒˆ๋กœ์šด ์•„์ด์ฝ˜ svg ํŒŒ์ผ 6๊ฐœ ์ถ”๊ฐ€

* feat: ์•„์ด์ฝ˜ ์ปดํฌ๋„ŒํŠธ์— ์ƒˆ๋กœ์šด ์•„์ด์ฝ˜ ์ถ”๊ฐ€

* feat: ์•„์ด์ฝ˜ ์Šคํ† ๋ฆฌ๋ถ ์—…๋ฐ์ดํŠธ (์ƒˆ๋กœ์šด ์•„์ด์ฝ˜ 6๊ฐœ ์ถ”๊ฐ€)

* fix: HeroIndex ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ • (#80)

* fix: HeroIndex์˜ Badge ๋ฐฐ๊ฒฝ์ƒ‰์ƒ/ํฐํŠธ์ƒ‰์ƒ ์ฃผ์ž…๊ฐ€๋Šฅํ•˜๋„๋ก props ์ˆ˜์ •

* feat: HeroIndex ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ ์ˆ˜์ •

* feat: ํ™œ๋™ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (#77)

* feat: ํ™œ๋™ ํŽ˜์ด์ง€ router ์„ค์ •

* feat: ์ž„์‹œ ๋ฐ์ดํ„ฐ ์ด์šฉํ•˜์—ฌ Activity ํŽ˜์ด์ง€ UI ๊ตฌํ˜„

* feat: Toast ๊ตฌํ˜„ (#67)

* feat: toastStore ์ƒ์„ฑ

* feat: Toast ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ ๋ฐ toast ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ •์˜

* feat: useToast ํ›… ์ƒ์„ฑ

* feat: Toast, useToast ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: Layout์— Toast ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

* refactor: ToastType bg -> backgroundColor๋กœ ๋„ค์ด๋ฐ ์ˆ˜์ •

* refactor: Toast ์ปดํฌ๋„ŒํŠธ useState ํƒ€์ž… ์ถ”๋ก  ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: Toast className clsx ์‚ฌ์šฉ

* remove: useToast ์‚ญ์ œ

* fix: useToast -> useToastActions ์‚ฌ์šฉ์œผ๋กœ ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: toastStore ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ์œผ๋กœ ๋ถˆ๋ณ€์„ฑ ์ง€ํ‚ค๊ธฐ

* refactor: animation.css ์ƒ์„ฑ ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ด€๋ จ css ์ฝ”๋“œ ๋ถ„๋ฆฌ

* feat: ๋ฉ”์ธํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (#78)

* feat: ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ถ€๋ถ„์— ์Œ“์ด๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Main ํŽ˜์ด์ง€์˜ ํ‹€์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋“ค์–ด๊ฐ€๋Š” ๋ถ€๋ถ„์„ ์ปดํฌ๋„ŒํŠธํ™”ํ•ฉ๋‹ˆ๋‹ค.

* feat: AnimatedSection์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* chore: gsap ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* refactor: gsap๋ฅผ ์ด์šฉํ•ด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: AnimatedSection์„ ๋ฉ”์ธํŽ˜์ด์ง€์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŠธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€์˜ ๋‘๋ฒˆ์งธ ์„น์…˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* refactor: HeroIndex์˜ width์— 100%๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

* refactor: CalloutNumerical์˜ width์— 100%๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€์˜ ์„ธ๋ฒˆ์งธ section์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๊ณตํ†ต์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ํ”„๋ ˆ์ž„์˜ className์„ ์ƒ์ˆ˜ํ™”ํ•ฉ๋‹ˆ๋‹ค.

* feat: Tab ์ปดํฌ๋„ŒํŠธ์— cursor pointer ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€์˜ ๋„ค๋ฒˆ์งธ section์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Hero ์ปดํฌ๋„ŒํŠธ์˜ content๋ฅผ children ํ˜•ํƒœ๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: HeroIndex ์ปดํฌ๋„ŒํŠธ์˜ content๋ฅผ children ํ˜•ํƒœ๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€์˜ ๋งˆ์ง€๋ง‰ section์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ˆ˜์ •๋œ HeroIndex ์ปดํฌ๋„ŒํŠธ์˜ props ๊ตฌ์กฐ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•œ import ๋ฌธ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

* rename: ๊ณตํ†ต wrapper์˜ ์Šคํƒ€์ผ ๋ช…์นญ์„ ์ง๊ด€์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: Hero ์ปดํฌ๋„ŒํŠธ๊ฐ€ badge์˜ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” badgeText props ๊ฐ’์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* fix: ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์œ„ํ•œ section์˜ ์Šคํƒ€์ผ์„ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€์— scroll ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธ ํŽ˜์ด์ง€์— ์Šคํฌ๋กค ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํฌ๋กค ํŠธ๋ฆฌ๊ฑฐ ์ง„ํ–‰ ์‹œ context๋ฅผ ์ด์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋žœ๋”ฉ ํŽ˜์ด์ง€ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ•œ๊ธ€์ž ์”ฉ ํƒ€์ดํ•‘ ๋˜๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํƒ€์ž„๋ผ์ธ section์— ํ•„์š”ํ•œ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ํƒ€์ž„๋ผ์ธ section์„ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป ๋ฐ˜์˜๋œ RoleHero์˜ ๋””์ž์ธ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํฌ์ง€์…˜ section์˜ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ํฌ์ง€์…˜ section์˜ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์œผ๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

* fix: Hero ์ปดํฌ๋„ŒํŠธ์˜ ์ž˜๋ชป ์ ์šฉ๋œ ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•ต์‹ฌ ๊ฐ€์น˜ section์˜ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•ต์‹ฌ ๊ฐ€์น˜ section ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์œผ๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

* fix: HeroIndex์˜ ์ž˜๋ชป ์ ์šฉ๋œ padding ๊ฐ’์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•œ ์ฃผ์„์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: Title์˜ ์ผ๋ถ€๋ถ„์— accent ์ƒ‰์ƒ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป ์ ์šฉ๋œ ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป ์ ์šฉ๋œ ์Šคํƒ€์ผ์„ ์žฌ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: ๋ถˆํ•„์š”ํ•œ fragment๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ๊ตฌ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ ์šฉ๋œ ์Šคํƒ€์ผ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: section์˜ ๋ทฐํฌํŠธ๋ฅผ dvh๋กœ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•œ ์š”์†Œ์— ์Šคํฌ๋กค ๋ฐ”๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š” global ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋™์ž‘ ์‹œ ๊ธฐ๋ณธ ์Šคํฌ๋กค์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋„๋ก ๊ตฌ์กฐ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: gsap ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ง„์ž…์ ์„ main.tsx๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: context๋ฅผ ์ด์šฉํ•ด context ๋‚ด๋ถ€ section์— ๋Œ€ํ•ด์„œ๋งŒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•˜๋‹จ์—์„œ ์ƒ๋‹จ์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์— ๋ฑƒ์ง€ ์Šคํƒ€์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: HeroIndex์˜ ๋ฑƒ์ง€ ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* move: ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋””๋ฒ„๊น…์„ ์œ„ํ•œ marker ์˜ต์…˜์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* move: ์ƒ๋‹จ ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋””๋ฒ„๊น…์„ ์œ„ํ•œ marker ์˜ต์…˜์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: apply-3 ํŽ˜์ด์ง€ ๋ฐ ์ง€์› ์™„๋ฃŒ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (#81)

* feat: ์ง€์› ๊ณผ์ • ํŽ˜์ด์ง€ PATH ์ถ”๊ฐ€

* feat: ์ง€์› ๊ณผ์ • ํŽ˜์ด์ง€๋“ค router ์„ค์ •

* feat: ์ง€์› ๊ด€๋ จ ํŽ˜์ด์ง€์˜ ํƒ€์ดํ‹€ ๋ฌธ๊ตฌ APPLY_TITLE ๊ฐ์ฒดํ™” ๋ฐ ์ ์šฉ

- ํŒŒ์ผ๋ช… applyData -> applyPageData๋กœ ๋ณ€๊ฒฝ

* rename: faqData -> faqPageData๋กœ ํŒŒ์ผ๋ช… ์ˆ˜์ • ๋ฐ ์ž„ํฌํŠธ ์ˆ˜์ •

* feat: ์ง€์› ๊ด€๋ จ ํŽ˜์ด์ง€ ๋‚ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์‹œ์ง€ ์ƒ์ˆ˜ํ™”

* feat: ์ง€์› ์™„๋ฃŒ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„

* remove: ์ง€์› ์™„๋ฃŒํŽ˜์ด์ง€ ๋ถˆํ•„์š”ํ•œ ๋ฒ„ํŠผ className ์‚ญ์ œ

* feat: apply-3 ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ ์ž…๋ ฅ ํŽ˜์ด์ง€)

* feat: apply-3 ํŽ˜์ด์ง€ router์— ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

* fix: ApplyComplete ๋ฒ„ํŠผ className w-full ์ถ”๊ฐ€

* refactor: ApplyApplicationInfo ์ปดํฌ๋„ŒํŠธ css ์ˆ˜์ •

* refactor: ApplyComplete ํŽ˜์ด์ง€ css ์ˆ˜์ • ๋ฐ Link -> navigate ์‚ฌ์šฉ

* refactor: ApplyApplicationInfo ํŽ˜์ด์ง€ Link -> navigate ์‚ฌ์šฉ

* fix: ์ง€์› ์™„๋ฃŒ ํŽ˜์ด์ง€ ์ปจํ…์ธ  ์ค‘์•™ ์ •๋ ฌ

* fix: ProgressIndicator key๊ฐ’ ์ถ”๊ฐ€

* fix: APPLY_HELPER_MESSAGE ๋„ค์ด๋ฐ ๋ฐฉ์‹ ํ†ต์ผ

* fix: APPLY_MESSAGE ๊ตฌ์กฐ ๋ฐ ๋ฌธ๊ตฌ ์ˆ˜์ •

* refactor: ApplyComplete ์ปดํฌ๋„ŒํŠธ ๋‚ด์šฉ๊ธ€ ๋ฐ ๋ฒ„ํŠผ ๋ฌธ๊ตฌ ์ƒ์ˆ˜ํ™”

* feat: File, Uploader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„  (#76)

* feat: validateFileType util ํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: file ํ™•์žฅ์ž ๋ฐ fileMine ๊ฐ์ฒด ์ƒ์„ฑ

* feat: changeFileSizeUnit util ํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: TextArea ์ปดํฌ๋„ŒํŠธ outline-none ํด๋ž˜์Šค ์ถ”๊ฐ€

* fix: InputArea ์ปดํฌ๋„ŒํŠธ w-full ๋กœ ๋ณ€๊ฒฝ

* feat: Uploader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ ๋ฐ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: File ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ ๋ฐ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: InputFile ์ปดํฌ๋„ŒํŠธ(File+Uploader) ๊ตฌํ˜„ ๋ฐ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* fix: inputFile -> InputFile ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ ๋ฐ file ํƒ€์ž…์— ๋”ฐ๋ผ key๊ฐ’ ์ฒ˜๋ฆฌ

* feat: InputFile ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* refactor: File openFile ํ•จ์ˆ˜ ์ฝ”๋“œ ์ˆ˜์ • (if๋ฌธ ๋Œ€์‹  ์‚ผํ•ญ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ)

* fix: File ์ปดํฌ๋„ŒํŠธ์˜ deleteHandler event ํƒ€์ž… ์ˆ˜์ •

* remove: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ

* feat: fileUrl ํƒ€์ž… ์ถ”๊ฐ€

* fix: fileUrl ํƒ€์ž… ๋Œ€๋ฌธ์ž ์‹œ์ž‘์œผ๋กœ ์ˆ˜์ •

* feat: File ์ปดํฌ๋„ŒํŠธ CDN URL๋งŒ ๋ฐ›๋Š” ๊ฑธ๋กœ ์ˆ˜์ •

* fix: InputFile๋„ CDN URl ๋งŒ ๋ฐ›๋„๋ก ์ˆ˜์ •

* fix: Uploader disabled ์ƒํƒœ ์ˆ˜์ • ๋ฐ ๊นœ๋ฐ•์ž„ ํ˜„์ƒ ํ•ด๊ฒฐ + ์ค‘๋ณต ์ฝ”๋“œ ์ •๋ฆฌ

* feat: Uploader disabled ์Šคํ† ๋ฆฌ ์ถ”๊ฐ€

* style: File ์ปค์„œํฌ์ธํ„ฐ ์ถ”๊ฐ€

* docs: File ์Šคํ† ๋ฆฌ๋ถ ์—…๋ฐ์ดํŠธ

* feat: InputFile UI ์—…๋ฐ์ดํŠธ (๋ ˆ์ด๋ธ” ๋ฐ ์šฉ๋Ÿ‰ ํ‘œ๊ธฐ ์ถ”๊ฐ€)

* feat: feedback ํƒ€์ž…์˜ File ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

* fix: feedback ํƒ€์ž… File cursor pointer ์ œ๊ฑฐ

* fix: Uploader ์ปดํฌ๋„ŒํŠธ ํ™•์žฅ์ž ๊ฒ€์ฆ ๋กœ์ง ์ œ๊ฑฐ

ํ™•์žฅ์ž ๊ฒ€์ฆ์€ File ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง ํƒ€์ด๋ฐ์— ์ˆ˜ํ–‰

* fix: InputFile์—์„œ File ์ปดํฌ๋„ŒํŠธ ์ œ๊ฑฐ File ์ปดํฌ๋„ŒํŠธ๋Š” children์œผ๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •

* refactor: fileStyle ๋ถ„๋ฆฌ

* fix: FileUrl id ํƒ€์ž… string์œผ๋กœ ๋ณ€๊ฒฝ

* design: useState์˜ <boolean> ์‚ญ์ œ

* refactor: maxSize ์ดˆ๊ธฐ๊ฐ’ ์‚ญ์ œ

* feat: ํ”„๋กœ์ ํŠธ, ํ”„๋กœ์ ํŠธ ์ƒ์„ธํŽ˜์ด์ง€ ๊ตฌํ˜„ (#84)

* feat: ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€ ํ‹€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํ„ฐ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ์™€ ํ•ด์ปคํ†ค์„ ์œ„ํ•œ ์ž„์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ํ›„๊ธฐ section์„ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋กœ ํผ๋ธ”๋ฆฌ์‹ฑ ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€์˜ ํ‹€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€์˜ ๊ฒฝ๋กœ๋ฅผ router์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: CalloutInformation ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ ํƒœ๊ทธ์— w-full์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ์ƒ์„ธํŽ˜์ด์ง€์˜ ํ™”๋ฉด์„ ๋”๋ฏธ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ํผ๋ธ”๋ฆฌ์‹ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€์˜ ๋ฒ„ํŠผ ํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป ์ ์šฉ๋œ ๋ฒ„ํŠผ ์•„์ด์ฝ˜์˜ ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: content๋ฅผ ๊ฐ์‹ธ๋Š” wrapper์˜ ๋†’์ด๋ฅผ ๊ณ ์ •๊ฐ’์ด ์•„๋‹Œ ์ตœ์†Ÿ ๊ฐ’์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•ด์ปคํ†ค ํŽ˜์ด์ง€ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๊ฒฝ๋กœ ํ˜ธ์ถœ์„ ์ƒ์ˆ˜ํ™”๋œ ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* design: grid ๋Œ€์‹  flex-col ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ column ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

* fix: router์˜ import order์„ eslint ์„ค์ •์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* design: ๋ ˆ์ด์•„์›ƒ์˜ ์ตœ์†Œ ํฌ๊ธฐ๋ฅผ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: TabItem์˜ props ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝ ํ›„ disabled ์†์„ฑ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* refactor: type์œผ๋กœ ์„ ์–ธ๋œ props๋ฅผ interface ๊ตฌ์กฐ๋กœ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* feat: TabItem์˜ ๋น„ํ™œ์„ฑํ™” ์ƒ‰์ƒ๊ณผ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ ์ œ์–ด๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•ด์ปคํ†ค Tab์— disabled์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€์— Select ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ธํ„ฐ๋ ‰์…˜ focus-visible ํšจ๊ณผ ๋‚˜ํƒ€๋‚  ๋•Œ border๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#89)

* fix: focus-visible ํšจ๊ณผ ๋‚˜ํƒ€๋‚  ๋•Œ border์ด ๋ณด์ด์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* fix: scale ๊ณ ๋ คํ•œ interaction ์Šคํƒ€์ผ ์ƒ์„ฑ

* refactor: scale ์ธํ„ฐ๋ ‰์…˜์ด ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉ (์•„์ฝ”๋””์–ธ, ๋ผ๋ฒจ๋ฒ„ํŠผ)

* bug: ๋นŒ๋“œ ํŒŒ์ผ ์ƒ์„ฑ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ ์ˆ˜์ • (#88)

* refactor: BlockButton์˜ style props๋ช…์„ ๊ธฐ๋ณธ button style๊ณผ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ ์ง“์Šต๋‹ˆ๋‹ค.

* docs: ์ˆ˜์ •๋œ props ์ด๋ฆ„์„ BlockButton ์Šคํ† ๋ฆฌ ํŒŒ์ผ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* docs: ์ž˜๋ชป ๊ธฐ์ž…๋œ size ๋ช…์นญ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* docs: fileId ์˜ ๊ฐ’์„ file ํƒ€์ž…์—์„œ ์„ ์–ธํ•œ string ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* docs: snackBar์—์„œ ๋ˆ„๋ฝ๋œ onaction props๋ฅผ ์Šคํ† ๋ฆฌ ํŒŒ์ผ์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

* refactor: TabItem์˜ ์ธํ„ฐํŽ˜์ด์Šค ์ค‘ id๋ฅผ ์ปค์Šคํ…€ props๋กœ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” import ๋ฌธ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* docs: ์ž˜๋ชป ์„ ์–ธ๋œ ์ปดํฌ๋„ŒํŠธ ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: ํƒ€์ž… import ๊ฒฝ๋กœ๋ฅผ ์ ˆ๋Œ€๊ฒฝ๋กœ์—์„œ ์ƒ๋Œ€๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* fix: BlockButton์˜ ์ธํ„ฐํŽ˜์ด์Šค ๋ช…์€ ๊ธฐ์กด์˜ ์ด๋ฆ„์œผ๋กœ ์žฌ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: apply-2 ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (#82)

* feat: ApplyVerify ํŽ˜์ด์ง€ UI ๊ตฌํ˜„

* fix: InputField ํ—ฌํผ๋ฉ”์‹œ์ง€ ํฐํŠธ์ƒ‰์ƒ ์กฐ๊ฑด๋ถ€ ์ˆ˜์ •

* refactor: Title ๊ฐ์‹ธ๋Š” div ํƒœ๊ทธ ์ œ๊ฑฐ

* fix: ์ž˜๋ชป ์ˆ˜์ •๋œ ๋ถ€๋ถ„ ๋ณต๊ตฌ

* fix: isExist -> isNewApplicant ๋กœ ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ

* refactor: ์ค‘์ฒฉ ์‚ผํ•ญ์—ฐ์‚ฐ์ž ํ‘œํ˜„ ๋ณ€๊ฒฝ

* refactor: ์ค‘์ฒจ์‚ผํ•ญ์—ฐ์‚ฐ์ž clsx ์‚ฌ์šฉ

* refactor: ApplyVerify๋ฅผ ApplyVerifyEmail, ApplyVerifyPin ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌ

* feat: Input ์ปดํฌ๋„ŒํŠธ disabled ์ผ๋•Œ text ์ƒ‰์ƒ ์ถ”๊ฐ€

* fix: NewTabLink className props์œผ๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •

* feat: ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ํŽ˜์ด์ง€ ์—ฐ๊ฒฐ

* feat: ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ •์ผ ๊ฒฝ์šฐ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง

* fix: applyInfoList NewTabLink className ๋‹ฌ๊ธฐ

* feat: ์ด๋ฉ”์ผ ์ธ์ฆ ํŽ˜์ด์ง€ ๋ผ์šฐํ„ฐ ์„ค์ •

* fix: ์ด๋ฉ”์ผ ์ธ์ฆ ํŽ˜์ด์ง€ PATH ์ˆ˜์ •

* remove: ApplyVerify ์ปดํฌ๋„ŒํŠธ ์‚ญ์ œ

* feat: APPLY_TITLE ๋น„๋ฐ€๋ฒˆํ˜ธ์žฌ์„ค์ • ํŽ˜์ด์ง€ ํƒ€์ดํ‹€ ์ถ”๊ฐ€

* feat: ์ง€์›ํ•˜๊ธฐ ํŽ˜์ด์ง€์—์„œ ์ด๋ฉ”์ผ ์ธ์ฆ ํŽ˜์ด์ง€ navigate ์„ค์ •

* fix: ApplyApplicationInfo ์ปดํฌ๋„ŒํŠธ isReady -> isStepCompleted ๋ณ€์ˆ˜๋ช… ์ˆ˜์ •

* fix: prop ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง ๋ถˆ๊ฐ€๋กœ ๋ฐฉ์‹ ๋ณ€๊ฒฝ

* fix: PATH ๋ณ€์ˆ˜๋ช… applyVerify๋กœ ์žฌ์ˆ˜์ •

* remove: ๋ถˆํ•„์š”ํ•œ ์ž„ํฌํŠธ ์‚ญ์ œ

* refactor: setter ์ œ๊ฑฐ

* refactor: Input isError ์˜ต์…”๋„ ์ฒ˜๋ฆฌ

* refactor: ์ˆœํ™˜ ๋ Œ๋”๋ง ๋ฌธ์ œ ๋ฐœ์ƒ ์šฐ๋ ค๋กœ ApplyVerify ์ปดํฌ๋„ŒํŠธ์—์„œ ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋งํ•˜๋„๋ก ์ˆ˜์ •

* refactor: Apply ํŽ˜์ด์ง€ ์ค‘ main ํƒœ๊ทธ -> sectionํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ ๋ฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” form ํƒœ๊ทธ์˜ action='' ์ œ๊ฑฐ

* refactor: email ๋”๋ฏธ๋ฐ์ดํ„ฐ ๋นˆ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ

* refactor: useState ๋ถˆ๋ฆฌ์–ธํƒ€์ž… ์ง€์ • ์ œ๊ฑฐ

* refactor: ApplyVerify ์กฐ๊ฑด๋ถ€ ๋ฆฌํŒฉํ† ๋ง

* refactor: ApplyVerify ์‚ผํ•ญ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜์—ฌ return ํ•˜๊ธฐ

* feat: ์ง€์›์„œ ์ž‘์„ฑ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„(apply-4) (#85)

* feat: ApplyRegistration ํŽ˜์ด์ง€ ์ƒ์„ฑ ๋ฐ select์— ๋”ฐ๋ฅธ ๋ฌธํ•ญ ๋‚˜ํƒ€๋‚˜๋„๋ก UI ๊ตฌํ˜„

* fix: InputArea ๊ณ ์ •๋œ width ๊ฐ’ ์ œ๊ฑฐ

* refactor: TextArea ์ปดํฌ๋„ŒํŠธ outline none ์ฒ˜๋ฆฌ ๋ฐ ์ž๋™ ๋†’์ด ์กฐ์ ˆ์„ ์œ„ํ•œ row=1 ์ง€์ •

* feat: ํ…์ŠคํŠธ ์–‘๋งŒํผ TextArea์˜ ๋†’์ด ์ž๋™ ์กฐ์ ˆ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* feat: ApplyRegistration ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ ๋ผ์šฐํ„ฐ ๋“ฑ๋ก

* feat: ์—๋Ÿฌ์ผ ๊ฒฝ์šฐ TextArea border ์ฒ˜๋ฆฌ

* feat: InputArea ํ—ฌํผ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ์—๋Ÿฌ์ผ ๊ฒฝ์šฐ ์Šคํƒ€์ผ ์ฒ˜๋ฆฌ

* refactor: ๋ถˆํ•„์š”ํ•œ ์Šคํƒ€์ผ ๋ฐ ํƒœ๊ทธ ์ œ๊ฑฐ

* remove: console.log ์ œ๊ฑฐ

* feat: select ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์œผ๋กœ ํฌ์ง€์…˜ ์„ ํƒํ•˜๊ธฐ ๋ฐ select outside ํด๋ฆญ ์‹œ ๋‹ซํžˆ๊ธฐ

* feat: mergeRefs ์œ ํ‹ธํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: mergeRefs ์œ ํ‹ธํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜์—ฌ textareaRef, ref ๋ฐ›๋„๋ก ํ•จ

* refactor: ApplyRegistration ์ฝ”๋“œ ์ •๋ฆฌ

* refactor: POSITIONS ๋ฐฐ์—ด ์ƒ์ˆ˜ ์‚ฌ์šฉ

* feat: Uploader ์ตœ๋Œ€ ๊ฐ€๋Šฅ ์šฉ๋Ÿ‰๊ฐ’ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋„๋ก ํ•จ.

* refactor: ApplyRegistration ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ ๋”๋ฏธ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉํ•˜์—ฌ InputFile ๊ตฌํ˜„

* refactor: InputFile File ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์—ด์„ ๋ฐ›๋„๋ก ์ˆ˜์ •

File ์ปดํฌ๋„ŒํŠธ ๋ฆฌ์ŠคํŠธ๋“ค์„ ๊ฐ์‹ธ๋Š” ์ปจํ…Œ์ด๋„ˆ ํƒœ๊ทธ๋ฅผ ์ผ์ผ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š๋„๋ก InputFile์—์„œ ์ด๋™์‹œํ‚ค๊ธฐ ์œ„ํ•จ.
์ถ”๊ฐ€๋กœ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—๋งŒ ์ปจํ…Œ์ด๋„ˆ ํƒœ๊ทธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด children ์†์„ฑ์ด ์•„๋‹Œ ๋ฐฐ์—ด์„ ๋ฐ›๋„๋ก ๋ณ€๊ฒฝ.

* refactor: ApplyRegistration์— ์ˆ˜์ •๋œ InputFile ์ ์šฉ

* refactor: InputArea errorHelper ์กฐ๊ฑด๋ถ€ ์ˆ˜์ •

* docs: InputArea ์Šคํ† ๋ฆฌ๋ถ ์—…๋ฐ์ดํŠธ

* docs: mergeRefs TSDoc ์ถ”๊ฐ€

* fix: ์ง๊ตฐ ์„ ํƒ ์ดˆ๊ธฐ์—๋งŒ ํ‚ค๋ณด๋“œ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•œ ๋ฒ„๊ทธ ์ˆ˜์ •

* fix: ApplyRegistration select ํ‚ค๋ณด๋“œ ํƒญ ์„ ํƒ ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* fix: ApplyRegistration ํ‚ค๋ณด๋“œ ํƒ€์ดํ•‘ ๊ธฐ๋Šฅ ์ œ๊ฑฐ

select ์„ ํƒ์ง€๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ input์ด๋ฏ€๋กœ ํƒ€์ดํ•‘ ๊ธฐ๋Šฅ ๋ถˆํ•„์š”
ํƒ€์ดํ•‘์ด ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ, ํ˜ผ๋ž€์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ

* design: Input ์ปดํฌ๋„ŒํŠธ readonly์ผ ๊ฒฝ์šฐ์—” cursor default

* refactor: TextArea์— className props ์ถ”๊ฐ€, focus ํšจ๊ณผ ๋””์ž์ธ ์ˆ˜์ •

* docs: InputArea ์Šคํ† ๋ฆฌ๋ถ description ์ถ”๊ฐ€

* feat: forwardRef ์ปดํฌ๋„ŒํŠธ์— displayName ๋‹ฌ๊ธฐ

* refactor: Input, InputField, TextArea isError ์˜ต์…”๋„ ์ฒ˜๋ฆฌ

* remove: ๋ถˆํ•„์š”ํ•œ index.ts ์‚ญ์ œ

* refactor: setIsSelectOpen false๋กœ ์ˆ˜์ •

* refactor: MutableRefObject import ํ•˜๊ธฐ

* refactor: Ref import ํ•˜๊ธฐ

* feat: ๋ฆฌํŒฉํ† ๋ง ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€ (#92)

๋ฆฌํŒฉํ† ๋ง ์ด์Šˆ ํ…œํ”Œ๋ฆฟ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* chore: api ์—ฐ๋™์„ ์œ„ํ•œ axios, tanstack query ์„ธํŒ… ๋ฐ ํ…Œ์ŠคํŠธ (#90)

* feat: QueryClientProvider ๋ฐ DevTools ์„ค์ •

* chore: axios ์„ค์น˜

* chore: gitignore์— .env ์ถ”๊ฐ€

* feat: axiosInstance ์ƒ์„ฑ

* feat: vite proxy ์„ค์ •

* feat: ํ”„๋ก์‹œ ์„œ๋ฒ„ ์ด์šฉํ•˜๋ฏ€๋กœ axioInstance BASE_URL ์ž„์‹œ๋กœ '/api' ์„ค์ •

* feat: requestHandler ์ƒ์„ฑ

* feat: ApiResponse ๊ณตํ†ต ํƒ€์ž… ์ •์˜ ( + Sort)

* feat: fetchMiniStudies ํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: Tanstack query ์‚ฌ์šฉํ•œ useMiniStudies ํ›… ์ƒ์„ฑ

* refactor: ๋ฏธ๋‹ˆ์Šคํ„ฐ๋”” api ์—ฐ๋™

* refactor: ๋ฏธ๋‹ˆ์Šคํ„ฐ๋”” fetch ํ•จ์ˆ˜ ํ•œ์ค„๋กœ ์ค„์ด๊ธฐ

* refactor: axiosInstance ๋ถˆํ•„์š”ํ•œ ๋ณ€์ˆ˜ ์ œ๊ฑฐ

* remove: ๋ถˆํ•„์š”ํ•œ index.ts ํŒŒ์ผ ์‚ญ์ œ

* rename: axiosInstance.ts -> httpClient.ts ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ ๋ฐ utils/ ๋กœ ์ด๋™

* refactor: ๊ฒฝ๋กœ ์ˆ˜์ •

* refactor: ReactQueryDevtools๋Š” ๊ฐœ๋ฐœํ™˜๊ฒฝ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ์ฒ˜๋ฆฌ

* refactor: api endpoint ๋ฐ ํƒ€์ž… ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ

* refactor: fetchMiniStudies -> getMiniStudies๋กœ ํ•จ์ˆ˜๋ช… ๋ณ€๊ฒฝ

* refactor: types ํด๋” ์ •๋ฆฌ

* refactor: types ํด๋” ์ •๋ฆฌํ•œ ํŒŒ์ผ๋“ค ๊ฒฝ๋กœ ์ˆ˜์ •

* feat: requestHandler์— 401,403, 500, ๊ธฐํƒ€ ๋„คํŠธ์›Œํฌ ์—๋Ÿฌ ์ „์—ญ ์ฒ˜๋ฆฌ

* feat: ApiResponse์˜ State ์ข…๋ฅ˜ ์—…๋ฐ์ดํŠธ

* refactor: TODO ์ถ”๊ฐ€

* refactor: Sort ํƒ€์ž… sort ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌ ๋ฐ ์ ์šฉ

* refactor: requestHandler ์ œ๋„ค๋ฆญ ํƒ€์ž… ์ˆ˜์ • (#102)

* refactor: requestHandler ์ œ๋„ค๋ฆญ ํƒ€์ž… ์ˆ˜์ •

* refactor: getMiniStudies์—์„œ ApiResponse ์ œ๊ฑฐ

* feat: CheckBox ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#86)

* feat: CheckBox ์ปดํฌ๋„ŒํŠธ์˜ type์„ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

* feat: CheckBox ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” CheckBoxIcon ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: CheckBox ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* docs: CheckBox ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

* design: interaction์˜ click ์š”์†Œ ํšจ๊ณผ๋ฅผ ์นดํ…Œ๊ณ ๋ฆฌํ™”ํ•ฉ๋‹ˆ๋‹ค.

* design: CheckBox์— interaction ์š”์†Œ๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์‹ค์ œ interaction์ด ์ ์šฉ๋˜๋Š” ํƒœ๊ทธ์— interaction์„ ์žฌ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* style: import ๋ฌธ์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ƒ๋Œ€๊ฒฝ๋กœ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* typo: ์ปดํฌ๋„ŒํŠธ์˜ ์˜คํƒˆ์ž๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: CheckBox์— hover interaction์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* typo: ํ•จ์ˆ˜์™€ ํƒ€์ž… ๋ช…์„ ํŒŒ์Šค์นผ ์ผ€์ด์Šค๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: interaction์„ ์ปค์Šคํ…€ ํ•˜์—ฌ CheckBox ์ปดํฌ๋„ŒํŠธ์— ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

* docs: checkbox ์Šคํ† ๋ฆฌ ํŒŒ์ผ์— interaction์ด ์ ์šฉ๋˜๋Š” ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* docs: useState ์„ render ์ฝœ๋ฐฑ์—์„œ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: tabIndex๋ฅผ ์ด์šฉํ•ด interaction ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” div์— interaction์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” interaction ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: interaction์ด ์ ์šฉ๋˜๋Š” div์— tabIndex๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” group ์†์„ฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: Icon ์ปดํฌ๋„ŒํŠธ์˜ import ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: interaction์„ ์œ„ํ•œ div์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ค์ œ ์š”์†Œ์— interaction์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* fix: focus ์‹œ before ๊ฐ€์ƒ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ž์‹ ์š”์†Œ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ focus ๋˜๋„๋ก ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์Šคํƒ€์ผ ํด๋” ๋ฆฌํŒฉํ† ๋ง (#100)

* refactor: ๋ธ”๋Ÿญ ๋ฒ„ํŠผ, ๋ผ๋ฒจ ๋ฒ„ํŠผ ์Šคํƒ€์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ํด๋”๋กœ ์ด๋™

* refactor: file ์Šคํƒ€์ผ ํŒŒ์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ํด๋”๋กœ ์ด๋™

* refactor: ์•„์ด์ฝ˜ ์Šคํƒ€์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ํด๋”๋กœ ์ด๋™

* refactor: ํƒ€์ดํ‹€ ์Šคํƒ€์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ํด๋”๋กœ ์ด๋™

* refactor: ๋ ˆ์ด๋ธ” ์Šคํƒ€์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ํด๋”๋กœ ์ด๋™

* refactor: ์ง๊ตฐ๋ช…, ์ด๋ฉ”์ผ ๋ณ€๊ฒฝ ๋ฐ ๋ฐ๋ธŒ์˜ต์Šค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋น„ํ™œ์„ฑํ™” (#104)

* refactor: ํ”„๋กœ์ ํŠธ ๋งค๋‹ˆ์ €์—์„œ ํ”„๋กœ๋•ํŠธ ๋งค๋‹ˆ์ €๋กœ ๋ณ€๊ฒฝ

* refactor: [email protected]๋กœ ๋ณ€๊ฒฝ

* refactor: ๋ฉ”์ธํŽ˜์ด์ง€ ๋ฐ๋ธŒ์˜ต์Šค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋น„ํ™œ์„ฑํ™” ์ฒ˜๋ฆฌ

* feat: ์ ํ†ก ์กฐํšŒ ๊ธฐ๋Šฅ ๋ฐ EmptyData ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#99)

* feat: jectalk Response ํƒ€์ž… ์ƒ์„ฑ

* feat: getJectalks fetch ํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: useJectalks ํ›… ์ƒ์„ฑ

* feat: EmptyData ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๋ฐ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: activity page, ์žญํ†ก ์กฐํšŒ API ์—ฐ๊ฒฐ ๋ฐ EmptyData ์ปดํฌ๋„ŒํŠธ ์ ์šฉ

* refactor: jectalk fetch ํ•จ์ˆ˜ ํƒ€์ž… ์ˆ˜์ •

* refactor: EmptyData ์ปดํฌ๋„ŒํŠธ Label ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ์ˆ˜์ •

* refactor: react-query ์‚ฌ์šฉ ํ›…์€ Query ์ ‘๋ฏธ์‚ฌ ์‚ฌ์šฉ

* refactor: useQuery ์—๋Ÿฌ ๋กœ๊ทธ  ์ถœ๋ ฅ

* refactor: ์—๋Ÿฌ ๋กœ๊ทธ ๋ฌธ๊ตฌ ์ˆ˜์ •

* feat: ์ ํ†ก summary ํ‘œ์‹œ ๋ฐ EmptyData ์กฐ๊ฑด๋ถ€ ์ˆ˜์ • (#111)

* feat: ์ ํ†ก ๋ ˆ์ด๋ธ” ํ‘œ์‹œ

* refactor: ๋ฏธ๋‹ˆ์Šคํ„ฐ๋””, ์ ํ†ก ๋ Œ๋”๋ง ์กฐ๊ฑด ์ˆ˜์ •

* feat: ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#109)

* feat: ํŒŒ์ผ ์—…๋กœ๋“œ api ์š”์ฒญ ํ•จ์ˆ˜ ๋ฐ ํ›… ์ƒ์„ฑ

* fix: Uploader ์ปดํฌ๋„ŒํŠธ ๋™์ผํ•œ ํŒŒ์ผ ์—ฐ์† ์„ ํƒ ๋ถˆ๊ฐ€ ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* refactor: changeFileSizeUnit ์œ ํ‹ธํ•จ์ˆ˜ ์ˆ˜์ •

- ๋‹จ์œ„ ํ‘œ๊ธฐ ์—ฌ๋ถ€ ์ถ”๊ฐ€

* feat: validateMaxSize ์œ ํ‹ธํ•จ์ˆ˜ ์ถ”๊ฐ€

* feat: Portfolio, NewPortfolio ํƒ€์ž… ์ƒ์„ฑ

* remove: FileUrl ํƒ€์ž… ์‚ญ์ œ

* chore: lottie-react ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

* chore: loadingSpinner json ํŒŒ์ผ ์ถ”๊ฐ€

* refactor: select ์™ธ๋ถ€ ํด๋ฆญ ์‹œ ๋‹ซํžˆ๊ธฐ ๋กœ์ง useCloseOutSide ํ›…์œผ๋กœ ๋ถ„๋ฆฌ

* feat: S3 ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ ๋ฐ File ์ปดํฌ๋„ŒํŠธ๋ช… FileItem์œผ๋กœ ๋ณ€๊ฒฝ

* docs: FileItem ์Šคํ† ๋ฆฌ๋ถ ์—…๋ฐ์ดํŠธ

* refactor: InputFile์˜ fileNode prop -> children์œผ๋กœ ๋ณ€๊ฒฝ

* docs: InputFile ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: ํŒŒ์ผ presignedUrl ์ƒ์„ฑ ์š”์ฒญ ๋ฐ ApplyRegistration์—์„œ ๋ฌธํ•ญ ์ฝ”๋“œ ๋ถ„๋ฆฌ

* feat: ๋„คํŠธ์›Œํฌ ๋ถˆ์•ˆ์ • ์ด์Šˆ, ํ™•์ธํ•  ์ˆ˜ ์—†๋Š” ํŒŒ์ผ ํ˜•์‹ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

* fix: eslint ์—๋Ÿฌ ์ˆ˜์ •

* refactor: uploadFileToS3 axios ํ•จ์ˆ˜ ํŒŒ์ผ ๋ถ„๋ฆฌ ๋ฐ mutate ๋ณ€์ˆ˜๋ช… ๋ถ™์ด๊ธฐ

* feat: S3 ํŒŒ์ผ ์—…๋กœ๋“œ ์‹คํŒจ ์‹œ retry 3ํšŒ ์„ค์ •

* design: ๋ฉ”์‹œ์ง€ ๋ฌธ๊ตฌ ์ˆ˜์ •

* feat: ์†์ƒ๋œ ํŒŒ์ผ ํ™•์ธ ๋ฐ ๋ถ„๋ฆฌํ•ด์ฃผ๋Š” ์œ ํ‹ธํ•จ์ˆ˜ ์ƒ์„ฑ

* fix: ํŒŒ์ผ ํ•„ํ„ฐ๋ง ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ˆ˜์ •

- pdf๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ์ผ ๊ฒฝ์šฐ ์—๋Ÿฌ ํ† ์ŠคํŠธ๋งŒ ์ œ์‹œ
- ์†์ƒ๋œ pdf ํŒŒ์ผ์ผ ๊ฒฝ์šฐ ์—๋Ÿฌ UI ํŒŒ์ผ, ํ† ์ŠคํŠธ ์ œ์‹œ

* feat: ํŒŒ์ผ ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

* feat: ์—…๋กœ๋“œ ์ค‘์ธ ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ ์ทจ์†Œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ๋„คํŠธ์›Œํฌ ์—๋Ÿฌ์‹œ ํŒŒ์ผ ์—…๋กœ๋“œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ˆ˜์ •

* refactor: fileExtensions ๋ณ€์ˆ˜๋ช… ๋ณต์ˆ˜ ์ฒ˜๋ฆฌ

* refactor: changeFileSizeUnit ์œ ํ‹ธํ•จ์ˆ˜ ๋กœ์ง ์ˆ˜์ • ๋ฐ ๋ฆฌํŒฉํ† ๋ง

* refactor: ์œ ํ‹ธ ํ•จ์ˆ˜ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•œ ๊ฐœํ–‰ ์ฒ˜๋ฆฌ

* refactor: ์‘๋‹ต ๋ฐ์ดํ„ฐ ํƒ€์ž…๋ช… ~ResponseData ํ˜•์‹์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: ์œ ํ‹ธ ํ•จ์ˆ˜ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•œ ๊ฐœํ–‰ ์ฒ˜๋ฆฌ

* refactor: splitValidAndInvalidFiles ์œ ํ‹ธํ•จ์ˆ˜ filter -> reduce ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ

* refactor: useCloseOutside ์–ผ๋ฆฌ๋ฆฌํ„ด

* refactor: Uploader handleClick ํ•จ์ˆ˜ ์–ผ๋ฆฌ๋ฆฌํ„ด

* refactor: description ๋„์–ด์“ฐ๊ธฐ ์ฒ˜๋ฆฌ

* refactor: FileField ๊ฐ€๋…์„ฑ์„ ์œ„ํ•œ ๊ฐœํ–‰ ์ฒ˜๋ฆฌ

* refactor: FileItem์˜ extractFileInfo ์œ ํ‹ธํ•จ์ˆ˜ ์ƒ์„ฑ ํ›„ ์ ์šฉ

* refactor: ํฌํŠธํด๋ฆฌ์˜ค ์—…๋กœ๋“œ api ์‘๋‹ต ๋ฐ์ดํ„ฐ keyName -> cdnUrl ์ˆ˜์ • ๋ฐ˜์˜

* remove: validateFileType ์œ ํ‹ธ ํ•จ์ˆ˜ ์ œ๊ฑฐ

* refactor: ํƒ€์ž…๋ช…์— Response, Request suffix ์ถ”๊ฐ€

- uploadPortfolio.ts
- answer.ts

* refactor: ์ ํ†ก, ๋ฏธ๋‹ˆ์Šคํ„ฐ๋”” ๋ฐ์ดํ„ฐํƒ€์ž… Response suffix ์ถ”๊ฐ€

* remove: ๋ถˆํ•„์š”ํ•œ ๋กœ๊ทธ ์ถœ๋ ฅ ์ฝ”๋“œ ์ œ๊ฑฐ

* feat: ์ง€์›์„œ ํ”Œ๋กœ์šฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#112)

* feat: ํŒŒ์ผ ์—…๋กœ๋“œ api ์š”์ฒญ ํ•จ์ˆ˜ ๋ฐ ํ›… ์ƒ์„ฑ

* fix: Uploader ์ปดํฌ๋„ŒํŠธ ๋™์ผํ•œ ํŒŒ์ผ ์—ฐ์† ์„ ํƒ ๋ถˆ๊ฐ€ ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* refactor: changeFileSizeUnit ์œ ํ‹ธํ•จ์ˆ˜ ์ˆ˜์ •

- ๋‹จ์œ„ ํ‘œ๊ธฐ ์—ฌ๋ถ€ ์ถ”๊ฐ€

* feat: validateMaxSize ์œ ํ‹ธํ•จ์ˆ˜ ์ถ”๊ฐ€

* feat: Portfolio, NewPortfolio ํƒ€์ž… ์ƒ์„ฑ

* remove: FileUrl ํƒ€์ž… ์‚ญ์ œ

* chore: lottie-react ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

* chore: loadingSpinner json ํŒŒ์ผ ์ถ”๊ฐ€

* refactor: select ์™ธ๋ถ€ ํด๋ฆญ ์‹œ ๋‹ซํžˆ๊ธฐ ๋กœ์ง useCloseOutSide ํ›…์œผ๋กœ ๋ถ„๋ฆฌ

* feat: S3 ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ ๋ฐ File ์ปดํฌ๋„ŒํŠธ๋ช… FileItem์œผ๋กœ ๋ณ€๊ฒฝ

* docs: FileItem ์Šคํ† ๋ฆฌ๋ถ ์—…๋ฐ์ดํŠธ

* refactor: InputFile์˜ fileNode prop -> children์œผ๋กœ ๋ณ€๊ฒฝ

* docs: InputFile ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: ํŒŒ์ผ presignedUrl ์ƒ์„ฑ ์š”์ฒญ ๋ฐ ApplyRegistration์—์„œ ๋ฌธํ•ญ ์ฝ”๋“œ ๋ถ„๋ฆฌ

* feat: ์ง€์›์„œ ๋ฌธํ•ญ ์กฐํšŒ api ํ•จ์ˆ˜ ๋ฐ ํ›… ์ƒ์„ฑ

* remove: validateFileType ์œ ํ‹ธํ•จ์ˆ˜ ์‚ญ์ œ

* feat: url ํ˜•์‹ ๊ฒ€์ฆ ์œ ํ‹ธํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: Answers ํƒ€์ž… ์ •์˜

* feat: ์ง๊ตฐ์— ๋งž๋Š” ์ง€์›์„œ ๋ฌธํ•ญ ๋ Œ๋”๋ง ๋ฐ URL ๊ฒ€์ฆ ๋กœ์ง ์ถ”๊ฐ€

* refactor: detailedRegex ์ˆ˜์ •

* feat: ์ž„์‹œ ์ €์žฅ API ์—ฐ๋™

* feat: ์ˆ˜๋™ ์ž„์‹œ์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: select์˜ jobFamily ๋งคํ•‘ ๋ฐฉํ–ฅ ์ˆ˜์ •

FE, BE, PM, PO๋ฅผ key๋กœ ๋ณ€๊ฒฝ

* refactor: postDraft์˜ param prop null ํƒ€์ž… ์ถ”๊ฐ€

* feat: ์ž„์‹œ ์ €์žฅ ์กฐํšŒ api ์š”์ฒญ ํ•จ์ˆ˜ ๋ฐ ํ›… ์ƒ์„ฑ

* feat: ์ž„์‹œ์ €์žฅ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: handleChangeAnswer, handleChangePortfolios ํ•จ์ˆ˜ useCallback ์ฒ˜๋ฆฌ

* feat: ์ž„์‹œ ์ €์žฅ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (์ž„์‹œ์ €์žฅ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋‹ค์ด์–ผ๋กœ๊ทธ ์ œ์™ธ)

- react router์˜ location.state ์ด์šฉํ•˜์—ฌ ์ž„์‹œ์ €์žฅ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์—ฌ๋ถ€ ๊ฒฐ์ •
- ์ž‘์„ฑ ์ค‘ ์ƒˆ๋กœ๊ณ ์นจ ์‹œ ์ž„์‹œ ์ €์žฅ๋œ ๊ธ€ ์ž๋™ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

* refactor: Dialog ์ˆ˜์ •

- p ํƒœ๊ทธ -> div ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ ( ReactNode๋กœ ๋ฐ›์„ ๋•Œ ํฌ๊ด„์ ์ธ ํƒœ๊ทธ ์‚ฌ์šฉ์„ ์œ„ํ•ด)
- children ๊ณต๊ฐ„์— ์˜ค๋Š” ๋ฌธ๊ตฌ text-center ์ฒ˜๋ฆฌ
- useDialog state ๋ณ€์ˆ˜๋ช… ์ˆ˜์ • (isCloseOutside์˜ state์™€ ๊ฒน์นจ ๋ฌธ์ œ)

* feat: ์ง€์›์„œ ์ง๊ตฐ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ ๊ตฌํ˜„

- apiEndpoint ์ถ”๊ฐ€
- axios ํ•จ์ˆ˜ ์ƒ์„ฑ
- react query ํ›… ์ƒ์„ฑ
- ์ง๊ตฐ ๋ณ€๊ฒฝ ์ „ dialog ๋„์šฐ๊ธฐ
- ์ง๊ตฐ ๋ณ€๊ฒฝ ์‹œ ๋‹ต๋ณ€ ์ดˆ๊ธฐํ™” ๋ฐ ์ง๊ตฐ ๋ณ€๊ฒฝ api ์š”์ฒญ

๋ณ„๊ฐœ๋กœ,
- ์ดˆ๋ฐ˜์— ์ž„์‹œ์ €์žฅ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๊ณ  ์ƒˆ๋กœ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ, ์ถ”๊ฐ€์ ์ธ ์ž„์‹œ์ €์žฅ ์ „๊นŒ์ง€ ์ž„์‹œ์ €์žฅ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๋„๋ก ์ˆ˜์ •

* refactor: ApplyRegistration ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ, ํ•จ์ˆ˜ ๋ถ„๋ฆฌ

๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ
- selectPosition -> selectedPosition
- selectQuestion -> questionPosition
- values -> answersPayload

ํ•จ์ˆ˜ ๋ถ„๋ฆฌ
- formatNewPortfolio ํ•จ์ˆ˜ ์ƒ์„ฑ (FileField์—์„œ ์‚ฌ์šฉ)
- notLoadDraft ํ•จ์ˆ˜ ์ƒ์„ฑ

* design: textField ๋‹ต๋ณ€ ๊ธธ์ด ์ œํ•œ ์ดˆ๊ณผ ์‹œ ํ•„๋“œ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ

- ํ—ฌํผ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ
- ํ•„๋“œ ํ…Œ๋‘๋ฆฌ ๋ฐ ๊ธ€์ž ์ˆ˜ ํ…์ŠคํŠธ ๋นจ๊ฐ„์ƒ‰ ํ‘œ์‹œ

* feat: ์ง€์›์„œ ์ œ์ถœ ๋‹ต๋ณ€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

- ํ•„์ˆ˜ ๋‹ต๋ณ€ ์ž‘์„ฑ ๊ฒ€์‚ฌ
- ๋‹ต๋ณ€ ๊ธ€์ž ์ˆ˜ ์ œํ•œ ๊ฒ€์‚ฌ
- url ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

* refactor: useDialog state ๋ณ€์ˆ˜๋ช… ์›์ƒ๋ณต๊ตฌ

- ๋ณ€์ˆ˜๋ช… ๊ฒน์น  ๊ฒฝ์šฐ ๋ณ„์นญ ์‚ฌ์šฉ

* refactor: mutationKey ๋‹ฌ๊ธฐ

* feat: ์ง€์›์„œ ์ œ์ถœ ๊ธฐ๋Šฅ ๊ตฌํ˜„

- ์ง€์›์„œ ์ œ์ถœ api endpoint ์ƒ์„ฑ
- submitAnswer ํ•จ์ˆ˜ ์ƒ์„ฑ
- useSubmitAnswerQuery ํ›… ์ƒ์„ฑ
- ์ œ์ถœ ์‹œ ๋‹ค์ด์–ผ๋กœ๊ทธ ํ‘œ์‹œ ๋ฐ ์„ฑ๊ณต ์‹œ ์ง€์› ์™„๋ฃŒ ํŽ˜์ด์ง€ ์ด๋™

* feat: 15๋ถ„๋งˆ๋‹ค ์ž๋™ ์ž„์‹œ์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: ApplyRegistration ๋ฆฌํŒฉํ† ๋ง

- state์™€ ๊ด€๋ จ ํ•จ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” useApplicationState ํ›… ์ƒ์„ฑ
- ํฌ์ง€์…˜ ์„ ํƒ ๊ด€๋ จ selectBox ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ
- ๋ฌธํ•ญ ๋ฐ ๋‹ต๋ณ€ ๊ด€๋ จ Answers ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ

* remove: ๋ถˆํ•„์š”ํ•œ ์ฃผ์„ ์ œ๊ฑฐ

* refactor: ์ง๊ตฐ์„ ํ‘œํ˜„ํ•˜๋Š” ๋‹จ์–ด position -> job์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: isLoadDraft ํ•จ์ˆ˜ ์ˆ˜์ • (๋ถˆํ•„์š”ํ•œ ๋ฆฌํ„ด ์ œ๊ฑฐ)

* refactor: validateAnswersPayload if๋ฌธ ๊ฐ„์†Œํ™”

* refactor: draft ๋ฐ์ดํ„ฐ uuid ์ถ”์ถœ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

* refactor: isLoadDraft ํ•จ์ˆ˜ ๊ฐ„์†Œํ™”

* refactor: ์ง€์›์„œ ๋ฌธํ•ญ ์กฐํšŒ ์‹คํŒจ ์‹œ ๋นˆ ํผ ๋ฐ˜ํ™˜.

* feat: Input read-only ์ผ ๋•Œ ์ปค์„œ ๊ธฐ๋ณธ ์Šคํƒ€์ผ ์ง€์ •

* feat: api ์ž„์‹œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ (์—๋Ÿฌ ๋กœ๊ทธ ์ถœ๋ ฅ)

* refactor: onKeyDown -> onKeyUp์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: draft, submitAnswer ํ˜ธ์ถœ ์ „ param null ์ฒ˜๋ฆฌ

* refactor: formatForPresignedUrl, formatNewPortfolio ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์ฒ˜๋ฆฌ

* refactor: Dialog title p ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ

* refactor: submitButtonActive -> setSubmitButtonActive ๋กœ ํ•จ์ˆ˜๋ช… ๋ณ€๊ฒฝ

* refactor: ํ›… ์„ ์–ธ ๊ฐœํ–‰์ฒ˜๋ฆฌ

* refactor: File ํƒ€์ž… file -> rawFile๋กœ ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ

* refactor: AnswersRequest answers key ํƒ€์ž… number๋กœ ๋ณ€๊ฒฝ

* refactor: QuestionResponse ํƒ€์ž… ์ •์˜

* refactor: putJob request ํƒ€์ž… ์ •์˜

* refactor: ์ œ์ถœ ๋‹ค์ด์–ผ๋กœ๊ทธ ๋‚ด์šฉ ๋ฌธ๊ตฌ ๋„์–ด์“ฐ๊ธฐ ์ˆ˜์ •

* refactor: initialAnswer ํƒ€์ž… ์„ค์ •

* feat: ํŽ˜์ด์ง€ ํ•˜๋‹จ ์ง€์› ์Šค๋‚ต๋ฐ” ๊ตฌํ˜„ (#120)

* feat: 3๊ธฐ ์ง€์› ์Šค๋‚ต๋ฐ” ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ

* feat: ๋ฉ”์ธ, ํ”„๋กœ์ ํŠธ, ํ™œ๋™, faq ํŽ˜์ด์ง€์— ์Šค๋‚ต๋ฐ” ๋…ธ์ถœ

* remove: ๋ถˆํ•„์š”ํ•œ index.ts ํŒŒ์ผ ์‚ญ์ œ

* refactor: isMain -> width ๋กœ props ๋ณ€๊ฒฝ

ํŽ˜์ด์ง€ ๋‹จ์—์„œ ์–ด๋–ค width ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ

* refactor: SnackBar ์ปดํฌ๋„ŒํŠธ ์ƒ‰์ƒ ์ˆ˜์ •

* refactor: ์ง€์› ์Šค๋‚ต๋ฐ” ๋†’์ด ์ˆ˜์ •

* feat: ์ง€์› ์Šค๋‚ต๋ฐ” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€

* feat: ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€ ์ž๋™ ์ž„์‹œ ์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#122)

* feat: ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ด์šฉํ•œ ์ž๋™ ์ž„์‹œ์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* fix: ์—…๋กœ๋“œ๋œ ํŒŒ์ผ ์—ด๊ธฐ ์‹คํŒจ ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* refactor: ํ•จ์ˆ˜๋ช… ์ˆ˜์ •

* refactor: ๋ถˆํ•„์š”ํ•œ ๋ณ€์ˆ˜ ์ œ๊ฑฐ

* feat: ํšŒ์› ๋น„ํšŒ์› ์ธ์ฆ ๋ฐ ํšŒ์›์ •๋ณด ๋“ฑ๋ก ๊ธฐ๋Šฅ (#114)

* chore: zod์™€ react-hook-form ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: zod๋ฅผ ์ด์šฉํ•ด ์ง€์› ํŽ˜์ด์ง€์— ์‚ฌ์šฉ๋˜๋Š” ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: zod์™€ react-hook-form์„ ์—ฐ๋™ํ•˜์—ฌ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ›…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* refactor: umd ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ props๋ฅผ ์œ ๋‹ˆ์˜จ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: api ์—ฐ๋™์„ ์œ„ํ•œ ์—”๋“œ ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: apply ๊ด€๋ จ api response๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํผ ํ•ธ๋“ค๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ๋•๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜์—ฌ ์ง€์› api ํ˜ธ์ถœ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ปค์Šคํ…€ ํ›…์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํŒจ์นญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์„ ๋กœ๊น…๊ณผ ํ•จ๊ป˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: input ์ปดํฌ๋„ŒํŠธ์— undefined ์ฒ˜๋ฆฌ๋˜๋Š” ์˜ต์…”๋„ props์— ๊ธฐ๋ณธ ๊ฐ’์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ง€์›ํ•˜๊ธฐ ๋ฐ์ดํ„ฐ ํŒจ์นญ ๋กœ์ง์„ ์ง€์›ํŽ˜์ด์ง€์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* refactor: ํผ ์ œ์ถœ ํ•ผํผ ํ•จ์ˆ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ตœ์‹  react-query์˜ ์†์„ฑ์„ ๋ฐ˜์˜ํ•˜์—ฌ isLoading isPending ์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Label ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐœ์„ ์‚ฌํ•ญ์„ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: Label ์ปดํฌ๋„ŒํŠธ๊ฐ€ htmlFor ์†์„ฑ์„ ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* move: ์Šคํ† ๋ฆฌ๋ถ์— ์ธํ„ฐ๋ ‰์…˜ ์˜ˆ์‹œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: CheckBox ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•˜๋‹จ Label์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•€ ๋กœ๊ทธ์ธ ์„ฑ๊ณต์‹œ navigate ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* design: ์ž˜๋ชป ์ ์šฉ๋œ gap ๊ฐ’์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ api์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ api์˜ ๋ฐ˜ํ™˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์กด์žฌ ์—ฌ๋ถ€ api์˜ ํ˜ธ์ถœ๋ถ€๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ด๋ฉ”์ผ ์ธ์ฆ api ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „ ์ด๋ฉ”์ผ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

* feat: email ๊ฐ’์„ state๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์กด์žฌ ์—ฌ๋ถ€ api์— ๋Œ€ํ•œ ์ปค์Šคํ…€ ํ›…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: status ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ด๋ฉ”์ผ ์ธ์ฆ api์— ๋Œ€ํ•œ ์—๋Ÿฌ ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฒ„ํŠผ ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ์— ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๊ธฐ์กด ํšŒ์›์˜ PIN ๋กœ๊ทธ์ธ ๋กœ์ง์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ถ”๊ฐ€๋œ ์ƒํƒœ์™€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ง€์›์ž ์ •๋ณด์— ๋Œ€ํ•œ ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ง€์›์ž ์ •๋ณด ์Šคํ‚ค๋งˆ์˜ ์˜ˆ์™ธ ์ƒํ™ฉ์„ ์—„๋ฐ€ํ•˜๊ฒŒ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ์—…๋ฐ์ดํŠธ api์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ์—…๋ฐ์ดํŠธ api์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ์—…๋ฐ์ดํŠธ api์˜ ํ˜ธ์ถœ๋ถ€๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: zod๋ฅผ ์ด์šฉํ•ด์„œ ์ง€์ •๋œ ์Šคํ‚ค๋งˆ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ปค์Šคํ…€ ํ›…์„ ์ด์šฉํ•ด ํšŒ์› ์ •๋ณด ์ €์žฅ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ํŒจ์นญ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•ญ๋ชฉ์ด ๋น„์–ด์žˆ์„ ๋•Œ๋„ ์œ ํšจํ•˜์ง€ ์•Š์€ ์Šคํ‚ค๋งˆ๋กœ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ง€์›์ž ์ •๋ณด ์ž…๋ ฅ ํŽ˜์ด์ง€์— ๋ฐ์ดํ„ฐ ํŒจ์นญ ๋กœ์ง์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

* feat: auth ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ api์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* chore: ์ถ”๊ฐ€๋œ env ํŒŒ์ผ์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* chore: ์ „์—ญ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ requestHandler๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ† ํฐ ๋ฆฌํ”„๋ ˆ์‰ฌ api๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

* feat: interceptor๋ฅผ ์ด์šฉํ•ด api ํ˜ธ์ถœ ์ „ํ›„ header์™€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ณ„ ํ† ํฐ ๊ด€๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: requestHandler์— option ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ† ํฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ๋“ฑ๋ก์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ๋“ฑ๋ก api์˜ ํ˜ธ์ถœ๋ถ€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ๋“ฑ๋ก api๋ฅผ ์ปค์Šคํ…€ ํ›…์„ ์ด์šฉํ•ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: PIN์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ์‹œ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํ† ํฐ์„ header์— ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์‹ ๊ทœ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ์ž„์‹œ ํšŒ์› ๊ฐ€์ž… api๋ฅผ ํ†ตํ•ด ํ”Œ๋กœ์šฐ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* fix: ๋””์ž์ธ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๊ฐ„๊ฒฉ์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: FAQ ๋ž€์— ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Accordion์— ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•  ์š”๊ตฌ์‚ฌํ•ญ์„ TODO๋ฅผ ์ด์šฉํ•ด ๊ธฐ์žฌํ•ฉ๋‹ˆ๋‹ค.

* feat: cta ๋ฒ„ํŠผ์— onClick ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* fix: ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์„ค์ •๋œ error์˜ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* typo: Email ์ธ์ฆ ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…๋ช…์„ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ด๋ฉ”์ผ ๊ด€๋ จ api์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ payload๋ฅผ ๊ฐ์ฒด ๋ถ„ํ•  ํ˜•ํƒœ๋กœ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ปค์Šคํ…€ ํ›…์— mutationKey๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋ณ€๊ฒฝ๋œ ์ปค์Šคํ…€ ํ›…์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ mutate ๊ฐ์ฒด์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* typo: ๋ณ€๊ฒฝ๋œ api์˜ response์— ๋งž๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค ๋ช…์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* typo: ๋ณ€๊ฒฝ๋œ ์ธํ„ฐํŽ˜์ด์Šค์— ๋งž์ถฐ ์Šคํ‚ค๋งˆ์˜ ๋ณ€์ˆ˜ ๋ช…์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋ณ€๊ฒฝ๋œ api์— ๋งž๊ฒŒ ํ•จ์ˆ˜๋ช…์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ด๋ฉ”์ผ ์ธ์ฆ api์— query params๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ด๋ฉ”์ผ ์ธ์ฆ ์ปค์Šคํ…€ ํ›…์— mutationKey๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ query params๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ด๋ฉ”์ผ ์ธ์ฆ api์˜ ๋ณ€๊ฒฝ์ ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ด๋ฉ”์ผ ์ธ์ฆ api์— ์‚ฌ์šฉ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ˆ˜์ •๋œ ์ด๋ฉ”์ผ ์ธ์ฆ api์˜ ํ˜ธ์ถœ๋ถ€์— query params๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ด๋ฉ”์ผ ์ธ์ฆ api๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปค์Šคํ…€ ํ›…์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ตฌ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ณ€๊ฒฝ๋œ ์ด๋ฉ”์ผ ์ธ์ฆ ๋กœ์ง์„ ์ง€์› ํŽ˜์ด์ง€์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* typo: PIN์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋ช…์„ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

* refactor: PIN์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ์ปค์Šคํ…€ ํ›…์— ๋ณ€๊ฒฝ๋œ ์ธํ„ฐํŽ˜์ด์Šค ๋ช…์„ ์ ์šฉํ•˜๊ณ  mutationKey๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: PIN์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ์˜ API ํ˜ธ์ถœ๋ถ€์— ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

* typo: ํšŒ์› ์ •๋ณด ์—…๋ฐ์ดํŠธ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ช…์นญ์„ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* typo: ์ž„์‹œ ํšŒ์›๊ฐ€์ž… api ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ช…์นญ์„ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* feat: api ํ˜ธ์ถœ ์ „์— ์ด์ „ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: base url์˜ ์„ ์–ธ ์กฐ๊ฑด์„ prod๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: interceptor ๊ฐ€ ๋กœ์ปฌ ํ™˜๊ฒฝ์ด ์•„๋‹ ๋•Œ withCredentials๊ฐ€ true ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ธฐ์ž…๋œ import ๋ฌธ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ธ์ฆ ๋ฒˆํ˜ธ ์œ ํšจ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์‹œ ์ด๋ฉ”์ผ ๋ฒ„ํŠผ์„ enabled ํ•˜๊ณ  label์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ธ์ฆ๋ฒˆํ˜ธ์˜ Input ์ฐฝ์„ ๊ฐ์ง€ํ•˜์—ฌ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฒ„ํŠผ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

* fix: ๋ฒ„ํŠผ์˜ ๋ฌธ๊ตฌ๋ฅผ ๋””์ž์ธ์— ๋งž๋Š” ํ…์ŠคํŠธ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ œ์ถœ ๋ฒ„ํŠผ์— ์•„์ด์ฝ˜๊ณผ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: input ํƒœ๊ทธ์— ์ž๋™์™„์„ฑ ์Šคํƒ€์ผ์ด ์ปค์Šคํ…€ ์ƒ‰์ƒ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* bug: workflow runner ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ (#133)

* refactor: ๋‹ค์ด์–ผ๋กœ๊ทธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹์œผ๋กœ ์žฌ๊ตฌํ˜„ (#127)

* feat: dialogStore ์ƒ์„ฑ

* refactor: Dialog ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ • (dialogStore ์ด์šฉ)

* remove: useDialog ํ›… ์‚ญ์ œ

* refactor: Dialog ์ปดํฌ๋„ŒํŠธ Layout ์— ์ถ”๊ฐ€

* refactor: ์ง€์›์„œ ์ž‘์„ฑ ํŽ˜์ด์ง€ ์ˆ˜์ •๋œ ๋‹ค์ด์–ผ๋กœ๊ทธ ์ ์šฉ

* docs: Dialog ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* refactor: dialog promise ์ œ๊ฑฐ

* docs: ๋‹ค์ด์–ผ๋กœ๊ทธ ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ • (promise ์‚ฌ์šฉ ์Šคํ† ๋ฆฌ ์ˆ˜์ •)

* remove: ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ์ œ๊ฑฐ (useApplicationDialog)

* feat: ๋‹ค์ด์–ผ๋กœ๊ทธ ์—ด๋ฆฐ ์ƒํƒœ ์Šคํฌ๋กค ์ •์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* feat: primary ๋ฒ„ํŠผ๋งŒ ์žˆ๋Š” Dialog ์ถ”๊ฐ€

* docs: ๋ฒ„ํŠผ ํ•˜๋‚˜ Dialog ์Šคํ† ๋ฆฌ ์ถ”๊ฐ€

* refactor: ๋ถˆํ•„์š”ํ•œ void ์ œ๊ฑฐ

* docs: Dialog ์Šคํ† ๋ฆฌ๋ถ ์„ค๋ช… ์ˆ˜์ •

* docs: Dialog ์Šคํ† ๋ฆฌ๋ถ ํ•จ์ˆ˜๋ช… ์ˆ˜์ •

* refactor: dialogStore์˜ ํƒ€์ž…๋ช… ๋ณต์ˆ˜๋กœ ์ˆ˜์ •

* refactor: ๋‹ค์ด์–ผ๋กœ๊ทธ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐฉ์‹ ์ˆ˜์ •

- ์ •์ ์ธ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋กœ ๊ด€๋ฆฌ, constants/dialog.tsx ์ƒ์„ฑ
- dialogStore๋Š” ์—ด๊ณ  ๋‹ซํž˜ ์ƒํƒœ, ๋‹ค์ด์–ผ๋กœ๊ทธ ํƒ€์ž…, ๋ฒ„ํŠผ ์•ก์…˜๋ฅผ ๊ด€๋ฆฌ
- ์œ„ 2๊ฐ€์ง€๋ฅผ Dialog ์ปดํฌ๋„ŒํŠธ์— ๋ฐ˜์˜

* docs: Dialog ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* refactor: ApplyRegistration ํŽ˜์ด์ง€ ๋‹ค์ด์–ผ๋กœ๊ทธ ์ฝ”๋“œ ์ˆ˜์ •

* docs: Dialog ์Šคํ† ๋ฆฌ๋ถ ์„ค๋ช… ์ถ”๊ฐ€

* refactor: dialog ์˜คํƒ€ ์ˆ˜์ • ๋ฐ DialogTypes types/ ํด๋”๋กœ ๋ถ„๋ฆฌ

* refactor: dialogStore openDialog ๊ฐ„์†Œํ™”

* refactor: Dialog ๋ฒ„ํŠผ handleClick ํ•จ์ˆ˜ ๊ฐ„์†Œํ™”

* style: dialogStore ํ•œ์ค„ ์ž‘์„ฑ

* chore: ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ๋ฐ ํ™˜๊ฒฝ ์„ค์ • (#135)

* fix: Uploader ์Šคํ† ๋ฆฌ๋ถ ์—๋Ÿฌ ํ•ด๊ฒฐ (#138)

* feat: ๋‹ต๋ณ€ SELECT ํ•„๋“œ ์ถ”๊ฐ€  (#130)

* refactor: useCloseOutside ํ›… ref ๋ฐฐ์—ด๋„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •

* refactor: selectBox ๋‹ซ๊ธฐ ๊นœ๋ฐ•์ž„ ์ˆ˜์ •

* feat: ์ง€์›์„œ ์ž‘์„ฑ ํŽ˜์ด์ง€์˜ ๊ฐ๊ด€์‹ ๋ฌธํ•ญ์„ ์œ„ํ•œ selectField ๊ตฌํ˜„

* feat:  Question ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€๊ฒฝ ๋ฐ ์ ์šฉ

* refactor: ๋‹ต๋ณ€ ํ•„๋“œ label ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ

* fix: ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์‹œ select field ์„ ํƒํ•ด๋„ ๋นˆ๋ฌธ์ž์—ด๋กœ ์ €์žฅ๋˜๋Š” ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* style: question ํƒ€์ž… ํ‘œํ˜„ ์ˆ˜์ •

* feat: ์ž„์‹œ์ €์žฅ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋‹ค์ด์–ผ๋กœ๊ทธ ํ‘œ์‹œ ๋ฐ ์ž„์‹œ์ง€์›์„œ ์ œ๊ฑฐ api ์—ฐ๋™ (+์ง€์›์„œ ๊ด€๋ จ ํ•จ์ˆ˜ ๋ฐ ํƒ€์ž… ๋ฆฌํŒฉํ† ๋ง) (#134)

* feat: ์ง๊ตฐ ๋ณ€๊ฒฝ api๊ฐ€ ์ž„์‹œ์ง€์›์„œ ์ œ๊ฑฐ api๋กœ ๋ณ€๊ฒฝ๋˜์–ด changeJob api ์ œ๊ฑฐ ๋ฐ deleteDraft api ์ƒ์„ฑ

* refactor: ์ง๊ตฐ ๋ณ€๊ฒฝ ์‹œ ์ž„์‹œ์ง€์›์„œ ์ œ๊ฑฐ api ์š”์ฒญ

* rename: mutation ํ›…์€ use~Mutation์œผ๋กœ ํ›… ๋ช… ๋ณ€๊ฒฝ ๋ฐ ์ ์šฉ

* feat: ์ž„์‹œ์ €์žฅ ๋‹ค์ด์–ผ๋กœ๊ทธ ํ‘œโ€ฆ
* feat: ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ… (#2)

* feat: ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ…

* feat: eslint "import/order" ์„ค์ • ์ถ”๊ฐ€

* fix: prettier "semi" ์„ค์ •๊ฐ’ true๋กœ ์ˆ˜์ •

* feat: ๋””์ž์ธ ์‹œ์Šคํ…œ  ๋ฐ ์Šคํƒ€์ผ๋ง ์…‹์—… (#5)

* chore: style-dictionary ์„ค์น˜

* feat: ์‹œ๋ฉ˜ํ‹ฑ ์ปฌ๋Ÿฌ ๋””์ž์ธ ํ† ํฐ์„ ํ…Œ์ผ์œˆ๋“œ css ๋ณ€์ˆ˜๋กœ ์ ์šฉ

* feat: ํฐํŠธ ๋””์ž์ธ ํ† ํฐ ์ ์šฉ

* fix: label-xs ํฐํŠธ ์‚ฌ์ด์ฆˆ ์ˆ˜์ •

* feat: scheme (gap, radius, stroke, opacity) ํ† ํฐ ์„ค์ •

* rename: ํฐํŠธ css ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ (index.css -> typography.css)

* fix: ๋””์ž์ธ ํ† ํฐ ํŒŒ์ผ ์œ„์น˜ styles/tokens/์œผ๋กœ ๋ณ€๊ฒฝ

* feat: environment ํ† ํฐ ์„ค์ • (shadow, motion)

* feat: index.js ๋กœ ํ† ํฐ cssํŒŒ์ผ ํ•œ๋ฒˆ์— import ํ•˜๊ธฐ

* feat: typescript-eslint/naming-convention ์„ค์ •

* feat: ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ ์„ค์ • (ํฐํŠธ)

* fix: font-display ์†์„ฑ block์œผ๋กœ ๋ณ€๊ฒฝ

* chore: zustand ์„ค์น˜

* fix: font-display ์†์„ฑ swap ์œผ๋กœ ๋ณ€๊ฒฝ

* rename: build-tokens.js -> token.config.js๋กœ ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ,  index.js -> index.ts๋กœ ๋ณ€๊ฒฝ

* fix: ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ @layer utilities ์‚ฌ์šฉ

* remove: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ

* remove: ์ฃผ์„ ์ œ๊ฑฐ

* chore: Qodana ci ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• (#7)

* Add qodana.yaml file

* Add github workflow file

---------

Co-authored-by: Qodana Application <[email protected]>

* chore: ์Šคํ† ๋ฆฌ๋ถ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐ CI ์„ค์ • (#10)

* chore: storybook ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* chore: ts์ปดํŒŒ์ผ๋Ÿฌ์— ์Šคํ† ๋ฆฌ๋ถ์„ ํฌํ•จ์‹œํ‚ต๋‹ˆ๋‹ค.

* fix: naming convention ์„ค์ •์ด rules์— ํฌํ•จ๋˜๋„๋ก ๊ตฌ๋ฌธ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: eslint ignore ์˜ต์…˜์— storybook ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: storybook preview์— ๋””์ž์ธ ํ† ํฐ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: storybook preview ์‹œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•œ ์Šคํƒ€์ผ ์„ค์ •์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* move: ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜๋œ ์Šคํ† ๋ฆฌ๋ถ ์˜ˆ์‹œ ํŒŒ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํ† ๋ฆฌ๋ถ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ์Šคํ† ๋ฆฌ๋ถ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* chore: dev dependencies์— chromatic ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํ† ๋ฆฌ๋ถ ์ž๋™ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ yml ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: chormatic ๋ช…๋ ์–ด๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฒ„ํŠผ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด width ์†์„ฑ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* chore: eslint ์ถ”๊ฐ€ ์„ค์ •์„ ์œ„ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” tailwind ์„ค์ • ํŒŒ์ผ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ถ”๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด eslint์™€ prettier์—์„œ ์ถฉ๋Œ์ด ๋‚˜๋Š” ๊ตฌ๊ฐ„์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ˆ˜์ •๋œ eslint ์„ค์ •์— ๋งž์ถฐ ์Šคํ† ๋ฆฌ๋ถ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํด๋” ๊ตฌ์กฐ ์„ธํŒ… ๋ฐ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ฒ˜๋ฆฌ  (#13)

* feat: ํด๋” ์•„ํ‚คํ…์ฒ˜ ์„ค์ • (์ž„์‹œํŒŒ์ผ์ƒ์„ฑ)

* chore: ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ @types/node ๋ชจ๋“ˆ ์„ค์น˜

* feat: @(src) ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์„ค์ •

* fix: main.tsx ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ import ํ•˜๊ธฐ

* chore: Tanstack query ๊ด€๋ จ ๋ชจ๋“ˆ ์„ค์น˜

* feat: eslint-plugin-query ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •

* style: ํŒŒ์ผ import ์‹œ ํ™•์žฅ์ž ์ œ๊ฑฐ

* chore: Qodana ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ • (#15)

* feat: ์ •์  ๋ถ„์„ ์Šคํฌ๋ฆฝํŠธ์— ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ ์˜์กด์„ฑ ์„ค์น˜๋ฅผ ์„ ํ–‰ํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* chore: ymlํŒŒ์ผ์˜ ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Interaction ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#17)

* feat: Interaction ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Interaction์˜ ๊ณตํ†ต ์Šคํƒ€์ผ ๋ถ„๋ฆฌ (.interaction)

* remove: ํ•„์š”ํ•˜์ง€ ์•Š์€ opacity ํ† ํฐ ์ œ๊ฑฐ

tailwind ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ์Šคํƒ€์ผ๊ณผ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

* fix: interaction ์œ ํ‹ธ๋ฆฌํ‹ฐ ์˜ค๋ฅ˜๋กœ ๋ถ„๋ฆฌ ์ž‘์—… ์›์ƒ๋ณต๊ท€

* Merge branch 'dev' of https://github.com/JECT-Study/JECT-Official-WebSite-Client into feat/9-interactionComponent

* move: Interaction ํŒŒ์ผ common ํด๋”๋กœ ์ด๋™

* feat: Interaction ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: InteractionStyle ๊ฐ์ฒด ์ •์˜

* refactor: InteractionStyle ๊ฐ์ฒด ํ™œ์šฉํ•˜์—ฌ ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ ์ •๋ฆฌ

* fix:  tailwind์˜ ํด๋ž˜์Šค ๋„ค์ž„ ๋™์  ๊ตฌ์„ฑ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

๊ฐ์ฒด์— ์ €์žฅ๋œ ํด๋ž˜์Šค ๋„ค์ž„์„ ์™„์ „ํ•œ ํด๋ž˜์Šค ๋„ค์ž„์œผ๋กœ ๋ณ€๊ฒฝ

* fix: ๋ณ€๊ฒฝํ•œ interactionStyle ๊ฐ์ฒด ์ ์šฉ

* feat: ์ธํ„ฐ๋ ‰์…˜ ์Šคํ† ๋ฆฌ๋ถ ์ถ”๊ฐ€ ์ž‘์„ฑ

* rename: ์Šคํ† ๋ฆฌ ๋ณ€์ˆ˜ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝ

* feat: eslint const ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜ PascalCase ํ—ˆ์šฉ

* feat: radius ๊ธฐ๋ณธ๊ฐ’ ๋นˆ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌ

* feat: Label ๋ฐ Badge ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#20)

* feat: Badge ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Label ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Badge ์ปดํฌ๋„ŒํŠธ ์žฌ๊ตฌํ˜„

Label ์ปดํฌ๋„ŒํŠธ ์ด์šฉ

* feat: Badge ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: Label ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* style: Label ๊ฐ์ฒด ๊ตฌ์„ฑ ์ˆ˜์ • ๋ฐ ๊ฐ์ฒด๋ช… ๋ณ€๊ฒฝ

* style: ์ฝ”๋“œ ์ •๋ฆฌ

* rename: ์Šคํ† ๋ฆฌ ์ด๋ฆ„ Primary๋กœ ๋ณ€๊ฒฝ

* fix: ์ธํ„ฐ๋ ‰์…˜ ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ • ๋ฐ storybook ์„ค์ •  (#22)

* feat(preview.ts): ์Šคํ† ๋ฆฌ๋ถ ๋ฐฐ๊ฒฝ์ƒ‰ dark๋กœ ๊ธฐ๋ณธ ์„ค์ •

* feat: Label์˜ ํ…์ŠคํŠธ children์œผ๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •

* fix: Badge์— ๋ณ€๊ฒฝ๋œ Label ์ ์šฉ

* feat: Label ์Šคํ† ๋ฆฌ๋ถ argTypes ๋ฐ ํฐํŠธ ์ƒ‰์ƒ ์ˆ˜์ •

* feat: ์ธํ„ฐ๋ ‰์…˜ ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ •

- ๋ฐฐ๊ฒฝ์ƒ‰ ์—†๋Š” ์ž์‹ ์š”์†Œ๋„ ์ž˜ ๋™์ž‘ํ•˜๋„๋ก ํ•จ
- props๋ช… ๋ณ€๊ฒฝ ๋ฐ ์ถ”๊ฐ€

* feat: ์ธํ„ฐ๋ ‰์…˜ ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* style: Badge ๋ฐ Label ์Šคํ† ๋ฆฌ ํƒ€์ž… ์ฝ”๋“œ ์ •๋ฆฌ

* feat: ์ธํ„ฐ๋ ‰์…˜ description ์ถ”๊ฐ€

* feat: ReactNode import ํ•˜๊ธฐ

* feat: Badge ์ปดํฌ๋„ŒํŠธ text props -> children์œผ๋กœ ๋ณ€๊ฒฝ

* style: ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ์˜คํƒ€ ์ˆ˜์ •

* feat: Badge, Interaction, Label ์Šคํ† ๋ฆฌ๋ถ ์ปดํฌ๋„ŒํŠธ ๋ฐฉ์‹์˜ ์Šคํ† ๋ฆฌ ์ž‘์„ฑ

* feat: ์ธํ„ฐ๋ ‰์…˜ childHasBg, childRadius ๊ฐ’ ๋ฐ›์ง€ ์•Š๊ณ  ์ธํ„ฐ๋ ‰์…˜ ๋‚ด๋ถ€์—์„œ ์ ‘๊ทผํ•˜๋„๋ก ์ˆ˜์ •

* feat: ์ธํ„ฐ๋ ‰์…˜ ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: Title, Callout, Hero ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„  (#23)

* feat: Title ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Title ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* fix: border-radius ์Šคํ‚ด ํ† ํฐ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์‹คํŒจ ๋ฌธ์ œ๋กœ ํ† ํฐ ํŒŒ์ผ ์ˆ˜์ •

* feat: CalloutNumerical ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: CalloutInformation ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: HeroIndex ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Hero ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: HeroIndex์˜ index min-width ์„ค์ •

* feat: CalloutNumerical ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: CalloutInformation ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: HeroIndex ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: Hero ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: Title ReactNode import ํ•˜๊ธฐ

* remove: titleStyle lineHeight ์ œ๊ฑฐ

* remove: labelStyle lineHeight ์ œ๊ฑฐ

* feat: 22PR ๋ณ€๊ฒฝ๋œ Label Badge ์ปดํฌ๋„ŒํŠธ ๋ฐ˜์˜

* feat: Title ์Šคํ† ๋ฆฌ๊ฐ์ฒด ํƒ€์ž… ์ˆ˜์ •

* feat: progress ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#29)

* feat: ProgressIndex ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: ProgressBridge ๋ฐ ProgressIndicator ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: ProgressItem ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Title textColor ์„ ํƒ์ ์ธ Prop ์ถ”๊ฐ€

* feat: ProgressVerticalBridge ๊ตฌํ˜„

* feat: Progress ๊ด€๋ จ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ (Bridge ์ปดํฌ๋„ŒํŠธ ์ œ์™ธ)

* refactor: active style ์ƒ์ˆ˜ ๋ถ„๋ฆฌ

* remove: console.log ์ œ๊ฑฐ

* feat: new Array -> Array.from() ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ

* feat: Title || -> ?? ๋„ ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž๋กœ ๋ณ€๊ฒฝ

undefined, null ์ผ ๊ฒฝ์šฐ์—๋งŒ ๊ธฐ๋ณธ ํฐํŠธ ์ƒ‰์ƒ ์ ์šฉ (๋นˆ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์ด ์‹ค์ˆ˜๋กœ ๊ฐ’์„ ๋„ฃ์—ˆ์„ ๊ฒฝ์šฐ๋Š” ์Šคํƒ€์ผ ์ ์šฉ X)

* feat: ๋ฒ”์šฉ์„ฑ์žˆ๋Š” ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#30)

* chore: tailwind ์‚ฌ์šฉ ์‹œ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด clsx ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* move: ์˜ˆ์‹œ๋กœ ์‚ฌ์šฉ๋œ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: BlockButton ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: BlockButton์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: storybook์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํƒ€์ผ ์‹œํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: storybook์ด ๊ธฐ๋ณธ์ ์œผ๋กœ docs๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ํƒ€์ž…๋ช…์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์Šคํ† ๋ฆฌ๋ถ ์ƒ์—์„œ ๋‹ค์–‘ํ•œ ๋ฒ„ํŠผ์„ ํ‘œํ˜„ํ•˜๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* typo: import ํŒŒ์ผ์˜ ๋„ค์ด๋ฐ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* typo: ์Šคํƒ€์ผ ํŒŒ์ผ์— ์ž˜๋ชป ์„ ์–ธ๋œ ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* typo: radius์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๊ฐ’ ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Interaction ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋งต ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

* feat: ์„ ์–ธํ•œ map ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด BlockButton์— ์ธํ„ฐ๋ ‰์…˜์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* feat: ์„ ์–ธ๋œ radius๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด BlockButton์˜ radius ๊ฐ’์„ Interaction ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

* feat: blockButton์˜ ๋งต ๊ฐ์ฒด ๋„ค์ด๋ฐ์„ ๊ตฌ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.

* feat: labelButton์˜ Interaction ์Šคํƒ€์ผ ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

* feat: labelButton์— Interaction ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ˆ˜์ •๋œ Interaction ์ปดํฌ๋„ŒํŠธ๋Š” ๋”์ด์ƒ radius๋ฅผ props๋กœ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

* refactor: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๊ฐ€ Interaction ์ปดํฌ๋„ŒํŠธ์— ๋งž์ถฐ์ง„ radius๋ฅผ ๊ฐ€์ง€๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

* feat: Interaction ์ปดํฌ๋„ŒํŠธ์— outlineOffset ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ ์Šคํƒ€์ผ ๊ฐ์ฒด์— ์‚ฌ์ด์ฆˆ ๋ณ„ offset ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: labelButton์ด Interaction ์‹œ์— offset ๊ฐ’์„ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋™์  ์Šคํƒ€์ผ๋ง์„ ์œ„ํ•œ ๋งคํ•‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* refactor: Interaction์˜ ๋™์  ์Šคํƒ€์ผ๋ง ๋ฐฉ์‹์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์•„์ด์ฝ”๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•„์ด์ฝ˜ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#32)

* feat: ์•„์ด์ฝ˜ 13๊ฐœ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ ์Šคํƒ€์ผ ๊ฐ์ฒด ์ƒ์„ฑ

* feat: ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ ์Šคํƒ€์ผ ๊ฐ์ฒด ์ƒ์„ฑ

* feat: ์•„์ด์ฝ˜ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: ์Šคํ† ๋ฆฌ๋ถ description ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ ์ˆ˜์ •

* remove: ์•„์ด์ฝ˜ ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ ์‚ญ์ œ

* remove: ์•„์ด์ฝ˜ ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ ์Šคํ† ๋ฆฌ๋ถ ์‚ญ์ œ

* chore: vite-plugin-svgr ์„ค์น˜

* chore: svg ์•„์ด์ฝ˜์„ ์ปดํฌ๋„ŒํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •

* feat: assets/svg ์œ„์น˜์— ์•„์ด์ฝ˜ svg ํŒŒ์ผ๋“ค ์ถ”๊ฐ€

* feat: ์•„์ด์ฝ˜ ํ†ตํ•ฉ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๋ฐ ์•„์ด์ฝ˜ ์ด๋ฆ„ ํƒ€์ž… ์ •์˜

* feat: Icon ์ปดํฌ๋„ŒํŠธ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: Icon ์ปดํฌ๋„ŒํŠธ switch -> ๊ฐ์ฒด ๋งคํ•‘ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ

* fix: ์ธํ„ฐ๋ž™์…˜ ์ปดํฌ๋„ŒํŠธ ์žฌ๊ตฌํ˜„ ๋ฐ semantic ์ปฌ๋Ÿฌ ํ† ํฐ ์—…๋ฐ์ดํŠธ (#35)

* fix: ์ธํ„ฐ๋ ‰์…˜ ์žฌ๊ตฌํ˜„

- ์ธํ„ฐ๋ ‰์…˜ scale ๊ฐ’์œผ๋กœ ํฌ๊ธฐ ์กฐ์ •
- ์ธํ„ฐ๋ ‰์…˜ ์ปดํฌ๋„ŒํŠธ ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„ -> ํ˜•์ œ ๊ด€๊ณ„๋กœ ๋ฐฉ์‹ ๋ณ€๊ฒฝ

* design: semantic ํ† ํฐ ์—…๋ฐ์ดํŠธ

* feat: Interaction ์ปดํฌ๋„ŒํŠธ isInversed props ์ถ”๊ฐ€

* feat: ์ˆ˜์ •๋œ interactionStyle ๋ฐ˜์˜

* remove: ๋ถˆํ•„์š” ์ฝ”๋“œ ์‚ญ์ œ

* feat: Interaction ์ปดํฌ๋„ŒํŠธ className props ์ถ”๊ฐ€

* feat: ์ธํ„ฐ๋ ‰์…˜ ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* fix: LabelButton import ๋ฒ„๊ทธ ์ˆ˜์ •

* remove: semantic.json ํŒŒ์ผ ์‚ญ์ œ

* docs: token.config.js ์— semantic.css ํŒŒ์ผ ์ƒ์„ฑ ๋ฐฉ๋ฒ• ์ฃผ์„ ๋‹ฌ๊ธฐ

* style: Interaction className ์ฝ”๋“œ ์ค„๋ฐ”๊ฟˆ

* feat: Input ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#36)

* feat: InputTextArea ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* Merge branch 'dev' of https://github.com/JECT-Study/JECT-Official-WebSite-Client into feat/24-input

* feat: TextAreaField ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ, AnswerBox๋กœ ์ปดํฌ๋„ŒํŠธ๋ช… ๋ณ€๊ฒฝ

* design: InputField grow ๊ฐ’ ์ˆ˜์ •

* feat: environment์˜ duration ํ† ํฐ ๊ฐ’ ์ƒ์„ฑ

* feat: AnswerBox, InputField ์ปดํฌ๋„ŒํŠธ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: InputField, TextAreaField์— duration ๋ฐ motion ์ ์šฉ

* rename: AnswerBox -> InputArea ๋กœ ์ปดํฌ๋„ŒํŠธ๋ช… ๋ณ€๊ฒฝ

* rename: InputField -> Input ์ปดํฌ๋„ŒํŠธ๋ช… ๋ณ€๊ฒฝ

* feat: Input ์Šคํ† ๋ฆฌ๋ถ ์•„์ด์ฝ˜ ์Šคํ† ๋ฆฌ ์ถ”๊ฐ€

* rename: TextAreaField -> TextArea๋กœ ์ปดํฌ๋„ŒํŠธ๋ช… ๋ณ€๊ฒฝ

* feat: InputArea required args ์ถ”๊ฐ€

* style: TextArea ์ฝ”๋“œ ์ •๋ฆฌ

* style: Input ์ฝ”๋“œ ์ •๋ฆฌ

* feat: Label cursor-default ์†์„ฑ ์ถ”๊ฐ€

* style: inputArea ์ฝ”๋“œ ์ •๋ฆฌ

* feat: InputField ๋ฒ„ํŠผ ์š”์†Œ๋“ค children์œผ๋กœ ์ „๋ถ€ ๋ณ€๊ฒฝ

* feat: Input ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: InputField ๋ถˆํ•„์š”ํ•œ props ์ œ๊ฑฐ

* feat: InputField ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* style: TextArea ์ฝ”๋“œ ์ •๋ฆฌ

* feat: input, textarea ์š”์†Œ ํƒ€์ž… ComponentPropsWithoutRef ์‚ฌ์šฉ

* feat: ์ง€์›ํ•˜๊ธฐ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (#40)

* chore: react-router-dom ์„ค์น˜

* feat: router ์„ธํŒ… ๋ฐ /apply ๋ผ์šฐํ„ฐ ์„ค์ •

* feat: ProgressItem์˜ content prop ํƒ€์ž… ReactNode๋กœ ๋ณ€๊ฒฝ

* feat: client-apply-01 ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (๋ฒ„ํŠผ ์ œ์™ธ)

* feat: ์ง€์›ํ•˜๊ธฐ ๋งํฌ ํด๋ฆญ ์‹œ ํŽ˜์ด์ง€ ํ•˜๋‹จ์œผ๋กœ ์ด๋™

* fix: ์•„์ด์ฝ˜ ์„ค์ • ์ถ”๊ฐ€

* feat: ์ง€์› ํ•˜๊ธฐ ๋ฒ„ํŠผ ์ƒ์„ฑ

* feat: ProgressItem p ํƒœ๊ทธ -> div ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ

* feat: ๋จธ์ง€์‹œ ์ถฉ๋Œ์žˆ์—ˆ๋˜ ํŒŒ์ผ ๋ณ‘ํ•ฉ

* remove: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ

* feat: moveToBottom utils ํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: CreateNewTab ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ - ์ƒˆ๋กœ์šด ํƒญ์œผ๋กœ ํ•˜์ดํผ๋งํฌ ์—ด๊ธฐ

* rename: scrollFucion -> scrollFunction์œผ๋กœ ํŒŒ์ผ๋ช… ์˜คํƒ€ ์ˆ˜์ •

* feat: apply page์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด ๋ฐฐ์—ด ์ƒ์„ฑ

* feat: ๋ฆฌํŒฉํ† ๋ง ๋ฐ ์ง€์›ํ•˜๊ธฐ ๋ฒ„ํŠผ ui ๊ตฌํ˜„

* style: ์ฝ”๋“œ ์Šคํƒ€์ผ ์ •๋ฆฌ

* remove: router.tsx ํŒŒ์ผ ์ด๋™

* fix: router import ๊ฒฝ๋กœ ์ˆ˜์ •

* feat: now -> currentDate๋กœ ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ ๋ฐ applyData ๊ฐ์ฒด id ๊ฐ’ ์ถ”๊ฐ€

* feat: ์ง€์›ํ•˜๊ธฐ ํŽ˜์ด์ง€ ํƒ€์ดํ‹€ ์ƒ์ˆ˜ํ™”

* rename: CreateNewTab -> NewTabLink ์ปดํฌ๋„ŒํŠธ๋ช… ์ˆ˜์ •

* feat: Card์™€ Post ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#37)

* feat: Post ์ปดํฌ๋„ŒํŠธ๋ฅผ ํผ๋ธ”๋ฆฌ์‹ฑ ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Card ์ปดํฌ๋„ŒํŠธ๋ฅผ ํผ๋ธ”๋ฆฌ์‹ฑ ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํ† ๋ฆฌ๋ถ์„ ์œ„ํ•œ ์ƒ˜ํ”Œ ์ด๋ฏธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Card ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: descriptionVisible props์— ๋”ฐ๋ผ children ์š”์†Œ์˜ ์ถœ๋ ฅ ์œ ๋ฌด๋ฅผ ์กฐ๊ฑด๋ถ€๋กœ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

* feat: ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ์‹œ ๋ถ„๊ธฐ๊ฐ€ ํ•„์š”ํ•œ ํƒœ๊ทธ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ถ”๊ฐ€๋œ props๋ฅผ ์Šคํ† ๋ฆฌ๋ถ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* fix: ๊ณต์šฉ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹จ๋… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* rename: boolean typo์˜ props ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋ถ€๋ชจ container์— items-stretch๋ฅผ ์ ์šฉํ•˜๊ณ , flex grow๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํ† ๋ฆฌ๋ถ์— ๊ธฐ๋ณธ args๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํƒญ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#39)

* feat: Tab ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: Tab ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Tab ์ปดํฌ๋„ŒํŠธ์— Interaction์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* feat: active ์‹œ TabItem์˜ stroke๊ฐ€ ๊ธฐ๋ณธ stroke์— ์˜ฌ๋ผ์˜ค๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

* refactor: context API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Tab์˜ ์ „๋ฐ˜์ ์ธ ์ฝ˜ํ…์ธ ์™€ ํƒญ ํ—ค๋”๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ์‹ค์งˆ์ ์ธ ๋ฉ”์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* typo: ์ปดํฌ๋„ŒํŠธ์™€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋„ค์ด๋ฐ์„ ๋‹จ์ˆ˜ํ˜•์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ˆ˜์ •๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์Šคํ† ๋ฆฌ๋ถ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* refactor: tab์˜ id๋ฅผ number ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

* refactor: tab header์˜ width๋ฅผ 100%๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ถ”๊ฐ€์ ์ธ ์ผ€์ด์Šค์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํƒœ๊ทธ์— ๋ช…์‹œ์ ์ธ aria-label์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: FAQ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ ๋ฐ ์•„์ฝ”๋””์–ธ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#53)

* feat: faq ํŽ˜์ด์ง€ ๋ฐ ๋ผ์šฐํ„ฐ ์ƒ์„ฑ

* move: Badge, Label, Title  ํด๋”๋กœ ๋ฌถ์Œ

* feat: Badge, Label, Title ๋ณ€๊ฒฝ๋œ ๊ฒฝ๋กœ ์ˆ˜์ •

* fix: Title textColor null ํƒ€์ž… ํ—ˆ์šฉ

* feat: Accordion ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ

* feat: list-ject(list-style-type) ์œ ํ‹ธ๋ฆฌํ‹ฐ ์Šคํƒ€์ผ ์ƒ์„ฑ

* feat: faq '์ง€์› ๊ด€๋ จ' TabPanel ๊ตฌ์„ฑ

* feat: Accordion ์ปดํฌ๋„ŒํŠธ expand ์•„์ด์ฝ˜ ๋ฐ ์บก์…˜ prop ์ถ”๊ฐ€

* feat: FAQ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด ๋ฐฐ์—ด ์ƒ์„ฑ

* feat: list-decimal margin ์ˆ˜์ • ๋ฐ list-ject -> list-disc-ject ๋กœ ์Šคํƒ€์ผ ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ

* feat: Faq ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ faq ๊ฐ์ฒด ๋ฐ์ดํ„ฐ ์ ์šฉ

* feat: Accordion ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* fix: Accordion ์ปดํฌ๋„ŒํŠธ, ref ์ด์šฉํ•œ ์Šคํƒ€์ผ ์ฃผ์ž… ๋ฐฉ์‹ -> className์— ์ง์ ‘ ์กฐ๊ฑด๋ถ€ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ

* feat: Select ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#44)

* move: ๋ถˆํ•„์š”ํ•œ import ๋ฌธ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: Select ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: Select ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Select ์ปดํฌ๋„ŒํŠธ์— Interaction์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: Interaction ์‚ฌ์šฉ์‹œ duration๊ณผ motion ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Select ์ปดํฌ๋„ŒํŠธ์— disabled props๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ˆ˜์ •๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์Šคํ† ๋ฆฌ๋ถ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ ์šฉ๋˜์ง€ ์•Š๋˜ motion๊ณผ duration ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: SelectItem์˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์กฐ๋ฅผ ํ™•์žฅ์„ฑ ์žˆ๊ฒŒ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ตœ์ƒ์œ„ div์˜ width๋ฅผ 100%๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* rename: rest props์˜ ๋„ค์ด๋ฐ์„ ์ง๊ด€์ ์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* rename: props๋กœ ์ „๋‹ฌ๋œ onClick ํ•ธ๋“ค๋Ÿฌ์˜ ์ด๋ฆ„์„ ๊ตฌ๋ถ„ ์ง“์Šต๋‹ˆ๋‹ค.

* refactor: Select ์ปดํฌ๋„ŒํŠธ์— defaultValue ์˜ต์…”๋„ props๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: SnackBar ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#45)

* feat: blockButton์˜ Interaction์— isInversed ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: button ์ปดํฌ๋„ŒํŠธ์— peer ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: BlockButton์— disabled ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: BlockButton์˜ disabled case์˜ ์ถ”๊ฐ€์— ๋งž์ถฐ ์Šคํ† ๋ฆฌ๋ถ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Icon์ด ์žˆ์„ ์‹œ์— disabled ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: BlockButton์˜ Interaction์— motion๊ณผ duration์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: LabelButton์— disabled ์†์„ฑ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Interaction ๊ด€๋ จ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ Interaction์— isInversed ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ Interaction์— duration๊ณผ motion์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ Interaction์— scale์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ˆ˜์ •๋œ LabelButton์„ ์Šคํ† ๋ฆฌ๋ถ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์— Interaction ์ฃผ์ž…์„ ์œ„ํ•œ peer ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* rename: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์Šคํ† ๋ฆฌ๋ถ ๋„ค์ด๋ฐ์„ ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„๊ณผ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* feat: SnackBar ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: SnackBar ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์˜ children์„ ์˜ต์…”๋„๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: LabelButton์—์„œ ์•„์ด์ฝ˜๋งŒ ์žˆ๋Š” ์Šคํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: onAction props๋ฅผ ์˜ต์…”๋„์—์„œ ํ•„์ˆ˜๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* Fix: ์ธํ„ฐ๋ ‰์…˜ ์žฌ๊ตฌํ˜„ 3์ฐจ (#60)

* feat: ์ธํ„ฐ๋ ‰์…˜ ์Šคํƒ€์ผ ๋„ค์ž„ ์ƒ์„ฑ

* feat: global.css์— interaction.css ๋“ฑ๋ก

* remove: ๊ธฐ์กด ์ธํ„ฐ๋ ‰์…˜ ์ปดํฌ๋„ŒํŠธ, ์Šคํ† ๋ฆฌ๋ถ, ์Šคํƒ€์ผ ํŒŒ์ผ ์‚ญ์ œ

* fix: ๊ธฐ์กด ์ธํ„ฐ๋ ‰์…˜ ์ ์šฉ๋˜์–ด์žˆ๋˜ ์ปดํฌ๋„ŒํŠธ์— ์ƒˆ๋กœ์šด ์ธํ„ฐ๋ ‰์…˜ ์Šคํƒ€์ผ ์ ์šฉ

* feat: transition-faster-fluent ์Šคํƒ€์ผ ์ •์˜

* refactor: transition-faster-fluent ๊ณตํ†ต์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ณณ์— ์ ์šฉ

* fix: Variant, Density ํƒ€์ž… ์ƒ์„ฑํ•˜์—ฌ eslint ์—๋Ÿฌ ํ•ด๊ฒฐ

* feat: Header, Footer ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ ๋ฐ Layout ์ ์šฉ (#56)

* feat: Header, Footer ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ

* feat: Layout ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ

* feat: ๋ ˆ์ด์•„์›ƒ ๋ผ์šฐํ„ฐ ์„ค์ •

* feat: Logo ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: NavigationItem ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: /project, /activity ๋ผ์šฐํ„ฐ ์ƒ์„ฑ ๋ฐ pathName ํƒ€์ž… ์ƒ์„ฑ

* feat: NavigationItem path์— ๋”ฐ๋ผ UI ๋ณ€๊ฒฝ

* feat: Navigation ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: Header ๊ตฌํ˜„

* fix: NewTabLink ์ปดํฌ๋„ŒํŠธ children ํƒ€์ž… ReactNode๋กœ ๋ณ€๊ฒฝ

* feat: Footer ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* chore: footer ์šฉ ์œ ํŠœ๋ธŒ svg ์ƒ์„ฑ

* fix: Navigation ์ปดํฌ๋„ŒํŠธ ์‹œ๋ฉ˜ํ‹ฑ ํƒœ๊ทธ ํ™œ์šฉ

* feat: PageContainer ์ƒ์„ฑ - page ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ๋†’์ด, ๋ฐฐ๊ฒฝ์ƒ‰ ์ง€์ •

* refactor: NavigationItem button props ์ œ๊ฑฐ ๋ฐ disabled props ์ถ”๊ฐ€

* move: PathName ํƒ€์ž… NavigationItem.tsx๋กœ ์ด๋™

* feat: Navigation Logo ํ™ˆ ์ด๋™ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ focus-visible ์Šคํƒ€์ผ ์ง€์ •

* feat: Footer์˜ ์ ํŠธ ์†Œ๊ฐœ ๋ฌธ๊ตฌ ๋ฐ ์ด๋ฉ”์ผ ์ƒ์ˆ˜ํ™”

* rename: Footer, Header, Layout, PagesContainer ํŒŒ์ผ ์œ„์น˜ ์ˆ˜์ •

* fix: NavigationItem์˜ PathName ํƒ€์ž… ์ˆ˜์ •

* feat: Footer, Navigation, NavigationItem ์ปดํฌ๋„ŒํŠธ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* fix: router Layout import ๊ฒฝ๋กœ ์ˆ˜์ •

* fix: faq ํŽ˜์ด์ง€ mainํƒœ๊ทธ->sectionํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ

* feat: Logo ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* remove: Logo ์Šคํ† ๋ฆฌ๋ถ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ

* fix: Navigation ์Šคํ† ๋ฆฌ๋ถ ์Šคํ† ๋ฆฌ ์ˆ˜์ •

* rename: ject.ts -> footer.ts ๋กœ ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ

* feat: ๋„ค๋น„๊ฒŒ์ด์…˜ PathName ํƒ€์ž… ์ƒ์„ฑ

* fix: ์ƒ์„ฑํ•œ PathName ํƒ€์ž… ์ ์šฉ

* feat: footer.ts ์ƒ์ˆ˜ ์ž„ํฌํŠธ ๊ฒฝ๋กœ ์ˆ˜์ •

* feat: PATH ๋„ค์ž„ ์ƒ์ˆ˜ํ™”

* feat: PathKeys, PathValues ํƒ€์ž… ์ƒ์„ฑ

* refactor: PATH ์ƒ์ˆ˜ ์ ์šฉ

* fix: NavigationItem pathName ํƒ€์ž… PathValues ๋กœ ์ง€์ •

* remove: ๋ถˆํ•„์š”ํŒŒ์ผ ์‚ญ์ œ

* fix: NavigationItem, button -> NavLink ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ ๋ฐ ์ธํ„ฐ๋ ‰์…˜ ์žฌ์ ์šฉ

* fix: NavigationItem className ๋„์–ด์“ฐ๊ธฐ ์ถ”๊ฐ€

* feat: NavigationItem disabled ์ƒํƒœ ํƒœ๊ทธ ์ œ๊ฑฐ

* refactor: Card ๋ฐ Post ์ปดํฌ๋„ŒํŠธ Interaction ์ฃผ์ž… (#55)

* refactor: Card ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ ํƒœ๊ทธ๋ฅผ button์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: Card ์ปดํฌ๋„ŒํŠธ์— Interaction์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Card ์ปดํฌ๋„ŒํŠธ์— disabled ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Card ์ปดํฌ๋„ŒํŠธ์˜ ์‚ฌ์ง„์ด ์ถœ๋ ฅ๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: Card ์ปดํฌ๋„ŒํŠธ์˜ imageContainer์— ํ•˜๋‹จ border์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํ† ๋ฆฌ๋ถ์— disabled์˜ ์‚ฌ๋ก€๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: disabled์˜ ์œ ๋ฌด์— ๋”ฐ๋ผ cursor ์ด๋ฒคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Card ์ปดํฌ๋„ŒํŠธ์˜ disabled ๊ธฐ๋ณธ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์— disabled ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป์ ์šฉ๋œ Interaction์˜ duration์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์— Interaction์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์— Pointer ์ด๋ฒคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์˜ ์‹ค์ œ ์‚ฌ์šฉ ์˜ˆ์‹œ์™€ disabled ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์Šคํƒ€์ผ๋ง์„ ๋‚ด๋ถ€ clsx๋กœ ํ†ต์ผํ•˜์—ฌ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ตœ์ƒ์œ„ button ํƒœ๊ทธ๋ฅผ a ํƒœ๊ทธ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ…์ŠคํŠธ๊ฐ€ ํ‘œํ˜„๋˜๋Š” ๋ถ€๋ถ„์— truncate ํด๋ž˜์Šค๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Label์™€ Title ์ปดํฌ๋„ŒํŠธ์— ์Šคํƒ€์ผ์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Card ์ปดํฌ๋„ŒํŠธ์˜ ํ…์ŠคํŠธ ์š”์†Œ๋“ค์ด ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์‹œ ๋ง์ค„์ž„ํ‘œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป ์ ์šฉ๋œ border์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ ํƒœ๊ทธ๋ฅผ a ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž˜๋ชป ์ ์šฉ๋œ ์Šคํƒ€์ผ๋ง์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์˜ args๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ Default ์ผ€์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ , ๋ง์ค„์ž„ํ‘œ ์ฒ˜๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

* move: disabled ์‹œ ์„ ์–ธ๋œ ๋ถˆํ•„์š”ํ•œ ์†์„ฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: Card ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ ํƒœ๊ทธ๋ฅผ Link ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: Card ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์— MemoryRouter์„ ์ฃผ์ž… ํ›„ To ๊ธฐ๋ณธ ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋ฎ์–ด์”Œ์›Œ์ง€๋Š” block ์š”์†Œ๋ฅผ ์ œ๊ฑฐ ํ›„ className์œผ๋กœ๋งŒ ์Šคํƒ€์ผ์„ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋‚ด์šฉ ํ•„๋“œ์˜ height๋ฅผ ์žฌ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฎ์–ด์”Œ์›Œ์ง€๋Š” block ์š”์†Œ๋ฅผ ์ œ๊ฑฐ ํ›„ className์œผ๋กœ๋งŒ ์Šคํƒ€์ผ์„ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒŒ๋œ date props๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: Post ์ปดํฌ๋„ŒํŠธ์˜ ์ˆ˜์ •๋œ ๊ตฌ์กฐ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: a ํƒœ๊ทธ์— ์ ํ•ฉํ•œ ๊ธฐ๋ณธ target๊ณผ rel์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์˜ ๊ธฐ๋ณธ target๊ณผ rel ์„ค์ •์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์Šคํ† ๋ฆฌ๋ถ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Post ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์— href๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Title ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Label ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ  className props๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: Interaction ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , className์œผ๋กœ ๋ง์ค„์ž„ํ‘œ ์ฒ˜๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” interaction์˜ ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ˆ˜์ •๋œ Interaction์„ Post์— ์žฌ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ˆ˜์ •๋œ interaction์˜ ๋„ค์ด๋ฐ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ˆ˜์ •๋œ Interaction์„ Card ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” className์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: focus ํšจ๊ณผ๋Š” ํ‚ค๋ณด๋“œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

* feat: Role ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#63)

* feat: ์ด๋ฏธ์ง€ asset์„ png ํ˜•ํƒœ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Badge ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: Badge ์ปดํฌ๋„ŒํŠธ์˜ storybook์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Role ์ปดํฌ๋„ŒํŠธ ์ค‘ Hero๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: Hero ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์Šคํ† ๋ฆฌ๋ถ์˜ title์„ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: props์˜ ๋„ค์ด๋ฐ์„ ์ง๊ด€์ ์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋‹จ์ˆœํ•œ ์Šคํƒ€์ผ์„ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ํ˜•์‹์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* rename: ๊ณตํ†ต๋œ ์ด๋ฆ„์„ ๊ฐ€์ง„ Badge๋ฅผ RoleBadge๋กœ ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* rename: ๊ณตํ†ต๋œ ์ด๋ฆ„์„ ๊ฐ€์ง„ Hero๋ฅผ RoleHero๋กœ ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: img์˜ alt ๋„ค์ด๋ฐ์„ ์ง๊ด€์ ์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ตœ์ƒ์œ„ div์˜ ์Šคํƒ€์ผ์„ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•œ import ๋ฌธ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•œ import ๋ฌธ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ปดํฌ๋„ŒํŠธ ๋ฐฐ๊ฒฝ์— ๋ฐ˜์˜๋œ opacity๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํƒ€์ž…์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* fix: opacity ์Šคํƒ€์ผ ์ ์šฉ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: dialog ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#61)

* feat: Dialog ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

* feat: useDialog ํ›… ์ƒ์„ฑ

* feat: Dialog ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* remove: ๋ถˆํ•„์š”ํ•œ index.ts ํŒŒ์ผ ์‚ญ์ œ

* refactor: useDialog useState ํƒ€์ž… ๋ช…์‹œ ์ œ๊ฑฐ

* fix: props ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ ๋ฐ btnLayout์— ๋”ฐ๋ฅธ ๋ฒ„ํŠผ ์œ„์น˜ ์ˆ˜์ • + ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: Dialog BlockButton className ์ œ๊ฑฐ

* chore: favicon ์„ค์ • (#58)

* chore: ํŒŒ๋น„์ฝ˜ png ์ถ”๊ฐ€

* chore: index.html ํŒŒ๋น„์ฝ˜ ์„ค์ •

* feat: ์•„์ด์ฝ˜ ์ถ”๊ฐ€ (#74)

* chore: ์ƒˆ๋กœ์šด ์•„์ด์ฝ˜ svg ํŒŒ์ผ 6๊ฐœ ์ถ”๊ฐ€

* feat: ์•„์ด์ฝ˜ ์ปดํฌ๋„ŒํŠธ์— ์ƒˆ๋กœ์šด ์•„์ด์ฝ˜ ์ถ”๊ฐ€

* feat: ์•„์ด์ฝ˜ ์Šคํ† ๋ฆฌ๋ถ ์—…๋ฐ์ดํŠธ (์ƒˆ๋กœ์šด ์•„์ด์ฝ˜ 6๊ฐœ ์ถ”๊ฐ€)

* fix: HeroIndex ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ • (#80)

* fix: HeroIndex์˜ Badge ๋ฐฐ๊ฒฝ์ƒ‰์ƒ/ํฐํŠธ์ƒ‰์ƒ ์ฃผ์ž…๊ฐ€๋Šฅํ•˜๋„๋ก props ์ˆ˜์ •

* feat: HeroIndex ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ ์ˆ˜์ •

* feat: ํ™œ๋™ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (#77)

* feat: ํ™œ๋™ ํŽ˜์ด์ง€ router ์„ค์ •

* feat: ์ž„์‹œ ๋ฐ์ดํ„ฐ ์ด์šฉํ•˜์—ฌ Activity ํŽ˜์ด์ง€ UI ๊ตฌํ˜„

* feat: Toast ๊ตฌํ˜„ (#67)

* feat: toastStore ์ƒ์„ฑ

* feat: Toast ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ ๋ฐ toast ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ •์˜

* feat: useToast ํ›… ์ƒ์„ฑ

* feat: Toast, useToast ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: Layout์— Toast ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

* refactor: ToastType bg -> backgroundColor๋กœ ๋„ค์ด๋ฐ ์ˆ˜์ •

* refactor: Toast ์ปดํฌ๋„ŒํŠธ useState ํƒ€์ž… ์ถ”๋ก  ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: Toast className clsx ์‚ฌ์šฉ

* remove: useToast ์‚ญ์ œ

* fix: useToast -> useToastActions ์‚ฌ์šฉ์œผ๋กœ ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: toastStore ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ์œผ๋กœ ๋ถˆ๋ณ€์„ฑ ์ง€ํ‚ค๊ธฐ

* refactor: animation.css ์ƒ์„ฑ ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ด€๋ จ css ์ฝ”๋“œ ๋ถ„๋ฆฌ

* feat: ๋ฉ”์ธํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (#78)

* feat: ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ถ€๋ถ„์— ์Œ“์ด๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Main ํŽ˜์ด์ง€์˜ ํ‹€์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋“ค์–ด๊ฐ€๋Š” ๋ถ€๋ถ„์„ ์ปดํฌ๋„ŒํŠธํ™”ํ•ฉ๋‹ˆ๋‹ค.

* feat: AnimatedSection์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* chore: gsap ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* refactor: gsap๋ฅผ ์ด์šฉํ•ด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: AnimatedSection์„ ๋ฉ”์ธํŽ˜์ด์ง€์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŠธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€์˜ ๋‘๋ฒˆ์งธ ์„น์…˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* refactor: HeroIndex์˜ width์— 100%๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

* refactor: CalloutNumerical์˜ width์— 100%๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€์˜ ์„ธ๋ฒˆ์งธ section์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๊ณตํ†ต์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ํ”„๋ ˆ์ž„์˜ className์„ ์ƒ์ˆ˜ํ™”ํ•ฉ๋‹ˆ๋‹ค.

* feat: Tab ์ปดํฌ๋„ŒํŠธ์— cursor pointer ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€์˜ ๋„ค๋ฒˆ์งธ section์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* refactor: Hero ์ปดํฌ๋„ŒํŠธ์˜ content๋ฅผ children ํ˜•ํƒœ๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: HeroIndex ์ปดํฌ๋„ŒํŠธ์˜ content๋ฅผ children ํ˜•ํƒœ๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€์˜ ๋งˆ์ง€๋ง‰ section์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ˆ˜์ •๋œ HeroIndex ์ปดํฌ๋„ŒํŠธ์˜ props ๊ตฌ์กฐ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•œ import ๋ฌธ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

* rename: ๊ณตํ†ต wrapper์˜ ์Šคํƒ€์ผ ๋ช…์นญ์„ ์ง๊ด€์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: Hero ์ปดํฌ๋„ŒํŠธ๊ฐ€ badge์˜ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” badgeText props ๊ฐ’์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* fix: ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์œ„ํ•œ section์˜ ์Šคํƒ€์ผ์„ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธํŽ˜์ด์ง€์— scroll ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฉ”์ธ ํŽ˜์ด์ง€์— ์Šคํฌ๋กค ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํฌ๋กค ํŠธ๋ฆฌ๊ฑฐ ์ง„ํ–‰ ์‹œ context๋ฅผ ์ด์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋žœ๋”ฉ ํŽ˜์ด์ง€ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ•œ๊ธ€์ž ์”ฉ ํƒ€์ดํ•‘ ๋˜๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํƒ€์ž„๋ผ์ธ section์— ํ•„์š”ํ•œ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ํƒ€์ž„๋ผ์ธ section์„ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป ๋ฐ˜์˜๋œ RoleHero์˜ ๋””์ž์ธ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํฌ์ง€์…˜ section์˜ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ํฌ์ง€์…˜ section์˜ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์œผ๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

* fix: Hero ์ปดํฌ๋„ŒํŠธ์˜ ์ž˜๋ชป ์ ์šฉ๋œ ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•ต์‹ฌ ๊ฐ€์น˜ section์˜ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•ต์‹ฌ ๊ฐ€์น˜ section ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์œผ๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

* fix: HeroIndex์˜ ์ž˜๋ชป ์ ์šฉ๋œ padding ๊ฐ’์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•œ ์ฃผ์„์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: Title์˜ ์ผ๋ถ€๋ถ„์— accent ์ƒ‰์ƒ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป ์ ์šฉ๋œ ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป ์ ์šฉ๋œ ์Šคํƒ€์ผ์„ ์žฌ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: ๋ถˆํ•„์š”ํ•œ fragment๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ๊ตฌ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ ์šฉ๋œ ์Šคํƒ€์ผ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: section์˜ ๋ทฐํฌํŠธ๋ฅผ dvh๋กœ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•œ ์š”์†Œ์— ์Šคํฌ๋กค ๋ฐ”๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š” global ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋™์ž‘ ์‹œ ๊ธฐ๋ณธ ์Šคํฌ๋กค์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋„๋ก ๊ตฌ์กฐ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: gsap ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ง„์ž…์ ์„ main.tsx๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: context๋ฅผ ์ด์šฉํ•ด context ๋‚ด๋ถ€ section์— ๋Œ€ํ•ด์„œ๋งŒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•˜๋‹จ์—์„œ ์ƒ๋‹จ์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์— ๋ฑƒ์ง€ ์Šคํƒ€์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: HeroIndex์˜ ๋ฑƒ์ง€ ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* move: ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋””๋ฒ„๊น…์„ ์œ„ํ•œ marker ์˜ต์…˜์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* move: ์ƒ๋‹จ ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋””๋ฒ„๊น…์„ ์œ„ํ•œ marker ์˜ต์…˜์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: apply-3 ํŽ˜์ด์ง€ ๋ฐ ์ง€์› ์™„๋ฃŒ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (#81)

* feat: ์ง€์› ๊ณผ์ • ํŽ˜์ด์ง€ PATH ์ถ”๊ฐ€

* feat: ์ง€์› ๊ณผ์ • ํŽ˜์ด์ง€๋“ค router ์„ค์ •

* feat: ์ง€์› ๊ด€๋ จ ํŽ˜์ด์ง€์˜ ํƒ€์ดํ‹€ ๋ฌธ๊ตฌ APPLY_TITLE ๊ฐ์ฒดํ™” ๋ฐ ์ ์šฉ

- ํŒŒ์ผ๋ช… applyData -> applyPageData๋กœ ๋ณ€๊ฒฝ

* rename: faqData -> faqPageData๋กœ ํŒŒ์ผ๋ช… ์ˆ˜์ • ๋ฐ ์ž„ํฌํŠธ ์ˆ˜์ •

* feat: ์ง€์› ๊ด€๋ จ ํŽ˜์ด์ง€ ๋‚ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์‹œ์ง€ ์ƒ์ˆ˜ํ™”

* feat: ์ง€์› ์™„๋ฃŒ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„

* remove: ์ง€์› ์™„๋ฃŒํŽ˜์ด์ง€ ๋ถˆํ•„์š”ํ•œ ๋ฒ„ํŠผ className ์‚ญ์ œ

* feat: apply-3 ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ ์ž…๋ ฅ ํŽ˜์ด์ง€)

* feat: apply-3 ํŽ˜์ด์ง€ router์— ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

* fix: ApplyComplete ๋ฒ„ํŠผ className w-full ์ถ”๊ฐ€

* refactor: ApplyApplicationInfo ์ปดํฌ๋„ŒํŠธ css ์ˆ˜์ •

* refactor: ApplyComplete ํŽ˜์ด์ง€ css ์ˆ˜์ • ๋ฐ Link -> navigate ์‚ฌ์šฉ

* refactor: ApplyApplicationInfo ํŽ˜์ด์ง€ Link -> navigate ์‚ฌ์šฉ

* fix: ์ง€์› ์™„๋ฃŒ ํŽ˜์ด์ง€ ์ปจํ…์ธ  ์ค‘์•™ ์ •๋ ฌ

* fix: ProgressIndicator key๊ฐ’ ์ถ”๊ฐ€

* fix: APPLY_HELPER_MESSAGE ๋„ค์ด๋ฐ ๋ฐฉ์‹ ํ†ต์ผ

* fix: APPLY_MESSAGE ๊ตฌ์กฐ ๋ฐ ๋ฌธ๊ตฌ ์ˆ˜์ •

* refactor: ApplyComplete ์ปดํฌ๋„ŒํŠธ ๋‚ด์šฉ๊ธ€ ๋ฐ ๋ฒ„ํŠผ ๋ฌธ๊ตฌ ์ƒ์ˆ˜ํ™”

* feat: File, Uploader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„  (#76)

* feat: validateFileType util ํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: file ํ™•์žฅ์ž ๋ฐ fileMine ๊ฐ์ฒด ์ƒ์„ฑ

* feat: changeFileSizeUnit util ํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: TextArea ์ปดํฌ๋„ŒํŠธ outline-none ํด๋ž˜์Šค ์ถ”๊ฐ€

* fix: InputArea ์ปดํฌ๋„ŒํŠธ w-full ๋กœ ๋ณ€๊ฒฝ

* feat: Uploader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ ๋ฐ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: File ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ ๋ฐ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: InputFile ์ปดํฌ๋„ŒํŠธ(File+Uploader) ๊ตฌํ˜„ ๋ฐ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* fix: inputFile -> InputFile ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ ๋ฐ file ํƒ€์ž…์— ๋”ฐ๋ผ key๊ฐ’ ์ฒ˜๋ฆฌ

* feat: InputFile ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* refactor: File openFile ํ•จ์ˆ˜ ์ฝ”๋“œ ์ˆ˜์ • (if๋ฌธ ๋Œ€์‹  ์‚ผํ•ญ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ)

* fix: File ์ปดํฌ๋„ŒํŠธ์˜ deleteHandler event ํƒ€์ž… ์ˆ˜์ •

* remove: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ

* feat: fileUrl ํƒ€์ž… ์ถ”๊ฐ€

* fix: fileUrl ํƒ€์ž… ๋Œ€๋ฌธ์ž ์‹œ์ž‘์œผ๋กœ ์ˆ˜์ •

* feat: File ์ปดํฌ๋„ŒํŠธ CDN URL๋งŒ ๋ฐ›๋Š” ๊ฑธ๋กœ ์ˆ˜์ •

* fix: InputFile๋„ CDN URl ๋งŒ ๋ฐ›๋„๋ก ์ˆ˜์ •

* fix: Uploader disabled ์ƒํƒœ ์ˆ˜์ • ๋ฐ ๊นœ๋ฐ•์ž„ ํ˜„์ƒ ํ•ด๊ฒฐ + ์ค‘๋ณต ์ฝ”๋“œ ์ •๋ฆฌ

* feat: Uploader disabled ์Šคํ† ๋ฆฌ ์ถ”๊ฐ€

* style: File ์ปค์„œํฌ์ธํ„ฐ ์ถ”๊ฐ€

* docs: File ์Šคํ† ๋ฆฌ๋ถ ์—…๋ฐ์ดํŠธ

* feat: InputFile UI ์—…๋ฐ์ดํŠธ (๋ ˆ์ด๋ธ” ๋ฐ ์šฉ๋Ÿ‰ ํ‘œ๊ธฐ ์ถ”๊ฐ€)

* feat: feedback ํƒ€์ž…์˜ File ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

* fix: feedback ํƒ€์ž… File cursor pointer ์ œ๊ฑฐ

* fix: Uploader ์ปดํฌ๋„ŒํŠธ ํ™•์žฅ์ž ๊ฒ€์ฆ ๋กœ์ง ์ œ๊ฑฐ

ํ™•์žฅ์ž ๊ฒ€์ฆ์€ File ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง ํƒ€์ด๋ฐ์— ์ˆ˜ํ–‰

* fix: InputFile์—์„œ File ์ปดํฌ๋„ŒํŠธ ์ œ๊ฑฐ File ์ปดํฌ๋„ŒํŠธ๋Š” children์œผ๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •

* refactor: fileStyle ๋ถ„๋ฆฌ

* fix: FileUrl id ํƒ€์ž… string์œผ๋กœ ๋ณ€๊ฒฝ

* design: useState์˜ <boolean> ์‚ญ์ œ

* refactor: maxSize ์ดˆ๊ธฐ๊ฐ’ ์‚ญ์ œ

* feat: ํ”„๋กœ์ ํŠธ, ํ”„๋กœ์ ํŠธ ์ƒ์„ธํŽ˜์ด์ง€ ๊ตฌํ˜„ (#84)

* feat: ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€ ํ‹€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํ„ฐ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ์™€ ํ•ด์ปคํ†ค์„ ์œ„ํ•œ ์ž„์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ํ›„๊ธฐ section์„ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋กœ ํผ๋ธ”๋ฆฌ์‹ฑ ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€์˜ ํ‹€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€์˜ ๊ฒฝ๋กœ๋ฅผ router์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: CalloutInformation ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ ํƒœ๊ทธ์— w-full์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ์ƒ์„ธํŽ˜์ด์ง€์˜ ํ™”๋ฉด์„ ๋”๋ฏธ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ํผ๋ธ”๋ฆฌ์‹ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€์˜ ๋ฒ„ํŠผ ํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž˜๋ชป ์ ์šฉ๋œ ๋ฒ„ํŠผ ์•„์ด์ฝ˜์˜ ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: content๋ฅผ ๊ฐ์‹ธ๋Š” wrapper์˜ ๋†’์ด๋ฅผ ๊ณ ์ •๊ฐ’์ด ์•„๋‹Œ ์ตœ์†Ÿ ๊ฐ’์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•ด์ปคํ†ค ํŽ˜์ด์ง€ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๊ฒฝ๋กœ ํ˜ธ์ถœ์„ ์ƒ์ˆ˜ํ™”๋œ ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* design: grid ๋Œ€์‹  flex-col ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ column ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

* fix: router์˜ import order์„ eslint ์„ค์ •์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* design: ๋ ˆ์ด์•„์›ƒ์˜ ์ตœ์†Œ ํฌ๊ธฐ๋ฅผ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: TabItem์˜ props ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝ ํ›„ disabled ์†์„ฑ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* refactor: type์œผ๋กœ ์„ ์–ธ๋œ props๋ฅผ interface ๊ตฌ์กฐ๋กœ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* feat: TabItem์˜ ๋น„ํ™œ์„ฑํ™” ์ƒ‰์ƒ๊ณผ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ ์ œ์–ด๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•ด์ปคํ†ค Tab์— disabled์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ”„๋กœ์ ํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€์— Select ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ธํ„ฐ๋ ‰์…˜ focus-visible ํšจ๊ณผ ๋‚˜ํƒ€๋‚  ๋•Œ border๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#89)

* fix: focus-visible ํšจ๊ณผ ๋‚˜ํƒ€๋‚  ๋•Œ border์ด ๋ณด์ด์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* fix: scale ๊ณ ๋ คํ•œ interaction ์Šคํƒ€์ผ ์ƒ์„ฑ

* refactor: scale ์ธํ„ฐ๋ ‰์…˜์ด ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉ (์•„์ฝ”๋””์–ธ, ๋ผ๋ฒจ๋ฒ„ํŠผ)

* bug: ๋นŒ๋“œ ํŒŒ์ผ ์ƒ์„ฑ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ ์ˆ˜์ • (#88)

* refactor: BlockButton์˜ style props๋ช…์„ ๊ธฐ๋ณธ button style๊ณผ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ ์ง“์Šต๋‹ˆ๋‹ค.

* docs: ์ˆ˜์ •๋œ props ์ด๋ฆ„์„ BlockButton ์Šคํ† ๋ฆฌ ํŒŒ์ผ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* docs: ์ž˜๋ชป ๊ธฐ์ž…๋œ size ๋ช…์นญ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* docs: fileId ์˜ ๊ฐ’์„ file ํƒ€์ž…์—์„œ ์„ ์–ธํ•œ string ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* docs: snackBar์—์„œ ๋ˆ„๋ฝ๋œ onaction props๋ฅผ ์Šคํ† ๋ฆฌ ํŒŒ์ผ์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

* refactor: TabItem์˜ ์ธํ„ฐํŽ˜์ด์Šค ์ค‘ id๋ฅผ ์ปค์Šคํ…€ props๋กœ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” import ๋ฌธ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* docs: ์ž˜๋ชป ์„ ์–ธ๋œ ์ปดํฌ๋„ŒํŠธ ๋„ค์ด๋ฐ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: ํƒ€์ž… import ๊ฒฝ๋กœ๋ฅผ ์ ˆ๋Œ€๊ฒฝ๋กœ์—์„œ ์ƒ๋Œ€๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* fix: BlockButton์˜ ์ธํ„ฐํŽ˜์ด์Šค ๋ช…์€ ๊ธฐ์กด์˜ ์ด๋ฆ„์œผ๋กœ ์žฌ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: apply-2 ํŽ˜์ด์ง€ UI ๊ตฌํ˜„ (#82)

* feat: ApplyVerify ํŽ˜์ด์ง€ UI ๊ตฌํ˜„

* fix: InputField ํ—ฌํผ๋ฉ”์‹œ์ง€ ํฐํŠธ์ƒ‰์ƒ ์กฐ๊ฑด๋ถ€ ์ˆ˜์ •

* refactor: Title ๊ฐ์‹ธ๋Š” div ํƒœ๊ทธ ์ œ๊ฑฐ

* fix: ์ž˜๋ชป ์ˆ˜์ •๋œ ๋ถ€๋ถ„ ๋ณต๊ตฌ

* fix: isExist -> isNewApplicant ๋กœ ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ

* refactor: ์ค‘์ฒฉ ์‚ผํ•ญ์—ฐ์‚ฐ์ž ํ‘œํ˜„ ๋ณ€๊ฒฝ

* refactor: ์ค‘์ฒจ์‚ผํ•ญ์—ฐ์‚ฐ์ž clsx ์‚ฌ์šฉ

* refactor: ApplyVerify๋ฅผ ApplyVerifyEmail, ApplyVerifyPin ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌ

* feat: Input ์ปดํฌ๋„ŒํŠธ disabled ์ผ๋•Œ text ์ƒ‰์ƒ ์ถ”๊ฐ€

* fix: NewTabLink className props์œผ๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •

* feat: ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ํŽ˜์ด์ง€ ์—ฐ๊ฒฐ

* feat: ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ •์ผ ๊ฒฝ์šฐ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง

* fix: applyInfoList NewTabLink className ๋‹ฌ๊ธฐ

* feat: ์ด๋ฉ”์ผ ์ธ์ฆ ํŽ˜์ด์ง€ ๋ผ์šฐํ„ฐ ์„ค์ •

* fix: ์ด๋ฉ”์ผ ์ธ์ฆ ํŽ˜์ด์ง€ PATH ์ˆ˜์ •

* remove: ApplyVerify ์ปดํฌ๋„ŒํŠธ ์‚ญ์ œ

* feat: APPLY_TITLE ๋น„๋ฐ€๋ฒˆํ˜ธ์žฌ์„ค์ • ํŽ˜์ด์ง€ ํƒ€์ดํ‹€ ์ถ”๊ฐ€

* feat: ์ง€์›ํ•˜๊ธฐ ํŽ˜์ด์ง€์—์„œ ์ด๋ฉ”์ผ ์ธ์ฆ ํŽ˜์ด์ง€ navigate ์„ค์ •

* fix: ApplyApplicationInfo ์ปดํฌ๋„ŒํŠธ isReady -> isStepCompleted ๋ณ€์ˆ˜๋ช… ์ˆ˜์ •

* fix: prop ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง ๋ถˆ๊ฐ€๋กœ ๋ฐฉ์‹ ๋ณ€๊ฒฝ

* fix: PATH ๋ณ€์ˆ˜๋ช… applyVerify๋กœ ์žฌ์ˆ˜์ •

* remove: ๋ถˆํ•„์š”ํ•œ ์ž„ํฌํŠธ ์‚ญ์ œ

* refactor: setter ์ œ๊ฑฐ

* refactor: Input isError ์˜ต์…”๋„ ์ฒ˜๋ฆฌ

* refactor: ์ˆœํ™˜ ๋ Œ๋”๋ง ๋ฌธ์ œ ๋ฐœ์ƒ ์šฐ๋ ค๋กœ ApplyVerify ์ปดํฌ๋„ŒํŠธ์—์„œ ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋งํ•˜๋„๋ก ์ˆ˜์ •

* refactor: Apply ํŽ˜์ด์ง€ ์ค‘ main ํƒœ๊ทธ -> sectionํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ ๋ฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” form ํƒœ๊ทธ์˜ action='' ์ œ๊ฑฐ

* refactor: email ๋”๋ฏธ๋ฐ์ดํ„ฐ ๋นˆ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ

* refactor: useState ๋ถˆ๋ฆฌ์–ธํƒ€์ž… ์ง€์ • ์ œ๊ฑฐ

* refactor: ApplyVerify ์กฐ๊ฑด๋ถ€ ๋ฆฌํŒฉํ† ๋ง

* refactor: ApplyVerify ์‚ผํ•ญ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜์—ฌ return ํ•˜๊ธฐ

* feat: ์ง€์›์„œ ์ž‘์„ฑ ํŽ˜์ด์ง€ UI ๊ตฌํ˜„(apply-4) (#85)

* feat: ApplyRegistration ํŽ˜์ด์ง€ ์ƒ์„ฑ ๋ฐ select์— ๋”ฐ๋ฅธ ๋ฌธํ•ญ ๋‚˜ํƒ€๋‚˜๋„๋ก UI ๊ตฌํ˜„

* fix: InputArea ๊ณ ์ •๋œ width ๊ฐ’ ์ œ๊ฑฐ

* refactor: TextArea ์ปดํฌ๋„ŒํŠธ outline none ์ฒ˜๋ฆฌ ๋ฐ ์ž๋™ ๋†’์ด ์กฐ์ ˆ์„ ์œ„ํ•œ row=1 ์ง€์ •

* feat: ํ…์ŠคํŠธ ์–‘๋งŒํผ TextArea์˜ ๋†’์ด ์ž๋™ ์กฐ์ ˆ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* feat: ApplyRegistration ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ ๋ผ์šฐํ„ฐ ๋“ฑ๋ก

* feat: ์—๋Ÿฌ์ผ ๊ฒฝ์šฐ TextArea border ์ฒ˜๋ฆฌ

* feat: InputArea ํ—ฌํผ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ์—๋Ÿฌ์ผ ๊ฒฝ์šฐ ์Šคํƒ€์ผ ์ฒ˜๋ฆฌ

* refactor: ๋ถˆํ•„์š”ํ•œ ์Šคํƒ€์ผ ๋ฐ ํƒœ๊ทธ ์ œ๊ฑฐ

* remove: console.log ์ œ๊ฑฐ

* feat: select ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์œผ๋กœ ํฌ์ง€์…˜ ์„ ํƒํ•˜๊ธฐ ๋ฐ select outside ํด๋ฆญ ์‹œ ๋‹ซํžˆ๊ธฐ

* feat: mergeRefs ์œ ํ‹ธํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: mergeRefs ์œ ํ‹ธํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜์—ฌ textareaRef, ref ๋ฐ›๋„๋ก ํ•จ

* refactor: ApplyRegistration ์ฝ”๋“œ ์ •๋ฆฌ

* refactor: POSITIONS ๋ฐฐ์—ด ์ƒ์ˆ˜ ์‚ฌ์šฉ

* feat: Uploader ์ตœ๋Œ€ ๊ฐ€๋Šฅ ์šฉ๋Ÿ‰๊ฐ’ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋„๋ก ํ•จ.

* refactor: ApplyRegistration ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ ๋”๋ฏธ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉํ•˜์—ฌ InputFile ๊ตฌํ˜„

* refactor: InputFile File ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์—ด์„ ๋ฐ›๋„๋ก ์ˆ˜์ •

File ์ปดํฌ๋„ŒํŠธ ๋ฆฌ์ŠคํŠธ๋“ค์„ ๊ฐ์‹ธ๋Š” ์ปจํ…Œ์ด๋„ˆ ํƒœ๊ทธ๋ฅผ ์ผ์ผ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š๋„๋ก InputFile์—์„œ ์ด๋™์‹œํ‚ค๊ธฐ ์œ„ํ•จ.
์ถ”๊ฐ€๋กœ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—๋งŒ ์ปจํ…Œ์ด๋„ˆ ํƒœ๊ทธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด children ์†์„ฑ์ด ์•„๋‹Œ ๋ฐฐ์—ด์„ ๋ฐ›๋„๋ก ๋ณ€๊ฒฝ.

* refactor: ApplyRegistration์— ์ˆ˜์ •๋œ InputFile ์ ์šฉ

* refactor: InputArea errorHelper ์กฐ๊ฑด๋ถ€ ์ˆ˜์ •

* docs: InputArea ์Šคํ† ๋ฆฌ๋ถ ์—…๋ฐ์ดํŠธ

* docs: mergeRefs TSDoc ์ถ”๊ฐ€

* fix: ์ง๊ตฐ ์„ ํƒ ์ดˆ๊ธฐ์—๋งŒ ํ‚ค๋ณด๋“œ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•œ ๋ฒ„๊ทธ ์ˆ˜์ •

* fix: ApplyRegistration select ํ‚ค๋ณด๋“œ ํƒญ ์„ ํƒ ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* fix: ApplyRegistration ํ‚ค๋ณด๋“œ ํƒ€์ดํ•‘ ๊ธฐ๋Šฅ ์ œ๊ฑฐ

select ์„ ํƒ์ง€๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ input์ด๋ฏ€๋กœ ํƒ€์ดํ•‘ ๊ธฐ๋Šฅ ๋ถˆํ•„์š”
ํƒ€์ดํ•‘์ด ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ, ํ˜ผ๋ž€์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ

* design: Input ์ปดํฌ๋„ŒํŠธ readonly์ผ ๊ฒฝ์šฐ์—” cursor default

* refactor: TextArea์— className props ์ถ”๊ฐ€, focus ํšจ๊ณผ ๋””์ž์ธ ์ˆ˜์ •

* docs: InputArea ์Šคํ† ๋ฆฌ๋ถ description ์ถ”๊ฐ€

* feat: forwardRef ์ปดํฌ๋„ŒํŠธ์— displayName ๋‹ฌ๊ธฐ

* refactor: Input, InputField, TextArea isError ์˜ต์…”๋„ ์ฒ˜๋ฆฌ

* remove: ๋ถˆํ•„์š”ํ•œ index.ts ์‚ญ์ œ

* refactor: setIsSelectOpen false๋กœ ์ˆ˜์ •

* refactor: MutableRefObject import ํ•˜๊ธฐ

* refactor: Ref import ํ•˜๊ธฐ

* feat: ๋ฆฌํŒฉํ† ๋ง ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€ (#92)

๋ฆฌํŒฉํ† ๋ง ์ด์Šˆ ํ…œํ”Œ๋ฆฟ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* chore: api ์—ฐ๋™์„ ์œ„ํ•œ axios, tanstack query ์„ธํŒ… ๋ฐ ํ…Œ์ŠคํŠธ (#90)

* feat: QueryClientProvider ๋ฐ DevTools ์„ค์ •

* chore: axios ์„ค์น˜

* chore: gitignore์— .env ์ถ”๊ฐ€

* feat: axiosInstance ์ƒ์„ฑ

* feat: vite proxy ์„ค์ •

* feat: ํ”„๋ก์‹œ ์„œ๋ฒ„ ์ด์šฉํ•˜๋ฏ€๋กœ axioInstance BASE_URL ์ž„์‹œ๋กœ '/api' ์„ค์ •

* feat: requestHandler ์ƒ์„ฑ

* feat: ApiResponse ๊ณตํ†ต ํƒ€์ž… ์ •์˜ ( + Sort)

* feat: fetchMiniStudies ํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: Tanstack query ์‚ฌ์šฉํ•œ useMiniStudies ํ›… ์ƒ์„ฑ

* refactor: ๋ฏธ๋‹ˆ์Šคํ„ฐ๋”” api ์—ฐ๋™

* refactor: ๋ฏธ๋‹ˆ์Šคํ„ฐ๋”” fetch ํ•จ์ˆ˜ ํ•œ์ค„๋กœ ์ค„์ด๊ธฐ

* refactor: axiosInstance ๋ถˆํ•„์š”ํ•œ ๋ณ€์ˆ˜ ์ œ๊ฑฐ

* remove: ๋ถˆํ•„์š”ํ•œ index.ts ํŒŒ์ผ ์‚ญ์ œ

* rename: axiosInstance.ts -> httpClient.ts ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ ๋ฐ utils/ ๋กœ ์ด๋™

* refactor: ๊ฒฝ๋กœ ์ˆ˜์ •

* refactor: ReactQueryDevtools๋Š” ๊ฐœ๋ฐœํ™˜๊ฒฝ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ์ฒ˜๋ฆฌ

* refactor: api endpoint ๋ฐ ํƒ€์ž… ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ

* refactor: fetchMiniStudies -> getMiniStudies๋กœ ํ•จ์ˆ˜๋ช… ๋ณ€๊ฒฝ

* refactor: types ํด๋” ์ •๋ฆฌ

* refactor: types ํด๋” ์ •๋ฆฌํ•œ ํŒŒ์ผ๋“ค ๊ฒฝ๋กœ ์ˆ˜์ •

* feat: requestHandler์— 401,403, 500, ๊ธฐํƒ€ ๋„คํŠธ์›Œํฌ ์—๋Ÿฌ ์ „์—ญ ์ฒ˜๋ฆฌ

* feat: ApiResponse์˜ State ์ข…๋ฅ˜ ์—…๋ฐ์ดํŠธ

* refactor: TODO ์ถ”๊ฐ€

* refactor: Sort ํƒ€์ž… sort ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌ ๋ฐ ์ ์šฉ

* refactor: requestHandler ์ œ๋„ค๋ฆญ ํƒ€์ž… ์ˆ˜์ • (#102)

* refactor: requestHandler ์ œ๋„ค๋ฆญ ํƒ€์ž… ์ˆ˜์ •

* refactor: getMiniStudies์—์„œ ApiResponse ์ œ๊ฑฐ

* feat: CheckBox ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#86)

* feat: CheckBox ์ปดํฌ๋„ŒํŠธ์˜ type์„ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

* feat: CheckBox ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” CheckBoxIcon ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: CheckBox ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* docs: CheckBox ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํ† ๋ฆฌ๋ถ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

* design: interaction์˜ click ์š”์†Œ ํšจ๊ณผ๋ฅผ ์นดํ…Œ๊ณ ๋ฆฌํ™”ํ•ฉ๋‹ˆ๋‹ค.

* design: CheckBox์— interaction ์š”์†Œ๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์‹ค์ œ interaction์ด ์ ์šฉ๋˜๋Š” ํƒœ๊ทธ์— interaction์„ ์žฌ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* style: import ๋ฌธ์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ƒ๋Œ€๊ฒฝ๋กœ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* typo: ์ปดํฌ๋„ŒํŠธ์˜ ์˜คํƒˆ์ž๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: CheckBox์— hover interaction์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* typo: ํ•จ์ˆ˜์™€ ํƒ€์ž… ๋ช…์„ ํŒŒ์Šค์นผ ์ผ€์ด์Šค๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: interaction์„ ์ปค์Šคํ…€ ํ•˜์—ฌ CheckBox ์ปดํฌ๋„ŒํŠธ์— ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

* docs: checkbox ์Šคํ† ๋ฆฌ ํŒŒ์ผ์— interaction์ด ์ ์šฉ๋˜๋Š” ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* docs: useState ์„ render ์ฝœ๋ฐฑ์—์„œ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: tabIndex๋ฅผ ์ด์šฉํ•ด interaction ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” div์— interaction์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” interaction ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: interaction์ด ์ ์šฉ๋˜๋Š” div์— tabIndex๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* move: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” group ์†์„ฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: Icon ์ปดํฌ๋„ŒํŠธ์˜ import ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: interaction์„ ์œ„ํ•œ div์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ค์ œ ์š”์†Œ์— interaction์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* fix: focus ์‹œ before ๊ฐ€์ƒ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ž์‹ ์š”์†Œ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ focus ๋˜๋„๋ก ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์Šคํƒ€์ผ ํด๋” ๋ฆฌํŒฉํ† ๋ง (#100)

* refactor: ๋ธ”๋Ÿญ ๋ฒ„ํŠผ, ๋ผ๋ฒจ ๋ฒ„ํŠผ ์Šคํƒ€์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ํด๋”๋กœ ์ด๋™

* refactor: file ์Šคํƒ€์ผ ํŒŒ์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ํด๋”๋กœ ์ด๋™

* refactor: ์•„์ด์ฝ˜ ์Šคํƒ€์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ํด๋”๋กœ ์ด๋™

* refactor: ํƒ€์ดํ‹€ ์Šคํƒ€์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ํด๋”๋กœ ์ด๋™

* refactor: ๋ ˆ์ด๋ธ” ์Šคํƒ€์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ํด๋”๋กœ ์ด๋™

* refactor: ์ง๊ตฐ๋ช…, ์ด๋ฉ”์ผ ๋ณ€๊ฒฝ ๋ฐ ๋ฐ๋ธŒ์˜ต์Šค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋น„ํ™œ์„ฑํ™” (#104)

* refactor: ํ”„๋กœ์ ํŠธ ๋งค๋‹ˆ์ €์—์„œ ํ”„๋กœ๋•ํŠธ ๋งค๋‹ˆ์ €๋กœ ๋ณ€๊ฒฝ

* refactor: [email protected]๋กœ ๋ณ€๊ฒฝ

* refactor: ๋ฉ”์ธํŽ˜์ด์ง€ ๋ฐ๋ธŒ์˜ต์Šค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋น„ํ™œ์„ฑํ™” ์ฒ˜๋ฆฌ

* feat: ์ ํ†ก ์กฐํšŒ ๊ธฐ๋Šฅ ๋ฐ EmptyData ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#99)

* feat: jectalk Response ํƒ€์ž… ์ƒ์„ฑ

* feat: getJectalks fetch ํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: useJectalks ํ›… ์ƒ์„ฑ

* feat: EmptyData ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๋ฐ ์Šคํ† ๋ฆฌ๋ถ ์ž‘์„ฑ

* feat: activity page, ์žญํ†ก ์กฐํšŒ API ์—ฐ๊ฒฐ ๋ฐ EmptyData ์ปดํฌ๋„ŒํŠธ ์ ์šฉ

* refactor: jectalk fetch ํ•จ์ˆ˜ ํƒ€์ž… ์ˆ˜์ •

* refactor: EmptyData ์ปดํฌ๋„ŒํŠธ Label ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ์ˆ˜์ •

* refactor: react-query ์‚ฌ์šฉ ํ›…์€ Query ์ ‘๋ฏธ์‚ฌ ์‚ฌ์šฉ

* refactor: useQuery ์—๋Ÿฌ ๋กœ๊ทธ  ์ถœ๋ ฅ

* refactor: ์—๋Ÿฌ ๋กœ๊ทธ ๋ฌธ๊ตฌ ์ˆ˜์ •

* feat: ์ ํ†ก summary ํ‘œ์‹œ ๋ฐ EmptyData ์กฐ๊ฑด๋ถ€ ์ˆ˜์ • (#111)

* feat: ์ ํ†ก ๋ ˆ์ด๋ธ” ํ‘œ์‹œ

* refactor: ๋ฏธ๋‹ˆ์Šคํ„ฐ๋””, ์ ํ†ก ๋ Œ๋”๋ง ์กฐ๊ฑด ์ˆ˜์ •

* feat: ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#109)

* feat: ํŒŒ์ผ ์—…๋กœ๋“œ api ์š”์ฒญ ํ•จ์ˆ˜ ๋ฐ ํ›… ์ƒ์„ฑ

* fix: Uploader ์ปดํฌ๋„ŒํŠธ ๋™์ผํ•œ ํŒŒ์ผ ์—ฐ์† ์„ ํƒ ๋ถˆ๊ฐ€ ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* refactor: changeFileSizeUnit ์œ ํ‹ธํ•จ์ˆ˜ ์ˆ˜์ •

- ๋‹จ์œ„ ํ‘œ๊ธฐ ์—ฌ๋ถ€ ์ถ”๊ฐ€

* feat: validateMaxSize ์œ ํ‹ธํ•จ์ˆ˜ ์ถ”๊ฐ€

* feat: Portfolio, NewPortfolio ํƒ€์ž… ์ƒ์„ฑ

* remove: FileUrl ํƒ€์ž… ์‚ญ์ œ

* chore: lottie-react ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

* chore: loadingSpinner json ํŒŒ์ผ ์ถ”๊ฐ€

* refactor: select ์™ธ๋ถ€ ํด๋ฆญ ์‹œ ๋‹ซํžˆ๊ธฐ ๋กœ์ง useCloseOutSide ํ›…์œผ๋กœ ๋ถ„๋ฆฌ

* feat: S3 ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ ๋ฐ File ์ปดํฌ๋„ŒํŠธ๋ช… FileItem์œผ๋กœ ๋ณ€๊ฒฝ

* docs: FileItem ์Šคํ† ๋ฆฌ๋ถ ์—…๋ฐ์ดํŠธ

* refactor: InputFile์˜ fileNode prop -> children์œผ๋กœ ๋ณ€๊ฒฝ

* docs: InputFile ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: ํŒŒ์ผ presignedUrl ์ƒ์„ฑ ์š”์ฒญ ๋ฐ ApplyRegistration์—์„œ ๋ฌธํ•ญ ์ฝ”๋“œ ๋ถ„๋ฆฌ

* feat: ๋„คํŠธ์›Œํฌ ๋ถˆ์•ˆ์ • ์ด์Šˆ, ํ™•์ธํ•  ์ˆ˜ ์—†๋Š” ํŒŒ์ผ ํ˜•์‹ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

* fix: eslint ์—๋Ÿฌ ์ˆ˜์ •

* refactor: uploadFileToS3 axios ํ•จ์ˆ˜ ํŒŒ์ผ ๋ถ„๋ฆฌ ๋ฐ mutate ๋ณ€์ˆ˜๋ช… ๋ถ™์ด๊ธฐ

* feat: S3 ํŒŒ์ผ ์—…๋กœ๋“œ ์‹คํŒจ ์‹œ retry 3ํšŒ ์„ค์ •

* design: ๋ฉ”์‹œ์ง€ ๋ฌธ๊ตฌ ์ˆ˜์ •

* feat: ์†์ƒ๋œ ํŒŒ์ผ ํ™•์ธ ๋ฐ ๋ถ„๋ฆฌํ•ด์ฃผ๋Š” ์œ ํ‹ธํ•จ์ˆ˜ ์ƒ์„ฑ

* fix: ํŒŒ์ผ ํ•„ํ„ฐ๋ง ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ˆ˜์ •

- pdf๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ์ผ ๊ฒฝ์šฐ ์—๋Ÿฌ ํ† ์ŠคํŠธ๋งŒ ์ œ์‹œ
- ์†์ƒ๋œ pdf ํŒŒ์ผ์ผ ๊ฒฝ์šฐ ์—๋Ÿฌ UI ํŒŒ์ผ, ํ† ์ŠคํŠธ ์ œ์‹œ

* feat: ํŒŒ์ผ ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

* feat: ์—…๋กœ๋“œ ์ค‘์ธ ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ ์ทจ์†Œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ๋„คํŠธ์›Œํฌ ์—๋Ÿฌ์‹œ ํŒŒ์ผ ์—…๋กœ๋“œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ˆ˜์ •

* refactor: fileExtensions ๋ณ€์ˆ˜๋ช… ๋ณต์ˆ˜ ์ฒ˜๋ฆฌ

* refactor: changeFileSizeUnit ์œ ํ‹ธํ•จ์ˆ˜ ๋กœ์ง ์ˆ˜์ • ๋ฐ ๋ฆฌํŒฉํ† ๋ง

* refactor: ์œ ํ‹ธ ํ•จ์ˆ˜ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•œ ๊ฐœํ–‰ ์ฒ˜๋ฆฌ

* refactor: ์‘๋‹ต ๋ฐ์ดํ„ฐ ํƒ€์ž…๋ช… ~ResponseData ํ˜•์‹์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: ์œ ํ‹ธ ํ•จ์ˆ˜ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•œ ๊ฐœํ–‰ ์ฒ˜๋ฆฌ

* refactor: splitValidAndInvalidFiles ์œ ํ‹ธํ•จ์ˆ˜ filter -> reduce ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ

* refactor: useCloseOutside ์–ผ๋ฆฌ๋ฆฌํ„ด

* refactor: Uploader handleClick ํ•จ์ˆ˜ ์–ผ๋ฆฌ๋ฆฌํ„ด

* refactor: description ๋„์–ด์“ฐ๊ธฐ ์ฒ˜๋ฆฌ

* refactor: FileField ๊ฐ€๋…์„ฑ์„ ์œ„ํ•œ ๊ฐœํ–‰ ์ฒ˜๋ฆฌ

* refactor: FileItem์˜ extractFileInfo ์œ ํ‹ธํ•จ์ˆ˜ ์ƒ์„ฑ ํ›„ ์ ์šฉ

* refactor: ํฌํŠธํด๋ฆฌ์˜ค ์—…๋กœ๋“œ api ์‘๋‹ต ๋ฐ์ดํ„ฐ keyName -> cdnUrl ์ˆ˜์ • ๋ฐ˜์˜

* remove: validateFileType ์œ ํ‹ธ ํ•จ์ˆ˜ ์ œ๊ฑฐ

* refactor: ํƒ€์ž…๋ช…์— Response, Request suffix ์ถ”๊ฐ€

- uploadPortfolio.ts
- answer.ts

* refactor: ์ ํ†ก, ๋ฏธ๋‹ˆ์Šคํ„ฐ๋”” ๋ฐ์ดํ„ฐํƒ€์ž… Response suffix ์ถ”๊ฐ€

* remove: ๋ถˆํ•„์š”ํ•œ ๋กœ๊ทธ ์ถœ๋ ฅ ์ฝ”๋“œ ์ œ๊ฑฐ

* feat: ์ง€์›์„œ ํ”Œ๋กœ์šฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#112)

* feat: ํŒŒ์ผ ์—…๋กœ๋“œ api ์š”์ฒญ ํ•จ์ˆ˜ ๋ฐ ํ›… ์ƒ์„ฑ

* fix: Uploader ์ปดํฌ๋„ŒํŠธ ๋™์ผํ•œ ํŒŒ์ผ ์—ฐ์† ์„ ํƒ ๋ถˆ๊ฐ€ ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* refactor: changeFileSizeUnit ์œ ํ‹ธํ•จ์ˆ˜ ์ˆ˜์ •

- ๋‹จ์œ„ ํ‘œ๊ธฐ ์—ฌ๋ถ€ ์ถ”๊ฐ€

* feat: validateMaxSize ์œ ํ‹ธํ•จ์ˆ˜ ์ถ”๊ฐ€

* feat: Portfolio, NewPortfolio ํƒ€์ž… ์ƒ์„ฑ

* remove: FileUrl ํƒ€์ž… ์‚ญ์ œ

* chore: lottie-react ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

* chore: loadingSpinner json ํŒŒ์ผ ์ถ”๊ฐ€

* refactor: select ์™ธ๋ถ€ ํด๋ฆญ ์‹œ ๋‹ซํžˆ๊ธฐ ๋กœ์ง useCloseOutSide ํ›…์œผ๋กœ ๋ถ„๋ฆฌ

* feat: S3 ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ ๋ฐ File ์ปดํฌ๋„ŒํŠธ๋ช… FileItem์œผ๋กœ ๋ณ€๊ฒฝ

* docs: FileItem ์Šคํ† ๋ฆฌ๋ถ ์—…๋ฐ์ดํŠธ

* refactor: InputFile์˜ fileNode prop -> children์œผ๋กœ ๋ณ€๊ฒฝ

* docs: InputFile ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* feat: ํŒŒ์ผ presignedUrl ์ƒ์„ฑ ์š”์ฒญ ๋ฐ ApplyRegistration์—์„œ ๋ฌธํ•ญ ์ฝ”๋“œ ๋ถ„๋ฆฌ

* feat: ์ง€์›์„œ ๋ฌธํ•ญ ์กฐํšŒ api ํ•จ์ˆ˜ ๋ฐ ํ›… ์ƒ์„ฑ

* remove: validateFileType ์œ ํ‹ธํ•จ์ˆ˜ ์‚ญ์ œ

* feat: url ํ˜•์‹ ๊ฒ€์ฆ ์œ ํ‹ธํ•จ์ˆ˜ ์ƒ์„ฑ

* feat: Answers ํƒ€์ž… ์ •์˜

* feat: ์ง๊ตฐ์— ๋งž๋Š” ์ง€์›์„œ ๋ฌธํ•ญ ๋ Œ๋”๋ง ๋ฐ URL ๊ฒ€์ฆ ๋กœ์ง ์ถ”๊ฐ€

* refactor: detailedRegex ์ˆ˜์ •

* feat: ์ž„์‹œ ์ €์žฅ API ์—ฐ๋™

* feat: ์ˆ˜๋™ ์ž„์‹œ์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: select์˜ jobFamily ๋งคํ•‘ ๋ฐฉํ–ฅ ์ˆ˜์ •

FE, BE, PM, PO๋ฅผ key๋กœ ๋ณ€๊ฒฝ

* refactor: postDraft์˜ param prop null ํƒ€์ž… ์ถ”๊ฐ€

* feat: ์ž„์‹œ ์ €์žฅ ์กฐํšŒ api ์š”์ฒญ ํ•จ์ˆ˜ ๋ฐ ํ›… ์ƒ์„ฑ

* feat: ์ž„์‹œ์ €์žฅ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: handleChangeAnswer, handleChangePortfolios ํ•จ์ˆ˜ useCallback ์ฒ˜๋ฆฌ

* feat: ์ž„์‹œ ์ €์žฅ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (์ž„์‹œ์ €์žฅ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋‹ค์ด์–ผ๋กœ๊ทธ ์ œ์™ธ)

- react router์˜ location.state ์ด์šฉํ•˜์—ฌ ์ž„์‹œ์ €์žฅ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์—ฌ๋ถ€ ๊ฒฐ์ •
- ์ž‘์„ฑ ์ค‘ ์ƒˆ๋กœ๊ณ ์นจ ์‹œ ์ž„์‹œ ์ €์žฅ๋œ ๊ธ€ ์ž๋™ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

* refactor: Dialog ์ˆ˜์ •

- p ํƒœ๊ทธ -> div ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ ( ReactNode๋กœ ๋ฐ›์„ ๋•Œ ํฌ๊ด„์ ์ธ ํƒœ๊ทธ ์‚ฌ์šฉ์„ ์œ„ํ•ด)
- children ๊ณต๊ฐ„์— ์˜ค๋Š” ๋ฌธ๊ตฌ text-center ์ฒ˜๋ฆฌ
- useDialog state ๋ณ€์ˆ˜๋ช… ์ˆ˜์ • (isCloseOutside์˜ state์™€ ๊ฒน์นจ ๋ฌธ์ œ)

* feat: ์ง€์›์„œ ์ง๊ตฐ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ ๊ตฌํ˜„

- apiEndpoint ์ถ”๊ฐ€
- axios ํ•จ์ˆ˜ ์ƒ์„ฑ
- react query ํ›… ์ƒ์„ฑ
- ์ง๊ตฐ ๋ณ€๊ฒฝ ์ „ dialog ๋„์šฐ๊ธฐ
- ์ง๊ตฐ ๋ณ€๊ฒฝ ์‹œ ๋‹ต๋ณ€ ์ดˆ๊ธฐํ™” ๋ฐ ์ง๊ตฐ ๋ณ€๊ฒฝ api ์š”์ฒญ

๋ณ„๊ฐœ๋กœ,
- ์ดˆ๋ฐ˜์— ์ž„์‹œ์ €์žฅ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๊ณ  ์ƒˆ๋กœ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ, ์ถ”๊ฐ€์ ์ธ ์ž„์‹œ์ €์žฅ ์ „๊นŒ์ง€ ์ž„์‹œ์ €์žฅ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๋„๋ก ์ˆ˜์ •

* refactor: ApplyRegistration ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ, ํ•จ์ˆ˜ ๋ถ„๋ฆฌ

๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ
- selectPosition -> selectedPosition
- selectQuestion -> questionPosition
- values -> answersPayload

ํ•จ์ˆ˜ ๋ถ„๋ฆฌ
- formatNewPortfolio ํ•จ์ˆ˜ ์ƒ์„ฑ (FileField์—์„œ ์‚ฌ์šฉ)
- notLoadDraft ํ•จ์ˆ˜ ์ƒ์„ฑ

* design: textField ๋‹ต๋ณ€ ๊ธธ์ด ์ œํ•œ ์ดˆ๊ณผ ์‹œ ํ•„๋“œ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ

- ํ—ฌํผ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ
- ํ•„๋“œ ํ…Œ๋‘๋ฆฌ ๋ฐ ๊ธ€์ž ์ˆ˜ ํ…์ŠคํŠธ ๋นจ๊ฐ„์ƒ‰ ํ‘œ์‹œ

* feat: ์ง€์›์„œ ์ œ์ถœ ๋‹ต๋ณ€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

- ํ•„์ˆ˜ ๋‹ต๋ณ€ ์ž‘์„ฑ ๊ฒ€์‚ฌ
- ๋‹ต๋ณ€ ๊ธ€์ž ์ˆ˜ ์ œํ•œ ๊ฒ€์‚ฌ
- url ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

* refactor: useDialog state ๋ณ€์ˆ˜๋ช… ์›์ƒ๋ณต๊ตฌ

- ๋ณ€์ˆ˜๋ช… ๊ฒน์น  ๊ฒฝ์šฐ ๋ณ„์นญ ์‚ฌ์šฉ

* refactor: mutationKey ๋‹ฌ๊ธฐ

* feat: ์ง€์›์„œ ์ œ์ถœ ๊ธฐ๋Šฅ ๊ตฌํ˜„

- ์ง€์›์„œ ์ œ์ถœ api endpoint ์ƒ์„ฑ
- submitAnswer ํ•จ์ˆ˜ ์ƒ์„ฑ
- useSubmitAnswerQuery ํ›… ์ƒ์„ฑ
- ์ œ์ถœ ์‹œ ๋‹ค์ด์–ผ๋กœ๊ทธ ํ‘œ์‹œ ๋ฐ ์„ฑ๊ณต ์‹œ ์ง€์› ์™„๋ฃŒ ํŽ˜์ด์ง€ ์ด๋™

* feat: 15๋ถ„๋งˆ๋‹ค ์ž๋™ ์ž„์‹œ์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: ApplyRegistration ๋ฆฌํŒฉํ† ๋ง

- state์™€ ๊ด€๋ จ ํ•จ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” useApplicationState ํ›… ์ƒ์„ฑ
- ํฌ์ง€์…˜ ์„ ํƒ ๊ด€๋ จ selectBox ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ
- ๋ฌธํ•ญ ๋ฐ ๋‹ต๋ณ€ ๊ด€๋ จ Answers ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ

* remove: ๋ถˆํ•„์š”ํ•œ ์ฃผ์„ ์ œ๊ฑฐ

* refactor: ์ง๊ตฐ์„ ํ‘œํ˜„ํ•˜๋Š” ๋‹จ์–ด position -> job์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: isLoadDraft ํ•จ์ˆ˜ ์ˆ˜์ • (๋ถˆํ•„์š”ํ•œ ๋ฆฌํ„ด ์ œ๊ฑฐ)

* refactor: validateAnswersPayload if๋ฌธ ๊ฐ„์†Œํ™”

* refactor: draft ๋ฐ์ดํ„ฐ uuid ์ถ”์ถœ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

* refactor: isLoadDraft ํ•จ์ˆ˜ ๊ฐ„์†Œํ™”

* refactor: ์ง€์›์„œ ๋ฌธํ•ญ ์กฐํšŒ ์‹คํŒจ ์‹œ ๋นˆ ํผ ๋ฐ˜ํ™˜.

* feat: Input read-only ์ผ ๋•Œ ์ปค์„œ ๊ธฐ๋ณธ ์Šคํƒ€์ผ ์ง€์ •

* feat: api ์ž„์‹œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ (์—๋Ÿฌ ๋กœ๊ทธ ์ถœ๋ ฅ)

* refactor: onKeyDown -> onKeyUp์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: draft, submitAnswer ํ˜ธ์ถœ ์ „ param null ์ฒ˜๋ฆฌ

* refactor: formatForPresignedUrl, formatNewPortfolio ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์ฒ˜๋ฆฌ

* refactor: Dialog title p ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝ

* refactor: submitButtonActive -> setSubmitButtonActive ๋กœ ํ•จ์ˆ˜๋ช… ๋ณ€๊ฒฝ

* refactor: ํ›… ์„ ์–ธ ๊ฐœํ–‰์ฒ˜๋ฆฌ

* refactor: File ํƒ€์ž… file -> rawFile๋กœ ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ

* refactor: AnswersRequest answers key ํƒ€์ž… number๋กœ ๋ณ€๊ฒฝ

* refactor: QuestionResponse ํƒ€์ž… ์ •์˜

* refactor: putJob request ํƒ€์ž… ์ •์˜

* refactor: ์ œ์ถœ ๋‹ค์ด์–ผ๋กœ๊ทธ ๋‚ด์šฉ ๋ฌธ๊ตฌ ๋„์–ด์“ฐ๊ธฐ ์ˆ˜์ •

* refactor: initialAnswer ํƒ€์ž… ์„ค์ •

* feat: ํŽ˜์ด์ง€ ํ•˜๋‹จ ์ง€์› ์Šค๋‚ต๋ฐ” ๊ตฌํ˜„ (#120)

* feat: 3๊ธฐ ์ง€์› ์Šค๋‚ต๋ฐ” ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ

* feat: ๋ฉ”์ธ, ํ”„๋กœ์ ํŠธ, ํ™œ๋™, faq ํŽ˜์ด์ง€์— ์Šค๋‚ต๋ฐ” ๋…ธ์ถœ

* remove: ๋ถˆํ•„์š”ํ•œ index.ts ํŒŒ์ผ ์‚ญ์ œ

* refactor: isMain -> width ๋กœ props ๋ณ€๊ฒฝ

ํŽ˜์ด์ง€ ๋‹จ์—์„œ ์–ด๋–ค width ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ

* refactor: SnackBar ์ปดํฌ๋„ŒํŠธ ์ƒ‰์ƒ ์ˆ˜์ •

* refactor: ์ง€์› ์Šค๋‚ต๋ฐ” ๋†’์ด ์ˆ˜์ •

* feat: ์ง€์› ์Šค๋‚ต๋ฐ” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€

* feat: ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€ ์ž๋™ ์ž„์‹œ ์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#122)

* feat: ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ด์šฉํ•œ ์ž๋™ ์ž„์‹œ์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* fix: ์—…๋กœ๋“œ๋œ ํŒŒ์ผ ์—ด๊ธฐ ์‹คํŒจ ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* refactor: ํ•จ์ˆ˜๋ช… ์ˆ˜์ •

* refactor: ๋ถˆํ•„์š”ํ•œ ๋ณ€์ˆ˜ ์ œ๊ฑฐ

* feat: ํšŒ์› ๋น„ํšŒ์› ์ธ์ฆ ๋ฐ ํšŒ์›์ •๋ณด ๋“ฑ๋ก ๊ธฐ๋Šฅ (#114)

* chore: zod์™€ react-hook-form ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: zod๋ฅผ ์ด์šฉํ•ด ์ง€์› ํŽ˜์ด์ง€์— ์‚ฌ์šฉ๋˜๋Š” ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: zod์™€ react-hook-form์„ ์—ฐ๋™ํ•˜์—ฌ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ›…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* refactor: umd ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ props๋ฅผ ์œ ๋‹ˆ์˜จ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

* feat: api ์—ฐ๋™์„ ์œ„ํ•œ ์—”๋“œ ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: apply ๊ด€๋ จ api response๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํผ ํ•ธ๋“ค๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ๋•๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜์—ฌ ์ง€์› api ํ˜ธ์ถœ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ปค์Šคํ…€ ํ›…์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํŒจ์นญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์„ ๋กœ๊น…๊ณผ ํ•จ๊ป˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: input ์ปดํฌ๋„ŒํŠธ์— undefined ์ฒ˜๋ฆฌ๋˜๋Š” ์˜ต์…”๋„ props์— ๊ธฐ๋ณธ ๊ฐ’์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ง€์›ํ•˜๊ธฐ ๋ฐ์ดํ„ฐ ํŒจ์นญ ๋กœ์ง์„ ์ง€์›ํŽ˜์ด์ง€์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* refactor: ํผ ์ œ์ถœ ํ•ผํผ ํ•จ์ˆ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ตœ์‹  react-query์˜ ์†์„ฑ์„ ๋ฐ˜์˜ํ•˜์—ฌ isLoading isPending ์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: Label ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐœ์„ ์‚ฌํ•ญ์„ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

* refactor: Label ์ปดํฌ๋„ŒํŠธ๊ฐ€ htmlFor ์†์„ฑ์„ ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* move: ์Šคํ† ๋ฆฌ๋ถ์— ์ธํ„ฐ๋ ‰์…˜ ์˜ˆ์‹œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: CheckBox ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•˜๋‹จ Label์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•€ ๋กœ๊ทธ์ธ ์„ฑ๊ณต์‹œ navigate ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* design: ์ž˜๋ชป ์ ์šฉ๋œ gap ๊ฐ’์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ api์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ api์˜ ๋ฐ˜ํ™˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์กด์žฌ ์—ฌ๋ถ€ api์˜ ํ˜ธ์ถœ๋ถ€๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ด๋ฉ”์ผ ์ธ์ฆ api ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „ ์ด๋ฉ”์ผ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

* feat: email ๊ฐ’์„ state๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์กด์žฌ ์—ฌ๋ถ€ api์— ๋Œ€ํ•œ ์ปค์Šคํ…€ ํ›…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: status ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ด๋ฉ”์ผ ์ธ์ฆ api์— ๋Œ€ํ•œ ์—๋Ÿฌ ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ฒ„ํŠผ ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ์— ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๊ธฐ์กด ํšŒ์›์˜ PIN ๋กœ๊ทธ์ธ ๋กœ์ง์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ถ”๊ฐ€๋œ ์ƒํƒœ์™€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ง€์›์ž ์ •๋ณด์— ๋Œ€ํ•œ ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ง€์›์ž ์ •๋ณด ์Šคํ‚ค๋งˆ์˜ ์˜ˆ์™ธ ์ƒํ™ฉ์„ ์—„๋ฐ€ํ•˜๊ฒŒ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ์—…๋ฐ์ดํŠธ api์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ์—…๋ฐ์ดํŠธ api์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ์—…๋ฐ์ดํŠธ api์˜ ํ˜ธ์ถœ๋ถ€๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

* feat: zod๋ฅผ ์ด์šฉํ•ด์„œ ์ง€์ •๋œ ์Šคํ‚ค๋งˆ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ปค์Šคํ…€ ํ›…์„ ์ด์šฉํ•ด ํšŒ์› ์ •๋ณด ์ €์žฅ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ํŒจ์นญ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ•ญ๋ชฉ์ด ๋น„์–ด์žˆ์„ ๋•Œ๋„ ์œ ํšจํ•˜์ง€ ์•Š์€ ์Šคํ‚ค๋งˆ๋กœ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ง€์›์ž ์ •๋ณด ์ž…๋ ฅ ํŽ˜์ด์ง€์— ๋ฐ์ดํ„ฐ ํŒจ์นญ ๋กœ์ง์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

* feat: auth ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ api์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* chore: ์ถ”๊ฐ€๋œ env ํŒŒ์ผ์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* chore: ์ „์—ญ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ requestHandler๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ† ํฐ ๋ฆฌํ”„๋ ˆ์‰ฌ api๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

* feat: interceptor๋ฅผ ์ด์šฉํ•ด api ํ˜ธ์ถœ ์ „ํ›„ header์™€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ณ„ ํ† ํฐ ๊ด€๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: requestHandler์— option ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ† ํฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ๋“ฑ๋ก์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ๋“ฑ๋ก api์˜ ํ˜ธ์ถœ๋ถ€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

* feat: ํšŒ์› ์ •๋ณด ๋“ฑ๋ก api๋ฅผ ์ปค์Šคํ…€ ํ›…์„ ์ด์šฉํ•ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* feat: PIN์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ์‹œ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํ† ํฐ์„ header์— ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

* fix: ์‹ ๊ทœ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ์ž„์‹œ ํšŒ์› ๊ฐ€์ž… api๋ฅผ ํ†ตํ•ด ํ”Œ๋กœ์šฐ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* fix: ๋””์ž์ธ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๊ฐ„๊ฒฉ์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: FAQ ๋ž€์— ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: Accordion์— ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•  ์š”๊ตฌ์‚ฌํ•ญ์„ TODO๋ฅผ ์ด์šฉํ•ด ๊ธฐ์žฌํ•ฉ๋‹ˆ๋‹ค.

* feat: cta ๋ฒ„ํŠผ์— onClick ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* fix: ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์„ค์ •๋œ error์˜ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* typo: Email ์ธ์ฆ ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…๋ช…์„ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ด๋ฉ”์ผ ๊ด€๋ จ api์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ payload๋ฅผ ๊ฐ์ฒด ๋ถ„ํ•  ํ˜•ํƒœ๋กœ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ปค์Šคํ…€ ํ›…์— mutationKey๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋ณ€๊ฒฝ๋œ ์ปค์Šคํ…€ ํ›…์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ mutate ๊ฐ์ฒด์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

* typo: ๋ณ€๊ฒฝ๋œ api์˜ response์— ๋งž๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค ๋ช…์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* typo: ๋ณ€๊ฒฝ๋œ ์ธํ„ฐํŽ˜์ด์Šค์— ๋งž์ถฐ ์Šคํ‚ค๋งˆ์˜ ๋ณ€์ˆ˜ ๋ช…์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ๋ณ€๊ฒฝ๋œ api์— ๋งž๊ฒŒ ํ•จ์ˆ˜๋ช…์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ด๋ฉ”์ผ ์ธ์ฆ api์— query params๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ด๋ฉ”์ผ ์ธ์ฆ ์ปค์Šคํ…€ ํ›…์— mutationKey๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ query params๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ด๋ฉ”์ผ ์ธ์ฆ api์˜ ๋ณ€๊ฒฝ์ ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ด๋ฉ”์ผ ์ธ์ฆ api์— ์‚ฌ์šฉ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ˆ˜์ •๋œ ์ด๋ฉ”์ผ ์ธ์ฆ api์˜ ํ˜ธ์ถœ๋ถ€์— query params๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ด๋ฉ”์ผ ์ธ์ฆ api๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปค์Šคํ…€ ํ›…์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ตฌ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.

* feat: ๋ณ€๊ฒฝ๋œ ์ด๋ฉ”์ผ ์ธ์ฆ ๋กœ์ง์„ ์ง€์› ํŽ˜์ด์ง€์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

* typo: PIN์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋ช…์„ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

* refactor: PIN์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ์ปค์Šคํ…€ ํ›…์— ๋ณ€๊ฒฝ๋œ ์ธํ„ฐํŽ˜์ด์Šค ๋ช…์„ ์ ์šฉํ•˜๊ณ  mutationKey๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* refactor: PIN์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ์˜ API ํ˜ธ์ถœ๋ถ€์— ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

* typo: ํšŒ์› ์ •๋ณด ์—…๋ฐ์ดํŠธ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ช…์นญ์„ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* typo: ์ž„์‹œ ํšŒ์›๊ฐ€์ž… api ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ช…์นญ์„ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

* feat: api ํ˜ธ์ถœ ์ „์— ์ด์ „ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: base url์˜ ์„ ์–ธ ์กฐ๊ฑด์„ prod๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: interceptor ๊ฐ€ ๋กœ์ปฌ ํ™˜๊ฒฝ์ด ์•„๋‹ ๋•Œ withCredentials๊ฐ€ true ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* move: ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ธฐ์ž…๋œ import ๋ฌธ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ธ์ฆ ๋ฒˆํ˜ธ ์œ ํšจ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์‹œ ์ด๋ฉ”์ผ ๋ฒ„ํŠผ์„ enabled ํ•˜๊ณ  label์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* refactor: ์ธ์ฆ๋ฒˆํ˜ธ์˜ Input ์ฐฝ์„ ๊ฐ์ง€ํ•˜์—ฌ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฒ„ํŠผ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

* fix: ๋ฒ„ํŠผ์˜ ๋ฌธ๊ตฌ๋ฅผ ๋””์ž์ธ์— ๋งž๋Š” ํ…์ŠคํŠธ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

* feat: ์ œ์ถœ ๋ฒ„ํŠผ์— ์•„์ด์ฝ˜๊ณผ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: input ํƒœ๊ทธ์— ์ž๋™์™„์„ฑ ์Šคํƒ€์ผ์ด ์ปค์Šคํ…€ ์ƒ‰์ƒ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

* bug: workflow runner ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ (#133)

* refactor: ๋‹ค์ด์–ผ๋กœ๊ทธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹์œผ๋กœ ์žฌ๊ตฌํ˜„ (#127)

* feat: dialogStore ์ƒ์„ฑ

* refactor: Dialog ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ • (dialogStore ์ด์šฉ)

* remove: useDialog ํ›… ์‚ญ์ œ

* refactor: Dialog ์ปดํฌ๋„ŒํŠธ Layout ์— ์ถ”๊ฐ€

* refactor: ์ง€์›์„œ ์ž‘์„ฑ ํŽ˜์ด์ง€ ์ˆ˜์ •๋œ ๋‹ค์ด์–ผ๋กœ๊ทธ ์ ์šฉ

* docs: Dialog ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* refactor: dialog promise ์ œ๊ฑฐ

* docs: ๋‹ค์ด์–ผ๋กœ๊ทธ ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ • (promise ์‚ฌ์šฉ ์Šคํ† ๋ฆฌ ์ˆ˜์ •)

* remove: ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ์ œ๊ฑฐ (useApplicationDialog)

* feat: ๋‹ค์ด์–ผ๋กœ๊ทธ ์—ด๋ฆฐ ์ƒํƒœ ์Šคํฌ๋กค ์ •์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* feat: primary ๋ฒ„ํŠผ๋งŒ ์žˆ๋Š” Dialog ์ถ”๊ฐ€

* docs: ๋ฒ„ํŠผ ํ•˜๋‚˜ Dialog ์Šคํ† ๋ฆฌ ์ถ”๊ฐ€

* refactor: ๋ถˆํ•„์š”ํ•œ void ์ œ๊ฑฐ

* docs: Dialog ์Šคํ† ๋ฆฌ๋ถ ์„ค๋ช… ์ˆ˜์ •

* docs: Dialog ์Šคํ† ๋ฆฌ๋ถ ํ•จ์ˆ˜๋ช… ์ˆ˜์ •

* refactor: dialogStore์˜ ํƒ€์ž…๋ช… ๋ณต์ˆ˜๋กœ ์ˆ˜์ •

* refactor: ๋‹ค์ด์–ผ๋กœ๊ทธ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐฉ์‹ ์ˆ˜์ •

- ์ •์ ์ธ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋กœ ๊ด€๋ฆฌ, constants/dialog.tsx ์ƒ์„ฑ
- dialogStore๋Š” ์—ด๊ณ  ๋‹ซํž˜ ์ƒํƒœ, ๋‹ค์ด์–ผ๋กœ๊ทธ ํƒ€์ž…, ๋ฒ„ํŠผ ์•ก์…˜๋ฅผ ๊ด€๋ฆฌ
- ์œ„ 2๊ฐ€์ง€๋ฅผ Dialog ์ปดํฌ๋„ŒํŠธ์— ๋ฐ˜์˜

* docs: Dialog ์Šคํ† ๋ฆฌ๋ถ ์ˆ˜์ •

* refactor: ApplyRegistration ํŽ˜์ด์ง€ ๋‹ค์ด์–ผ๋กœ๊ทธ ์ฝ”๋“œ ์ˆ˜์ •

* docs: Dialog ์Šคํ† ๋ฆฌ๋ถ ์„ค๋ช… ์ถ”๊ฐ€

* refactor: dialog ์˜คํƒ€ ์ˆ˜์ • ๋ฐ DialogTypes types/ ํด๋”๋กœ ๋ถ„๋ฆฌ

* refactor: dialogStore openDialog ๊ฐ„์†Œํ™”

* refactor: Dialog ๋ฒ„ํŠผ handleClick ํ•จ์ˆ˜ ๊ฐ„์†Œํ™”

* style: dialogStore ํ•œ์ค„ ์ž‘์„ฑ

* chore: ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ๋ฐ ํ™˜๊ฒฝ ์„ค์ • (#135)

* fix: Uploader ์Šคํ† ๋ฆฌ๋ถ ์—๋Ÿฌ ํ•ด๊ฒฐ (#138)

* feat: ๋‹ต๋ณ€ SELECT ํ•„๋“œ ์ถ”๊ฐ€  (#130)

* refactor: useCloseOutside ํ›… ref ๋ฐฐ์—ด๋„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •

* refactor: selectBox ๋‹ซ๊ธฐ ๊นœ๋ฐ•์ž„ ์ˆ˜์ •

* feat: ์ง€์›์„œ ์ž‘์„ฑ ํŽ˜์ด์ง€์˜ ๊ฐ๊ด€์‹ ๋ฌธํ•ญ์„ ์œ„ํ•œ selectField ๊ตฌํ˜„

* feat:  Question ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€๊ฒฝ ๋ฐ ์ ์šฉ

* refactor: ๋‹ต๋ณ€ ํ•„๋“œ label ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ

* fix: ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์‹œ select field ์„ ํƒํ•ด๋„ ๋นˆ๋ฌธ์ž์—ด๋กœ ์ €์žฅ๋˜๋Š” ๋ฒ„๊ทธ ํ•ด๊ฒฐ

* style: question ํƒ€์ž… ํ‘œํ˜„ ์ˆ˜์ •

* feat: ์ž„์‹œ์ €์žฅ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋‹ค์ด์–ผ๋กœ๊ทธ ํ‘œ์‹œ ๋ฐ ์ž„์‹œ์ง€์›์„œ ์ œ๊ฑฐ api ์—ฐ๋™ (+์ง€์›์„œ ๊ด€๋ จ ํ•จ์ˆ˜ ๋ฐ ํƒ€์ž… ๋ฆฌํŒฉํ† ๋ง) (#134)

* feat: ์ง๊ตฐ ๋ณ€๊ฒฝ api๊ฐ€ ์ž„์‹œ์ง€์›์„œ ์ œ๊ฑฐ api๋กœ ๋ณ€๊ฒฝ๋˜์–ด changeJob api ์ œ๊ฑฐ ๋ฐ deleteDraft api ์ƒ์„ฑ

* refactor: ์ง๊ตฐ ๋ณ€๊ฒฝ ์‹œ ์ž„์‹œ์ง€์›์„œ ์ œ๊ฑฐ api ์š”์ฒญ

* rename: mutation ํ›…์€ use~Mutation์œผ๋กœ ํ›… ๋ช… ๋ณ€๊ฒฝ ๋ฐ ์ ์šฉ

* feat: ์ž„์‹œ์ €์žฅ ๋‹ค์ด์–ผ๋กœ๊ทธ ํ‘œโ€ฆ
* feat: ์ธ์ฆ๋ฒˆํ˜ธ๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜์…จ๋‚˜์š” ๋ฒ„ํŠผ์— ์ƒˆํƒญ์œผ๋กœ FAQ ํŽ˜์ด์ง€ apply-5 ์•„์ฝ”๋””์–ธ์ด ์—ด๋ฆฌ๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค

* fix: ๋นŒ๋“œ ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค
* chore: jds IconMap์— information-fill์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค

* feat: ์ง๋ฌด ๊ด€๋ จ ๊ฒฝํ—˜ ๊ธฐ๊ฐ„ SelectField ๋ ˆ์ด๋ธ”์— ํˆดํŒ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
* fix: ์ž„์‹œ ํšŒ์›์˜ ์ตœ์ดˆ ํ”„๋กœํ•„ ์ •๋ณด ๋“ฑ๋ก ์—ฌ๋ถ€ ํ™•์ธ API์— ์ž˜๋ชป ์ ์šฉ๋˜์–ด์žˆ๋Š” Params๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* fix: ์ž„์‹œ ์ €์žฅ API ํ˜ธ์ถœ ์‹œ ์ž˜๋ชป ์ž‘์„ฑ๋œ params๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

* fix: ์„œ๋ฒ„ draft๋Š” ์œ ์ง€ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์˜ draft ๊ฐ’๋งŒ ์กฐ์ •ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
- useDeleteDraftMutation๋Š” ์‚ฌ์šฉ์ž ํ”„๋กœํ•„๊นŒ์ง€ ์‚ญ์ œ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ

* feat: ๋‹ค๋ฅธ ์ง€์›์„œ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ์˜ˆ์™ธ ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํ˜„์žฌ ๋กœ๊ทธ์ธํ•œ ํšŒ์› ํ”„๋กœํ•„ ์กฐํšŒ API๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* feat: ํŒŒํŠธ ๋ณ€๊ฒฝ ์‹œ ์ˆ˜ํ–‰๋˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
1. ํ˜„์žฌ ํ”„๋กœํ•„ ๋ฐฑ์—…
2. ๊ธฐ์กด draft + ํ”„๋กœํ•„ ์‚ญ์ œ
3. ๋ฐฑ์—…๋œ ํ”„๋กœํ•„๋กœ ํ˜„์žฌ ํ”„๋กœํ•„ ๋ณต์›
4. ์ง€์›์„œ ์ž‘์„ฑํ•˜๊ธฐ ํŽ˜์ด์ง€๋กœ ์ด๋™

* feat: ์ƒ์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* feat: profile ๋“ฑ๋ก ์‹œ ์ž„์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

* fix(JDS): input ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์— ๋ธŒ๋ผ์šฐ์ € autofill ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
@WonJuneKim WonJuneKim self-assigned this Dec 29, 2025
@vercel
Copy link

vercel bot commented Dec 29, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
ject-official-web-site-client-web Building Building Preview, Comment Dec 29, 2025 2:36pm

@WonJuneKim WonJuneKim merged commit 3574ab8 into dev Dec 29, 2025
2 of 3 checks passed
@WonJuneKim WonJuneKim deleted the chore/sync-main-to-dev branch December 29, 2025 14:36
@WonJuneKim WonJuneKim added the โš™๏ธchore ์„ธํŒ… ๊ด€๋ จ label Jan 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

โš™๏ธchore ์„ธํŒ… ๊ด€๋ จ

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants