Bonus

File upload dropzone

Drag area with in-progress file rows

Live preview
Create a file upload component with Tailwind CSS: a large dashed-border rounded-2xl dropzone with a centered icon tile, a bold "Drag files here" line, an underlined browse link, and a muted constraint line about accepted formats and max size, plus an empty list beneath it and a hidden row template. Then add the JavaScript that makes it a real uploader: highlight the zone while a file is dragged over it and reset on leave or drop, accept files from both the drop event and the file input, reject anything over the size limit with a red error row and a Retry link, and otherwise add a row showing the file-type badge, name, and human-readable size with a progress bar that fills as the upload advances before settling into a green completed state. Stub the actual transfer behind one clearly marked function so it can be swapped for a real XHR or fetch upload.