import React, { useState } from 'react';
import { Head, Link } from '@inertiajs/react';
import PortalLayout from '@/layouts/portal-layout';
import {
    Calendar,
    ChevronLeft,
    Building2,
    MapPin,
    Share2,
    Check,
} from 'lucide-react';
import '../../../css/alumni-home.css';
import { toast } from 'sonner';

interface ActivityItem {
    id: number;
    title: string;
    description: string;
    activity_date?: string;
    alumni_npm?: string;
    alumni_name_snapshot: string;
    program_studi_snapshot?: string;
    graduation_year_snapshot?: number | string;
    institution_company?: string;
    location?: string;
    photo_path?: string;
    category?: {
        id: number;
        name: string;
    };
}

interface ActivityDetailProps {
    activity: ActivityItem;
    relatedActivities: ActivityItem[];
}

export default function ActivityDetail({
    activity,
    relatedActivities,
}: ActivityDetailProps) {
    const [copied, setCopied] = useState(false);

    const formatDate = (dateString?: string) => {
        if (!dateString) return '-';
        try {
            return new Date(dateString).toLocaleDateString('id-ID', {
                day: 'numeric',
                month: 'long',
                year: 'numeric',
            });
        } catch {
            return dateString;
        }
    };

    const formatImageUrl = (path?: string) => {
        if (!path) return '';
        if (/^(https?:\/\/|\/)/.test(path)) return path;
        return `/storage/${path}`;
    };

    const handleCopyLink = () => {
        if (typeof window !== 'undefined' && navigator.clipboard) {
            navigator.clipboard
                .writeText(window.location.href)
                .then(() => {
                    setCopied(true);
                    setTimeout(() => setCopied(false), 2500);
                })
                .catch(() => {
                    toast.error(
                        'Tautan gagal disalin. Salin alamat dari bilah browser.',
                    );
                });
        }
    };

    return (
        <PortalLayout>
            <Head title={`${activity.title} - Kegiatan Alumni FT UNMA`}>
                <meta
                    name="description"
                    content={
                        activity.description?.slice(0, 160) || activity.title
                    }
                />
            </Head>

            <div className="alumni-home min-h-screen bg-[#FAFAF8] pb-24">
                {/* Top Sticky Bar */}
                <nav
                    aria-label="Navigasi Halaman"
                    className="sticky top-18 z-30 border-b border-[#E7E3DF] bg-white"
                >
                    <div className="alumni-shell flex items-center justify-between gap-4 py-3">
                        <Link
                            href="/berita?tab=kegiatan"
                            className="inline-flex items-center gap-2 text-xs font-semibold text-[#5F5F64] transition-colors hover:text-[#7A1F2A]"
                        >
                            <ChevronLeft className="h-4 w-4 text-[#7A1F2A]" />
                            <span>Kembali ke Berita & Kegiatan</span>
                        </Link>

                        <button
                            type="button"
                            onClick={handleCopyLink}
                            className="inline-flex items-center gap-1.5 rounded-md border border-[#E7E3DF] px-2.5 py-1 text-xs font-medium text-[#5F5F64] transition-all duration-200 hover:bg-[#FAF9F7] hover:text-[#17171A] active:scale-95"
                            title="Salin tautan cerita ini"
                        >
                            {copied ? (
                                <>
                                    <Check className="h-3.5 w-3.5 text-[#2F7D4A]" />
                                    <span className="font-semibold text-[#2F7D4A]">
                                        Tautan Disalin
                                    </span>
                                </>
                            ) : (
                                <>
                                    <Share2 className="h-3.5 w-3.5 text-[#87878D]" />
                                    <span>Bagikan</span>
                                </>
                            )}
                        </button>
                    </div>
                </nav>

                {/* Main Article Container */}
                <main className="alumni-shell pt-8 sm:pt-12">
                    <article className="mx-auto max-w-195">
                        {/* Kategori & Metadata Header */}
                        <div className="mb-4 flex flex-wrap items-center gap-2 text-xs sm:gap-3">
                            <span className="rounded-full bg-[#F8EEEF] px-2.5 py-1 text-[11px] font-bold tracking-wider text-[#7A1F2A] uppercase">
                                {activity.category?.name || 'Kiprah Alumni'}
                            </span>
                            {activity.activity_date && (
                                <span className="inline-flex items-center gap-1 text-[#5F5F64]">
                                    <Calendar className="h-3.5 w-3.5" />
                                    {formatDate(activity.activity_date)}
                                </span>
                            )}
                            {activity.location && (
                                <span className="inline-flex items-center gap-1 text-[#5F5F64]">
                                    <MapPin className="h-3.5 w-3.5" />
                                    {activity.location}
                                </span>
                            )}
                        </div>

                        {/* Judul Kegiatan */}
                        <h1 className="alumni-display mb-6 text-2xl leading-[1.2] font-bold text-[#17171A] sm:text-3xl md:text-4xl">
                            {activity.title}
                        </h1>

                        {/* Profil Alumni Snapshot Card */}
                        <div className="mb-8 flex flex-wrap items-center justify-between gap-4 rounded-xl border border-[#E7E3DF] bg-white p-4 shadow-xs sm:p-5">
                            <div className="flex items-center gap-3.5">
                                <div className="flex h-12 w-12 shrink-0 items-center justify-center rounded-full border border-[#E7D0D3] bg-[#F8EEEF] text-base font-bold text-[#7A1F2A]">
                                    {activity.alumni_name_snapshot?.charAt(0) ||
                                        'A'}
                                </div>
                                <div>
                                    <h3 className="text-sm font-bold text-[#17171A]">
                                        {activity.alumni_name_snapshot}
                                    </h3>
                                    <p className="mt-0.5 text-xs text-[#5F5F64]">
                                        {activity.program_studi_snapshot ||
                                            'Fakultas Teknik UNMA'}
                                        {activity.graduation_year_snapshot
                                            ? ` · Lulus ${activity.graduation_year_snapshot}`
                                            : ''}
                                    </p>
                                </div>
                            </div>

                            {activity.institution_company && (
                                <div className="inline-flex items-center gap-1.5 rounded-lg border border-[#E7E3DF] bg-[#FAF9F7] px-3 py-1.5 text-xs text-[#5F5F64]">
                                    <Building2 className="h-3.5 w-3.5 text-[#7A1F2A]" />
                                    <span className="font-medium text-[#17171A]">
                                        {activity.institution_company}
                                    </span>
                                </div>
                            )}
                        </div>

                        {/* Foto Dokumentasi (Jika Ada) */}
                        {activity.photo_path && (
                            <figure className="mb-8 overflow-hidden rounded-xl border border-[#E7E3DF] bg-white shadow-sm">
                                <img
                                    src={formatImageUrl(activity.photo_path)}
                                    alt={activity.title}
                                    className="max-h-130 w-full object-cover object-center"
                                />
                                <figcaption className="border-t border-[#E7E3DF] bg-[#FAF9F7] p-3 text-center text-xs text-[#5F5F64]">
                                    Dokumentasi: {activity.title} ·{' '}
                                    {activity.alumni_name_snapshot}
                                </figcaption>
                            </figure>
                        )}

                        {/* Deskripsi / Isi Cerita Kegiatan */}
                        <div className="mb-12 rounded-xl border border-[#E7E3DF] bg-white p-6 shadow-xs sm:p-8">
                            <h2 className="mb-3 text-xs font-bold tracking-wider text-[#87630E] uppercase">
                                Rincian & Cerita Kegiatan
                            </h2>
                            <div className="prose max-w-none font-sans text-sm leading-relaxed whitespace-pre-wrap text-[#2A2A2E] sm:text-base">
                                {activity.description}
                            </div>
                        </div>

                        {/* CTA Bagikan Kegiatan Anda Sendiri */}
                        <div className="mb-16 flex flex-col justify-between gap-4 rounded-xl border border-[#D7D1CC] bg-[#F7F6F3] p-6 sm:flex-row sm:items-center sm:p-7">
                            <div>
                                <h3 className="text-base font-bold text-[#17171A]">
                                    Punya kegiatan atau kabar alumni lainnya?
                                </h3>
                                <p className="mt-1 text-xs text-[#5F5F64] sm:text-sm">
                                    Bagikan pencapaian dan jejak langkah Anda
                                    untuk menginspirasi mahasiswa serta rekan
                                    alumni FT UNMA.
                                </p>
                            </div>
                            <Link
                                href="/kirim-kegiatan"
                                className="inline-flex h-10 shrink-0 items-center justify-center gap-2 rounded-lg bg-[#7A1F2A] px-5 text-xs font-semibold text-white transition-all duration-200 hover:bg-[#681923]"
                            >
                                Kirim Kegiatan
                            </Link>
                        </div>

                        {/* Kegiatan / Cerita Terkait Lainnya */}
                        {relatedActivities && relatedActivities.length > 0 && (
                            <section className="border-t border-[#E7E3DF] pt-10">
                                <div className="mb-6 flex items-center justify-between">
                                    <h2 className="alumni-display text-xl font-bold text-[#17171A]">
                                        Kegiatan Alumni Lainnya
                                    </h2>
                                    <Link
                                        href="/berita?tab=kegiatan"
                                        className="text-xs font-semibold text-[#7A1F2A] hover:underline"
                                    >
                                        Lihat semua
                                    </Link>
                                </div>

                                <div className="grid grid-cols-1 gap-5 sm:grid-cols-2 md:grid-cols-3">
                                    {relatedActivities.map((item) => (
                                        <Link
                                            key={item.id}
                                            href={`/kegiatan/${item.id}`}
                                            className="group block flex flex-col justify-between overflow-hidden rounded-xl border border-[#E7E3DF] bg-white shadow-xs transition-all hover:border-[#B39A9D]"
                                        >
                                            {item.photo_path && (
                                                <div className="aspect-16/10 w-full overflow-hidden bg-[#FAF9F7]">
                                                    <img
                                                        src={formatImageUrl(
                                                            item.photo_path,
                                                        )}
                                                        alt={item.title}
                                                        className="h-full w-full object-cover transition-transform duration-300 group-hover:scale-105"
                                                        loading="lazy"
                                                    />
                                                </div>
                                            )}
                                            <div className="flex flex-1 flex-col justify-between p-4">
                                                <div>
                                                    <span className="text-[10px] font-bold text-[#7A1F2A] uppercase">
                                                        {item.category?.name ||
                                                            'Kegiatan'}
                                                    </span>
                                                    <h3 className="mt-1 line-clamp-2 text-sm leading-snug font-bold text-[#17171A] transition-colors group-hover:text-[#7A1F2A]">
                                                        {item.title}
                                                    </h3>
                                                </div>
                                                <div className="mt-3 flex items-center justify-between border-t border-[#F0ECE8] pt-3 text-[11px] text-[#87878D]">
                                                    <span>
                                                        {
                                                            item.alumni_name_snapshot
                                                        }
                                                    </span>
                                                    <span>
                                                        {formatDate(
                                                            item.activity_date,
                                                        )}
                                                    </span>
                                                </div>
                                            </div>
                                        </Link>
                                    ))}
                                </div>
                            </section>
                        )}
                    </article>
                </main>
            </div>
        </PortalLayout>
    );
}
