export interface DateObjectUnits { year?: number; month?: number; day?: number; } export type DateArray = MakeOptionalRequired | { start: MakeOptionalRequired; end: MakeOptionalRequired; }; export type DateOption = Date | DateObjectUnits | string | number; export type Locale = Intl.LocalesArgument; export type LocaleOptions = Intl.DateTimeFormatOptions; export type MakeOptionalRequired = { [K in keyof T]-?: T[K]; }; export type MonthStatus = "prev" | "current" | "next"; export interface CustomDaysClassName extends MakeOptionalRequired { className: string; } export interface HoverRangeValue { start?: DateObjectUnits; end?: DateObjectUnits; } export interface ApplyDateRange { dayRangeEnd: boolean; dayRangeStartEnd: undefined | boolean; dayRangeStart: boolean; dayRangeBetween: boolean; daysCurrent: boolean; daysNotCurrentMonth: boolean; isWeekend: boolean; isSaturday: boolean; isSunday: boolean; customDayClass?: string; isMultipleSelected: boolean; hidden: boolean; disabled: boolean; dayRangeEndHover: boolean; date: string; dateValue: string; } export type DatePickerType = "single" | "range" | "multiple"; export type DatePickerOnChange = { selectedDate?: DateObjectUnits; type: "single"; } | { startDate?: DateObjectUnits; endDate?: DateObjectUnits; type: "range"; } | { multipleDates?: DateObjectUnits[]; type: "multiple"; }; export interface MonthDaysObject { value: T; month: MonthStatus; } export interface ITimePickerFormat { hour?: number; minute?: number; second?: number; } export interface DateTimeObject extends DateObjectUnits, ITimePickerFormat { } export type DateMathDiffUnit = "milliseconds" | "seconds" | "minutes" | "hours" | "days" | "weeks" | "months" | "quarters" | "years"; export interface DateMathDiff extends Partial> { } export type TimeMeridiem = "AM" | "PM"; export interface YearRange { start: number; end: number; }