import { Head, Link, router } from '@inertiajs/react';
import { ArrowLeft, LockKeyhole, ShieldCheck } from 'lucide-react';
import { useState } from 'react';
import PageIntro from '@/components/booking/page-intro';
import SiteFooter from '@/components/home/site-footer';
import SiteHeader from '@/components/home/site-header';
import { cardClass } from '@/components/booking/styles';
import type { PaymentOption, TripSummary } from '@/types/booking';
import { cn } from '@/lib/utils';

type Props = { trip: TripSummary; vehicleName: string; fare: string; paymentMethods: PaymentOption[] };
export default function Payment({ trip, vehicleName, fare, paymentMethods }: Props) {
 const [method,setMethod]=useState(paymentMethods[0]?.value??''); const [agree,setAgree]=useState(false); const [processing,setProcessing]=useState(false); const [error,setError]=useState(''); const title=trip.destination?`${trip.pickup} to ${trip.destination}`:trip.pickup;
 const submit=()=>{setError('');router.post('/booking/confirm',{payment_method:method,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone},{onStart:()=>setProcessing(true),onFinish:()=>setProcessing(false),onError:errors=>setError(errors.payment_method??errors.timezone??'Please review your payment selection.')});};
 return <><Head title="Secure Checkout"/><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-16"><PageIntro title="Secure Checkout" breadcrumbs={['Booking',title]}/><div className="mt-10 grid items-start gap-6 lg:grid-cols-[minmax(0,1fr)_360px]"><section className={cn(cardClass,'p-5 sm:p-7')}><div className="flex items-center justify-between border-b border-navy/10 pb-5 dark:border-white/10"><h2 className="text-xl font-semibold">Payment Method</h2><span className="flex items-center gap-1 text-xs font-semibold text-green-700"><LockKeyhole className="size-3"/>Secure checkout</span></div><div className="mt-5 space-y-3">{paymentMethods.map(option=><label key={option.value} className={cn('flex cursor-pointer items-center gap-3 rounded-xl border p-4',method===option.value?'border-blue-600 bg-blue-50/60 dark:bg-blue-900/15':'border-navy/15 dark:border-white/20')}><input type="radio" name="payment_method" value={option.value} checked={method===option.value} onChange={()=>setMethod(option.value)} className="accent-blue-600"/><span className="flex-1"><span className="block font-semibold">{option.label}</span><span className="mt-1 block text-xs text-navy/65 dark:text-white/65">Card or cash accepted by your chauffeur at pickup.</span></span></label>)}</div><p className="mt-5 flex items-center gap-2 text-xs text-green-700"><ShieldCheck className="size-4"/>No card details are stored. Online card payment is coming soon.</p><label className="mt-6 flex cursor-pointer items-start gap-3 rounded-xl border border-navy/10 p-4 text-sm dark:border-white/10"><input type="checkbox" checked={agree} onChange={e=>setAgree(e.target.checked)} className="mt-0.5 accent-blue-600"/><span>I agree to the <a href="/terms" className="text-blue-700 underline">Terms of Service</a> and the 2-hour free cancellation policy.</span></label>{error&&<p role="alert" className="mt-3 text-sm text-red-600">{error}</p>}<div className="mt-6 flex flex-wrap items-center justify-between gap-4"><Link href="/booking/special-requests" className="inline-flex items-center gap-2 rounded-lg border border-navy/15 px-5 py-3 text-sm font-semibold dark:border-white/25"><ArrowLeft className="size-4"/>Back</Link><button type="button" disabled={!agree||processing||!method} onClick={submit} className="rounded-lg bg-gold px-7 py-3 font-semibold text-white disabled:cursor-not-allowed disabled:opacity-50">{processing?'Confirming…':`Confirm Booking · ${fare}`}</button></div></section><aside className={cn(cardClass,'p-5 lg:sticky lg:top-6')}><h2 className="text-lg font-semibold">{vehicleName}</h2><p className="mt-1 text-sm text-navy/65 dark:text-white/65">{trip.service} · {trip.guest_name ?? 'Your ride'}</p><div className="mt-5 space-y-3 border-y border-navy/10 py-4 text-sm dark:border-white/10"><p><strong>Pickup:</strong> {trip.pickup}</p><p><strong>Drop-off:</strong> {trip.destination ?? 'As arranged'}</p><p><strong>Pickup time:</strong> {trip.pickup_at ?? trip.pickup_date}</p></div><div className="mt-4 flex items-center justify-between text-lg font-bold"><span>Total fare</span><span>{fare}</span></div></aside></div></main><SiteFooter className="bg-mist dark:bg-ink"/></div></>;
}
