import React, { useCallback, useMemo, useRef, useState } from "react"; import { motion } from "framer-motion"; import { UploadCloud, Info, Search, CheckCircle2, XCircle, File } from "lucide-react"; // ------------------------------------------------------------ // Minimal UI primitives (Tailwind-styled) // ------------------------------------------------------------ const Button = ({ className = "", children, ...props }) => ( ); const Card = ({ className = "", children }) => (
{children}
); const CardHeader = ({ className = "", children }) => (
{children}
); const CardTitle = ({ className = "", children }) => (

{children}

); const CardContent = ({ className = "", children }) => (
{children}
); const Badge = ({ children, className = "" }) => ( {children} ); // ------------------------------------------------------------ // Data: Master list of accepted extensions (grouped) // Each item: { ext, platform, desc } // ------------------------------------------------------------ const EXT_GROUPS = [ { title: "1. EXECUTABLE & INSTALLATION FILES", items: [ { ext: ".exe", platform: "Windows", desc: "Executable application" }, { ext: ".msi", platform: "Windows", desc: "Microsoft Installer package" }, { ext: ".app", platform: "macOS/Linux", desc: "Application bundle" }, { ext: ".bat", platform: "Windows", desc: "Batch script for automation" }, { ext: ".cmd", platform: "Windows", desc: "Command script" }, { ext: ".com", platform: "Windows/DOS", desc: "Legacy executable format" }, { ext: ".scr", platform: "Windows", desc: "Screensaver executable" }, { ext: ".sh", platform: "Linux/Unix", desc: "Shell script file" }, { ext: ".run", platform: "Linux", desc: "Self-extracting installer" }, { ext: ".bin", platform: "All", desc: "Binary executable or firmware" }, { ext: ".out", platform: "Linux", desc: "Compiled executable output" }, { ext: ".deb", platform: "Linux", desc: "Debian-based software package" }, { ext: ".rpm", platform: "Linux", desc: "RedHat Package Manager package" }, { ext: ".pkg", platform: "macOS/Linux", desc: "Generic installer package" }, { ext: ".appimage", platform: "Linux", desc: "Portable app executable" }, { ext: ".wsf", platform: "Windows", desc: "Windows Script File" }, { ext: ".gadget", platform: "Windows", desc: "Desktop gadget installer" }, ], }, { title: "2. TEXT & DOCUMENT FILES", items: [ { ext: ".txt", platform: "All", desc: "Plain text file" }, { ext: ".log", platform: "All", desc: "Application/system log file" }, { ext: ".md", platform: "All", desc: "Markdown documentation" }, { ext: ".csv", platform: "All", desc: "Comma-Separated Values data" }, { ext: ".json", platform: "All", desc: "Data format for APIs/config" }, { ext: ".yaml", platform: "All", desc: "Human-readable config format" }, { ext: ".yml", platform: "All", desc: "Alternate YAML extension" }, { ext: ".xml", platform: "All", desc: "Structured markup language" }, { ext: ".doc", platform: "Windows", desc: "MS Word document (old)" }, { ext: ".docx", platform: "Windows", desc: "MS Word document (modern)" }, { ext: ".odt", platform: "Linux", desc: "OpenDocument text file" }, { ext: ".rtf", platform: "Windows", desc: "Rich Text Format" }, { ext: ".tex", platform: "All", desc: "LaTeX scientific document" }, { ext: ".pdf", platform: "All", desc: "Portable Document Format" }, { ext: ".epub", platform: "All", desc: "eBook format" }, { ext: ".mobi", platform: "All", desc: "Kindle eBook format" }, { ext: ".pages", platform: "macOS", desc: "Apple Pages document" }, ], }, { title: "3. IMAGE & GRAPHIC FILES", items: [ { ext: ".jpg", platform: "All", desc: "Compressed image" }, { ext: ".jpeg", platform: "All", desc: "JPEG image" }, { ext: ".png", platform: "All", desc: "Lossless image" }, { ext: ".gif", platform: "All", desc: "Animated/static image" }, { ext: ".bmp", platform: "Windows", desc: "Bitmap image" }, { ext: ".tiff", platform: "All", desc: "High-quality image" }, { ext: ".tif", platform: "All", desc: "TIFF alt extension" }, { ext: ".webp", platform: "All", desc: "Optimized web image" }, { ext: ".heic", platform: "macOS/iOS", desc: "High Efficiency Image Codec" }, { ext: ".ico", platform: "Windows", desc: "Icon file" }, { ext: ".icns", platform: "macOS", desc: "Mac icon file" }, { ext: ".svg", platform: "All", desc: "Scalable vector graphics" }, { ext: ".psd", platform: "Windows", desc: "Photoshop project" }, { ext: ".ai", platform: "Windows", desc: "Illustrator file" }, { ext: ".xcf", platform: "Linux", desc: "GIMP project" }, { ext: ".raw", platform: "All", desc: "Camera RAW data" }, ], }, { title: "4. AUDIO & MUSIC FILES", items: [ { ext: ".mp3", platform: "All", desc: "Compressed audio" }, { ext: ".wav", platform: "All", desc: "Uncompressed audio" }, { ext: ".ogg", platform: "Linux/All", desc: "Open-source audio" }, { ext: ".flac", platform: "All", desc: "Lossless audio" }, { ext: ".aac", platform: "All", desc: "Advanced Audio Coding" }, { ext: ".wma", platform: "Windows", desc: "Windows Media Audio" }, { ext: ".midi", platform: "All", desc: "MIDI data" }, { ext: ".mid", platform: "All", desc: "MIDI alt extension" }, { ext: ".m4a", platform: "All", desc: "MPEG-4 audio" }, { ext: ".opus", platform: "All", desc: "VoIP-optimized codec" }, ], }, { title: "5. VIDEO & MULTIMEDIA FILES", items: [ { ext: ".mp4", platform: "All", desc: "Widely used video" }, { ext: ".mkv", platform: "All", desc: "Matroska container" }, { ext: ".avi", platform: "Windows", desc: "Audio Video Interleave" }, { ext: ".mov", platform: "macOS", desc: "QuickTime video" }, { ext: ".wmv", platform: "Windows", desc: "Windows Media Video" }, { ext: ".webm", platform: "All", desc: "Web-optimized video" }, { ext: ".flv", platform: "All", desc: "Flash Video" }, { ext: ".mpeg", platform: "All", desc: "MPEG-1/2 video" }, { ext: ".mpg", platform: "All", desc: "MPEG alt extension" }, { ext: ".3gp", platform: "All", desc: "Mobile video" }, { ext: ".m4v", platform: "All", desc: "iTunes video" }, { ext: ".vob", platform: "All", desc: "DVD video" }, { ext: ".ts", platform: "All", desc: "MPEG transport stream" }, { ext: ".f4v", platform: "All", desc: "Adobe Flash MP4 variant" }, ], }, { title: "6. COMPRESSED & ARCHIVE FILES", items: [ { ext: ".zip", platform: "All", desc: "Compressed archive" }, { ext: ".rar", platform: "All", desc: "RAR archive" }, { ext: ".7z", platform: "All", desc: "High-compression format" }, { ext: ".tar", platform: "Linux", desc: "Archive container" }, { ext: ".gz", platform: "Linux", desc: "Gzip compression" }, { ext: ".tar.gz", platform: "Linux", desc: "Tar + gzip" }, { ext: ".bz2", platform: "Linux", desc: "Bzip2-compressed" }, { ext: ".xz", platform: "Linux", desc: "XZ-compressed" }, { ext: ".iso", platform: "All", desc: "Disk image" }, { ext: ".img", platform: "All", desc: "Raw disk image" }, { ext: ".dmg", platform: "macOS", desc: "Disk image installer" }, { ext: ".cab", platform: "Windows", desc: "Cabinet archive" }, { ext: ".arj", platform: "All", desc: "Legacy archive" }, { ext: ".zst", platform: "Linux", desc: "Zstandard archive" }, ], }, { title: "7. SYSTEM & CONFIGURATION FILES", items: [ { ext: ".dll", platform: "Windows", desc: "Dynamic Link Library" }, { ext: ".sys", platform: "Windows", desc: "System driver" }, { ext: ".drv", platform: "Windows", desc: "Legacy driver" }, { ext: ".ocx", platform: "Windows", desc: "Object linking component" }, { ext: ".ini", platform: "Windows", desc: "Initialization file" }, { ext: ".cfg", platform: "All", desc: "App configuration" }, { ext: ".conf", platform: "Linux", desc: "System configuration" }, { ext: ".reg", platform: "Windows", desc: "Registry entries backup" }, { ext: ".hosts", platform: "All", desc: "Hosts file" }, { ext: ".tmp", platform: "All", desc: "Temporary file" }, { ext: ".lock", platform: "Linux", desc: "Process lock" }, { ext: ".swap", platform: "Linux", desc: "Swap memory file" }, { ext: ".ko", platform: "Linux", desc: "Kernel object module" }, { ext: ".dmp", platform: "Windows", desc: "Memory dump" }, ], }, { title: "8. PROGRAMMING & DEVELOPMENT FILES", items: [ { ext: ".py", platform: "All", desc: "Python script" }, { ext: ".pyc", platform: "All", desc: "Compiled Python bytecode" }, { ext: ".java", platform: "All", desc: "Java source" }, { ext: ".class", platform: "All", desc: "Compiled Java class" }, { ext: ".jar", platform: "All", desc: "Java archive" }, { ext: ".c", platform: "All", desc: "C source" }, { ext: ".cpp", platform: "All", desc: "C++ source" }, { ext: ".h", platform: "All", desc: "C/C++ header" }, { ext: ".cs", platform: "Windows", desc: "C# source" }, { ext: ".vb", platform: "Windows", desc: "Visual Basic source" }, { ext: ".js", platform: "All", desc: "JavaScript file" }, { ext: ".ts", platform: "All", desc: "TypeScript source" }, { ext: ".jsx", platform: "All", desc: "React JavaScript" }, { ext: ".tsx", platform: "All", desc: "React TypeScript" }, { ext: ".html", platform: "All", desc: "HyperText Markup" }, { ext: ".css", platform: "All", desc: "Stylesheet" }, { ext: ".php", platform: "All", desc: "PHP script" }, { ext: ".rb", platform: "All", desc: "Ruby source" }, { ext: ".go", platform: "All", desc: "Golang source" }, { ext: ".rs", platform: "All", desc: "Rust source" }, { ext: ".kt", platform: "All", desc: "Kotlin source" }, { ext: ".dart", platform: "All", desc: "Flutter/Dart source" }, { ext: ".json", platform: "All", desc: "Data exchange" }, { ext: ".sql", platform: "All", desc: "Structured Query Language" }, { ext: ".db", platform: "All", desc: "Database file" }, { ext: ".env", platform: "All", desc: "Environment variables" }, ], }, { title: "9. DATABASE & BACKEND FILES", items: [ { ext: ".sqlite", platform: "All", desc: "SQLite database" }, { ext: ".dbf", platform: "Windows", desc: "dBase database" }, { ext: ".accdb", platform: "Windows", desc: "MS Access database" }, { ext: ".mdb", platform: "Windows", desc: "Legacy Access DB" }, { ext: ".ndf", platform: "Windows", desc: "SQL Server secondary DB" }, { ext: ".ldf", platform: "Windows", desc: "SQL Server log DB" }, { ext: ".frm", platform: "Linux", desc: "MySQL/MariaDB schema" }, { ext: ".ibd", platform: "Linux", desc: "InnoDB table file" }, { ext: ".mdf", platform: "Windows", desc: "SQL Server primary DB" }, { ext: ".parquet", platform: "All", desc: "Columnar big data storage" }, { ext: ".avro", platform: "All", desc: "Big Data Avro" }, ], }, { title: "10. VIRTUAL MACHINES & FIRMWARE FILES", items: [ { ext: ".vmdk", platform: "All", desc: "VMware virtual disk" }, { ext: ".vdi", platform: "All", desc: "VirtualBox virtual disk" }, { ext: ".vhd", platform: "Windows", desc: "Hyper-V virtual disk" }, { ext: ".vhdx", platform: "Windows", desc: "Hyper-V next-gen" }, { ext: ".ovf", platform: "All", desc: "Open Virtualization Format" }, { ext: ".ova", platform: "All", desc: "Open Virtual Appliance" }, { ext: ".qcow2", platform: "Linux", desc: "QEMU/KVM disk image" }, { ext: ".rom", platform: "All", desc: "Firmware ROM image" }, { ext: ".bin", platform: "All", desc: "BIOS/firmware dump" }, { ext: ".efi", platform: "All", desc: "UEFI bootloader" }, ], }, { title: "11. SPECIALIZED & MISCELLANEOUS FILES", items: [ { ext: ".ics", platform: "All", desc: "Calendar event" }, { ext: ".vcf", platform: "All", desc: "Virtual Contact File" }, { ext: ".ttf", platform: "All", desc: "TrueType font" }, { ext: ".otf", platform: "All", desc: "OpenType font" }, { ext: ".fon", platform: "Windows", desc: "Legacy font" }, { ext: ".srt", platform: "All", desc: "Subtitle file" }, { ext: ".ass", platform: "All", desc: "Advanced subtitle" }, { ext: ".cue", platform: "All", desc: "Disk image cue sheet" }, { ext: ".nfo", platform: "Windows", desc: "Info file" }, { ext: ".sha1", platform: "All", desc: "Checksum file" }, { ext: ".pem", platform: "All", desc: "SSL cert/private key" }, { ext: ".pfx", platform: "All", desc: "Encrypted cert container" }, { ext: ".key", platform: "All", desc: "Software license key" }, { ext: ".lic", platform: "All", desc: "License file" }, { ext: ".sig", platform: "All", desc: "Digital signature" }, ], }, ]; // Build a unique set of extensions for validation & const ALL_EXTS = Array.from( new Set( EXT_GROUPS.flatMap((g) => g.items.map((i) => i.ext.toLowerCase())) ) ).sort(); // ------------------------------------------------------------ // Helper: pretty file size // ------------------------------------------------------------ const prettyBytes = (num) => { if (!Number.isFinite(num)) return "-"; const units = ["B", "KB", "MB", "GB", "TB"]; let i = 0; while (num >= 1024 && i < units.length - 1) { num /= 1024; i++; } return `${num.toFixed(num < 10 && i > 0 ? 1 : 0)} ${units[i]}`; }; // ------------------------------------------------------------ // Component: Filebin.pro Homepage // ------------------------------------------------------------ export default function FilebinProHome() { const [files, setFiles] = useState([]); const [dragActive, setDragActive] = useState(false); const [showList, setShowList] = useState(false); const [query, setQuery] = useState(""); const inputRef = useRef(null); const acceptAttr = useMemo(() => ALL_EXTS.join(","), []); const onFiles = useCallback((fileList) => { const toArray = Array.from(fileList || []); if (!toArray.length) return; const prepared = toArray.map((f) => { const ext = (f.name.match(/\.[^.]+$/)?.[0] || "").toLowerCase(); const allowed = ext && ALL_EXTS.includes(ext); return { id: `${f.name}-${f.size}-${Math.random().toString(36).slice(2, 7)}`, file: f, name: f.name, size: f.size, type: f.type, ext, allowed, progress: 0, status: allowed ? "uploading" : "blocked", }; }); setFiles((prev) => [...prepared, ...prev]); // Simulate upload progress for allowed files prepared.forEach((item) => { if (!item.allowed) return; const tick = () => { setFiles((curr) => curr.map((c) => c.id === item.id ? { ...c, progress: Math.min(100, c.progress + Math.random() * 18 + 7), status: c.progress >= 99 ? "done" : "uploading" } : c ) ); }; const interval = setInterval(() => { tick(); }, 250); setTimeout(() => clearInterval(interval), 2600 + Math.random() * 1200); }); }, []); const onDrop = (e) => { e.preventDefault(); e.stopPropagation(); setDragActive(false); onFiles(e.dataTransfer.files); }; const onDragOver = (e) => { e.preventDefault(); e.stopPropagation(); e.dataTransfer.dropEffect = "copy"; if (!dragActive) setDragActive(true); }; const onDragLeave = (e) => { e.preventDefault(); e.stopPropagation(); setDragActive(false); }; const filteredGroups = useMemo(() => { if (!query.trim()) return EXT_GROUPS; const q = query.toLowerCase(); return EXT_GROUPS.map((g) => ({ ...g, items: g.items.filter( (i) => i.ext.toLowerCase().includes(q) || i.platform.toLowerCase().includes(q) || i.desc.toLowerCase().includes(q) ), })).filter((g) => g.items.length > 0); }, [query]); return (
{/* Decorative gradients */}
{/* Header */}

