@@ -149,9 +149,9 @@ export function ProfilePage() {
149149 < div className = "flex justify-end" >
150150 < button
151151 onClick = { ( ) => navigate ( '/admin' ) }
152- className = "inline-flex items-center gap-2 rounded-md bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 text-sm font-medium transition-colors"
152+ className = "inline-flex items-center gap-2 rounded-md btn-accent hover:opacity-90 text-white px-4 py-2 text-sm font-medium transition-colors"
153153 >
154- Админская панель
154+ { t ( 'adminPanel' ) }
155155 </ button >
156156 </ div >
157157 ) }
@@ -176,8 +176,8 @@ export function ProfilePage() {
176176 < button
177177 onClick = { ( ) => fileInputRef . current ?. click ( ) }
178178 disabled = { isUploading || isResettingGravatar }
179- className = "absolute bottom-0 right-0 w-8 h-8 bg-blue-600 hover:bg-blue-700 text-white rounded-full flex items-center justify-center transition-colors disabled:opacity-50"
180- title = "Upload avatar"
179+ className = "absolute bottom-0 right-0 w-8 h-8 btn-accent hover:opacity-90 text-white rounded-full flex items-center justify-center transition-colors disabled:opacity-50"
180+ title = { t ( 'uploadAvatar' ) }
181181 >
182182 { isUploading || isResettingGravatar ? (
183183 < div className = "w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin" />
@@ -199,7 +199,7 @@ export function ProfilePage() {
199199 < p className = "text-gray-600 dark:text-gray-400" > @{ user . username } </ p >
200200 < p className = "text-sm text-gray-500 dark:text-gray-500 mt-2 flex items-center gap-1" >
201201 < Calendar className = "w-4 h-4" />
202- Joined { new Date ( user . joinedAt ) . toLocaleDateString ( ) }
202+ { t ( 'joined' ) } { new Date ( user . joinedAt ) . toLocaleDateString ( ) }
203203 </ p >
204204 </ div >
205205 </ div >
@@ -209,7 +209,7 @@ export function ProfilePage() {
209209 < div className = "p-6 space-y-4" >
210210 < div >
211211 < label className = "block text-sm font-medium mb-2" >
212- Display Name
212+ { t ( 'displayName' ) }
213213 </ label >
214214 { isEditing ? (
215215 < div className = "flex gap-2" >
@@ -218,7 +218,7 @@ export function ProfilePage() {
218218 value = { displayName }
219219 onChange = { ( e ) => setDisplayName ( e . target . value ) }
220220 className = "flex-1 px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700"
221- placeholder = "Enter display name"
221+ placeholder = { t ( 'enterDisplayName' ) }
222222 />
223223 < button
224224 onClick = { handleSaveProfile }
@@ -230,7 +230,7 @@ export function ProfilePage() {
230230 ) : (
231231 < Save className = "w-4 h-4" />
232232 ) }
233- Save
233+ { t ( 'save' ) }
234234 </ button >
235235 < button
236236 onClick = { ( ) => {
@@ -249,22 +249,22 @@ export function ProfilePage() {
249249 onClick = { ( ) => setIsEditing ( true ) }
250250 className = "link-accent hover:opacity-80 text-sm transition-colors"
251251 >
252- Edit
252+ { t ( 'edit' ) }
253253 </ button >
254254 </ div >
255255 ) }
256256 </ div >
257257
258258 < div >
259259 < label className = "block text-sm font-medium mb-2" >
260- Username
260+ { t ( 'username' ) }
261261 </ label >
262262 < span className = "text-gray-600 dark:text-gray-400" > @{ user . username } </ span >
263263 </ div >
264264
265265 < div >
266266 < label className = "block text-sm font-medium mb-2" >
267- Language
267+ { t ( 'language' ) }
268268 </ label >
269269 < div className = "flex items-center gap-2" >
270270 < Globe className = "w-4 h-4 text-gray-400" />
@@ -274,7 +274,7 @@ export function ProfilePage() {
274274
275275 < div >
276276 < label className = "block text-sm font-medium mb-2" >
277- Theme
277+ { t ( 'theme' ) }
278278 </ label >
279279 < span className = "text-gray-600 dark:text-gray-400 capitalize" > { user . theme } </ span >
280280 </ div >
@@ -297,7 +297,7 @@ export function ProfilePage() {
297297 disabled = { isResettingGravatar }
298298 className = "w-full px-4 py-2 bg-gray-600 hover:bg-gray-700 text-white rounded-md transition-colors disabled:opacity-50"
299299 >
300- { isResettingGravatar ? 'Resetting...' : 'Reset to Gravatar Avatar' }
300+ { isResettingGravatar ? t ( 'resetting' ) : t ( 'resetToGravatar' ) }
301301 </ button >
302302 < button
303303 onClick = { handleLogout }
@@ -310,12 +310,12 @@ export function ProfilePage() {
310310
311311 { /* Avatar Upload Instructions */ }
312312 < div className = "bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg p-4" >
313- < h3 className = "font-medium text-blue-900 dark:text-blue-100 mb-2" > Avatar Upload </ h3 >
313+ < h3 className = "font-medium text-blue-900 dark:text-blue-100 mb-2" > { t ( 'avatarUploadTitle' ) } </ h3 >
314314 < ul className = "text-sm text-blue-800 dark:text-blue-200 space-y-1" >
315- < li > • Supported formats: JPG, PNG, GIF, WebP </ li >
316- < li > • Maximum file size: 2MB </ li >
317- < li > • Recommended size: 200x200px or larger (square) </ li >
318- < li > • Images are stored in the repository </ li >
315+ < li > • { t ( 'avatarUploadFormats' ) } </ li >
316+ < li > • { t ( 'avatarUploadMaxSize' ) } </ li >
317+ < li > • { t ( 'avatarUploadRecommended' ) } </ li >
318+ < li > • { t ( 'avatarUploadStored' ) } </ li >
319319 </ ul >
320320 </ div >
321321 </ div >
0 commit comments