fix+feat: SPA routing, theme system, modern UI, setup wizard improvements

Fixes:
- Go server now serves index.html for all non-asset paths (SPA fallback)
- Null guard on data.documents prevents undefined.length TypeError
- App.vue waits for checkStatus() before rendering AppLayout (race condition)
- PWA manifest no longer references missing icon files
- index.html applies theme class before paint to prevent flash

Features:
- Theme store: dark/light toggle + 6 accent color presets + custom hex picker
- ThemeToggle component in header dropdown
- CSS custom properties for accent color (--accent-400/500/600/700)
- Tailwind accent-* color utilities driven by CSS vars
- SetupWizard: 3-step flow, password confirmation, LDAP test button,
  animated toggle, review step, proper error/success states
- Sidebar: loading skeleton, active page highlight, null-safe document list
- Global .input, .btn-primary, .btn-secondary, .card component classes
- Stub GraphQL responses for setup/login/testLdapConnection

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-10 13:40:42 +02:00
parent 87821e8988
commit d93f3bb888
12 changed files with 799 additions and 146 deletions

View File

@@ -9,12 +9,12 @@ export default {
mono: ['JetBrains Mono', 'ui-monospace', 'monospace'],
},
colors: {
surface: {
50: '#f8fafc',
100: '#f1f5f9',
800: '#1e293b',
900: '#0f172a',
950: '#020617',
// Accent color driven by CSS variables set by the theme store.
accent: {
400: 'rgb(var(--accent-400) / <alpha-value>)',
500: 'rgb(var(--accent-500) / <alpha-value>)',
600: 'rgb(var(--accent-600) / <alpha-value>)',
700: 'rgb(var(--accent-700) / <alpha-value>)',
},
},
},