'use client';
import { useState } from 'react';
import { useForm, SubmitHandler } from 'react-hook-form';
import { yupResolver } from '@hookform/resolvers/yup';
import * as Yup from 'yup';
import { useRouter } from 'next/navigation';
import Layout from '@/components/Layout';
import { createTask } from '@/services/task';
import FormInput from '@/components/FormInput';
type FormValues = {
    name: string;
    description: string;
};
const CreateTaskPage = () => {
    const router = useRouter();
    const [serverError, setServerError] = useState('');
    const [loading, setLoading] = useState(false);
    const validationSchema = Yup.object().shape({
        name: Yup.string().required('Task name is required'),
        description: Yup.string().required('Task description is required'),
    });
    const {
        register,
        handleSubmit,
        formState: { errors },
    } = useForm<FormValues>({
        resolver: yupResolver(validationSchema),
    });
    const onSubmit: SubmitHandler<FormValues> = async (data) => {
        setServerError('');
        setLoading(true);
        try {
            await createTask(data);
            router.push('/tasks');
        } catch (err: any) {
            setServerError(err.response?.data?.message || 'Failed to create task');
        } finally {
            setLoading(false);
        }
    };
    return (
        <Layout title="Create Task">
            <form
                onSubmit={handleSubmit(onSubmit)}
                className="bg-white p-6 rounded-lg shadow-md w-full max-w-lg mx-auto"
            >
                <h2 className="text-2xl font-bold text-center mb-6">Create a New Task</h2>
                {serverError && (
                    <p className="text-red-500 text-center text-sm mb-4">{serverError}</p>
                )}
                <FormInput
                    label="Task Name"
                    id="name"
                    type="text"
                    register={register('name')}
                    error={errors.name?.message}
                />
                <FormInput
                    label="Task Description"
                    id="description"
                    type="textarea"
                    rows={4}
                    register={register('description')}
                    error={errors.description?.message}
                />
                <button
                    type="submit"
                    disabled={loading}
                    className={`w-full py-2 px-4 rounded-md text-white ${
                        loading ? 'bg-gray-400' : 'bg-blue-500 hover:bg-blue-600'
                    }`}
                >
                    {loading ? 'Creating...' : 'Create Task'}
                </button>
            </form>
        </Layout>
    );
};
export default CreateTaskPage;
 
  |