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 (

{t('pwa.title')}

{platform === 'ios' ? t('pwa.ios_instructions') : t('pwa.generic_benefit')}

{platform === 'ios' && (
  1. {t('pwa.ios_step_share')}
  2. + {t('pwa.ios_step_add')}
)} {hasNativeInstall && (

{platformLabel(platform, t)}

)}
{hasNativeInstall && ( )} {variant === 'banner' && (
)}
{variant === 'banner' && ( )}
) }