import { BranchSlotDay } from './branch-slot-dropdown'; export interface BranchDateDropdownCopy { date: string; time: string; slots: string; empty: string; error: string; retry: string; back: string; noTimes: string; closed: string; } /** Which half of the sliding track is in view. */ export type BranchDateStep = 'date' | 'time'; /** * Panel half of `branch-date-picker`. * * Two panes on one horizontal track — a month grid, then that day's times — * rather than the two stacked sections `branch-slot-dropdown` uses. Only one * decision is on screen at a time, which is the point of the date-picker * variant: a customer who has met a month calendar before recognises step one * immediately, and step two arrives already scoped to the day they picked. * * Mounted on `document.body` by `shift-portal` and positioned through the * `--branch-date-*` variables the picker sets, exactly as the slot panel is. */ export declare class BranchDateDropdown { name?: string; isOpen: boolean; direction: string; status: 'idle' | 'loading' | 'ready' | 'empty' | 'error'; /** Bookable days, already de-duplicated, sorted and rule-marked by the picker. */ days: BranchSlotDay[]; /** The month on screen, as `YYYY-MM`. */ monthKey: string; /** `1` when the last month change went forward, `-1` back. Drives the slide. */ monthDirection: number; canGoPrev: boolean; canGoNext: boolean; step: BranchDateStep; activeDate: string; selectedRaw: string; today: string; /** `0` Sunday … `6` Saturday — resolved from the locale by the picker. */ weekStart: number; idleText?: string; copy: BranchDateDropdownCopy; formatDay: (date: string, options: Intl.DateTimeFormatOptions) => string; formatMonth: (monthKey: string) => string; formatWeekday: (weekday: number) => string; displayTime: (raw: string) => string; handleMonth: (delta: number) => void; handleDate: (date: string) => void; handleTime: (raw: string) => void; handleBack: () => void; handleRetry: () => void; /** Tapping the sheet scrim. Unused above 600px, where the scrim is hidden. */ handleDismiss?: () => void; setElementRef?: (el: HTMLElement | null) => void; private containerEl; componentDidLoad(): void; disconnectedCallback(): void; private get dayMap(); /** * The visible month as a flat list of ISO dates, padded with nulls so the * first of the month lands under its own weekday column. */ private monthCells; private renderMessage; private renderSkeleton; private renderCalendarPane; private renderTimePane; render(): any; }