import React, { useState } from 'react';
import { Head, useForm } from '@inertiajs/react';
import PortalLayout from '@/layouts/portal-layout';
import {
    Mail,
    Phone,
    MapPin,
    Send,
    Building2,
    Clock,
    MessageSquare,
    ExternalLink,
    X,
    FileCheck,
} from 'lucide-react';
import '../../../css/alumni-home.css';
import { useTurnstile } from '@/hooks/use-turnstile';

interface ContactProps {
    settings: {
        address: string;
        phone: string;
        email: string;
        whatsapp: string;
    };
}

export default function ContactPage({ settings }: ContactProps) {
    const [showSuccessModal, setShowSuccessModal] = useState(false);
    const [submittedName, setSubmittedName] = useState('');

    const { data, setData, post, processing, errors, reset } = useForm({
        name: '',
        phone_number: '',
        email: '',
        message: '',
        cf_turnstile_response: '',
    });

    const turnstile = useTurnstile();

    const handleSubmit = (e: React.FormEvent) => {
        e.preventDefault();
        const currentName = data.name;
        setData('cf_turnstile_response', turnstile.getToken());
        post('/contact', {
            onSuccess: () => {
                setSubmittedName(currentName);
                setShowSuccessModal(true);
                reset();
                turnstile.reset();
            },
        });
    };

    return (
        <PortalLayout>
            <Head title="Hubungi Kami - Fakultas Teknik Universitas Majalengka">
                <meta
                    name="description"
                    content="Layanan informasi dan kontak resmi sekretariat Fakultas Teknik Universitas Majalengka."
                />
            </Head>

            <div className="alumni-home min-h-screen pb-20">
                {/* Header Banner Konsisten */}
                <header className="border-b border-[#E7E3DF] bg-white">
                    <div className="alumni-shell py-10 lg:py-14">
                        <div className="max-w-3xl">
                            <p className="stagger-1 mb-2 text-xs font-semibold tracking-[0.14em] text-[#87630E] uppercase">
                                LAYANAN & INFORMASI
                            </p>
                            <h1 className="stagger-2 alumni-display text-3xl leading-[1.12] font-bold tracking-tight text-[#17171A] sm:text-4xl lg:text-[44px]">
                                Hubungi Fakultas Teknik
                            </h1>
                            <p className="stagger-3 mt-3.5 max-w-2xl text-sm leading-relaxed text-[#5F5F64] sm:text-base">
                                Ada pertanyaan terkait data alumni, verifikasi
                                SKPI, legalisir dokumen, atau kemitraan program?
                                Sampaikan pesan Anda secara langsung kepada
                                sekretariat pengelola Fakultas Teknik UNMA.
                            </p>
                        </div>
                    </div>
                </header>

                <main className="alumni-shell py-8 sm:py-12">
                    <div className="grid grid-cols-1 gap-8 sm:gap-10 lg:grid-cols-3">
                        {/* Info Kontak Kiri */}
                        <div className="stagger-4 space-y-6">
                            <div className="hover-lift space-y-6 rounded-2xl border border-[#E7E3DF] bg-white p-6 shadow-xs transition-all duration-300 sm:p-7">
                                <div className="space-y-1 border-b border-[#E7E3DF] pb-4">
                                    <span className="block text-[11px] font-bold tracking-wider text-[#87630E] uppercase">
                                        SEKRETARIAT RESMI
                                    </span>
                                    <h2 className="flex items-center gap-2 text-base font-bold text-[#17171A]">
                                        <Building2 className="h-4 w-4 text-[#7A1F2A]" />
                                        Fakultas Teknik UNMA
                                    </h2>
                                </div>

                                <div className="space-y-5 text-xs">
                                    <div className="flex items-start gap-3.5">
                                        <div className="mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg border border-[#7A1F2A]/15 bg-[#7A1F2A]/5 text-[#7A1F2A]">
                                            <MapPin className="h-4 w-4" />
                                        </div>
                                        <div>
                                            <span className="mb-0.5 block font-bold text-[#17171A]">
                                                Alamat Kampus
                                            </span>
                                            <span className="leading-relaxed text-slate-600">
                                                {settings.address ||
                                                    'Jl. K.H. Abdul Halim No. 103, Majalengka Kulon, Kec. Majalengka, Kabupaten Majalengka, Jawa Barat 45418'}
                                            </span>
                                        </div>
                                    </div>

                                    <div className="flex items-start gap-3.5">
                                        <div className="mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg border border-[#7A1F2A]/15 bg-[#7A1F2A]/5 text-[#7A1F2A]">
                                            <Phone className="h-4 w-4" />
                                        </div>
                                        <div>
                                            <span className="mb-0.5 block font-bold text-[#17171A]">
                                                Telepon / WhatsApp
                                            </span>
                                            <span className="font-mono text-slate-600">
                                                {settings.phone ||
                                                    '(0233) 281496'}
                                            </span>
                                            {settings.whatsapp && (
                                                <a
                                                    href={`https://wa.me/${settings.whatsapp.replace(/\D/g, '')}`}
                                                    target="_blank"
                                                    rel="noreferrer"
                                                    className="mt-1 block inline-flex items-center gap-1 text-[11px] font-semibold text-[#7A1F2A] hover:underline"
                                                >
                                                    <span>
                                                        Chat WhatsApp Resmi
                                                    </span>
                                                    <ExternalLink className="h-3 w-3" />
                                                </a>
                                            )}
                                        </div>
                                    </div>

                                    <div className="flex items-start gap-3.5">
                                        <div className="mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg border border-[#7A1F2A]/15 bg-[#7A1F2A]/5 text-[#7A1F2A]">
                                            <Mail className="h-4 w-4" />
                                        </div>
                                        <div>
                                            <span className="mb-0.5 block font-bold text-[#17171A]">
                                                Email Resmi
                                            </span>
                                            <span className="font-mono text-slate-600">
                                                {settings.email ||
                                                    'teknik@unma.ac.id'}
                                            </span>
                                        </div>
                                    </div>

                                    <div className="flex items-start gap-3.5 border-t border-slate-100 pt-1">
                                        <div className="mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg border border-[#87630E]/20 bg-[#87630E]/10 text-[#87630E]">
                                            <Clock className="h-4 w-4" />
                                        </div>
                                        <div>
                                            <span className="mb-0.5 block font-bold text-[#17171A]">
                                                Jam Layanan
                                            </span>
                                            <span className="text-slate-600">
                                                Senin – Jumat: 08.00 – 16.00 WIB
                                            </span>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>

                        {/* Form Pesan Kanan */}
                        <div className="stagger-5 lg:col-span-2">
                            <div className="hover-lift space-y-6 rounded-2xl border border-[#E7E3DF] bg-white p-6 shadow-xs transition-all duration-300 sm:p-8">
                                <div className="space-y-1 border-b border-[#E7E3DF] pb-4">
                                    <span className="block text-[11px] font-bold tracking-wider text-[#87630E] uppercase">
                                        KIRIM PESAN
                                    </span>
                                    <h2 className="flex items-center gap-2 font-serif text-lg font-bold text-[#17171A] sm:text-xl">
                                        <MessageSquare className="h-4 w-4 text-[#7A1F2A]" />
                                        Kirim Pesan / Pengaduan
                                    </h2>
                                    <p className="mt-1 text-xs text-slate-500">
                                        Silakan lengkapi formulir di bawah ini.
                                        Tim administrasi Fakultas Teknik akan
                                        menindaklanjuti pesan Anda.
                                    </p>
                                </div>

                                <form
                                    onSubmit={handleSubmit}
                                    className="space-y-4 text-xs"
                                >
                                    <div className="grid grid-cols-1 gap-4 sm:grid-cols-2">
                                        <div>
                                            <label
                                                htmlFor="contact-name"
                                                className="mb-2 block text-xs font-semibold tracking-wider text-[#5F5F64] uppercase"
                                            >
                                                Nama Lengkap
                                            </label>
                                            <input
                                                id="contact-name"
                                                type="text"
                                                value={data.name}
                                                onChange={(e) =>
                                                    setData(
                                                        'name',
                                                        e.target.value,
                                                    )
                                                }
                                                placeholder="Contoh: Ahmad Nur'ain"
                                                className="h-11 w-full rounded-lg border border-[#D7D1CC] bg-[#FAF8F5] px-3.5 text-sm text-[#17171A] placeholder-[#87878D] transition-all focus:border-[#7A1F2A] focus:bg-white focus:ring-2 focus:ring-[#7A1F2A]/10 focus:outline-hidden"
                                                required
                                            />
                                            {errors.name && (
                                                <p className="mt-1 text-red-600">
                                                    {errors.name}
                                                </p>
                                            )}
                                        </div>

                                        <div>
                                            <label
                                                htmlFor="contact-phone"
                                                className="mb-2 block text-xs font-semibold tracking-wider text-[#5F5F64] uppercase"
                                            >
                                                Nomor Telepon / WhatsApp
                                            </label>
                                            <input
                                                id="contact-phone"
                                                type="tel"
                                                value={data.phone_number}
                                                onChange={(e) =>
                                                    setData(
                                                        'phone_number',
                                                        e.target.value,
                                                    )
                                                }
                                                placeholder="Contoh: 08123456789"
                                                className="h-11 w-full rounded-lg border border-[#D7D1CC] bg-[#FAF8F5] px-3.5 font-mono text-sm text-[#17171A] placeholder-[#87878D] transition-all focus:border-[#7A1F2A] focus:bg-white focus:ring-2 focus:ring-[#7A1F2A]/10 focus:outline-hidden"
                                            />
                                            {errors.phone_number && (
                                                <p className="mt-1 text-red-600">
                                                    {errors.phone_number}
                                                </p>
                                            )}
                                        </div>
                                    </div>

                                    <div>
                                        <label
                                            htmlFor="contact-email"
                                            className="mb-2 block text-xs font-semibold tracking-wider text-[#5F5F64] uppercase"
                                        >
                                            Alamat Email
                                        </label>
                                        <input
                                            id="contact-email"
                                            type="email"
                                            value={data.email}
                                            onChange={(e) =>
                                                setData('email', e.target.value)
                                            }
                                            placeholder="nama@email.com"
                                            className="h-11 w-full rounded-lg border border-[#D7D1CC] bg-[#FAF8F5] px-3.5 font-mono text-sm text-[#17171A] placeholder-[#87878D] transition-all focus:border-[#7A1F2A] focus:bg-white focus:ring-2 focus:ring-[#7A1F2A]/10 focus:outline-hidden"
                                            required
                                        />
                                        {errors.email && (
                                            <p className="mt-1 text-red-600">
                                                {errors.email}
                                            </p>
                                        )}
                                    </div>

                                    <div>
                                        <label
                                            htmlFor="contact-message"
                                            className="mb-2 block text-xs font-semibold tracking-wider text-[#5F5F64] uppercase"
                                        >
                                            Pesan / Pertanyaan
                                        </label>
                                        <textarea
                                            id="contact-message"
                                            rows={5}
                                            value={data.message}
                                            onChange={(e) =>
                                                setData(
                                                    'message',
                                                    e.target.value,
                                                )
                                            }
                                            placeholder="Tuliskan pesan, pertanyaan seputar alumni/SKPI, atau tanggapan Anda..."
                                            className="w-full rounded-lg border border-[#D7D1CC] bg-[#FAF8F5] p-3 text-sm text-[#17171A] placeholder-[#87878D] transition-all focus:border-[#7A1F2A] focus:bg-white focus:ring-2 focus:ring-[#7A1F2A]/10 focus:outline-hidden"
                                            required
                                        />
                                        {errors.message && (
                                            <p className="mt-1 text-red-600">
                                                {errors.message}
                                            </p>
                                        )}
                                    </div>

                                    <div className="space-y-3 pt-2">
                                        {turnstile.isActive && (
                                            <div ref={turnstile.containerRef} />
                                        )}
                                        <button
                                            type="submit"
                                            disabled={processing}
                                            className="group inline-flex items-center justify-center gap-2 rounded-xl bg-[#7A1F2A] px-6 py-3 text-xs font-semibold text-white shadow-xs transition-all duration-200 hover:bg-[#681923] active:scale-95 disabled:opacity-50 sm:text-sm"
                                        >
                                            <Send className="h-4 w-4 transition-transform group-hover:translate-x-0.5" />
                                            <span>
                                                {processing
                                                    ? 'Mengirim Pesan...'
                                                    : 'Kirim Pesan Sekarang'}
                                            </span>
                                        </button>
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
                </main>

                {/* MODAL POPUP KONFIRMASI PENGIRIMAN PESAN */}
                {showSuccessModal && (
                    <div
                        role="dialog"
                        aria-modal="true"
                        aria-labelledby="contact-modal-title"
                        className="fixed inset-0 z-50 flex animate-in items-center justify-center bg-black/60 p-4 backdrop-blur-xs duration-200 fade-in"
                    >
                        <div className="relative w-full max-w-md animate-in rounded-2xl border border-[#E7E3DF] bg-white p-6 text-center shadow-2xl duration-200 zoom-in-95 sm:p-8">
                            {/* Tombol Tutup Silang di Kanan Atas */}
                            <button
                                type="button"
                                onClick={() => setShowSuccessModal(false)}
                                className="absolute top-4 right-4 rounded-lg p-1.5 text-[#87878D] transition-colors hover:bg-[#FAF9F7] hover:text-[#17171A]"
                                aria-label="Tutup popup"
                            >
                                <X className="h-4 w-4" />
                            </button>

                            {/* Badge Icon Elegan */}
                            <div className="mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-2xl border border-[#E7D0D3] bg-[#F8EEEF] text-[#7A1F2A]">
                                <FileCheck className="h-8 w-8" />
                            </div>

                            <p className="mb-1 text-[11px] font-bold tracking-wider text-[#87630E] uppercase">
                                PENGADUAN / PESAN DITERIMA
                            </p>

                            <h3
                                id="contact-modal-title"
                                className="alumni-display mb-2 text-xl leading-tight font-bold text-[#17171A] sm:text-2xl"
                            >
                                Pesan Berhasil Terkirim
                            </h3>

                            <p className="mb-6 text-xs leading-relaxed text-[#5F5F64] sm:text-sm">
                                Terima kasih{' '}
                                {submittedName ? (
                                    <strong>{submittedName}</strong>
                                ) : (
                                    'Bapak/Ibu'
                                )}
                                . Pesan Anda telah tercatat di sekretariat
                                Fakultas Teknik UNMA dan akan segera kami tindak
                                lanjuti melalui kontak yang Anda cantumkan.
                            </p>

                            <div className="mb-6 flex items-center justify-center gap-2 rounded-xl border border-[#E7E3DF] bg-[#FAF9F7] p-3.5 text-xs text-[#5F5F64]">
                                <Clock className="h-4 w-4 shrink-0 text-[#7A1F2A]" />
                                <span>
                                    Estimasi respons admin:{' '}
                                    <strong>1 × 24 jam kerja</strong> (Senin –
                                    Jumat).
                                </span>
                            </div>

                            <button
                                type="button"
                                onClick={() => setShowSuccessModal(false)}
                                className="inline-flex w-full items-center justify-center rounded-xl bg-[#7A1F2A] px-4 py-2.5 text-xs font-semibold text-white shadow-xs transition-all duration-200 hover:bg-[#681923] active:scale-98"
                            >
                                Tutup & Selesai
                            </button>
                        </div>
                    </div>
                )}
            </div>
        </PortalLayout>
    );
}
