From 66099a19882da1359fe83bd0b8b999f4471e2fbe Mon Sep 17 00:00:00 2001 From: caadiq Date: Thu, 1 Jan 2026 14:15:39 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20React=20Router=20v7=20future=20=ED=94=8C?= =?UTF-8?q?=EB=9E=98=EA=B7=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - BrowserRouter에 v7_startTransition, v7_relativeSplatPath 플래그 추가 - 콘솔 경고 메시지 제거 refactor: 앨범 유형 표시 분리 및 라이트박스 개선 - album_type (전체), album_type_short (짧은) 분리 - 앨범 목록에서 짧은 유형 표시 - 라이트박스 닫기 애니메이션 추가 (AnimatePresence) - 배경 클릭 시 모달 닫힘 방지 - favicon 링크 추가 --- backend/routes/albums.js | 2 +- frontend/index.html | 1 + frontend/public/favicon.ico | Bin 0 -> 239158 bytes frontend/src/App.jsx | 2 +- frontend/src/pages/pc/AlbumDetail.jsx | 13 +++++++++---- frontend/src/pages/pc/Discography.jsx | 2 +- 6 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 frontend/public/favicon.ico diff --git a/backend/routes/albums.js b/backend/routes/albums.js index 20235fe..c5be16d 100644 --- a/backend/routes/albums.js +++ b/backend/routes/albums.js @@ -8,7 +8,7 @@ router.get("/", async (req, res) => { try { // 앨범 목록 조회 const [albums] = await pool.query( - "SELECT id, title, album_type, release_date, cover_url FROM albums ORDER BY release_date DESC" + "SELECT id, title, album_type, album_type_short, release_date, cover_url FROM albums ORDER BY release_date DESC" ); // 각 앨범에 트랙 정보 추가 diff --git a/frontend/index.html b/frontend/index.html index 4c56922..7427a10 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -3,6 +3,7 @@ + fromis_9 - 프로미스나인 2I}%2N>OO{9s=f4V>Ap_J(2XOV2`jmNv=#PJbFZKGM|K;~>L+@Lf}5Lg3LY3?p+TJ-rOW97)e8 z!^n1`@2wkCD|K5m0@aCtMQ`HlH6)iS=&^jBVf6c6)!9B>YmGp)Bam%Qo(ErsdLZ>q!ocqq^fPM zmMo``SK6P_q!G{vup`i8W18=NtUyMcarG?rI_eY}fwUuFKBQ1aNmerp=-DCdsO$D? z1i~YLvrTh@S~>0Vh_S&22?Pc-hI zpnFUskUj(wa|Yv_#Z>zI)-ayfHhul1Tby15phs(x%Ys7=yX+n7kV9UOJXg*b#-$s(1r~^TkYBn6JCa^4cZ29Iv6)at;E@*NoSC9*6gtO$Yu3bNoDW}N${IvJ9Zhti+Al>$^^^0F*t#{v@QzDtg zUop;}a>^i?vbxkTp4_FHdrH?mtq7P0&^ROA_U>)BjV=~SpKl8mthTn_{wbNVI*iV0 z=pL;mjX<>^@c3pVqtj&1cMm+UueEmV1|P{R|9QZGFJ#Io<(;{?T6##=QzJn9+Do>K zHfz?|nmlHHn%9Pc$+6J2D|LQ;>bBSyjMgAQ+jISV(-oZA{^1WVTR;8eaR}ornq|KZ9a?WSX(DwGx??)~U$;8> z2xOa+d`^@tqg!s-&6+)XMVaie{_yXA*U21Hq0@1E^7~BJFntJ^U1ZBB^6%Yy8mmZp z#)qyF_Ms%!c@EvH`DOa}K({!#2;iJw>O9hxr}NGm;wf{yKTe#u(87L{#Jazf+&F^180_9>%v-hzx|%KRz$>=KCa=Ot* zovd-==2w(45fN}6+qUgMnX9PPsi(f?Y3E3_ybc*6TUS3b#4uo&Mw3QB6awb+Dr9uqZJ)B{ z&0D2fBz?=f=9&>Q$5gCU|0$}6bUtZE0K8N<&y@Lh|Nb+5WhRb*Rjbxpd+*&_rmU_Z zJjp(dCXGN81Zsare6&`kY&v;gamBDWM6qI-AAIngg>zh|p5i~@BLKbvG-(8Q5Ky-! z-D8jEtd%R*Rg{_12;Y9IW{!N{eIH1aQ+uxRFi#KZG#UXKHwK6wJId$J7^^U5vC{Y7 zuebKvtGD&cGoP|1Wsbjo{ZCfw*8OD4D(;oH)m*0$U_-#XQH6}6jGCGcndJrvF2DR8 zTW&Vntg8h*dfD{F7t1W1>q^9>-Y|M>#nw+cc6t%W96`LeP9i_%dHtxP`ddH#_!F~; z_3QU}J`dCrV;#mk+0?o7l%jGaU_|@snlu8H5a_xM@!nSw_^*t=F%DvkVx@1sS!r#( zb-51iJ@<@d&5Aib?CPI*;;UtC5scTxm3m2srx^j9xtoIp^PDeF_vpc{bA&rB#~=TS zXP!-)X00(}<}u42YXa!%d%Y(F;qA$;tn;)A)3bYHKG2 z=DYjueEY_%vMOI!-yEgyl?U-^TEom^NrvEeH&6~lghS`(yYGHr6%A|Jv?bQ2n^yLZ zc;%JDne*mJAYWG>?@dh_0S5utt~BdK$Y7W}UU_8}vskQK$L4Q%;6U~=SSzK#uav%5 z?yzX;KjB|2J2Z@ZiHL)<6dt}CwSElo$$q(}^deAu9P!Eq z27Y0d6(?`_5`OQ!xy&L1x!!HJUfktA_~1C^GFcNWU%t+QKXa$85 zd1eRVr+E^1%9CI3xMK_}``hu`wHxM{U)Xv>Cvogp`DZo5hJ7R3uhc?)uRLw?TC)-H zd0kjuj~Z|P{rg(*<-$sX27MVxMxA=AI;*+<`geuY*QvM1=NtN7d75O^q`MjN&tFhR z^X8qcPd-`9Dx&te4bE>w)${7BM=;lcHNg)*{3!dbD)6{IO`MwEwwk9>U*m3uFc}ES z>+#1Yu(G=y|Mb&e7hb=YU;cutE-Z;K$L87d3c|1?Oy4VS^ulZIN`1b#q~C?hgOh)o zHUqeP33u!EiIh62vgyKlhUDNC{!`y8Z@i)kdjaML;dvq2c+2Zcc;?Jy7WDIF)$`<& z2T8Y)wsx&_zpB9Jk;cobX>OUBk;VI7`S$Gj8OwChj*I(klKrOH@^6}xnd`=yVA3S% zepPAh(&(GqU}bANKJJT$Eh9=i_+^_qm3?oEwNdi@ zs%F124BSK1RQ(9pK7^M?;cJ$(JM8eZwQ%8TR+hFt`e?pnTVciTsDlprpN09UOoA>H z?!mL*#}Suo<7ldG1mHs$dk)1sD)al`!Cx`6KF%}t*{6?eelE-Z)>}t2*OfKFmtQWI zZL5XamARz4`84gdH+#sG$y*k^EcdWW`bk99|Td+yZN^ib7TeiMk;5z_%xyzQVWvw<-eAsF^;RJ6R6axEb zw7yqfZIaq~Z|eV*0(l^i*Lihl75G{Ttha*??t9CoxpSraRYhC1zw)XPRrtU)KXZ6c z#V2e~^U(R{4+$klD%#Mi*EF6cFr`5mlG{S|IAAMMQ}Pi|<3rftx8MElMJ{`s&pjud zXPIOIx)sx>%eMi1&N;IEs+zM51AYuNB^LoTK7<_^ZPB6&7jMs=y~2XNl9NwTKJm_h zeHWQDfBp~FcH4=&U*Ln?)5+!0wAUeL*d7PDYiAY}iyKGKgw3-PO!eO{{Hv3 zx$79RpUGc&?M}(#)il@0d@*F-3E_=j{i=t><0ozM4ot6%#NBfE-@_if zx-}`UUC)st=U7S_E#QiFMenyGpg0 zDOLV?{XVkD_PB9M?g~8`2dAdH%q_s=Wee_2Sw~7X1RIn zF?PG2xW{$UNz#38Gq)uwb{AYA|EwmH3HI+AwGFxSnM>0yP4e2W&WEtW3-F@^JwH~; zW+y9`A*ar=Kl}Eb!3qaceBj--?LgW1t)R1--Q@9VT64}GN&H8?FxBnvZm~r->#MI; zF!2~7hxH|_vMnOZ+Is8m*4JOl_19QmztY-jE7|uHGGp|;a*^+o>~_RwwEkBoqbQ5V zuIKvoKUu&3{fn~4g4pvv?zn+m^9+`kUhm#2?)_!&70IdT%}cEhVdq_N_St-PJ@2_^ zZ0s`Rv_bYKY<|in*qM;r4t=j&$jimNPjWw%@xhKeK5fAs3M;+;zI4ATWp!1Jjk~;! zH|}KHGG)byCH~^YYpk7idPa7;^}X^)vRZo_@x=x=Zv_1fze%ux8)XloNfXn0XT9(z0|o1YSwKia%$vl`rmRd82T z-z#T&?PMMdE2Eok+Qotni<|!Y-*KKi9h4{RdVcufckXOL{r%l{KUgAt2?y2DE9}Ax zi}em}yzxEewtMBv`Wx=m@SI_V0=Xg5+i!oZ!p`yA`d)b$Va=ROJQCW6aBc0RvaWvd z#m|{}_5S<$?0U-ZCCnltS6wx{sQu89jj}#xDZ4c8(MR{UP`*sM=9&@AeOp@3%HQ?9 z@?c5L{)RAISQ*FMoEP`4oHePNH()OhbK$W0ATG{5S?Q^#riLyfY+YF6dA(oYgG#|1 z(X;LC+keOkBU60r*X_Q$^!+-0uiRHqYc?VtCBFlOb!X7uI1>o+3%Fv%I_tLEMqB&t z+sE!#*fWA2O=+I6>sdN)4#POJW~uOP6pRIQ{GsdbMIV2>AQn4JxK}fJ^tWDB6877e zF-p$A^u2OVS{^M=^ZS!car`&WUFl{Re#*g8wlTY|k@j1SI(_sKTfbhjV8 zi@Y$v*%9=PgWgjBC$8~+x7~V4KdZU(&i6gB@xqJ$w@e35R!!}X+0zKi&_0CWZ^^yC z8%bcRATic_c&9iI=6+%6^2^^*z|ZC5KF+CR64o}j6U;Az<#qPRi}p!yhOfymI=3Wz zmUv*~*#{U)RQLgu$zv+>#{2BhLtpU3GA!o2@m_!ZE2&MLGDV4v)q2B#9j-J}O*7(w z4_Wwt*Vdm@hDmtlutVmxHfO<|CoZpFbrv`kof-E@vy_ru)moPR$2ldB-YrYNH`chX zz4oPwv&XV=`;0RNONA7B1!{bNWG+ajteWKeBm9~a@(llGn)ng8`|fz|^6=abWND?M zy?0uh;oLAy#I`1dj6y#SwoG^lHe%CG8#erGop_>pTQHk%-qo5pbD325yLVS|mQA{> zu>F$;>aj7&-3O4pun%+tMf9_58(dNuQBdYsH^gB}ShlVb-r=X7`dVn73d?&Q@or3m zl+xUxlSkVF@l|mjS&$f1MK-W$4I7HA{SY-i&X{G=ym_ls=vtGmQpf!px2)pcQ222a zap5iX%_-|$9H^%t5)77?dNvhd}5d#Z0il8T_NiG7|pObHYvwW@d z?6aRqZP+qBu*Tr&C*CwTtNHwMxo0(s?#z=P z`)VilH7WWX`|Fz2B7i%9yfVj|?y$pNl)6U<-Dcct1xiSg>HV^_$;3t5jCu`x(C0 zWfE*m@bDsIno;Dhob2ya6Y;G{ac3I3ZJOdk0Jhv}k4mnWBKFi}^$LSr?%{iepRsyT`7m6Hy8 zlF7V_M@Dfb&0TmUbbFEHEQrbLM#4#w^R&^#g3&KJ?JIyuH9~ z-9E8;^q6YjMepB#riBOohfohZW5>?3#*bfMO_;F2f*lh)c=tQD#Tu*b)XOh_pZ`&~5$1Gh~w=$oRCAeT;frO&6I{*<{(aaMT55if-D9dLQ0%3^o+uuy*Bv{f@WbKQAH_Wv zyiZ{B(|Mn~^Ul}#_X*Am@jjV2abel}gm-NLJEx^>l=&U_;k_t}u$2MaWwxOqZ(0W? zg|a75okH96EX4-n6X?D7=321#SsEVn{jY!Jv%PcQeIGED6I6$44BKq8uGaqh_qE>- zu&0mt!rHYPe8mFi8pj;dUnyp?@6})~q(HAZA@g789GNqs@ak`W`@C&ag;l?F`|Y2y za4yeEcu(Vf9i`5VF)d{Gw9{U*I(3?C!M9Z@De^&D)Gt?DF|4#2LcjOvGrg!hN&T9D z`ET}qNo}i$AMDYy66SrZV|HBai?dw3$1qm`#?Bpm*y0sYC+sm`EI<3~H>^AE7-P@j z-TMGIL&v<`*$a?;+=jJ=h;{|%0Xd0_Y+GbM1lNy!Unxv}ytdY{?hBK@j#KD2+%G)& zYJ7_aR!CH zS-e=DE?lXn9S~3qxZi^>YymyM@u&WmbK5>+Z`3=TT*duBTggq=j zUzP&#ttVSyTgn|*pV*e_yHa4CJ!P^qfA|uH4jU^W4bqn8m$dKjH>}_+Pbdy;+YYoo z{d6&Fmn1$uYz!;l53&~~li2(=iE3}>&QqBC7k6lIpH);HWaWc%;4i*dWi{bkz<&yq|2oq4{s8W8_F`$DOG^SF`k~h`2Zt;5kEszi|=e%gh7* zINbYUXy@&>tG81WwvEtxoH2uaUgH)c%#jBUoMoYZ;A+r#jwF>5- zkeN6LZB#H1BYk)o`oHGWVf#~5ykGsQhxP5ZtC+iL^yqJGoqbXDkd=?0A2ZeZv|-wJ z?X@EVbqj+!33CPLBjZj5i!K<}0_UFlriFW{s{O~~OeqX55#!tC zJ=V5h?BiLB;$9-|j=`_AXdJOtxb@c2(tTf`5AaS9@s6p0fgt<8+5M;-ocjpJ+%Heu zE#>h+0)14!Jd^S}`W<&y!w~eY;0G&?y5oET_P1FHcY*)#hnJ<-d6!*!S}N=dV9qTW zf4Xay`D64EHT#t0dY0iZbZ9**dsy@5|6pP7RCQfh%EKHI`s^$;ZQ2qQdm2T!L0A5z zmu9k5(~gUNlQD({VT`%3b60@5!XXo2e=DdC0>a3qQWTq_-L|JXz=oRadgk+Q*N*Ql z6YN5$tS3)d*yH3O+=b^Uk2ekWTUiNr)>-z5cW}Qb?!r|+$S6Z8FBG&&4WS^B_OQ}-(;|zyw7oM}dFgQroL3ty*oT}SDg8f}q zUS73oy|vqJy%NnQux&bT9=pzC7(T%{zbF~N+8(mcLfG3CRldx8aGnCaBGH6A?Vp+Ug_?`B>&B; z^H>R!u3cr?>dyYRl9cA`E%EaxOP|4i39F9+>|H<(Sjtfy7wcx(1pbTKF5G)%og0cM zH)_3E(t}s9MiNcf!<1J3FFjzyO(Ns|68l&ts2G;Kl>^<8BcP;cgl$CP|5pwUTJUToC(Ja@v?N{pGaw zw{prXAD>{mfQ7#KM*Kdf$hJZ!cEkv|{_9Kef}TFFJ}vH(vXW{)iz53+*8I0`-x-qR z)SPb^{hNBrs(G78Y=ZI{Ig*X1!B;`~#T~}FAHymme)0eB|M=|rOq#UNFH6tg;Rh&g zjH8y1`-H6fA)a8keuRA=7Qba|ZSb?rV$#`7`Pe7=H`pI%!3*aG&6?gy8CWv>#;}5$5V{4<}wxd{qvvi zhG~92P7>{qI5_RJ(=+y+x_o70_ycx^oce_M#2Cy<)ja2QV*(vu9)Ai!ctOY9U53EF zKP#8hPKOE1Kd{~`XN%a^6m?c8x_!`xf}PneAcm&L>`Q-Z=p{llHk8x5+AdUeC%p3N*Du_iH`x1OCHN|3!KWJH!e6;aeH7>sOWODSf$q9B%gL&}hor=YHp|_Z z-o2AI=Y`(7%)7{}GUUX^J1xu_68`R43HG(CLH1bdh&yT`N#Z^7V{>wv*@v}_yzyD~ zkdk<2io4oLrAqpyxZ}Y?*wg0i?BKku_9`J!8+x}!!e(BI*d>~$zT=F(^5jYnUfnQSd;PEl$2O{gHR+lbQB(=A=PAb~%RR-)9%h+o= z>7-YEaf97mR>Iw;q}zA&!k6_oj0+;@fB%zZhb8+3wP_)1yLjS5|1_+wK%YL+{loh5 zGf&%i(qJC^>8E1-7M*g+Am4Ve+IMvL7WOxI+E-0!c>UKq7&)Kv##7sdgAzLq=(n)z z0PIaxQ$O?86?;rL_Y_620pnK}-utr093$&YFd1_j;Kid;>D6Zv*QccGVA9~oJKdQoY z(4cT6syYA}m`vp2}Jd~C-hzP%3C!g%UKM;|Z zFqW>5m`9N;2IYl0R9L#|s^OvY4Jxx*!eFm$*)o1zQ;Y{ez9zBX&NF7iE^D=57^R*# zD~?JM?J_Q>wkfgY01R1le3NX$EDAparG4N5cAK3JZ^1WjP~HgR<;9?Jx>A|d63%1m z!oeP&lGkcDJ6)j)OPtMw-7}drYk5V!Q&n$O<-ms;^yzu1u5NBcyl`&7L(qX$g+W~9 z;BHV9lDzl%IpLy2AIZU=<$gli)~LWJ>|R?bPleG9fi4sez4&4{J84cISK}wdb=D@EB-eLH zrFMr2kE$Pb<&{$RQwGpI@%~}jAu0}wf0=31(sPdL;LGFx1#*h}NKPI>pST0VLua1Z z`0RtaaSFR0^TTep-Fk(>-(4od-&u;=ks-d2y0G|oKK5AuvwPL`R#D#8TX*+k1>fIc zlOU|Uu}2@}(`8MXjSZ1~0qkIti{V~GR3cNTwk z;4SFbhiyOXg!9aO;p+jmMZ=a;P4O_ti$bu6Cb_+5QT`W7E~Bgsun8OX{e}H*=+>#O zV_fB7Pn=aZ27aGe>dWiDN}^sIQ~g=m8Yb@1NAu}`II?}h3I2N3Val%@C%YfTIiPYp z@%l>eFBF!ZdFInt`%xu6EOr@zAI9Dwdn;ab|NGzBZG@sM?1{qmmsg(E{2Pydb>IQQ z-IB0t4o-|nUohJ|=U?1h#hC|ppW#k(Si+bJ`xvV07)N=SJFpPe`mFWDyMWiuUK0Hj zu(rQ6eiWU}#~+`-jDKnQ6~0f++3&@_YR_hzda?MQfA!T_vhhen{_q9ILcIEwk37QX z2NdTQNwR_N@KTgdR-dp=|6rYu^?sDHL!^DSAg5*~M10}(VbS*mHn58vM?F=R$zoez z_39rj=(uFlzm3v&9zwv;dKqAJH8 zcY#fcjt%;EDjEDaneX1xv@{=9VBX|Hkj zxx3wQ{f)gzp0i}&rN)1AwqLP~;+y$!TzKuhcW(=8t*``rQ>2NjzB0;1d%~V6<9rqN zkVVu3X9~Py3eIVuKP93bapdvjlM} zfiG3~mU7Zp^C#v{BSy@r)Z~14j~-Knwj1vVUjG_62Ujrv6WU(z3f9*vSFX!r8uky2 zzw-P&70u`9+_c;F<#K8@q59Xy#qZct!h4E^utvb0&A93;s$7;kGMG!iPNAr>oqTS% zp^gRmqPXzc=;Tu^pS87{=MO*p&f0wQ z>fHl|e=L@ShoEmM zq7EVQAiHHag9##YQiyz{)|Yjy3e2ZZUs_drOIvKw&6+S_L1=cFGv|9tlE3PrzJ#pt z+J1pgy0&eTtBZm;1CRd>bdq9yxWPdZnhP^Y{~_Kn73K5zzlOcOKmS>pZN?&gj)D>F zI!~UwD71`1ZVo@(-!^ZQx_G6%?6P-4*R3=n_U)6{2iWW4)#JsUrQ&^%Q!C49m(8i~ zV24l`U-IMyT%UT1-KH(pO3;PCc*Rq$>@?UbWU%`Da*Ov$lJxaqvz^5* zm;2p=y#rBaU?F+y>)hR#%92WY`DVyGrOE>4De%e7L$LFhBwHc45BAVQU;~0z|JbiytiR*zF3SGcg%`f182`-OVI;I+?z=1Dv5plJ8Sx>j zy!I@?FW3)`Q-2@zM_=>oT}bp#9g6oLtC331c#TsP=1-he z$>8aLJlA-inFdL&`E)>jO6w0^$6PiFLErzn>qaVjzhhq!{`y$->Yessu8Y02B;XHO z?bwk|Z^vm5KB4D`b2k-jf?fI{L+ahdGyi@6{U0c)YcU>~+8~Ma4y)ar@_=8980za? zCU}?Cc2H>tVZDL9JJ=@`tuKJN?dhk#Zm)${&P3gHgl}M3XQWa3^2QtAW1h3S+l9Ze zZpHX4%QheUU_Jl*bgr{er>=NM;vP{HtT@wtPwUMcyk)V{uVzoqGNrW>zIfq}UIanr zq1y^O!8oVibI;yP{aEE^>tOug* z_rd-J@W=WlDq*ksyz_>{g?~*YY4i_=e5>)SDiL+`^1UrV<=XvnKan>1U z47T>)zpt-N?;Xib_z_3EWLCQ5av|z`nt;897Ym@J@UFW4t~QPQ;hHM$YTd|kD~fHivxG3Ow5OHhakuwWf1QP3M2ncy*3G! z!LXqw=|?1QOm)`@y4A2(Qw@YU7WVv`H?Mx5Em&W|rW3EOVO;(7(MR*G!ww7Q>%+}w z;{VQ`6jlnu#WVYeucLU`$NdwWue0j%tKb*x6WxCMXsbnwE|JHwr1b^%aQpT9Jn{1y z+%tfUMx6DT1f34I{Nejn&6TYON0|$L-RWxzp zLi;^|v!0}3qM|<7H-P=n88gJ~4fFIJ&TDX1o-mukKT{u^5nk?iVwzo4^s}roaQ4xz z-7pKbOU931U_q}SDq-xvo)GMG!q-d7mObN?P4GaR<(HL>_ayGB;BKA@nmKcsy=GRd zKVR1FfPU!ABYA9T?ET+~0d-)hZ|re#mjX7;VV@M|Ja^sozTL;*EBMid{(}3#`6>2I zpq~T%QJnW7kL2Kyy@~2Ver=N_t4@8e-*@Mo?_01j2|K_d2IKdA#5Dh7y3u#UzvZU5N{FhRnd9Op}oW3l=po01nM8~hv@Qjer%Xx&*0+n z{!#f$JU*l}@8xBW=29K^_wRA=M?5}BbRXsW=q~^MQ56FJ7v^)iPx5`Da;%}dQ0B3f zd)nSxQduuuR(`zAbg$e$s$ytajp03oeY~T?_i!@rQ^bIq%6CY&az9StdrVGDEvpK7 zZW*mdk7Vyh^EQQbR4EThEbCFjfRBkJl9p8kazN`**hA-~>~&Pf#OXpPz)hhnXFBlq zj=FTVtdhP(EbBFeeGyChW|EBV6TL6ZtEhhxWmBh-@C)95H%9Ltl{wgRtXO;>Hp}bcdqpF~suVjF-^o^B<^pm3qcSJ^-YU)0Vi|i>^o^=AdXNso#^QU< zJb?P9UiVLA{-k?knIpvakIEdgdk`Oxu1sVsRLMk=%2`FY(HvDKb=i^17^VA%n?LK= zZSKnK&nS6!+?4pBr{)DFUKlTCEgGiZYBr+2si9|s?xWCsM0V(L)&=Yu8)g4Od@xV* zLLe{DnjZUwHOuaRTr#7?@@OzF$|B@9!324sqUXV ze|}W`dqrXT-760EFwK9^voNLnK<91Q{)W-Hr58H!|Aw>h%z4x|U!}Bv@ZSEG9^z48 zk#_3%OTywwdT4E)e}Ba_wy7%jeOlwtm{kpA?*raOeX}?{{gYWhZKXE5@AOtfU#X~L z$DL_>`7hzqnC~~gP3?>6zHrn&?6DP%uMblF8?(I5Cmy`rFdpA5Dq4*{J>K7$s~ge! zi1g;ouGF4`8%N*4e!F=YJ+x+P6!RbG`;8=?BYmPc_SvhQD{$WcHVLqXGuKubPhh{4 z#?I_T$=V+h%@dstqjvVBXLXhJ57swJ=;=uEDL`jhG_KW}AMAW*t|VMZ&o$9HU-w#%GDc=V-D?8kWFrs_AE)8c$7`vlqg`;#0!=`fh+IK&Gy zZ^3%j)}NS6pR(r2WalJ1mh$gL5AD@s&ey-G?tw}Oz!oO-l;KasoKBBS{Y2c)9YGKF zyG|8*$EZ>}bvPRW(7Ci_7w_~N>3NvG_oB}?=ov>3cm+BZ&Qss;_e6>}hW^H$ER6-` zBlP{B^qfv-oO|mtG`3#wkB#|e?e7TJO94E;!D-GDAZ@#977f>2b-vh&I45Lj@dJ1nD6mA5E6SEcrTvyyb2rmM- zB%B5@qX^)VaGHcv3@_?{lJv_deG$MV;q?{5DS9!$^g{_;#Q>Lt*HH2zfJ?#=Tru3u z!NutTZ!y5d;ea7a|mg(>G8XzwjD6 z*grfM>;|~5sJ0E^E`W=|bMO`cSQMUvw{p0P!;8}A;5FQ@h@$WYczwg`jRx|;Cm-HE zAED0Oe)^IlpYR$dyp4ByC)fpWojd=0cmZH{xC5{I72*ze;B^D+4tL;lb1+M|1FyRS z-0AC$JbAXC;yRQEkbZN=4GgbwLR}p0PG1Nv0PG4cz~_2}_=M*>z!hGA*9EXEya2Cv zcmY0F2e{JL8wJY0LVUvWpt-{7&jLB1(vQxcHHFZ^JK7cQ4$i+K!iT%zEdX3d?}o3y z!G&-)d<6i*hr8h|09;64Z@9?;xDZZ%xu{aOgDRzJz_-Sgn*MB``?(Na99$M&3}2qZ z^XW^&TbATs3~wIbeEMQ|%fpM|%XdINeQ9{ZJ31d;ZxmB$I7KX?27u}3TtjM#Lg`CM z`^v)G+Y#!Vh^5IJ0CvJl;d20X!b{eTIe?w;nvziZ>ZG$j%Y%!;%i(L_@VZ<+Ug2$!aYJ}HybT@D5MB;%1HcX8 zFnIG4W{yg7h#;q`_Wfy0Bs0dOvy{`DXLOd<4djYnwi9i9vK47R6vLE*^R4)=!F zF4+$EhSvtz4)=!7=HS5amJQ{5!)tedoxa}iCIZ+Fr+++&0Hz@OpTO`M&rlm+JH1aZ z01gxG2X8~wEI)VwF!HYy?gu|Q0O|e1TiW4%@S_8ezTWVottx~!x5Ft9AF34I)J|XH zlNzs>I;vl#aNp#V7U?U5`*$C85Ty?aZ$sh!-A5f%A-pAp`*$C8P=)ZVLWKKwKfU58 zeNcFF3a>Z(sZw~;3hBdyQx?9|gaYY*UkVdmL5D)EKqL#SkwWV7ecW@ ztE2iC0lcd_JU72B01HL$(q`qHMMd{+Z4_hOVH+x06n z0GlfL2I5ODJl`fPdGlWi>)U(-uw*X!l1ra&KpP6re`!fya^d+3(l3Pywx_=v!s`v2 z>@5qYg7yYbL-^WUIEuF%gi%)~eM6aT@RNg38~oXj9-oD6fBOqo*M)GqfL!(s1=!i= f)7vd*ZzrLDYACbZ7s@L4BW2(uw=-z?LgD`p*u6xS literal 0 HcmV?d00001 diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index c278788..977af7d 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -13,7 +13,7 @@ import PCLayout from './components/pc/Layout'; function App() { return ( - + diff --git a/frontend/src/pages/pc/AlbumDetail.jsx b/frontend/src/pages/pc/AlbumDetail.jsx index 54e5d57..e1c5d25 100644 --- a/frontend/src/pages/pc/AlbumDetail.jsx +++ b/frontend/src/pages/pc/AlbumDetail.jsx @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; -import { motion } from 'framer-motion'; +import { motion, AnimatePresence } from 'framer-motion'; import { ArrowLeft, Calendar, Music2, Play, Clock, X, ChevronLeft, ChevronRight } from 'lucide-react'; function AlbumDetail() { @@ -263,10 +263,14 @@ function AlbumDetail() { {/* 라이트박스 모달 */} + {lightbox.open && ( -
setLightbox({ ...lightbox, open: false })} > {/* 닫기 버튼 */}
- + )} +
); } diff --git a/frontend/src/pages/pc/Discography.jsx b/frontend/src/pages/pc/Discography.jsx index d606147..cf2204e 100644 --- a/frontend/src/pages/pc/Discography.jsx +++ b/frontend/src/pages/pc/Discography.jsx @@ -139,7 +139,7 @@ function Discography() {

{album.title}

- {album.album_type} + {album.album_type_short || album.album_type}