import { clsx, type ClassValue } from "clsx"; import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } export function formatPrice(price: number, locale: string): string { if (locale === "fa") { return new Intl.NumberFormat("fa-IR").format(price) + " تومان"; } return new Intl.NumberFormat("en-US").format(price) + " ﷼"; } export function formatRating(rating: number): string { return rating.toFixed(1); } // Convert Persian/Arabic digits to Latin export function toLatinDigits(str: string): string { return str .replace(/[۰-۹]/g, (d) => String(d.charCodeAt(0) - 0x06f0)) .replace(/[٠-٩]/g, (d) => String(d.charCodeAt(0) - 0x0660)); } // Slugify a Persian or Latin string for URLs export function slugify(str: string): string { return toLatinDigits(str) .toLowerCase() .trim() .replace(/[\s_]+/g, "-") .replace(/[^a-z0-9؀-ۿ-]/g, "") .replace(/-+/g, "-"); } const DAY_KEYS_FA: Record = { sat: "شنبه", sun: "یکشنبه", mon: "دوشنبه", tue: "سه‌شنبه", wed: "چهارشنبه", thu: "پنجشنبه", fri: "جمعه", }; const DAY_KEYS_EN: Record = { sat: "Sat", sun: "Sun", mon: "Mon", tue: "Tue", wed: "Wed", thu: "Thu", fri: "Fri", }; export function getDayLabel(key: string, locale: string): string { return locale === "fa" ? DAY_KEYS_FA[key] ?? key : DAY_KEYS_EN[key] ?? key; } export const PRICE_TIER_LABELS: Record = { budget: { fa: "مقرون‌به‌صرفه", en: "Budget" }, moderate: { fa: "معمولی", en: "Moderate" }, upscale: { fa: "لوکس", en: "Upscale" }, luxury: { fa: "پریمیوم", en: "Luxury" }, }; export const NOISE_LABELS: Record = { quiet: { fa: "آرام", en: "Quiet" }, moderate: { fa: "نسبتاً آرام", en: "Moderate" }, lively: { fa: "شلوغ", en: "Lively" }, loud: { fa: "پرسروصدا", en: "Loud" }, };