'use client';
import { useForm, SubmitHandler } from 'react-hook-form';
import { yupResolver } from '@hookform/resolvers/yup';
import * as Yup from 'yup';
import { useRouter } from 'next/navigation';
import { useState } from 'react';
import FormInput from '@/components/FormInput';
import { login } from '@/services/auth';
import {useAuth} from "@/app/hooks/useAuth";
type FormValues = {
    email: string;
    password: string;
};
const LoginPage = () => {
    const router = useRouter();
    useAuth(true);
    const [serverError, setServerError] = useState('');
    const validationSchema = Yup.object().shape({
        email: Yup.string().required('Email is required').email('Invalid email address'),
        password: Yup.string().required('Password is required'),
    });
    const {
        register,
        handleSubmit,
        formState: { errors, isSubmitting },
    } = useForm<FormValues>({
        resolver: yupResolver(validationSchema),
    });
    const onSubmit: SubmitHandler<FormValues> = async (data) => {
        setServerError('');
        try {
            const response = await login(data);
            localStorage.setItem('token', response.data.data.token);
            router.push('/tasks');
        } catch (err: any) {
            setServerError(err.response?.data?.message || 'Login failed');
        }
    };
    return (
        <div className="min-h-screen flex items-center justify-center bg-gray-100">
            <form
                onSubmit={handleSubmit(onSubmit)}
                className="w-full max-w-md bg-white p-6 rounded-lg shadow-md"
            >
                <h1 className="text-2xl font-bold text-center mb-6">Login</h1>
                {serverError && (
                    <p className="text-red-500 text-center text-sm mb-4">{serverError}</p>
                )}
                <FormInput
                    label="Email"
                    id="email"
                    register={register('email')}
                    error={errors.email?.message}
                />
                <FormInput
                    label="Password"
                    id="password"
                    type="password"
                    register={register('password')}
                    error={errors.password?.message}
                />
                <button
                    type="submit"
                    disabled={isSubmitting}
                    className={`w-full py-2 px-4 rounded-md text-white ${
                        isSubmitting ? 'bg-gray-400' : 'bg-blue-500 hover:bg-blue-600'
                    }`}
                >
                    {isSubmitting ? 'Logging in...' : 'Login'}
                </button>
                <p className="text-center text-sm mt-4">
                    Don't have an account?{' '}
                    <a href="/register" className="text-blue-500 hover:underline">
                        Register
                    </a>
                </p>
            </form>
        </div>
    );
};
export default LoginPage;
 
  |