import dayjs from 'dayjs'; import { HTMLAttributes } from 'react'; import { SizeProp } from '../../types/size'; export interface DatePeriod { start: string | Date | null; end: string | Date | null; } export interface BaseCalendarProps extends Pick, 'className' | 'style'> { minDate?: string; maxDate?: string; /** * @default 'en' */ i18n?: string; readOnly?: boolean; size?: SizeProp; } export interface CalendarProps extends BaseCalendarProps { isRange?: boolean; selectedDates?: Array; onClickPrevious?: () => void; onClickNext?: () => void; onClickDay?: (date: string) => void; onClickMonth?: (month: number) => void; onClickYear?: (year: number) => void; onDayHover?: (day: string | dayjs.Dayjs) => void; highlightToday?: boolean; disabledDates?: Array; firstDayOfWeek?: number; } export interface CalendarMonthsProps extends BaseCalendarProps { onSelect: (month: number) => void; } export interface CalendarYearsProps extends BaseCalendarProps { year: number; onSelect?: (year: number) => void; } export interface CalendarWeekProps extends BaseCalendarProps, Pick { } export interface CalendarDaysProps extends BaseCalendarProps, Pick, Pick { year: number; month: number; onClickPreviousDays: (day: dayjs.Dayjs) => void; onClickDay: (day: dayjs.Dayjs) => void; onClickNextDays: (day: dayjs.Dayjs) => void; }