55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
/**
|
|
* 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;
|
|
}
|