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;
});
const isAuthPage = $derived(
['/login', '/forgot-password', '/reset-password'].some((p) => page.url.pathname.startsWith(p))
);
let userMenuOpen = $state(false);
const userInitials = $derived.by(() => {
@@ -47,7 +51,7 @@ function clickOutside(node: HTMLElement) {
</script>
<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">
<!-- De Gruyter Brill purple accent strip -->
<div class="h-1 bg-brand-purple"></div>
@@ -194,7 +198,7 @@ function clickOutside(node: HTMLElement) {
</header>
{/if}
<main class="py-6">
<main class={isAuthPage ? '' : 'py-6'}>
{@render children()}
</main>
</div>