# File Dropzone Drag-and-drop file upload zone with click-to-upload fallback. ## Basic Example ```html ``` ## Multiple Files ```html ``` ## Accept Specific Types ```html ``` ## Drag State Add `.dragover` class via JavaScript when files are dragged over: ```javascript const dropzone = document.querySelector('.dropzone'); dropzone.addEventListener('dragover', (e) => { e.preventDefault(); dropzone.classList.add('dragover'); }); dropzone.addEventListener('dragleave', () => { dropzone.classList.remove('dragover'); }); dropzone.addEventListener('drop', (e) => { e.preventDefault(); dropzone.classList.remove('dragover'); // Handle files: e.dataTransfer.files }); ``` ## Icon Source Get icons from [Phosphor Icons](https://phosphoricons.com/). The upload icon shown above is the "UploadSimple" icon. ## CSS Variables - `--dropzone-padding` - Padding inside (default: `var(--pad-xxl)`) - `--dropzone-border-radius` - Border radius (default: `var(--br-m)`) ## Styling Details - Dashed border (`2px dashed var(--fg-2)`) - Centered flex layout for icon and text - File input is hidden but covers entire area - Click anywhere to trigger file picker - `.dragover` state shows accent color border ## See Also - [Forms](https://graffiti-ui.com/llms/forms.txt) - All form inputs