From 0269f24d723b2576cf50eb7d7635081fe1e52645 Mon Sep 17 00:00:00 2001 From: William Zujkowski Date: Wed, 1 Apr 2026 22:11:39 -0400 Subject: [PATCH] feat(web): persistent 3-column layout at 2xl viewport (#148) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - BaseLayout: main area becomes flex row at 2xl (≥1440px) - PrecedentDrawer: persistent right panel at 2xl, overlay below - Toggle button hidden at 2xl (panel always visible) - Overlay drawer hidden at 2xl (replaced by persistent panel) - Sticky header with section/case count - Statute page: wire PrecedentDrawer component with case annotations - Sidebar narrowed to w-60 at 2xl for space balance Responsive strategy: - ≥1440px: 3-column (nav 240px | statute flex-1 | precedent 320px) - 1024-1439px: 2-column (nav | statute, precedent as overlay) - <1024px: single column, bottom nav, precedent as modal Co-Authored-By: Claude Opus 4.6 (1M context) --- .../web/src/components/PrecedentDrawer.svelte | 68 +++++++++++++++++-- apps/web/src/layouts/BaseLayout.astro | 10 +-- apps/web/src/pages/statute/[...slug].astro | 4 ++ 3 files changed, 71 insertions(+), 11 deletions(-) diff --git a/apps/web/src/components/PrecedentDrawer.svelte b/apps/web/src/components/PrecedentDrawer.svelte index beb4df2..0ca063d 100644 --- a/apps/web/src/components/PrecedentDrawer.svelte +++ b/apps/web/src/components/PrecedentDrawer.svelte @@ -7,7 +7,6 @@ } const COURT_ORDER: CaseAnnotation['court'][] = ['SCOTUS', 'Appellate', 'District']; - // Use custom theme colors (--color-amber, --color-teal, --color-slate) for consistency const COURT_COLORS: Record = { SCOTUS: 'text-amber dark:text-amber', Appellate: 'text-teal dark:text-teal-bright', @@ -43,10 +42,16 @@ {#if annotations.length > 0} - + + + - + {#if open}