PageSourceSearch

https://luquillotaxitours.base44.app/assets/ShuttleConfirmation-CGm0H1G5.js

js luquillotaxitours.base44.app collected 2026-10-03 03:08:06 UTC 9,132 bytes, 1 lines download raw bytes

1import{u as w,i as k,r as o,e as y,j as e,B as p,c as b,g as S,k as C,P as B,C as F,a as L,U as R,M as D,D as q,H as _}from"./index-BmBL1DE3.js";import{C as c,b as d}from"./card-CsVXTXhb.js";import{B as P}from"./badge-DRM7RRJz.js";import{S as E}from"./ServicesPromoBanner-Bh3MkBGs.js";import{C as T}from"./circle-check-C6H94GUj.js";import{P as A}from"./plane-DuJ4Cs2I.js";import{L as U}from"./luggage-DXgVTTqm.js";const h={en:{received:"Booking Received!",receivedDesc:"Your reservation request has been submitted. You will receive a confirmation email shortly.",confNum:"Confirmation Number",pending:"Pending",bookingDetails:"Booking Details",customer:"Customer Information",tripDetails:"Trip Details",direction:"Direction",toAirport:"Luquillo → SJU Airport",fromAirport:"SJU Airport → Luquillo",date:"Date",time:"Time",passengers:"Passengers",bags:"Bags",pickup:"Pickup Location",name:"Name",email:"Email",phone:"Phone",specialRequests:"Special Requests",costBreakdown:"Cost Breakdown",baseFare:"Base Fare",bookingFee:"Booking Fee",bookingFeeNote:"Required to confirm seat",luggageFee:"Extra Luggage",luggageNote:"1 per passenger included",grandTotal:"Grand Total",depositNote:"Booking Fee payment is required to confirm your seat.",nextSteps:"Next Steps",step1:"Our team will review your reservation request.",step2:"You will receive an email with payment instructions for the Booking Fee.",step3:"Once payment is confirmed, your seat will be guaranteed.",backHome:"Back to Shuttle",notFound:"Booking not found."},es:{received:"¡Reserva Recibida!",receivedDesc:"Su solicitud de reserva ha sido enviada. Recibirá una confirmación por correo electrónico.",confNum:"Número de Confirmación",pending:"Pendiente",bookingDetails:"Detalles de la Reserva",customer:"Información del Cliente",tripDetails:"Detalles del Viaje",direction:"Dirección",toAirport:"Luquillo → Aeropuerto SJU",fromAirport:"Aeropuerto SJU → Luquillo",date:"Fecha",time:"Horario",passengers:"Pasajeros",bags:"Maletas",pickup:"Ubicación de Recogida",name:"Nombre",email:"Correo",phone:"Teléfono",specialRequests:"Solicitudes Especiales",costBreakdown:"Desglose de Costos",baseFare:"Costo Base",bookingFee:"Tarifa de Reserva",bookingFeeNote:"Requerida para confirmar asiento",luggageFee:"Maletas Extra",luggageNote:"1 por persona incluida",grandTotal:"Gran Total",depositNote:"Se requiere el pago de la Tarifa de Reserva para confirmar su asiento.",nextSteps:"Próximos Pasos",step1:"Nuestro equipo revisará su solicitud de reserva.",step2:"Recibirá un correo con instrucciones de pago para la Tarifa de Reserva.",step3:"Una vez confirmado el pago, su asiento estará garantizado.",backHome:"Volver al Shuttle",notFound:"Reserva no encontrada."}};function O(){var x;const i=w(),n=k(),[a,m]=o.useState(null),[f,l]=o.useState(!0),[j,N]=o.useState(()=>typeof window<"u"&&localStorage.getItem("language")||"en");o.useEffect(()=>{var g;window.scrollTo(0,0);const r=()=>{N(localStorage.getItem("language")||"en")};if(window.addEventListener("languageChange",r),window.addEventListener("storage",r),(g=n.state)!=null&&g.booking)return m(n.state.booking),l(!1),()=>{window.removeEventListener("languageChange",r),window.removeEventListener("storage",r)};const u=new URLSearchParams(window.location.search).get("id");if(!u){l(!1);return}return y.entities.ShuttleBooking.get(u).then(m).catch(()=>{}).finally(()=>l(!1)),()=>{window.removeEventListener("languageChange",r),window.removeEventListener("storage",r)}},[]);const s=h[j]||h.en;if(f)return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gradient-to-b from-blue-50 to-white",children:e.jsx("div",{className:"w-12 h-12 border-4 border-blue-200 border-t-blue-600 rounded-full animate-spin"})});if(!a)return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gradient-to-b from-blue-50 to-white px-4",children:e.jsx(c,{className:"max-w-md w-full shadow-lg",children:e.jsxs(d,{className:"p-8 text-center",children:[e.jsx("p",{className:"text-gray-500 mb-4",children:s.notFound}),e.jsx(p,{onClick:()=>i(b("AirportShuttle")),className:"bg-blue-600 hover:bg-blue-700",children:s.backHome})]})})});const v=a.trip_direction==="to_airport"?s.toAirport:s.fromAirport;return e.jsx("div",{className:"min-h-screen bg-gradient-to-b from-blue-50 to-white py-8 px-4",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-6",children:[e.jsx("div",{className:"w-20 h-20 bg-green-100 rounded-full flex items-center justify-center mx-auto mb-4",children:e.jsx(T,{className:"w-12 h-12 text-green-600"})}),e.jsx("h1",{className:"text-3xl font-bold text-gray-900",children:s.received}),e.jsx("p",{className:"text-gray-500 mt-2",children:s.receivedDesc})]}),e.jsx(c,{className:"shadow-md mb-4",children:e.jsxs(d,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4 pb-4 border-b",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-gray-400",children:s.confNum}),e.jsx("p",{className:"font-bold text-lg text-blue-700",children:a.confirmation_number||((x=a.id)==null?void 0:x.slice(-8).toUpperCase())})]}),e.jsx(P,{className:"bg-yellow-100 text-yellow-700",children:a.status==="pending"?s.pending:a.status})]}),e.jsxs("div",{className:"mb-4 p-3 bg-blue-50 rounded-lg",children:[e.jsx("p",{className:"text-xs font-bold text-blue-600 uppercase tracking-wider mb-2",children:s.customer}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(t,{icon:S,label:s.name,value:a.customer_name}),e.jsx(t,{icon:C,label:s.email,value:a.customer_email}),e.jsx(t,{icon:B,label:s.phone,value:a.customer_phone})]})]}),e.jsxs("div",{className:"mb-4 p-3 bg-gray-50 rounded-lg",children:[e.jsx("p",{className:"text-xs font-bold text-gray-600 uppercase tracking-wider mb-2",children:s.tripDetails}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(t,{icon:A,label:s.direction,value:v}),e.jsx(t,{icon:F,label:s.date,value:a.trip_date}),e.jsx(t,{icon:L,label:s.time,value:a.trip_time}),e.jsx(t,{icon:R,label:s.passengers,value:String(a.passengers)}),e.jsx(t,{icon:U,label:s.bags,value:String(a.bags)}),a.pickup_location&&e.jsx(t,{icon:D,label:s.pickup,value:a.pickup_location})]})]}),a.special_requests&&e.jsxs("div",{className:"mb-4 p-3 bg-amber-50 rounded-lg",children:[e.jsx("p",{className:"text-xs font-bold text-amber-600 uppercase tracking-wider mb-2",children:s.specialRequests}),e.jsx("p",{className:"text-sm text-gray-700",children:a.special_requests})]}),e.jsxs("div",{className:"border-t pt-4",children:[e.jsx("p",{className:"text-xs font-bold text-gray-600 uppercase tracking-wider mb-3",children:s.costBreakdown}),e.jsxs("div",{className:"space-y-2 text-sm",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-gray-600",children:s.baseFare}),e.jsxs("span",{className:"font-semibold",children:["$",a.base_fare]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-600",children:s.bookingFee}),e.jsx("p",{className:"text-xs text-gray-400",children:s.bookingFeeNote})]}),e.jsxs("span",{className:"font-semibold",children:["$",a.booking_fee]})]}),a.luggage_fee>0&&e.jsxs("div",{className:"flex justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-600",children:s.luggageFee}),e.jsx("p",{className:"text-xs text-gray-400",children:s.luggageNote})]}),e.jsxs("span",{className:"font-semibold",children:["$",a.luggage_fee]})]}),e.jsxs("div",{className:"border-t pt-2 flex justify-between text-lg font-bold text-blue-700",children:[e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(q,{className:"w-5 h-5"})," ",s.grandTotal]}),e.jsxs("span",{children:["$",a.total_fare]})]})]}),e.jsx("p",{className:"text-xs text-gray-400 mt-2",children:s.depositNote})]})]})}),e.jsx(c,{className:"shadow-md mb-6 bg-blue-50 border-blue-200",children:e.jsxs(d,{className:"p-6",children:[e.jsx("h3",{className:"font-bold text-blue-800 mb-2",children:s.nextSteps}),e.jsxs("ol",{className:"space-y-2 text-sm text-gray-600",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"font-bold text-blue-600",children:"1."}),e.jsx("span",{children:s.step1})]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"font-bold text-blue-600",children:"2."}),e.jsx("span",{children:s.step2})]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"font-bold text-blue-600",children:"3."}),e.jsx("span",{children:s.step3})]})]})]})}),e.jsx("div",{className:"flex gap-3",children:e.jsxs(p,{onClick:()=>i(b("AirportShuttle")),className:"flex-1 bg-blue-600 hover:bg-blue-700",children:[e.jsx(_,{className:"w-4 h-4 mr-2"})," ",s.backHome]})}),e.jsx(E,{})]})})}function t({icon:i,label:n,value:a}){return e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(i,{className:"w-4 h-4 text-gray-400 flex-shrink-0"}),e.jsxs("span",{className:"text-sm text-gray-500 w-28",children:[n,":"]}),e.jsx("span",{className:"text-sm font-medium text-gray-900 flex-1",children:a})]})}export{O as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.