import Cookie from "js-cookie"; export function isEmail(input: string): boolean { const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; return emailRegex.test(input); } export function NumberFormat(number: number): string { return Intl.NumberFormat("fa-IR").format(number); // return Intl.NumberFormat("fa-IR").format(number); } export const timeAgo = (date: string | Date): string => { const now = new Date(); const past = new Date(date); const diff = Math.floor((now.getTime() - past.getTime()) / 1000); // اختلاف بر حسب ثانیه const units = [ { name: "سال", value: 60 * 60 * 24 * 365 }, { name: "ماه", value: 60 * 60 * 24 * 30 }, { name: "روز", value: 60 * 60 * 24 }, { name: "ساعت", value: 60 * 60 }, { name: "دقیقه", value: 60 }, { name: "ثانیه", value: 1 }, ]; for (const unit of units) { const amount = Math.floor(diff / unit.value); if (amount >= 1) return `${amount} ${unit.name} پیش`; } return "همین الان"; }; export const getToken = () => { return Cookie.get(process.env.NEXT_PUBLIC_BASE_URL || ""); }; export const getRefreshToken = () => { return Cookie.get(process.env.VITE_REFRESH_TOKEN_NAME || ""); }; const isProduction = process.env.NODE_ENV === "production"; const domain = isProduction ? ".danakcorp.com" : undefined; export const setToken = (token: string) => { Cookie.set(process.env.NEXT_PUBLIC_TOKEN_NAME || "", token, { domain: domain || "", }); }; export const setRefreshToken = (refreshToken: string) => { Cookie.set(process.env.NEXT_PUBLIC_REFRESH_TOKEN_NAME || "", refreshToken, { domain: domain || "", }); }; export const removeToken = () => { Cookie.remove(process.env.NEXT_PUBLIC_TOKEN_NAME || "", { domain, path: "/", }); }; export const removeRefreshToken = () => { Cookie.remove(process.env.NEXT_PUBLIC_REFRESH_TOKEN_NAME || "", { domain, path: "/", }); }; export function toJalaliDate( date: Date | string | number, options?: Intl.DateTimeFormatOptions, locale: string = "fa-IR-u-ca-persian" ): string { const parsedDate = new Date(date); if (isNaN(parsedDate.getTime())) { return ""; throw new Error("Invalid date provided to toJalaliDate"); } const defaultOptions: Intl.DateTimeFormatOptions = { year: "numeric", month: "numeric", day: "numeric", // weekday: "long", // hour: "numeric", // minute: "numeric", }; const formatter = new Intl.DateTimeFormat(locale, { ...defaultOptions, ...options, }); return formatter.format(parsedDate); } export function limitHtmlWords(htmlString: string, wordLimit: number): string { // پاک کردن تگ‌ها const plainText = htmlString.replace(/<[^>]*>/g, ""); // تقسیم و محدود کردن کلمات const words = plainText.split(/\s+/).slice(0, wordLimit); const result = words.join(" ") + "..."; return result; }