From ac162dff4e8256fe37dc4752440a6f20289c21e0 Mon Sep 17 00:00:00 2001 From: oliver Date: Tue, 13 Oct 2026 21:09:27 +0800 Subject: [PATCH] Redo the login page: static milky-way sky and a droplet-glass card. The space photo is replaced by a seeded canvas sky (nebula band, dust lanes, stars) painted once. The card refracts the sky at its rim through an SVG displacement filter (Chromium; plain blur elsewhere), sits further from the right edge, and drops the glowing flare and button shadow. Login errors now read as text instead of API codes, the last username is remembered, and Caps Lock is flagged in the password field. Co-Authored-By: Claude Opus 5.5 --- web/public/login-space.webp | Bin 93844 -> 0 bytes web/src/features/auth/DropletGlass.tsx | 115 +++++++++++++ web/src/features/auth/LoginPage.tsx | 66 ++++++-- web/src/features/auth/LoginShell.tsx | 8 +- web/src/features/auth/LoginStarfield.tsx | 198 +++++++++++++++++++++++ web/src/i18n/locales/en/auth.ts | 3 + web/src/i18n/locales/zh/auth.ts | 3 + web/src/styles/pages/login.css | 60 ++----- web/src/styles/theme/theme.css | 141 ++++++++++++---- 9 files changed, 497 insertions(+), 97 deletions(-) delete mode 100644 web/public/login-space.webp create mode 100644 web/src/features/auth/DropletGlass.tsx create mode 100644 web/src/features/auth/LoginStarfield.tsx diff --git a/web/public/login-space.webp b/web/public/login-space.webp deleted file mode 100644 index 54f3bc1b33bd457d28440ac78e5f9c77c2f2f14c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93844 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 z 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 T&MWc=45G+D2sk4E000001z%;$ diff --git a/web/src/features/auth/DropletGlass.tsx b/web/src/features/auth/DropletGlass.tsx new file mode 100644 index 0000000..f48b34b --- /dev/null +++ b/web/src/features/auth/DropletGlass.tsx @@ -0,0 +1,115 @@ +import { useEffect, useState, type RefObject } from "react"; + +/** + * Displacement map for a rounded rect: neutral (128,128) in the middle, and + * within `bezel` px of the edge the sample point is pushed inward along the + * edge normal — the background bends at the rim like light through a droplet. + */ +function buildMap(w: number, h: number, radius: number, bezel: number): string { + const canvas = document.createElement("canvas"); + canvas.width = w; + canvas.height = h; + const ctx = canvas.getContext("2d"); + if (!ctx) return ""; + const img = ctx.createImageData(w, h); + const hx = w / 2; + const hy = h / 2; + const r = Math.min(radius, hx, hy); + + // Signed distance to the rounded-rect edge (negative inside). + const sdf = (x: number, y: number) => { + const qx = Math.abs(x - hx) - (hx - r); + const qy = Math.abs(y - hy) - (hy - r); + const ox = Math.max(qx, 0); + const oy = Math.max(qy, 0); + return Math.hypot(ox, oy) + Math.min(Math.max(qx, qy), 0) - r; + }; + + for (let y = 0; y < h; y++) { + for (let x = 0; x < w; x++) { + const i = (y * w + x) * 4; + const px = x + 0.5; + const py = y + 0.5; + const depth = -sdf(px, py); + let dx = 0; + let dy = 0; + if (depth < bezel) { + // Outward normal from the SDF gradient. + const gx = sdf(px + 1, py) - sdf(px - 1, py); + const gy = sdf(px, py + 1) - sdf(px, py - 1); + const gl = Math.hypot(gx, gy) || 1; + const t = 1 - Math.max(depth, 0) / bezel; + const f = t * t; // strongest right at the rim, fading inward + dx = -(gx / gl) * f; + dy = -(gy / gl) * f; + } + img.data[i] = Math.round(128 + dx * 127); + img.data[i + 1] = Math.round(128 + dy * 127); + img.data[i + 2] = 128; + img.data[i + 3] = 255; + } + } + ctx.putImageData(img, 0, 0); + return canvas.toDataURL(); +} + +/** + * SVG filter that refracts whatever sits behind `target`; reference it with + * `backdrop-filter: url(#id)` (Chromium only — other engines keep the plain + * blur declared before it). + */ +export function DropletGlassFilter({ + id, + target, + radius = 30, + bezel = 26, + strength = 46, +}: { + id: string; + target: RefObject; + radius?: number; + bezel?: number; + strength?: number; +}) { + const [map, setMap] = useState<{ url: string; w: number; h: number } | null>(null); + + useEffect(() => { + const el = target.current; + if (!el) return; + let timer = 0; + const rebuild = () => { + const w = Math.round(el.offsetWidth); + const h = Math.round(el.offsetHeight); + if (!w || !h) return; + setMap((prev) => (prev && prev.w === w && prev.h === h ? prev : { url: buildMap(w, h, radius, bezel), w, h })); + }; + const ro = new ResizeObserver(() => { + window.clearTimeout(timer); + timer = window.setTimeout(rebuild, 60); + }); + ro.observe(el); + rebuild(); + return () => { + ro.disconnect(); + window.clearTimeout(timer); + }; + }, [target, radius, bezel]); + + return ( + + ); +} diff --git a/web/src/features/auth/LoginPage.tsx b/web/src/features/auth/LoginPage.tsx index 85c9003..51e3ec1 100644 --- a/web/src/features/auth/LoginPage.tsx +++ b/web/src/features/auth/LoginPage.tsx @@ -1,19 +1,46 @@ import { Alert, Button, Card, Form, Input, Label, TextField } from "@heroui/react"; -import { useState, type FormEvent } from "react"; +import { useRef, useState, type FormEvent, type KeyboardEvent } from "react"; import { Navigate, useSearchParams } from "react-router-dom"; import { useAuth } from "./AuthContext"; import { useI18n } from "../../i18n"; import { LoginShell } from "./LoginShell"; +import { DropletGlassFilter } from "./DropletGlass"; +import { ApiRequestError } from "../../services/api/http"; + +const LAST_USER_KEY = "netx.login.lastUser"; + +function readLastUser(): string { + try { + return localStorage.getItem(LAST_USER_KEY) || ""; + } catch { + return ""; + } +} + +/** Map the login endpoint's error codes to readable text. */ +function loginErrorText(err: unknown, t: (key: string, vars?: Record) => string): string { + if (err instanceof ApiRequestError) { + if (err.detail === "invalid_credentials") return t("auth.badCredentials"); + const d = err.detail as { error?: string; retry_after_sec?: number } | null; + if (d && typeof d === "object" && d.error === "login_locked") { + return t("auth.loginLocked", { minutes: Math.max(1, Math.ceil((d.retry_after_sec || 60) / 60)) }); + } + } + return String(err instanceof Error ? err.message : err) || t("auth.loginFailed"); +} export function LoginPage() { const { t } = useI18n(); const { ready, user, login } = useAuth(); const [params] = useSearchParams(); - const [username, setUsername] = useState("admin"); + const [lastUser] = useState(readLastUser); + const [username, setUsername] = useState(lastUser || "admin"); const [password, setPassword] = useState(""); const [showPassword, setShowPassword] = useState(false); const [error, setError] = useState(""); const [busy, setBusy] = useState(false); + const [capsLock, setCapsLock] = useState(false); + const cardRef = useRef(null); if (ready && user) { const next = params.get("next") || "/"; @@ -24,23 +51,32 @@ export function LoginPage() { e.preventDefault(); setError(""); setBusy(true); + const name = username.trim(); try { - await login(username.trim(), password); + await login(name, password); + try { + localStorage.setItem(LAST_USER_KEY, name); + } catch { + /* storage blocked — nothing to remember */ + } } catch (err) { - setError(String(err instanceof Error ? err.message : err) || t("auth.loginFailed")); + setError(loginErrorText(err, t)); } finally { setBusy(false); } }; + const syncCaps = (e: KeyboardEvent) => setCapsLock(e.getModifierState("CapsLock")); + return ( - + + - {t("auth.loginTitle")} -

+ + {t("auth.loginTitle")}
void onSubmit(e)}> @@ -48,28 +84,36 @@ export function LoginPage() { fullWidth name="username" value={username} - onChange={setUsername} + onChange={(v) => { + setUsername(v); + setError(""); + }} isDisabled={busy || !ready} - autoFocus + autoFocus={!lastUser} autoComplete="username" > -
+
{ + setPassword(v); + setError(""); + }} isDisabled={busy || !ready} + autoFocus={!!lastUser} autoComplete="current-password" > + {capsLock ? {t("auth.capsLock")} : null}