chore(polish): integrate toasts, reports paging, loading motion; login centring floor for short windows; load-more uses notifyError; round records
Independent Staging Quality Gate / validate (push) Successful in 18m44s
Independent Staging Quality Gate / publish (push) Successful in 3m34s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-09-30 13:55:02 +08:00
co-authored by Claude Opus 5.5
parent 3e0c615fd8
commit da3ed2f3ab
9 changed files with 113 additions and 47 deletions
+2 -2
View File
@@ -2083,10 +2083,10 @@ input:not([type="radio"]):not([type="checkbox"]):not([class^="ant-"]):not([class
/* Three rows so the legal footer sits at the bottom without pushing the card up
(BUG-1122): the card is centred in the viewport, the footer takes the last row. */
.auth-page { display: grid; grid-template-rows: minmax(0, 1fr) auto minmax(0, 1fr); justify-items: center; padding: var(--space-8) var(--space-8) 0; background: var(--color-canvas-soft); }
.auth-page { display: grid; grid-template-rows: minmax(56px, 1fr) auto minmax(56px, 1fr); justify-items: center; padding: 0 var(--space-8); background: var(--color-canvas-soft); }
.auth-page > .auth-shell { grid-row: 2; }
.auth-page > .auth-legal-footer { grid-row: 3; align-self: end; }
.auth-shell { width: min(1040px, 100%); min-height: min(680px, calc(100dvh - 64px)); display: grid; grid-template-columns: 1.08fr .92fr; overflow: hidden; border-radius: var(--radius-xl); background: var(--color-canvas); box-shadow: var(--shadow-elevated); }
.auth-shell { width: min(1040px, 100%); min-height: min(680px, calc(100dvh - 128px)); display: grid; grid-template-columns: 1.08fr .92fr; overflow: hidden; border-radius: var(--radius-xl); background: var(--color-canvas); box-shadow: var(--shadow-elevated); }
.auth-story { display: flex; flex-direction: column; justify-content: space-between; padding: var(--space-12); border-right: 1px solid var(--color-border); background: var(--color-canvas-muted); color: var(--color-ink); }
.auth-story-brand, .auth-brand { display: flex; align-items: center; gap: var(--space-3); font-family: var(--font-display); font-size: var(--type-title-lg); }
.auth-story-brand strong, .auth-brand strong { font-weight: 400; }
@@ -4,7 +4,7 @@ import { AppLink } from "@/components/app-link";
import { FileText, RefreshCw } from "lucide-react";
import { InlineSpinner } from "@/components/inline-spinner";
import { useCallback, useEffect, useRef, useState } from "react";
import { toast } from "sonner";
import { notifyError } from "@/lib/notify";
import { SecondaryPageShell } from "@/components/secondary-page-shell";
import { readCurrentSubjectScope, useCurrentSubjectScope, useCurrentSubjectReady } from "@/lib/current-subject";
@@ -172,10 +172,10 @@ export function PersonalReportCenter() {
const fresh = page.reports.filter(report => !deletedIds.current.has(report.id));
setState(current => ({ ...current, reports: appendReportPage(current.reports, fresh), nextCursor: page.nextCursor, extended: true }));
} else {
toast.error("更早的报告没读出来,再试一次。");
notifyError("更早的报告没读出来,再试一次。", { id: "reports-load-more" });
}
} catch {
if (!cancelled.current) toast.error("更早的报告没读出来,再试一次。");
if (!cancelled.current) notifyError("更早的报告没读出来,再试一次。", { id: "reports-load-more" });
} finally {
if (!cancelled.current) setLoadingMore(false);
}