Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
e96651b
๐Ÿ’„Style: loadingSpinner ์Šคํƒ€์ผ ์ด๋™
yuj2n Apr 26, 2025
fb12f55
โ™ป๏ธRefactor: ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ
yuj2n Apr 26, 2025
a957405
โ™ป๏ธRefactor: ๋ถ„๋ฆฌ๋œ ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
yuj2n Apr 26, 2025
66fc0e8
๐Ÿ“Docs: ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ ํ™œ์šฉ์„ ์œ„ํ•œ JSDoc ์ž‘์„ฑ
yuj2n Apr 26, 2025
87b5701
โ™ป๏ธRefactor: ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ props ๋ณ€๊ฒฝ ๋ฐ ์ ์šฉ
Insung-Jo Apr 26, 2025
c9aa374
๐Ÿ’„Style: ์ฐจํŠธ ์ƒํ•˜ ์—ฌ๋ฐฑ ์ถ”๊ฐ€
yuj2n Apr 26, 2025
7c3cc4d
๐Ÿ’„Style: ๋ฐ˜์‘ํ˜• ๊ตฌํ˜„์„ ์œ„ํ•œ ์Šคํƒ€์ผ ๋ถ„๋ฆฌ
yuj2n Apr 26, 2025
18567ca
๐Ÿ’„Style: ๋ชฉ๋ก ํŽ˜์ด์ง€ ์ขŒ์šฐ ์—ฌ๋ฐฑ ๋ฐ˜์‘ํ˜• ์กฐ์ • ๋ฐ ๊ณ ์ • ๋„ˆ๋น„ ์ง€์ •
yuj2n Apr 26, 2025
75a6167
โ™ป๏ธRefactor: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ props ์ถ”๊ฐ€
Insung-Jo Apr 26, 2025
f82c173
โ™ป๏ธRefactor: ๋ถˆํ•„์š”ํ•œ import ์‚ญ์ œ
yuj2n Apr 26, 2025
45e3816
๐Ÿ›Fix: ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ ์ดํ›„ ๋ฒ„ํŠผ์ด ๋น„ํ™œ์„ฑํ™” ๋˜๋Š” ์—๋Ÿฌ ํ•ด๊ฒฐ
Insung-Jo Apr 26, 2025
8481c67
๐Ÿ’„Style: ๋ฌด๋ถ„๋ณ„ํ•œ ๊ณ„์ธตํ˜• css ๊ตฌ์กฐ ๋ถ„๋ฆฌ ๋ฐ ๋ฐ˜์‘ํ˜• css ์ž‘์„ฑ
yuj2n Apr 26, 2025
b841673
โ™ป๏ธRefactor: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ •
Insung-Jo Apr 26, 2025
e345496
โ™ป๏ธRefactor: Alert ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ •
Insung-Jo Apr 26, 2025
d3ffdaf
๐Ÿ›Fix: ์˜ค๋ฅ˜ ์Šคํƒ€์ผ์ด ๊ณ„์† ๋ณด์ด๋˜ ๋ฌธ์ œ ์ˆ˜์ •
Insung-Jo Apr 26, 2025
6b04587
๐Ÿ’„Style: ๋ฒ„ํŠผ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์œ„ํ•œ ๊ธ€๋กœ๋ฒŒ ์ƒ‰์ƒ ์ถ”๊ฐ€
yuj2n Apr 26, 2025
e5c7c85
๐Ÿ’„Style: ๋ชฉ๋ก ํŽ˜์ด์ง€ ๋ฐฐ๊ฒฝ์ƒ‰ ํ…Œ๋งˆ ์ ์šฉ
yuj2n Apr 26, 2025
4e9018c
๐Ÿ’„Style: ํˆฌํ‘œํ•˜๊ธฐ ๋ฒ„ํŠผ css ์ˆ˜์ •์„ ์œ„ํ•œ ์ปค์Šคํ…€ ๋ฒ„ํŠผ ๋””์ž์ธ ์ˆ˜์ •
yuj2n Apr 26, 2025
5b6a7bb
๐Ÿ’„Style: ๋ฒ„ํŠผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€ ๋ฐ ์ฐจํŠธ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ์ž‘์„ฑ
yuj2n Apr 26, 2025
5b2ae87
๐Ÿ’„Style: ์ฐจํŠธ ์•„๋ž˜ footer์™€ ์—ฌ๋ฐฑ์„ ๋‘๊ธฐ ์œ„ํ•œ css ์†์„ฑ ์ถ”๊ฐ€
yuj2n Apr 26, 2025
e024404
๐Ÿ’„Style: ๋ฐ˜๋ณต ์Šคํƒ€์ผ ๋ณ€์ˆ˜ํ™” ๋ฐ ๋ฒ„ํŠผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€
yuj2n Apr 27, 2025
3ce2ad4
๐Ÿ’„Style: ๋ฒ„ํŠผ ์ƒ‰์ƒ ์ถ”๊ฐ€
yuj2n Apr 27, 2025
83ff9c5
๐Ÿ’„Style: ํฌ๋ ˆ๋”ง ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ
yuj2n Apr 27, 2025
c5e52be
๐Ÿ’„Style: ํฌ๋ ˆ๋”ง ์ถฉ์ „ ์ปดํฌ๋„ŒํŠธ ๋””์ž์ธ ์ˆ˜์ • ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€
yuj2n Apr 27, 2025
09f5d44
โ™ป๏ธRefactor: errorBoundaryํด๋” ์ƒ์„ฑ
sgoldenbird Apr 27, 2025
f0d5061
โœจFeat: Avatar ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ
pappaya109 Apr 27, 2025
13fe1d4
โ™ป๏ธRefactor: ๋ชจ๋‹ฌ, ๋ฒ„ํŠผ ํด๋”๊ตฌ์กฐ ๋ณ€๊ฒฝ
sgoldenbird Apr 27, 2025
23c1b36
๐Ÿ’„Style: ์—๋Ÿฌ ๋ฒ„ํŠผ display ๋ณ€๊ฒฝ
sgoldenbird Apr 27, 2025
be0ea15
๐Ÿ›Fix: ๋ชจ๋“  ์•„์ด๋Œ ๋ฆฌ์ŠคํŠธ ๋ฐ˜์‘ํ˜•์—์„œ ๋„˜์น˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
pappaya109 Apr 27, 2025
0d920c3
โ™ป๏ธRefactor: import ์ˆœ์„œ ์ •๋ฆฌ
sgoldenbird Apr 27, 2025
ed609b4
โ™ป๏ธRefactor: ์ด๋ฏธ์ง€ ํŒŒ์ผ๋ช… kebab์œผ๋กœ ๋ณ€๊ฒฝ
sgoldenbird Apr 27, 2025
f1a7ce0
๐Ÿ›Fix: ๋“œ๋ž˜๊ทธ ํ–ˆ์„ ๋•Œ ๋ชจ๋‹ฌ ๊บผ์ง€๋Š” ๋ฌธ์ œ ์ˆ˜์ •
sgoldenbird Apr 27, 2025
e77d593
โœจFeat: ArrowButton ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€ ๋ฐ ๋ฐ˜์˜
Insung-Jo Apr 27, 2025
3279ac8
โ™ป๏ธRefactor: arrowButton ์ปดํฌ๋„ŒํŠธ ๋ฐ˜์˜
Insung-Jo Apr 27, 2025
65de307
๐Ÿ“Docs: JSDoc ์ž‘์„ฑ
Insung-Jo Apr 27, 2025
e0c8e5f
โœจFeat: ์ „์ฒด ์•„์ด๋Œ์ด ์—†์„ ๊ฒฝ์šฐ ๋ฒ„ํŠผ ์‚ญ์ œ
pappaya109 Apr 27, 2025
d3a031b
๐Ÿ›Fix: ํƒ€์ดํ‹€ ๊ฐœ๋ณ„์ ์ธ ์Šคํƒ€์ผ ์ถ”๊ฐ€
pappaya109 Apr 27, 2025
9ae07a2
Merge branch 'develop' into feature/#207-mypage-fix
pappaya109 Apr 27, 2025
548cb16
๐Ÿ›Fix: 1280์—์„œ ๊ทธ๋ฆฌ๋“œ๊ฐ€ ๋„˜์น˜๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
pappaya109 Apr 27, 2025
f004be5
๐Ÿ›Fix: ์ „์ฒด ์•„์ด๋Œ ๋ชฉ๋ก ๋ฐ์Šคํฌํƒ‘์ผ ๋•Œ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ฐฏ์ˆ˜ ์ˆ˜์ •
pappaya109 Apr 27, 2025
c469ee9
๐Ÿ›Fix: ๋ถˆํ•„์š”ํ•œ ์Šคํƒ€์ผ ์‚ญ์ œ
pappaya109 Apr 27, 2025
cb21746
๐Ÿ’„Style: ์ด๋ฏธ์ง€ ํ™•์žฅ์ž ์ถ”๊ฐ€ ์ž‘์„ฑ
yuj2n Apr 27, 2025
4af184a
Merge pull request #213 from StarSync-FE/feature/#210-loading-spinnerโ€ฆ
yuj2n Apr 27, 2025
cc62c54
โ™ป๏ธRefactor: ๋ฆฌ๋ทฐ ์ˆ˜์ • ์‚ฌํ•ญ ๋ฐ˜์˜
Insung-Jo Apr 27, 2025
d272f1e
Merge branch 'develop' into feature/#214-list-all-css
yuj2n Apr 27, 2025
30723bc
Merge pull request #231 from StarSync-FE/feature/#221-carousel-commonโ€ฆ
Insung-Jo Apr 27, 2025
fdf5c14
๐Ÿ’„Style: ๋ฏผ๊ฐํ•œ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ ‘๊ทผ์„ฑ ๊ธฐ๋Šฅ์ธ ์›€์ง์ž„ ์ค„์ด๊ธฐ ๋ฏธ๋””์–ด ์ถ”๊ฐ€
yuj2n Apr 27, 2025
0609e1f
Merge branch 'develop' into feature/#207-mypage-fix
pappaya109 Apr 27, 2025
96bdbec
Merge branch 'feature/#214-list-all-css' of https://github.com/StarSyโ€ฆ
yuj2n Apr 27, 2025
fd07051
โ™ป๏ธRefactor: arrow ๋ฒ„ํŠผ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋กœ ๋ณ€๊ฒฝ
pappaya109 Apr 27, 2025
8d13841
๐Ÿ›Fix: ๋‚จ์ž์•„์ด๋Œ/์—ฌ์ž์•„์ด๋Œ์— ๋”ฐ๋ผ ํˆฌํ‘œํ•˜๊ธฐ ๋‚ด์šฉ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
pappaya109 Apr 27, 2025
a06b3d4
๐Ÿ›Fix: ๊ด€์‹ฌ์žˆ๋Š” ์•„์ด๋ŒAvatar ์ž˜๋ฆฌ๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
pappaya109 Apr 27, 2025
e0a775e
โ™ป๏ธRefactor: arrowButton ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์‚ญ์ œ
pappaya109 Apr 27, 2025
937514e
๐Ÿ›Fix: ํ•„์š”ํ•œ ์•„์ด์ฝ˜์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ๋ณต๊ตฌ
pappaya109 Apr 27, 2025
3f290e8
๐Ÿ›Fix: Avatar ์ƒ๋‹จ ์ž˜๋ฆฌ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
pappaya109 Apr 27, 2025
ddd11a9
๐Ÿ“Docs: JSDoc ์ˆ˜์ •
Insung-Jo Apr 27, 2025
0ccaa2c
Merge pull request #217 from StarSync-FE/feature/#212-primary-button-โ€ฆ
Insung-Jo Apr 27, 2025
8afab7b
Merge branch 'develop' into feature/#207-mypage-fix
pappaya109 Apr 27, 2025
dfe7868
โœจFeat: ์ฐจํŠธ์— ํˆฌํ‘œ ์ˆ˜ ๋ฐ˜์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
yuj2n Apr 27, 2025
aea13c0
๐Ÿ’„Style: ๋ผ์šฐํ„ฐ ๋ฐ ๋ชฉ๋ก ํŽ˜์ด์ง€์—์„œ ๋ถˆํ•„์š”ํ•œ prop ์‚ญ์ œ
yuj2n Apr 27, 2025
a76d547
๐Ÿ’„Style: ๋ฒ„ํŠผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉ
yuj2n Apr 27, 2025
8ff6287
๐Ÿ›Fix: 981 ~ 1134 ๊ตฌ๊ฐ„์—์„œ ์•„์ด๋Œ ๋ชฉ๋ก ๋นˆ ๊ณต๊ฐ„ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
pappaya109 Apr 27, 2025
9c8f339
๐Ÿ’„Style: galaxy Z Fold 5์ผ ๋•Œ ํฌ๋ ˆ๋”ง ์ถฉ์ „ํ•˜๊ธฐ ์ฐฝ padding ์กฐ์ •
yuj2n Apr 27, 2025
0e779e5
๐Ÿ’„Style: ํˆฌํ‘œ๋ฅผ ์œ„ํ•œ ๋‚จ๋…€ ์•„์ด๋Œ ํƒญ ์ƒํƒœ์™€ ํˆฌํ‘œ ์ˆ˜ ๋ฐ˜์˜ prop ์ž‘์„ฑ
yuj2n Apr 27, 2025
f692e59
๐Ÿ’„Style: ํˆฌํ‘œ ์ˆ˜ ๋ฐ˜์˜์„ ์œ„ํ•œ ๋””ํŽœ๋˜์‹œ ์ถ”๊ฐ€
yuj2n Apr 27, 2025
7929596
โ™ป๏ธRefactor: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ๋ฐ ์ฃผ์„ ์‚ญ์ œ
pappaya109 Apr 27, 2025
32ee67b
๐Ÿ’„Style: ๋ฒ„ํŠผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ƒ‰์ƒ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์—ฐ์ถœ
yuj2n Apr 27, 2025
bc2c872
Merge branch 'develop' into feature/#214-list-all-css
yuj2n Apr 27, 2025
61e273e
Merge pull request #222 from StarSync-FE/feature/#214-list-all-css
yuj2n Apr 27, 2025
921ac80
Merge branch 'develop' into feature/#207-mypage-fix
yuj2n Apr 27, 2025
ac9096c
Merge pull request #234 from StarSync-FE/feature/#207-mypage-fix
pappaya109 Apr 27, 2025
428e2eb
๐Ÿ’„Style: ๋ชฉ๋ก ํŽ˜์ด์ง€ ์ตœ์†Œ ๋„ˆ๋น„ ์ง€์ •
yuj2n Apr 27, 2025
a4b675e
๐Ÿ’„Style: ์ฐจํŠธ ์•„์ด๋Œ๋ช… ๊ฐ•์กฐ ๋ฐ ๊ทธ์— ๋”ฐ๋ฅธ ๋ฐ˜์‘ํ˜• ์ž‘์„ฑ
yuj2n Apr 27, 2025
977a28e
๐Ÿ’„Style: ์ฐจํŠธ ์•„์ด๋Œ๋ช… ๊ฐ•์กฐ๋ฅผ ์œ„ํ•œ css ์†์„ฑ ์ถ”๊ฐ€
yuj2n Apr 27, 2025
99381c1
๐Ÿ’„Style: ์—ฌ๋ฐฑ ์Šคํƒ€์ผ ๊ฐ„๊ฒฐํ™”
yuj2n Apr 27, 2025
e639502
๐Ÿ›Fix: ๋งˆ์ดํŽ˜์ด์ง€ ์˜คํƒ€ ์ˆ˜์ •
pappaya109 Apr 27, 2025
30eef80
๐Ÿ›Fix: ํˆฌํ‘œํ•˜๊ธฐ ๋ชจ๋‹ฌ ๋ ˆ์ด์•„์›ƒ ์ˆ˜์ •
pappaya109 Apr 27, 2025
cd0f523
Merge pull request #238 from StarSync-FE/feature/#237-voteModal-refactor
pappaya109 Apr 27, 2025
2d1d0d5
Merge pull request #220 from StarSync-FE/feature/#218-donate-modal-reโ€ฆ
Insung-Jo Apr 27, 2025
7edfcd8
โ™ป๏ธRefactor: ํ™”๋ฉด ์‚ฌ์ด์ฆˆ์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ฐ ํ™”๋ฉด ๋ฆฌ๋ Œ๋”๋ง ๊ตฌํ˜„ ํ•จ์ˆ˜ ๋ถ„๋ฆฌ
yuj2n Apr 27, 2025
d4a7cdc
๐Ÿ’„Style: ํฌ๋ ˆ๋”ง ์ถฉ์ „ํ•˜๊ธฐ ๋ฒ„ํŠผ active ์Šคํƒ€์ผ ์ ์šฉ
yuj2n Apr 27, 2025
52632a9
๐Ÿ’„Style: ์ฐจํŠธ ํˆฌํ‘œํ•˜๊ธฐ ๋ฒ„ํŠผ ๋ฐ ๋”๋ณด๊ธฐ ๋ฒ„ํŠผ active ์Šคํƒ€์ผ ๋ณ€๊ฒฝ ๋ฐ ์ ์šฉ
yuj2n Apr 27, 2025
f045873
โ™ป๏ธRefactor: ๋”๋ณด๊ธฐ ๋ฒ„ํŠผ, ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ, ์Šคํฌ๋ฆฐ์‚ฌ์ด์ฆˆ ํ•จ์ˆ˜, fetch ํ•จ์ˆ˜ ๋ถ„๋ฆฌ
yuj2n Apr 27, 2025
3ebbcd5
Merge pull request #230 from StarSync-FE/feature/#229-fix-modal-drag
sgoldenbird Apr 27, 2025
1a6a2c4
๐Ÿ’„Style: iphone SE ์ง€์›์„ ์œ„ํ•œ ์ตœ์†Œ ๋„ˆ๋น„ ์ˆ˜์ •
yuj2n Apr 27, 2025
1128284
โ™ป๏ธRefactor: ๋” ๋ณด๊ธฐ ๋ฒ„ํŠผ ๋ถ„๋ฆฌ
yuj2n Apr 27, 2025
fab9271
๐Ÿ’„Style: ํฌ๋ ˆ๋”ง ์ถฉ์ „ํ•˜๊ธฐ ์ปดํฌ๋„ŒํŠธ 375px ์ดํ•˜ padding ์ˆ˜์ •
yuj2n Apr 27, 2025
2c419fc
โ™ป๏ธRefactor: fetch ํ•จ์ˆ˜ ๋ถ„๋ฆฌ
yuj2n Apr 27, 2025
7054f83
๐Ÿ›Fix: ๋” ๋ณด๊ธฐ ๋ฒ„ํŠผ ์‚ฌ๋ผ์ง€๋Š” ๋ฒ„๊ทธ ํƒญ ๋ณ€๊ฒฝ ์‹œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ
yuj2n Apr 27, 2025
eec955c
Merge remote-tracking branch 'origin/develop' into feature/#223-refacโ€ฆ
sgoldenbird Apr 27, 2025
4190eb9
Merge pull request #225 from StarSync-FE/feature/#223-refactor-structure
sgoldenbird Apr 27, 2025
a739849
โ™ป๏ธRefactor: ๋‚จ๋…€ ์•„์ด๋Œ ๋ฐ์ดํ„ฐ ํ•œ ๊ฐœ์˜ ์ƒํƒœ ๋ณ€์ˆ˜๋กœ ํ†ตํ•ฉ ๊ด€๋ฆฌ
yuj2n Apr 27, 2025
e50f98d
โœจFeat: ๋žœ๋”ฉํŽ˜์ด์ง€์— ๋กœ๋”๋กœ ์•„์ด๋Œ ๋ฐ์ดํ„ฐ ๋ณด๋‚ด๊ธฐ
sgoldenbird Apr 27, 2025
bae86b0
โ™ป๏ธRefactor: ๋ถˆํ•„์š”ํ•œ mockData ์‚ญ์ œ
yuj2n Apr 27, 2025
52b6a9d
โ™ป๏ธRefactor: ํฌ๋ ˆ๋”ง value ์ƒ์ˆ˜ํ™”
yuj2n Apr 27, 2025
c0b05ef
๐Ÿ’„Style: ํŽธ์˜์„ฑ์„ ๊ณ ๋ คํ•œ ํฌ๋ ˆ๋”ง ๋‹จ์œ„ ์กฐ์ • ๋ฐ ๋ฒ„ํŠผ ์Šคํƒ€์ผ ๋ถ„๋ฆฌ
yuj2n Apr 27, 2025
01166df
๐Ÿ’„Style: ํฌ๋ ˆ๋”ง ์ถฉ์ „ํ•˜๊ธฐ ๋ฐ˜์‘ํ˜• ๊ตฌํ˜„
yuj2n Apr 27, 2025
b948516
โ™ป๏ธRefactor: ์นด๋“œ ์ปดํฌ๋„ŒํŠธ์™€ ๊ด€๋ จ๋œ ๋ชจ๋‹ฌ ์ˆ˜์ •
Insung-Jo Apr 27, 2025
6e19a9d
โ™ป๏ธRefactor: ๋ผ์šฐํ„ฐ ๋กœ๋” API ํ˜ธ์ถœ ๋ถ„๋ฆฌ
sgoldenbird Apr 27, 2025
0f26450
โœจFeat: safeRequest ํ•จ์ˆ˜ ์ƒ์„ฑ, try,catch ๊ธฐ๋Šฅ ๋ถ„๋ฆฌ
sgoldenbird Apr 27, 2025
72351f1
โœจFeat: ๋ฐ์ดํ„ฐ๊ฐ€ ๋นˆ ๋ฐฐ์—ด์ผ ๋•Œ 404 ์—๋Ÿฌ๋ฅผ ๋˜์ง€๋Š” ๊ธฐ๋ŠฅthrowIfEmptyArray ์œ ํ‹ธ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด ๋ถ„๋ฆฌ
sgoldenbird Apr 27, 2025
fff8e32
๐Ÿ’„Style: ํฌ๋ ˆ๋”ง ์ถฉ์ „ํ•˜๊ธฐ ๋ฒ„ํŠผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€
yuj2n Apr 27, 2025
ea9b22c
๐Ÿ’„Style: ํฌ๋ ˆ๋”ง ์ด๋ฏธ์ง€ ์ถ”๊ฐ€ ๋ฐ ์ ์šฉ
yuj2n Apr 27, 2025
36f42bc
๐Ÿ’„Style: ํฌ๋ ˆ๋”ง ์ถฉ์ „ํ•˜๊ธฐ ๋ฒ„ํŠผ ํ˜ธ๋ฒ„ ์‹œ ํˆฌ๋ช…๋„ ์ ์šฉ
yuj2n Apr 27, 2025
f529c0c
๐Ÿ’„Style: ์ถฉ์ „ํ•˜๊ธฐ ๋ฒ„ํŠผ ๊ตต๊ธฐ ์กฐ์ •
yuj2n Apr 27, 2025
9e395bc
โ™ป๏ธRefactor: ํ† ์ŠคํŠธ ์•Œ๋ฆผ ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ
pappaya109 Apr 27, 2025
08afd39
๐Ÿ’„Style: ๋ถ„๋ฆฌ๋œ ํ•จ์ˆ˜ JSDoc ์ž‘์„ฑ
yuj2n Apr 27, 2025
aef5c72
๐Ÿ›Fix: ๋™์ผ ํƒญ ํด๋ฆญ ์‹œ ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™”๋˜์–ด ์•„์ด๋Œ๋ฆฌ์ŠคํŠธ ์‚ฌ๋ผ์ง€๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •
yuj2n Apr 27, 2025
5600c0f
โ™ป๏ธRefactor: ์š”์ฒญ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜ ํ•˜๋‚˜์˜ requestํŒŒ์ผ๋กœ ํ†ตํ•ฉ
sgoldenbird Apr 27, 2025
299bcc3
โ™ป๏ธRefactor: ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ์— ๋”ฐ๋ผ ๊ฐ€์šด๋ฐ์— ์˜ค๋„๋ก ์ˆ˜์ •
pappaya109 Apr 27, 2025
e20b70a
โ™ป๏ธRefactor: ์นด๋“œ ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ •
Insung-Jo Apr 27, 2025
0e7db13
โ™ป๏ธRefactor: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์‚ญ์ œ
pappaya109 Apr 27, 2025
1bdf0bb
๐Ÿ’„Style: ์ผ๋ถ€ ์—ฌ๋ฐฑ ์ˆ˜์ •
Insung-Jo Apr 27, 2025
d548488
Merge branch 'develop' into feature/#235-toast
pappaya109 Apr 27, 2025
63e80cc
Merge branch 'develop' into feature/#233-card-component-refactor
Insung-Jo Apr 27, 2025
1b8f579
Merge branch 'develop' into feature/#233-card-component-refactor
Insung-Jo Apr 27, 2025
269c125
Merge branch 'develop' of https://github.com/StarSync-FE/StarSync intโ€ฆ
yuj2n Apr 27, 2025
3d598be
๐Ÿ“Docs: ์ผ๋ถ€ ์ฃผ์„ ์ œ๊ฑฐ
Insung-Jo Apr 27, 2025
8f37a14
Merge pull request #239 from StarSync-FE/feature/#236-chart-componentโ€ฆ
yuj2n Apr 27, 2025
66e97d1
โ™ป๏ธRefactor: ํด๋ฆฐ์—… ํ•จ์ˆ˜ ์ถ”๊ฐ€ ๋ฐ duration ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€
pappaya109 Apr 27, 2025
00071b5
โ™ป๏ธRefactor: controller์™€ ํŒŒ๋ฆฌ๋ฏธํ„ฐ ์ˆœ์„œ ๋งž์ถ”๊ธฐ
pappaya109 Apr 27, 2025
794b9a7
๐Ÿ›Fix: chart url ์ˆ˜์ •, safeRequest์— label ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€
sgoldenbird Apr 27, 2025
f0bc816
Merge pull request #240 from StarSync-FE/feature/#235-toast
pappaya109 Apr 27, 2025
c3aeef6
โ™ป๏ธRefactor: requestGet์š”์ฒญ๋“ค์„ fetchCharts, fetchDonations, fetchIdols๋กœ ๋ณ€๊ฒฝ
sgoldenbird Apr 27, 2025
f90ada7
๐Ÿ“ฆChore: biome ์„ค์ • ๊ฐ’ ์ˆ˜์ •
HarrySeop Apr 28, 2025
cdc0efe
Merge pull request #242 from StarSync-FE/feature/#233-card-component-โ€ฆ
Insung-Jo Apr 28, 2025
6866056
Merge branch 'develop' into feature/#224-split-router-loader
yuj2n Apr 28, 2025
29f654b
Merge pull request #243 from StarSync-FE/feature/#224-split-router-loโ€ฆ
sgoldenbird Apr 28, 2025
efe142b
๐Ÿ›Fix: ๋ชจ๋“  ์•„์ด๋Œ์ด ์‚ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
pappaya109 Apr 28, 2025
8aea972
๐Ÿ›Fix: ์ฒ˜์Œ 10๊ฐœ๋งŒ ๋ถˆ๋Ÿฌ์™€์ง€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
pappaya109 Apr 28, 2025
c3df61c
๐Ÿ›Fix: ๋งˆ์ดํŽ˜์ด์ง€ ๋ฐ˜์‘ํ˜• ์ˆ˜์ •
pappaya109 Apr 28, 2025
cef6df2
โ™ป๏ธRefactor: ๋ชจ๋“  ์•„์ด๋Œ ๋ชฉ๋ก ์ฒซํŽ˜์ด์ง€, ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€ ๋ฒ„ํŠผ ์ˆจ๊ธฐ๊ธฐ
pappaya109 Apr 28, 2025
f6ec390
โœจFeat: ๋ชจ๋“  ์•„์ด๋Œ์—์„œ ์•„๋ฌด๊ฒƒ๋„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ํ† ์ŠคํŠธ์•Œ๋ฆผ ๋„์šฐ๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€
pappaya109 Apr 28, 2025
2179e33
Merge pull request #255 from StarSync-FE/feature/#254-mypage-bug
HarrySeop Apr 28, 2025
c4515db
๐Ÿ’„Style: ํ—ค๋” ๋””์ž์ธ ์ˆ˜์ •
HarrySeop Apr 28, 2025
404c84e
๐Ÿ’„Style: ํ‘ธํ„ฐ ๋””์ž์ธ ์ˆ˜์ •
HarrySeop Apr 28, 2025
1a97814
โ™ป๏ธRefactor: ๊ฐ™์€ ํŽ˜์ด์ง€ ์ด๋™์‹œ PenddingUI ๋™์ž‘ ์•ˆํ•˜๊ฒŒ ๋ณ€๊ฒฝ
HarrySeop Apr 28, 2025
c303134
Merge pull request #257 from StarSync-FE/feature/#256-header-footer-rโ€ฆ
HarrySeop Apr 28, 2025
210dcde
๐Ÿ›Fix: PendingUIํ™”๋ฉด ์ „ํ™˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ๋ฐ๋ชจ ์ „ ๋ฆฌํŒฉํ† ๋ง
sgoldenbird Apr 28, 2025
8b2bd28
Merge branch 'develop' into feature/#253-refactoring-before-demo
sgoldenbird Apr 28, 2025
6d21e73
Merge pull request #259 from StarSync-FE/feature/#253-refactoring-befโ€ฆ
sgoldenbird Apr 28, 2025
209d572
๐Ÿ›Fix: Avatar ์ปดํฌ๋„ŒํŠธ ์ƒ‰์ƒ ์ˆ˜์ •
pappaya109 Apr 28, 2025
affbfaf
โœจFeat: ๋ชจ๋ฐ”์ผ ์‚ฌ์ด์ฆˆ์—์„œ ๋ชจ๋“  ์•„์ด๋Œ ๋ชฉ๋ก ์Šคํฌ๋กค๋กœ ๋„˜๊ฒจ์„œ ๋ณผ์ˆ˜์žˆ๊ฒŒ ์ˆ˜์ •
pappaya109 Apr 28, 2025
696fee8
๐Ÿ“ฆChore: PR Preview ๊ด€๋ จ CICD ํŒŒ์ดํ”„๋ผ์ธ ์ถ”๊ฐ€
HarrySeop Apr 28, 2025
1e1f071
Merge pull request #262 from StarSync-FE/feature/#258-mypage-mobile
HarrySeop Apr 28, 2025
a816c3a
Merge branch 'main' into develop
HarrySeop Apr 28, 2025
6d916fa
๐Ÿ“ฆChore: CICD๊ด€๋ จ ์ฝ”๋“œ ์ถ”๊ฐ€
HarrySeop Apr 28, 2025
d6af92b
Merge branches 'develop' and 'develop' of https://github.com/StarSyncโ€ฆ
HarrySeop Apr 28, 2025
767734e
๐Ÿ“ฆChore: PR Preview builld ๋ฐฉ์‹ ์ˆ˜์ •
HarrySeop Apr 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/preview-cleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: PR Preview Cleanup (S3 Cleanup + CloudFront ๋ฌดํšจํ™”)

