feat: add localization and site settings

This commit is contained in:
rucky
2026-05-12 09:58:25 +08:00
parent 9dc6c0dcce
commit fa7aedb8e7
67 changed files with 5221 additions and 888 deletions

View File

@@ -14,6 +14,7 @@ export function SoftwareVersionForm({ softwareId }: { softwareId: string }) {
const router = useRouter();
const [loading, setLoading] = useState(false);
const [downloadType, setDownloadType] = useState("local");
const [wowVersion, setWowVersion] = useState<"1.18" | "1.17">("1.18");
const [uploadedFilePath, setUploadedFilePath] = useState("");
const [fileSize, setFileSize] = useState(0);
const [uploading, setUploading] = useState(false);
@@ -57,12 +58,14 @@ export function SoftwareVersionForm({ softwareId }: { softwareId: string }) {
version: fd.get("version"),
versionCode: Number(fd.get("versionCode")),
changelog: fd.get("changelog"),
changelogEn: fd.get("changelogEn"),
downloadType,
filePath: downloadType === "local" ? uploadedFilePath : null,
externalUrl: downloadType === "url" ? fd.get("externalUrl") : null,
fileSize,
forceUpdate: fd.get("forceUpdate") === "on",
minVersion: fd.get("minVersion") || null,
wowVersion,
}),
});
@@ -82,7 +85,7 @@ export function SoftwareVersionForm({ softwareId }: { softwareId: string }) {
<CardHeader><CardTitle></CardTitle></CardHeader>
<CardContent>
<form onSubmit={handleSubmit} className="space-y-6">
<div className="grid gap-4 md:grid-cols-2">
<div className="grid gap-4 md:grid-cols-3">
<div className="space-y-2">
<Label htmlFor="version"> *</Label>
<Input id="version" name="version" required placeholder="1.0.0" />
@@ -91,6 +94,28 @@ export function SoftwareVersionForm({ softwareId }: { softwareId: string }) {
<Label htmlFor="versionCode"> () *</Label>
<Input id="versionCode" name="versionCode" type="number" required placeholder="100" />
</div>
<div className="space-y-2">
<Label>WoW *</Label>
<div className="inline-flex w-full rounded-md border bg-muted/40 p-0.5">
{(["1.18", "1.17"] as const).map((v) => (
<button
key={v}
type="button"
onClick={() => setWowVersion(v)}
className={`flex-1 rounded px-3 py-1.5 text-sm font-medium transition-colors ${
v === wowVersion
? "bg-background shadow-sm"
: "text-muted-foreground hover:text-foreground"
}`}
>
{v}
</button>
))}
</div>
<p className="text-xs text-muted-foreground">
WoW
</p>
</div>
</div>
<div className="space-y-2">
@@ -98,9 +123,28 @@ export function SoftwareVersionForm({ softwareId }: { softwareId: string }) {
<Input id="minVersion" name="minVersion" placeholder="0.9.0(可选,低于此版本需升级)" />
</div>
<div className="space-y-2">
<Label htmlFor="changelog"></Label>
<Textarea id="changelog" name="changelog" rows={6} placeholder="- 新增xxx功能&#10;- 修复xxx问题" />
<div className="grid gap-4 md:grid-cols-2">
<div className="space-y-2">
<Label htmlFor="changelog"></Label>
<Textarea
id="changelog"
name="changelog"
rows={6}
placeholder="- 新增xxx功能&#10;- 修复xxx问题"
/>
</div>
<div className="space-y-2">
<Label htmlFor="changelogEn">Changelog (English)</Label>
<Textarea
id="changelogEn"
name="changelogEn"
rows={6}
placeholder="- Added xxx feature&#10;- Fixed xxx issue"
/>
<p className="text-xs text-muted-foreground">
访退
</p>
</div>
</div>
<div className="space-y-4">