diff --git a/frontend/src/lib/components/header/MobileMenu.svelte b/frontend/src/lib/components/header/MobileMenu.svelte index fbecadb..3d2bbf5 100644 --- a/frontend/src/lib/components/header/MobileMenu.svelte +++ b/frontend/src/lib/components/header/MobileMenu.svelte @@ -220,7 +220,7 @@ : 'hover:bg-highlight-blue/30 hover:shadow-md dark:hover:bg-highlight-blue/20'}" class:hidden={shouldHideMenuItem(link.route)} on:click={() => (visible = false)} - target={link.external ? '_blank' : '_self'} + target={link.external ? '_blank' : undefined} rel={link.external ? 'noreferrer' : undefined} href={link.route} > diff --git a/frontend/src/lib/components/header/ProfileMenu.svelte b/frontend/src/lib/components/header/ProfileMenu.svelte index e8c6e96..5e7e88a 100644 --- a/frontend/src/lib/components/header/ProfileMenu.svelte +++ b/frontend/src/lib/components/header/ProfileMenu.svelte @@ -119,7 +119,7 @@ ? 'bg-active-blue shadow-md dark:bg-active-blue' : 'hover:shadow-md hover:bg-highlight-blue/80 dark:hover:bg-highlight-blue/20'}" class:hidden={shouldHideMenuItem(item.route)} - target={item.external ? '_blank' : '_self'} + target={item.external ? '_blank' : undefined} rel={item.external ? 'noreferrer' : undefined} draggable="false" on:click={() => { diff --git a/frontend/src/lib/store/loading.js b/frontend/src/lib/store/loading.js index ade04ab..ff3ab70 100644 --- a/frontend/src/lib/store/loading.js +++ b/frontend/src/lib/store/loading.js @@ -1,11 +1,25 @@ -import { writable } from 'svelte/store'; +import { writable, derived } from 'svelte/store'; -export const isLoading = writable(false); +// manual loading state (from explicit showIsLoading/hideIsLoading calls) +const manualLoading = writable(false); + +// navigation loading state (from sveltekit navigation) +export const navigationLoading = writable(false); + +// combined loading state - true if either manual or navigation is loading +export const isLoading = derived( + [manualLoading, navigationLoading], + ([$manual, $navigation]) => $manual || $navigation +); export const showIsLoading = () => { - isLoading.set(true); + manualLoading.set(true); }; export const hideIsLoading = () => { - isLoading.set(false); + manualLoading.set(false); +}; + +export const setNavigationLoading = (value) => { + navigationLoading.set(value); }; diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 724490f..0076629 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -1,7 +1,7 @@