on:
pull_request:
types: [closed]

jobs:
cleanup-preview:
runs-on: ubuntu-latest

env:
BUCKET_NAME: starsync

steps:
- name: AWS ์ธ์ฆ ์ •๋ณด ์„ค์ •
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}

- name: Preview S3 ํŒŒ์ผ ์‚ญ์ œ (PR ๋‹ซํž ๋•Œ)
run: |
PREVIEW_PATH="preview/pr-${{ github.event.pull_request.number }}"
echo "๐Ÿงน S3 ๊ฒฝ๋กœ ์‚ญ์ œ ์ค‘: s3://$BUCKET_NAME/$PREVIEW_PATH/"
aws s3 rm s3://$BUCKET_NAME/$PREVIEW_PATH/ --recursive

- name: CloudFront ์บ์‹œ ๋ฌดํšจํ™” (Preview PR ๊ฒฝ๋กœ)
run: |
INVALIDATION_PATH="/preview/pr-${{ github.event.pull_request.number }}/*"
echo "๐ŸŒ€ ์บ์‹œ ๋ฌดํšจํ™” ๋Œ€์ƒ: $INVALIDATION_PATH"
aws cloudfront create-invalidation \
--distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} \
--paths "$INVALIDATION_PATH"
54 changes: 54 additions & 0 deletions .github/workflows/preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: PR Preview Deploy to S3 and CloudFront

