diff --git a/frontend/src/lib/components/DocumentCard.svelte b/frontend/src/lib/components/DocumentCard.svelte
index 274d636..9f6a3c1 100644
--- a/frontend/src/lib/components/DocumentCard.svelte
+++ b/frontend/src/lib/components/DocumentCard.svelte
@@ -2,7 +2,7 @@
import FormatIcon from './FormatIcon.svelte';
import TagPill from './TagPill.svelte';
- let { doc, showDomain = true } = $props();
+ let { doc, showDomain = true, selected = false, onselect = null } = $props();
function formatDate(dateStr) {
if (!dateStr) return '';
@@ -23,9 +23,13 @@
}
- { e.preventDefault(); onselect(doc); } : undefined}
+ class="flex items-start gap-3 p-3 bg-[var(--surface)] border rounded-lg hover:border-[var(--accent)] transition-colors group w-full text-left
+ {selected ? 'border-[var(--accent)] bg-[var(--accent)]/5' : 'border-[var(--border)]'}"
>
@@ -76,4 +80,4 @@
{formatSize(doc.file_size)}
{/if}
-
+
diff --git a/frontend/src/lib/components/PreviewPanel.svelte b/frontend/src/lib/components/PreviewPanel.svelte
new file mode 100644
index 0000000..603a14f
--- /dev/null
+++ b/frontend/src/lib/components/PreviewPanel.svelte
@@ -0,0 +1,119 @@
+
+
+
diff --git a/frontend/src/routes/documents/+page.svelte b/frontend/src/routes/documents/+page.svelte
index 89dc07d..bfdf3e0 100644
--- a/frontend/src/routes/documents/+page.svelte
+++ b/frontend/src/routes/documents/+page.svelte
@@ -4,8 +4,10 @@
import { api } from '$lib/api';
import { addToast } from '$lib/stores/ui';
import DocumentCard from '$lib/components/DocumentCard.svelte';
+ import PreviewPanel from '$lib/components/PreviewPanel.svelte';
let documents = $state([]);
+ let selectedDoc = $state(null);
let total = $state(0);
let loading = $state(true);
let searchQuery = $state('');
@@ -29,6 +31,8 @@
searchQuery = urlQ;
searchMode = urlMode;
+ selectedDoc = null; // 필터 변경 시 선택 해제
+
if (urlQ) {
doSearch(urlQ, urlMode);
} else {
@@ -112,9 +116,15 @@
let totalPages = $derived(Math.ceil(total / 20));
let items = $derived(searchResults || documents);
let hasActiveFilters = $derived(!!filterDomain || !!filterSubGroup || !!searchQuery);
+
+ function selectDoc(doc) {
+ selectedDoc = selectedDoc?.id === doc.id ? null : doc;
+ }
-
+
+
+
+
+
+{#if selectedDoc}
+
+
selectedDoc = null} />
+
+{/if}
+