/** One day, already de-duplicated and sorted by the picker. */ export interface BranchSlotDay { date: string; times: string[]; /** * Returned by the branch but not bookable — a blackout date or a weekday the * deployment never takes bookings on. Rendered greyed rather than removed so * the customer sees the day exists. */ disabled?: boolean; } export interface BranchSlotDropdownCopy { day: string; time: string; days: string; slots: string; empty: string; error: string; retry: string; } /** * Panel half of `branch-slot-picker`. * * Mounted on `document.body` by `shift-portal` and positioned through the * `--branch-slot-*` variables the picker sets — the same split `shift-select` / * `shift-select-dropdown` use, so the panel escapes any `overflow: hidden` or * stacking context the form puts around the field. */ export declare class BranchSlotDropdown { name?: string; isOpen: boolean; direction: string; status: 'idle' | 'loading' | 'ready' | 'empty' | 'error'; days: BranchSlotDay[]; activeDate: string; selectedRaw: string; idleText?: string; copy: BranchSlotDropdownCopy; formatDay: (date: string, options: Intl.DateTimeFormatOptions) => string; displayTime: (raw: string) => string; handleDay: (date: string) => void; handleTime: (raw: string) => 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 renderMessage; private renderSkeleton; private renderSlots; render(): any; }