/** * FederatedEventCard Component * Displays an event from a federated instance with provenance indicator */ import type { FederatedEvent } from "./types"; import { ProvenanceIndicator } from "./ProvenanceIndicator"; interface FederatedEventCardProps { federatedEvent: FederatedEvent; compact?: boolean; onClick?: () => void; } /** * Format time for display */ function formatTime(date: Date): string { return new Intl.DateTimeFormat("en-US", { hour: "numeric", minute: "2-digit", hour12: true, }).format(new Date(date)); } /** * Format date for display */ function formatDate(date: Date): string { return new Intl.DateTimeFormat("en-US", { weekday: "short", month: "short", day: "numeric", }).format(new Date(date)); } export function FederatedEventCard({ federatedEvent, compact = false, onClick, }: FederatedEventCardProps): React.JSX.Element { const { event, provenance } = federatedEvent; const paddingClass = compact ? "p-3" : "p-4"; const clickableClass = onClick ? "cursor-pointer hover:border-gray-300" : ""; const startTime = formatTime(event.startTime); const endTime = event.endTime !== null ? formatTime(event.endTime) : ""; const startDate = formatDate(event.startTime); return (
{/* Header with title and provenance */}

{event.title}

{event.description &&

{event.description}

}
{/* Metadata row */}
{/* Date */} {startDate} {/* Time */} {event.allDay ? ( All day ) : ( {startTime} - {endTime} )} {/* Location */} {event.location && ( 📍 {event.location} )}
); }