import type { Event } from "@mosaic/shared"; import { EventCard } from "./EventCard"; import { getDateGroupLabel } from "@/lib/utils/date-format"; interface CalendarProps { events: Event[]; isLoading: boolean; } export function Calendar({ events, isLoading }: CalendarProps): React.JSX.Element { if (isLoading) { return (
Loading calendar...
); } if (events.length === 0) { return (

No events scheduled

Your calendar is clear

); } // Group events by date const groupedEvents = events.reduce>((groups, event) => { const label = getDateGroupLabel(event.startTime); groups[label] ??= [] as Event[]; groups[label].push(event); return groups; }, {}); const groupOrder = ["Today", "Tomorrow", "This Week", "Next Week", "Later"]; return (
{groupOrder.map((groupLabel) => { const groupEvents = groupedEvents[groupLabel]; if (!groupEvents || groupEvents.length === 0) { return null; } return (

{groupLabel}

{groupEvents.map((event) => ( ))}
); })}
); }