"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 { formatEventRangeLabel } from "@/lib/event-date-format"; import type { CalendarEvent } from "@/lib/types"; interface EventCardProps { event: CalendarEvent; onEdit: (event: CalendarEvent) => void; onDelete: (eventId: string) => void; } export const EVENT_CARD_SURFACE_CLASSES = "glass-card group cursor-pointer p-4 transition-[background-color,border-color,transform] duration-150 hover:-translate-y-0.5 hover:bg-accent/30 hover:border-primary/15"; export const EventCard = ({ event, onEdit, onDelete }: EventCardProps) => { 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, recurrenceRule: event.recurrenceRule, }); }; return (

{event.title}

{event.description && (

{event.description}

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