import React, { useRef } from "react"; import classNames from "classnames"; import { useCalendarCell } from "@react-aria/calendar"; import { CalendarDate, getLocalTimeZone, isSameDay, isToday, } from "@internationalized/date"; import { CalendarState, RangeCalendarState } from "@react-stately/calendar"; import { Button } from ":/components/Button"; interface CalendarCellProps { state: CalendarState | RangeCalendarState; date: CalendarDate; } const isRangeCalendar = (object: any): object is RangeCalendarState => { return object?.highlightedRange; }; export const CalendarCell = ({ state, date }: CalendarCellProps) => { const ref = useRef(null); const { cellProps, buttonProps, isSelected, formattedDate, isOutsideVisibleRange, isDisabled, } = useCalendarCell({ date }, state, ref); const isSelectionEnd = isRangeCalendar(state) && isSameDay(date, state?.highlightedRange?.end); const isSelectionStart = isRangeCalendar(state) && isSameDay(date, state?.highlightedRange?.start); const isWithinHighlightedRange = isRangeCalendar(state) && state?.highlightedRange?.start <= date && state?.highlightedRange?.end >= date; return ( ); };