project setup

This commit is contained in:
Sone
2025-11-02 10:08:56 +01:00
commit 568838003e
174 changed files with 27100 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
import { format, isSameWeek } from "date-fns";
export const formatTime = (dateInput: string | Date | null | undefined) => {
if (!dateInput) return "";
const date = typeof dateInput === 'string' ? new Date(dateInput) : dateInput;
return format(date, "HH:mm");
};
export const formatDate = (dateInput: string | Date | null | undefined) => {
if (!dateInput) return "";
const date = typeof dateInput === 'string' ? new Date(dateInput) : dateInput;
const now = new Date();
if (
date.getDate() === now.getDate() &&
date.getMonth() === now.getMonth() &&
date.getFullYear() === now.getFullYear()
) {
return "Today";
}
const tomorrow = new Date(now);
tomorrow.setDate(now.getDate() + 1);
if (
date.getDate() === tomorrow.getDate() &&
date.getMonth() === tomorrow.getMonth() &&
date.getFullYear() === tomorrow.getFullYear()
) {
return "Tomorrow";
}
if (isSameWeek(date, now, { weekStartsOn: 1 })) {
return format(date, "EEEE");
}
return format(date, "dd/MM");
};
export const formatDateMDY = (dateInput: string | Date | null | undefined) => {
if (!dateInput) return "";
const date = typeof dateInput === 'string' ? new Date(dateInput) : dateInput;
return format(date, "MM/dd/yyyy");
};
+17
View File
@@ -0,0 +1,17 @@
// Normalize enum-like tokens in text: e.g. ADMIN -> Admin, NO_RISK -> No risk, MODERATE_PRIORITY -> Moderate priority
export const normalizeEnumLike = (input?: string): string => {
if (!input) return "";
const capitalize = (word: string, isFirst: boolean) =>
isFirst
? word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()
: word.toLowerCase();
return input.replace(/\b[A-Z][A-Z0-9_]+\b/g, (token) =>
token
.split("_")
.filter(Boolean)
.map((part, idx) => capitalize(part, idx === 0))
.join(" ")
);
};
+13
View File
@@ -0,0 +1,13 @@
import { RiskEnum } from "@/constants/riskEnum";
export const getRiskLevel = (
score: number
): { level: RiskEnum; color: string } => {
if (score <= 35) {
return { level: RiskEnum.LOW_RISK, color: "#22C927" };
} else if (score <= 70) {
return { level: RiskEnum.MODERATE_RISK, color: "#F8F834" };
} else {
return { level: RiskEnum.HIGH_RISK, color: "#F83434" };
}
};
+4
View File
@@ -0,0 +1,4 @@
export const randomApiError = () => {
const error = Math.random() > 0.5;
return error;
};
+23
View File
@@ -0,0 +1,23 @@
import { RoleEnum } from "@/constants/roleEnum";
export const getInitials = (firstName: string, lastName: string): string => {
if (!firstName && !lastName) return "";
const firstInitial = firstName?.trim().charAt(0).toUpperCase() ?? "";
const lastInitial = lastName?.trim().charAt(0).toUpperCase() ?? "";
return `${firstInitial}${lastInitial}`;
};
export const getRoleLabel = (role: RoleEnum) => {
switch (role) {
case RoleEnum.MANAGER:
return "Manager";
case RoleEnum.ADMIN:
return "Admin";
case RoleEnum.USER:
return "User";
default:
return "Unknown";
}
};