on:
pull_request:
branches:
- develop
- main

permissions:
pull-requests: write
contents: read

jobs:
Deploy:
runs-on: ubuntu-latest

env:
BUCKET_NAME: starsync
VITE_BASE_URL: ${{ secrets.VITE_BASE_URL }}

steps:
- name: Github Repository ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
uses: actions/checkout@v4

- name: Node.js ํ™˜๊ฒฝ ์„ค์ •
uses: actions/setup-node@v4
with:
node-version: 22.14.0

- name: ์˜์กด์„ฑ ์„ค์น˜ (npm ci)
run: npm ci

- name: ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ (Vite)
run: npm run build -- --mode production

- name: AWS ์ธ์ฆ ์ •๋ณด ์„ค์ •
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}

- name: Preview S3 ์—…๋กœ๋“œ (PR ๋ฒˆํ˜ธ ๊ธฐ์ค€)
run: |
PREVIEW_PATH="preview/pr-${{ github.event.pull_request.number }}"
echo "Preview ๊ฒฝ๋กœ: s3://$BUCKET_NAME/$PREVIEW_PATH/"
aws s3 sync dist/ s3://$BUCKET_NAME/$PREVIEW_PATH/ --delete

- name: PR์— Preview ๋งํฌ ๋‚จ๊ธฐ๊ธฐ
uses: marocchino/sticky-pull-request-comment@v2
with:
message: |
๐Ÿš€ **PR Preview ๋ฐฐํฌ ์™„๋ฃŒ!**
๐Ÿ”— [Preview ํ™•์ธํ•˜๊ธฐ](https://preview.starsync.wiki/preview/pr-${{ github.event.pull_request.number }})
2 changes: 1 addition & 1 deletion biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"attributePosition": "auto"
},
"organizeImports": {
"enabled": true
"enabled": false
},
"linter": {
"enabled": true,
Expand Down
10 changes: 8 additions & 2 deletions src/App.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { useEffect, useState } from 'react';
import { RouterProvider } from 'react-router-dom';
import { SplashScreen } from './components/loadingStatus/splashScreen';
import { AlertManager } from './components/alertManager';
import { SplashScreen } from './components/loadingStatus';

export default function App({ router }) {
const [showSplashScreen, setShowSplashScreen] = useState(true);
Expand All @@ -19,5 +20,10 @@ export default function App({ router }) {
() => clearInterval(splashScreenInterval);
}, []);

return <>{showSplashScreen ? <SplashScreen /> : <RouterProvider router={router} />}</>;
return (
<>
<AlertManager />
{showSplashScreen ? <SplashScreen /> : <RouterProvider router={router} />}
</>
);
}
40 changes: 28 additions & 12 deletions src/Root.jsx
Original file line number Diff line number Diff line change
@@ -1,24 +1,40 @@
import { Outlet, useLocation, useNavigation } from 'react-router-dom';
import { Header } from '@/components/header';
import { LAYOUT } from '@/constants/layout';
import { Outlet, useLocation, useNavigation } from 'react-router-dom';
import { Footer } from './components/footer';
import { PendingUI } from './components/loadingStatus/pendingUI';
import { Footer } from '@/components/footer';
import { PendingUI } from './components/loadingStatus';

