import { type FC, type ReactNode } from 'react'; import type { CalendarType, DateValue, PresetConfig } from './types'; export interface CalendarProps { /** Calendar type: 'single' for one month, 'range' for two months (date range selection) */ type?: CalendarType; /** Show time selection (affects input placeholder text) */ showTime?: boolean; /** Show keyboard shortcut hints in presets and footer */ showKeyboardHints?: boolean; /** Controlled value - array of selected dates */ value?: DateValue[]; /** Default value for uncontrolled mode */ defaultValue?: DateValue[]; /** Callback fired when selected value changes */ onChange?: (value: DateValue[]) => void; /** Minimum selectable date */ minDate?: DateValue; /** Maximum selectable date */ maxDate?: DateValue; /** * Function to determine if a specific date should be unavailable/disabled. * DateValue has year, month (1-12), and day properties. * To get day of week, use: new Date(date.year, date.month - 1, date.day).getDay() * where Sunday = 0, Saturday = 6. */ isDateUnavailable?: (date: DateValue) => boolean; /** * When true, prevents selecting a range that contains any unavailable dates. * Requires controlled mode (value + onChange props) to work properly. */ disallowDisabledDatesInRange?: boolean; /** Controlled open state of the calendar popover */ open?: boolean; /** Default open state for uncontrolled mode */ defaultOpen?: boolean; /** Callback fired when popover open state changes */ onOpenChange?: (open: boolean) => void; /** Whether to close calendar on date selection. Default: true */ closeOnSelect?: boolean; /** Whether calendar is readonly (display only, no date selection allowed). Default: false */ readonly?: boolean; /** Controlled focused date — navigates the calendar view to this date */ focusedValue?: DateValue; /** Compound components (CalendarTrigger, CalendarContent, etc.) */ children?: ReactNode; } /** Default presets for single date selection */ export declare const DEFAULT_SINGLE_PRESETS: PresetConfig[]; /** Default presets for range selection */ export declare const DEFAULT_RANGE_PRESETS: PresetConfig[]; /** * Calendar component for date and date range selection. * * Uses compound pattern — compose sub-components for full control: * ```tsx * * * * * * * * * * * * * * * * * * * * ``` */ export declare const Calendar: FC;