import React, { useEffect, useState } from 'react'; import { Download, Package, Server, X } from 'lucide-react'; import { formatBytes } from '../utils/formatters'; interface DownloadModalProps { isOpen: boolean; onClose: () => void; } const DownloadModal: React.FC = ({ isOpen, onClose }) => { const [sizes, setSizes] = useState({ full: 0, backend: 0 }); useEffect(() => { if (isOpen) { // Fetch sizes const fetchSize = async (url: string, key: 'full' | 'backend') => { try { const res = await fetch(url, { method: 'HEAD' }); const len = res.headers.get('content-length'); if (len) setSizes(prev => ({ ...prev, [key]: parseInt(len, 10) })); } catch (e) { console.error("Failed to fetch size", e); } }; fetchSize(`${import.meta.env.BASE_URL}webftp.exe`, 'full'); fetchSize(`${import.meta.env.BASE_URL}webftp-backend.exe`, 'backend'); } }, [isOpen]); if (!isOpen) return null; return (
{/* Header */}

WebZilla 다운로드 센터

{/* Content */}

사용 환경에 맞는 실행 파일을 선택하여 다운로드하세요.

{/* Option 1: Full Version */}

단일 실행 파일 (All-in-One)

{sizes.full > 0 ? formatBytes(sizes.full) : 'Loading...'}

설치가 필요 없으며, 프론트엔드와 백엔드가 하나로 통합되어 있습니다. 가장 추천하는 방식입니다.

{/* Option 2: Backend Only */}

백엔드 전용 (Backend Only)

{sizes.backend > 0 ? formatBytes(sizes.backend) : 'Loading...'}

정적 파일 호스팅을 별도로 하거나, 서버 리소스를 최소화해야 할 때 사용하세요. (프론트엔드 파일 미포함)

{/* Footer */}
); }; export default DownloadModal;