diff --git a/frontend/src/lib/components/UploadDropzone.svelte b/frontend/src/lib/components/UploadDropzone.svelte
new file mode 100644
index 0000000..47af868
--- /dev/null
+++ b/frontend/src/lib/components/UploadDropzone.svelte
@@ -0,0 +1,114 @@
+
+
+
+
+
+{#if dragging}
+
+{/if}
+
+
+{#if uploading && uploadFiles.length > 0}
+
+
업로드 중...
+
+ {#each uploadFiles as f}
+
+ {f.name}
+
+ {f.status === 'done' ? '✓' : f.status === 'failed' ? '✗' : f.status === 'uploading' ? '↑' : '…'}
+
+
+ {/each}
+
+
+{/if}
diff --git a/frontend/src/routes/documents/+page.svelte b/frontend/src/routes/documents/+page.svelte
index e7480ee..d4cf1f6 100644
--- a/frontend/src/routes/documents/+page.svelte
+++ b/frontend/src/routes/documents/+page.svelte
@@ -7,6 +7,7 @@
import DocumentCard from '$lib/components/DocumentCard.svelte';
import PreviewPanel from '$lib/components/PreviewPanel.svelte';
import DocumentViewer from '$lib/components/DocumentViewer.svelte';
+ import UploadDropzone from '$lib/components/UploadDropzone.svelte';
let documents = $state([]);
let total = $state(0);
@@ -135,6 +136,9 @@