import React from 'react'; import { Input } from '../../components/forms/input/Input'; import { type DateOnlyString, type UtcIsoString } from './dateTimeHelpers'; type Mode = 'single' | 'range'; type WeekStart = 0 | 1; /** * Contract (recommended): * - UI is always local time * * SINGLE: * - enableTime=true => value is UtcIsoString | null (UTC instant in/out) * - enableTime=false => value is DateOnlyString | null (calendar date in/out) * * RANGE: * - always date-only in UI AND value: { start/end: DateOnlyString | null } */ type RangeValue = { start: DateOnlyString | null; end: DateOnlyString | null; }; type InputProps = React.ComponentProps; type BaseProps = { mode?: Mode; enableTime?: boolean; showCalendarIcon?: boolean; timeStep?: number; min?: Date; max?: Date; locale?: string; weekStartsOn?: WeekStart; presets?: { label: string; getRange: () => { start: Date; end: Date; }; }[]; inputProps?: Omit; formatDate?: (d: Date, opts: { locale: string; enableTime: boolean; }) => string; formatRange?: (s: Date | null, e: Date | null, opts: { locale: string; enableTime: boolean; }) => string; onOpenChange?: (open: boolean) => void; }; export type DateTimePickerProps = (BaseProps & { mode?: 'single'; enableTime?: true; value: UtcIsoString | null; onChange: (next: UtcIsoString | null) => void; }) | (BaseProps & { mode?: 'single'; enableTime?: false; value: DateOnlyString | null; onChange: (next: DateOnlyString | null) => void; }) | (BaseProps & { mode: 'range'; enableTime?: boolean; value: RangeValue; onChange: (next: RangeValue) => void; }); export declare const DateTimePicker: React.ForwardRefExoticComponent>; export {};