From e5812fd4ee361b26a3049f693f876359ae3cd87e Mon Sep 17 00:00:00 2001 From: nmemmert <67961292+nmemmert@users.noreply.github.com> Date: Thu, 1 Oct 2026 16:37:50 -0400 Subject: [PATCH] Reader: resizable side panel Drag the left edge of the verse side panel to resize it (arrow keys too, Shift for bigger steps; double-click resets). The text reflows to make room, and the width is remembered on this device. Reuses the Study page's resize handle; the hook now takes the CSS variable to drive. Co-Authored-By: Claude Sonnet 5.5 --- src/components/reader/Sheet.jsx | 7 ++++--- src/components/reader/VerseSheet.jsx | 4 ++-- src/hooks/useResizableWidth.js | 9 +++++---- src/hooks/useResizableWidth.test.js | 9 +++++++++ src/pages/ReaderPage.jsx | 17 +++++++++++++++-- src/pages/ReaderPage.test.jsx | 12 ++++++++++++ 6 files changed, 47 insertions(+), 11 deletions(-) diff --git a/src/components/reader/Sheet.jsx b/src/components/reader/Sheet.jsx index 8a9fedd..e64d76f 100644 --- a/src/components/reader/Sheet.jsx +++ b/src/components/reader/Sheet.jsx @@ -7,7 +7,7 @@ import { CloseIcon } from './icons.jsx'; const FOCUSABLE = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'; -export default function Sheet({ open, onClose, title, label, headerRight, modal = true, pane = false, children }) { +export default function Sheet({ open, onClose, title, label, headerRight, modal = true, pane = false, panelRef, edge, children }) { const dialogRef = useRef(null); const onCloseRef = useRef(onClose); onCloseRef.current = onClose; @@ -41,15 +41,16 @@ export default function Sheet({ open, onClose, title, label, headerRight, modal <> {modal &&