import { Button, Checkbox } from '@heroui/react';
import { Field } from '@/Components/ui/Field';
import GuestLayout from '@/Layouts/GuestLayout';
import { Head, useForm } from '@inertiajs/react';
import { FormEventHandler } from 'react';

export default function Login({
    status,
}: {
    status?: string;
}) {
    const { data, setData, post, processing, errors, reset } = useForm({
        email: '',
        password: '',
        remember: false as boolean,
    });

    const submit: FormEventHandler = (e) => {
        e.preventDefault();

        post(route('login'), {
            onFinish: () => reset('password'),
        });
    };

    return (
        <GuestLayout>
            <Head title="Masuk" />

            <h1 className="text-lg font-semibold text-gray-900 mb-1">Masuk ke Akun</h1>
            <p className="text-sm text-gray-500 mb-5">Silakan masuk dengan email dan kata sandi kamu.</p>

            {status && (
                <div className="mb-4 text-sm font-medium text-emerald-600">
                    {status}
                </div>
            )}

            <form onSubmit={submit} className="flex flex-col gap-4">
                <Field
                    label="Email"
                    type="email"
                    value={data.email}
                    onChange={(v) => setData('email', v)}
                    required
                />
                {errors.email && <p className="text-sm text-red-600 -mt-3">{errors.email}</p>}

                <Field
                    label="Kata Sandi"
                    type="password"
                    value={data.password}
                    onChange={(v) => setData('password', v)}
                    required
                />
                {errors.password && <p className="text-sm text-red-600 -mt-3">{errors.password}</p>}

                <Checkbox isSelected={data.remember} onChange={(v) => setData('remember', v)}>
                    <Checkbox.Content className="gap-2">
                        <Checkbox.Control>
                            <Checkbox.Indicator />
                        </Checkbox.Control>
                        <span className="text-sm text-gray-600">Ingat saya</span>
                    </Checkbox.Content>
                </Checkbox>

                <div className="flex items-center justify-end mt-2">
                    <Button variant="primary" type="submit" isDisabled={processing}>
                        Masuk
                    </Button>
                </div>
            </form>
        </GuestLayout>
    );
}
