@navios/commander-tui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/README.md +275 -0
- package/coverage/__tests__/utils/factories.ts.html +1147 -0
- package/coverage/__tests__/utils/index.html +131 -0
- package/coverage/__tests__/utils/render-utils.tsx.html +202 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +959 -0
- package/coverage/components/filter/filter_bar.tsx.html +322 -0
- package/coverage/components/filter/index.html +116 -0
- package/coverage/components/log/index.html +131 -0
- package/coverage/components/log/index.ts.html +88 -0
- package/coverage/components/log/log_message.tsx.html +391 -0
- package/coverage/components/prompt/index.html +116 -0
- package/coverage/components/prompt/prompt_renderer.tsx.html +1123 -0
- package/coverage/components/screen/index.html +131 -0
- package/coverage/components/screen/loading_message.tsx.html +217 -0
- package/coverage/components/screen/progress_message.tsx.html +265 -0
- package/coverage/components/sidebar/index.html +146 -0
- package/coverage/components/sidebar/sidebar.tsx.html +391 -0
- package/coverage/components/sidebar/sidebar_item.tsx.html +235 -0
- package/coverage/components/sidebar/sidebar_separator.tsx.html +124 -0
- package/coverage/context/index.html +131 -0
- package/coverage/context/index.ts.html +88 -0
- package/coverage/context/logger_context.tsx.html +412 -0
- package/coverage/coverage-final.json +55 -0
- package/coverage/favicon.png +0 -0
- package/coverage/filter/filter_engine.ts.html +424 -0
- package/coverage/filter/index.html +116 -0
- package/coverage/hooks/index.html +131 -0
- package/coverage/hooks/index.ts.html +88 -0
- package/coverage/hooks/use_theme.ts.html +121 -0
- package/coverage/index.html +356 -0
- package/coverage/keyboard/index.html +116 -0
- package/coverage/keyboard/keyboard_manager.ts.html +784 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/schemas/index.html +161 -0
- package/coverage/schemas/index.ts.html +94 -0
- package/coverage/schemas/logger-options.ts.html +124 -0
- package/coverage/schemas/prompt-options.ts.html +112 -0
- package/coverage/schemas/screen-options.ts.html +127 -0
- package/coverage/services/index.html +146 -0
- package/coverage/services/logger.ts.html +1192 -0
- package/coverage/services/prompt.ts.html +568 -0
- package/coverage/services/screen.ts.html +1804 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/themes/dark.ts.html +604 -0
- package/coverage/themes/high-contrast.ts.html +619 -0
- package/coverage/themes/index.html +176 -0
- package/coverage/themes/index.ts.html +97 -0
- package/coverage/themes/light.ts.html +601 -0
- package/coverage/themes/utils.ts.html +334 -0
- package/coverage/tokens/index.html +161 -0
- package/coverage/tokens/index.ts.html +94 -0
- package/coverage/tokens/logger.ts.html +115 -0
- package/coverage/tokens/prompt.ts.html +115 -0
- package/coverage/tokens/screen.ts.html +115 -0
- package/coverage/types/file.types.ts.html +265 -0
- package/coverage/types/filter.types.ts.html +238 -0
- package/coverage/types/index.html +236 -0
- package/coverage/types/index.ts.html +151 -0
- package/coverage/types/keyboard.types.ts.html +364 -0
- package/coverage/types/log.types.ts.html +268 -0
- package/coverage/types/message.types.ts.html +445 -0
- package/coverage/types/prompt.types.ts.html +403 -0
- package/coverage/types/screen.types.ts.html +451 -0
- package/coverage/types/theme.types.ts.html +841 -0
- package/coverage/utils/colors/file-colors.ts.html +112 -0
- package/coverage/utils/colors/helpers.ts.html +235 -0
- package/coverage/utils/colors/index.html +221 -0
- package/coverage/utils/colors/index.ts.html +145 -0
- package/coverage/utils/colors/log-colors.ts.html +253 -0
- package/coverage/utils/colors/progress-colors.ts.html +160 -0
- package/coverage/utils/colors/prompt-colors.ts.html +175 -0
- package/coverage/utils/colors/sidebar-colors.ts.html +241 -0
- package/coverage/utils/colors/table-colors.ts.html +118 -0
- package/coverage/utils/filetype.ts.html +277 -0
- package/coverage/utils/format.ts.html +241 -0
- package/coverage/utils/index.html +161 -0
- package/coverage/utils/index.ts.html +118 -0
- package/coverage/utils/stdout-printer.ts.html +523 -0
- package/dist/src/components/file/file_log.d.ts +35 -0
- package/dist/src/components/file/file_log.d.ts.map +1 -0
- package/dist/src/components/file/index.d.ts +2 -0
- package/dist/src/components/file/index.d.ts.map +1 -0
- package/dist/src/components/filter/filter_bar.d.ts +10 -0
- package/dist/src/components/filter/filter_bar.d.ts.map +1 -0
- package/dist/src/components/filter/index.d.ts +2 -0
- package/dist/src/components/filter/index.d.ts.map +1 -0
- package/dist/src/components/help/help_overlay.d.ts +10 -0
- package/dist/src/components/help/help_overlay.d.ts.map +1 -0
- package/dist/src/components/help/index.d.ts +2 -0
- package/dist/src/components/help/index.d.ts.map +1 -0
- package/dist/src/components/index.d.ts +27 -0
- package/dist/src/components/index.d.ts.map +1 -0
- package/dist/src/components/log/debug_log.d.ts +3 -0
- package/dist/src/components/log/debug_log.d.ts.map +1 -0
- package/dist/src/components/log/error_log.d.ts +3 -0
- package/dist/src/components/log/error_log.d.ts.map +1 -0
- package/dist/src/components/log/fatal_log.d.ts +3 -0
- package/dist/src/components/log/fatal_log.d.ts.map +1 -0
- package/dist/src/components/log/index.d.ts +9 -0
- package/dist/src/components/log/index.d.ts.map +1 -0
- package/dist/src/components/log/info_log.d.ts +3 -0
- package/dist/src/components/log/info_log.d.ts.map +1 -0
- package/dist/src/components/log/log_message.d.ts +33 -0
- package/dist/src/components/log/log_message.d.ts.map +1 -0
- package/dist/src/components/log/success_log.d.ts +3 -0
- package/dist/src/components/log/success_log.d.ts.map +1 -0
- package/dist/src/components/log/trace_log.d.ts +3 -0
- package/dist/src/components/log/trace_log.d.ts.map +1 -0
- package/dist/src/components/log/warning_log.d.ts +3 -0
- package/dist/src/components/log/warning_log.d.ts.map +1 -0
- package/dist/src/components/prompt/index.d.ts +3 -0
- package/dist/src/components/prompt/index.d.ts.map +1 -0
- package/dist/src/components/prompt/prompt_renderer.d.ts +6 -0
- package/dist/src/components/prompt/prompt_renderer.d.ts.map +1 -0
- package/dist/src/components/screen/group_renderer.d.ts +19 -0
- package/dist/src/components/screen/group_renderer.d.ts.map +1 -0
- package/dist/src/components/screen/index.d.ts +13 -0
- package/dist/src/components/screen/index.d.ts.map +1 -0
- package/dist/src/components/screen/loading_message.d.ts +6 -0
- package/dist/src/components/screen/loading_message.d.ts.map +1 -0
- package/dist/src/components/screen/message_renderer.d.ts +8 -0
- package/dist/src/components/screen/message_renderer.d.ts.map +1 -0
- package/dist/src/components/screen/progress_message.d.ts +8 -0
- package/dist/src/components/screen/progress_message.d.ts.map +1 -0
- package/dist/src/components/screen/screen_bridge.d.ts +20 -0
- package/dist/src/components/screen/screen_bridge.d.ts.map +1 -0
- package/dist/src/components/screen/table_message.d.ts +6 -0
- package/dist/src/components/screen/table_message.d.ts.map +1 -0
- package/dist/src/components/screen_manager_bridge.d.ts +11 -0
- package/dist/src/components/screen_manager_bridge.d.ts.map +1 -0
- package/dist/src/components/sidebar/index.d.ts +6 -0
- package/dist/src/components/sidebar/index.d.ts.map +1 -0
- package/dist/src/components/sidebar/sidebar.d.ts +18 -0
- package/dist/src/components/sidebar/sidebar.d.ts.map +1 -0
- package/dist/src/components/sidebar/sidebar_item.d.ts +14 -0
- package/dist/src/components/sidebar/sidebar_item.d.ts.map +1 -0
- package/dist/src/components/sidebar/sidebar_separator.d.ts +2 -0
- package/dist/src/components/sidebar/sidebar_separator.d.ts.map +1 -0
- package/dist/src/context/logger_context.d.ts +60 -0
- package/dist/src/context/logger_context.d.ts.map +1 -0
- package/dist/src/filter/filter_engine.d.ts +20 -0
- package/dist/src/filter/filter_engine.d.ts.map +1 -0
- package/dist/src/filter/index.d.ts +4 -0
- package/dist/src/filter/index.d.ts.map +1 -0
- package/dist/src/hooks/index.d.ts +2 -0
- package/dist/src/hooks/index.d.ts.map +1 -0
- package/dist/src/hooks/use_theme.d.ts +7 -0
- package/dist/src/hooks/use_theme.d.ts.map +1 -0
- package/dist/src/index.d.ts +88 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/keyboard/create_bindings.d.ts +31 -0
- package/dist/src/keyboard/create_bindings.d.ts.map +1 -0
- package/dist/src/keyboard/index.d.ts +12 -0
- package/dist/src/keyboard/index.d.ts.map +1 -0
- package/dist/src/keyboard/keyboard_manager.d.ts +69 -0
- package/dist/src/keyboard/keyboard_manager.d.ts.map +1 -0
- package/dist/src/services/index.d.ts +5 -0
- package/dist/src/services/index.d.ts.map +1 -0
- package/dist/src/services/logger.d.ts +61 -0
- package/dist/src/services/logger.d.ts.map +1 -0
- package/dist/src/services/prompt.d.ts +37 -0
- package/dist/src/services/prompt.d.ts.map +1 -0
- package/dist/src/services/screen.d.ts +165 -0
- package/dist/src/services/screen.d.ts.map +1 -0
- package/dist/src/services/screen_manager.d.ts +124 -0
- package/dist/src/services/screen_manager.d.ts.map +1 -0
- package/dist/src/themes/dark.d.ts +7 -0
- package/dist/src/themes/dark.d.ts.map +1 -0
- package/dist/src/themes/high-contrast.d.ts +7 -0
- package/dist/src/themes/high-contrast.d.ts.map +1 -0
- package/dist/src/themes/index.d.ts +18 -0
- package/dist/src/themes/index.d.ts.map +1 -0
- package/dist/src/themes/light.d.ts +6 -0
- package/dist/src/themes/light.d.ts.map +1 -0
- package/dist/src/themes/utils.d.ts +22 -0
- package/dist/src/themes/utils.d.ts.map +1 -0
- package/dist/src/types/file.types.d.ts +40 -0
- package/dist/src/types/file.types.d.ts.map +1 -0
- package/dist/src/types/filter.types.d.ts +31 -0
- package/dist/src/types/filter.types.d.ts.map +1 -0
- package/dist/src/types/index.d.ts +81 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/keyboard.types.d.ts +83 -0
- package/dist/src/types/keyboard.types.d.ts.map +1 -0
- package/dist/src/types/log.types.d.ts +32 -0
- package/dist/src/types/log.types.d.ts.map +1 -0
- package/dist/src/types/message.types.d.ts +91 -0
- package/dist/src/types/message.types.d.ts.map +1 -0
- package/dist/src/types/prompt.types.d.ts +89 -0
- package/dist/src/types/prompt.types.d.ts.map +1 -0
- package/dist/src/types/screen.types.d.ts +85 -0
- package/dist/src/types/screen.types.d.ts.map +1 -0
- package/dist/src/types/theme.types.d.ts +216 -0
- package/dist/src/types/theme.types.d.ts.map +1 -0
- package/dist/src/utils/colors/file-colors.d.ts +10 -0
- package/dist/src/utils/colors/file-colors.d.ts.map +1 -0
- package/dist/src/utils/colors/helpers.d.ts +29 -0
- package/dist/src/utils/colors/helpers.d.ts.map +1 -0
- package/dist/src/utils/colors/index.d.ts +13 -0
- package/dist/src/utils/colors/index.d.ts.map +1 -0
- package/dist/src/utils/colors/log-colors.d.ts +15 -0
- package/dist/src/utils/colors/log-colors.d.ts.map +1 -0
- package/dist/src/utils/colors/progress-colors.d.ts +25 -0
- package/dist/src/utils/colors/progress-colors.d.ts.map +1 -0
- package/dist/src/utils/colors/prompt-colors.d.ts +22 -0
- package/dist/src/utils/colors/prompt-colors.d.ts.map +1 -0
- package/dist/src/utils/colors/sidebar-colors.d.ts +50 -0
- package/dist/src/utils/colors/sidebar-colors.d.ts.map +1 -0
- package/dist/src/utils/colors/table-colors.d.ts +12 -0
- package/dist/src/utils/colors/table-colors.d.ts.map +1 -0
- package/dist/src/utils/filetype.d.ts +19 -0
- package/dist/src/utils/filetype.d.ts.map +1 -0
- package/dist/src/utils/format.d.ts +9 -0
- package/dist/src/utils/format.d.ts.map +1 -0
- package/dist/src/utils/index.d.ts +20 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/stdout-printer.d.ts +10 -0
- package/dist/src/utils/stdout-printer.d.ts.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/tsdown.config.d.mts +5 -0
- package/dist/tsdown.config.d.mts.map +1 -0
- package/dist/vitest.config.d.mts +3 -0
- package/dist/vitest.config.d.mts.map +1 -0
- package/lib/index.cjs +6349 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.d.cts +1720 -0
- package/lib/index.d.cts.map +1 -0
- package/lib/index.d.mts +1720 -0
- package/lib/index.d.mts.map +1 -0
- package/lib/index.mjs +6264 -0
- package/lib/index.mjs.map +1 -0
- package/lib/screen_manager_bridge-BpDgVu3e.cjs +3357 -0
- package/lib/screen_manager_bridge-BpDgVu3e.cjs.map +1 -0
- package/lib/screen_manager_bridge-CkV7637i.cjs +3 -0
- package/lib/screen_manager_bridge-DN2J6_k1.mjs +3 -0
- package/lib/screen_manager_bridge-Dfg4QUrl.mjs +3034 -0
- package/lib/screen_manager_bridge-Dfg4QUrl.mjs.map +1 -0
- package/package.json +43 -0
- package/project.json +60 -0
- package/src/__tests__/components/__snapshots__/filter_bar.spec.tsx.snap +2245 -0
- package/src/__tests__/components/__snapshots__/loading_message.spec.tsx.snap +1382 -0
- package/src/__tests__/components/__snapshots__/log_message.spec.tsx.snap +3169 -0
- package/src/__tests__/components/__snapshots__/progress_message.spec.tsx.snap +1743 -0
- package/src/__tests__/components/__snapshots__/prompt_renderer.spec.tsx.snap +3135 -0
- package/src/__tests__/components/__snapshots__/sidebar.spec.tsx.snap +2617 -0
- package/src/__tests__/components/filter_bar.spec.tsx +190 -0
- package/src/__tests__/components/loading_message.spec.tsx +110 -0
- package/src/__tests__/components/log_message.spec.tsx +166 -0
- package/src/__tests__/components/progress_message.spec.tsx +147 -0
- package/src/__tests__/components/prompt_renderer.spec.tsx +274 -0
- package/src/__tests__/components/sidebar.spec.tsx +305 -0
- package/src/__tests__/filter/filter_engine.spec.ts +325 -0
- package/src/__tests__/keyboard/keyboard_manager.spec.ts +557 -0
- package/src/__tests__/mocks/scm-mock.ts +5 -0
- package/src/__tests__/services/logger.spec.ts +630 -0
- package/src/__tests__/services/prompt.spec.ts +411 -0
- package/src/__tests__/services/screen.spec.ts +721 -0
- package/src/__tests__/setup.ts +43 -0
- package/src/__tests__/utils/factories.ts +354 -0
- package/src/__tests__/utils/filetype.spec.ts +195 -0
- package/src/__tests__/utils/format.spec.ts +178 -0
- package/src/__tests__/utils/render-utils.tsx +39 -0
- package/src/__tests__/utils/test-container.ts +48 -0
- package/src/components/file/file_log.tsx +241 -0
- package/src/components/file/index.ts +1 -0
- package/src/components/filter/filter_bar.tsx +79 -0
- package/src/components/filter/index.ts +1 -0
- package/src/components/help/help_overlay.tsx +100 -0
- package/src/components/help/index.ts +1 -0
- package/src/components/index.ts +15 -0
- package/src/components/log/index.ts +1 -0
- package/src/components/log/log_message.tsx +102 -0
- package/src/components/prompt/index.ts +2 -0
- package/src/components/prompt/prompt_renderer.tsx +346 -0
- package/src/components/screen/group_renderer.tsx +64 -0
- package/src/components/screen/index.ts +6 -0
- package/src/components/screen/loading_message.tsx +44 -0
- package/src/components/screen/message_renderer.tsx +108 -0
- package/src/components/screen/progress_message.tsx +60 -0
- package/src/components/screen/screen_bridge.tsx +149 -0
- package/src/components/screen/table_message.tsx +57 -0
- package/src/components/screen_manager_bridge.tsx +245 -0
- package/src/components/sidebar/index.ts +3 -0
- package/src/components/sidebar/sidebar.tsx +102 -0
- package/src/components/sidebar/sidebar_item.tsx +50 -0
- package/src/components/sidebar/sidebar_separator.tsx +13 -0
- package/src/context/index.ts +1 -0
- package/src/context/logger_context.tsx +109 -0
- package/src/factories/index.ts +1 -0
- package/src/factories/screen.factory.ts +22 -0
- package/src/filter/filter_engine.ts +113 -0
- package/src/filter/index.ts +1 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use_theme.ts +12 -0
- package/src/index.ts +64 -0
- package/src/keyboard/create_bindings.ts +457 -0
- package/src/keyboard/index.ts +2 -0
- package/src/keyboard/keyboard_manager.ts +233 -0
- package/src/overrides/console.logger.override.ts +61 -0
- package/src/overrides/index.ts +1 -0
- package/src/schemas/index.ts +3 -0
- package/src/schemas/logger-options.ts +13 -0
- package/src/schemas/prompt-options.ts +9 -0
- package/src/schemas/screen-options.ts +14 -0
- package/src/services/index.ts +4 -0
- package/src/services/logger.ts +369 -0
- package/src/services/prompt.ts +169 -0
- package/src/services/screen.ts +590 -0
- package/src/services/screen_manager.tsx +390 -0
- package/src/themes/dark.ts +173 -0
- package/src/themes/high-contrast.ts +178 -0
- package/src/themes/index.ts +4 -0
- package/src/themes/light.ts +172 -0
- package/src/themes/utils.ts +83 -0
- package/src/tokens/index.ts +3 -0
- package/src/tokens/logger.ts +10 -0
- package/src/tokens/prompt.ts +10 -0
- package/src/tokens/screen.ts +10 -0
- package/src/types/file.types.ts +60 -0
- package/src/types/filter.types.ts +51 -0
- package/src/types/index.ts +22 -0
- package/src/types/keyboard.types.ts +93 -0
- package/src/types/log.types.ts +61 -0
- package/src/types/message.types.ts +120 -0
- package/src/types/prompt.types.ts +106 -0
- package/src/types/screen.types.ts +124 -0
- package/src/types/theme.types.ts +252 -0
- package/src/utils/colors/file-colors.ts +9 -0
- package/src/utils/colors/helpers.ts +50 -0
- package/src/utils/colors/index.ts +20 -0
- package/src/utils/colors/log-colors.ts +56 -0
- package/src/utils/colors/progress-colors.ts +25 -0
- package/src/utils/colors/prompt-colors.ts +30 -0
- package/src/utils/colors/sidebar-colors.ts +52 -0
- package/src/utils/colors/table-colors.ts +11 -0
- package/src/utils/filetype.ts +64 -0
- package/src/utils/format.ts +52 -0
- package/src/utils/index.ts +11 -0
- package/src/utils/stdout-printer.ts +255 -0
- package/tsconfig.json +14 -0
- package/tsdown.config.mts +34 -0
- package/vitest.config.mts +10 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { FocusArea } from './screen.types.ts'
|
|
2
|
+
|
|
3
|
+
// ============================================
|
|
4
|
+
// Keyboard Event Types
|
|
5
|
+
// ============================================
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Key event from the terminal.
|
|
9
|
+
*/
|
|
10
|
+
export interface KeyEvent {
|
|
11
|
+
name: string
|
|
12
|
+
sequence?: string
|
|
13
|
+
ctrl?: boolean
|
|
14
|
+
meta?: boolean
|
|
15
|
+
shift?: boolean
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Context available to keyboard handlers.
|
|
20
|
+
*/
|
|
21
|
+
export interface KeyboardContext {
|
|
22
|
+
/** Has multiple screens (sidebar visible) */
|
|
23
|
+
hasSidebar: boolean
|
|
24
|
+
/** Currently focused area */
|
|
25
|
+
focusArea: FocusArea
|
|
26
|
+
/** Whether a prompt is active */
|
|
27
|
+
hasPrompt: boolean
|
|
28
|
+
/** Whether prompt is in text input mode */
|
|
29
|
+
inInputMode: boolean
|
|
30
|
+
/** Whether filter bar is visible */
|
|
31
|
+
isFilterActive: boolean
|
|
32
|
+
/** Whether help overlay is visible */
|
|
33
|
+
isHelpVisible: boolean
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Handler function for a key binding.
|
|
38
|
+
* Return true to prevent further processing, false/void to continue.
|
|
39
|
+
*/
|
|
40
|
+
export type KeyHandler = (key: KeyEvent, context: KeyboardContext) => boolean | void
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Category for organizing bindings in help overlay.
|
|
44
|
+
*/
|
|
45
|
+
export type KeyBindingCategory = 'general' | 'navigation' | 'screen' | 'prompt' | 'filter'
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Condition for when a binding is active.
|
|
49
|
+
*/
|
|
50
|
+
export interface KeyBindingCondition {
|
|
51
|
+
hasPrompt?: boolean
|
|
52
|
+
inInputMode?: boolean
|
|
53
|
+
focusArea?: FocusArea
|
|
54
|
+
isFilterActive?: boolean
|
|
55
|
+
isHelpVisible?: boolean
|
|
56
|
+
hasSidebar?: boolean
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* A single key binding definition.
|
|
61
|
+
*/
|
|
62
|
+
export interface KeyBinding {
|
|
63
|
+
/** Key name(s) that trigger this binding */
|
|
64
|
+
key: string | string[]
|
|
65
|
+
/** Require Ctrl modifier */
|
|
66
|
+
ctrl?: boolean
|
|
67
|
+
/** Require Meta/Cmd modifier */
|
|
68
|
+
meta?: boolean
|
|
69
|
+
/** Require Shift modifier (for capital letters) */
|
|
70
|
+
shift?: boolean
|
|
71
|
+
/** Handler function */
|
|
72
|
+
handler: KeyHandler
|
|
73
|
+
/** Description for help overlay */
|
|
74
|
+
description: string
|
|
75
|
+
/** Category for grouping in help */
|
|
76
|
+
category: KeyBindingCategory
|
|
77
|
+
/** Condition when this binding is active */
|
|
78
|
+
when?: KeyBindingCondition
|
|
79
|
+
/** Priority (higher = checked first, default 0) */
|
|
80
|
+
priority?: number
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Configuration for the keyboard manager.
|
|
85
|
+
*/
|
|
86
|
+
export interface KeyBindingsConfig {
|
|
87
|
+
/** Custom bindings (added to defaults) */
|
|
88
|
+
bindings?: KeyBinding[]
|
|
89
|
+
/** Override specific default bindings by key */
|
|
90
|
+
overrides?: Record<string, Partial<KeyBinding>>
|
|
91
|
+
/** Disable specific keys */
|
|
92
|
+
disabled?: string[]
|
|
93
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { LogLevel } from '@navios/core'
|
|
2
|
+
import type { RGBA } from '@opentui/core'
|
|
3
|
+
import type { ReactNode } from 'react'
|
|
4
|
+
|
|
5
|
+
import type { LogMessageVariant } from './message.types.ts'
|
|
6
|
+
|
|
7
|
+
// ============================================
|
|
8
|
+
// Log Level Types
|
|
9
|
+
// ============================================
|
|
10
|
+
|
|
11
|
+
export interface LogLevelColors {
|
|
12
|
+
border: string
|
|
13
|
+
background: string
|
|
14
|
+
text?: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type LogLevelColorMap = Record<LogLevel, LogLevelColors>
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Color map for semantic variants (success, trace) that override level colors.
|
|
21
|
+
*/
|
|
22
|
+
export type VariantColorMap = Record<LogMessageVariant, LogLevelColors>
|
|
23
|
+
|
|
24
|
+
// ============================================
|
|
25
|
+
// LogMessage Component Types
|
|
26
|
+
// ============================================
|
|
27
|
+
|
|
28
|
+
export interface LogMessageProps {
|
|
29
|
+
/** Log level determines the color scheme */
|
|
30
|
+
level: LogLevel
|
|
31
|
+
|
|
32
|
+
/** Optional semantic variant for styling (e.g., 'success' shows green even though level is 'log') */
|
|
33
|
+
variant?: LogMessageVariant
|
|
34
|
+
|
|
35
|
+
/** Message content - can be string or React nodes */
|
|
36
|
+
children: ReactNode
|
|
37
|
+
|
|
38
|
+
/** Optional timestamp to display */
|
|
39
|
+
timestamp?: Date | string
|
|
40
|
+
|
|
41
|
+
/** Optional label/prefix (e.g., "API", "Database") */
|
|
42
|
+
label?: string
|
|
43
|
+
|
|
44
|
+
/** Optional stack trace to display (for trace level) */
|
|
45
|
+
trace?: string
|
|
46
|
+
|
|
47
|
+
/** Optional custom border color (overrides level color) */
|
|
48
|
+
borderColor?: string | RGBA
|
|
49
|
+
|
|
50
|
+
/** Optional custom background color (overrides level color) */
|
|
51
|
+
backgroundColor?: string | RGBA
|
|
52
|
+
|
|
53
|
+
/** Border width style - 'thin' uses left border only, 'thick' uses left+top+bottom */
|
|
54
|
+
borderStyle?: 'thin' | 'thick'
|
|
55
|
+
|
|
56
|
+
/** Padding inside the message box */
|
|
57
|
+
padding?: number
|
|
58
|
+
|
|
59
|
+
/** Margin around the message */
|
|
60
|
+
margin?: number
|
|
61
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { LogLevel } from '@navios/core'
|
|
2
|
+
|
|
3
|
+
// ============================================
|
|
4
|
+
// Internal Message Types
|
|
5
|
+
// ============================================
|
|
6
|
+
|
|
7
|
+
export type MessageType =
|
|
8
|
+
| 'log'
|
|
9
|
+
| 'file'
|
|
10
|
+
| 'diff'
|
|
11
|
+
| 'fileError'
|
|
12
|
+
| 'loading'
|
|
13
|
+
| 'progress'
|
|
14
|
+
| 'group'
|
|
15
|
+
| 'table'
|
|
16
|
+
|
|
17
|
+
export interface BaseMessage {
|
|
18
|
+
id: string
|
|
19
|
+
type: MessageType
|
|
20
|
+
timestamp: Date
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Semantic variants for log messages that don't map directly to LogLevel.
|
|
25
|
+
* These affect styling but the underlying LogLevel is used for filtering.
|
|
26
|
+
*/
|
|
27
|
+
export type LogMessageVariant = 'success' | 'trace'
|
|
28
|
+
|
|
29
|
+
export interface LogMessageData extends BaseMessage {
|
|
30
|
+
type: 'log'
|
|
31
|
+
level: LogLevel
|
|
32
|
+
/** Content is always a string - objects are formatted before storage */
|
|
33
|
+
content: string
|
|
34
|
+
label?: string
|
|
35
|
+
trace?: string
|
|
36
|
+
/** Optional semantic variant for styling (e.g., 'success' shows green even though level is 'log') */
|
|
37
|
+
variant?: LogMessageVariant
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface FileMessageData extends BaseMessage {
|
|
41
|
+
type: 'file'
|
|
42
|
+
filePath: string
|
|
43
|
+
content: string
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface DiffMessageData extends BaseMessage {
|
|
47
|
+
type: 'diff'
|
|
48
|
+
filePath: string
|
|
49
|
+
diff: string
|
|
50
|
+
view?: 'unified' | 'split'
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export interface FileErrorMessageData extends BaseMessage {
|
|
54
|
+
type: 'fileError'
|
|
55
|
+
filePath: string
|
|
56
|
+
content: string
|
|
57
|
+
errorLines: number[]
|
|
58
|
+
startLine: number
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface LoadingMessageData extends BaseMessage {
|
|
62
|
+
type: 'loading'
|
|
63
|
+
content: string
|
|
64
|
+
status: 'loading' | 'success' | 'fail'
|
|
65
|
+
resolvedContent?: string
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface ProgressMessageData extends BaseMessage {
|
|
69
|
+
type: 'progress'
|
|
70
|
+
label: string
|
|
71
|
+
current: number
|
|
72
|
+
total: number
|
|
73
|
+
status: 'active' | 'complete' | 'failed'
|
|
74
|
+
resolvedContent?: string
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface GroupMessageData extends BaseMessage {
|
|
78
|
+
type: 'group'
|
|
79
|
+
label: string
|
|
80
|
+
collapsed: boolean
|
|
81
|
+
isEnd: boolean
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface TableMessageData extends BaseMessage {
|
|
85
|
+
type: 'table'
|
|
86
|
+
headers: string[]
|
|
87
|
+
rows: string[][]
|
|
88
|
+
title?: string
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export type MessageData =
|
|
92
|
+
| LogMessageData
|
|
93
|
+
| FileMessageData
|
|
94
|
+
| DiffMessageData
|
|
95
|
+
| FileErrorMessageData
|
|
96
|
+
| LoadingMessageData
|
|
97
|
+
| ProgressMessageData
|
|
98
|
+
| GroupMessageData
|
|
99
|
+
| TableMessageData
|
|
100
|
+
|
|
101
|
+
// ============================================
|
|
102
|
+
// Logger Handle Types
|
|
103
|
+
// ============================================
|
|
104
|
+
|
|
105
|
+
export interface PromiseOptions<T> {
|
|
106
|
+
loading: string
|
|
107
|
+
success: string | ((data: T) => string)
|
|
108
|
+
error: string | ((error: Error) => string)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface LoadingHandle {
|
|
112
|
+
success: (message: string) => void
|
|
113
|
+
fail: (message: string) => void
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export interface ProgressHandle {
|
|
117
|
+
update: (current: number, label?: string) => void
|
|
118
|
+
complete: (message?: string) => void
|
|
119
|
+
fail: (message?: string) => void
|
|
120
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// Prompt Data Types
|
|
3
|
+
// ============================================
|
|
4
|
+
|
|
5
|
+
export interface ChoiceOption {
|
|
6
|
+
label: string
|
|
7
|
+
value: string
|
|
8
|
+
/** If true, this option allows text input */
|
|
9
|
+
input?: boolean
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface BasePromptData {
|
|
13
|
+
id: string
|
|
14
|
+
timestamp: Date
|
|
15
|
+
resolved: boolean
|
|
16
|
+
/** Auto-resolve timeout in ms */
|
|
17
|
+
timeout?: number
|
|
18
|
+
/** Timestamp when timeout started */
|
|
19
|
+
timeoutStarted?: number
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface ChoicePromptData extends BasePromptData {
|
|
23
|
+
type: 'choice'
|
|
24
|
+
question: string
|
|
25
|
+
choices: ChoiceOption[]
|
|
26
|
+
defaultChoice: string
|
|
27
|
+
selectedIndex: number
|
|
28
|
+
inputMode: boolean
|
|
29
|
+
inputValue: string
|
|
30
|
+
resolvedValue?: string
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface ConfirmPromptData extends BasePromptData {
|
|
34
|
+
type: 'confirm'
|
|
35
|
+
question: string
|
|
36
|
+
confirmText: string
|
|
37
|
+
cancelText: string
|
|
38
|
+
defaultValue: boolean
|
|
39
|
+
selectedValue: boolean
|
|
40
|
+
resolvedValue?: boolean
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface InputPromptData extends BasePromptData {
|
|
44
|
+
type: 'input'
|
|
45
|
+
question: string
|
|
46
|
+
placeholder: string
|
|
47
|
+
defaultValue: string
|
|
48
|
+
value: string
|
|
49
|
+
resolvedValue?: string
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface MultiChoicePromptData extends BasePromptData {
|
|
53
|
+
type: 'multiChoice'
|
|
54
|
+
question: string
|
|
55
|
+
choices: ChoiceOption[]
|
|
56
|
+
selectedIndices: Set<number>
|
|
57
|
+
focusedIndex: number
|
|
58
|
+
minSelect: number
|
|
59
|
+
maxSelect: number
|
|
60
|
+
resolvedValues?: string[]
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export type PromptData =
|
|
64
|
+
| ChoicePromptData
|
|
65
|
+
| ConfirmPromptData
|
|
66
|
+
| InputPromptData
|
|
67
|
+
| MultiChoicePromptData
|
|
68
|
+
|
|
69
|
+
// ============================================
|
|
70
|
+
// Prompt Options Types
|
|
71
|
+
// ============================================
|
|
72
|
+
|
|
73
|
+
export interface ChoiceOptions {
|
|
74
|
+
question: string
|
|
75
|
+
choices: ChoiceOption[]
|
|
76
|
+
defaultChoice?: string
|
|
77
|
+
/** Auto-resolve with default after timeout (ms) */
|
|
78
|
+
timeout?: number
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface ConfirmOptions {
|
|
82
|
+
question: string
|
|
83
|
+
confirmText?: string
|
|
84
|
+
cancelText?: string
|
|
85
|
+
defaultValue?: boolean
|
|
86
|
+
/** Auto-resolve with default after timeout (ms) */
|
|
87
|
+
timeout?: number
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface InputOptions {
|
|
91
|
+
question: string
|
|
92
|
+
placeholder?: string
|
|
93
|
+
defaultValue?: string
|
|
94
|
+
/** Auto-resolve with default after timeout (ms) */
|
|
95
|
+
timeout?: number
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export interface MultiChoiceOptions {
|
|
99
|
+
question: string
|
|
100
|
+
choices: ChoiceOption[]
|
|
101
|
+
defaultChoices?: string[]
|
|
102
|
+
minSelect?: number
|
|
103
|
+
maxSelect?: number
|
|
104
|
+
/** Auto-resolve with default after timeout (ms) */
|
|
105
|
+
timeout?: number
|
|
106
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { RGBA, SyntaxStyle, TreeSitterClient } from '@opentui/core'
|
|
2
|
+
import type { ReactNode } from 'react'
|
|
3
|
+
|
|
4
|
+
import type { LogLevelColorMap } from './log.types.ts'
|
|
5
|
+
import type { Theme, ThemePreset } from './theme.types.ts'
|
|
6
|
+
|
|
7
|
+
// ============================================
|
|
8
|
+
// Screen Component Types
|
|
9
|
+
// ============================================
|
|
10
|
+
|
|
11
|
+
export interface ScreenProps {
|
|
12
|
+
/** Screen title/name displayed in header */
|
|
13
|
+
name: string
|
|
14
|
+
|
|
15
|
+
/** Child log messages/file logs */
|
|
16
|
+
children: ReactNode
|
|
17
|
+
|
|
18
|
+
/** Enable auto-scroll to bottom on new content */
|
|
19
|
+
stickyScroll?: boolean
|
|
20
|
+
|
|
21
|
+
/** Show scroll position indicator */
|
|
22
|
+
showScrollIndicator?: boolean
|
|
23
|
+
|
|
24
|
+
/** Screen header background color */
|
|
25
|
+
headerBackgroundColor?: string | RGBA
|
|
26
|
+
|
|
27
|
+
/** Screen header text color */
|
|
28
|
+
headerTextColor?: string | RGBA
|
|
29
|
+
|
|
30
|
+
/** Whether this screen is currently focused */
|
|
31
|
+
focused?: boolean
|
|
32
|
+
|
|
33
|
+
/** Callback when screen is scrolled */
|
|
34
|
+
onScroll?: (scrollTop: number, scrollHeight: number) => void
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// ============================================
|
|
38
|
+
// ScreenManager Component Types
|
|
39
|
+
// ============================================
|
|
40
|
+
|
|
41
|
+
export interface ScreenDefinition {
|
|
42
|
+
/** Unique screen identifier */
|
|
43
|
+
id: string
|
|
44
|
+
|
|
45
|
+
/** Display name for sidebar */
|
|
46
|
+
name: string
|
|
47
|
+
|
|
48
|
+
/** Optional icon/badge character */
|
|
49
|
+
icon?: string
|
|
50
|
+
|
|
51
|
+
/** Unread/notification count */
|
|
52
|
+
badgeCount?: number
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface ScreenManagerProps {
|
|
56
|
+
/** Screen definitions for the sidebar */
|
|
57
|
+
screens: ScreenDefinition[]
|
|
58
|
+
|
|
59
|
+
/** Currently active screen ID */
|
|
60
|
+
activeScreenId: string
|
|
61
|
+
|
|
62
|
+
/** Callback when screen selection changes */
|
|
63
|
+
onScreenChange?: (screenId: string) => void
|
|
64
|
+
|
|
65
|
+
/** Screen content - should be conditionally rendered based on activeScreenId */
|
|
66
|
+
children: ReactNode
|
|
67
|
+
|
|
68
|
+
/** Force show/hide sidebar (overrides auto behavior) */
|
|
69
|
+
sidebarVisible?: boolean
|
|
70
|
+
|
|
71
|
+
/** Callback when sidebar visibility changes */
|
|
72
|
+
onSidebarVisibilityChange?: (visible: boolean) => void
|
|
73
|
+
|
|
74
|
+
/** Sidebar width (columns) */
|
|
75
|
+
sidebarWidth?: number
|
|
76
|
+
|
|
77
|
+
/** Sidebar position */
|
|
78
|
+
sidebarPosition?: 'left' | 'right'
|
|
79
|
+
|
|
80
|
+
/** Key to toggle sidebar visibility */
|
|
81
|
+
toggleSidebarKey?: string
|
|
82
|
+
|
|
83
|
+
/** Sidebar header title */
|
|
84
|
+
sidebarTitle?: string
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export type FocusArea = 'sidebar' | 'content'
|
|
88
|
+
|
|
89
|
+
// ============================================
|
|
90
|
+
// Context Types
|
|
91
|
+
// ============================================
|
|
92
|
+
|
|
93
|
+
export interface LoggerContextValue {
|
|
94
|
+
/** Shared SyntaxStyle instance for code highlighting */
|
|
95
|
+
syntaxStyle?: SyntaxStyle
|
|
96
|
+
|
|
97
|
+
/** Shared TreeSitterClient for parsing */
|
|
98
|
+
treeSitterClient?: TreeSitterClient
|
|
99
|
+
|
|
100
|
+
/** Default colors for log levels (derived from theme for backwards compatibility) */
|
|
101
|
+
levelColors: LogLevelColorMap
|
|
102
|
+
|
|
103
|
+
/** Current theme */
|
|
104
|
+
theme: Theme
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// ============================================
|
|
108
|
+
// Screen Service Types
|
|
109
|
+
// ============================================
|
|
110
|
+
|
|
111
|
+
export type ScreenStatus = 'waiting' | 'pending' | 'success' | 'fail'
|
|
112
|
+
|
|
113
|
+
export interface BindOptions {
|
|
114
|
+
exitOnCtrlC?: boolean
|
|
115
|
+
sidebarWidth?: number
|
|
116
|
+
sidebarPosition?: 'left' | 'right'
|
|
117
|
+
sidebarTitle?: string
|
|
118
|
+
/** Auto close after all screens complete successfully (delay in ms, default 5000) */
|
|
119
|
+
autoClose?: boolean | number
|
|
120
|
+
/** Theme to use for the TUI (theme object or preset name) */
|
|
121
|
+
theme?: Theme | ThemePreset
|
|
122
|
+
/** Enable mouse support (default: false) */
|
|
123
|
+
useMouse?: boolean
|
|
124
|
+
}
|