From a69b12642237844e60bef7cb8abac7cbd074b53b Mon Sep 17 00:00:00 2001 From: Fuwn Date: Fri, 8 May 2026 07:47:47 +0000 Subject: fix(scroll): route LandingHero scroll-down through Lenis Lenis disables native CSS smooth scroll, so window.scrollTo({behavior:"smooth"}) jumps instantly. Expose the Lenis instance via a store and scroll through it, falling back to native when unavailable. --- src/lib/LandingHero.svelte | 4 +++- src/routes/+layout.svelte | 5 +++++ src/stores/lenis.ts | 6 ++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/stores/lenis.ts (limited to 'src') diff --git a/src/lib/LandingHero.svelte b/src/lib/LandingHero.svelte index b57aec85..9f5d0368 100644 --- a/src/lib/LandingHero.svelte +++ b/src/lib/LandingHero.svelte @@ -1,6 +1,7 @@ diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 7f962884..fa0f4a25 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -41,6 +41,7 @@ import { dev } from "$app/environment"; import { injectAnalytics } from "@vercel/analytics/sveltekit"; import Lenis from "lenis"; import "lenis/dist/lenis.css"; +import lenisStore from "$stores/lenis"; import type { LayoutData } from "./$types"; injectSpeedInsights(); @@ -99,6 +100,8 @@ onMount(async () => { if (browser) { lenis = new Lenis({ autoRaf: true }); + lenisStore.set(lenis); + if (await localforage.getItem("redirect")) { window.location.href = (await localforage.getItem("redirect")) ?? "/"; @@ -169,6 +172,8 @@ onDestroy(() => { if (notificationInterval) clearInterval(notificationInterval); lenis?.destroy(); + + lenisStore.set(undefined); }); $: { diff --git a/src/stores/lenis.ts b/src/stores/lenis.ts new file mode 100644 index 00000000..a0f028b5 --- /dev/null +++ b/src/stores/lenis.ts @@ -0,0 +1,6 @@ +import type Lenis from "lenis"; +import { writable } from "svelte/store"; + +const lenis = writable(undefined); + +export default lenis; -- cgit v1.2.3