import { ChevronLeftIcon, ChevronRightIcon } from "@heroicons/react/solid"; import { useEffect, useState } from "react"; import dayjs, { Dayjs } from "dayjs"; import isToday from "dayjs/plugin/isToday"; dayjs.extend(isToday); const DatePicker = ({ weekStart, onDatePicked, workingHours, disableToday }) => { const workingDays = workingHours.reduce((workingDays: number[], wh) => [...workingDays, ...wh.days], []); const [selectedMonth, setSelectedMonth] = useState(dayjs().month()); const [selectedDate, setSelectedDate] = useState(); useEffect(() => { if (selectedDate) onDatePicked(selectedDate); }, [selectedDate, onDatePicked]); // Handle month changes const incrementMonth = () => { setSelectedMonth(selectedMonth + 1); }; const decrementMonth = () => { setSelectedMonth(selectedMonth - 1); }; // Set up calendar const daysInMonth = dayjs().month(selectedMonth).daysInMonth(); const days = []; for (let i = 1; i <= daysInMonth; i++) { days.push(i); } // Create placeholder elements for empty days in first week let weekdayOfFirst = dayjs().month(selectedMonth).date(1).day(); if (weekStart === "Monday") { weekdayOfFirst -= 1; if (weekdayOfFirst < 0) weekdayOfFirst = 6; } const emptyDays = Array(weekdayOfFirst) .fill(null) .map((day, i) => (