import * as React from 'react'; import type { GenerateConfig } from '@rc-component/picker/generate'; import type { CellRenderInfo } from '@rc-component/picker/interface'; import type { SemanticClassNamesType, SemanticStylesType } from '../_util/hooks'; import type { AnyObject } from '../_util/type'; import enUS from './locale/en_US'; export type CalendarMode = 'year' | 'month'; export type HeaderRender = (config: { value: DateType; type: CalendarMode; onChange: (date: DateType) => void; onTypeChange: (type: CalendarMode) => void; }) => React.ReactNode; export interface SelectInfo { source: 'year' | 'month' | 'date' | 'customize'; } export type CalendarSemanticName = keyof CalendarSemanticClassNames & keyof CalendarSemanticStyles; export type CalendarSemanticClassNames = { root?: string; header?: string; body?: string; content?: string; item?: string; }; export type CalendarSemanticStyles = { root?: React.CSSProperties; header?: React.CSSProperties; body?: React.CSSProperties; content?: React.CSSProperties; item?: React.CSSProperties; }; export type CalendarClassNamesType = SemanticClassNamesType, CalendarSemanticClassNames>; export type CalendarStylesType = SemanticStylesType, CalendarSemanticStyles>; export interface CalendarProps { prefixCls?: string; className?: string; rootClassName?: string; style?: React.CSSProperties; classNames?: CalendarClassNamesType; styles?: CalendarStylesType; locale?: typeof enUS; validRange?: [DateType, DateType]; disabledDate?: (date: DateType) => boolean; /** @deprecated Please use fullCellRender instead. */ dateFullCellRender?: (date: DateType) => React.ReactNode; /** @deprecated Please use cellRender instead. */ dateCellRender?: (date: DateType) => React.ReactNode; /** @deprecated Please use fullCellRender instead. */ monthFullCellRender?: (date: DateType) => React.ReactNode; /** @deprecated Please use cellRender instead. */ monthCellRender?: (date: DateType) => React.ReactNode; cellRender?: (date: DateType, info: CellRenderInfo) => React.ReactNode; fullCellRender?: (date: DateType, info: CellRenderInfo) => React.ReactNode; headerRender?: HeaderRender; value?: DateType; defaultValue?: DateType; mode?: CalendarMode; fullscreen?: boolean; showWeek?: boolean; onChange?: (date: DateType) => void; onPanelChange?: (date: DateType, mode: CalendarMode) => void; onSelect?: (date: DateType, selectInfo: SelectInfo) => void; } declare const generateCalendar: (generateConfig: GenerateConfig) => React.FC>>; export default generateCalendar;