From 1b21d9bb536f25c3a087d71d619dcabc7b3fccab Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Mon, 6 Apr 2026 12:16:45 +0900 Subject: [PATCH] =?UTF-8?q?feat:=202=EB=8B=A8=EA=B3=84=20=E2=80=94=20DEVON?= =?UTF-8?q?think=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=B8=94=20=EB=B7=B0=20+=20=EC=B9=B4=EB=93=9C/=ED=85=8C?= =?UTF-8?q?=EC=9D=B4=EB=B8=94=20=ED=86=A0=EA=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DocumentTable.svelte: 컬럼 정렬(stable sort), domain 색상 바, 포맷 아이콘 - 뷰 모드 토글 버튼 (카드 ↔ 테이블) - localStorage로 뷰 모드 + 정렬 상태 기억 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/lib/components/DocumentTable.svelte | 142 ++++++++++++++++++ frontend/src/routes/documents/+page.svelte | 49 ++++-- 2 files changed, 181 insertions(+), 10 deletions(-) create mode 100644 frontend/src/lib/components/DocumentTable.svelte diff --git a/frontend/src/lib/components/DocumentTable.svelte b/frontend/src/lib/components/DocumentTable.svelte new file mode 100644 index 0000000..c658d8a --- /dev/null +++ b/frontend/src/lib/components/DocumentTable.svelte @@ -0,0 +1,142 @@ + + +
+ +
+ {#each columns as col} + + {/each} +
+ + + {#each sortedItems() as doc} + + {/each} +
diff --git a/frontend/src/routes/documents/+page.svelte b/frontend/src/routes/documents/+page.svelte index 9f7b3a9..4c95469 100644 --- a/frontend/src/routes/documents/+page.svelte +++ b/frontend/src/routes/documents/+page.svelte @@ -4,11 +4,20 @@ import { api } from '$lib/api'; import { addToast } from '$lib/stores/ui'; import { Info } from 'lucide-svelte'; + import { List, LayoutGrid } from 'lucide-svelte'; import DocumentCard from '$lib/components/DocumentCard.svelte'; + import DocumentTable from '$lib/components/DocumentTable.svelte'; import PreviewPanel from '$lib/components/PreviewPanel.svelte'; import DocumentViewer from '$lib/components/DocumentViewer.svelte'; import UploadDropzone from '$lib/components/UploadDropzone.svelte'; + // 뷰 모드 (localStorage 기억) + let viewMode = $state(typeof localStorage !== 'undefined' ? (localStorage.getItem('viewMode') || 'card') : 'card'); + function toggleViewMode() { + viewMode = viewMode === 'card' ? 'table' : 'card'; + if (typeof localStorage !== 'undefined') localStorage.setItem('viewMode', viewMode); + } + let documents = $state([]); let total = $state(0); let loading = $state(true); @@ -168,6 +177,18 @@ + {#if selectedDoc}