import { Head, Link } from '@inertiajs/react';
import { ArrowLeft, CarFront, CheckCircle2, Clock3, MapPin, MessageSquare, Navigation, Phone, Plane, Route, ShieldCheck, Sun, Timer, Users } from 'lucide-react';
import SiteFooter from '@/components/home/site-footer';
import SiteHeader from '@/components/home/site-header';
import type { BookingSummary } from '@/types/booking';

type Props = { booking: BookingSummary };

export default function TripGuide({ booking }: Props) {
    const isAirportPickup = booking.service.toLowerCase().includes('airport') || booking.pickup.toLowerCase().includes('airport');
    const pickupLabel = isAirportPickup ? 'Terminal arrival' : 'Origin pickup point';
    const destination = booking.destination ?? 'Your destination';

    return (
        <>
            <Head title={`Trip & Location Guide · ${booking.reference}`} />
            <div className="min-h-screen bg-mist font-google text-navy dark:bg-ink dark:text-white">
                <SiteHeader variant="solid" />
                <main className="mx-auto max-w-7xl px-4 pt-10 pb-20 sm:px-6 lg:px-10 lg:pt-14">
                    <Link href={`/booking/${booking.reference}/confirmation`} className="inline-flex items-center gap-2 rounded-lg bg-sand px-5 py-3 text-sm font-semibold hover:bg-gold/20 dark:bg-ocean"><ArrowLeft className="size-4" /> Go back</Link>

                    <section className="mt-10 rounded-2xl bg-white p-6 shadow-sm dark:bg-ocean sm:p-8">
                        <div className="flex flex-col gap-6 lg:flex-row lg:items-start lg:justify-between"><div><span className="inline-flex items-center gap-2 rounded-full bg-blue-100 px-3 py-1 text-xs font-bold uppercase tracking-wide text-blue-800 dark:bg-blue-400/15 dark:text-blue-200"><span className="size-2 rounded-full bg-blue-600" /> Curated visual itinerary</span><h1 className="mt-4 text-3xl font-semibold tracking-tight sm:text-5xl">Trip &amp; Location Guide</h1><p className="mt-3 max-w-2xl text-sm leading-6 text-navy/65 dark:text-white/65">Visual overview of your pickup point, transit route, and destination drop-off with clear door-to-door guidance.</p></div><div className="flex flex-col items-start gap-3 text-sm lg:items-end"><span className="rounded-full bg-emerald-100 px-3 py-1.5 font-semibold text-emerald-800 dark:bg-emerald-400/15 dark:text-emerald-200"><CheckCircle2 className="mr-1 inline size-4" /> Confirmed executive transfer</span><span className="flex items-center gap-2 text-navy/65 dark:text-white/65"><CarFront className="size-4 text-blue-700" /> {booking.vehicle} · <Clock3 className="size-4 text-blue-700" /> {booking.pickup_at_label}</span></div></div>
                        <div className="mt-8 grid gap-3 rounded-xl bg-mist p-4 dark:bg-ink sm:grid-cols-2 lg:grid-cols-4"><Info icon={Plane} label={pickupLabel} value={booking.pickup.split(',')[0]} /><Info icon={Timer} label="Transit time" value={booking.duration ?? 'Scheduled transfer'} /><Info icon={Route} label="Total distance" value={booking.distance ?? 'Route distance calculated'} /><Info icon={MapPin} label="Final destination" value={destination.split(',')[0]} /></div>
                    </section>

                    <div className="mt-5 grid items-start gap-5 lg:grid-cols-[minmax(0,1fr)_360px]">
                        <section className="overflow-hidden rounded-2xl bg-white shadow-sm dark:bg-ocean"><div className="relative h-64 overflow-hidden bg-navy sm:h-96"><img src={booking.vehicle_image} alt={booking.vehicle} className="size-full object-cover opacity-70" /><div className="absolute inset-0 bg-gradient-to-t from-navy/80 via-transparent to-navy/20" /><span className="absolute top-5 left-5 rounded-full bg-navy px-4 py-2 text-sm font-semibold text-white"><span className="mr-2 inline-block size-2 rounded-full bg-gold" />Step 01: Arrival orientation</span><div className="absolute bottom-5 left-5 text-white"><p className="text-xs font-bold uppercase tracking-wide text-gold">Pickup point</p><h2 className="mt-1 text-2xl font-semibold sm:text-3xl">{booking.pickup.split(',')[0]}</h2></div></div><div className="p-6 sm:p-8"><div className="flex flex-wrap items-center justify-between gap-4"><div><p className="text-xs font-bold uppercase tracking-wide text-blue-700 dark:text-blue-300">Origin pickup point</p><h2 className="mt-2 text-2xl font-semibold">{booking.pickup}</h2></div><button type="button" className="inline-flex items-center gap-2 rounded-lg bg-amber-700 px-4 py-2.5 text-sm font-semibold text-white"><MapPin className="size-4" /> View route map</button></div><div className="mt-6 rounded-xl bg-mist p-4 dark:bg-ink"><p className="flex items-center gap-2 font-semibold"><MapPin className="size-5 text-blue-700" /> Specific meeting spot</p><p className="mt-2 pl-7 text-sm text-navy/65 dark:text-white/65">Your chauffeur will meet you at the designated pickup point and display your booking name.</p></div><h3 className="mt-8 text-lg font-semibold">Visual guidance checklist &amp; tips</h3><div className="mt-4 space-y-3"><Tip icon={Users} title="Meet & greet protocol" text={`Your chauffeur will be ready for ${booking.contact_name} and assist with luggage.`} /><Tip icon={Navigation} title="Terminal wayfinding" text="Follow the ground transportation and executive car service signs from arrivals." /><Tip icon={Clock3} title="Flight delay protection" text="Your booking includes complimentary wait time and dispatch coordination." /></div></div></section>

                        <aside className="space-y-5 lg:sticky lg:top-5"><section className="rounded-2xl bg-white p-6 shadow-sm dark:bg-ocean"><div className="flex items-center justify-between"><p className="text-xs font-bold uppercase tracking-wide text-blue-700 dark:text-blue-300">Assigned chauffeur</p><span className="rounded bg-emerald-100 px-2 py-1 text-xs font-semibold text-emerald-700 dark:bg-emerald-400/15 dark:text-emerald-300">On schedule</span></div><div className="mt-5 flex items-center gap-4"><span className="flex size-14 items-center justify-center rounded-full bg-blue-800 text-lg font-bold text-white">MV</span><div><h2 className="text-xl font-semibold">Marcus Vance</h2><p className="mt-1 text-sm text-navy/60 dark:text-white/60">★ 4.98 · Executive fleet</p></div></div><div className="mt-5 rounded-xl bg-mist p-4 text-sm dark:bg-ink"><div className="flex justify-between gap-3"><span className="text-navy/60 dark:text-white/60">Vehicle class</span><strong className="text-right">{booking.vehicle}</strong></div><div className="mt-3 flex justify-between gap-3"><span className="text-navy/60 dark:text-white/60">Passengers</span><strong>{booking.passengers}</strong></div></div><div className="mt-4 grid grid-cols-2 gap-2"><a href="tel:+18005550199" className="inline-flex items-center justify-center gap-2 rounded-lg bg-mist px-3 py-3 text-sm font-semibold dark:bg-ink"><Phone className="size-4" /> Call</a><a href="mailto:dispatch@voyagetransit.com" className="inline-flex items-center justify-center gap-2 rounded-lg bg-mist px-3 py-3 text-sm font-semibold dark:bg-ink"><MessageSquare className="size-4" /> Message</a></div><Link href={`/booking/${booking.reference}/tracking`} className="mt-3 inline-flex w-full items-center justify-center gap-2 rounded-lg bg-gold px-4 py-3 text-sm font-semibold text-white hover:bg-gold-dark"><Navigation className="size-4" /> Open live GPS tracking</Link></section><section className="rounded-2xl bg-white p-6 shadow-sm dark:bg-ocean"><p className="text-xs font-bold uppercase tracking-wide text-blue-700 dark:text-blue-300">Destination intelligence</p><div className="mt-4 rounded-xl bg-mist p-4 dark:bg-ink"><div className="flex items-center justify-between"><span className="text-xs text-navy/55 dark:text-white/55">Local weather</span><Sun className="size-5 text-amber-500" /></div><p className="mt-2 text-lg font-semibold">Clear &amp; comfortable</p><p className="mt-1 text-sm text-navy/60 dark:text-white/60">Local destination conditions will update closer to arrival.</p></div><div className="mt-3 rounded-xl bg-blue-50 p-4 dark:bg-blue-400/10"><p className="flex items-center gap-2 text-sm font-semibold"><ShieldCheck className="size-4 text-blue-700 dark:text-blue-300" /> 24/7 concierge desk</p><p className="mt-2 text-sm text-navy/65 dark:text-white/65">Need help with luggage, local directions, or pickup changes?</p><a href="tel:+18005550199" className="mt-3 inline-block text-sm font-semibold text-blue-700 dark:text-blue-300">+1 800 555-0199</a></div></section></aside>
                    </div>
                </main>
                <SiteFooter className="bg-mist dark:bg-ink" />
            </div>
        </>
    );
}

function Info({ icon: Icon, label, value }: { icon: typeof Plane; label: string; value: string }) {
    return <div className="flex items-center gap-3 rounded-lg p-2"><span className="flex size-10 shrink-0 items-center justify-center rounded-lg bg-navy text-white"><Icon className="size-5" /></span><div className="min-w-0"><p className="text-xs font-semibold uppercase tracking-wide text-navy/55 dark:text-white/55">{label}</p><p className="truncate text-sm font-bold">{value}</p></div></div>;
}

function Tip({ icon: Icon, title, text }: { icon: typeof Users; title: string; text: string }) {
    return <div className="flex gap-3 rounded-xl bg-cream p-4 dark:bg-ink"><span className="flex size-9 shrink-0 items-center justify-center rounded-full bg-blue-600 text-white"><Icon className="size-4" /></span><div><p className="font-semibold">{title}</p><p className="mt-1 text-sm text-navy/65 dark:text-white/65">{text}</p></div></div>;
}
