PageSourceSearch

https://drive4usyd.manus.space/assets/RecurringBookings-9YKijZed.js

js drive4usyd.manus.space collected 2026-10-03 05:03:12 UTC 24,203 bytes, 1 lines download raw bytes

1import{r as t,t as m,J as c,j as e,B as d,ak as fe,b as ke,c as ve,H as Re,M as Be,e as je,av as Ne,X as G,Y as W,Z as _,_ as H,$ as Y,L as ye,aw as J}from"./index-U8D282DB.js";import{I as f}from"./input-DFtjl8GZ.js";import{B as X}from"./badge-BmpMbrZ9.js";import{L as o}from"./label-BdqAIGhN.js";import{S as F,a as E,b as M,c as q,d as k}from"./select-DGSESBU1.js";import{T as Ae}from"./textarea-DE9S6YvS.js";import{A as Z}from"./AddressAutocomplete-CAjuWtLo.js";import{C as Se}from"./CustomerSelect-DnF9rKVy.js";import{R as Ce}from"./refresh-cw-ChEPvTuC.js";import{P as ee}from"./plus-DHOMwzdP.js";import{S as we}from"./search-C5_ObWCH.js";import{P as be,a as De}from"./play-emQWLaqn.js";import{P as Ie}from"./pencil-nUwvNNUo.js";import{C as Pe}from"./calendar-plus-Cxhnc07h.js";import"./useComposition-DGvQVl2f.js";import"./index-BdQq_4o_.js";import"./index-Dyyrzgm7.js";import"./check-fK4IDB-m.js";import"./chevron-up-B1n65gyY.js";const Le={daily:"Daily",weekly:"Weekly",fortnightly:"Fortnightly",monthly:"Monthly"},Te=[{value:"mon",label:"Mon"},{value:"tue",label:"Tue"},{value:"wed",label:"Wed"},{value:"thu",label:"Thu"},{value:"fri",label:"Fri"},{value:"sat",label:"Sat"},{value:"sun",label:"Sun"}],K={customerName:"",customerEmail:"",customerPhone:"",pickupAddress:"",pickupLat:"",pickupLng:"",dropoffAddress:"",dropoffLat:"",dropoffLng:"",vehicleId:"",driverId:"",frequency:"weekly",preferredTime:"08:00",preferredDays:[],price:"",tollAmount:"",parkingAmount:"",distanceKm:"",notes:"",startDate:new Date().toISOString().split("T")[0]};function es(){const[S,se]=t.useState(""),[ae,v]=t.useState(!1),[ie,N]=t.useState(!1),[O,C]=t.useState(null),[i,n]=t.useState({...K}),[re,z]=t.useState(!1),[l,p]=t.useState(null),x=t.useRef(""),h=t.useRef(""),R=t.useRef(!1),B=t.useRef(!1),{data:w=[],isLoading:ne,refetch:j}=m.recurringBookings.list.useQuery(),{data:y}=m.vehicles.listFull.useQuery({}),{data:b}=m.drivers.list.useQuery({}),$=m.maps.calculateDistance.useMutation(),D=m.recurringBookings.create.useMutation({onSuccess:()=>{c.success("Recurring booking created"),v(!1),n({...K}),p(null),j()},onError:s=>c.error(s.message)}),I=m.recurringBookings.update.useMutation({onSuccess:()=>{c.success("Recurring booking updated"),N(!1),C(null),j()},onError:s=>c.error(s.message)}),V=m.recurringBookings.toggleActive.useMutation({onSuccess:()=>{c.success("Updated"),j()},onError:s=>c.error(s.message)}),P=m.recurringBookings.generateNow.useMutation({onSuccess:s=>{c.success(`Booking #${s.bookingId} created successfully`),j()},onError:s=>c.error(s.message)}),L=t.useCallback(async(s,a)=>{if(!(!s||!a)){z(!0);try{const r=await $.mutateAsync({origin:s,destination:a});p({distanceKm:parseFloat(r.distanceKm)||0,durationMin:parseFloat(r.durationMin)||0,distanceText:r.distanceText,durationText:r.durationText}),n(g=>({...g,distanceKm:r.distanceKm.toString()})),c.success(`Distance: ${r.distanceText} · ${r.durationText}`)}catch(r){c.error(r.message||"Failed to calculate distance"),p(null)}z(!1)}},[$]),u=y?.find(s=>s.id.toString()===i.vehicleId);t.useEffect(()=>{if(l&&u){const s=parseFloat(u.basePrice),a=parseFloat(u.pricePerKm),r=parseFloat(u.pricePerMin),g=l.distanceKm,T=l.durationMin,me=parseFloat(u.minimumFare),pe=g<=60?a*g:a*60+1.1*(g-60),xe=Math.max(s+pe+r*T,me);n(he=>({...he,price:xe.toFixed(2)}))}},[l,u]);const te=s=>{n(a=>({...a,pickupAddress:s.address,pickupLat:s.lat?.toString()||"",pickupLng:s.lng?.toString()||""})),R.current=!0,x.current=s.address,p(null),B.current&&h.current&&L(s.address,h.current)},ce=s=>{n(a=>({...a,dropoffAddress:s.address,dropoffLat:s.lat?.toString()||"",dropoffLng:s.lng?.toString()||""})),B.current=!0,h.current=s.address,p(null),R.current&&x.current&&L(x.current,s.address)},Q=w.filter(s=>{if(!S)return!0;const a=S.toLowerCase();return s.customerName?.toLowerCase().includes(a)||s.pickupAddress?.toLowerCase().includes(a)||s.dropoffAddress?.toLowerCase().includes(a)}),oe=w.filter(s=>s.isActive).length,de=()=>{if(!i.customerName||!i.pickupAddress||!i.dropoffAddress){c.error("Customer name, pickup and dropoff addresses are required");return}const s=b?.find(r=>r.id.toString()===i.driverId),a=y?.find(r=>r.id.toString()===i.vehicleId);D.mutate({customerName:i.customerName,customerEmail:i.customerEmail||void 0,customerPhone:i.customerPhone||void 0,pickupAddress:i.pickupAddress,pickupLat:i.pickupLat||void 0,pickupLng:i.pickupLng||void 0,dropoffAddress:i.dropoffAddress,dropoffLat:i.dropoffLat||void 0,dropoffLng:i.dropoffLng||void 0,vehicleId:i.vehicleId?parseInt(i.vehicleId):void 0,vehicleName:a?.name||void 0,frequency:i.frequency,preferredTime:i.preferredTime,preferredDays:i.preferredDays.length>0?i.preferredDays.join(","):void 0,price:i.price||void 0,tollAmount:i.tollAmount||void 0,parkingAmount:i.parkingAmount||void 0,distanceKm:i.distanceKm||void 0,driverId:i.driverId?parseInt(i.driverId):void 0,driverName:s?.name||void 0,notes:i.notes||void 0,startDate:new Date(i.startDate).getTime()})},le=s=>{C(s.id),n({customerName:s.customerName||"",customerEmail:s.customerEmail||"",customerPhone:s.customerPhone||"",pickupAddress:s.pickupAddress||"",pickupLat:s.pickupLat||"",pickupLng:s.pickupLng||"",dropoffAddress:s.dropoffAddress||"",dropoffLat:s.dropoffLat||"",dropoffLng:s.dropoffLng||"",vehicleId:s.vehicleId?.toString()||"",driverId:s.driverId?.toString()||"",frequency:s.frequency||"weekly",preferredTime:s.preferredTime||"08:00",preferredDays:s.preferredDays?s.preferredDays.split(","):[],price:s.price||"",tollAmount:s.tollAmount&&Number(s.tollAmount)>
10?s.tollAmount:"",parkingAmount:s.parkingAmount&&Number(s.parkingAmount)>0?s.parkingAmount:"",distanceKm:s.distanceKm||"",notes:s.notes||"",startDate:s.startDate?new Date(s.startDate).toISOString().split("T")[0]:new Date().toISOString().split("T")[0]}),x.current=s.pickupAddress||"",h.current=s.dropoffAddress||"",R.current=!!s.pickupAddress,B.current=!!s.dropoffAddress,p(null),N(!0)},ge=()=>{if(!O)return;const s=b?.find(r=>r.id.toString()===i.driverId),a=y?.find(r=>r.id.toString()===i.vehicleId);I.mutate({id:O,frequency:i.frequency,preferredTime:i.preferredTime,preferredDays:i.preferredDays.length>0?i.preferredDays.join(","):void 0,price:i.price||void 0,tollAmount:i.tollAmount||"0",parkingAmount:i.parkingAmount||"0",driverId:i.driverId?parseInt(i.driverId):null,driverName:s?.name||null,vehicleId:i.vehicleId?parseInt(i.vehicleId):null,vehicleName:a?.name||null,notes:i.notes||null})},ue=s=>{if(!s.price){c.error("Set a price on this schedule before generating a booking");return}P.mutate({id:s.id})},A=()=>{n({...K}),p(null),x.current="",h.current="",R.current=!1,B.current=!1},U=s=>e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:315",className:"space-y-4",children:[!s&&e.jsx(Se,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:318",customerName:i.customerName,customerEmail:i.customerEmail,customerPhone:i.customerPhone,onCustomerChange:a=>n(r=>({...r,customerName:a.name,customerEmail:a.email,customerPhone:a.phone})),onTripSelect:a=>{n(r=>({...r,pickupAddress:a.pickup,dropoffAddress:a.dropoff})),x.current=a.pickup,h.current=a.dropoff,R.current=!0,B.current=!0,L(a.pickup,a.dropoff)},showPreviousTrips:!0}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:336",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:337",children:"Pickup Address *"}),e.jsx(Z,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:338",value:i.pickupAddress,onChange:a=>n(r=>({...r,pickupAddress:a})),onPlaceSelect:te,placeholder:"Start typing pickup address..."})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:345",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:346",children:"Drop-off Address *"}),e.jsx(Z,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:347",value:i.dropoffAddress,onChange:a=>n(r=>({...r,dropoffAddress:a})),onPlaceSelect:ce,placeholder:"Start typing drop-off address..."})]}),re&&e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:357",className:"flex items-center gap-2 text-sm text-muted-foreground p-2 rounded-lg bg-muted/50",children:[e.jsx(ye,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:358",className:"h-4 w-4 animate-spin"}),"Calculating distance and price..."]}),l&&e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:363",className:"flex items-center gap-2 text-sm p-2 rounded-lg bg-blue-50 text-blue-800 border border-blue-200",children:[e.jsx(J,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:364",className:"h-4 w-4"}),e.jsx("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:365",className:"font-medium",children:l.distanceText}),e.jsx("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:366",className:"text-blue-600",children:"·"}),e.jsx("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:367",children:l.durationText})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:372",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:373",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:374",children:"Vehicle"}),e.jsxs(F,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:375",value:i.vehicleId,onValueChange:a=>n(r=>({...r,vehicleId:a})),children:[e.jsx(E,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:376",children:e.jsx(M,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:376",placeholder:"Select vehicle"})}),e.jsx(q,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:377",children:y?.map(a=>e.jsx(k,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:379",value:a.id.toString(),children:a.name},a.id))})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:384",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:385",children:"Driver"}),e.jsxs(F,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:386",value:i.driverId,onValueChange:a=>n(r=>({...r,driverId:a})),children:[e.jsx(E,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:387",children:e.jsx(M,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:387",placeholder:"Optional"})}),e.jsx(q,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:388",children:b?.filter(a=>a.isActive).map(a=>e.jsx(k,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:390",value:a.id.toString(),children:a.name},a.id))})]})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:398",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:399",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:400",children:"Frequency *"}),e.jsxs(F,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:401",value:i.frequency,onValueChange:a=>n(r=>({...r,frequency:a})),children:[e.jsx(E,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:402",children:e.jsx(M,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:402"})}),e.jsxs(q,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:403",children:[e.jsx(k,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:404",value:"daily",children:"Daily"}),e.jsx(k,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:405",value:"weekly",children:"Weekly"}),e.jsx(k,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:406",value:"fortnightly",children:"Fortnightly"}),e.jsx(k,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:407",value:"monthly",children:"Monthly"})]})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:411",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:412",children:"Preferred Time *"}),e.jsx(f,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:413",type:"time",value:i.preferredTime,onChange:a=>n(r=>({...r,preferredTime:a.target.value}))})]})]}),(i.frequency==="weekly"||i.frequency==="fortnightly")&&e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:419",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:420",children:"Preferred Days"}),e.jsx("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:421",className:"flex flex-wrap gap-2 mt-1",children:Te.map(a=>{const r=i.preferredDays.includes(a.value);return e.jsx(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:425",type:"button",variant:r?"default":"outline",size:"sm",className:"h-8 px-3",onClick:()=>{n(g=>({...g,preferredDays:r?g.preferredDays.filter(T=>T!==a.value):[...g.preferredDays,a.value]}))},children:a.label},a.value)})})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:449",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:450",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:451",className:"flex items-center justify-between mb-1",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:452",children:"Price per trip ($)"}),l&&u&&e.jsxs("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:454",className:"text-xs text-green-600 font-medium flex items-center gap-1",children:[e.jsx(J,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:455",className:"h-3 w-3"})," Auto"]})]}),e.jsx(f,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:459",type:"number",step:"0.01",value:i.price,onChange:a=>n(r=>({...r,price:a.target.value})),className:l&&u?"border-green-300 bg-green-50/50":""})]}),!s&&e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:468",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:469",children:"Start Date *"}),e.jsx(f,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:470",type:"date",value:i.startDate,onChange:a=>n(r=>({...r,startDate:a.target.value}))})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:474",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:475",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:476",children:"Tolls within trip price ($)"}),e.jsx(f,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:477",type:"number",min:"0",step:"0.01",value:i.tollAmount,onChange:a=>n(r=>({...r,tollAmount:a.target.value})),placeholder:"0.00"})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:479",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:480",children:"Parking within trip price ($)"}),e.jsx(f,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:481",type:"number",min:"0",step:"0.01",value:i.parkingAmount,onChange:a=>n(r=>({...r,parkingAmount:a.target.value})),placeholder:"0.00"})]})]}),e.jsx("p",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:484",className:"text-xs text-muted-foreground",children:"Enter only amounts already included in the price per trip. They are excluded from internal-driver commission; affiliate payouts remain based on the full trip price."}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:487",children:[e.jsx(o,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:488",children:"Notes"}),e.jsx(Ae,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:489",value:i.notes,onChange:a=>n(r=>({...r,notes:a.target.value})),rows:2})]})]});return e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:495",className:"space-y-6",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:496",className:"flex items-center justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:497",children:[e.jsx("h1",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:498",className:"text-2xl font-bold",children:"Recurring Bookings"}),e.jsxs("p",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:499",className:"text-sm text-muted-foreground",children:[oe," active of ",w.length," total schedules"]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:503",className:"flex gap-2",children:[e.jsxs(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:504",variant:"outline",size:"sm",onClick:()=>j(),children:[e.jsx(Ce,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:505",className:"h-4 w-4 mr-2"}),"Refresh"]}),e.jsxs(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:507",size:"sm",onClick:()=>{A(),v(!0)},children:[e.jsx(ee,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:508",className:"h-4 w-4 mr-2"}),"New Schedule"]})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:514",className:"relative max-w-md",children:[e.jsx(we,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:515",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(f,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:516",placeholder:"Search by customer or address...",value:S,onChange:s=>se(s.target.value),className:"pl-9"})]}),ne?e.jsx("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:526",className:"text-center py-12 text-muted-foreground",children:"Loading..."}):Q.length===0?e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:528",className:"text-center py-12",children:[e.jsx(fe,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:529",className:"h-10 w-10 mx-auto mb-3 opacity-30"}),e.jsx("p",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:530",className:"text-muted-foreground",children:"No recurring bookings yet"}),e.jsxs(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:531",size:"sm",className:"mt-3",onClick:()=>{A(),v(!0)},children:[e.jsx(ee,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:532",className:"h-4 w-4 mr-2"}),"Create First Schedule"]})]}):e.jsx("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:536",className:"grid gap-4",children:Q.map(s=>e.jsx(ke,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:538",className:s.isActive?"":"opacity-60",children:e.jsx(ve,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:539",className:"p-4",children:e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:540",className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:541",className:"flex-1 space-y-2",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:542",className:"flex items-center gap-2 flex-wrap",children:[e.jsx(Re,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:543",className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:544",className:"font-semibold",children:s.customerName}),e.jsx(X,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:545",variant:s.isActive?"default":"secondary",children:s.isActive?"Active":"Paused"}),e.jsx(X,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:548",variant:"outline",className:"capitalize",children:Le[s.frequency]||s.frequency}),s.preferredDays&&e.jsxs("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:552",className:"text-xs text-muted-foreground",children:["(",s.preferredDays.split(",").map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(", "),")"]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:557",className:"flex items-start gap-2 text-sm text-muted-foreground",children:[e.jsx(Be,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:558",className:"h-4 w-4 mt-0.5 shrink-0"}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:559",children:[e.jsx("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:560",children:s.pickupAddress}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:561",className:"text-xs",children:["→ ",s.dropoffAddress]})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:564",className:"flex items-center gap-4 text-sm text-muted-foreground flex-wrap",children:[e.jsxs("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:565",className:"flex items-center gap-1",children:[e.jsx(je,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:566",className:"h-3.5 w-3.5"}),s.preferredTime]}),s.price&&e.jsxs("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:569",className:"font-medium text-foreground",children:["$",parseFloat(s.price).toFixed(2)]}),s.vehicleName&&e.jsxs("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:571",className:"flex items-center gap-1",children:[e.jsx(Ne,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:572",className:"h-3.5 w-3.5"}),s.vehicleName]}),s.driverName&&e.jsxs("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:576",children:["Driver: ",s.driverName]}),e.jsxs("span",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:577",children:["Generated: ",s.totalGenerated," bookings"]})]}),s.notes&&e.jsx("p",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:579",className:"text-xs text-muted-foreground italic",children:s.notes})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:581",className:"flex flex-col gap-2",children:[e.jsx(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:582",variant:"outline",size:"sm",onClick:()=>V.mutate({id:s.id,isActive:!s.isActive}),disabled:V.isPending,children:s.isActive?e.jsxs(e.Fragment,{children:[e.jsx(be,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:589",className:"h-4 w-4 mr-1"}),"Pause"]}):e.jsxs(e.Fragment,{children:[e.jsx(De,{"data-loc":"client/src/pages/admin/Recurring
1Bookings.tsx:591",className:"h-4 w-4 mr-1"}),"Resume"]})}),e.jsxs(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:594",variant:"outline",size:"sm",onClick:()=>le(s),children:[e.jsx(Ie,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:599",className:"h-4 w-4 mr-1"}),"Edit"]}),e.jsxs(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:601",size:"sm",onClick:()=>ue(s),disabled:P.isPending,children:[e.jsx(Pe,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:606",className:"h-4 w-4 mr-1"}),P.isPending?"Creating...":"Book Now"]})]})]})})},s.id))}),e.jsx(G,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:618",open:ae,onOpenChange:s=>{v(s),s||A()},children:e.jsxs(W,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:619",className:"max-w-lg max-h-[85vh] overflow-y-auto",children:[e.jsx(_,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:620",children:e.jsx(H,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:621",children:"New Recurring Booking"})}),U(!1),e.jsxs(Y,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:624",children:[e.jsx(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:625",variant:"outline",onClick:()=>v(!1),children:"Cancel"}),e.jsx(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:626",onClick:de,disabled:!i.customerName||!i.pickupAddress||!i.dropoffAddress||D.isPending,children:D.isPending?"Creating...":"Create Schedule"})]})]})}),e.jsx(G,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:637",open:ie,onOpenChange:s=>{N(s),s||(C(null),A())},children:e.jsxs(W,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:638",className:"max-w-lg max-h-[85vh] overflow-y-auto",children:[e.jsx(_,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:639",children:e.jsx(H,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:640",children:"Edit Recurring Booking"})}),U(!0),e.jsxs(Y,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:643",children:[e.jsx(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:644",variant:"outline",onClick:()=>N(!1),children:"Cancel"}),e.jsx(d,{"data-loc":"client/src/pages/admin/RecurringBookings.tsx:645",onClick:ge,disabled:I.isPending,children:I.isPending?"Saving...":"Save Changes"})]})]})})]})}export{es 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.