1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
import { tasks, type Task } from "@/db/schema/tasks"
import { faker } from "@faker-js/faker"
import {
Activity,
AlertCircle,
AlertTriangle,
ArrowDownIcon,
ArrowRightIcon,
ArrowUpIcon,
AwardIcon,
BadgeCheck,
CheckCircle2,
CircleHelp,
CircleIcon,
CircleX,
ClipboardCheck,
ClipboardList,
FileCheck2,
FilePenLine,
FileX2,
MailCheck,
PencilIcon,
SearchIcon,
SendIcon,
Timer,
Trash2,
XCircle,
} from "lucide-react"
import { customAlphabet } from "nanoid"
import { generateId } from "@/lib/id"
import { Rfq } from "@/db/schema/rfq"
export function generateRandomTask(): Task {
return {
id: generateId("task"),
code: `TASK-${customAlphabet("0123456789", 4)()}`,
title: faker.hacker
.phrase()
.replace(/^./, (letter) => letter.toUpperCase()),
status: faker.helpers.shuffle(tasks.status.enumValues)[0] ?? "todo",
label: faker.helpers.shuffle(tasks.label.enumValues)[0] ?? "bug",
priority: faker.helpers.shuffle(tasks.priority.enumValues)[0] ?? "low",
archived: faker.datatype.boolean({ probability: 0.2 }),
createdAt: new Date(),
updatedAt: new Date(),
}
}
/**
* Returns the appropriate status icon based on the provided status.
* @param status - The status of the task.
* @returns A React component representing the status icon.
*/
export function getStatusIcon(status: Task["status"]) {
const statusIcons = {
canceled: CircleX,
done: CheckCircle2,
"in-progress": Timer,
todo: CircleHelp,
}
return statusIcons[status] || CircleIcon
}
export function getRFQStatusIcon(status: Rfq["status"]) {
const statusIcons = {
DRAFT: PencilIcon,
PUBLISHED: SendIcon,
EVALUATION: SearchIcon,
AWARDED: AwardIcon,
}
return statusIcons[status] || CircleIcon
}
/**
* Returns the appropriate priority icon based on the provided priority.
* @param priority - The priority of the task.
* @returns A React component representing the priority icon.
*/
export function getPriorityIcon(priority: Task["priority"]) {
const priorityIcons = {
high: ArrowUpIcon,
low: ArrowDownIcon,
medium: ArrowRightIcon,
}
return priorityIcons[priority] || CircleIcon
}
|