From b174d8d2a7d1a050115d0d50096da1128fffb7e8 Mon Sep 17 00:00:00 2001 From: jay Date: Mon, 22 Jun 2026 21:55:36 -0400 Subject: [PATCH] home3/hub: shared HubBar with mobile hamburger + Art-card mobile crop fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #2 Mobile top bar → hamburger: extracted the editorial bar (brand + nav + new collapsible hamburger drop-panel) into a shared lib/components/HubBar.svelte, used by both /home3 and HubShell (the /word /quote /onthisday detail pages), so there's one nav to maintain/audit. Full horizontal nav ≥721px; hamburger + drop panel ≤720px. Escape + link-click close it; panel is hidden on desktop as a safety. Removed the duplicated bar markup/CSS from home3 + HubShell. #1 Mobile layout / Art card: on phones the Art card now stacks image-first with the painting in a proper 3:2 frame (aspect-ratio) instead of a stubby fixed 130px band that cropped the work to a sliver. Also drop the News gist's bottom fade once the bento is single-column (natural height = no truncation, so the fade was just dimming the final line), and let the joys header wrap on phones. Co-Authored-By: Claude Opus 4.8 --- data/wotd_audio/hope.mp3 | Bin 0 -> 15335 bytes frontend/src/lib/components/HubBar.svelte | 111 ++++++++++++++++++++ frontend/src/lib/components/HubShell.svelte | 37 +------ frontend/src/routes/home3/+page.svelte | 50 +++------ 4 files changed, 125 insertions(+), 73 deletions(-) create mode 100644 data/wotd_audio/hope.mp3 create mode 100644 frontend/src/lib/components/HubBar.svelte diff --git a/data/wotd_audio/hope.mp3 b/data/wotd_audio/hope.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..342e88ee13a5d49d7933a5eac9e4da06f4eda19a GIT binary patch literal 15335 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 TQQ(Imt~dVQqwW9CHTi!4(?`h( literal 0 HcmV?d00001 diff --git a/frontend/src/lib/components/HubBar.svelte b/frontend/src/lib/components/HubBar.svelte new file mode 100644 index 0000000..c5363e5 --- /dev/null +++ b/frontend/src/lib/components/HubBar.svelte @@ -0,0 +1,111 @@ + + + { if (e.key === 'Escape') open = false; }} /> + +
+ + upbeatBytes + + +
+ + + + + + + +
+
+ +{#if open} + +{/if} + + diff --git a/frontend/src/lib/components/HubShell.svelte b/frontend/src/lib/components/HubShell.svelte index 26f12bd..2b1465f 100644 --- a/frontend/src/lib/components/HubShell.svelte +++ b/frontend/src/lib/components/HubShell.svelte @@ -1,27 +1,12 @@
-
- - upbeatBytes - - -
+
{@render children?.()}
@@ -42,24 +27,6 @@ } .page :global(*) { box-sizing: border-box; } - .bar { - display: flex; align-items: center; justify-content: space-between; - max-width: 1180px; width: 100%; margin: 0 auto; box-sizing: border-box; - padding: 26px clamp(18px, 5vw, 44px) 0; - } - .brand { display: block; line-height: 0; } - .brand img { height: 48px; width: auto; display: block; } - .nav { display: flex; align-items: center; gap: clamp(16px, 2.4vw, 32px); font-size: 16.5px; font-weight: 500; } - .nav a { color: var(--body); text-decoration: none; } - .nav a.on { color: #23201b; } - .nav a:hover { color: var(--teal); } - .nav-soon { color: #b3a890; } - .acct { - width: 32px; height: 32px; border-radius: 50%; border: 1.5px solid #e6c9a0; background: #FCEFD7; - display: flex; align-items: center; justify-content: center; - } - .acct:hover { background: #fbe6c4; } - .shell-main { flex: 1; width: 100%; max-width: 1180px; margin: 0 auto; box-sizing: border-box; padding: clamp(26px, 5vw, 56px) clamp(18px, 5vw, 44px) clamp(40px, 6vw, 72px); diff --git a/frontend/src/routes/home3/+page.svelte b/frontend/src/routes/home3/+page.svelte index 51f2e78..86d1ec7 100644 --- a/frontend/src/routes/home3/+page.svelte +++ b/frontend/src/routes/home3/+page.svelte @@ -1,6 +1,7 @@