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;