import { useState, useEffect } from 'react' import { Button } from '@/components/ui/button' import { Card } from '@/components/ui/card' import { Download, X, DeviceMobile, Desktop } from '@phosphor-icons/react' import { motion, AnimatePresence } from 'framer-motion' import { usePWA } from '@/hooks/use-pwa' export function PWAInstallPrompt() { const { isInstallable, installApp } = usePWA() const [dismissed, setDismissed] = useState(false) const [showPrompt, setShowPrompt] = useState(false) useEffect(() => { const hasBeenDismissed = localStorage.getItem('pwa-install-dismissed') if (hasBeenDismissed) { setDismissed(true) } const timer = setTimeout(() => { if (isInstallable && !hasBeenDismissed) { setShowPrompt(true) } }, 3000) return () => clearTimeout(timer) }, [isInstallable]) const handleInstall = async () => { const success = await installApp() if (success) { setShowPrompt(false) } } const handleDismiss = () => { setShowPrompt(false) setDismissed(true) localStorage.setItem('pwa-install-dismissed', 'true') } if (!isInstallable || dismissed || !showPrompt) { return null } return (

Install CodeForge

Install our app for a faster, offline-capable experience with quick access from your device.

Works offline
Quick access
) }