Files
Zero/lib/utils.ts
2025-02-14 17:14:25 +05:30

31 lines
1.1 KiB
TypeScript

import { format, isToday, isThisMonth, differenceInCalendarMonths } from "date-fns";
import { MAX_URL_LENGTH } from "./constants";
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
import LZString from "lz-string";
export const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));
export const compressText = (text: string): string => {
const compressed = LZString.compressToEncodedURIComponent(text);
return compressed.slice(0, MAX_URL_LENGTH);
};
export const decompressText = (compressed: string): string => {
return LZString.decompressFromEncodedURIComponent(compressed) || "";
};
export const getCookie = (key: string): string | null => {
const cookies = Object.fromEntries(
document.cookie.split("; ").map((v) => v.split(/=(.*)/s).map(decodeURIComponent)),
);
return cookies?.[key] ?? null;
};
export const formatDate = (date: string) => {
if (isToday(date)) return format(date, "h:mm a");
if (isThisMonth(date) || differenceInCalendarMonths(new Date(), date) === 1)
return format(date, "MMM dd");
return format(date, "MM/dd/yy");
};