import React, { useEffect } from 'react'; import { useState } from 'react'; import { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/24/solid'; import { Button } from '../Button'; import { add, eachDayOfInterval, endOfMonth, format, getDay, isBefore, isEqual, isSameDay, isSameMonth, isToday, parse, parseISO, startOfToday, } from 'date-fns'; export interface CalendarProps { events?: { id: number; name: string; imageUrl: string; startDatetime: string; endDatetime: string; }[]; callback: any; } const classNames = (...classes: (string | boolean)[]) => { return classes.filter(Boolean).join(' '); }; export const Calendar = ({ events, callback }: CalendarProps) => { const today = startOfToday(); const [selectedDay, setSelectedDay] = useState(new Date(0)); const [currentMonth, setCurrentMonth] = useState(format(today, 'MMM-yyyy')); const [showClear, setShowClear] = useState(false); const firstDayCurrentMonth = parse(currentMonth, 'MMM-yyyy', new Date()); const colStartClasses = [ '', 'col-start-2', 'col-start-3', 'col-start-4', 'col-start-5', 'col-start-6', 'col-start-7', ]; const days = eachDayOfInterval({ start: firstDayCurrentMonth, end: endOfMonth(firstDayCurrentMonth), }); const previousMonth = () => { const firstDayNextMonth = add(firstDayCurrentMonth, { months: -1 }); setCurrentMonth(format(firstDayNextMonth, 'MMM-yyyy')); }; const nextMonth = () => { const firstDayNextMonth = add(firstDayCurrentMonth, { months: 1 }); setCurrentMonth(format(firstDayNextMonth, 'MMM-yyyy')); }; const styles = { prevNextArrows: `flex items-center justify-center flex-none p-2 text-cu-black-300 hover:text-cu-red`, calendarGrid: `grid grid-cols-7 gap-px mt-4 text-center`, }; useEffect(() => { callback(selectedDay); }, [selectedDay, callback]); return (