import { useState } from 'react' import { useTranslation } from 'react-i18next' import { Download, Share, Smartphone, X } from 'lucide-react' import { usePwaInstall, isIosDevice, type PwaInstallPlatform } from '../hooks/usePwaInstall.js' interface PwaInstallPromptProps { variant?: 'banner' | 'inline' } function platformLabel(platform: PwaInstallPlatform | null, t: (key: string) => string): string { if (platform === 'ios') return t('pwa.platform_ios') if (platform === 'android') return t('pwa.platform_android') return t('pwa.platform_desktop') } export default function PwaInstallPrompt({ variant = 'banner' }: PwaInstallPromptProps) { const { t } = useTranslation() const { canPrompt, platform, install, dismissLater, dismissForever, isStandalone, hasNativeInstall } = usePwaInstall() const [installing, setInstalling] = useState(false) if (isStandalone) return null if (variant === 'banner' && !canPrompt) return null if (variant === 'inline' && !isIosDevice() && !hasNativeInstall) return null const handleInstall = async () => { setInstalling(true) try { await install() } finally { setInstalling(false) } } const rootClass = variant === 'banner' ? 'pwa-install-banner glass' : 'pwa-install-inline glass' return (
{platform === 'ios' ? t('pwa.ios_instructions') : t('pwa.generic_benefit')}
{platform === 'ios' && ({platformLabel(platform, t)}
)}