mirror of https://github.com/VERT-sh/VERT.git
fix: wtf realmy??
This commit is contained in:
parent
322ffa5023
commit
3db829fe70
|
|
@ -35,6 +35,7 @@
|
||||||
"@fontsource/azeret-mono": "^5.1.0",
|
"@fontsource/azeret-mono": "^5.1.0",
|
||||||
"@fontsource/lexend": "^5.1.1",
|
"@fontsource/lexend": "^5.1.1",
|
||||||
"@imagemagick/magick-wasm": "^0.0.31",
|
"@imagemagick/magick-wasm": "^0.0.31",
|
||||||
|
"clsx": "^2.1.1",
|
||||||
"lucide-svelte": "^0.456.0",
|
"lucide-svelte": "^0.456.0",
|
||||||
"svelte-adapter-bun": "^0.5.2",
|
"svelte-adapter-bun": "^0.5.2",
|
||||||
"wasm-vips": "^0.0.11"
|
"wasm-vips": "^0.0.11"
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,18 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Upload } from "lucide-svelte";
|
import { Upload } from "lucide-svelte";
|
||||||
|
import clsx from "clsx";
|
||||||
|
|
||||||
|
let fileList = $state<FileList | undefined>();
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
files: FileList | undefined;
|
files: File[] | undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$effect(() => {
|
||||||
|
if (!fileList) return;
|
||||||
|
files = Array.from(fileList);
|
||||||
|
});
|
||||||
|
|
||||||
let fileInput = $state<HTMLInputElement>();
|
let fileInput = $state<HTMLInputElement>();
|
||||||
let dragOver = $state(false);
|
let dragOver = $state(false);
|
||||||
|
|
||||||
|
|
@ -14,14 +22,27 @@
|
||||||
if (!fileInput) return;
|
if (!fileInput) return;
|
||||||
fileInput.click();
|
fileInput.click();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function drop(event: DragEvent) {
|
||||||
|
event.preventDefault();
|
||||||
|
dragOver = false;
|
||||||
|
if (!event.dataTransfer) return;
|
||||||
|
if (!files) files = Array.from(event.dataTransfer.files);
|
||||||
|
else files.push(...Array.from(event.dataTransfer.files));
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
onclick={upload}
|
onclick={upload}
|
||||||
ondragover={() => (dragOver = true)}
|
ondragover={() => (dragOver = true)}
|
||||||
ondragleave={() => (dragOver = false)}
|
ondragleave={() => (dragOver = false)}
|
||||||
class="file-uploader"
|
class={clsx(
|
||||||
class:_drag-over={dragOver}
|
"w-full h-80 max-w-screen-lg flex items-center justify-center cursor-pointer flex-col border-2 border-solid border-foreground-muted-alt rounded-2xl hover:scale-95 hover:opacity-70 transition-all duration-150 ease-out",
|
||||||
|
{
|
||||||
|
"scale-95 opacity-70": dragOver,
|
||||||
|
},
|
||||||
|
)}
|
||||||
|
ondrop={drop}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="size-16 rounded-full text-background bg-foreground flex items-center justify-center"
|
class="size-16 rounded-full text-background bg-foreground flex items-center justify-center"
|
||||||
|
|
@ -34,16 +55,10 @@
|
||||||
</p>
|
</p>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<input type="file" class="hidden" bind:files bind:this={fileInput} multiple />
|
<input
|
||||||
|
type="file"
|
||||||
<style>
|
class="hidden"
|
||||||
.file-uploader {
|
bind:files={fileList}
|
||||||
@apply w-full h-80 max-w-screen-lg flex items-center justify-center cursor-pointer
|
bind:this={fileInput}
|
||||||
flex-col border-2 border-solid border-foreground-muted-alt rounded-2xl
|
multiple
|
||||||
hover:scale-95 hover:opacity-70 transition-all duration-150 ease-out;
|
/>
|
||||||
}
|
|
||||||
|
|
||||||
.file-uploader._drag-over {
|
|
||||||
@apply scale-95 opacity-70;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue