Changeset 50f2fb4 for src/app/page.tsx
- Timestamp:
- 01/30/26 01:40:27 (8 months ago)
- Branches:
- master
- Children:
- ba52069
- Parents:
- 298f9b3
- File:
-
- 1 edited
-
src/app/page.tsx (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/app/page.tsx
r298f9b3 r50f2fb4 12 12 import { useState } from 'react'; 13 13 import { login } from '@/lib/auth'; 14 import { useTranslation } from 'react-i18next'; 15 import LanguageSwitcher from '@/components/LanguageSwitcher'; 14 16 15 17 export default function LoginPage() { 18 const { t } = useTranslation(); 16 19 const [showPassword, setShowPassword] = useState(false); 17 20 const [isSubmitting, setIsSubmitting] = useState(false); … … 54 57 <div className="w-full flex flex-col gap-4"> 55 58 <div className="bg-yellow-100 border border-yellow-200 rounded-xl shadow-sm p-5"> 56 <div className="text-sm font-bold text-gray-900 mb-2"> Login for Student</div>59 <div className="text-sm font-bold text-gray-900 mb-2">{t('login_student_title')}</div> 57 60 <div className="text-xs text-gray-800 whitespace-pre-wrap font-mono"> 58 {`"email":"boris@example.com", 59 "password":"your-password-here",`} 61 {t('login_student_example')} 60 62 </div> 61 63 <div className="mt-3 text-xs text-gray-700"> 62 may take up to 30 seconds afte long inactivity64 {t('login_note_slow')} 63 65 </div> 64 66 </div> 65 67 66 68 <div className="bg-yellow-100 border border-yellow-200 rounded-xl shadow-sm p-5"> 67 <div className="text-sm font-bold text-gray-900 mb-2"> Login for Professor</div>69 <div className="text-sm font-bold text-gray-900 mb-2">{t('login_professor_title')}</div> 68 70 <div className="text-xs text-gray-800 whitespace-pre-wrap font-mono"> 69 {`"email":"andonov@gmail.com", 70 "password":"123lol456",`} 71 {t('login_professor_example')} 71 72 </div> 72 73 </div> … … 84 85 </div> 85 86 </div> 86 <h1 className="text-2xl font-bold mb-2"> Добредојде</h1>87 <h1 className="text-2xl font-bold mb-2">{t('login_welcome')}</h1> 87 88 <p className="text-blue-100 text-sm"> 88 Најавете се во вашиот IKnow акаунт89 {t('login_subtitle')} 89 90 </p> 90 91 </div> … … 92 93 {/* Form */} 93 94 <div className="p-8"> 95 {/* Language Switcher above email field, centered */} 96 <div className="flex justify-center mb-6"> 97 <LanguageSwitcher /> 98 </div> 94 99 <form onSubmit={handleSubmit} className="space-y-6"> 95 100 {/* Email Field */} 96 101 <div> 97 102 <label htmlFor="email" className="block text-sm font-medium text-gray-700 mb-2"> 98 Внесете е-пошта103 {t('login_email_label')} 99 104 </label> 100 105 <div className="relative"> … … 110 115 onChange={handleInputChange} 111 116 className="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary focus:border-primary transition-colors" 112 placeholder= "Внесете е-пошта"117 placeholder={t('login_email_placeholder')} 113 118 /> 114 119 </div> … … 118 123 <div> 119 124 <label htmlFor="password" className="block text-sm font-medium text-gray-700 mb-2"> 120 Лозинка125 {t('login_password_label')} 121 126 </label> 122 127 <div className="relative"> … … 132 137 onChange={handleInputChange} 133 138 className="w-full pl-10 pr-12 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary focus:border-primary transition-colors" 134 placeholder= "Внесете лозинка"139 placeholder={t('login_password_placeholder')} 135 140 /> 136 141 <button … … 157 162 /> 158 163 <label htmlFor="remember" className="ml-2 block text-sm text-gray-700"> 159 Запомни ме164 {t('login_remember_me')} 160 165 </label> 161 166 </div> … … 164 169 className="text-sm text-primary hover:text-blue-700 font-medium transition-colors" 165 170 > 166 Заборавена лозинка?171 {t('login_forgot_password')} 167 172 </button> 168 173 </div> … … 170 175 {errorMessage && ( 171 176 <div className="rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700"> 172 { errorMessage}177 {t(errorMessage) || errorMessage} 173 178 </div> 174 179 )} … … 181 186 > 182 187 <FontAwesomeIcon icon={faSignInAlt} className="h-4 w-4" /> 183 {isSubmitting ? 'Најави се...' : 'Најави се'}188 {isSubmitting ? t('login_button_loading') : t('login_button')} 184 189 </button> 185 190 </form> … … 189 194 <div className="bg-gray-50 px-8 py-4 border-t border-gray-100"> 190 195 <p className="text-center text-sm text-gray-600"> 191 Немате акаунт?{' '}196 {t('login_no_account')}{' '} 192 197 <button className="text-primary hover:text-blue-700 font-medium transition-colors"> 193 Контактирајте ја администрацијата198 {t('login_contact_admin')} 194 199 </button> 195 200 </p> … … 202 207 <FontAwesomeIcon icon={faGraduationCap} className="text-primary" /> 203 208 <span className="text-sm text-gray-600"> 204 Студентски информационен систем209 {t('login_footer')} 205 210 </span> 206 211 </div>
Note:
See TracChangeset
for help on using the changeset viewer.
