From 0217f0b4c456556067e4b625f46ede4dd0f50032 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Mon, 23 Mar 2026 21:09:32 +0100 Subject: [PATCH] Complete daisyUI migration with CSS fixes - Migrate all pages to daisyUI components - Add data-theme="light" to app.html for proper theme - Fix config to load .env from multiple locations - Update avatar to use avatar-placeholder pattern - Use @tailwindcss/vite plugin instead of PostCSS --- backend/internal/config/config.go | 7 +- frontend/src/app.html | 2 +- frontend/src/routes/+layout.svelte | 291 ++++++----------- frontend/src/routes/+page.svelte | 93 +++--- .../routes/auth/change-password/+page.svelte | 282 +++++------------ frontend/src/routes/auth/forgot/+page.svelte | 206 +++--------- frontend/src/routes/auth/login/+page.svelte | 187 +++-------- frontend/src/routes/domains/+page.svelte | 229 +++++--------- .../src/routes/domains/[name]/+page.svelte | 117 +++---- .../domains/[name]/aliases/+page.svelte | 278 ++++++----------- .../routes/domains/[name]/users/+page.svelte | 294 +++++++----------- frontend/src/routes/logs/+page.svelte | 158 +++------- frontend/src/routes/queue/+page.svelte | 156 ++++------ frontend/vite.config.ts | 3 +- 14 files changed, 739 insertions(+), 1564 deletions(-) diff --git a/backend/internal/config/config.go b/backend/internal/config/config.go index d799f30..7720685 100644 --- a/backend/internal/config/config.go +++ b/backend/internal/config/config.go @@ -66,7 +66,12 @@ func Load() *Config { // Load .env file if it exists. // This is for local development convenience. // In production, use environment variables directly. - godotenv.Load("backend/.env") + // Try multiple locations: current dir, backend/.env, ../backend/.env + if err := godotenv.Load(".env"); err != nil { + if err := godotenv.Load("backend/.env"); err != nil { + godotenv.Load("../backend/.env") + } + } // Return a new Config struct with all values. // getEnv(key, default) returns the environment variable value, diff --git a/frontend/src/app.html b/frontend/src/app.html index 84ffad1..56f288f 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -1,5 +1,5 @@ - + diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index f50f2bf..2233899 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -3,30 +3,20 @@ import { goto } from '$app/navigation'; import { onMount } from 'svelte'; import { decodeJWT, isTokenValid } from '$lib/auth'; + import '../app.css'; let { children } = $props(); let user: { userId?: number; username?: string; role?: string } | null = $state(null); let selectedDomain = $state(null); let loading = $state(true); - let showDropdown = $state(false); - let dropdownRef = $state(null); + let isInitialized = $state(false); let usersLink = $derived(selectedDomain ? `/domains/${selectedDomain}/users` : '/domains'); let aliasesLink = $derived(selectedDomain ? `/domains/${selectedDomain}/aliases` : '/domains'); - let isInitialized = $state(false); onMount(() => { selectedDomain = localStorage.getItem('selectedDomain'); isInitialized = true; - - function handleClickOutside(event: MouseEvent) { - if (dropdownRef && !dropdownRef.contains(event.target as Node)) { - showDropdown = false; - } - } - - document.addEventListener('click', handleClickOutside); - return () => document.removeEventListener('click', handleClickOutside); }); $effect(() => { @@ -74,189 +64,106 @@ localStorage.removeItem('selectedDomain'); user = null; selectedDomain = null; - showDropdown = false; goto('/auth/login'); } - - function toggleDropdown(event: MouseEvent) { - event.stopPropagation(); - showDropdown = !showDropdown; - } -{#if loading} -
Loading...
-{:else if user?.role === 'admin'} -
-
-

IMC Vibe

- -
- - {#if showDropdown} -
- -
- {@render children()} -
-
-{:else} - {@render children()} -{/if} - - + + + + {:else} + {@render children()} + {/if} + diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index 9134fed..10941c3 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -38,63 +38,42 @@ }); -

Dashboard

+
+

Dashboard

-{#if loading} -

Loading...

-{:else} -
-
-

{stats.totalDomains}

-

Domains

+ {#if loading} +
+
-
-

{stats.totalUsers}

-

Users

+ {:else} + -
-

{stats.totalAliases}

-

Aliases

-
-
10}> -

{stats.queueSize}

-

Queued Emails

-
-
-{/if} - - + {/if} +
diff --git a/frontend/src/routes/auth/change-password/+page.svelte b/frontend/src/routes/auth/change-password/+page.svelte index a220aea..0c10daf 100644 --- a/frontend/src/routes/auth/change-password/+page.svelte +++ b/frontend/src/routes/auth/change-password/+page.svelte @@ -1,8 +1,9 @@ -
-
-
-

Change Password

-