import { format } from 'date-fns'; import { parseDateForDisplay } from '@/lib/dateUtils'; import type { DatePrecision } from './flexible-date-input'; interface FlexibleDateDisplayProps { date?: string | Date | null; precision?: DatePrecision; fallback?: string; className?: string; } export function FlexibleDateDisplay({ date, precision = 'day', fallback = 'Unknown', className }: FlexibleDateDisplayProps) { if (!date) { return {fallback}; } // ⚠️ IMPORTANT: Use parseDateForDisplay to prevent timezone shifts // YYYY-MM-DD strings must be interpreted as local dates, not UTC const dateObj = parseDateForDisplay(date); // Check for invalid date if (isNaN(dateObj.getTime())) { return {fallback}; } let formatted: string; switch (precision) { case 'year': formatted = format(dateObj, 'yyyy'); break; case 'month': formatted = format(dateObj, 'MMMM yyyy'); break; case 'day': default: formatted = format(dateObj, 'PPP'); break; } return {formatted}; }