| | import React, { useState, useEffect } from 'react'; |
| | import { X, Gift } from 'lucide-react'; |
| | import { Language } from '../types'; |
| | import { TRANSLATIONS } from '../constants/translations'; |
| |
|
| | interface ExitIntentModalProps { |
| | language: Language; |
| | onClose: () => void; |
| | } |
| |
|
| | export const ExitIntentModal: React.FC<ExitIntentModalProps> = ({ language, onClose }) => { |
| | const [isVisible, setIsVisible] = useState(false); |
| | const t = TRANSLATIONS[language]; |
| |
|
| | useEffect(() => { |
| | |
| | if (window.innerWidth < 768) return; |
| |
|
| | const handleMouseLeave = (e: MouseEvent) => { |
| | if (e.clientY <= 0) { |
| | |
| | const hasShown = localStorage.getItem('exit_intent_shown'); |
| | if (!hasShown) { |
| | setIsVisible(true); |
| | localStorage.setItem('exit_intent_shown', 'true'); |
| | } |
| | } |
| | }; |
| |
|
| | document.addEventListener('mouseleave', handleMouseLeave); |
| | return () => document.removeEventListener('mouseleave', handleMouseLeave); |
| | }, []); |
| |
|
| | if (!isVisible) return null; |
| |
|
| | const handleClose = () => { |
| | setIsVisible(false); |
| | onClose(); |
| | }; |
| |
|
| | return ( |
| | <div className="fixed inset-0 z-[200] flex items-center justify-center p-4 bg-black/70 backdrop-blur-sm animate-fade-in"> |
| | <div className="bg-white rounded-2xl shadow-2xl max-w-sm w-full overflow-hidden relative text-center p-8"> |
| | <button |
| | onClick={handleClose} |
| | className="absolute top-2 right-2 p-1.5 hover:bg-gray-100 rounded-full text-gray-400" |
| | > |
| | <X className="w-5 h-5" /> |
| | </button> |
| | |
| | <div className="w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mx-auto mb-4 text-red-500 animate-bounce"> |
| | <Gift className="w-8 h-8" /> |
| | </div> |
| | |
| | <h3 className="text-2xl font-bold text-gray-900 mb-2">等一下!</h3> |
| | <p className="text-gray-600 mb-6 text-sm"> |
| | 现在离开就错过了 <strong>500元</strong> 现金抵用券!<br/> |
| | 仅限今日,留下联系方式即可领取。 |
| | </p> |
| | |
| | <div className="space-y-3"> |
| | <button |
| | onClick={handleClose} // In real app, open consult modal |
| | className="w-full py-3 bg-red-600 hover:bg-red-700 text-white font-bold rounded-xl shadow-lg shadow-red-200 transition-all" |
| | > |
| | 领取优惠 |
| | </button> |
| | <button |
| | onClick={handleClose} |
| | className="w-full py-2 text-gray-400 text-xs hover:text-gray-600 font-medium" |
| | > |
| | 忍痛放弃 |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | ); |
| | }; |