export interface DateParts { day: number; month: number; year: number; } export interface CalendarDayCell { date: string; day: number; isCurrentMonth: boolean; isToday: boolean; } /** * Full month names for display in calendars. */ export declare const MONTH_NAMES: string[]; /** * Abbreviated weekday names (Sunday through Saturday). */ export declare const WEEKDAY_SHORT_NAMES: string[]; /** * Parses a "YYYY-MM-DD" string into its parts, or null if it isn't a real calendar date. */ export declare function parseDate(value: string): DateParts | null; /** * Formats date parts as "YYYY-MM-DD". */ export declare function formatDate(parts: DateParts): string; /** * Compares two "YYYY-MM-DD" strings chronologically (safe because the format is * zero-padded and lexicographic order matches chronological order). */ export declare function compareDates(a: string, b: string): number; /** * Returns whether a date falls within optional inclusive min/max bounds. */ export declare function isDateInRange(value: string, minDate?: string, maxDate?: string): boolean; /** * Clamps a date to optional inclusive min/max bounds. */ export declare function clampDate(value: string, minDate?: string, maxDate?: string): string; /** * Parses, validates, and clamps a typed value to "YYYY-MM-DD", or returns null if unparseable. */ export declare function normalizeDate(value: string, minDate?: string, maxDate?: string): string | null; /** * Returns the given date's weekday, 0=Sunday..6=Saturday, matching the `Date#getUTCDay()` * convention already used by `RecurringShiftTemplate.byDay`. */ export declare function weekdayOf(value: string): number; /** * Adds (or subtracts, if negative) whole days to a date. */ export declare function addDays(value: string, delta: number): string; /** * Adds (or subtracts) whole months, clamping the day if the target month is shorter. */ export declare function addMonths(value: string, delta: number): string; /** * Adds (or subtracts) whole years. */ export declare function addYears(value: string, delta: number): string; /** * Returns today's local calendar date as "YYYY-MM-DD". */ export declare function todayString(): string; /** * Returns the first day of the given date's month. */ export declare function startOfMonth(value: string): string; /** * Generates a 42-cell (6-week) month grid for the month containing `monthValue`, starting on * `weekStartsOn` (0=Sunday..6=Saturday). Cells outside the target month are included (dimmed by * the caller) so the grid always has full weeks. */ export declare function generateMonthGrid(monthValue: string, weekStartsOn?: number): CalendarDayCell[]; /** * Formats a month value as "Month YYYY", e.g. "July 2026". */ export declare function monthLabel(monthValue: string): string; /** * Rotates the short weekday labels to start on `weekStartsOn`. */ export declare function orderedWeekdayLabels(weekStartsOn?: number): string[]; /** * Returns all 12 months of the given year, for the month drill-down grid. */ export declare function generateYearMonths(year: number): { label: string; monthValue: string; }[]; /** * Returns a 12-year page containing the given year, aligned to a 12-year boundary, for the * year drill-down grid. */ export declare function generateDecadeYears(year: number): number[];