JSFiddle - React, Tailwind, and code Playground

HTML

<h1>Regular Example</h1>
<p>Drag files and/or directories to the box below!</p>

<div id="dropzone">
    <div id="boxtitle">
        Drop Files Here
    </div>
</div>

<h2>Directory tree:</h2>

<ul id="listing">
</ul>

CSS

#dropzone {
            text-align: center;
            width: 300px;
            height: 100px;
            margin: 10px;
            padding: 10px;
            border: 4px dashed red;
            border-radius: 10px;
        }

        #boxtitle {
            display: table-cell;
            vertical-align: middle;
            text-align: center;
            color: black;
            font: bold 2em "Arial", sans-serif;
            width: 300px;
            height: 100px;
        }

        body {
            font: 14px "Arial", sans-serif;
        }

JavaScript

var dropzone = document.getElementById("dropzone");
    var listing = document.getElementById("listing");

    function scanFiles(item, container) {
        var elem = document.createElement("li");
        elem.innerHTML = item.name;
        container.appendChild(elem);

        if (item.isDirectory) {
            var directoryReader = item.createReader();
            var directoryContainer = document.createElement("ol");
            container.appendChild(directoryContainer);

            directoryReader.readEntries(function (entries) {
                entries.forEach(function (entry) {
                    scanFiles(entry, directoryContainer);
                });
            });
        }
    }

    dropzone.addEventListener("dragover", function (event) {
        event.preventDefault();
    }, false);

    dropzone.addEventListener("drop", function (event) {
        var items = event.dataTransfer.items;

        event.preventDefault();
        listing.innerHTML = "";

        for (var i = 0; i < items.length; i++) {
            var item = items[i].webkitGetAsEntry();

            if (item) {
                scanFiles(item, listing);
            }
        }
    }, false);