import { useState } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { FileVideo, FileArchive, FileText, FileImage, Database, Copy, Share2, Eye, BarChart3, Link2, Trash2, Download, } from 'lucide-react' import { mockFiles } from '../data/mockData.js' const iconMap = { video: FileVideo, archive: FileArchive, file: FileText, image: FileImage, database: Database, } const statusColors = { Shared: 'text-accent', Processing: 'text-warning', Ready: 'text-success', Downloaded: 'text-secondary', } export default function FileCards() { const [files] = useState(mockFiles) const [selected, setSelected] = useState(null) const [copied, setCopied] = useState(false) const copyUrl = (file) => { const url = `https://jorki.ai/f/${Math.random().toString(36).slice(2, 8).toUpperCase()}` navigator.clipboard?.writeText(url) setCopied(true) setTimeout(() => setCopied(false), 2000) } return (
{files.map((file, i) => { const Icon = iconMap[file.icon] || FileText return ( setSelected(file.name)} onHoverEnd={() => setSelected(null)} className="glass rounded-2xl p-5 group cursor-pointer" > {/* Header */}
{file.name}
{file.size}
{file.status}
{/* Stats */}
{file.downloads} downloads {file.status === 'Shared' ? 'Public' : 'Private'}
{/* Actions */} {selected === file.name && ( )} {selected !== file.name && (
Hover for actions jorki.ai/f/ยทยทยท
)}
) })}
{/* Upload zone */} Drop files here to index and share
) }