import {
  CalendarCellProps as KendoCalendarCellProps,
  CalendarHeaderTitleProps as KendoCalendarHeaderTitleProps,
  CalendarNavigationItemProps as KendoCalendarNavigationItemProps,
  CalendarChangeEvent as KendoCalendarChangeEvent,
  CalendarWeekCellProps as KendoCalendarWeekCellProps,
} from "@progress/kendo-react-dateinputs";

type ActiveView = "month" | "year" | "decade" | "century";

export enum CalendarViewEnum {
  Month = "month",
  Year = "year",
  Decade = "decade",
  Century = "century",
}

export interface CalendarProps {
  dataTestId?: string;
  ariaDescribedBy?: string;
  ariaLabelledBy?: string;
  bottomView?: ActiveView;
  cell?: React.ComponentType<KendoCalendarCellProps>;
  className?: string;
  defaultActiveView?: ActiveView;
  defaultValue?: null | Date;
  disabled?: boolean;
  focusedDate?: Date;
  headerTitle?: React.ComponentType<KendoCalendarHeaderTitleProps>;
  id?: string;
  max?: Date;
  min?: Date;
  navigation?: boolean;
  navigationItem?: React.ComponentType<KendoCalendarNavigationItemProps>;
  smoothScroll?: boolean;
  tabIndex?: number;
  topView?: ActiveView;
  value?: null | Date;
  weekCell?: React.ComponentType<KendoCalendarWeekCellProps>;
  weekNumber?: boolean;
  onBlur?: (event: React.FocusEvent<any>) => void;
  onChange?: (
    event: KendoCalendarChangeEvent<KendoCalendarChangeEvent>
  ) => void;
  onFocus?: (event: React.FocusEvent<any>) => void;
}
