From 36e8a7ad5a40b95bd37136c498ce84b2247cde8e Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 10 Feb 2026 20:39:43 -0800 Subject: feat: add previous/next navigation buttons on mobile detail view --- apps/web/app/reader/_components/reader-shell.tsx | 45 +++++++++++++++++++----- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/apps/web/app/reader/_components/reader-shell.tsx b/apps/web/app/reader/_components/reader-shell.tsx index d063e8c..78ce8e3 100644 --- a/apps/web/app/reader/_components/reader-shell.tsx +++ b/apps/web/app/reader/_components/reader-shell.tsx @@ -52,6 +52,9 @@ export function ReaderShell({ const toggleShortcutsDialog = useUserInterfaceStore( (state) => state.toggleShortcutsDialog ) + const navigableEntryIdentifiers = useUserInterfaceStore( + (state) => state.navigableEntryIdentifiers + ) const toolbarPosition = useUserInterfaceStore( (state) => state.toolbarPosition ) @@ -188,15 +191,39 @@ export function ReaderShell({ "flex items-center justify-between border-border px-4 py-3", toolbarPosition === "top" ? "border-b" : "border-t" )}> - {isMobile && selectedEntryIdentifier ? ( - - ) : isRenamingTitle ? ( + {isMobile && selectedEntryIdentifier ? (() => { + const currentIndex = navigableEntryIdentifiers.indexOf(selectedEntryIdentifier) + const previousEntryIdentifier = currentIndex > 0 ? navigableEntryIdentifiers[currentIndex - 1] : null + const nextEntryIdentifier = currentIndex < navigableEntryIdentifiers.length - 1 ? navigableEntryIdentifiers[currentIndex + 1] : null + + return ( +
+ + + +
+ ) + })() : isRenamingTitle ? (