import type { RendererThis, Tokens } from 'marked'; /** * Re-export RendererThis from marked for use in extensions */ export type { RendererThis }; /** * View modes for the Kanban board */ export type ViewMode = 'board' | 'table' | 'list'; /** * Task item interface */ export interface KanbanTask { title: string; description?: string; tags?: string[]; } /** * Column/status interface */ export interface KanbanColumn extends Tokens.Generic { type: 'kanban-column'; raw: string; id: string; props: { label: string; color?: string; }; tasks: KanbanTask[]; tokens: Tokens.Generic[]; } /** * Configuration options for the Kanban extension */ export interface KanbanOptions { /** CSS class name for the Kanban container */ className?: string; /** Default view mode */ defaultView?: ViewMode; /** Whether to show task count */ showTaskCount?: boolean; /** Custom template for rendering the Kanban */ template?: string | null; /** Function to customize the Kanban token */ customizeToken?: ((token: KanbanToken) => void) | null; } /** * Metadata for the Kanban token */ export interface KanbanMeta { /** Unique ID for the Kanban board */ kanbanId: string; /** CSS class name */ className: string; /** View mode */ viewMode: ViewMode; /** Show task count */ showTaskCount: boolean; /** Custom template */ template: string | null; } /** * Token for Kanban blocks */ export interface KanbanToken extends Tokens.Generic { type: 'kanban'; raw: string; tokens: KanbanColumn[]; meta: KanbanMeta; } /** * Options for rendering Kanban */ export interface KanbanRendererOptions extends KanbanMeta { columns: KanbanColumn[]; parser: RendererThis['parser']; }