import { type HTMLAttributes, type ReactNode } from 'react';
import { type VariantProps } from 'class-variance-authority';
import { type TaskItem } from '../task-card';
declare const taskTrayVariants: (props?: ({
size?: "sm" | "md" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
/**
* Curated imperative handle for TaskTray. Exposed as the forwardRef
* target so a future agent / MCP UI bridge can drive the tray without
* touching the DOM. See `task-tray.agent.ts`.
*/
export interface TaskTrayHandle {
getItems: () => Array<{
id: string;
status: string;
}>;
selectItem: (id: string) => void;
toggleDone: (id: string) => void;
dismiss: (id: string) => void;
}
export interface TaskTrayProps 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;
/** Tasks rendered inside the panel. */
items: TaskItem[];
/** Section title — rendered in the header. Localised by the consumer. */
title?: string;
/** Visual density forwarded to each TaskCard. */
size?: 'sm' | 'md';
/** Fires when the user activates a task (click / Enter / Space). */
onOpenTask?: (item: TaskItem) => void;
/** Fires when the host should toggle the done state of a task. Used by agent integration. */
onToggleDone?: (item: TaskItem) => void;
/** Fires when the host should dismiss / remove a task. Used by agent integration. */
onDismissTask?: (item: TaskItem) => void;
/** Fires when the user activates the header "Add" affordance. */
onAddTask?: () => void;
/** Localised label for the "Add" affordance. Defaults to `ui.taskTray.add`. */
addLabel?: string;
/** When true the panel renders skeleton placeholders. */
loading?: boolean;
/** Render an empty state when `items` is empty and `loading` is false. */
emptyTitle?: string;
emptyDescription?: string;
/** Optional CTA wired into the empty state (EmptyState primaryAction). */
emptyAction?: {
label: string;
onClick: () => void;
};
/**
* Pinned footer link (e.g. "All my undone tasks (12)"). 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 TaskCard's
* `actions` slot.
*/
renderItemActions?: (item: TaskItem) => 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 TaskTray: import("react").ForwardRefExoticComponent>;
export {};
//# sourceMappingURL=task-tray.d.ts.map