File upload
The file-upload component (.file-upload) wraps a real native <input type="file"> in a styled dropzone, giving you click-to-browse and drag-and-drop while keeping the native input as the single source of truth — it still participates in form submission, validation, and FormData exactly as an unstyled input would. The visible dashed dropzone is a <label>, so clicking anywhere on it opens the OS file picker with no JavaScript required. flickui.js progressively enhances it: mirroring the input's FileList into a .file-upload-list (one card per file, with a remove button), highlighting the dropzone while a drag is over it, and keeping the input in sync when files are dropped or removed.
<div class="file-upload">
<label class="file-upload-dropzone">
<input type="file" class="file-upload-input" multiple>
<span class="file-upload-icon" aria-hidden="true">↥</span>
<span class="file-upload-prompt">
<strong class="file-upload-title">Drop files here or browse</strong>
<span class="file-upload-hint">PNG, JPG up to 10 MB</span>
</span>
</label>
<ul class="file-upload-list" aria-live="polite"></ul>
</div>