// Idle state — drop zone + recent + "why 10 layers" link. // Supports real file picking (drag-drop or click-to-browse). Falls back to // the mock scenario in app.jsx when useMocks is enabled in TweaksPanel. const { useState: useStateIdle, useRef: useRefIdle } = React; function IdleScreen({ onUpload, onPickRecent, onShowLayers, recent }){ const [over, setOver] = useStateIdle(false); const [hovering, setHovering] = useStateIdle(null); const fileInputRef = useRefIdle(null); const handleFile = (file) => { if (!file) return; onUpload(file); }; const handleBrowse = () => { if (fileInputRef.current) fileInputRef.current.click(); }; const handleInputChange = (e) => { const file = e.target.files && e.target.files[0]; if (file) handleFile(file); e.target.value = ''; }; const handleDrop = (e) => { e.preventDefault(); setOver(false); const file = e.dataTransfer.files && e.dataTransfer.files[0]; if (file) handleFile(file); }; return (
{/* Recent sidebar */} {/* Drop zone */}
{e.preventDefault(); setOver(true);}} onDragOver={(e)=>{e.preventDefault();}} onDragLeave={(e)=>{ if (e.target === e.currentTarget) setOver(false); }} onDrop={handleDrop} style={{padding:'40px 48px', display:'flex', flexDirection:'column', alignItems:'center', justifyContent:'center', gap:18}} >
▸ session ready · awaiting input
Drop document here
PDF· DOCX· TXT
max 10MB·min 100 words
v0.4.2 · engine warm · last index 4 min ago
); } window.IdleScreen = IdleScreen;