import { Value, type Prop, type TNode } from '@tempots/dom'; import { ControlSize } from '../theme'; import { ThemeColorName } from '../../tokens'; import type { BeatUITemporal, PlainDate } from '../../temporal/types'; export declare const YEARS_PER_PAGE = 20; export declare const DAYS_IN_WEEK = 7; export type DatePickerView = 'days' | 'months' | 'years'; export declare function generateDatePickerClasses(size: ControlSize, disabled: boolean): string; export declare function generateDatePickerStyles(color: ThemeColorName): string; /** Base cell data computed by {@link buildDatePickerGrid}. */ export interface DatePickerBaseCell { day: number; date: PlainDate; inMonth: boolean; isToday: boolean; isDisabled: boolean; } /** Builds the base array of day cells for a given month. */ export declare function buildDatePickerGrid(T: BeatUITemporal, year: number, month: number, weekStartsOn: number, today: PlainDate, isDateDisabled?: (date: PlainDate) => boolean): DatePickerBaseCell[]; /** State and actions returned by {@link createDatePickerNav}. */ export interface DatePickerNav { today: PlainDate; currentYear: Prop; currentMonth: Prop; view: Prop; yearPageStart: Prop; shiftedDayNames: Value; prevMonth: () => void; nextMonth: () => void; prevYear: () => void; nextYear: () => void; prevYearPage: () => void; nextYearPage: () => void; switchToMonthsView: () => void; switchToYearsView: () => void; selectMonth: (month: number) => void; selectYear: (year: number) => void; } /** Creates the shared navigation state for a date picker. */ export declare function createDatePickerNav(T: BeatUITemporal, initialYear: number, initialMonth: number, disabled: Value, weekStartsOn: Value, dayNames: Value): DatePickerNav; export interface DatePickerShellOptions { size: Value; disabled: Value; color: Value; ariaLabel: Value; } /** * Renders the full date picker shell: outer wrapper, navigation header * (days/months/years), weekday headers, month picker, year picker, * and a custom day grid. */ export declare function renderDatePickerShell(nav: DatePickerNav, opts: DatePickerShellOptions, renderGrid: () => TNode): TNode;