import React, { useState } from "react"; import { Box, Flex, Text } from "theme-ui"; function ImageDrop({ onDrop, dropText, children }) { const [dragging, setDragging] = useState(false); function handleImageDragEnter(event) { event.preventDefault(); event.stopPropagation(); setDragging(true); } function handleImageDragLeave(event) { event.preventDefault(); event.stopPropagation(); setDragging(false); } function handleImageDrop(event) { event.preventDefault(); event.stopPropagation(); const files = event.dataTransfer.files; let imageFiles = []; for (let file of files) { if (file.type.startsWith("image")) { imageFiles.push(file); } } onDrop(imageFiles); setDragging(false); } return ( {children} {dragging && ( { e.preventDefault(); e.stopPropagation(); e.dataTransfer.dropEffect = "copy"; }} onDrop={handleImageDrop} > {dropText || "Drop image to upload"} )} ); } export default ImageDrop;