Add extras and options CRUD, add sidebar, add kanban board, udpate packages

This commit is contained in:
2026-01-29 16:18:57 +01:00
parent f9c14ed9fb
commit 507e1b9ee4
28 changed files with 2455 additions and 42 deletions

View File

@ -0,0 +1,44 @@
export const COMMISSION_STATUSES = [
"NEW",
"REVIEWING",
"ACCEPTED",
"REJECTED",
"INPROGRESS",
"COMPLETED",
"SPAM",
] as const;
export type CommissionStatus = (typeof COMMISSION_STATUSES)[number];
export const BOARD_COLUMNS = {
intake: {
title: "Intake",
statuses: ["NEW", "REVIEWING", "ACCEPTED"] as const,
// when you drop into this column, we normalize to one canonical status:
// NEW should usually be system-created; for manual moves, REVIEWING is safer.
canonicalStatus: "REVIEWING" as const,
},
inProgress: {
title: "In Progress",
statuses: ["INPROGRESS"] as const,
canonicalStatus: "INPROGRESS" as const,
},
completed: {
title: "Completed",
statuses: ["COMPLETED"] as const,
canonicalStatus: "COMPLETED" as const,
},
} as const;
export type BoardColumnId = keyof typeof BOARD_COLUMNS;
export function columnIdForStatus(status: string): BoardColumnId | null {
if (BOARD_COLUMNS.intake.statuses.includes(status as any)) return "intake";
if (BOARD_COLUMNS.inProgress.statuses.includes(status as any)) return "inProgress";
if (BOARD_COLUMNS.completed.statuses.includes(status as any)) return "completed";
return null;
}
export function canonicalStatusForColumn(col: BoardColumnId): CommissionStatus {
return BOARD_COLUMNS[col].canonicalStatus as CommissionStatus;
}