/** * Action button configuration for the action bar */ export interface IActionBarAction { /** Unique identifier for the action */ id: string; /** Button label text */ label: string; /** Primary action gets highlighted styling and receives timeout trigger */ primary?: boolean; /** Lucide icon name (optional) */ icon?: string; } /** * Configuration options for showing an action bar */ export interface IActionBarOptions { /** Message text to display */ message: string; /** Lucide icon name for the message (optional) */ icon?: string; /** Visual type affects coloring */ type?: 'info' | 'warning' | 'error' | 'question'; /** Action buttons to display */ actions: IActionBarAction[]; /** Timeout configuration (optional) */ timeout?: { /** Duration in milliseconds before auto-triggering default action */ duration: number; /** ID of the action to auto-trigger when timeout expires */ defaultActionId: string; }; /** Whether to show a dismiss (X) button */ dismissible?: boolean; } /** * Result returned when an action bar is resolved */ export interface IActionBarResult { /** ID of the action that was triggered */ actionId: string; /** Whether the action was triggered by timeout (true) or user click (false) */ timedOut: boolean; } /** * Internal queue item for pending action bars */ export interface IActionBarQueueItem { options: IActionBarOptions; resolve: (result: IActionBarResult) => void; }