import type { ReactElement, TableHTMLAttributes } from 'react';
import type { DayOfWeek } from './date';
interface BaseCalendarProps extends Omit, 'value' | 'defaultValue' | 'role' | 'onChange'> {
readonly 'aria-labelledby': string;
readonly value?: Date | undefined;
readonly defaultValue?: Date | undefined;
readonly date?: Date | undefined;
/** @note Exclusive */
readonly min?: Date | undefined;
/** @note Exclusive */
readonly max?: Date | undefined;
readonly readonly?: boolean | undefined;
readonly disabled?: boolean | undefined;
readonly onChange?: ((value: Date) => void) | undefined;
readonly onDateChange?: ((date: Date) => void) | undefined;
/** @default DayOfWeek.Sunday */
readonly firstDayOfWeek?: DayOfWeek | undefined;
readonly renderCell?: ((date: Date) => ReactElement) | undefined;
readonly cellClassName?: ((date: Date) => string) | string | undefined;
readonly cellDisabled?: ((date: Date) => boolean) | undefined;
/** @default false */
readonly showOutOfBoundsDate?: boolean | undefined;
/** @default 0 */
readonly minWeeks?: number | undefined;
}
interface CalendarProps extends Omit {
readonly 'aria-labelledby'?: string | undefined;
readonly tableClassName?: string | undefined;
/**
* @note Apply the given `id` to the element containing the calendar date
*/
readonly renderTitle?: ((date: Date, id: string) => ReactElement) | undefined;
}
export type { BaseCalendarProps, CalendarProps };