Files
gw-svelte/src/routes/+layout.svelte
T

42 lines
1.1 KiB
Svelte
Raw Normal View History

2026-05-02 08:26:18 +12:00
<script lang="ts">
2026-05-02 08:59:49 +12:00
import { onMount } from 'svelte';
2026-05-02 08:26:18 +12:00
import { afterNavigate, disableScrollHandling } from '$app/navigation';
2026-05-02 08:59:49 +12:00
import { initClickTracking, trackPageView } from '$lib/analytics';
2026-05-02 08:26:18 +12:00
import '$lib/styles/variables.css';
import '$lib/styles/base.css';
import '$lib/styles/layout.css';
import '$lib/styles/typography.css';
import '$lib/styles/buttons.css';
import '$lib/styles/forms.css';
import '$lib/styles/sections.css';
import '$lib/styles/responsive.css';
2026-05-02 08:59:49 +12:00
onMount(() => initClickTracking());
2026-05-02 08:26:18 +12:00
afterNavigate(({ from, to }) => {
if (!from || !to || to.url.hash) {
return;
}
if (from.url.pathname !== to.url.pathname) {
disableScrollHandling();
if (document.activeElement instanceof HTMLElement) {
document.activeElement.blur();
}
requestAnimationFrame(() => {
requestAnimationFrame(() => {
window.scrollTo({ top: 0, left: 0, behavior: 'auto' });
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;
});
});
2026-05-02 08:59:49 +12:00
trackPageView(to.url.pathname + to.url.search, document.title);
2026-05-02 08:26:18 +12:00
}
});
</script>
<slot />