--- interface Props { date: Date | string; includeRelative?: boolean; } const { date, includeRelative = false } = Astro.props; const formatDate = (date: Date | string, includeRelative: boolean): string => { let currentDate = new Date(); let targetDate = date instanceof Date ? date : new Date(date); if (isNaN(targetDate.getTime())) { console.error("Invalid date:", date); return "Invalid Date"; } let yearsAgo = currentDate.getFullYear() - targetDate.getFullYear(); let monthsAgo = currentDate.getMonth() - targetDate.getMonth(); let daysAgo = currentDate.getDate() - targetDate.getDate(); let formattedDate = ""; if (yearsAgo > 0) { formattedDate = `${yearsAgo}y ago`; } else if (monthsAgo > 0) { formattedDate = `${monthsAgo}mo ago`; } else if (daysAgo > 0) { formattedDate = `${daysAgo}d ago`; } else { formattedDate = "Today"; } let fullDate = targetDate.toLocaleString("en-us", { month: "short", day: "numeric", year: "numeric", }); if (!includeRelative) { return fullDate; } return `${fullDate} (${formattedDate})`; }; const formattedDateString = formatDate(date, includeRelative); ---