/** * UpdateBanner - Slim top banner for download progress and restart prompt. * * Visible during download and after the update is ready to install. */ import { useStore } from '@renderer/store'; import { CheckCircle, Loader2, X } from 'lucide-react'; export const UpdateBanner = (): React.JSX.Element | null => { const showUpdateBanner = useStore((s) => s.showUpdateBanner); const updateStatus = useStore((s) => s.updateStatus); const downloadProgress = useStore((s) => s.downloadProgress); const availableVersion = useStore((s) => s.availableVersion); const installUpdate = useStore((s) => s.installUpdate); const dismissUpdateBanner = useStore((s) => s.dismissUpdateBanner); if (!showUpdateBanner || (updateStatus !== 'downloading' && updateStatus !== 'downloaded')) { return null; } const isDownloading = updateStatus === 'downloading'; const percent = Math.round(downloadProgress); const clampedPercent = Math.max(0, Math.min(percent, 100)); return (