11import { motion , AnimatePresence } from "framer-motion" ;
22import { Plane , Hotel , MapPin , X , CreditCard , Wallet , CheckCircle2 } from "lucide-react" ;
3+ import { useState } from "react" ;
34
45interface ItineraryItem {
56 type : 'flight' | 'hotel' | 'activity' ;
@@ -9,6 +10,8 @@ interface ItineraryItem {
910}
1011
1112export const CheckoutModal = ( { items, total, onConfirm, onClose } : { items : ItineraryItem [ ] , total : number , onConfirm : ( ) => void , onClose : ( ) => void } ) => {
13+ const [ selectedMethod , setSelectedMethod ] = useState < 'regional' | 'international' | 'web3' > ( 'international' ) ;
14+
1215 return (
1316 < motion . div
1417 initial = { { opacity : 0 } }
@@ -69,36 +72,63 @@ export const CheckoutModal = ({ items, total, onConfirm, onClose }: { items: Iti
6972
7073 < h3 className = "text-sm font-bold uppercase tracking-widest text-slate-500 mb-6" > Financial Orchestration</ h3 >
7174 < div className = "space-y-4 mb-10" >
72- < div className = "p-4 rounded-2xl border border-slate-800 bg-slate-900/30 hover:border-cyan-500/50 hover:bg-cyan-500/5 transition-all cursor-pointer group" >
75+ < div
76+ onClick = { ( ) => setSelectedMethod ( 'regional' ) }
77+ className = { `p-4 rounded-2xl border transition-all cursor-pointer group ${
78+ selectedMethod === 'regional'
79+ ? 'border-emerald-500 bg-emerald-500/10 shadow-[0_0_20px_rgba(16,185,129,0.1)]'
80+ : 'border-slate-800 bg-slate-900/30 hover:border-slate-700'
81+ } `}
82+ >
7383 < div className = "flex items-center gap-3 mb-2" >
74- < div className = "h-8 w-8 rounded-lg bg-emerald-500/10 flex items-center justify-center text-emerald-400" >
84+ < div className = { `h-8 w-8 rounded-lg flex items-center justify-center transition-colors ${
85+ selectedMethod === 'regional' ? 'bg-emerald-500 text-slate-900' : 'bg-emerald-500/10 text-emerald-400'
86+ } `} >
7587 < CheckCircle2 className = "h-4 w-4" />
7688 </ div >
77- < span className = " font-bold text-white text-sm" > Regional Excellence</ span >
89+ < span className = { ` font-bold text-sm transition-colors ${ selectedMethod === 'regional' ? 'text- white' : ' text-slate-300' } ` } > Regional Excellence</ span >
7890 </ div >
7991 < p className = "text-[10px] text-slate-500 leading-relaxed" >
8092 Instant settlement via MTN MoMo or Airtel Money for local convenience.
8193 </ p >
8294 </ div >
8395
84- < div className = "p-4 rounded-2xl border-2 border-cyan-500/50 bg-cyan-500/10 text-white cursor-pointer group" >
96+ < div
97+ onClick = { ( ) => setSelectedMethod ( 'international' ) }
98+ className = { `p-4 rounded-2xl border transition-all cursor-pointer group ${
99+ selectedMethod === 'international'
100+ ? 'border-cyan-500 bg-cyan-500/10 shadow-[0_0_20px_rgba(6,182,212,0.1)]'
101+ : 'border-slate-800 bg-slate-900/30 hover:border-slate-700'
102+ } `}
103+ >
85104 < div className = "flex items-center gap-3 mb-2" >
86- < div className = "h-8 w-8 rounded-lg bg-cyan-500/20 flex items-center justify-center text-cyan-400" >
105+ < div className = { `h-8 w-8 rounded-lg flex items-center justify-center transition-colors ${
106+ selectedMethod === 'international' ? 'bg-cyan-500 text-slate-900' : 'bg-cyan-500/10 text-cyan-400'
107+ } `} >
87108 < CreditCard className = "h-4 w-4" />
88109 </ div >
89- < span className = " font-bold text-sm" > International Standards</ span >
110+ < span className = { ` font-bold text-sm transition-colors ${ selectedMethod === 'international' ? 'text-white' : 'text-slate-300' } ` } > International Standards</ span >
90111 </ div >
91- < p className = "text-[10px] text-cyan-200/50 leading-relaxed" >
112+ < p className = "text-[10px] text-slate-500 leading-relaxed" >
92113 Secured with world-class encryption via Stripe or PayPal.
93114 </ p >
94115 </ div >
95116
96- < div className = "p-4 rounded-2xl border border-slate-800 bg-slate-900/30 hover:border-purple-500/50 hover:bg-purple-500/5 transition-all cursor-pointer group" >
117+ < div
118+ onClick = { ( ) => setSelectedMethod ( 'web3' ) }
119+ className = { `p-4 rounded-2xl border transition-all cursor-pointer group ${
120+ selectedMethod === 'web3'
121+ ? 'border-purple-500 bg-purple-500/10 shadow-[0_0_20px_rgba(168,85,247,0.1)]'
122+ : 'border-slate-800 bg-slate-900/30 hover:border-slate-700'
123+ } `}
124+ >
97125 < div className = "flex items-center gap-3 mb-2" >
98- < div className = "h-8 w-8 rounded-lg bg-purple-500/10 flex items-center justify-center text-purple-400" >
126+ < div className = { `h-8 w-8 rounded-lg flex items-center justify-center transition-colors ${
127+ selectedMethod === 'web3' ? 'bg-purple-500 text-white' : 'bg-purple-500/10 text-purple-400'
128+ } `} >
99129 < Wallet className = "h-4 w-4" />
100130 </ div >
101- < span className = " font-bold text-white text-sm" > Web3 & Cross - Border </ span >
131+ < span className = { ` font-bold text-sm transition-colors ${ selectedMethod === 'web3' ? 'text- white' : ' text-slate-300' } ` } > Web3 & Cross - Border </ span >
102132 </ div >
103133 < p className = "text-[10px] text-slate-500 leading-relaxed" >
104134 Optimized conversion path via MiniPay or Wise.
0 commit comments