/** * UI State Types * * Defines the types for the UI state machine used in input validation * and state management across the application. */ /** * All possible UI states the application can be in. * These are mutually exclusive - only one can be active at a time. */ export type UIState = 'idle' | 'command-palette' | 'confirm-dialog' | 'selection-dialog' | 'progress' | 'help' | 'config' | 'setup' | 'batch-menu' | 'login-dialog' | 'account-view' | 'first-launch'; /** * All possible tab IDs in the application */ export type TabId = 'home' | 'servers' | 'plugins' | 'updates' | 'logs' | 'stats' | 'health' | 'recommendations'; /** * Loading states for various operations */ export interface LoadingStates { sync: boolean; backup: boolean; download: boolean; updates: boolean; servers: boolean; plugins: boolean; logs: boolean; } /** * Context provided with the current UI state */ export interface StateContext { /** Current UI state */ state: UIState; /** Active tab ID (when in idle state) */ activeTab: TabId; /** Loading states for various operations */ loading: LoadingStates; /** Whether the current operation can be cancelled (for progress state) */ canCancel?: boolean; /** Whether network is online */ online: boolean; /** Whether debug mode is enabled */ debugEnabled: boolean; } /** * Input to derive the current UI state */ export interface UIStateInput { showHelp: boolean; showConfig: boolean; showCommandPalette: boolean; showConfirmDialog: boolean; workflowType: 'sync' | 'backup' | 'download' | 'migrate' | null; showBatchMenu: boolean; showSetup: boolean; downloadStep: 'config-prompt' | 'type' | 'version' | 'destination' | 'progress'; syncLoading: boolean; backupLoading: boolean; downloadLoading: boolean; updatesLoading: boolean; serversLoading: boolean; pluginsLoading: boolean; logsLoading: boolean; activeTab: TabId; online: boolean; debugEnabled: boolean; canCancel?: boolean; showFirstLaunchPrompt?: boolean; showLoginDialog?: boolean; showAccountView?: boolean; } /** * Derive the current UI state from component state * * Priority order (first match wins): * 1. Progress states (loading workflows) * 2. Dialog states (setup, batch, confirm, selection) * 3. Overlay states (help, config, command palette) * 4. Idle state */ export declare function deriveUIState(input: UIStateInput): StateContext; /** * Check if any workflow is currently loading */ export declare function isAnyWorkflowLoading(loading: LoadingStates): boolean; /** * Check if any data loading is in progress */ export declare function isAnyDataLoading(loading: LoadingStates): boolean; /** * Check if the UI is in a state that should block most input */ export declare function isInputBlocked(state: UIState): boolean; //# sourceMappingURL=types.d.ts.map