mirror of
https://github.com/Mail-0/Zero.git
synced 2026-06-30 07:46:15 +00:00
31 lines
1.1 KiB
TypeScript
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");
|
|
};
|