import { type HTMLAttributes, type ReactNode } from 'react'; import { type VariantProps } from 'class-variance-authority'; export { isSafeEntityUrl as isSafeAgendaUrl } from '../_shared/is-safe-url'; export type AppointmentStatus = 'confirmed' | 'pending' | 'cancelled' | 'absent'; export interface AgendaItem { /** Unique identifier for the appointment. */ id: string; /** Display time string (e.g. "09:00"). Localised by the consumer. */ time: string; /** * Localised date eyebrow (e.g. "Thu 12 Jun") rendered under the time — * for agendas spanning more than today (upcoming-appointments queues). */ dateLabel?: string; /** Patient identity — drives the avatar's initials + accessible name. */ patient: { name: string; avatarUrl?: string; }; /** Treatment / appointment type — short localised label. */ treatment?: string; /** * Context line under the treatment (e.g. "Dr. Bianchi · Chair 2"). * Localised and pre-joined by the consumer. */ meta?: string; /** Free-text booking note — muted body line, clamped. */ note?: string; /** Lifecycle state — drives a trailing status chip. */ status?: AppointmentStatus; /** Optional deep link — when present the row is an anchor. */ url?: string; } export interface AgendaCardProps extends Omit, 'onClick' | 'role' | 'title'>, VariantProps { /** The appointment to render. */ item: AgendaItem; /** Visual density. */ size?: 'sm' | 'md'; /** Fires when the row is activated. */ onActivate?: (item: AgendaItem) => void; /** * Trailing per-row action toolbar. Rendered above the stretched-link * overlay so the controls stay clickable inside an interactive row. */ actions?: ReactNode; } declare const agendaCardVariants: (props?: ({ size?: "sm" | "md" | null | undefined; interactive?: boolean | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; export declare const AgendaCard: import("react").ForwardRefExoticComponent>; //# sourceMappingURL=agenda-card.d.ts.map