"use client" import { useEffect, useState } from "react" import { useTranslations } from "next-intl" import { Download, X } from "lucide-react" import { Button } from "@/components/ui/button" interface BeforeInstallPromptEvent extends Event { prompt: () => Promise userChoice: Promise<{ outcome: "accepted" | "dismissed" }> } export function PwaInstallPrompt() { const t = useTranslations("pwa") const [deferredPrompt, setDeferredPrompt] = useState(null) const [dismissed, setDismissed] = useState(false) useEffect(() => { // Check if already dismissed permanently if (localStorage.getItem("pwa-install-dismissed") === "true") { setDismissed(true) return } const handler = (e: Event) => { e.preventDefault() setDeferredPrompt(e as BeforeInstallPromptEvent) } window.addEventListener("beforeinstallprompt", handler) return () => window.removeEventListener("beforeinstallprompt", handler) }, []) const handleInstall = async () => { if (!deferredPrompt) return await deferredPrompt.prompt() const { outcome } = await deferredPrompt.userChoice if (outcome === "accepted") { setDeferredPrompt(null) } } const handleDismiss = () => { setDismissed(true) localStorage.setItem("pwa-install-dismissed", "true") setDeferredPrompt(null) } if (!deferredPrompt || dismissed) return null return (

{t("install")}

{t("installDesc")}

) }