From 5148a1c668d5b273b132249b9cd842a1a89c3494 Mon Sep 17 00:00:00 2001 From: "[._.]/ Adam Eivy" Date: Mon, 31 Aug 2026 02:39:27 +0000 Subject: [PATCH] fix FableLoom graph header running off phone screens and clipping the rail MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The story header packed five labelled action buttons into one non-wrapping row, so Play sat off the right edge of a phone; the stacked graph/rail split then sized itself in viewport units (graph min 55vh + rail max 45vh) even though the pane only gets what's left under the app chrome and this route's
is overflow-hidden — so the validation panel's content was cut off below the fold. - Header actions come from one list, rendered as labelled buttons from sm up and demoted into the shared OverflowMenu on phones; Play stays visible. - Graph/rail split is sized against the pane (rail max-h-[45%], graph takes the rest) instead of vh, so the panel is always fully reachable. - Episode picker, + Episode and the Graph/Outline toggle share one row on mobile via a new TabPills mobileSelectClassName escape hatch. - Validation panel: scrollable tab strip, wrapping stat headers, tighter phone padding. --- .../fableloom/LoomValidationPanel.jsx | 14 +-- client/src/components/ui/TabPills.jsx | 11 +- client/src/pages/FableLoomStory.jsx | 116 ++++++++++-------- client/src/pages/FableLoomStory.test.jsx | 34 ++++- 4 files changed, 113 insertions(+), 62 deletions(-) diff --git a/client/src/components/fableloom/LoomValidationPanel.jsx b/client/src/components/fableloom/LoomValidationPanel.jsx index 6433cf50f6..a089e3ca2f 100644 --- a/client/src/components/fableloom/LoomValidationPanel.jsx +++ b/client/src/components/fableloom/LoomValidationPanel.jsx @@ -67,13 +67,13 @@ export default function LoomValidationPanel({ loom, episode, onSelectNode }) { ); return ( -
+
{/* Panel Tab Navigation */} -
+