refactor: move from union type to object enum

This commit is contained in:
2026-07-15 02:41:17 +05:00
parent 35465f581f
commit 84f64af62d
30 changed files with 490 additions and 193 deletions
+60
View File
@@ -0,0 +1,60 @@
export const TaskStatus = {
BACKLOG: "backlog",
TODO: "todo",
IN_PROGRESS: "in-progress",
DONE: "done",
CANCELLED: "cancelled",
} as const;
export type TaskStatus = (typeof TaskStatus)[keyof typeof TaskStatus];
export type TaskStatusMeta = {
label: string;
/** Hide column by default in kanban (toggle can show later). */
defaultHidden: boolean;
/** Codicon id for tree; adapters wrap in ThemeIcon. */
icon: string;
};
/** Explicit display / column order (not Object.values). */
export const TASK_STATUS_ORDER: TaskStatus[] = [
TaskStatus.BACKLOG,
TaskStatus.TODO,
TaskStatus.IN_PROGRESS,
TaskStatus.DONE,
TaskStatus.CANCELLED,
];
export const TASK_STATUS_META: Record<TaskStatus, TaskStatusMeta> = {
[TaskStatus.BACKLOG]: {
label: "Backlog",
defaultHidden: true,
icon: "inbox",
},
[TaskStatus.TODO]: {
label: "To Do",
defaultHidden: false,
icon: "circle-outline",
},
[TaskStatus.IN_PROGRESS]: {
label: "In Progress",
defaultHidden: false,
icon: "sync",
},
[TaskStatus.DONE]: {
label: "Done",
defaultHidden: false,
icon: "check",
},
[TaskStatus.CANCELLED]: {
label: "Cancelled",
defaultHidden: true,
icon: "close",
},
};
export function isTaskStatus(value: unknown): value is TaskStatus {
return (
typeof value === "string" && (TASK_STATUS_ORDER as string[]).includes(value)
);
}