<div class="space-y-4" ...attributes>
    {{#if this.queueFile.isRunning}}
        <div
            class="dropzone w-full rounded-lg px-4 py-8 bg-gray-50 dark:bg-gray-900 bg-opacity-25 text-gray-900 dark:text-white text-center flex flex-col items-center justify-center border-2 border-dashed border-gray-200 dark:border-indigo-500"
        >
            <div class="flex items-center justify-center py-5">
                <Spinner class="text-sm dar:text-gray-100" @loadingMessage="Uploading..." />
            </div>
        </div>
    {{else}}
        {{#let (file-queue name="files" onFileAdded=(perform this.queueFile) accept=this.acceptedFileTypes) as |queue|}}
            <FileDropzone @queue={{queue}} class="dropzone file-dropzone" as |dropzone|>
                {{#if dropzone.active}}
                    {{#if dropzone.valid}}
                        {{t "component.dropzone.drop-to-upload"}}
                    {{else}}
                        {{t "component.dropzone.invalid"}}
                    {{/if}}
                {{else if queue.files.length}}
                    <div class="my-2">
                        <FaIcon @icon="folder-open" class="text-indigo-500 mr-2" />
                        {{t "component.dropzone.files-ready-for-upload" numOfFiles=(pluralize queue.files.length (t "component.dropzone.file"))}}
                    </div>
                    <div class="my-2">({{queue.progress}}%)</div>
                {{else}}
                    <h4 class="font-semibold">
                        <FaIcon @icon="folder-open" @size="lg" class="text-indigo-500 mr-2" />
                        {{t "component.dropzone.upload-documents-files"}}
                    </h4>
                    <div>
                        {{#if dropzone.supported}}
                            <p class="text-sm my-5">{{t "component.dropzone.dropzone-supported-files"}}</p>
                        {{/if}}
                        <FileUpload @name="files" @for="files" @accept={{this.acceptedFileTypes}} @multiple={{true}} @onFileAdded={{perform this.queueFile}}>
                            <a tabindex={{0}} class="btn btn-magic cursor-pointer ml-1">{{t "component.dropzone.or-select-button-text"}}</a>
                        </FileUpload>
                    </div>
                {{/if}}
            </FileDropzone>
        {{/let}}
    {{/if}}
    {{#if this.uploadQueue}}
        <div class="mx-0.5">
            <div class="flex items-center justify-between">
                <span class="leading-6 text-sm font-semibold dark:text-gray-100">{{t "component.dropzone.upload-queue"}}</span>
            </div>
            <div class="space-y-2 mb-2">
                {{#each this.uploadQueue as |file|}}
                    <div class="flex items-center justify-between bg-blue-100 border border-blue-800 dark:border-blue-800 py-1.5 shadow-sm rounded-lg px-4">
                        <div class="text-xs text-blue-900 truncate">{{truncate-filename file.name 50}}</div>
                        <div class="flex items-center text-sm">
                            <Spinner class="text-blue-900 mr-2" />
                            <span class="font-bold text-blue-900">{{round file.progress}}%</span>
                        </div>
                    </div>
                {{/each}}
            </div>
        </div>
    {{/if}}
    <div>
        <div class="grid grid-cols-2 md:grid-cols-4 gap-2">
            {{#each @files as |file|}}
                <File @file={{file}} @onDelete={{perform this.removeFile file}} />
            {{/each}}
        </div>
    </div>
</div>