1import{j as e}from"./vendor-ui-bBKa4F0g.js";import{r as a,b as s}from"./vendor-react-QZUJtFrX.js";import{z as t,l as i,u as r,r as n,w as o,aH as l,aq as c,B as d,I as u,P as m,Q as g,R as p,S as h,T as v,i as x,J as y}from"./index-DSVLQ4g3.js";import{T as f,a as b,b as _,c as C}from"./tabs-BbytAiZ2.js";import{e as j,L as w}from"./vendor-routing-vFluiU99.js";import{u as N}from"./useCardSelection-BS7kTDR_.js";import{C as k,t as S,T as A,a8 as U,p as E,Y as L,I as P,ag as D,ah as $,s as R,l as I,ai as T,i as F,aj as O,ae as M,L as q,ak as B,R as W,al as G,h as z}from"./icons-CbDJuqNf.js";import{S as H}from"./scroll-area-DL-m38LC.js";import{p as Y,u as V}from"./markdownParser-DjCUPIGz.js";import{F as K}from"./FlatDecisionCaptureCard-syA1nP11.js";import{u as Z}from"./useClaimsOperations-BKna1MDv.js";import{m as J}from"./errorMessageMapper-BmGKfCIO.js";import{u as Q}from"./useInsurancePolicies-DOaq4KYk.js";import"./vendor-query-D2hXflhZ.js";import"./vendor-utils-CYc-j-3w.js";const X=({className:a="","aria-label":s})=>e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 55.48 48.24",className:a,"aria-hidden":!s,"aria-label":s,children:e.jsxs("g",{children:[e.jsx("path",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"4",d:"M27.74,1.5L53.98,43.5a2,2,0,0,1-1.73,3H3.23a2,2,0,0,1-1.73-3L27.74,1.5Z"}),e.jsx("line",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"4",x1:"27.74",y1:"18.5",x2:"27.74",y2:"30.5"}),e.jsx("circle",{fill:"currentColor",cx:"27.74",cy:"38.5",r:"2"})]})}),ee=(e,a,s)=>e.map(e=>{let t=e.daily_cost,i=e.total_deductible;if("18-24"===a&&(t*=1.15),s){const e=ae(s);1!==e&&(t*=e,i*=e)}return{...e,daily_cost:Math.round(100*t)/100,total_deductible:Math.round(100*i)/100,original_daily_cost:e.daily_cost,demographic_adjustments:{young_driver_surcharge:"18-24"===a?.15:0,vehicle_class_multiplier:s?ae(s):1}}}),ae=e=>({Economy:.95,Compact:1,"Mid-size":1,"Full-size":1.05,Premium:1.15,Luxury:1.25,SUV:1.1,Van:1.08}[e]||1),se=[],te=({formData:e,hasRequiredData:s,selectedCard:r,savedCards:n})=>{const{packages:o=se,addons:l=se,loading:c,error:d}=(({providerId:e,country:s,driverAge:r,vehicleClass:n,enabled:o=!0})=>{const[l,c]=a.useState([]),[d,u]=a.useState([]),[m,g]=a.useState(!1),[p,h]=a.useState(null);return a.useEffect(()=>{if(!o||!s||!e)return c([]),u([]),void g(!1);(async()=>{g(!0),h(null);try{const{data:a,error:o}=await t.from("rental_insurance_packages").select("*").eq("provider_id",e).eq("country",s).order("package_tier",{ascending:!0});if(o)throw o;const{data:l,error:d}=await t.from("rental_insurance_addons").select("*").eq("provider_id",e).eq("country",s).order("addon_name",{ascending:!0});d&&i.warn("Failed to fetch addons:",d);const m=ee(a||[],r,n);c(m),u(l||[])}catch(a){h(a instanceof Error?a.message:"Failed to fetch packages and addons"),c([]),u([])}finally{g(!1)}})()},[e,s,r,n,o]),{packages:l,addons:d,loading:m,error:p}})({providerId:e.provider_id,country:e.country,driverAge:e.driver_age,vehicleClass:e.vehicle_class,enabled:s&&!!e.country}),u=a.useMemo(()=>({...e,selectedCard:r,savedCards:n,availableAddons:l}),[e,r,n,l]);return i.log("ð¯ Clean Data Orchestration:",{packagesCount:o.length,addonsCount:l.length,hasSelectedCard:!!r,packagesLoading:c}),{packages:o,addons:l,packagesLoading:c,loading:c,packagesError:d,error:d,enhancedFormData:u}},ie=[],re=()=>{const{user:e}=r(),{formData:s,hasRequiredData:t}=(()=>{const[e]=j(),s=a.useMemo(()=>({country:e.get("country")||"",provider:e.get("provider")||"",provider_id:e.get("provider_id")||"",pickup_date:e.get("pickup_date")||"",return_date:e.get("return_date")||"",vehicle_class:e.get("vehicle_class")||"",custom_provider_name:e.get("custom_provider_name")||"",currency:e.get("currency")||"EUR",rental_duration:parseInt(e.get("rental_duration")||"1"),healthcare_coverage:e.get("healthcare_coverage")||"",residency_status:e.get("residency_status")||"",region:e.get("region")||"",driver_age:e.get("driver_age")||"",cdw_cost:Number(e.get("cdw_cost"))||25,standard_deductible:Number(e.get("standard_deductible"))||1e3,daily_rate:Number(e.get("daily_rate"))||50}),[e]);return{formData:s,hasRequiredData:!!(s.country&&s.rental_duration>0&&(s.provider||s.provider_id||s.custom_provider_name))}})(),{savedCards:o=ie,isLoading:l,error:c}=n(),{selectedCard:d,selectCard:u}=N(o),{packages:m,addons:g,packagesLoading:p,packagesError:h}=te({formData:s,hasRequiredData:t,selectedCard:d,savedCards:o}),v=a.useCallback(()=>{localStorage.removeItem("selectedCard"),window.location.reload()},[]);return i.log("ð useCarRentalData consolidated state:",{hasRequiredData:t,formData:{country:s.country,provider:s.provider,provider_id:s.provider_id,rental_duration:s.rental_duration,healthcare_coverage:s.healthcare_coverage,residency_status:s.residency_status},savedCardsCount:o.length,selectedCard:null==d?void 0:d.card_name,packagesCount:m.length,addonsCount:g.length,currentURL:window.location.href}),{formData:s,hasRequiredData:t,savedCards:o,selectedCard:d,cardsLoading:l,cardsError:c||null,packages:m,addons:g,packagesLoading:p,packagesError:h,selectCard:u,refreshData:v}},ne=({children:a,maxWidth:s="6xl",className:t=""})=>e.jsx("div",{className:`min-h-screen bg-norte-bg-main ${t}`,children:e.jsx("main",{className:"container mx-auto px-3 md:px-6 py-6 md:py-8",children:e.jsx("div",{className:`${{"4xl":"max-w-4xl","6xl":"max-w-6xl","7xl":"max-w-7xl"}[s]} mx-auto`,children:a})})}),oe=()=>e.jsx(o,{children:e.jsx(l,{className:"p-8",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"animate-spin w-8 h-8 border-4 border-norte-accent border-t-transparent roun
1ded-full mx-auto mb-4"}),e.jsx("p",{className:"text-body-text",children:"Loading provider data..."})]})})}),le=e=>{const a=e.toLowerCase();if(["us","united states"].includes(a))return"US";if(["eu","europe","european union"].includes(a))return"Europe";if(["uk","united kingdom"].includes(a))return"Europe";return["united states","usa"].includes(a)?"US":["germany","france","italy","spain","netherlands","belgium","austria","switzerland","portugal","ireland","denmark","sweden","norway","finland","poland","czech republic","hungary","slovakia","slovenia","croatia","romania","bulgaria","estonia","latvia","lithuania","luxembourg","malta","cyprus","greece","united kingdom"].includes(a)?"Europe":"Other"},ce=e=>({US:{cdwNote:"Most US auto insurance extends to rental cars, but check your policy.",liabilityNote:"US auto insurance typically includes liability coverage that extends to rentals.",liabilityCost:15,liabilityRisk:"High liability limits recommended due to US lawsuit environment",liabilityEducation:"US courts can award large damages - ensure adequate liability coverage",minorAccidentCost:800,majorAccidentCost:3e4,minorAccidentNote:"repair costs vary significantly by US state",majorAccidentNote:"replacement costs are high due to US vehicle prices",requirement:"Verify your US auto insurance coverage extends to rentals",educationalTip:"Contact your US auto insurer to confirm rental car coverage details",region:"US",mandatoryCoverage:{liability:!0,cdw:!1,theft:!1,explanation:"Liability insurance is typically required by law in the US"}},Europe:{cdwNote:"European insurance may have different coverage abroad - verify cross-border protection.",liabilityNote:"European insurance liability limits may be lower than needed in some countries.",liabilityCost:12,liabilityRisk:"Moderate liability risk but verify coverage across European borders",liabilityEducation:"European insurance may not cover all EU countries - check your policy",minorAccidentCost:600,majorAccidentCost:2e4,minorAccidentNote:"generally lower repair costs than US",majorAccidentNote:"replacement costs vary by European country",requirement:"Confirm your European insurance covers cross-border rentals",educationalTip:"European policies may have geographical restrictions",region:"Europe",mandatoryCoverage:{liability:!0,cdw:!0,theft:!0,explanation:"EU regulations often require liability, CDW, and theft protection to be included by law"}}}[e]||{cdwNote:"Check how your local insurance applies to international rentals.",liabilityNote:"Verify liability coverage for international rentals.",liabilityCost:15,liabilityRisk:"Unknown liability risk - research local requirements",minorAccidentCost:700,majorAccidentCost:25e3,minorAccidentNote:"costs vary by location",majorAccidentNote:"replacement costs vary by country",requirement:"Research local rental insurance requirements",educationalTip:"International rentals may have different coverage needs",region:e,mandatoryCoverage:{liability:!1,cdw:!1,theft:!1,explanation:"Check local legal requirements for rental car coverage"}}),de=e=>{const a=le(e),s=ce(a);return"Europe"===a||"EU"===a?{region:"EU",isReplacement:!0,mandatoryCoverage:s.mandatoryCoverage.liability?["liability","cdw"]:["cdw"],commonGaps:["tire_damage","windshield_damage","interior_damage"],recommendedApproach:"package_focused"}:"US"===a?{region:"US",isReplacement:!1,mandatoryCoverage:["liability"],commonGaps:["cdw_deductible","liability_limits","medical_coverage"],recommendedApproach:"addon_focused"}:{region:"Other",isReplacement:!0,mandatoryCoverage:[],commonGaps:["unknown_coverage_gaps"],recommendedApproach:"mixed"}},ue=(e,a,s,t,i,r)=>{var n;const o=de(i),l=(null==(n=e.addon_name)?void 0:n.toLowerCase())||"";if(l.includes("personal accident")||l.includes("medical")){if("EU"===o.region&&a)return{isRedundant:!0,reason:"You have EHIC which covers medical emergencies in EU countries"};if(s||t)return{isRedundant:!0,reason:"Your credit card already includes personal accident/medical coverage"}}return(l.includes("roadside")||l.includes("assistance"))&&r?{isRedundant:!0,reason:"Your credit card already includes roadside assistance coverage"}:l.includes("glass")||l.includes("tyre")||l.includes("tire")?{isRedundant:!1,reason:"Credit cards typically exclude tire and windshield damage"}:{isRedundant:!1}},me=(e,a)=>e.daily_cost*a,ge=e=>{if(!e)return{hasCard:!1,hasRentalCoverage:!1,hasLimitedBenefits:!1,hasTravelBenefitsOnly:!1,coverageType:"none",displayMessage:"No credit card selected"};const a=e.rental_car_coverage||!1,s=e.trip_cancellation||e.trip_interruption||e.emergency_medical||e.travel_accident_insurance||e.medical_evacuation||e.lost_luggage||e.baggage_delay||e.trip_delay,t=e.purchase_protection||e.extended_warranty||e.price_protection||e.cell_phone_protection||e.identity_theft_protection;return a&&(s||t)?{hasCard:!0,hasRentalCoverage:!0,hasLimitedBenefits:!1,hasTravelBenefitsOnly:!1,coverageType:"comprehensive",displayMessage:`${e.card_name} provides rental car coverage plus additional benefits`}:!a||s||t?!a&&s?{hasCard:!0,hasRentalCoverage:!1,hasLimitedBenefits:!0,hasTravelBenefitsOnly:!0,coverageType:"travel_only",displayMessage:`${e.card_name} provides travel benefits but no rental car coverage`}:!a&&t?{hasCard:!0,hasRentalCoverage:!1,hasLimitedBenefits:!0,hasTravelBenefitsOnly:!1,coverageType:"limited",displayMessage:`${e.card_name} provides limited benefits but no rental car coverage`}:{hasCard:!0,hasRentalCoverage:!1,hasLimitedBenefits:!1,hasTravelBenefitsOnly:!1,coverageType:"none",displayMessage:`${e.card_name} does not provide rental car coverage`}:{hasCard:!0,hasRentalCoverage:!0,hasLimitedBenefits:!0,hasTravelBenefitsOnly:!1,coverageType:"rental_only",displayMessage:`${e.card_name} provides rental car coverage only`}},pe=(e,a,s,t,r)=>{var n,o,l,c;i.log("ð¯ Enhanced Decision Engine: Starting analysis",{packagesCount:e.length,addonsCount:a.length,country:s,rentalDuration:t,hasSelectedCard:!!(null==r?void 0:r.selectedCard)});const d=de(s),u="ehic"===(null==r?void 0:r.healthcare_coverage)||"eu_resident"===(null==r?void 0:r.residency_status),m=(null==(n=null==r?void 0:r.selectedCard)?void 0:n.emergency_medical)||!1,g=(null==(o=null==r?void 0:r.selectedCard)?void 0:o.personal_accident_insurance)||!1,p=(null==(l=null==r?void 0:r.selectedCard)?void 0:l.roadside_assistance)||!1,h=((e,a)=>{var s,t;const r=de(a),n=ge(null==e?void 0:e.selectedCard),o="ehic"===(null==e?void 0:e.healthcare_coverage)||"eu_resident"===(null==e?void 0:e.residency_status),l="eu_resident"===(null==e?void 0:e.residency_status)||o,c="yes"===(null==e?void 0:e.personal_auto_insurance);i.log("ð Precision Gap Analysis:",{country:a,region:r.region,hasCard:n.hasCard,hasRentalCoverage:n.hasRentalCoverage,isEuropeResident:l,hasPersonalAutoInsurance:c,hasEHIC:o});let d=[],u="",m="";return n.hasCard?n.hasRentalCoverage?"US"===r.region&&l&&!c?(d=["Liability coverage (critical gap)","Credit card secondary coverage only","Tire and windshield damage"],u="CRITICAL: Credit card covers collision but no US liability insurance. Most US states require liability coverage.",m="Credit card for collision only - NO LIABILITY COVERAGE"):"US"===r.region&&c?(d=["Liability limits may be insufficient","Tire and windshield damage"],u="Personal insurance + credit card works well. Risk: State liability minimums often inadequate ($25K-50K typical, accidents can exceed $100K+).",m="File through personal auto insurance first, then credit card for remaining collision damage"):"US"===r.region?(d=["Liability coverage (required in most US states)","Tire and windshield damage"],u="Credit card covers collision/theft but NO LIABILITY. Legally required in most US states.",m="Credit card for collision claims only - no liability protection"):"EU"===r.region?(d=["Tire and windshield damage"],u="Credit card covers collision/theft with no deductible. Tire/windshield damage always excluded. EU law requires comprehensive liability coverage in base rental rates.",m="Pay upfront, file claims through credit card after rental - decline CDW at counter"):(d=["Tire and windshield damage","Coverage limits may vary"],u="Credit card coverage quality varies by issuer and country. Common gaps include tire/windshield damage.",m="File claims through credit card after rental - verify coverage details before travel"):(n.hasTravelBenefitsOnly?(d=["No rental collision coverage","Travel benefits only","Tire and windshield damage"],u="Card has travel benefits but no rental collision coverage. Responsible for all vehicle damage.",m="Limited to personal insurance (if any) - no credit card rental coverage"):(d=["No rental collision coverage","Tire and windshield damage"],u="Credit card lacks rental coverage. Responsible for vehicle damages and potential liability.",m="No credit card coverage - rely on personal insurance or pay out of pocket"),"US"===r.region&&d.unshift("Liability coverage")):(d=["No credit card coverage"],u="No coverage - responsible for all damages, liability, and medical costs.",m="Pay out of pocket for all damages and liability"),"US"!==r.region||o||(null==(s=null==e?void 0:e.selectedCard)?void 0:s.emergency_medical)||(null==(t=null==e?void 0:e.selectedCard)?void 0:t.rental_car_medical_coverage)||(d.push("Emergency medical coverage"),u+=" MEDICAL RISK: No emergency medical coverage - US medical costs can exceed $100K."),{keepCurrentGaps:d,keepCurrentRisk:u,keepCurrentClaimsProcess:m}})(r,s),v=((e,a=!1,s=500)=>{const t=de(e);return"EU"===t.region?{title:"Smart Package Recommendation",description:"Complete coverage package that REPLACES your credit card coverage entirely",regionalContext:"EU rental packages provide immediate resolution with the rental company instead of filing claims through your credit card later",riskExplanation:`Package cost vs potential â¬${s} credit card deductible + tire/windshield exclusions`,claimsProcess:"Direct resolution with rental company - no credit card claims needed"}:"US"===t.region?{title:"Smart Package Recommendation",description:"Comprehensive coverage that can COMPLEMENT your existing credit card coverage",regionalContext:"US rental packages can work alongside your credit card or replace it entirely - you choose the approach",riskExplanation:"Evaluate package cost vs your credit card coverage quality and gaps",claimsProcess:"Can use rental company OR credit card claims process depending on package selection"}:{title:"Smart Package Recommendation",description:"Comprehensive coverage package - check if it replaces or complements your credit card",regionalContext:"Coverage approach varies by country - verify how packages interact with your existing coverage",riskExplanation:"Compare package benefits vs your current coverage deductibles and limitations",claimsProcess:"Claims process varies by country and package type"}})(s,u,(null==(c=null==r?void 0:r.selectedCard)?void 0:c.deductible)||500);let x,y,f=0;"US"===d.region?(x=((e,a)=>{const s=(e=>{if(0===e.length)return!1;const a=["ldw","sli","pap","collision damage waiver","supplemental liability","personal accident"];return e.filter(e=>{var s;const t=(null==(s=e.package_name)?void 0:s.toLowerCase())||"";return a.some(e=>t.includes(e))}).length>=.7*e.length})(e);if(s){const s=e.find(e=>{var a,s;return(null==(a=e.package_name)?void 0:a.toLowerCase().includes("ldw"))||(null==(s=e.package_name)?void 0:s.toLowerCase().includes("collision"))||e.includes_cdw}),t=e.find(e=>{var a,s;return(null==(a=e.package_name)?void 0:a.toLowerCase().includes("sli"))||(null==(s=e.package_name)?void 0:s.toLowerCase().includes("liability"))||e.includes_liability_coverage}),i=e.find(e=>{var a,s;return(null==(a=e.package_name)?void 0:a.toLowerCase().includes("pap"))||(null==(s=e.package_name)?void 0:s.toLowerCase().includes("personal accident"))||e.includes_personal_accident});if(s&&t){me(s,a),me(t,a);const e={id:"us-standard-stack",package_name:"Standard Protection Stack",daily_cost:s.daily_cost+t.daily_cost,includes_cdw:!0,includes_liability_coverage:!0,includes_theft_protection:!0,includes_personal_accident:!1,includes_personal_effects:!1,includes_medical_coverage:!1,includes_roadside_assistance:!1,includes_loss_of_use:!1,package_tier:1,provider_id:s.provider_id||"",country:s.country||"",total_deductible:0,currency:"USD",is_popular:!1,created_at:(new Date).toISOString(),updated_at:(new Date).toISOString()};let r;return i&&(r={package:i,additionalCost:me(i,a),additionalBenefits:["Personal Accident Protection","Medical Coverage"]}),{analyzed:e,upgradeOption:r,isProtectionStack:!0}}}const t=e.sort((e,a)=>e.package_tier-a.package_tier),i=t.find(e=>1===e.package_tier||!e.includes_personal_accident&&e.includes_cdw)||t[0],r=t.find(e=>e.package_tier>1&&e.includes_personal_accident&&e.includes_cdw&&e.includes_liability_coverage);let n;if(i&&r&&i.id!==r.id){const e=((e,a,s)=>(a.daily_cost-e.daily_cost)*s)(i,r,a),s=[];if(r.includes_personal_accident&&!i.includes_personal_accident){const e=r.medical_limit||"$50,000";s.push(`Personal Accident Insurance (${e})`)}if(r.includes_liability_coverage&&!i.includes_liability_coverage){const e=r.liability_limit||"$1,000,000";s.push(`Supplemental Liability (${e})`)}if(r.includes_personal_effects&&!i.includes_personal_effects){const e=r.personal_effects_limit||"$2,500";s.push(`Personal Effects (${e})`)}r.includes_roadside_assistance&&!i.includes_roadside_assistance&&s.push("24/7 Roadside Assistance"),s.length>0&&(n={package:r,additionalCost:e,additionalBenefits:s})}return{analyzed:i,upgradeOption:n,isProtectionStack:!1}})(e,t),f=x.analyzed?me(x.analyzed,t):0,x.isProtectionStack&&(y=((e,a)=>{const s=e.find(e=>{var a,s;return(null==(a=e.package_name)?void 0:a.toLowerCase().includes("ldw"))||(null==(s=e.package_name)?void 0:s.toLowerCase().includes("collision"))||e.includes_cdw}),t=e.find(e=>{var a,s;return(null==(a=e.package_name)?void 0:a.toLowerCase().includes("sli"))||(null==(s=e.package_name)?void 0:s.toLowerCase().includes("liability"))||e.includes_liability_coverage}),i=e.find(e=>{var a,s;return(null==(a=e.package_name)?void 0:a.toLowerCase().includes("pap"))||(null==(s=e.package_name)?void 0:s.toLowerCase().includes("personal accident"))||e.includes_personal_accident});if(!s||!t)return null;const r=(s.daily_cost+t.daily_cost)*a,n={standardStack:{cost:r,components:[s.package_name||"LDW",t.package_name||"SLI"]}};if(i){const e=r+i.daily_cost*a,o=i.daily_cost*a;n.premiumStack={cost:e,components:[s.package_name||"LDW",t.package_name||"SLI",i.package_name||"PAP"],upgradeAmount:o}}return n})(e,t))):(x=(e=>({analyzed:e.find(e=>e.is_popular)||e[0]||null,upgradeOption:void 0,isProtectionStack:!1}))(e),f=x.analyzed?me(x.analyzed,t):0);const b=((e,a,s=!1,t=!1)=>{const i=de(e),r=a.some(e=>{var a,s,t;return(null==(a=e.addon_name)?void 0:a.toLowerCase().includes("glass"))||(null==(s=e.addon_name)?void 0:s.toLowerCase().includes("tyre"))||(null==(t=e.addon_name)?void 0:t.toLowerCase().includes("tire"))}),n=a.some(e=>{var a,s;return(null==(a=e.addon_name)?void 0:a.toLowerCase().includes("personal accident"))||(null==(s=e.addon_name)?void 0:s.toLowerCase().includes("medical"))});if("EU"===i.region){let e="",a="";return e=r?"Glass & Tyre protection fills a real gap - credit cards typically exclude tire and windshield damage":"Limited gap-filling add-ons available - most EU add-ons duplicate existing coverage",n&&(s||t)&&(a=s?"Personal Accident coverage may be redundant - you have EHIC for EU medical coverage":"Personal Accident coverage may be redundant - your credit card includes medical coverage"),{title:"Targeted Add-ons",de
1scription:"Fill specific coverage gaps with targeted add-ons",regionalLogic:"EU add-ons focus on specific gaps like tire/windshield damage rather than broad coverage",gapAnalysis:e,redundancyWarning:a}}return"US"===i.region?{title:"Individual Add-ons",description:"Select specific coverage types to complement your credit card",regionalLogic:"US system allows mixing individual add-ons with credit card coverage effectively",gapAnalysis:"Add-ons can target specific gaps: CDW for deductible reduction, SLP for liability limits, PAI for medical coverage",redundancyWarning:t?"Personal Accident may be redundant with your credit card's medical coverage":void 0}:{title:"Available Add-ons",description:"Review available add-on options for your destination",regionalLogic:"Add-on effectiveness varies by country - evaluate each option carefully",gapAnalysis:`${a.length} add-ons available - check for real coverage gaps vs redundancy`,redundancyWarning:"Verify add-ons don't duplicate your existing credit card or insurance coverage"}})(s,a,u,m);let _,C=[];if("EU"===d.region){if(C=[...a.filter(e=>{var a;const s=(null==(a=e.addon_name)?void 0:a.toLowerCase())||"";return s.includes("glass")||s.includes("tyre")||s.includes("tire")})],!u&&!m){const e=a.filter(e=>{var a;const s=(null==(a=e.addon_name)?void 0:a.toLowerCase())||"";return s.includes("personal accident")||s.includes("medical")});C=[...C,...e.slice(0,1)]}0===C.length&&(_="Strategic add-ons (tire/glass protection) not available - consider full package for comprehensive coverage including tire/windshield protection")}else if("US"===d.region){C=a.filter(e=>!ue(e,u,m,g,s,p).isRedundant).slice(0,2),0===C.length&&(_="US providers typically offer protection stacks (LDW+SLI+PAI bundles) rather than individual add-ons. See insurance package option above.")}else C=a.filter(e=>!ue(e,u,m,g,s,p).isRedundant).slice(0,2);const j=((e,a,s)=>{if(!e||0===e.length)return 0;let t=0;return e.forEach(e=>{var i,r;const n=e.daily_cost*a;"EU"===s.region&&(null==(i=e.addon_name)?void 0:i.toLowerCase().includes("glass"))||"US"===s.region&&(null==(r=e.addon_name)||r.toLowerCase().includes("liability")),t+=n}),t})(C,t,d),w={keepCurrentCoverage:{cost:0,gaps:h.keepCurrentGaps,riskExplanation:h.keepCurrentRisk,claimsProcess:h.keepCurrentClaimsProcess},smartPackage:{cost:f,package:x.analyzed,guidance:v,replacesCreditCard:d.isReplacement,upgradeOption:x.upgradeOption},targetedAddons:{cost:j,recommendedAddons:C,guidance:b,availabilityNote:_},usProtectionStacks:y};return i.log("â
Enhanced Decision Options Generated:",{keepCurrentGapsCount:w.keepCurrentCoverage.gaps.length,smartPackageCost:w.smartPackage.cost,hasSmartPackage:!!w.smartPackage.package,targetedAddonsCost:w.targetedAddons.cost,recommendedAddonsCount:w.targetedAddons.recommendedAddons.length,hasUSProtectionStacks:!!w.usProtectionStacks,region:d.region}),w},he=({selectedCard:a,formData:s,isEU:t,rentalDuration:i})=>{const r=ge(a),n=(()=>{if(!a)return[];const e=[];if(a.rental_car_coverage){const s=a.rental_car_coverage_amount||"Coverage provided",t=a.rental_car_coverage_type||"Secondary";e.push(`Collision/theft: ${s} (${t.toLowerCase()})`)}if(a.rental_car_personal_property_coverage){const s=a.rental_car_personal_property_amount||"Coverage provided";e.push(`Personal property: ${s}`)}if(a.rental_car_medical_coverage){const s=a.rental_car_medical_amount||"Coverage provided";e.push(`Rental medical: ${s}`)}if(a.rental_car_loss_of_use&&e.push("Loss of use coverage"),a.rental_car_towing&&e.push("Towing coverage"),a.rental_car_accident_death_coverage){const s=a.rental_car_accident_death_amount||"Coverage provided";e.push(`Accident/death: ${s}`)}return e})(),c=(()=>{if(!r.hasCard)return["No credit card coverage"];const e=[];return e.push("Tire and windshield damage"),t||e.push("Liability coverage"),r.hasRentalCoverage||e.push("Collision damage, theft protection"),(null==a?void 0:a.rental_car_loss_of_use)||e.push("Loss of use"),e})(),d=(()=>{if(t){if("ehic"===(null==s?void 0:s.healthcare_coverage)||"eu_resident"===(null==s?void 0:s.residency_status))return`EU EHIC coverage valid in ${(null==s?void 0:s.country)||"this country"}.`}return null})();return e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-semibold text-[#454280] mb-6",children:"Your Coverage Starting Point"}),e.jsxs("div",{className:"flex overflow-x-auto space-x-4 pb-4 md:grid md:grid-cols-2 md:gap-6 md:space-x-0 md:pb-0",children:[e.jsx(o,{className:"flex-shrink-0 w-80 md:w-auto bg-[#f5f6ff]",children:e.jsxs(l,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"w-8 h-8 bg-[#ffba06] rounded-full flex items-center justify-center",children:e.jsx(k,{className:"h-4 w-4 text-[#454280]"})}),e.jsxs("h4",{className:"font-medium text-[#454280]",children:[`${(null==s?void 0:s.provider)||"Rental Company"} ${(null==s?void 0:s.country)||"Location"}`," - Basic Package (Included)"]})]}),e.jsx("div",{className:"text-sm space-y-2",children:t?e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"text-[#7570d7]",children:["⢠Third-party liability: Required by ",(null==s?void 0:s.country)||"country"," law, unlimited"]}),e.jsxs("p",{className:"text-[#7570d7]",children:["⢠Basic collision coverage and theft protection: Typically â¬",(null==s?void 0:s.deductible)||"1,500"," deductible"]}),d&&e.jsx("div",{className:"border-t border-white/50 pt-3 mt-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(S,{className:"w-4 h-4 text-green-500 flex-shrink-0"}),e.jsx("span",{className:"text-[#7570d7]",children:d})]})}),e.jsxs("div",{className:"flex items-start gap-2 mt-3",children:[e.jsx(A,{className:"h-4 w-4 text-red-500 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm text-[#7570d7]",children:"Not included: Windshield damage, tire damage, personal effects, medical coverage, loss of use"})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-[#7570d7]",children:"⢠Third-party liability: State minimum coverage only (often insufficient)"}),e.jsx("p",{className:"text-[#7570d7]",children:"⢠Basic collision coverage and theft protection: NOT included"}),e.jsxs("div",{className:"flex items-start gap-2 mt-3",children:[e.jsx(A,{className:"h-4 w-4 text-red-500 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm text-[#7570d7]",children:"Not included: Collision damage, theft protection, comprehensive liability, personal accident, personal effects, medical coverage"})]})]})})]})}),a&&e.jsx(o,{className:"flex-shrink-0 w-80 md:w-auto bg-[#f5f6ff]",children:e.jsxs(l,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"w-8 h-8 bg-norte-accent rounded-full flex items-center justify-center",children:e.jsx(U,{className:"h-4 w-4 text-headline-text"})}),e.jsxs("h3",{className:"font-semibold text-headline-text",children:["Your ",a.card_name]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-headline-text",children:"Rental Car Coverage:"}),n.length>0?n.map((a,s)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(S,{className:"w-4 h-4 text-green-500 flex-shrink-0"}),e.jsx("span",{className:"text-body-text",children:a})]},s)):e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(A,{className:"w-4 h-4 text-red-500 flex-shrink-0"}),e.jsx("span",{className:"text-body-text",children:r.displayMessage})]})]}),c.length>0&&e.jsx("div",{className:"border-t border-white/50 pt-3",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(A,{className:"w-4 h-4 text-red-500 flex-shrink-0"}),e.jsxs("span",{className:"text-body-text",children:["â ï¸ Not covered: ",c.join(", ")
1]})]})})]})]})})]})]})},ve=({isUS:a,isEU:s,enhancedOptions:t,formData:i,paidPackages:r,rentalDuration:n,selectedCard:c})=>{var d;const u="USD"===((null==(d=r[0])?void 0:d.currency)||(a?"USD":"EUR"))?"$":"â¬",m=[{id:"keep_current",title:c?`Keep ${c.card_name} Coverage`:"No Current Coverage",icon:e.jsx(E,{className:"w-5 h-5 text-headline-text"}),description:c?`Use your credit card's rental coverage (${u}${t.keepCurrentCoverage.cost.toLocaleString()})`:"No existing coverage available",riskLevel:t.keepCurrentCoverage.gaps.length>2?"High":"Medium",gaps:t.keepCurrentCoverage.gaps.slice(0,3),claimsProcess:t.keepCurrentCoverage.claimsProcess,bestFor:c?"Budget-conscious with good coverage":"No coverage available"},{id:"smart_package",title:s?"Insurance Package":"Coverage Bundle",icon:e.jsx(S,{className:"w-5 h-5 text-headline-text"}),description:`${(()=>{if(0===r.length)return s?"No insurance packages available from this provider.":"No coverage bundles available from this provider.";const e=r.length,a=(null==i?void 0:i.provider)||"the rental provider";if(s){return`With ${a}, you have ${e} option${e>1?"s":""}: ${r.map(e=>{const a=e.daily_cost*n,s=[];return e.includes_cdw&&s.push("collision"),e.includes_theft_protection&&s.push("theft"),e.includes_personal_accident&&s.push("personal accident"),`${e.package_name} (${u}${a} total - ${s.join(", ")||"coverage details available"})`}).join(", ")}.`}return`With ${a}, you have ${e} bundle${e>1?"s":""}: ${r.map(e=>{const a=e.daily_cost*n,s=[];return e.includes_cdw&&s.push("collision"),e.includes_liability_coverage&&s.push("liability"),e.includes_personal_accident&&s.push("personal accident"),`${e.package_name} (${u}${a} total - ${s.join(", ")||"coverage details available"})`}).join(", ")}.`})()}`,riskLevel:"Low",gaps:[],claimsProcess:s?"Direct resolution with rental company":"Direct resolution or work with credit card",bestFor:"Complete peace of mind"},{id:"targeted_addons",title:"Targeted Add-ons",icon:e.jsx(L,{className:"w-5 h-5 text-headline-text"}),description:t.targetedAddons.recommendedAddons.length>0?`Fill specific gaps: ${t.targetedAddons.recommendedAddons.map(e=>e.addon_name).join(", ")} (${u}${t.targetedAddons.cost.toLocaleString()})`:"No strategic add-ons available",riskLevel:"Medium",gaps:t.targetedAddons.recommendedAddons.length>0?["Some gaps may remain"]:["Limited add-on options"],claimsProcess:c?"Combination of add-on coverage and credit card claims":"Add-on coverage only",bestFor:"Filling specific coverage gaps"}];return e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-semibold text-headline-text mb-6",children:"Coverage Decision Framework"}),e.jsx("div",{className:"flex overflow-x-auto space-x-4 pb-4 md:grid md:grid-cols-3 md:gap-4 md:space-x-0 md:pb-0",children:m.map(a=>e.jsx(o,{className:"bg-[#f5f6ff] hover:shadow-md transition-shadow flex-shrink-0 w-80 md:w-auto",children:e.jsxs(l,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"w-10 h-10 bg-norte-accent rounded-full flex items-center justify-center",children:a.icon}),e.jsx("div",{className:"flex-1",children:e.jsx("h3",{className:"font-semibold text-headline-text",children:a.title})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-body-text",children:a.description}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-headline-text font-medium",children:"Risk Level:"}),e.jsx("span",{className:"px-2 py-1 rounded-full text-xs font-medium "+("Low"===a.riskLevel?"bg-green-100 text-green-800":"Medium"===a.riskLevel?"bg-yellow-100 text-yellow-800":"bg-red-100 text-red-800"),children:a.riskLevel})]}),a.gaps.length>0&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-headline-text font-medium mb-1",children:"Remaining Gaps:"}),e.jsx("ul",{className:"text-body-text space-y-1",children:a.gaps.map((a,s)=>e.jsxs("li",{className:"flex items-center gap-1",children:[e.jsx(A,{className:"w-3 h-3 text-yellow-500 flex-shrink-0"}),e.jsx("span",{children:a})]},s))})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-headline-text font-medium mb-1",children:"Claims Process:"}),e.jsx("p",{className:"text-body-text",children:a.claimsProcess})]}),e.jsxs("div",{className:"pt-2 border-t border-white/50",children:[e.jsx("span",{className:"text-headline-text font-medium",children:"Best for: "}),e.jsx("span",{className:"text-body-text",children:a.bestFor})]})]})]})},a.id))})]})},xe=({paidPackages:a,rentalDuration:s,isEU:t,isUS:i=!1})=>{if(0===a.length)return e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-semibold text-[#454280] mb-4",children:"Available Insurance Packages"}),e.jsx(o,{className:"shadow-sm bg-yellow-50 border-yellow-200",children:e.jsxs(l,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"w-8 h-8 bg-yellow-100 rounded-full flex items-center justify-center",children:e.jsx(P,{className:"h-4 w-4 text-yellow-600"})}),e.jsx("h3",{className:"font-medium text-yellow-900",children:"No Insurance Packages Available"})]}),e.jsxs("div",{className:"space-y-2 text-sm",children:[e.jsx("p",{className:"text-yellow-800",children:"This provider doesn't offer insurance packages for this location, or we don't have their package information in our database yet."}),e.jsx("p",{className:"text-yellow-800",children:"You may need to contact the rental company directly to inquire about insurance options, or rely on your existing coverage (credit card, personal auto insurance, etc.)."})]})]})})]});const r=i&&a.some(e=>{var a;const s=(null==(a=e.package_name)?void 0:a.toLowerCase())||"";return s.includes("ldw")||s.includes("sli")||s.includes("pap")||s.includes("collision")||s.includes("liability")||s.includes("personal accident")}),n=r?"Individual Coverage Options":"Available Insurance Packages",d=r?"Choose individual coverage types to build your protection stack":void 0;return e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-semibold text-[#454280] mb-4",children:n}),d&&e.jsx("p",{className:"text-[#7570d7] mb-6",children:d}),e.jsx("div",{className:`flex overflow-x-auto space-x-4 pb-4 ${(()=>{const e=a.length;return 1===e||2===e?"md:grid md:grid-cols-2":3===e?"md:grid md:grid-cols-3":4===e?"md:grid md:grid-cols-2":"md:grid md:grid-cols-2 lg:grid-cols-3"})()} md:gap-4 md:space-x-0 md:pb-0`,children:a.map(a=>{var i;const n=a.daily_cost*s;let d="",u="",m="";if(r){const e=(null==(i=a.package_name)?void 0:i.toLowerCase())||"";e.includes("ldw")||e.includes("collision")?(m="Collision/Theft Protection",d="Covers damage to the rental vehicle from collision, theft, or vandalism",u="Eliminates your financial responsibility for vehicle damage"):e.includes("sli")||e.includes("liability")?(m="Supplemental Liability",d="Additional liability coverage beyond state minimums",u="Protects against third-party injury and property damage claims"):e.includes("pap")||e.includes("personal accident")?(m="Personal Accident Protection",d=`Medical and accidental death coverage (${a.medical_limit||"$50,000"})`,u="Covers medical expenses and family protection"):(m="Additional Coverage",d="Supplemental rental protection",u="Enhanced protection for your rental")}else{const e=a.includes_personal_accident,s=a.includes_cdw&&a.includes_theft_protection&&a.includes_liability_coverage;(a.package_tier>1||e&&s)&&e?(d=`Everything in Standard PLUS Personal Accident Insurance (${a.medical_limit||"â¬10,000"})`,u="Complete family protection package"):s?(d="Core collision, theft & liability protection with immediate resolution",u=t?"Replaces credit card claims process":"Comprehensive protection without personal insurance reliance"):(d="Basic rental coverage",u="Essential protection for your rental")}return e.jsx(o,{className:"shadow-sm flex-shrink-0 w-80 md:w-auto",children:e.jsxs(l,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 bg-[#ffba06] rounded-full flex items-center justify-center",children:r?e.jsx(k,{className:"h-4 w-4 text-[#454280]"}):e.jsx(E,{className:"h-4 w-4 text-[#454280]"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-[#454280]",children:a.package_name}),r&&m&&e.jsx("p",{className:"text-xs text-[#7570d7]",children:m})]})]}),e.jsxs(c,{variant:"outline",className:"text-[#454280] border-[#454280] font-bold",children:["USD"===a.currency?"$":"â¬",n]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm text-[#7570d7]",children:d}),e.jsx("p",{className:"text-sm text-[#454280] italic",children:u}),r&&e.jsxs("p",{className:"text-xs text-[#7570d7]",children:["USD"===a.currency?"$":"â¬",a.daily_cost,"/day à ",s," days = ","USD"===a.currency?"$":"â¬",n]})]})]})},a.id)})}),r&&e.jsx("div",{className:"mt-4 p-4 bg-blue-50 rounded-lg",children:e.jsxs("p",{className:"text-sm text-blue-800",children:["ð¡ ",e.jsx("strong",{children:"Tip:"}
1)," These individual options can be combined based on your coverage gaps. Your credit card may already cover some of these areas."]})})]})},ye=({addons:a,rentalDuration:s,selectedCard:t,formData:i,isEU:r,isUS:n=!1})=>{const d=(a||[]).filter(e=>{var a;if(!n)return!0;const s=(null==(a=e.addon_name)?void 0:a.toLowerCase())||"";return!(s.includes("ldw")||s.includes("sli")||s.includes("pap")||s.includes("collision damage waiver")||s.includes("supplemental liability")||s.includes("personal accident protection"))});if(0===d.length)return n?e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-semibold text-[#454280] mb-6",children:"Additional Coverage Options"}),e.jsx(o,{className:"shadow-sm",children:e.jsxs(l,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"w-8 h-8 bg-blue-100 rounded-full flex items-center justify-center",children:e.jsx(P,{className:"h-4 w-4 text-blue-600"})}),e.jsx("h3",{className:"font-medium text-[#454280]",children:"No Additional Add-ons Available"})]}),e.jsxs("div",{className:"space-y-2 text-sm",children:[e.jsx("p",{className:"text-[#7570d7]",children:"This provider offers the core coverage options as individual selections rather than additional add-ons."}),e.jsx("p",{className:"text-[#7570d7]",children:"All available coverage options are shown in the Individual Coverage Options section above."}),e.jsx("p",{className:"text-[#454280] italic",children:"Focus on building your protection stack from the individual options available."})]})]})})]}):null;const u=n?"Additional Coverage Add-ons":"Add-on Coverage Options",m=n?"True add-on options beyond the core coverage selections":"Supplemental coverage options to fill specific gaps";return e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-semibold text-[#454280] mb-4",children:u}),e.jsx("p",{className:"text-[#7570d7] mb-6",children:m}),e.jsx("div",{className:"flex overflow-x-auto space-x-4 pb-4 md:grid md:grid-cols-2 md:gap-4 md:space-x-0 md:pb-0",children:d.map(a=>{const d=(e=>{var a;const s=(null==(a=e.addon_name)?void 0:a.toLowerCase())||"",o="ehic"===(null==i?void 0:i.healthcare_coverage)||"eu_resident"===(null==i?void 0:i.residency_status);null==t||t.emergency_medical;const l=(null==t?void 0:t.travel_accident_insurance)||!1,c=(null==t?void 0:t.roadside_assistance)||!1;return s.includes("personal accident")||s.includes("medical")?l||r&&o?{status:"Consider",badgeColor:"bg-orange-500",description:"Personal accident and medical coverage",context:l?`Your ${null==t?void 0:t.card_name} may already provide similar coverage - compare limits`:"EHIC covers medical treatment, this adds family protection",isRedundant:!1}:{status:"Gap-filling",badgeColor:"bg-green-500",description:"Personal accident and medical coverage",context:"Critical coverage for accident-related costs",isRedundant:!1}:s.includes("glass")||s.includes("tyre")||s.includes("tire")?{status:"Gap-filling",badgeColor:"bg-green-500",description:"Covers tire and windshield damage",context:"Credit cards exclude this (â¬200-800 risk)",isRedundant:!1}:s.includes("roadside")||s.includes("assistance")?c?{status:"Consider",badgeColor:"bg-orange-500",description:"24/7 breakdown and assistance service",context:`Your ${null==t?void 0:t.card_name} includes roadside assistance - compare coverage areas`,isRedundant:!1}:{status:"Gap-filling",badgeColor:"bg-green-500",description:"24/7 breakdown and assistance service",context:"Peace of mind for breakdowns and emergencies",isRedundant:!1}:(s.includes("liability")||s.includes("supplemental"))&&n?{status:"Gap-filling",badgeColor:"bg-green-500",description:"Supplemental liability coverage",context:"US state minimums often insufficient",isRedundant:!1}:{status:"Additional",badgeColor:"bg-gray-500",description:"Additional coverage option",context:"Evaluate based on your specific needs",isRedundant:!1}})(a),u=(a.daily_cost||0)*s;return e.jsx(o,{className:"shadow-sm flex-shrink-0 w-80 md:w-auto",children:e.jsxs(l,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 bg-[#ffba06] rounded-full flex items-center justify-center",children:e.jsx(D,{className:"h-4 w-4 text-[#454280]"})}),e.jsx("h3",{className:"font-bold text-[#454280]",children:a.addon_name})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(c,{className:`text-white ${d.badgeColor}`,children:d.status}),e.jsxs("span",{className:"text-sm font-medium text-[#454280]",children:[r?"â¬":"$",u]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm text-[#7570d7]",children:d.description}),e.jsx("p",{className:"text-sm text-[#454280] italic",children:d.context})]})]})},a.id)})})]})},fe=({scenarios:a,selectedScenario:s,onScenarioSelect:t})=>{const i=a=>{switch(a.id){case"theft":return e.jsx(E,{className:"w-5 h-5 text-[#454280]"});case"major-collision":case"fender-bender":return e.jsx(k,{className:"w-5 h-5 text-[#454280]"});case"tire-blowout":case"windshield-crack":case"minor-scratches":return e.jsx(A,{className:"w-5 h-5 text-[#454280]"});default:return e.jsx(R,{className:"w-5 h-5 text-[#454280]"})}},r=e=>{switch(e){case"high":return"text-alert-red bg-norte-bg-primary-container";case"medium":return"text-alert-yellow bg-norte-bg-primary-container";case"low":return"text-alert-green bg-norte-bg-primary-container";default:return"text-norte-text-secondary bg-norte-bg-primary-container"}},n=e=>{switch(e.toLowerCase()){case"high":return"Common";
1case"medium":return"Occasional";case"low":return"Rare";default:return e}};return e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold text-[#454280] mb-4",children:"Select Scenario"}),a.map(a=>{var c;return e.jsx(o,{className:"cursor-pointer transition-all duration-300 hover:shadow-lg hover:scale-[1.02] "+(s.id===a.id?"ring-2 ring-[#7570d7] border-[#7570d7] shadow-md":"hover:border-[#7570d7]/50 shadow-sm"),style:{backgroundColor:"#FFF9F4"},onClick:()=>t(a),role:"button",tabIndex:0,"aria-selected":s.id===a.id,"aria-label":`Scenario: ${a.title}`,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),t(a))},children:e.jsxs(l,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center space-x-3",children:[e.jsx("div",{className:"w-10 h-10 bg-[#FFBA06] rounded-full flex items-center justify-center shadow-sm flex-shrink-0",children:i(a)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h4",{className:"font-semibold text-[#454280] text-base",children:a.title}),e.jsx("p",{className:"text-sm text-[#7570d7]",children:a.description})]})]}),e.jsx("span",{className:`px-2 py-1 rounded-full text-xs font-medium ${r(a.likelihood)}`,children:n(a.likelihood)})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx($,{className:"w-4 h-4 text-[#454280]"}),e.jsx("span",{className:"text-lg font-bold text-[#454280]",children:a.damageAmount.toLocaleString()})]}),(null==(c=a.exclusions)?void 0:c.includes("credit_card"))&&e.jsxs("div",{className:"flex items-center gap-1 text-xs text-yellow-700 bg-yellow-100 px-2 py-1 rounded",children:[e.jsx(A,{className:"w-3 h-3"}),e.jsx("span",{children:"Credit card gap"})]})]})]})},a.id)})]})};class be{static generateThreeOptions(e,a,s,t,i,r){const n=le((null==a?void 0:a.country)||"Germany"),o="Europe"===n||"EU"===n,l="US"===n,c="ehic"===(null==a?void 0:a.healthcare_coverage)||"eu_resident"===(null==a?void 0:a.residency_status),d=this.getCreditCardExclusions(e,s),u=this.selectPackageTiers(t),m=this.selectStrategicAddons(i,o,l,c),g={region:o?"EU":l?"US":"Other",packageBehavior:o?"replaces_credit_card":"complements_credit_card",medicalContext:this.getMedicalContext(o,l,c,null==a?void 0:a.residency_status)};return{creditCardOnly:this.generateCreditCardOnlyOption(e,s,d,o,l),insurancePackage:this.generateInsurancePackageOption(e,u,r,o,l,g),creditCardPlusAddons:this.generateCreditCardPlusAddonsOption(e,s,m,r,o,l,d),regionalContext:g}}static getCreditCardExclusions(e,a){var s,t,i,r;const n=[];return((null==(s=e.title)?void 0:s.toLowerCase().includes("windshield"))||(null==(t=e.title)?void 0:t.toLowerCase().includes("tire"))||(null==(i=e.title)?void 0:i.toLowerCase().includes("tyre"))||(null==(r=e.title)?void 0:r.toLowerCase().includes("glass")))&&n.push("tire_windshield_exclusion"),(null==a?void 0:a.rental_car_coverage)||n.push("no_rental_coverage"),"secondary"===(null==a?void 0:a.rental_car_coverage_type)&&n.push("secondary_coverage_only"),n}static selectPackageTiers(e){const a=e.filter(e=>e.daily_cost>0),s=a.find(e=>e.package_tier>=1&&e.package_tier<=2),t=a.find(e=>e.package_tier>=3&&e.package_tier<=4);return{medium:s,premium:t,selected:t||s||a[0]||null}}static selectStrategicAddons(e,a,s,t){const i=[],r=e.find(e=>{var a;const s=(null==(a=e.addon_name)?void 0:a.toLowerCase())||"";return s.includes("glass")||s.includes("tire")||s.includes("tyre")});if(r&&i.push(r),!t&&a){const a=e.find(e=>{var a;const s=(null==(a=e.addon_name)?void 0:a.toLowerCase())||"";return s.includes("personal accident")||s.includes("medical")});a&&i.push(a)}if(s){const a=e.find(e=>{var a;const s=(null==(a=e.addon_name)?void 0:a.toLowerCase())||"";return s.includes("liability")||s.includes("sli")});a&&i.push(a)}return i.slice(0,2)}static getMedicalContext(e,a,s,t){return e&&s?"EHIC covers medical emergencies in EU. Personal Accident mainly for family/death benefits.":e&&"us_resident"===t?"EU law provides strong base medical coverage. Credit card or add-ons can fill remaining gaps.":a?"Medical coverage essential in US. Must be covered by credit card, personal auto, health insurance, or provider add-on.":"Check local medical coverage requirements and available protections."}static generateCreditCardOnlyOption(e,a,s,t,i){const r=s.includes("tire_windshield_exclusion");if(s.includes("no_rental_coverage"))return{id:"credit_card_only",title:"No Credit Card Coverage",description:"Your card does not provide rental car coverage",upfrontCost:e.damageAmou
1nt,finalCost:e.damageAmount,steps:[{label:"Incident occurs",status:"payment",amount:e.damageAmount},{label:"Pay out of pocket",status:"resolution"}],warnings:["Full cost responsibility","No coverage protection"],bestFor:"Not recommended - no protection",coverage:[],gaps:["Complete coverage gap","No rental car protection"],regionalNote:"Consider insurance package for protection"};const n=r?e.damageAmount:0,o=e.damageAmount;return{id:"credit_card_only",title:(null==a?void 0:a.card_name)||"Credit Card Coverage",description:r?"Credit card exclusion typically applies for this scenario":"Reimbursement through credit card claims process",upfrontCost:o,finalCost:n,cashFlowWeeks:r?void 0:3,steps:r?[{label:"Incident occurs",status:"payment",amount:e.damageAmount},{label:"Claim typically denied",status:"resolution"}]:[{label:"Pay upfront",status:"payment",amount:e.damageAmount},{label:"Submit claim",status:"process"},{label:"Reimbursed (2-4 weeks)",status:"resolution",amount:e.damageAmount}],warnings:r?["Tire/windshield typically excluded","Permanent cost likely"]:["Cash flow impact","2-4 week claims process"],bestFor:r?"Limited coverage":"Budget-conscious with good cash flow",coverage:r?[]:["Collision damage","Theft protection"],gaps:r?["Tire/windshield damage"]:["Tire/windshield damage","Claims processing time"],regionalNote:"Can complement with individual add-ons"}}static generateInsurancePackageOption(e,a,s,t,i,r){const n=a.selected;if(!n)return{id:"insurance_package",title:"Insurance Package Not Available",description:"No insurance packages available for this rental",upfrontCost:0,finalCost:e.damageAmou
1nt,steps:[{label:"No package available",status:"process"},{label:"Full cost responsibility",status:"payment",amount:e.damageAmount}],warnings:["No insurance packages available"],bestFor:"Not available",coverage:[],gaps:["No package protection available"],regionalNote:"Consider credit card or add-on options"};const o=n.daily_cost*s,l=n.total_deductible||0,c=o+l;return{id:"insurance_package",title:a.premium?`Premium Tier (${n.package_name})`:`Medium Tier (${n.package_name})`,description:`Complete protection - â¬${l} deductible`,upfrontCost:o,finalCost:c,steps:[{label:"Incident occurs",status:"process"},l>0?{label:`Pay deductible: â¬${l}`,status:"payment",amount:l}:{label:"Zero deductible",status:"resolution"},{label:"Immediate resolution",status:"resolution"}].filter(Boolean),warnings:l>0?[`â¬${l} deductible applies`]:["Zero deductible - full coverage"],bestFor:"Complete peace of mind",coverage:["Collision damage coverage","Theft protection","Tire and windshield coverage","Immediate claim resolution"],gaps:[],regionalNote:t?"Replaces credit card coverage entirely":"Can work alongside credit card coverage"}}static generateCreditCardPlusAddonsOption(e,a,s,t,i,r,n){if(0===s.length)return{id:"credit_card_plus_addons",title:"Credit Card + Add-ons",description:"Strategic add-ons not available",upfrontCost:0,finalCost:e.damageAmou
1nt,steps:[{label:"No strategic add-ons available",status:"process"},{label:"Rely on credit card only",status:"resolution"}],warnings:["Limited add-on options"],bestFor:"Limited options available",coverage:(null==a?void 0:a.rental_car_coverage)?["Credit card coverage"]:[],gaps:["No strategic add-ons available"],regionalNote:"Consider insurance package instead"};const o=s.reduce((e,a)=>e+a.daily_cost*t,0),l=n.includes("tire_windshield_exclusion"),c=o;return{id:"credit_card_plus_addons",title:"Credit Card + Strategic Add-ons",description:`Fill specific gaps - ${s.map(e=>e.addon_name).join(" + ")}`,upfrontCost:o,finalCost:c,steps:[{label:"Incident occurs",status:"process"},{label:"Add-on coverage applies",status:"resolution"}],warnings:["Targeted gap coverage"],bestFor:"Filling specific coverage gaps",coverage:[...s.map(e=>e.addon_name||"Add-on coverage"),...(null==a?void 0:a.rental_car_coverage)?["Credit card base coverage"]:[]],gaps:l?[]:["Some gaps may remain"],regionalNote:i?"Add-ons work with credit card coverage":"Flexible individual protection options"}}}const _e=({scenario:s,formData:t,selectedCard:i,paidPackages:r,addons:n,rentalDuration:c,isEU:d,isUS:u,enhancedOptions:m})=>{var g;const[p,h]=a.useState(!1),[v,x]=a.useState(null),[y,f]=a.useState(!1),b=a.useMemo(()=>be.generateThreeOptions(s,t,i,r,n,c),[s,t,i,r,n,c]),_=a.useMemo(()=>[b.creditCardOnly,b.insurancePackage,b.creditCardPlusAddons],[b]);a.useEffect(()=>{h(!0),f(!1);const e=setTimeout(()=>h(!1),500),a=setTimeout(()=>f(!0),100);return()=>{clearTimeout(e),clearTimeout(a)}},[s.id]);const C=a=>{switch(a){case"payment":return e.jsx(T,{className:"w-4 h-4 text-alert-red"});case"process":return e.jsx(I,{className:"w-4 h-4 text-body-text"});case"resolution":return e.jsx(S,{className:"w-4 h-4 text-alert-green"});default:return e.jsx(I,{className:"w-4 h-4 text-norte-text-secondary"})}},j="USD"===((null==(g=r[0])?void 0:g.currency)||"EUR")?"$":"â¬";return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"text-center mb-6",children:[e.jsxs("h3",{className:"text-lg font-semibold text-headline-text mb-2",children:[s.title," Analysis"]}),e.jsxs("p",{className:"text-body-text",children:[c,"-day rental in ",(null==t?void 0:t.country)||"destination",i&&e.jsxs("span",{children:[" ⢠",i.card_name]})]})]}),e.jsx("div",{className:"space-y-4",children:_.map((a,s)=>e.jsx(o,{className:"transition-all duration-500 hover:shadow-lg hover:scale-[1.01] cursor-pointer "+(y?"opacity-100 translate-y-0":"opacity-0 translate-y-4"),style:{backgroundColor:"#F5F6FF",transitionDelay:y?150*s+"ms":"0ms"},onMouseEnter:()=>x(a.id),onMouseLeave:()=>x(null),children:e.jsxs(l,{className:"p-5",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold text-headline-text",children:a.title}),e.jsx("p",{className:"text-body-text",children:a.description}),a.regionalNote&&e.jsx("p",{className:"text-xs text-norte-accent font-medium mt-1",children:a.regionalNote})]}),e.jsxs("div",{className:"text-right",children:[e.jsxs("div",{className:`text-xl font-bold text-headline-text transition-all duration-500 ${p?"scale-110":"scale-100"} ${v===a.id?"text-norte-accent":""}`,children:[j,a.finalCost.toLocaleString()]}),a.cashFlowWeeks&&e.jsxs("div",{className:"text-xs text-alert-yellow font-medium",children:[a.cashFlowWeeks," week impact"]}),e.jsx("div",{className:"text-xs text-body-text mt-1",children:a.bestFor})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4 mb-3",children:[e.jsxs("div",{children:[e.jsx("h5",{className:"text-xs font-medium text-headline-text mb-1",children:"Coverage:"}),e.jsx("ul",{className:"text-xs text-alert-green space-y-1",children:a.coverage.slice(0,3).map((a,s)=>e.jsxs("li",{children:["â ",a]},s))})]}),e.jsxs("div",{children:[e.jsx("h5",{className:"text-xs font-medium text-headline-text mb-1",children:"Gaps:"}),e.jsx("ul",{className:"text-xs text-alert-red space-y-1",children:a.gaps.slice(0,3).map((a,s)=>e.jsxs("li",{children:["â ",a]},s))})]})]}),e.jsx("div",{className:"space-y-2",children:a.steps.map((a,s)=>e.jsxs("div",{className:"flex items-center gap-3",children:[C(a.status),e.jsx("span",{className:"text-headline-text flex-1",children:a.label}),a.amount&&e.jsxs("span",{className:"font-medium text-headline-text",children:[j,a.amount.toLocaleStr
1ing()]})]},s))}),a.warnings&&a.warnings.length>0&&e.jsx("div",{className:"mt-3 flex flex-wrap gap-2",children:a.warnings.map((a,s)=>e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 bg-norte-bg-primary-container text-alert-yellow text-xs rounded-full",children:[e.jsx(A,{className:"w-3 h-3"}),a]},s))})]})},a.id))})]})},Ce=e=>0===e.length?1e3:Math.min(...e.map(e=>e.total_deductible)),je=({formData:t,selectedCard:r,paidPackages:n,addons:o,rentalDuration:l,isEU:c,isUS:d,enhancedOptions:u})=>{const m=a.useRef(null),g=s.useMemo(()=>{const e=(null==t?void 0:t.country)||"Germany",a=ce(e);return null==t||t.personal_auto_insurance,((e,a,s,t)=>{const r=(null==t?void 0:t.rental_car_coverage)||!1;Ce(e);const n=[{id:"windshield-crack",title:"Windshield Crack",description:`Chip damage, repair needed in ${a}`,damageAmount:Math.round(.5*s.minorAccidentCost)||400,likelihood:"high",category:"minor",exclusions:["credit_card"]},{id:"tire-blowout",title:"Tire Blowout",description:`Flat tire replacement in ${a}`,damageAmount:Math.round(.4*s.minorAccidentCost)||300,likelihood:"medium",category:"minor",exclusions:["credit_card"]},{id:"fender-bender",title:"Fender Bender",description:`Collision damage, scratches in ${a}
1`,damageAmount:Math.round(2.5*s.minorAccidentCost)||2e3,likelihood:"medium",category:"medium",exclusions:r?[]:["credit_card"]},{id:"minor-scratches",title:"Minor Scratches",description:`Light surface damage in ${a}`,damageAmount:Math.round(.25*s.minorAccidentCost)||200,likelihood:"high",category:"minor",exclusions:r?[]:["credit_card"]},{id:"theft",title:"Theft Incident",description:`Vehicle stolen in ${a}`,damageAmount:s.majorAccidentCost||25e3,likelihood:"low",category:"major",exclusions:r?[]:["credit_card"]},{id:"major-collision",title:"Major Collision",description:`Significant damage in ${a}`,damageAmount:Math.round(.6*s.majorAccidentCost)||15e3,likelihood:"low",category:"major",exclusions:r?[]:["credit_card"]}];return i.log("ð¯ Scenario Generation: Generated scenarios with consistent exclusions",{country:a,hasCardCoverage:r,scenariosWithExclusions:n.map(e=>({id:e.id,exclusions:e.exclusions}))}),n})(n,e,a,r)},[n,null==t?void 0:t.country,r,null==t?void 0:t.personal_auto_insurance]),[p,h]=a.useState(g[0]);a.useEffect(()=>{g.length>0&&!g.find(e=>e.id===(null==p?void 0:p.id))&&h(g[0])},[g,null==p?void 0:p.id]);return p?e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"text-center mb-4 sm:mb-8",children:[e.jsx("h2",{className:"text-lg sm:text-2xl font-semibold text-norte-text-primary mb-1 sm:mb-2",children:"Interactive Coverage Scenarios"}),e.jsxs("p",{className:"text-sm sm:text-base font-body text-norte-text-secondary",children:["See what typically happens financially with each coverage choice in ",null==t?void 0:t.country]})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4 sm:gap-8",children:[e.jsx("div",{children:e.jsx(fe,{scenarios:g,selectedScenario:p,onScenarioSelect:e=>{h(e),window.innerWidth<1024&&m.current&&setTimeout(()=>{var e;null==(e=m.current)||e.scrollIntoView({behavior:"smooth",block:"start",inline:"nearest"})},100)}})}),e.jsx("div",{ref:m,children:e.jsx(_e,{scenario:p,formData:t,selectedCard:r,paidPackages:n,addons:o,rentalDuration:l,isEU:c,isUS:d,enhancedOptions:u})})]})]}):e.jsx("div",{className:"text-center py-8",children:e.jsxs("p",{className:"text-[#7570d7]",children:["Loading scenarios for ",null==t?void 0:t.country,"..."]})})},we=({starters:a,onStarterClick:s,isLoading:t})=>e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-[#7570d7] text-center",children:"Get started with these common questions:"}),e.jsx("div",{className:"space-y-2",children:a.map((a,i)=>e.jsx(d,{variant:"outline",size:"sm",onClick:()=>s(a),className:"w-full text-left justify-start h-auto py-2 px-3 sm:py-3 sm:px-4 text-xs sm:text-sm text-wrap",disabled:t,children:a},i))})]}),Ne=({messages:a,isLoading:s})=>e.jsxs("div",{className:"space-y-4",children:[a.map((a,s)=>e.jsxs("div",{className:"flex gap-3 "+("user"===a.role?"justify-end":"justify-start"),children:["assistant"===a.role&&e.jsx("div",{className:"w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0 "+(a.error?"bg-red-500":"bg-[#7570d7]"),children:a.error?e.jsx(F,{className:"w-4 h-4 text-white"}):e.jsx(O,{className:"w-4 h-4 text-white"})}),e.jsxs("div",{className:"max-w-[80%] p-3 rounded-lg "+("user"===a.role?"bg-[#454280] text-white":a.error?"bg-red-50 text-red-700 border border-red-200":"bg-[#F5F6FF] text-[#454280]"),children:[e.jsx("div",{className:"text-sm",children:"assistant"===a.role?Y(a.content):e.jsx("div",{className:"whitespace-pre-wrap",children:a.content})}),e.jsx("p",{className:"text-xs opacity-70 mt-1",children:a.timestamp.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),"user"===a.role&&e.jsx("div",{className:"w-8 h-8 bg-[#FFBA06] rounded-full flex items-center justify-center flex-shrink-0",children:e.jsx(M,{className:"w-4 h-4 text-[#454280]"})})]},s)),s&&e.jsxs("div",{className:"flex gap-3 justify-start",children:[e.jsx("div",{className:"w-8 h-8 bg-[#7570d7] rounded-full flex items-center justify-center flex-shrink-0",children:e.jsx(O,{className:"w-4 h-4 text-white"})}),e.jsx("div",{className:"bg-[#F5F6FF] p-3 rounded-lg",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(q,{className:"w-4 h-4 animate-spin text-[#7570d7]"}),e.jsx("span",{className:"text-sm text-[#7570d7]",children:"Thinking..."})]})})]})]}),ke=({inputMessage:a,setInputMessage:s,onSubmit:t,isLoading:i,inputRef:r})=>e.jsxs("form",{onSubmit:t,className:"flex gap-2 pt-4 border-t",children:[e.jsx(u,{id:"coverage-chat-input",n
1ame:"chatMessage",ref:r,value:a,onChange:e=>s(e.target.value),placeholder:"Ask about coverage edge cases, claims, or your specific situation...",disabled:i,className:"flex-1"}),e.jsx(d,{type:"submit",disabled:i||!a.trim(),children:e.jsx(B,{className:"w-4 h-4"})})]}),Se=({isOpen:s,onClose:n,coverageContext:o})=>{const[l,c]=a.useState([]),[u,f]=a.useState(""),[b,_]=a.useState(!1),[C,j]=a.useState(!1),[w,N]=a.useState(""),k=a.useRef(null),S=a.useRef(null),{user:A}=r(),{checkCanSendMessage:U,getUsageWarning:E,isAtLimit:L}=V(),P=(e=>{var a,s;const t=[],{selectedCard:i,enhancedOptions:r,isUS:n,isEU:o,formData:l}=e||{};try{(null==l?void 0:l.rental_duration)>15&&t.push("What happens if I need to extend my long-term rental?"),o&&(null==l?void 0:l.country)!==(null==l?void 0:l.residency_country)&&t.push("How does cross-country rental in EU affect my coverage?"),n&&"eu_resident"===(null==l?void 0:l.residency_status)&&t.push("As an EU resident renting in the US, what coverage gaps should I know about?"),i&&"secondary"===i.rental_car_coverage_type&&t.push("What if I add multiple drivers to my rental with secondary coverage?"),(null==(s=null==(a=null==r?void 0:r.keepCurrentCoverage)?void 0:a.gaps)?void 0:s.length)>0&&t.push(`What happens if I have ${r.keepCurrentCoverage.gaps[0]} damage?`),t.push("Can I add coverage mid-rental if my situation changes?"),t.push("What if I get into an accident in a different country than where I rented?"),(null==l?void 0:l.provider)&&t.push(`What are the specific claim procedures for ${l.provider}?`)}catch(c){}return 0===t.length&&(t.push("How does the claims process work with my current coverage setup?"),t.push("What coverage gaps should I be aware of in my situation?"),t.push("Can you explain the difference between primary and secondary coverage?")),t.slice(0,4)})(o),D=()=>{if(k.current){const e=k.current.querySelector("[data-radix-scroll-area-viewport]");e&&(e.scrollTop=e.scrollHeight)}};a.useEffect(()=>{l.length>0&&setTimeout(D,100)},[l]),a.useEffect(()=>{s&&S.current&&setTimeout(()=>{var e;return null==(e=S.current)?void 0:e.focus()},100)},[s]),a.useEffect(()=>{s&&(j(!1),N(""))},[s]);const $=async e=>{if(!e.trim()||b)return;if(!A)return void y.error("Not authenticated");if(L()){const e=E();return void(e&&y.error(e))}const a={role:"user",content:e,timestamp:new Date};c(e=>[...e,a]),f(""),_(!0),j(!1),N("");try{const a=await U("coverage");if(!a.success)return y.error("AI_LIMIT_REACHED"===a.error?`You've reached your AI message limit of ${a.max_messages} messages this month. ${"free"===a.plan_type?"Upgrade to Premium to continue chatting.":"Your usage will reset next month."}`:"Failed to send message. Please try again."),void _(!1);const s=l.map(e=>({role:e.role,content:e.content}
1)),r=(e=>{var a,s,t,i,r;try{const{formData:n,selectedCard:o,paidPackages:l,addons:c,enhancedOptions:d,isEU:u,isUS:m}=e||{};return{rentalDetails:{country:(null==n?void 0:n.country)||"Unknown",region:m?"US":u?"EU":"Other",duration:(null==e?void 0:e.rentalDuration)||(null==n?void 0:n.rental_duration)||1,provider:(null==n?void 0:n.provider)||"Unknown",isEUResident:"eu_resident"===(null==n?void 0:n.residency_status),hasPersonalAutoInsurance:"yes"===(null==n?void 0:n.personal_auto_insurance)},selectedCard:o?{name:o.card_name||"Unknown Card",hasRentalCoverage:!!o.rental_car_coverage,coverageType:o.rental_car_coverage_type||"secondary",exclusions:Array.isArray(o.rental_car_exclusions)?o.rental_car_exclusions:[],medicalCoverage:!!o.emergency_medical}:null,coverageOptions:{packages:Array.isArray(l)?l.map(a=>({name:a.package_name||"Package",cost:(a.daily_cost||0)*((null==e?void 0:e.rentalDuration)||(null==n?void 0:n.rental_duration)||1),includes:a.coverage_details?a.coverage_details.split(","):[]})):[],addons:Array.isArray(c)?c.map(a=>({name:a.addon_name||"Add-on",cost:(a.daily_cost||0)*((null==e?void 0:e.rentalDuration)||(null==n?void 0:n.rental_duration)||1),purpose:a.coverage_description||"Additional coverage"})):[]},analysisResults:{identifiedGaps:Array.isArray(null==(a=null==d?void 0:d.keepCurrentCoverage)?void 0:a.gaps)?d.keepCurrentCoverage.gaps:[],riskAreas:(null==(s=null==d?void 0:d.keepCurrentCoverage)?void 0:s.riskExplanation)?[d.keepCurrentCoverage.riskExplanation]:[],estimatedCosts:{keepCurrent:(null==(t=null==d?void 0:d.keepCurrentCoverage)?void 0:t.cost)||0,smartPackage:(null==(i=null==d?void 0:d.smartPackage)?void 0:i.cost)||0,targetedAddons:(null==(r=null==d?void 0:d.targetedAddons)?void 0:r.cost)||0}}}}catch(u){return{rentalDetails:{country:"Unknown",region:"Other",duration:1,provider:"Unknown",isEUResident:!1,hasPersonalAutoInsurance:!1},selectedCard:null,coverageOptions:{packages:[],addons:[]},analysisResults:{identifiedGaps:[],riskAreas:[],estimatedCosts:{keepCurrent:0,smartPackage:0,targetedAddons:0}}}}})(o);if(!r||!r.rentalDetails)throw new Error("Context validation failed: Missing rental details");const n={action:"chat",user_id:A.id,messages:[...s,{role:"user",content:e}],context:r},{data:d,error:u}=await t.functions.invoke("coverage-chat-assistant",{body:n});if(u)throw i.error("Supabase invoke error:",u),new Error(u.message||"Failed to connect to AI service");if(!(null==d?void 0:d.success)){const e=(null==d?void 0:d.error)||"Received invalid response from AI service";throw new Error(e)}{const e={role:"assistant",content:d.message,timestamp:new Date};c(a=>[...a,e])}}catch(s){i.error("Coverage AI error:",s),j(!0);let e="I'm having trouble connecting right now. ";s.message.includes("timeout")?e+="The request is taking too long. Please try a shorter question or try again later.":s.message.includes("network")||s.message.includes("fetch")?e+="Please check your internet connection and try again.":s.message.includes("API")||s.message.includes("service")?e+="The AI service is temporarily unavailable. Please try again in a moment.":e+="Please try again, or ask your question later.";const a={role:"assistant",content:e,timestamp:new Date,error:!0};c(e=>[...e,a])}finally{_(!1)}};return e.jsx(m,{open:s,onOpenChange:n,children:e.jsxs(g,{className:"max-w-2xl h-[80vh] flex flex-col bg-norte-bg-main","aria-describedby":"coverage-chat-description",onFocusOutside:e=>{x()&&e.preventDefault()},onPointerDownOutside:e=>{x()&&e.preventDefault()},children:[e.jsxs(p,{className:"pb-3 sm:pb-4",children:[e.jsxs(h,{className:"flex items-center gap-2 text-base sm:text-lg text-norte-text-primary",children:[e.jsx(O,{className:"w-4 h-4 sm:w-5 sm:h-5"}),"Enhanced Coverage Assistant",C&&e.jsxs("div",{className:"flex items-center gap-1 text-red-600 text-xs sm:text-sm",children:[e.jsx(F,{className:"w-3 h-3 sm:w-4 sm:h-4"}),"Connection Issue"]})]}),e.jsx(v,{id:"coverage-chat-description",className:"text-xs sm:text-sm font-body text-norte-text-secondary",children:"Ask about coverage edge cases, multi-driver scenarios, cross-border rentals, and claims processes"})]}),e.jsx(H,{ref:k,className:"flex-1 pr-2 sm:pr-4",children:e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[0===l.length&&e.jsx(we,{starters:P,onStarterClick:e=>{$(e)},isLoading:b}),e.jsx(Ne,{messages:l,isLoading:b}),C&&e.jsx("div",{className:"flex justify-center",children:e.jsxs(d,{onClick:()=>
1{if(l.length>0){const e=[...l].reverse().find(e=>"user"===e.role);e&&(c(e=>e.slice(0,-1)),$(e.content))}},variant:"outline",size:"sm",className:"gap-2 min-h-[44px] px-4",disabled:b,children:[e.jsx(W,{className:"w-4 h-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:"Retry"})]})})]})}),e.jsx(ke,{inputMessage:u,setInputMessage:f,onSubmit:e=>{e.preventDefault(),$(u)},isLoading:b,inputRef:S})]})})},Ae=({formData:s,selectedCard:t,paidPackages:i,addons:r,rentalDuration:n,isEU:c,isUS:u,enhancedOptions:m})=>{const[g,p]=a.useState(!1),h=n||1,v=`Car rental in ${(null==s?void 0:s.country)||"Unknown"} for ${h} day${h>1?"s":""} using ${(null==t?void 0:t.card_name)||"No credit card"} as ${"eu_resident"===(null==s?void 0:s.residency_status)?"EU resident":"Non-EU resident"}`;return e.jsxs(e.Fragment,{children:[e.jsx(o,{className:"bg-gradient-to-r from-[#E1E3F7] to-[#F5F6FF] border-[#7570d7]/20 shadow-sm",children:e.jsx(l,{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 bg-norte-accent rounded-full flex items-center justify-center flex-shrink-0",children:e.jsx(P,{className:"w-4 h-4 text-headline-text"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("p",{className:"text-headline-text mb-2",children:[e.jsx("span",{className:"font-medium",children:"Based on your inputs:"})," ",v]}),e.jsx("div",{className:"mb-3 p-2 bg-[#F5F6FF] border border-[#7570d7]/20 rounded-md",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(A,{className:"w-3 h-3 text-headline-text mt-0.5 flex-shrink-0"}),e.jsxs("p",{className:"text-xs text-headline-text",children:[e.jsx("strong",{children:"Disclaimer:"})," This analysis is for informational purposes. Coverage details may vary based on your specific card terms and rental agreement. Always verify coverage details with your card issuer and rental company."]})]})}),e.jsx("p",{className:"text-xs text-body-text mb-3",children:"Have questions about coverage edge cases, claims processes, or how your specific situation affects protection?"}),e.jsxs(d,{onClick:()=>{p(!0)},className:"bg-body-text hover:bg-headline-text text-white gap-2 h-8 text-xs px-3",size:"sm",children:[e.jsx(G,{className:"w-3 h-3"}),"Ask our AI assistant"]})]})]})})}),e.jsx(Se,{isOpen:g,onClose:()=>{p(!1)},coverageContext:{formData:s,selectedCard:t,paidPackages:i,addons:r,rentalDuration:n,isEU:c,isUS:u,enhancedOptions:m}})]})},Ue=()=>{const[s,t]=a.useState(null),{createCoverageCheck:r,updateCoverageCheckDecision:n}=Z(),{insurancePolicies:c}=Q(),{packages:d,addons:u,formData:m,selectedCard:g,packagesLoading:p,packagesError:h,hasRequiredData:v}=re(),x=a.useMemo(()=>(d||[]).filter(e=>e.daily_cost>0),[d]),y=a.useMemo(()=>le((null==m?void 0:m.country)||""),[null==m?void 0:m.country]),j=a.useMemo(()=>"Europe"===y||"EU"===y,[y]),N=a.useMemo(()=>"US"===y,[y]),k=a.useMemo(()=>(null==m?void 0:m.rental_duration)||1,[null==m?void 0:m.rental_duration]),S=a.useMemo(()=>{if(!m)return{keepCurrentCoverage:{cost:0,gaps:[],riskExplanation:"No data available",claimsProcess:""},smartPackage:{cost:0,package:null,guidance:null,replacesCreditCard:!1},targetedAddons:{cost:0,recommendedAddons:[],guidance:null}};return pe(x,u||[],(null==m?void 0:m.country)||"Germany",k,{...m,selectedCard:g,healthcare_coverage:null==m?void 0:m.healthcare_coverage,residency_status:null==m?void 0:m.residency_status})},[x,u,m,g,k]),A=a.useMemo(()=>({hasRequiredData:v,formDataCountry:null==m?void 0:m.country,formDataProvider:null==m?void 0:m.provider,rentalDuration:k,coverageCheckId:s}),[v,null==m?void 0:m.country,null==m?void 0:m.provider,k,s]);a.useEffect(()=>{if(A.hasRequiredData&&m&&!A.coverageCheckId){(async()=>{const e=S.smartPackage.cost||0,a=S.keepCurrentCoverage.cost||0,s=Math.max(0,e>0?e-a:0),i=(null==g?void 0:g.rental_car_coverage)?Math.min(x.reduce((e,a)=>e+(a.daily_cost||0),0)*k*.7,200):0,n=Math.max(s,i,15*k),o=c.filter(e=>"auto"===e.insurance_type||"travel"===e.insurance_type||!0===e.rental_car_coverage).map(e=>e.id),l=await r("car_rental",{country:m.country,rental_duration:k,selected_card:null==g?void 0:g.card_name,packages_count:x.length,addons_count:(u||[]).length,provider:m.provider,provider_id:m.provider_id},n,o);l&&t(l.id)})()}},[A,m,x,u,g,c,r]);const U=[{id:"keep_current",title:"Keep my current coverage",description:g?`Rely on ${g.card_name} benefits`:"Use existing coverage"},{id:"smart_package",title:"Get recommended package",description:S.smartPackage.package?`${S.smartPackage.package.package_name} - $${S.smartPackage.cost}/day`:"Consider rental company insurance"}
1,{id:"targeted_addons",title:"Select specific add-ons",description:`Pick individual coverage options - around $${S.targetedAddons.cost}/day`}];if(p)return e.jsx(ne,{maxWidth:"6xl",children:e.jsx(oe,{})});if(h){const a=J(h);return e.jsx(ne,{maxWidth:"6xl",children:e.jsx(o,{children:e.jsxs(l,{className:"flex items-center gap-3 p-6",children:[e.jsx(X,{className:"h-5 w-5 text-red-500"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-medium text-red-900",children:"Unable to Load Coverage Data"}),e.jsx("p",{className:"text-sm text-red-600",children:a})]})]})})})}return v?e.jsxs(ne,{maxWidth:"6xl",children:[e.jsxs("div",{className:"mb-6",children:[e.jsxs("div",{className:"text-center space-y-2 mb-8",children:[e.jsxs("h1",{className:"text-3xl font-bold text-[#454280]",children:["Your coverage breakdown for ",null==m?void 0:m.country,", ",(()=>{if(!(null==m?void 0:m.pickup_date)||!(null==m?void 0:m.return_date))return`${k} days`;const e=new Date(m.pickup_date),a=new Date(m.return_date);return`${e.toLocaleDateString("en-US",{month:"short",day:"numeric"})} - ${a.toLocaleDateString("en-US",{month:"short",day:"numeric"})}`})()]}),e.jsx("p",{className:"text-[#7570d7]",children:"Here's what you currently have and what the rental includes"})]}),e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs(w,{to:"/coverage-planner/car-rental/cards",className:"flex items-center gap-2 text-[#7570d7] hover:text-[#454280] transition-colors",children:[e.jsx(z,{className:"h-4 w-4"}),"Back"]}),e.jsx("p",{className:"text-sm text-[#7570d7]",children:"Step 3 of 3"})]}),e.jsx("div",{className:"w-full bg-gray-200 rounded-full h-2",children:e.jsx("div",{className:"bg-[#ffba06] h-2 rounded-full",style:{width:"100%"}})})]}),e.jsxs(f,{defaultValue:"summary",className:"w-full",children:[e.jsxs(b,{className:"grid w-full grid-cols-2 mb-8",children:[e.jsx(_,{value:"summary",className:"font-light",children:"Coverage Summary"}),e.jsx(_,{value:"scenarios",className:"font-light",children:"Coverage Scenarios"})]}),e.jsxs(C,{value:"summary",className:"space-y-8",children:[e.jsx(he,{selectedCard:g,formData:m,isEU:j,rentalDuration:k}),e.jsx(xe,{paidPackages:x,rentalDuration:k,isEU:j,isUS:N}),e.jsx(ye,{addons:u,rentalDuration:k,selectedCard:g,formData:m,isEU:j,isUS:N}),e.jsx(ve,{isUS:N,isEU:j,enhancedOptions:S,formData:m,paidPackages:x,rentalDuration:k,selectedCard:g}),e.jsx(K,{options:U,onDecisionSave:async e=>{if(!s)return void i.error("â No coverage check ID available for decision save");if(!(await n(s,e)))throw new Error("Failed to save decision")},className:"mt-8"}),e.jsx(Ae,{formData:m,selectedCard:g,paidPackages:x,addons:u,rentalDuration:k,isEU:j,isUS:N,enhancedOptions:S})]}),e.jsx(C,{value:"scenarios",children:e.jsxs("div",{className:"space-y-8",children:[e.jsx(je,{formData:m,selectedCard:g,paidPackages:x,addons:u,rentalDuration:k,isEU:j,isUS:N,enhancedOptions:S}),e.jsx(Ae,{formData:m,selectedCard:g,paidPackages:x,addons:u,rentalDuration:k,isEU:j,isUS:N,enhancedOptions:S})]})})]})]}):e.jsx(ne,{maxWidth:"6xl",children:e.jsx(o,{children:e.jsxs(l,{className:"flex items-center gap-3 p-6",children:[e.jsx(X,{className:"h-5 w-5 text-yellow-500"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-medium text-yellow-900",children:"Missing Required Information"}),e.jsx("p",{className:"text-sm text-yellow-600",children:"Please complete the car rental form to see coverage analysis."})]})]})})})},Ee=()=>e.jsx("div",{className:"min-h-screen bg-norte-bg-main",children:e.jsx("div",{style:{paddingBottom:"var(--nav-padding-bottom-mobile)"},children:e.jsx(Ue,{})})});export{Ee 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.