feat(admin): ban appeals, photos polish, economy adjust, staff smoke

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-30 20:23:03 +02:00
1 parent fe46bd0544
commit 3ad3f9512c
36 files changed
+1185 -293

No files matched your search

+16 -8
View File
@@ -1,3 +1,6 @@
import { Users } from "lucide-react";
import { getTranslations } from "next-intl/server";
import { AdminPageShell } from "@/components/admin/admin-page-shell";
import { fetchAdminList } from "@/lib/admin-list";
import { canAccess, PERMS } from "@/lib/permissions";
import { CreateUserDialog } from "./_components/create-user-dialog";
@@ -43,17 +46,22 @@ export default async function UsersPage({
searchParams,
);
const t = await getTranslations("pages.admin.users");
const canEdit = canAccess(result.permissions, PERMS.USERS_EDIT, result.rank);
const canBan = canAccess(result.permissions, PERMS.USERS_BAN, result.rank);
return (
<div className="space-y-6">
<div className="flex items-center justify-between">
<p className="text-muted-foreground">
{result.total.toLocaleString()} users total
</p>
{canEdit && <CreateUserDialog sessionRank={result.rank} />}
</div>
<AdminPageShell
icon={Users}
title={t("title")}
subtitle={t("subtitle")}
actions={
canEdit ? <CreateUserDialog sessionRank={result.rank} /> : undefined
}
>
<p className="text-muted-foreground m-0">
{result.total.toLocaleString()} users total
</p>
<UsersTable
data={{
@@ -66,6 +74,6 @@ export default async function UsersPage({
canEdit={canEdit}
canBan={canBan}
/>
</div>
</AdminPageShell>
);
}