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:
@@ -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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user