Add scroll-to-top button on browse page and mobile nav drawer
Some checks failed
Deploy / Deploy Production (push) Has been skipped
Deploy / Cleanup Preview (push) Has been skipped
Deploy / Deploy Preview (push) Failing after 1s
CI / UI / Build (pull_request) Failing after 11s
CI / Scraper / Test (pull_request) Successful in 16s
CI / Scraper / Lint (pull_request) Successful in 18s
CI / Scraper / Build (pull_request) Successful in 13s

This commit is contained in:
Admin
2026-03-06 19:07:56 +05:00
parent 8f0a2f7e92
commit 9b7cdad71a
2 changed files with 119 additions and 20 deletions

View File

@@ -152,6 +152,16 @@
// Admin: refresh catalogue
let refreshing = $state(false);
// ── Scroll-to-top button ─────────────────────────────────────────────────
let showScrollTop = $state(false);
$effect(() => {
function onScroll() {
showScrollTop = window.scrollY > 400;
}
window.addEventListener('scroll', onScroll, { passive: true });
return () => window.removeEventListener('scroll', onScroll);
});
</script>
<svelte:head>
@@ -559,3 +569,17 @@
<p class="text-center text-zinc-600 text-xs mt-8 pb-4">All novels loaded</p>
{/if}
{/if}
<!-- Scroll-to-top button -->
{#if showScrollTop}
<button
onclick={() => window.scrollTo({ top: 0, behavior: 'smooth' })}
class="fixed bottom-6 right-6 z-50 p-3 rounded-full bg-zinc-800 border border-zinc-600 text-zinc-300 shadow-lg hover:bg-zinc-700 hover:text-zinc-100 transition-colors"
title="Back to top"
aria-label="Scroll to top"
>
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 15l7-7 7 7" />
</svg>
</button>
{/if}