"use client"; import { motion } from "framer-motion"; import { Clock, ExternalLink, LucideMapPin, MoreHorizontal, Pencil, Trash2, } from "lucide-react"; import { RRuleDisplay } from "@/components/rrule-display"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import type { CalendarEvent } from "@/lib/types"; interface EventCardProps { event: CalendarEvent; onEdit: (event: CalendarEvent) => void; onDelete: (eventId: string) => void; } export const EventCard = ({ event, onEdit, onDelete }: EventCardProps) => { const formatDateTime = (dateStr: string, allDay: boolean | undefined) => { return allDay ? new Date(dateStr).toLocaleDateString(undefined, { month: "short", day: "numeric", year: "numeric", }) : new Date(dateStr).toLocaleString(undefined, { month: "short", day: "numeric", hour: "numeric", minute: "2-digit", }); }; const handleEdit = () => { onEdit({ id: event.id, title: event.title, description: event.description || "", location: event.location || "", url: event.url || "", start: event.start, end: event.end || "", allDay: event.allDay || false, }); }; const endDate = event.end && !event.allDay ? formatDateTime(event.end, event.allDay) : null; return (

{event.title}

{event.description && (

{event.description}

)}
{formatDateTime(event.start, event.allDay)} {endDate && -} {endDate} {event.location && ( {event.location} )} {event.url && ( )}
{event.recurrenceRule && ( )}
Edit onDelete(event.id)} className="text-destructive focus:text-destructive" > Delete
); };