import { useState, useEffect } from 'react'; import { AlertTriangle, X, Download, CheckCircle } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { useCurrentUser } from '@/hooks/useCurrentUser'; import { useLocalStorage } from '@/hooks/useLocalStorage'; import { useTranslation } from '@/contexts/LanguageContext'; import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, } from '@/components/ui/sheet'; const BACKUP_REMINDER_KEY = 'backup-reminder-dismissed'; const BACKUP_CONFIRMED_KEY = 'backup-confirmed'; /** * Persistent backup reminder that shows after signup * Encourages users to backup their recovery phrase or nsec * Uses a bottom sheet for better mobile experience */ export function BackupReminder() { const { user } = useCurrentUser(); const [dismissed, setDismissed] = useLocalStorage(BACKUP_REMINDER_KEY, false); const [confirmed, setConfirmed] = useLocalStorage(BACKUP_CONFIRMED_KEY, false); const [showReminder, setShowReminder] = useState(false); const { t } = useTranslation(); useEffect(() => { if (!user) { setShowReminder(false); return; } // Show reminder if: // 1. User is logged in // 2. Not dismissed // 3. Not confirmed they backed up // Add a small delay so it doesn't immediately pop up on login const timer = setTimeout(() => { const shouldShow = !dismissed && !confirmed; setShowReminder(shouldShow); }, 2000); return () => clearTimeout(timer); }, [user, dismissed, confirmed]); const handleDismiss = () => { setDismissed(true); setShowReminder(false); }; const handleConfirmBackup = () => { setConfirmed(true); setShowReminder(false); }; const handleBackupNow = () => { window.location.href = '/settings?tab=security'; }; if (!showReminder) return null; return ( e.preventDefault()} >
{t('backup.title')} {t('backup.subtitle')}
{/* Warning message */}

{t('backup.message')}

⚠️ {t('backup.warning')}

{/* Action buttons - stacked on mobile */}
{/* Dismiss link */}
); }