From c885b5be27d985ed13533254db771f38f4d4dd93 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Mon, 6 Apr 2026 12:24:32 +0900 Subject: [PATCH] =?UTF-8?q?fix:=203+4=EB=8B=A8=EA=B3=84=20=E2=80=94=20?= =?UTF-8?q?=EB=B0=98=EC=9D=91=ED=98=95/=EC=97=90=EB=9F=AC=EB=B6=84?= =?UTF-8?q?=EA=B8=B0/a11y/Synology=20URL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DocumentCard: window.innerWidth → matchMedia (반응형 정확) - documents/[id]: 로딩 상태 3분기 (loading/not_found/network) - documents/[id]: Synology URL 하드코딩 → edit_url fallback - DocumentCard: aria-label 추가 - Toast: aria-live 이미 적용 (1단계) Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/lib/components/DocumentCard.svelte | 10 ++++++++-- frontend/src/routes/documents/[id]/+page.svelte | 15 +++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/frontend/src/lib/components/DocumentCard.svelte b/frontend/src/lib/components/DocumentCard.svelte index 2b4f95c..3606363 100644 --- a/frontend/src/lib/components/DocumentCard.svelte +++ b/frontend/src/lib/components/DocumentCard.svelte @@ -35,9 +35,14 @@ let domainColor = $derived(DOMAIN_COLORS[doc.ai_domain] || 'var(--border)'); + // 반응형: CSS media query matchMedia 사용 + let isDesktop = $state(typeof window !== 'undefined' ? window.matchMedia('(min-width: 1024px)').matches : true); + if (typeof window !== 'undefined') { + window.matchMedia('(min-width: 1024px)').addEventListener('change', (e) => isDesktop = e.matches); + } + function handleClick() { - // 모바일에서는 항상 detail 페이지로 이동 - if (window.innerWidth < 1024) { + if (!isDesktop) { goto(`/documents/${doc.id}`); return; } @@ -51,6 +56,7 @@ + {:else if doc}
@@ -76,7 +87,7 @@

Synology Office 문서