import "./date_calendar.css"; import type * as React from "react"; import { useRender } from "@base-ui/react/use-render"; import { type StyleProps } from "./style_props"; /** Month and weekday names come from `Intl`. */ export interface CalendarLabels { previousMonth: string; nextMonth: string; } export type CalendarSingleValue = Date | null; export type CalendarRangeValue = { start: Date | null; end: Date | null; }; export type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6; export type CalendarValue = TMode extends "single" ? CalendarSingleValue : CalendarRangeValue; /** 0-based month. */ export interface CalendarView { year: number; month: number; } interface CalendarBaseProps extends StyleProps { /** Default 1 (Monday). */ firstDayOfWeek?: DayOfWeek; /** Defaults to the active `LoticsLocaleProvider` locale. */ locale?: string; /** Uncontrolled by default; pass with `onViewChange` to drive it (a preset list). */ view?: CalendarView; onViewChange?: (view: CalendarView) => void; ref?: React.Ref; testID?: string; render?: useRender.RenderProp; } export type CalendarProps = CalendarBaseProps & (TMode extends "single" ? { mode: "single"; value: CalendarSingleValue; onValueChange: (value: CalendarSingleValue) => void; } : TMode extends "range" ? { mode: "range"; value: CalendarRangeValue; onValueChange: (value: CalendarRangeValue) => void; } : { mode: "single" | "range"; value: CalendarSingleValue | CalendarRangeValue; onValueChange: (value: CalendarSingleValue | CalendarRangeValue) => void; }); export declare function Calendar(props: CalendarProps): React.ReactElement; export {};