Changeset b67f274 for src/app/page.tsx


Ignore:
Timestamp:
12/21/25 18:28:25 (9 months ago)
Author:
Stefan-Saveski <stefansaveski19@…>
Branches:
master
Children:
90f7842
Parents:
82c9c53
Message:

Refactor Exams component to fetch passed subjects from API and remove hardcoded data; delete unused JSON data files; implement authentication token management in auth.ts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/app/page.tsx

    r82c9c53 rb67f274  
    1111} from '@fortawesome/free-solid-svg-icons';
    1212import { useState } from 'react';
     13import { login } from '@/lib/auth';
    1314
    1415export default function LoginPage() {
    1516  const [showPassword, setShowPassword] = useState(false);
     17  const [isSubmitting, setIsSubmitting] = useState(false);
     18  const [errorMessage, setErrorMessage] = useState<string | null>(null);
    1619  const [formData, setFormData] = useState({
    17     username: '',
     20    email: '',
    1821    password: ''
    1922  });
     
    2730  };
    2831
    29   const handleSubmit = (e: React.FormEvent) => {
     32  const handleSubmit = async (e: React.FormEvent) => {
    3033    e.preventDefault();
    31     // Handle login logic here
    32     console.log('Login attempt:', formData);
     34    setErrorMessage(null);
     35    setIsSubmitting(true);
     36    try {
     37      await login({ email: formData.email, password: formData.password });
     38      window.location.href = '/students/profile';
     39    } catch (err) {
     40      setErrorMessage(err instanceof Error ? err.message : 'Login failed.');
     41    } finally {
     42      setIsSubmitting(false);
     43    }
    3344  };
    3445
     
    5768            <div className="p-8">
    5869              <form onSubmit={handleSubmit} className="space-y-6">
    59                 {/* Username Field */}
     70                {/* Email Field */}
    6071                <div>
    61                   <label htmlFor="username" className="block text-sm font-medium text-gray-700 mb-2">
    62                     Корисничко име
     72                  <label htmlFor="email" className="block text-sm font-medium text-gray-700 mb-2">
     73                    Внесете е-пошта
    6374                  </label>
    6475                  <div className="relative">
     
    6778                    </div>
    6879                    <input
    69                       id="username"
    70                       name="username"
    71                       type="text"
     80                      id="email"
     81                      name="email"
     82                      type="email"
    7283                      required
    73                       value={formData.username}
     84                      value={formData.email}
    7485                      onChange={handleInputChange}
    7586                      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"
    76                       placeholder="Внесете корисничко име"
     87                      placeholder="Внесете е-пошта"
    7788                    />
    7889                  </div>
     
    132143                </div>
    133144
     145                {errorMessage && (
     146                  <div className="rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700">
     147                    {errorMessage}
     148                  </div>
     149                )}
     150
    134151                {/* Submit Button */}
    135152                <button
    136153                  type="submit"
    137                   className="w-full bg-primary hover:bg-blue-700 text-white font-medium py-3 px-4 rounded-lg transition-colors duration-200 flex items-center justify-center gap-2 shadow-lg hover:shadow-xl"
     154                  disabled={isSubmitting}
     155                  className="w-full bg-primary hover:bg-blue-700 disabled:opacity-60 disabled:hover:bg-primary text-white font-medium py-3 px-4 rounded-lg transition-colors duration-200 flex items-center justify-center gap-2 shadow-lg hover:shadow-xl"
    138156                >
    139157                  <FontAwesomeIcon icon={faSignInAlt} className="h-4 w-4" />
    140                   Најави се
     158                  {isSubmitting ? 'Најави се...' : 'Најави се'}
    141159                </button>
    142160              </form>
Note: See TracChangeset for help on using the changeset viewer.