feat(theme): complete Minecraft overhaul for all pages including admin/utility
这个提交包含在:
@@ -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 >
|
||||
);
|
||||
}
|
||||
|
||||
在新工单中引用
屏蔽一个用户