'use client'; import {useEffect,useState} from 'react'; import {Download,X} from 'lucide-react'; type InstallEvent=Event & {prompt:()=>Promise;userChoice:Promise<{outcome:'accepted'|'dismissed'}>}; export function ClockInstallPrompt() { const [visible,setVisible]=useState(false); const [ios,setIos]=useState(false); const [install,setInstall]=useState(null); const [busy,setBusy]=useState(false); useEffect(()=>{ const standalone=window.matchMedia('(display-mode: standalone)').matches || (navigator as Navigator & {standalone?:boolean}).standalone===true; if(standalone)return; try{if(sessionStorage.getItem('plant-clock-install-dismissed'))return;}catch{/* Storage may be disabled. */} setIos(/iphone|ipad|ipod/i.test(navigator.userAgent)||(navigator.platform==='MacIntel'&&navigator.maxTouchPoints>1)); setVisible(true); const prompt=(event:Event)=>{event.preventDefault();setInstall(event as InstallEvent);}; const installed=()=>setVisible(false); window.addEventListener('beforeinstallprompt',prompt);window.addEventListener('appinstalled',installed); return()=>{window.removeEventListener('beforeinstallprompt',prompt);window.removeEventListener('appinstalled',installed);}; },[]); if(!visible)return null; async function installApp() { if(!install||busy)return;setBusy(true); try{await install.prompt();const result=await install.userChoice;if(result.outcome==='accepted')setVisible(false);setInstall(null);} catch{setInstall(null);}finally{setBusy(false);} } return ; }