import { Upload } from "lucide-react"; import React from "react"; interface DropZoneProps { onInstall: (paths: string[]) => void; } const DropZone: React.FC = ({ onInstall }) => { const handleSelectFile = async () => { try { const { open } = await import("@tauri-apps/plugin-dialog"); const selected = await open({ multiple: true, filters: [ { name: "AppImage", extensions: ["AppImage", "appimage"] }, { name: "DEB Package", extensions: ["deb"] }, { name: "RPM Package", extensions: ["rpm"] }, { name: "Executable", extensions: ["exe", "msi", "sh", "bin", "run"] }, { name: "All Files", extensions: ["*"] }, ], }); if (typeof selected === "string") { onInstall([selected]); } else if (Array.isArray(selected)) { onInstall(selected.filter((p): p is string => typeof p === "string")); } } catch (err) { console.error(err); } }; return (
Drag and drop an .AppImage, .deb, .rpm, or executable file here, or click to browse
); }; export default DropZone;