function Root() {
const navigation = useNavigation();
const isLoading = navigation.state !== 'idle'; // 'loading' ๋˜๋Š” 'submitting'
const location = useLocation();

const currentPath = location.pathname;
const nextPath = navigation.location?.pathname;
const isSamePath = currentPath === nextPath;

const { pathname } = useLocation();
const isLanding = pathname === '/';
const isLoading = navigation.state !== 'idle' && !isSamePath;

const isLanding = currentPath === '/';

return (
<>
{isLoading && <PendingUI />}
{!isLanding && <Header />}
<main style={{ paddingTop: !isLanding ? `${LAYOUT.HEADER_HEIGHT}px` : 0 }}>
<Outlet />
</main>
{!isLanding && <Footer />}

{isLoading ? (
<PendingUI />
) : (
<>
{!isLanding && <Header />}
<main
style={{
paddingTop: !isLanding ? `${LAYOUT.HEADER_HEIGHT}px` : 0,
}}
>
<Outlet />
</main>
{!isLanding && <Footer />}
</>
)}

</>
);
}
Expand Down
9 changes: 9 additions & 0 deletions src/api/chart.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { ENDPOINTS } from '@/constants/api';
import { requestGet } from '@/utils/api';

async function fetchCharts({ gender = 'female', limit = 10, cursor = 0 }) {
const url = `${ENDPOINTS.GET_CHART}?gender=${gender}&pageSize=${limit}&cursor=${cursor}`;
return requestGet(url);
}

