Refactor root admin dashboard UI

This commit is contained in:
MOH
2026-03-07 17:36:45 +01:00
parent ead75769ef
commit 8606f6e315
25 changed files with 2345 additions and 685 deletions
+15 -15
View File
@@ -52,12 +52,12 @@ function parseJsonArray(rawValue: FormDataEntryValue | null, key: string) {
const parsed = JSON.parse(rawValue);
if (!Array.isArray(parsed)) {
throw new Error(`${key} must be an array.`);
throw new Error(`${key} muss ein Array sein.`);
}
return parsed;
} catch {
throw new Error(`Invalid ${key} payload.`);
throw new Error(`Ungueltige ${key} Nutzdaten.`);
}
}
@@ -70,17 +70,17 @@ function parseJsonObject(rawValue: FormDataEntryValue | null, key: string) {
const parsed = JSON.parse(rawValue);
if (!parsed || Array.isArray(parsed) || typeof parsed !== "object") {
throw new Error(`${key} must be an object.`);
throw new Error(`${key} muss ein Objekt sein.`);
}
return parsed;
} catch {
throw new Error(`Invalid ${key} payload.`);
throw new Error(`Ungueltige ${key} Nutzdaten.`);
}
}
function parseZodError(error: ZodError) {
return error.issues[0]?.message ?? "Validation failed.";
return error.issues[0]?.message ?? "Validierung fehlgeschlagen.";
}
async function revalidatePortfolioPages() {
@@ -135,7 +135,7 @@ export async function upsertCategoryAction(formData: FormData) {
}
await revalidatePortfolioPages();
redirect(withMessage(redirectPath, "success", "Category saved."));
redirect(withMessage(redirectPath, "success", "Kategorie gespeichert."));
} catch (error) {
if (isRedirectError(error)) {
throw error;
@@ -145,8 +145,8 @@ export async function upsertCategoryAction(formData: FormData) {
error instanceof ZodError
? parseZodError(error)
: error instanceof Prisma.PrismaClientKnownRequestError && error.code === "P2002"
? "Category slug must be unique."
: "Unable to save category.";
? "Kategorie Slug muss eindeutig sein."
: "Kategorie konnte nicht gespeichert werden.";
redirect(withMessage(redirectPath, "error", message));
}
@@ -166,7 +166,7 @@ export async function deleteCategoryAction(formData: FormData) {
});
if (projectCount > 0) {
redirect(withMessage(redirectPath, "error", "Cannot delete a category with projects."));
redirect(withMessage(redirectPath, "error", "Kategorie mit Projekten kann nicht geloescht werden."));
}
await prisma.category.delete({
@@ -176,13 +176,13 @@ export async function deleteCategoryAction(formData: FormData) {
});
await revalidatePortfolioPages();
redirect(withMessage(redirectPath, "success", "Category deleted."));
redirect(withMessage(redirectPath, "success", "Kategorie geloescht."));
} catch (error) {
if (isRedirectError(error)) {
throw error;
}
redirect(withMessage(redirectPath, "error", "Unable to delete category."));
redirect(withMessage(redirectPath, "error", "Kategorie konnte nicht geloescht werden."));
}
}
@@ -337,7 +337,7 @@ export async function saveProjectAction(formData: FormData) {
});
if (!assetSelection.url) {
throw new Error("Each asset row needs either an existing file or a new upload.");
throw new Error("Jede Datei Zeile braucht eine vorhandene Datei oder einen neuen Upload.");
}
if (assetSelection.createdAssetId) {
@@ -521,7 +521,7 @@ export async function saveProjectAction(formData: FormData) {
}
redirect(
withMessage(`/root/portfolio/projects/${projectResult.project.id}`, "success", "Project saved."),
withMessage(`/root/portfolio/projects/${projectResult.project.id}`, "success", "Projekt gespeichert."),
);
} catch (error) {
if (isRedirectError(error)) {
@@ -532,10 +532,10 @@ export async function saveProjectAction(formData: FormData) {
error instanceof ZodError
? parseZodError(error)
: error instanceof Prisma.PrismaClientKnownRequestError && error.code === "P2002"
? "Project slug must be unique."
? "Projekt Slug muss eindeutig sein."
: error instanceof Error
? error.message
: "Unable to save project.";
: "Projekt konnte nicht gespeichert werden.";
await removeManagedPaths(uploadedPaths);
if (createdMediaAssetIds.length > 0) {