feat(#64): dark mode — semantic tokens, ThemeToggle, and UI fixes #65

Merged
marcel merged 11 commits from feat/64-dark-mode into main 2026-03-25 13:50:17 +01:00
Showing only changes of commit 29a71f4421 - Show all commits

View File

@@ -24,6 +24,10 @@ onMount(() => {
hydrated = true; hydrated = true;
}); });
const isAuthPage = $derived(
['/login', '/forgot-password', '/reset-password'].some((p) => page.url.pathname.startsWith(p))
);
let userMenuOpen = $state(false); let userMenuOpen = $state(false);
const userInitials = $derived.by(() => { const userInitials = $derived.by(() => {
@@ -47,7 +51,7 @@ function clickOutside(node: HTMLElement) {
</script> </script>
<div class="min-h-screen bg-canvas" data-hydrated={hydrated || undefined}> <div class="min-h-screen bg-canvas" data-hydrated={hydrated || undefined}>
{#if !['/login', '/forgot-password', '/reset-password'].some((p) => page.url.pathname.startsWith(p))} {#if !isAuthPage}
<header class="sticky top-0 z-50 border-b border-line-2 bg-surface"> <header class="sticky top-0 z-50 border-b border-line-2 bg-surface">
<!-- De Gruyter Brill purple accent strip --> <!-- De Gruyter Brill purple accent strip -->
<div class="h-1 bg-brand-purple"></div> <div class="h-1 bg-brand-purple"></div>
@@ -194,7 +198,7 @@ function clickOutside(node: HTMLElement) {
</header> </header>
{/if} {/if}
<main class="py-6"> <main class={isAuthPage ? '' : 'py-6'}>
{@render children()} {@render children()}
</main> </main>
</div> </div>