export default fetchCharts;
9 changes: 9 additions & 0 deletions src/api/donation.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { ENDPOINTS } from '@/constants/api';
import { requestGet } from '@/utils/api';

async function fetchDonations({ limit = 10, cursor = 0 }) {
const url = `${ENDPOINTS.GET_DONATIONS}?pageSize=${limit}&cursor=${cursor}`;
return requestGet(url);
}

export default fetchDonations;
9 changes: 9 additions & 0 deletions src/api/idol.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { ENDPOINTS } from '@/constants/api';
import { requestGet } from '@/utils/api';

async function fetchIdols({ limit = 30, cursor = 0 }) {
const url = `${ENDPOINTS.GET_IDOLS}?pageSize=${limit}&cursor=${cursor}`;
return requestGet(url);
}

export default fetchIdols;
3 changes: 3 additions & 0 deletions src/api/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export { default as fetchCharts } from './chart';
export { default as fetchIdols } from './idol';
export { default as fetchDonations } from './donation';
Binary file added src/assets/images/2-star.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/3-star.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
File renamed without changes
File renamed without changes
5 changes: 3 additions & 2 deletions src/components/alert/Alert.jsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import React from 'react';
import successIcon from '@/assets/icons/success-icon.png';
import warningIcon from '@/assets/icons/warning-icon.png';
import * as S from './alert.styles';

