/** BS date string in yyyy-MM-dd form, e.g. "2082-04-15". */ export type BsDateString = string; /** Calendar locale: English or Nepali month/day names. */ export type BsLocale = "en" | "ne"; import type { CalendarEvent } from "../types"; export interface BsDateSelection { /** BS date, zero-padded: "2082-04-15". */ bs: BsDateString; /** AD equivalent, yyyy-MM-dd. */ ad: string; /** Rich event records from `Events/.json`, if any. */ events: CalendarEvent[]; /** True when the day falls on the configured weekend set. */ weekend: boolean; } export interface BsDatePickerOptions { /** Controlled value (BS yyyy-MM-dd). Omit for uncontrolled. */ value?: BsDateString | null; /** Initial month as [year, month]; defaults to value, then today. */ initialMonth?: readonly [number, number]; min?: BsDateString; max?: BsDateString; disabledDates?: BsDateString[]; disabledWeekdays?: number[]; locale?: BsLocale; /** Render BS digits in Devanagari (१२३…) instead of 123. */ nepaliDigits?: boolean; /** Extra CSS class(es) for the host element. */ className?: string; /** Placeholder when nothing is selected. */ placeholder?: string; /** Disable the whole control. */ disabled?: boolean; /** Fires on every committed day pick. */ onChange?: (selection: BsDateSelection | null) => void; /** Fires when the popup opens/closes. */ onOpenChange?: (open: boolean) => void; } /** Weekday header labels, Sunday-first to match the 6×7 grid. */ export interface BsWeekdayLabels { en: readonly [string, string, string, string, string, string, string]; ne: readonly [string, string, string, string, string, string, string]; } export declare const BS_WEEKDAY_LABELS: BsWeekdayLabels; /** Devanagari digits ०–९ for the nepaliDigits switch. */ export declare const NEPALI_DIGITS: string[]; /** Renders 1–31 (or any number/key) with Devanagari digits when enabled. */ export declare function toPickerDigits(value: number | string, nepaliDigits: boolean): string; /** * Normalises a BS key to zero-padded "yyyy-MM-dd" for stable comparison. * Returns null for anything that is not shaped like a BS key. */ export declare function normalizeBsKey(key: string | null | undefined): BsDateString | null;