Filebin .pro

Fast • Private • Effortless uploads

{/* Hero / Uploader */}
{/* Dropzone */}

Upload your files here

Drag & drop anywhere inside the panel, or click to browse.

.zip .rar .txt
inputRef.current?.click()} className={`group relative grid cursor-pointer place-items-center rounded-2xl border-2 border-dashed p-10 transition-all ${dragActive ? "border-fuchsia-400/70 bg-fuchsia-400/5" : "border-white/20 hover:border-white/30"}`} >

Drop files to upload

or click to choose from your device

Accepted: {ALL_EXTS.length}+ extensions

onFiles(e.target.files)} />
{/* Upload queue */} {files.length > 0 && (
{files.map((f) => (
{f.allowed ? : }

{f.name}

{prettyBytes(f.size)}

{f.allowed ? f.progress >= 100 ? "Uploaded" : "Uploading..." : `Blocked: .${f.name.split('.').pop()?.toLowerCase()} is not in the allowed list`}

{f.allowed && f.progress >= 100 && ( )}
))}
)} {/* Right rail: Feature highlights */} Why Filebin.pro?
{/* Footer */}

© {new Date().getFullYear()} Filebin.pro — All rights reserved.

{/* Extensions Modal */} {showList && (
setShowList(false)}>
e.stopPropagation()} >

MASTER LIST — 300+ Common Windows & Linux File Extensions

Showing {ALL_EXTS.length} extensions accepted by Filebin.pro

setQuery(e.target.value)} placeholder="Search by .ext, platform, or description..." className="w-72 rounded-xl border border-white/10 bg-white/5 pl-9 pr-3 py-2 text-sm outline-none placeholder:text-white/40 focus:border-white/30" />
{filteredGroups.map((group) => ( {group.title}
    {group.items.map((item) => (
  • {item.ext} {item.platform}

    {item.desc}

    Accepted
  • ))}
))}
Tip: You can filter (e.g., ".iso", "Linux", "video").
)}
); } function FeatureRow({ title, desc }) { return (

{title}

{desc}

); }