File size: 1,258 Bytes
1067b6f | 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 | import { type ClassValue, clsx } from "clsx";
import React from "react";
import { twMerge } from "tailwind-merge";
import { orderNumberPrefix } from "./application-constants";
import { formatRelative } from "date-fns";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
export function handleInputQuantity(
e: React.FocusEvent<HTMLInputElement, Element>,
setQuantity: React.Dispatch<React.SetStateAction<string | number>>,
defaultFallbackQuantity?: number
) {
if (Number(e.target.value) < 1 || isNaN(Number(e.target.value))) {
setQuantity(defaultFallbackQuantity ?? 1);
return;
}
setQuantity(() => Number(e.target.value.split(".")[0]));
}
export function convertSecondsToDate(seconds: number) {
const time = new Date(Date.UTC(1970, 0, 1)); // Epoch
time.setUTCSeconds(seconds);
return time;
}
export function convertDateToRelativeTime(date: Date) {
const relativeDate = formatRelative(date, new Date());
return relativeDate[0].toUpperCase() + relativeDate.slice(1);
}
export function formatOrderNumber(id: number) {
return `#${orderNumberPrefix + id.toString()}`;
}
export function removeOrderNumberFormatting(id: number) {
return Number(String(id).split(String(orderNumberPrefix))[1]);
}
|