import AuthenticatedLayout from "@/Layouts/AuthenticatedLayout";
import { Head, Link, useForm } from "@inertiajs/react";
import {
    PencilSquareIcon,
    ArrowLeftIcon,
    CreditCardIcon,
} from "@heroicons/react/24/solid";
import toast, { Toaster } from "react-hot-toast";

export default function Edit({ auth, pembayaranSumber }) {
    const user = auth.user;

    // Inisialisasi form dengan data yang akan diedit
    const { data, setData, put, processing, errors } = useForm({
        nm_sumber: pembayaranSumber.nm_sumber || "",
    });

    const submit = (e) => {
        e.preventDefault();

        put(route("pembayaran-sumber.update", pembayaranSumber.id_sumber), {
            onSuccess: () => {
                toast.success("Pembayaran Sumber berhasil diperbarui!");
            },
            onError: () =>
                toast.error(
                    "Terjadi kesalahan saat memperbarui Pembayaran Sumber."
                ),
        });
    };

    return (
        <AuthenticatedLayout
            user={user}
            header={
                <h2 className="font-semibold text-xl flex items-center gap-2 text-gray-800 dark:text-gray-100">
                    <PencilSquareIcon className="w-6 h-6 text-purple-600 dark:text-purple-400" />
                    Edit Pembayaran Sumber
                </h2>
            }
        >
            <Head title="Edit Pembayaran Sumber" />
            <Toaster position="top-right" />

            <div className="py-6">
                <div className="max-w-2xl mx-auto sm:px-6 lg:px-8">
                    <div className="bg-white dark:bg-dark-300 overflow-hidden shadow-sm sm:rounded-lg border border-gray-200 dark:border-purple-500/20">
                        <div className="p-6">
                            {/* Header Form */}
                            <div className="mb-6">
                                <div className="flex items-center gap-3 mb-2">
                                    <div className="p-2 bg-purple-100 dark:bg-purple-900/30 rounded-lg">
                                        <CreditCardIcon className="w-6 h-6 text-purple-600 dark:text-purple-400" />
                                    </div>
                                    <div>
                                        <h1 className="text-2xl font-bold text-gray-900 dark:text-white">
                                            Edit Data Pembayaran
                                        </h1>
                                        <p className="text-sm text-gray-600 dark:text-purple-300/80">
                                            Ubah informasi sumber pembayaran: {pembayaranSumber.nm_sumber}
                                        </p>
                                    </div>
                                </div>
                            </div>

                            <form onSubmit={submit} className="space-y-6">
                                {/* Input Area dengan Styling Purple/Pink */}
                                <div className="bg-gradient-to-r from-purple-50 to-pink-50 dark:from-purple-900/20 dark:to-pink-900/20 rounded-lg p-5 border border-purple-200 dark:border-purple-500/30">
                                    <div className="mb-4">
                                        <label className="block mb-2 font-medium text-purple-700 dark:text-purple-300">
                                            Nama Sumber Pembayaran
                                        </label>
                                        <input
                                            type="text"
                                            value={data.nm_sumber}
                                            onChange={(e) =>
                                                setData("nm_sumber", e.target.value)
                                            }
                                            className="w-full pl-4 pr-4 py-3 border border-purple-300 dark:border-purple-500/40 rounded-lg bg-white dark:bg-purple-900/30 text-gray-900 dark:text-purple-100 placeholder-purple-500 dark:placeholder-purple-400 focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-all duration-200"
                                            placeholder="Masukkan nama sumber pembayaran"
                                            required
                                        />
                                        {errors.nm_sumber && (
                                            <p className="text-red-500 text-sm mt-1 bg-red-50 dark:bg-red-900/20 px-2 py-1 rounded">
                                                {errors.nm_sumber}
                                            </p>
                                        )}
                                    </div>
                                </div>

                                {/* Tombol Aksi */}
                                <div className="flex justify-between pt-6 border-t border-gray-200 dark:border-purple-500/20">
                                    <Link
                                        href={route("pembayaran-sumber.index")}
                                        className="flex items-center gap-2 px-6 py-3 bg-gradient-to-r from-gray-500 to-gray-600 text-white rounded-lg hover:from-gray-600 hover:to-gray-700 transition-all duration-200 font-medium shadow-lg shadow-gray-500/25"
                                    >
                                        <ArrowLeftIcon className="w-5 h-5" />
                                        Kembali
                                    </Link>
                                    <button
                                        type="submit"
                                        disabled={processing}
                                        className="flex items-center gap-2 px-6 py-3 bg-gradient-to-r from-purple-600 to-pink-600 text-white rounded-lg hover:from-purple-700 hover:to-pink-700 transition-all duration-200 font-medium shadow-lg shadow-purple-500/25 disabled:opacity-50 disabled:cursor-not-allowed"
                                    >
                                        <PencilSquareIcon className="w-5 h-5" />
                                        {processing
                                            ? "Memperbarui..."
                                            : "Simpan Perubahan"}
                                    </button>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </AuthenticatedLayout>
    );
}