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; + } -
+
+ +
{#each items as doc} - + {/each}
@@ -203,3 +218,11 @@ {/if} {/if}
+ + +{#if selectedDoc} + +{/if} +