feat(admin): items_base browser and AdminPageShell on core pages
CI / check (push) Successful in 21s
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 59s
CI / deploy (push) Failing after 9s

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-30 20:41:31 +02:00
1 parent 7138ae4445
commit 98613af875
42 files changed
+2196 -698

No files matched your search

+11 -7
View File
@@ -102,14 +102,18 @@ export async function fetchAdminList<TRow = PrismaModel>(
const { search, page, sort, order } = parsed;
// Build WHERE clause
const searchWhere =
const searchOr =
search && config.searchFields.length > 0
? {
OR: config.searchFields.map((field) =>
buildFieldCondition(field, search),
),
}
: {};
? config.searchFields.map((field) => buildFieldCondition(field, search))
: [];
// Exact numeric id match (furni / rooms / items lookup by id).
if (search && /^\d+$/.test(search)) {
const asId = Number(search);
if (Number.isFinite(asId) && asId > 0) {
searchOr.push({ id: asId });
}
}
const searchWhere = searchOr.length > 0 ? { OR: searchOr } : {};
// Apply URL filter_* params via filterMap
const filterWhere: Record<string, unknown> = {};
+7
View File
@@ -435,6 +435,13 @@ export const ADMIN_NAV_GROUPS: AdminNavGroup[] = [
permission: PERMS.CATALOG_VIEW,
matchPrefixes: ["/admin/catalog"],
},
{
href: "/admin/items",
labelKey: "itemsBase",
icon: Package,
permission: PERMS.CATALOG_VIEW,
matchPrefixes: ["/admin/items"],
},
{
href: "/admin/rare-values",
labelKey: "rareValues",
@@ -40,6 +40,8 @@ const ROUTES: Array<[string, string]> = [
["housekeeping", "PERMS.SETTINGS_VIEW"],
["logs", "PERMS.LOGS_VIEW"],
["catalog", "PERMS.CATALOG_VIEW"],
["items", "PERMS.CATALOG_VIEW"],
["items/[id]", "PERMS.CATALOG_VIEW"],
["rooms/edit/[id]", "PERMS.ROOMS_EDIT"],
];
@@ -64,6 +66,7 @@ const ACTION_GATES: Array<[string, string]> = [
["admin-shop.ts", "PERMS.SHOP_EDIT"],
["admin-radio-autodj.ts", "PERMS.RADIO_EDIT"],
["catalog.ts", "PERMS.CATALOG_EDIT"],
["items-base.ts", "PERMS.CATALOG_EDIT"],
["rooms.ts", "PERMS.ROOMS_EDIT"],
["admin-vpn.ts", "PERMS.SETTINGS_EDIT"],
["admin-ads.ts", "PERMS.PAGES_EDIT"],
+11
View File
@@ -82,4 +82,15 @@ describe("staff smoke contract", () => {
expect(readFileSync(path, "utf8"), path).toContain("TicketQueueBanner");
}
});
it("ships items_base browser", () => {
expect(existsSync("src/app/admin/items/page.tsx")).toBe(true);
expect(existsSync("src/app/admin/items/[id]/page.tsx")).toBe(true);
expect(readFileSync("src/actions/items-base.ts", "utf8")).toContain(
"updateItemsBase",
);
expect(readFileSync("src/lib/admin-nav.ts", "utf8")).toContain(
"/admin/items",
);
});
});