feat: Mantine design system with dark mode

This commit is contained in:
Jonas Miederer 2026-09-12 08:39:00 +02:00
parent 6e12720ad6
commit 38d4899b07
18 changed files with 1170 additions and 322 deletions

View file

@ -103,6 +103,17 @@ auth` + the LFX/stack repair commit:
`npm run build` green, routes + `/api` proxy return 200, served schema
validates under JSON-Schema Draft 7.
## 0.3 Frontend design pass (Mantine)
Plain-HTML UI replaced with a coherent Mantine v9 design system:
`@mantine/core` + `@mantine/hooks` + `@rjsf/mantine` (v6, matches core)
+ `@tabler/icons-react`. `src/theme.ts` (kirchenblau primary, system
fonts only, serif display headings), `AppShell` header/nav, per-page
`Card`/`Table`/`Alert`/`Badge` via shared `StatusBadge`, dark mode via
localStorage manager + toggle + inline `ColorSchemeScript` equivalent.
RJSF swap was import-only; SSR smoke test proved all 10 intake labels +
textarea/password/checkbox/slider widgets render. `npm run build` green.
## 1. Locked decisions (do not re-ask)* Auth: SMTP magic-link, 15-min single-use tokens (`secrets.token_urlsafe`,
store `sha256`, `used_at` set before session creation), session = opaque id
in **DB table**, cookie `HttpOnly; Secure; SameSite=Lax; Path=/`.