export interface KanbanCard { id: string; title: string; description?: string; assignee?: { name: string; avatar?: string; }; priority?: "low" | "medium" | "high" | "urgent"; tags?: string[]; dueDate?: Date; metadata?: Record; } export interface KanbanColumn { id: string; title: string; cards: KanbanCard[]; limit?: number; color?: string; } export interface KanbanBoardProps { /** * Columns to display */ columns: KanbanColumn[]; /** * Callback when a card is moved */ onCardMove?: ( cardId: string, sourceColumnId: string, destinationColumnId: string, newIndex: number, ) => void; /** * Callback when a card is clicked */ onCardClick?: (card: KanbanCard, columnId: string) => void; /** * Callback when a new card button is clicked */ onAddCard?: (columnId: string) => void; /** * Callback when column order changes */ onColumnReorder?: (columns: KanbanColumn[]) => void; /** * Whether cards can be dragged * @default true */ draggable?: boolean; /** * Whether to show the add card button * @default true */ showAddButton?: boolean; /** * Additional CSS class */ className?: string; } export interface CardDragData { type: "card"; card: KanbanCard; columnId: string; index: number; } export interface ColumnDragData { type: "column"; column: KanbanColumn; index: number; }