const Alert = ({ content = 'toast content', type = 'warning' }) => {
const Alert = ({ content = 'toast content', type = 'warning', customStyle }) => {
const iconSrc = type === 'success' ? successIcon : warningIcon;

return (
<div css={S.alertWrapper}>
<div css={[customStyle, S.alertWrapper]}>
<div css={S.contentBox}>
<img src={iconSrc} alt={`${type}-icon`} />
<p>{content}</p>
Expand Down
20 changes: 14 additions & 6 deletions src/components/alert/alert.styles.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import media from '@/styles/responsive';
import { css, keyframes } from '@emotion/react';
import media from '@/styles/responsive';

const bounceIn = keyframes`
0% {
Expand All @@ -21,17 +21,25 @@ const bounceIn = keyframes`
export const alertWrapper = css`
display: flex;
position: fixed;
top: 8vh;
left: 35%;
z-index: 1111;
width: 30.7rem;
width: 30%;
height: 6rem;
margin: auto;
padding: 2.7rem ;
border-radius: 3.6rem;
color: var(--brown-dark);
background-color: var(--pink-soft);
${media({
top: ['10rem', '10rem', '10rem', '2rem', '2rem'],
})}
${media({
width: [
'50%',
'50%', // ๋ชจ๋ฐ”์ผ (375px ์ดํ•˜)
'50%', // ์ž‘์€ ํƒœ๋ธ”๋ฆฟ (744px ์ดํ•˜)
'30%', // ๋…ธํŠธ๋ถ (1280px ์ดํ•˜)
'30%', // ๋ฐ์Šคํฌํƒ‘ (1920px ์ดํ•˜)
],
left: ['25%', '25%', '25%', '35%', '35%'],
})}
animation: ${bounceIn} 0.5s ease forwards;
`;

Expand Down
43 changes: 43 additions & 0 deletions src/components/alertManager/AlertManager.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { useEffect, useRef, useState } from 'react';
import { Alert } from '@/components/alert';
import { registerAlertTrigger } from '@/utils/alert';

const AlertManager = () => {
const [visible, setVisible] = useState(false);
const [content, setContent] = useState('');
const [type, setType] = useState('warning');
const [customStyle, setCustomStyle] = useState({});
const timeoutRef = useRef(null);
const triggerAlert = (message, type = 'warning', duration = 2000, style = {}) => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
setVisible(true);
setContent(message);
setType(type);
setCustomStyle(style);
timeoutRef.current = setTimeout(() => {
setVisible(false);
timeoutRef.current = null;
}, duration);
};

// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>
useEffect(() => {
try {
registerAlertTrigger(triggerAlert);
} catch (error) {
console.log(error);
}
return () => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
};
}, []);
if (!visible) return null;

return <Alert content={content} type={type} customStyle={customStyle} />;
};

export default AlertManager;
1 change: 1 addition & 0 deletions src/components/alertManager/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default as AlertManager } from './AlertManager';
8 changes: 4 additions & 4 deletions src/components/avatar/avatar.styles.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import checkIcon from '@/assets/icons/check-icon.png';
import { css } from '@emotion/react';
import checkIcon from '@/assets/icons/check-icon.png';

