import { useEffect, useState } from 'react' import { Download } from 'lucide-react' /** * Renders an "Install App" button when the browser fires the * beforeinstallprompt event (Chrome / Android). On iOS Safari the event * is never fired, so the button stays hidden. */ export default function InstallPrompt() { const [deferredPrompt, setDeferredPrompt] = useState(null) const [installed, setInstalled] = useState(false) useEffect(() => { const handler = (e) => { e.preventDefault() setDeferredPrompt(e) } window.addEventListener('beforeinstallprompt', handler) window.addEventListener('appinstalled', () => { setInstalled(true) setDeferredPrompt(null) }) return () => window.removeEventListener('beforeinstallprompt', handler) }, []) if (!deferredPrompt || installed) return null const handleInstall = async () => { deferredPrompt.prompt() const { outcome } = await deferredPrompt.userChoice if (outcome === 'accepted') setInstalled(true) setDeferredPrompt(null) } return ( ) }