feat(theme): complete Minecraft overhaul for all pages including admin/utility

这个提交包含在:
X
2026-02-15 17:06:24 -08:00
父节点 e4742ff5ea
当前提交 3a98882a71
修改 24 个文件,包含 1203 行新增208 行删除

查看文件

@@ -6,6 +6,7 @@ import { useEffect, useMemo, useState } from "react";
import { apiFetch } from "@/lib/api";
import { readToken } from "@/lib/auth";
import { useI18nText } from "@/lib/i18n";
import { Activity, HardDrive, Play, RefreshCw, Server, FileText, CheckCircle, XCircle, Clock } from "lucide-react";
type ImportJob = {
id: number;
@@ -253,7 +254,8 @@ export default function ImportsPage() {
return (
<main className="mx-auto max-w-7xl px-3 py-6 max-[390px]:px-2 sm:px-4 md:px-6 md:py-8">
<h1 className="text-xl font-semibold max-[390px]:text-lg sm:text-2xl">
<h1 className="text-xl font-semibold max-[390px]:text-lg sm:text-2xl flex items-center gap-2">
<HardDrive size={24} />
{tx("题库导入/出题任务", "Import / Generation Jobs")}
</h1>
@@ -336,7 +338,17 @@ export default function ImportsPage() {
onClick={() => void runImport()}
disabled={loading || running}
>
{running ? tx("导入中...", "Importing...") : tx("启动导入任务", "Start Import Job")}
{running ? (
<span className="flex items-center justify-center gap-2">
<Activity size={16} className="animate-spin" />
{tx("导入中...", "Importing...")}
</span>
) : (
<span className="flex items-center justify-center gap-2">
<Play size={16} />
{tx("启动导入任务", "Start Import Job")}
</span>
)}
</button>
{runMode === "luogu" && (
<label className="flex w-full items-center gap-2 text-sm sm:w-auto">
@@ -348,10 +360,12 @@ export default function ImportsPage() {
{tx("启动前清空历史题库", "Clear old problem set before start")}
</label>
)}
<button className="rounded border px-3 py-2 text-sm" onClick={() => void refresh()} disabled={loading}>
<button className="rounded border px-3 py-2 text-sm flex items-center gap-2" onClick={() => void refresh()} disabled={loading}>
<RefreshCw size={14} className={loading ? "animate-spin" : ""} />
{tx("刷新", "Refresh")}
</button>
<span className={`text-sm ${running ? "text-emerald-700" : "text-zinc-600"}`}>
<span className={`text-sm flex items-center gap-1 ${running ? "text-emerald-700" : "text-zinc-600"}`}>
{running ? <Activity size={14} className="animate-pulse" /> : <Server size={14} />}
{running ? tx("运行中", "Running") : tx("空闲", "Idle")}
</span>
</div>
@@ -500,6 +514,6 @@ export default function ImportsPage() {
</div>
</div>
</section>
</main>
</main >
);
}