// 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;