project setup
This commit is contained in:
@@ -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");
|
||||
};
|
||||
@@ -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(" ")
|
||||
);
|
||||
};
|
||||
@@ -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" };
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
export const randomApiError = () => {
|
||||
const error = Math.random() > 0.5;
|
||||
return error;
|
||||
};
|
||||
@@ -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";
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user