File Upload
A file upload component allows uploading files and displaying the list of uploaded files.
Drop your images here.
 ---
---
<div x-cloak x-data x-file-upload="{ allowDrop: true, accept: 'image/png, image/jpeg' }">  <div x-file-upload:dropzone>    <input x-file-upload:hidden-input />    <div data-scope="file-upload" data-part="icon">      <i class="i-lucide-upload-cloud w-7 h-7"></i>    </div>    <div data-scope="file-upload" data-part="description">Drop your images here.</div>  </div>
  <button x-file-upload:trigger>Select Iamges</button>
  <ul x-file-upload:item-group>    <template x-for="file in $fileUpload.acceptedFiles" :key="file.name">      <li x-file-upload:item="file">        <span x-file-upload:item-name="file" x-text="file.name" :title="file.name"></span>        <button x-file-upload:item-delete-trigger="file"><i class="i-lucide-x w-4 h-4"></i></button>      </li>    </template>  </ul></div>
<style>  [data-part="root"] {    @apply flex flex-col gap-4 bg-white px-6 py-4 w-72 min-h-48 rounded-md border border-zinc-200/60;  }
  [data-part="dropzone"] {    @apply flex flex-col gap-2 p-4 border-2 border-dashed border-zinc-300/60 rounded-md cursor-pointer;  }
  [data-part="icon"] {    @apply inline-flex justify-center items-center text-zinc-700;  }
  [data-part="description"] {    @apply text-center text-zinc-700;  }
  [data-part="trigger"] {    @apply w-full inline-flex justify-center items-center gap-2 px-2.5 py-1 min-h-9 rounded border text-sm font-medium bg-white text-zinc-700 hover:bg-zinc-100 border-zinc-300/60 cursor-pointer;  }
  [data-part="item-group"] {    @apply flex flex-col gap-2 p-0;  }
  [data-part="item"] {    @apply list-none p-0 flex justify-between items-center gap-2;  }
  [data-part="item"] > span {    @apply line-clamp-1 text-sm text-zinc-600;  }
  [data-part="item-delete-trigger"] {    @apply shrink-0 inline-flex justify-center items-center w-7 h-7 rounded border bg-white text-zinc-700 hover:bg-zinc-100 border-zinc-300/60 cursor-pointer;  }</style>