feat(admin): server-safe StatusCard and Import hub polish
CI / check (push) Failing after 8s
CI / release (push) Skipped
CI / deploy (push) Skipped

Split OnlineUsersWidget from StatusCard, decouple ad delete button, sync badge import to ExternalTexts+WebsiteBadges, add Import section hub with cancelable SSE jobs and upload SQL option.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-08-01 15:48:21 +02:00
1 parent db957d7fb1
commit 9c4949186c
21 files changed
+576 -249

No files matched your search

+20 -7
View File
@@ -190,6 +190,8 @@ export function AuditClient() {
} catch (err) {
if ((err as Error).name !== "AbortError") {
toast.error("Audit request failed");
} else {
toast.info("Audit cancelled");
}
} finally {
setLoading(false);
@@ -203,14 +205,25 @@ export function AuditClient() {
return (
<div className="space-y-6">
{!summary && (
<Button onClick={runAudit} disabled={loading} size="lg">
{loading ? (
<Loader2 className="w-4 h-4 animate-spin mr-2" />
) : (
<ClipboardList className="w-4 h-4 mr-2" />
<div className="flex items-center gap-2 flex-wrap">
<Button onClick={runAudit} disabled={loading} size="lg">
{loading ? (
<Loader2 className="w-4 h-4 animate-spin mr-2" />
) : (
<ClipboardList className="w-4 h-4 mr-2" />
)}
{loading ? progress || "Running…" : "Run Full Catalog Audit"}
</Button>
{loading && (
<Button
variant="outline"
size="lg"
onClick={() => abortRef.current?.abort()}
>
Cancel
</Button>
)}
{loading ? progress || "Running…" : "Run Full Catalog Audit"}
</Button>
</div>
)}
{loading && checkProgress && (