import { clsx, type ClassValue } from "clsx"; import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } export function formatPrice(cents: number): string { return new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR", maximumFractionDigits: 0, }).format(cents / 100); } export function formatDate(date: Date | string): string { const d = typeof date === "string" ? new Date(date) : date; return new Intl.DateTimeFormat("de-DE", { day: "2-digit", month: "short", year: "numeric", }).format(d); } export function formatDateShort(date: Date | string): string { const d = typeof date === "string" ? new Date(date) : date; return new Intl.DateTimeFormat("de-DE", { day: "2-digit", month: "2-digit", year: "2-digit", }).format(d); } export function nightsBetween(arrival: Date | string, departure: Date | string): number { const a = typeof arrival === "string" ? new Date(arrival) : arrival; const d = typeof departure === "string" ? new Date(departure) : departure; return Math.round((d.getTime() - a.getTime()) / (1000 * 60 * 60 * 24)); } export function parseJsonArray(raw: string | null | undefined): T[] { if (!raw) return []; try { const parsed = JSON.parse(raw); return Array.isArray(parsed) ? (parsed as T[]) : []; } catch { return []; } }