import { Clock } from 'lucide-react'; import type { CalendarRow } from './calendar.model'; export interface UpcomingAppointmentsPanelProps { rows: CalendarRow[]; locale: string; /** Privacy mode masks every name in the strip, the band and the list — a * clinic-wide "who is here / who is coming in" is exactly what it hides. */ privacy: boolean; /** Selects the appointment on the grid, which docks its details. */ onOpenAppointment: (eventId: string) => void; /** * `DoctorAppointment.lastStateUpdate`, keyed by appointment id, for rows * the live band shows. Optional: the platform read model does not carry * this field yet (see `calendar.sheets` note above the panel), and a row * missing from this map shows its state with no elapsed time rather than * one derived from its start time or invented. */ stateSinceByEventId?: Readonly>; /** * The host is still fetching rows. Shows content-shaped Skeleton * placeholders instead of the list, `aria-busy="true"`, and no spinner * or "Loading…" text. A refresh (rows already present) keeps the old * rows on screen instead of blanking them — pass `loading` only for the * first read. */ loading?: boolean; } export declare function UpcomingAppointmentsPanel({ rows, locale, privacy, onOpenAppointment, stateSinceByEventId, loading, }: UpcomingAppointmentsPanelProps): import("react/jsx-runtime").JSX.Element; /** Icon re-export so callers that only need the panel's own glyph (e.g. a * rail tool registration) don't have to import lucide-react directly. */ export { Clock as UpcomingAppointmentsPanelIcon }; //# sourceMappingURL=calendar-upcoming-panel.d.ts.map