import { Form } from '@inertiajs/react';
import { useRef } from 'react';
import ProfileController from '@/actions/App/Http/Controllers/Settings/ProfileController';
import Heading from '@/components/heading';
import InputError from '@/components/input-error';
import PasswordInput from '@/components/password-input';
import { Button } from '@/components/ui/button';
import {
    Dialog,
    DialogClose,
    DialogContent,
    DialogDescription,
    DialogFooter,
    DialogTitle,
    DialogTrigger,
} from '@/components/ui/dialog';
import { Label } from '@/components/ui/label';

export default function DeleteUser() {
    const passwordInput = useRef<HTMLInputElement>(null);

    return (
        <div className="space-y-6">
            <Heading
                variant="small"
                title="Hapus akun"
                description="Hapus akun Anda beserta seluruh datanya"
            />
            <div className="space-y-4 rounded-lg border border-red-100 bg-red-50 p-4 dark:border-red-200/10 dark:bg-red-700/10">
                <div className="relative space-y-0.5 text-red-600 dark:text-red-100">
                    <p className="font-medium">Peringatan</p>
                    <p className="text-sm">
                        Mohon lanjutkan dengan hati-hati, tindakan ini tidak dapat dibatalkan.
                    </p>
                </div>

                <Dialog>
                    <DialogTrigger asChild>
                        <Button
                            variant="destructive"
                            data-test="delete-user-button"
                        >
                            Hapus akun
                        </Button>
                    </DialogTrigger>
                    <DialogContent>
                        <DialogTitle>
                            Apakah Anda yakin ingin menghapus akun Anda?
                        </DialogTitle>
                        <DialogDescription>
                            Setelah akun Anda dihapus, semua data dan sumber daya di dalamnya akan dihapus secara permanen. Silakan masukkan kata sandi Anda untuk mengonfirmasi bahwa Anda ingin menghapus akun Anda secara permanen.
                        </DialogDescription>

                        <Form
                             {...ProfileController.destroy.form()}
                             options={{
                                 preserveScroll: true,
                             }}
                             onError={() => passwordInput.current?.focus()}
                             resetOnSuccess
                             className="space-y-6"
                         >
                             {({ resetAndClearErrors, processing, errors }) => (
                                 <>
                                     <div className="grid gap-2">
                                         <Label
                                             htmlFor="password"
                                             className="sr-only"
                                         >
                                             Kata Sandi
                                         </Label>

                                         <PasswordInput
                                             id="password"
                                             name="password"
                                             ref={passwordInput}
                                             placeholder="Kata Sandi"
                                             autoComplete="current-password"
                                         />

                                         <InputError message={errors.password} />
                                     </div>

                                     <DialogFooter className="gap-2">
                                         <DialogClose asChild>
                                             <Button
                                                 variant="secondary"
                                                 onClick={() =>
                                                     resetAndClearErrors()
                                                 }
                                             >
                                                 Batal
                                             </Button>
                                         </DialogClose>

                                         <Button
                                             variant="destructive"
                                             disabled={processing}
                                             asChild
                                         >
                                             <button
                                                 type="submit"
                                                 data-test="confirm-delete-user-button"
                                             >
                                                 Hapus akun
                                             </button>
                                         </Button>
                                     </DialogFooter>
                                 </>
                             )}
                         </Form>
                     </DialogContent>
                 </Dialog>
             </div>
        </div>
    );
}
