feat(web-auth): implement email code login pages

This commit is contained in:
2026-04-05 02:35:55 +08:00
parent 579d63d39d
commit fe4f7909e3
7 changed files with 300 additions and 9 deletions
+24 -8
View File
@@ -1,6 +1,13 @@
import { Button } from "@/components/ui/button";
import { useState } from "react";
import { Navigate, Route, Routes, useNavigate } from "react-router-dom";
import { EmailLoginPage } from "@/pages/email-login-page";
import { TodoShellPage } from "@/pages/todo-shell-page";
import type { EmailLoginResult } from "@/services/auth-api";
function App() {
const [session, setSession] = useState<EmailLoginResult | null>(null);
const navigate = useNavigate();
return (
<div className="min-h-screen bg-[#f6f8f7] text-[#122117]">
<header className="border-b border-[#d7e2db] bg-white/90 backdrop-blur">
@@ -9,16 +16,25 @@ function App() {
<div className="h-8 w-8 rounded-lg bg-[#0a7a5a]" />
<span className="text-lg font-semibold tracking-tight">TodoList</span>
</div>
<Button className="rounded-md bg-[#0a7a5a] text-white hover:bg-[#0a7a5a]/90"></Button>
<span className="text-sm text-[#3a5a4a]">{session ? session.user.email : "未登录"}</span>
</div>
</header>
<main className="mx-auto w-full max-w-6xl px-4 py-8">
<section className="rounded-xl border border-[#d7e2db] bg-white p-6 shadow-sm">
<h1 className="text-2xl font-semibold">Web </h1>
<p className="mt-2 text-sm text-[#3a5a4a]">
OAuth
</p>
</section>
<Routes>
<Route
path="/login/email"
element={
<EmailLoginPage
onLoginSuccess={(payload) => {
setSession(payload);
navigate("/");
}}
/>
}
/>
<Route path="/" element={<TodoShellPage session={session} />} />
<Route path="*" element={<Navigate to="/login/email" replace />} />
</Routes>
</main>
</div>
);