79 lines
2.4 KiB
JavaScript
79 lines
2.4 KiB
JavaScript
import { useEffect, useState } from "react";
|
|
import { format, parseISO } from "date-fns";
|
|
export const formatFileSize=(bytes)=> {
|
|
if (bytes < 1024) return bytes + " B";
|
|
else if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(2) + " KB";
|
|
else return (bytes / (1024 * 1024)).toFixed(2) + " MB";
|
|
}
|
|
export const AppColorconfig = {
|
|
colors: {
|
|
primary: '#696cff',
|
|
secondary: '#8592a3',
|
|
success: '#71dd37',
|
|
info: '#03c3ec',
|
|
warning: '#ffab00',
|
|
danger: '#ff3e1d',
|
|
dark: '#233446',
|
|
black: '#000',
|
|
white: '#fff',
|
|
cardColor: '#fff',
|
|
bodyBg: '#f5f5f9',
|
|
bodyColor: '#697a8d',
|
|
headingColor: '#566a7f',
|
|
textMuted: '#a1acb8',
|
|
borderColor: '#eceef1'
|
|
}
|
|
};
|
|
export const getColorNameFromHex = (hex) => {
|
|
const normalizedHex = hex?.replace(/'/g, '').toLowerCase();
|
|
const colors = AppColorconfig.colors;
|
|
|
|
for (const [name, value] of Object.entries(colors)) {
|
|
if (value.toLowerCase() === normalizedHex) {
|
|
return name;
|
|
}
|
|
}
|
|
|
|
return null; //
|
|
};
|
|
|
|
export const useDebounce = (value, delay = 500) => {
|
|
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
|
|
useEffect(() => {
|
|
const timer = setTimeout(() => setDebouncedValue(value), delay);
|
|
return () => clearTimeout(timer);
|
|
}, [value, delay]);
|
|
|
|
return debouncedValue;
|
|
};
|
|
|
|
export const getIconByFileType = (type = "") => {
|
|
const lower = type.toLowerCase();
|
|
|
|
if (lower === "application/pdf") return "bxs-file-pdf";
|
|
if (lower.includes("word")) return "bxs-file-doc";
|
|
if (lower.includes("excel") || lower.includes("spreadsheet"))
|
|
return "bxs-file-xls";
|
|
if (lower === "image/png") return "bxs-file-png";
|
|
if (lower === "image/jpeg" || lower === "image/jpg") return "bxs-file-jpg";
|
|
if (lower.includes("zip") || lower.includes("rar")) return "bxs-file-archive";
|
|
|
|
return "bx bx-file";
|
|
};
|
|
|
|
|
|
export const normalizeAllowedContentTypes = (allowedContentType) => {
|
|
if (!allowedContentType) return [];
|
|
if (Array.isArray(allowedContentType)) return allowedContentType;
|
|
if (typeof allowedContentType === "string") return allowedContentType.split(",");
|
|
return [];
|
|
};
|
|
|
|
|
|
export function localToUtc(localDateString) {
|
|
if (!localDateString || localDateString.trim() === "") return null; // return null instead of undefined
|
|
const date = new Date(localDateString);
|
|
if (isNaN(date.getTime())) return null; // invalid date check
|
|
return date.toISOString();
|
|
} |