import { type HTMLAttributes, type ReactNode } from 'react';
import { type VariantProps } from 'class-variance-authority';
import { type AgendaItem } from '../agenda-card';
declare const agendaTrayVariants: (props?: ({
size?: "sm" | "md" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
/**
* Curated imperative handle for AgendaTray. Exposed as the forwardRef
* target so a future agent / MCP UI bridge can drive the tray without
* touching the DOM. See `agenda-tray.agent.ts`.
*/
export interface AgendaTrayHandle {
getItems: () => Array<{
id: string;
status: string;
}>;
selectItem: (id: string) => void;
}
export interface AgendaTrayProps extends Omit, 'onClick' | 'id'>, VariantProps {
/**
* Stable instance id. Surfaced on the root as `data-component-id` so
* an agent / MCP UI bridge can address this specific tray.
*/
id?: string;
items: AgendaItem[];
/** Section title — rendered in the header. Localised by the consumer. */
title?: string;
/** Optional small caption (e.g. localised date) shown next to the title. */
caption?: string;
size?: 'sm' | 'md';
onOpenAppointment?: (item: AgendaItem) => void;
onAddAppointment?: () => void;
/** Localised label for the "Add" affordance. */
addLabel?: string;
loading?: boolean;
emptyTitle?: string;
emptyDescription?: string;
/** Optional CTA wired into the empty state (EmptyState primaryAction). */
emptyAction?: {
label: string;
onClick: () => void;
};
/**
* Pinned footer link (e.g. "All upcoming appointments"). Localised by
* the consumer; rendered after the list, before the section closes.
*/
viewAllLabel?: string;
/** Fires when the footer link is activated. Required to render it. */
onViewAll?: () => void;
/**
* Per-row trailing action toolbar, forwarded to each AgendaCard's
* `actions` slot.
*/
renderItemActions?: (item: AgendaItem) => ReactNode;
/**
* Constrain the list to the tray's own height and scroll inside it —
* pair with a height/max-height on `className`. The scroll region is
* keyboard-focusable so it stays operable without a pointer.
*/
scrollable?: boolean;
}
export declare const AgendaTray: import("react").ForwardRefExoticComponent>;
export {};
//# sourceMappingURL=agenda-tray.d.ts.map