export const imageWrapper = (imgSize) => css`
position: relative;
Expand All @@ -12,7 +12,7 @@ export const imageSelected = css`
z-index: 0;
width: 100%;
height: 100%;
border: 4px solid var(--black);
border: 4px solid var(--black-deep);
border-radius: 50%;
background: linear-gradient(
271.36deg,
Expand Down Expand Up @@ -41,8 +41,8 @@ export const image = (size) => css`
width: 100%;
height: 100%;
aspect-ratio: 1/1;
border: 4px solid var(--black);
border: 4px solid var(--black-deep);
border-radius: 50%;
box-shadow: 0 0 0 1px var(--orange);
box-shadow: 0 0 0 2px var(--orange);
object-fit: cover;
`;
1 change: 0 additions & 1 deletion src/components/avatarButton/index.js

This file was deleted.

60 changes: 60 additions & 0 deletions src/components/button/arrowButton/ArrowButton.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import { css } from '@emotion/react';
import * as S from './arrowButton.styles';

/**
* ArrowButton ์ปดํฌ๋„ŒํŠธ๋Š” ์ขŒ/์šฐ ๋ฐฉํ–ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ™”์‚ดํ‘œ ๋ฒ„ํŠผ์„ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
* ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ `onButtonClick` ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
*
* @component
* @example
* // ์ขŒ์ธก ํ™”์‚ดํ‘œ ๋ฒ„ํŠผ์„ ๋ Œ๋”๋งํ•˜๋Š” ์˜ˆ์‹œ
* <ArrowButton direction="left" onButtonClick={handleClick} />
*
* @param {Object} props - ์ปดํฌ๋„ŒํŠธ์˜ ์†์„ฑ
* @param {'left' | 'right'} [props.direction='left'] - ๋ฒ„ํŠผ์˜ ๋ฐฉํ–ฅ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 'left'์ž…๋‹ˆ๋‹ค.
* @param {Object} [props.styles={}] - ์ถ”๊ฐ€์ ์ธ CSS ์Šคํƒ€์ผ์„ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
* @param {Function} [props.onButtonClick={}] - ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํ˜ธ์ถœ๋˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ๋นˆ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
* @param {boolean} [props.disabled=false] - ๋ฒ„ํŠผ์˜ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ `false`์ž…๋‹ˆ๋‹ค.
*
* @returns {JSX.Element|null} ์ขŒ์ธก ๋˜๋Š” ์šฐ์ธก ํ™”์‚ดํ‘œ ๋ฒ„ํŠผ์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.
*/
const ArrowButton = ({
direction = 'left',
styles = {},
onButtonClick = () => {},
disabled = false,
}) => {
return (
<>
{direction === 'left' ? (
<button
type="button"
onClick={onButtonClick}
css={[S.navigationButton, css(styles)]}
disabled={disabled}
aria-label="์ด์ „"
>
<svg css={S.arrowIcon} viewBox="0 0 8 14" xmlns="http://www.w3.org/2000/svg">
<title>์ด์ „</title>
<path d="M7 1L1 7L7 13" strokeLinecap="round" strokeLinejoin="round" />
</svg>
</button>
) : direction === 'right' ? (
<button
type="button"
onClick={onButtonClick}
css={[S.navigationButton, css(styles)]}
disabled={disabled}
aria-label="๋‹ค์Œ"
>
<svg css={S.arrowIcon} viewBox="0 0 8 14" xmlns="http://www.w3.org/2000/svg">
<title>๋‹ค์Œ</title>
<path d="M1 1L7 7L1 13" strokeLinecap="round" strokeLinejoin="round" />
</svg>
</button>
) : null}
</>
);
};

export default ArrowButton;
Loading