Initial commit: webmail client (M0/M1)

Three-pane webmail client.
- Backend: FastAPI + async SQLAlchemy + arq worker (Postgres/Redis), IMAP/SMTP
  sync, threading, search, drafts/outbox with undo, attachments, 2FA.
- Frontend: React 18 + Vite + TypeScript + TanStack Query + Tailwind; three-pane
  UI with rich-text composer, light/dark themes, resizable panels.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 23:20:34 +02:00
co-authored by Claude Opus 4.8
commit a5ec0d21cb
174 changed files with 22239 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
import { useT } from "../i18n";
import { useTheme } from "../lib/theme";
// Quick light/dark flip (the full light/dark/system selector lives in Settings).
export function ThemeToggle() {
const t = useT();
const { resolved, setTheme } = useTheme();
return (
<button
className="rounded p-2 text-app-muted hover:bg-app-hover hover:text-app-fg"
title={t("theme.toggle")}
aria-label={t("theme.toggle")}
onClick={() => setTheme(resolved === "dark" ? "light" : "dark")}
>
{resolved === "dark" ? "☀" : "☾"}
</button>
);
}