import { type ClassValue, clsx } from 'clsx'; import { twMerge } from 'tailwind-merge'; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } export function generateId(): string { return Math.random().toString(36).substring(2) + Date.now().toString(36); } export function formatTime(time: string): string { const [hours, minutes] = time.split(':'); const hour = parseInt(hours); const ampm = hour >= 12 ? 'PM' : 'AM'; const displayHour = hour % 12 || 12; return `${displayHour}:${minutes} ${ampm}`; } export function formatDate(date: string): string { return new Date(date).toLocaleDateString('en-IE', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', }); } export function isWithinBookingWindow(date: string): boolean { const bookingDate = new Date(date); const today = new Date(); const maxDate = new Date(); maxDate.setDate(today.getDate() + 6); // 7 days including today // Reset time to start of day for comparison today.setHours(0, 0, 0, 0); maxDate.setHours(23, 59, 59, 999); bookingDate.setHours(0, 0, 0, 0); return bookingDate >= today && bookingDate <= maxDate; } // Ireland localization - Monday as first day of week export function getWeekDays(): Array<{ value: number; label: string }> { return [ { value: 1, label: 'Monday' }, { value: 2, label: 'Tuesday' }, { value: 3, label: 'Wednesday' }, { value: 4, label: 'Thursday' }, { value: 5, label: 'Friday' }, { value: 6, label: 'Saturday' }, { value: 0, label: 'Sunday' }, ]; } // Convert JavaScript's getDay() (0=Sunday) to Irish standard (0=Monday) export function getIrishDayOfWeek(date: Date): number { const jsDay = date.getDay(); return jsDay === 0 ? 6 : jsDay - 1; // Sunday becomes 6, Monday becomes 0 } // Convert Irish day index (0=Monday) back to JavaScript's getDay() format export function getJavaScriptDayOfWeek(irishDay: number): number { return irishDay === 6 ? 0 : irishDay + 1; // 6 becomes Sunday (0), others shift up } // Get day name using Irish week start (0=Monday) export function getIrishDayName(irishDayIndex: number): string { const days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']; return days[irishDayIndex]; } export function generateTimeSlots(startHour: number, endHour: number): string[] { const slots = []; for (let hour = startHour; hour < endHour; hour++) { const hourStr = hour < 10 ? '0' + hour : hour.toString(); slots.push(`${hourStr}:00`); } return slots; }