@@ -15,37 +15,39 @@ export default function LanguageSwitcher() {
1515 const currentLang = supportedLanguages . find ( lang => lang . code === currentLanguage ) ;
1616
1717 return (
18- < div className = "relative" >
18+ < div className = "relative animate-slide-in " >
1919 < button
2020 onClick = { ( ) => setIsOpen ( ! isOpen ) }
21- className = "flex items-center space-x-2 px-4 py-2 bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow duration-200 border border-gray-200"
21+ className = "flex items-center justify-between w-48 px-4 py-2 bg-white/90 backdrop-blur-sm rounded-xl shadow-lg hover:shadow-xl hover:-translate-y-1 transition-all duration-300 ease-out border border-gray-200 hover:border-blue-300 "
2222 >
23- < span className = "text-lg" > 🌐</ span >
24- < span className = "font-medium text-gray-700" >
25- { currentLang ?. nativeName || currentLang ?. name || currentLanguage }
26- </ span >
27- < span className = "text-gray-400" > ▼</ span >
23+ < div className = "flex items-center space-x-2" >
24+ < span className = "text-lg animate-pulse-slow" > 🌐</ span >
25+ < span className = "font-medium text-gray-700 truncate" >
26+ { currentLang ?. nativeName || currentLang ?. name || currentLanguage }
27+ </ span >
28+ </ div >
29+ < span className = { `text-gray-400 transition-transform duration-200 flex-shrink-0 ${ isOpen ? 'rotate-180' : '' } ` } > ▼</ span >
2830 </ button >
2931
3032 { isOpen && (
31- < div className = "absolute top-full mt-2 w-full bg-white rounded-lg shadow-lg border border-gray-200 z-10" >
33+ < div className = "absolute top-full mt-2 w-48 bg-white/95 backdrop-blur-sm rounded-xl shadow-xl border border-gray-200 z-10 animate-fade-in " >
3234 { supportedLanguages . map ( ( language ) => (
3335 < button
3436 key = { language . code }
3537 onClick = { ( ) => handleLanguageChange ( language . code ) }
36- className = { `w-full px-4 py-2 text-left hover:bg-gray -50 transition-colors duration-150 ${
38+ className = { `w-full px-4 py-2 text-left hover:bg-blue -50 hover:scale-105 transition-all duration-200 ${
3739 language . code === currentLanguage
38- ? 'bg-blue-50 text-blue-600 font-medium'
40+ ? 'bg-blue-100 text-blue-600 font-medium'
3941 : 'text-gray-700'
4042 } `}
4143 >
4244 < div className = "flex items-center space-x-2" >
43- < span className = "text-sm" >
45+ < span className = "text-sm transition-transform duration-200 hover:scale-110 flex-shrink-0 " >
4446 { language . code === 'ko' ? '🇰🇷' : '🇺🇸' }
4547 </ span >
46- < span > { language . nativeName } </ span >
48+ < span className = "truncate" > { language . nativeName } </ span >
4749 { language . code !== 'ko' && (
48- < span className = "text-xs text-gray-400" > ({ language . name } )</ span >
50+ < span className = "text-xs text-gray-400 flex-shrink-0 " > ({ language . name } )</ span >
4951 ) }
5052 </ div >
5153 </ button >
@@ -56,7 +58,7 @@ export default function LanguageSwitcher() {
5658 { /* 배경 클릭 시 닫기 */ }
5759 { isOpen && (
5860 < div
59- className = "fixed inset-0 z-0"
61+ className = "fixed inset-0 z-0 animate-fade-in "
6062 onClick = { ( ) => setIsOpen ( false ) }
6163 />
6264 ) }
0 commit comments