import { useEffect, useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { X, Share, Plus, Download } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Card } from '@/components/ui/card'; export function InstallPrompt() { const [showPrompt, setShowPrompt] = useState(false); const [platform, setPlatform] = useState<'ios' | 'android' | 'chrome' | 'other'>('other'); const [deferredPrompt, setDeferredPrompt] = useState(null); useEffect(() => { const isDismissed = localStorage.getItem('installPromptDismissed'); if (isDismissed) return; // Detect platform const userAgent = navigator.userAgent.toLowerCase(); const isIOSDevice = /ipad|iphone|ipod/.test(userAgent) && !(window as any).MSStream; const isAndroid = /android/.test(userAgent); const isChrome = /chrome/.test(userAgent) && /google inc/.test(navigator.vendor.toLowerCase()); if (isIOSDevice) setPlatform('ios'); else if (isAndroid) setPlatform('android'); else if (isChrome) setPlatform('chrome'); // Don't show if already installed if (window.matchMedia('(display-mode: standalone)').matches) return; // Handle PWA install prompt window.addEventListener('beforeinstallprompt', (e) => { e.preventDefault(); setDeferredPrompt(e); setShowPrompt(true); }); // Show prompt for iOS after delay if (isIOSDevice) { setTimeout(() => setShowPrompt(true), 2000); } }, []); const handleDismiss = () => { setShowPrompt(false); localStorage.setItem('installPromptDismissed', 'true'); }; const handleInstall = async () => { if (!deferredPrompt) return; try { await deferredPrompt.prompt(); const choiceResult = await deferredPrompt.userChoice; if (choiceResult.outcome === 'accepted') { setShowPrompt(false); setDeferredPrompt(null); } } catch (error) { console.error('Install prompt error:', error); } }; const getInstructions = () => { switch (platform) { case 'ios': return (

Tap and then{" "} “Add to Home Screen”

); case 'android': return (

Tap the menu and select “Install app”

); default: return (

Install our app for a better experience

); } }; return ( {showPrompt && (

Install MiniPerplx

{getInstructions()}
{platform !== 'ios' && (
)}
)}
); }