@navios/commander-tui 1.1.0 → 1.3.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.
Files changed (364) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +69 -1
  3. package/dist/base/src/adapters/index.d.ts +2 -0
  4. package/dist/base/src/adapters/index.d.ts.map +1 -0
  5. package/dist/base/src/adapters/interface.d.ts +45 -0
  6. package/dist/base/src/adapters/interface.d.ts.map +1 -0
  7. package/dist/base/src/components/index.d.ts +2 -0
  8. package/dist/base/src/components/index.d.ts.map +1 -0
  9. package/dist/base/src/context/index.d.ts +2 -0
  10. package/dist/base/src/context/index.d.ts.map +1 -0
  11. package/dist/base/src/factories/index.d.ts +3 -0
  12. package/dist/base/src/factories/index.d.ts.map +1 -0
  13. package/dist/base/src/factories/isomorphic-logger.factory.d.ts +8 -0
  14. package/dist/base/src/factories/isomorphic-logger.factory.d.ts.map +1 -0
  15. package/dist/base/src/factories/screen.factory.d.ts +8 -0
  16. package/dist/base/src/factories/screen.factory.d.ts.map +1 -0
  17. package/dist/base/src/filter/filter_engine.d.ts +19 -0
  18. package/dist/base/src/filter/filter_engine.d.ts.map +1 -0
  19. package/dist/base/src/filter/index.d.ts +2 -0
  20. package/dist/base/src/filter/index.d.ts.map +1 -0
  21. package/dist/base/src/hooks/index.d.ts +2 -0
  22. package/dist/base/src/hooks/index.d.ts.map +1 -0
  23. package/dist/base/src/index.d.ts +16 -0
  24. package/dist/base/src/index.d.ts.map +1 -0
  25. package/dist/base/src/interfaces/index.d.ts +2 -0
  26. package/dist/base/src/interfaces/index.d.ts.map +1 -0
  27. package/dist/base/src/interfaces/isomorphic-logger.d.ts +9 -0
  28. package/dist/base/src/interfaces/isomorphic-logger.d.ts.map +1 -0
  29. package/dist/base/src/keyboard/create_bindings.d.ts +26 -0
  30. package/dist/base/src/keyboard/create_bindings.d.ts.map +1 -0
  31. package/dist/base/src/keyboard/index.d.ts +3 -0
  32. package/dist/base/src/keyboard/index.d.ts.map +1 -0
  33. package/dist/base/src/keyboard/keyboard_manager.d.ts +63 -0
  34. package/dist/base/src/keyboard/keyboard_manager.d.ts.map +1 -0
  35. package/dist/base/src/overrides/console.logger.override.d.ts +3 -0
  36. package/dist/base/src/overrides/console.logger.override.d.ts.map +1 -0
  37. package/dist/base/src/overrides/index.d.ts +3 -0
  38. package/dist/base/src/overrides/index.d.ts.map +1 -0
  39. package/dist/base/src/overrides/missing-adapter.override.d.ts +6 -0
  40. package/dist/base/src/overrides/missing-adapter.override.d.ts.map +1 -0
  41. package/dist/base/src/schemas/index.d.ts +4 -0
  42. package/dist/base/src/schemas/index.d.ts.map +1 -0
  43. package/dist/base/src/schemas/logger-options.d.ts +21 -0
  44. package/dist/base/src/schemas/logger-options.d.ts.map +1 -0
  45. package/dist/base/src/schemas/prompt-options.d.ts +12 -0
  46. package/dist/base/src/schemas/prompt-options.d.ts.map +1 -0
  47. package/dist/base/src/schemas/screen-options.d.ts +10 -0
  48. package/dist/base/src/schemas/screen-options.d.ts.map +1 -0
  49. package/dist/base/src/services/index.d.ts +5 -0
  50. package/dist/base/src/services/index.d.ts.map +1 -0
  51. package/dist/base/src/services/logger.d.ts +52 -0
  52. package/dist/base/src/services/logger.d.ts.map +1 -0
  53. package/dist/base/src/services/prompt.d.ts +31 -0
  54. package/dist/base/src/services/prompt.d.ts.map +1 -0
  55. package/dist/base/src/services/screen.d.ts +161 -0
  56. package/dist/base/src/services/screen.d.ts.map +1 -0
  57. package/dist/base/src/services/screen_manager.d.ts +130 -0
  58. package/dist/base/src/services/screen_manager.d.ts.map +1 -0
  59. package/dist/base/src/themes/dark.d.ts +7 -0
  60. package/dist/base/src/themes/dark.d.ts.map +1 -0
  61. package/dist/base/src/themes/high-contrast.d.ts +7 -0
  62. package/dist/base/src/themes/high-contrast.d.ts.map +1 -0
  63. package/dist/base/src/themes/index.d.ts +5 -0
  64. package/dist/base/src/themes/index.d.ts.map +1 -0
  65. package/dist/base/src/themes/light.d.ts +6 -0
  66. package/dist/base/src/themes/light.d.ts.map +1 -0
  67. package/dist/base/src/themes/utils.d.ts +22 -0
  68. package/dist/base/src/themes/utils.d.ts.map +1 -0
  69. package/dist/base/src/tokens/adapter.d.ts +9 -0
  70. package/dist/base/src/tokens/adapter.d.ts.map +1 -0
  71. package/dist/base/src/tokens/index.d.ts +6 -0
  72. package/dist/base/src/tokens/index.d.ts.map +1 -0
  73. package/dist/base/src/tokens/logger.d.ts +44 -0
  74. package/dist/base/src/tokens/logger.d.ts.map +1 -0
  75. package/dist/base/src/tokens/prompt.d.ts +12 -0
  76. package/dist/base/src/tokens/prompt.d.ts.map +1 -0
  77. package/dist/base/src/tokens/screen-manager.d.ts +8 -0
  78. package/dist/base/src/tokens/screen-manager.d.ts.map +1 -0
  79. package/dist/base/src/tokens/screen.d.ts +10 -0
  80. package/dist/base/src/tokens/screen.d.ts.map +1 -0
  81. package/dist/base/src/types/file.types.d.ts +40 -0
  82. package/dist/base/src/types/file.types.d.ts.map +1 -0
  83. package/dist/base/src/types/filter.types.d.ts +31 -0
  84. package/dist/base/src/types/filter.types.d.ts.map +1 -0
  85. package/dist/base/src/types/index.d.ts +9 -0
  86. package/dist/base/src/types/index.d.ts.map +1 -0
  87. package/dist/base/src/types/keyboard.types.d.ts +83 -0
  88. package/dist/base/src/types/keyboard.types.d.ts.map +1 -0
  89. package/dist/base/src/types/log.types.d.ts +39 -0
  90. package/dist/base/src/types/log.types.d.ts.map +1 -0
  91. package/dist/base/src/types/message.types.d.ts +82 -0
  92. package/dist/base/src/types/message.types.d.ts.map +1 -0
  93. package/dist/base/src/types/prompt.types.d.ts +85 -0
  94. package/dist/base/src/types/prompt.types.d.ts.map +1 -0
  95. package/dist/base/src/types/screen.types.d.ts +79 -0
  96. package/dist/base/src/types/screen.types.d.ts.map +1 -0
  97. package/dist/base/src/types/theme.types.d.ts +217 -0
  98. package/dist/base/src/types/theme.types.d.ts.map +1 -0
  99. package/dist/base/src/utils/colors/file-colors.d.ts +10 -0
  100. package/dist/base/src/utils/colors/file-colors.d.ts.map +1 -0
  101. package/dist/base/src/utils/colors/helpers.d.ts +26 -0
  102. package/dist/base/src/utils/colors/helpers.d.ts.map +1 -0
  103. package/dist/base/src/utils/colors/index.d.ts +8 -0
  104. package/dist/base/src/utils/colors/index.d.ts.map +1 -0
  105. package/dist/base/src/utils/colors/log-colors.d.ts +19 -0
  106. package/dist/base/src/utils/colors/log-colors.d.ts.map +1 -0
  107. package/dist/base/src/utils/colors/progress-colors.d.ts +25 -0
  108. package/dist/base/src/utils/colors/progress-colors.d.ts.map +1 -0
  109. package/dist/base/src/utils/colors/prompt-colors.d.ts +22 -0
  110. package/dist/base/src/utils/colors/prompt-colors.d.ts.map +1 -0
  111. package/dist/base/src/utils/colors/sidebar-colors.d.ts +50 -0
  112. package/dist/base/src/utils/colors/sidebar-colors.d.ts.map +1 -0
  113. package/dist/base/src/utils/colors/table-colors.d.ts +12 -0
  114. package/dist/base/src/utils/colors/table-colors.d.ts.map +1 -0
  115. package/dist/base/src/utils/filetype.d.ts +19 -0
  116. package/dist/base/src/utils/filetype.d.ts.map +1 -0
  117. package/dist/base/src/utils/format.d.ts +9 -0
  118. package/dist/base/src/utils/format.d.ts.map +1 -0
  119. package/dist/base/src/utils/index.d.ts +5 -0
  120. package/dist/base/src/utils/index.d.ts.map +1 -0
  121. package/dist/base/src/utils/stdout-printer.d.ts +6 -0
  122. package/dist/base/src/utils/stdout-printer.d.ts.map +1 -0
  123. package/dist/base/tsconfig.base.tsbuildinfo +1 -0
  124. package/dist/react/src/adapters/react/components/file/file_log.d.ts +35 -0
  125. package/dist/react/src/adapters/react/components/file/file_log.d.ts.map +1 -0
  126. package/dist/react/src/adapters/react/components/file/index.d.ts +2 -0
  127. package/dist/react/src/adapters/react/components/file/index.d.ts.map +1 -0
  128. package/dist/react/src/adapters/react/components/filter/filter_bar.d.ts +7 -0
  129. package/dist/react/src/adapters/react/components/filter/filter_bar.d.ts.map +1 -0
  130. package/dist/react/src/adapters/react/components/filter/index.d.ts +2 -0
  131. package/dist/react/src/adapters/react/components/filter/index.d.ts.map +1 -0
  132. package/dist/react/src/adapters/react/components/help/help_overlay.d.ts +6 -0
  133. package/dist/react/src/adapters/react/components/help/help_overlay.d.ts.map +1 -0
  134. package/dist/react/src/adapters/react/components/help/index.d.ts +2 -0
  135. package/dist/react/src/adapters/react/components/help/index.d.ts.map +1 -0
  136. package/dist/react/src/adapters/react/components/log/index.d.ts +2 -0
  137. package/dist/react/src/adapters/react/components/log/index.d.ts.map +1 -0
  138. package/dist/react/src/adapters/react/components/log/log_message.d.ts +28 -0
  139. package/dist/react/src/adapters/react/components/log/log_message.d.ts.map +1 -0
  140. package/dist/react/src/adapters/react/components/prompt/index.d.ts +3 -0
  141. package/dist/react/src/adapters/react/components/prompt/index.d.ts.map +1 -0
  142. package/dist/react/src/adapters/react/components/prompt/prompt_renderer.d.ts +6 -0
  143. package/dist/react/src/adapters/react/components/prompt/prompt_renderer.d.ts.map +1 -0
  144. package/dist/react/src/adapters/react/components/screen/group_renderer.d.ts +14 -0
  145. package/dist/react/src/adapters/react/components/screen/group_renderer.d.ts.map +1 -0
  146. package/dist/react/src/adapters/react/components/screen/index.d.ts +7 -0
  147. package/dist/react/src/adapters/react/components/screen/index.d.ts.map +1 -0
  148. package/dist/react/src/adapters/react/components/screen/loading_message.d.ts +6 -0
  149. package/dist/react/src/adapters/react/components/screen/loading_message.d.ts.map +1 -0
  150. package/dist/react/src/adapters/react/components/screen/message_renderer.d.ts +6 -0
  151. package/dist/react/src/adapters/react/components/screen/message_renderer.d.ts.map +1 -0
  152. package/dist/react/src/adapters/react/components/screen/progress_message.d.ts +6 -0
  153. package/dist/react/src/adapters/react/components/screen/progress_message.d.ts.map +1 -0
  154. package/dist/react/src/adapters/react/components/screen/screen_bridge.d.ts +14 -0
  155. package/dist/react/src/adapters/react/components/screen/screen_bridge.d.ts.map +1 -0
  156. package/dist/react/src/adapters/react/components/screen/table_message.d.ts +6 -0
  157. package/dist/react/src/adapters/react/components/screen/table_message.d.ts.map +1 -0
  158. package/dist/react/src/adapters/react/components/screen_manager_bridge.d.ts +8 -0
  159. package/dist/react/src/adapters/react/components/screen_manager_bridge.d.ts.map +1 -0
  160. package/dist/react/src/adapters/react/components/sidebar/index.d.ts +4 -0
  161. package/dist/react/src/adapters/react/components/sidebar/index.d.ts.map +1 -0
  162. package/dist/react/src/adapters/react/components/sidebar/sidebar.d.ts +11 -0
  163. package/dist/react/src/adapters/react/components/sidebar/sidebar.d.ts.map +1 -0
  164. package/dist/react/src/adapters/react/components/sidebar/sidebar_item.d.ts +9 -0
  165. package/dist/react/src/adapters/react/components/sidebar/sidebar_item.d.ts.map +1 -0
  166. package/dist/react/src/adapters/react/components/sidebar/sidebar_separator.d.ts +2 -0
  167. package/dist/react/src/adapters/react/components/sidebar/sidebar_separator.d.ts.map +1 -0
  168. package/dist/react/src/adapters/react/context/index.d.ts +2 -0
  169. package/dist/react/src/adapters/react/context/index.d.ts.map +1 -0
  170. package/dist/react/src/adapters/react/context/logger_context.d.ts +53 -0
  171. package/dist/react/src/adapters/react/context/logger_context.d.ts.map +1 -0
  172. package/dist/react/src/adapters/react/hooks/index.d.ts +2 -0
  173. package/dist/react/src/adapters/react/hooks/index.d.ts.map +1 -0
  174. package/dist/react/src/adapters/react/hooks/use_theme.d.ts +7 -0
  175. package/dist/react/src/adapters/react/hooks/use_theme.d.ts.map +1 -0
  176. package/dist/react/src/adapters/react/index.d.ts +13 -0
  177. package/dist/react/src/adapters/react/index.d.ts.map +1 -0
  178. package/dist/react/tsconfig.react.tsbuildinfo +1 -0
  179. package/dist/solid/src/adapters/solid/components/file/file_log.d.ts +35 -0
  180. package/dist/solid/src/adapters/solid/components/file/file_log.d.ts.map +1 -0
  181. package/dist/solid/src/adapters/solid/components/file/index.d.ts +2 -0
  182. package/dist/solid/src/adapters/solid/components/file/index.d.ts.map +1 -0
  183. package/dist/solid/src/adapters/solid/components/filter/filter_bar.d.ts +7 -0
  184. package/dist/solid/src/adapters/solid/components/filter/filter_bar.d.ts.map +1 -0
  185. package/dist/solid/src/adapters/solid/components/filter/index.d.ts +2 -0
  186. package/dist/solid/src/adapters/solid/components/filter/index.d.ts.map +1 -0
  187. package/dist/solid/src/adapters/solid/components/help/help_overlay.d.ts +6 -0
  188. package/dist/solid/src/adapters/solid/components/help/help_overlay.d.ts.map +1 -0
  189. package/dist/solid/src/adapters/solid/components/help/index.d.ts +2 -0
  190. package/dist/solid/src/adapters/solid/components/help/index.d.ts.map +1 -0
  191. package/dist/solid/src/adapters/solid/components/log/index.d.ts +2 -0
  192. package/dist/solid/src/adapters/solid/components/log/index.d.ts.map +1 -0
  193. package/dist/solid/src/adapters/solid/components/log/log_message.d.ts +31 -0
  194. package/dist/solid/src/adapters/solid/components/log/log_message.d.ts.map +1 -0
  195. package/dist/solid/src/adapters/solid/components/prompt/index.d.ts +3 -0
  196. package/dist/solid/src/adapters/solid/components/prompt/index.d.ts.map +1 -0
  197. package/dist/solid/src/adapters/solid/components/prompt/prompt_renderer.d.ts +6 -0
  198. package/dist/solid/src/adapters/solid/components/prompt/prompt_renderer.d.ts.map +1 -0
  199. package/dist/solid/src/adapters/solid/components/screen/group_renderer.d.ts +14 -0
  200. package/dist/solid/src/adapters/solid/components/screen/group_renderer.d.ts.map +1 -0
  201. package/dist/solid/src/adapters/solid/components/screen/index.d.ts +7 -0
  202. package/dist/solid/src/adapters/solid/components/screen/index.d.ts.map +1 -0
  203. package/dist/solid/src/adapters/solid/components/screen/loading_message.d.ts +6 -0
  204. package/dist/solid/src/adapters/solid/components/screen/loading_message.d.ts.map +1 -0
  205. package/dist/solid/src/adapters/solid/components/screen/message_renderer.d.ts +6 -0
  206. package/dist/solid/src/adapters/solid/components/screen/message_renderer.d.ts.map +1 -0
  207. package/dist/solid/src/adapters/solid/components/screen/progress_message.d.ts +6 -0
  208. package/dist/solid/src/adapters/solid/components/screen/progress_message.d.ts.map +1 -0
  209. package/dist/solid/src/adapters/solid/components/screen/screen_bridge.d.ts +14 -0
  210. package/dist/solid/src/adapters/solid/components/screen/screen_bridge.d.ts.map +1 -0
  211. package/dist/solid/src/adapters/solid/components/screen/table_message.d.ts +6 -0
  212. package/dist/solid/src/adapters/solid/components/screen/table_message.d.ts.map +1 -0
  213. package/dist/solid/src/adapters/solid/components/screen_manager_bridge.d.ts +8 -0
  214. package/dist/solid/src/adapters/solid/components/screen_manager_bridge.d.ts.map +1 -0
  215. package/dist/solid/src/adapters/solid/components/sidebar/index.d.ts +4 -0
  216. package/dist/solid/src/adapters/solid/components/sidebar/index.d.ts.map +1 -0
  217. package/dist/solid/src/adapters/solid/components/sidebar/sidebar.d.ts +11 -0
  218. package/dist/solid/src/adapters/solid/components/sidebar/sidebar.d.ts.map +1 -0
  219. package/dist/solid/src/adapters/solid/components/sidebar/sidebar_item.d.ts +9 -0
  220. package/dist/solid/src/adapters/solid/components/sidebar/sidebar_item.d.ts.map +1 -0
  221. package/dist/solid/src/adapters/solid/components/sidebar/sidebar_separator.d.ts +2 -0
  222. package/dist/solid/src/adapters/solid/components/sidebar/sidebar_separator.d.ts.map +1 -0
  223. package/dist/solid/src/adapters/solid/context/index.d.ts +3 -0
  224. package/dist/solid/src/adapters/solid/context/index.d.ts.map +1 -0
  225. package/dist/solid/src/adapters/solid/context/logger_context.d.ts +52 -0
  226. package/dist/solid/src/adapters/solid/context/logger_context.d.ts.map +1 -0
  227. package/dist/solid/src/adapters/solid/hooks/index.d.ts +2 -0
  228. package/dist/solid/src/adapters/solid/hooks/index.d.ts.map +1 -0
  229. package/dist/solid/src/adapters/solid/hooks/use_theme.d.ts +7 -0
  230. package/dist/solid/src/adapters/solid/hooks/use_theme.d.ts.map +1 -0
  231. package/dist/solid/src/adapters/solid/index.d.ts +13 -0
  232. package/dist/solid/src/adapters/solid/index.d.ts.map +1 -0
  233. package/dist/solid/tsconfig.solid.tsbuildinfo +1 -0
  234. package/dist/tsconfig.base.tsbuildinfo +1 -0
  235. package/dist/tsconfig.react.tsbuildinfo +1 -0
  236. package/dist/tsconfig.solid.tsbuildinfo +1 -0
  237. package/dist/tsconfig.tsbuildinfo +1 -1
  238. package/lib/adapters/react/index.cjs +1768 -0
  239. package/lib/adapters/react/index.cjs.map +1 -0
  240. package/lib/adapters/react/index.d.cts +80 -0
  241. package/lib/adapters/react/index.d.mts +80 -0
  242. package/lib/adapters/react/index.mjs +1760 -0
  243. package/lib/adapters/react/index.mjs.map +1 -0
  244. package/lib/adapters/solid/index.cjs +3855 -0
  245. package/lib/adapters/solid/index.cjs.map +1 -0
  246. package/lib/adapters/solid/index.d.cts +74 -0
  247. package/lib/adapters/solid/index.d.mts +74 -0
  248. package/lib/adapters/solid/index.mjs +3847 -0
  249. package/lib/adapters/solid/index.mjs.map +1 -0
  250. package/lib/filter_engine-DXqu9Vaq.cjs +1836 -0
  251. package/lib/filter_engine-DXqu9Vaq.cjs.map +1 -0
  252. package/lib/filter_engine-DmqhEhpA.mjs +1609 -0
  253. package/lib/filter_engine-DmqhEhpA.mjs.map +1 -0
  254. package/lib/index.cjs +1693 -1087
  255. package/lib/index.cjs.map +1 -1
  256. package/lib/index.d.cts +274 -1129
  257. package/lib/index.d.mts +294 -1149
  258. package/lib/index.mjs +1640 -1032
  259. package/lib/index.mjs.map +1 -1
  260. package/lib/interface-CTHQ08aY.d.mts +699 -0
  261. package/lib/interface-DQEIz9Mb.d.cts +699 -0
  262. package/package.json +25 -1
  263. package/project.json +2 -2
  264. package/src/__tests__/components/filter_bar.spec.tsx +1 -1
  265. package/src/__tests__/components/loading_message.spec.tsx +1 -1
  266. package/src/__tests__/components/log_message.spec.tsx +1 -1
  267. package/src/__tests__/components/progress_message.spec.tsx +1 -1
  268. package/src/__tests__/components/prompt_renderer.spec.tsx +1 -1
  269. package/src/__tests__/components/sidebar.spec.tsx +1 -1
  270. package/src/__tests__/services/logger.spec.ts +5 -3
  271. package/src/__tests__/utils/render-utils.tsx +1 -1
  272. package/src/adapters/index.ts +2 -0
  273. package/src/adapters/interface.ts +50 -0
  274. package/src/{components → adapters/react/components}/file/file_log.tsx +2 -2
  275. package/src/{components → adapters/react/components}/filter/filter_bar.tsx +2 -2
  276. package/src/{components → adapters/react/components}/help/help_overlay.tsx +2 -2
  277. package/src/{components → adapters/react/components}/log/log_message.tsx +2 -2
  278. package/src/{components → adapters/react/components}/prompt/prompt_renderer.tsx +1 -1
  279. package/src/{components → adapters/react/components}/screen/group_renderer.tsx +1 -1
  280. package/src/{components → adapters/react/components}/screen/loading_message.tsx +2 -3
  281. package/src/{components → adapters/react/components}/screen/message_renderer.tsx +1 -1
  282. package/src/{components → adapters/react/components}/screen/progress_message.tsx +1 -1
  283. package/src/{components → adapters/react/components}/screen/screen_bridge.tsx +2 -2
  284. package/src/{components → adapters/react/components}/screen/table_message.tsx +2 -2
  285. package/src/{components → adapters/react/components}/screen_manager_bridge.tsx +5 -5
  286. package/src/{components → adapters/react/components}/sidebar/sidebar.tsx +1 -1
  287. package/src/{components → adapters/react/components}/sidebar/sidebar_item.tsx +1 -1
  288. package/src/adapters/react/context/index.ts +1 -0
  289. package/src/{context → adapters/react/context}/logger_context.tsx +2 -2
  290. package/src/adapters/react/hooks/index.ts +1 -0
  291. package/src/{hooks → adapters/react/hooks}/use_theme.ts +1 -1
  292. package/src/adapters/react/index.ts +39 -0
  293. package/src/adapters/solid/components/file/file_log.tsx +221 -0
  294. package/src/adapters/solid/components/file/index.ts +1 -0
  295. package/src/adapters/solid/components/filter/filter_bar.tsx +84 -0
  296. package/src/adapters/solid/components/filter/index.ts +1 -0
  297. package/src/adapters/solid/components/help/help_overlay.tsx +106 -0
  298. package/src/adapters/solid/components/help/index.ts +1 -0
  299. package/src/adapters/solid/components/log/index.ts +1 -0
  300. package/src/adapters/solid/components/log/log_message.tsx +92 -0
  301. package/src/adapters/solid/components/prompt/index.ts +2 -0
  302. package/src/adapters/solid/components/prompt/prompt_renderer.tsx +350 -0
  303. package/src/adapters/solid/components/screen/group_renderer.tsx +61 -0
  304. package/src/adapters/solid/components/screen/index.ts +6 -0
  305. package/src/adapters/solid/components/screen/loading_message.tsx +39 -0
  306. package/src/adapters/solid/components/screen/message_renderer.tsx +122 -0
  307. package/src/adapters/solid/components/screen/progress_message.tsx +61 -0
  308. package/src/adapters/solid/components/screen/screen_bridge.tsx +155 -0
  309. package/src/adapters/solid/components/screen/table_message.tsx +58 -0
  310. package/src/adapters/solid/components/screen_manager_bridge.tsx +243 -0
  311. package/src/adapters/solid/components/sidebar/index.ts +3 -0
  312. package/src/adapters/solid/components/sidebar/sidebar.tsx +108 -0
  313. package/src/adapters/solid/components/sidebar/sidebar_item.tsx +55 -0
  314. package/src/adapters/solid/components/sidebar/sidebar_separator.tsx +13 -0
  315. package/src/adapters/solid/context/index.ts +2 -0
  316. package/src/adapters/solid/context/logger_context.tsx +95 -0
  317. package/src/adapters/solid/hooks/index.ts +1 -0
  318. package/src/adapters/solid/hooks/use_theme.ts +12 -0
  319. package/src/adapters/solid/index.tsx +43 -0
  320. package/src/adapters/solid/jsx.d.ts +98 -0
  321. package/src/components/index.ts +3 -15
  322. package/src/context/index.ts +3 -1
  323. package/src/factories/index.ts +1 -0
  324. package/src/factories/isomorphic-logger.factory.ts +22 -0
  325. package/src/factories/screen.factory.ts +2 -2
  326. package/src/hooks/index.ts +3 -1
  327. package/src/index.ts +10 -0
  328. package/src/interfaces/index.ts +1 -0
  329. package/src/interfaces/isomorphic-logger.ts +9 -0
  330. package/src/keyboard/create_bindings.ts +2 -2
  331. package/src/overrides/index.ts +1 -0
  332. package/src/overrides/missing-adapter.override.ts +20 -0
  333. package/src/services/index.ts +1 -1
  334. package/src/services/logger.ts +1 -1
  335. package/src/services/screen.ts +3 -3
  336. package/src/services/{screen_manager.tsx → screen_manager.ts} +22 -11
  337. package/src/tokens/adapter.ts +10 -0
  338. package/src/tokens/index.ts +2 -0
  339. package/src/tokens/logger.ts +9 -0
  340. package/src/tokens/screen-manager.ts +9 -0
  341. package/src/types/screen.types.ts +1 -1
  342. package/src/utils/format.ts +3 -2
  343. package/tsconfig.base.json +31 -0
  344. package/tsconfig.json +6 -12
  345. package/tsconfig.react.json +16 -0
  346. package/tsconfig.solid.json +16 -0
  347. package/tsdown.config.mts +69 -16
  348. package/vitest.config.mts +20 -0
  349. package/lib/index.d.cts.map +0 -1
  350. package/lib/index.d.mts.map +0 -1
  351. package/lib/screen_manager_bridge-Cp2p1Ix3.cjs +0 -3
  352. package/lib/screen_manager_bridge-D2BBwKcF.mjs +0 -3046
  353. package/lib/screen_manager_bridge-D2BBwKcF.mjs.map +0 -1
  354. package/lib/screen_manager_bridge-DT-l0rxa.mjs +0 -3
  355. package/lib/screen_manager_bridge-hMUrLiBP.cjs +0 -3369
  356. package/lib/screen_manager_bridge-hMUrLiBP.cjs.map +0 -1
  357. /package/src/{components → adapters/react/components}/file/index.ts +0 -0
  358. /package/src/{components → adapters/react/components}/filter/index.ts +0 -0
  359. /package/src/{components → adapters/react/components}/help/index.ts +0 -0
  360. /package/src/{components → adapters/react/components}/log/index.ts +0 -0
  361. /package/src/{components → adapters/react/components}/prompt/index.ts +0 -0
  362. /package/src/{components → adapters/react/components}/screen/index.ts +0 -0
  363. /package/src/{components → adapters/react/components}/sidebar/index.ts +0 -0
  364. /package/src/{components → adapters/react/components}/sidebar/sidebar_separator.tsx +0 -0
@@ -0,0 +1,221 @@
1
+ import { Show, For, createMemo } from 'solid-js'
2
+
3
+ import { useLoggerContext } from '../../context/index.ts'
4
+ import { ERROR_HIGHLIGHT_COLORS, HEADER_COLORS, resolveFiletype } from '../../../../utils/index.ts'
5
+
6
+ import type {
7
+ FileLogProps,
8
+ FileLogFullProps,
9
+ FileLogDiffProps,
10
+ FileLogPartialProps,
11
+ } from '../../../../types/index.ts'
12
+
13
+ /**
14
+ * FileLog - Displays file content, diffs, or partial files with error highlighting.
15
+ *
16
+ * Three modes:
17
+ * 1. "full" - Display complete file with syntax highlighting
18
+ * 2. "diff" - Display unified diff using <diff> component
19
+ * 3. "partial" - Display file excerpt with optional error line highlighting
20
+ *
21
+ * @example Full file
22
+ * <FileLog
23
+ * mode="full"
24
+ * filePath="src/index.ts"
25
+ * content={fileContent}
26
+ * />
27
+ *
28
+ * @example Diff
29
+ * <FileLog
30
+ * mode="diff"
31
+ * filePath="src/api.ts"
32
+ * diff={unifiedDiff}
33
+ * view="unified"
34
+ * />
35
+ *
36
+ * @example Partial with error
37
+ * <FileLog
38
+ * mode="partial"
39
+ * filePath="src/utils.ts"
40
+ * content={excerpt}
41
+ * startLine={42}
42
+ * errorLines={[45, 46]}
43
+ * />
44
+ */
45
+ export function FileLog(props: FileLogProps) {
46
+ const { syntaxStyle, treeSitterClient } = useLoggerContext()
47
+
48
+ // Auto-detect filetype from path
49
+ const filetype = () => props.filetype ?? resolveFiletype(props.filePath)
50
+ const showHeader = () => props.showHeader ?? true
51
+ const showLineNumbers = () => props.showLineNumbers ?? true
52
+
53
+ return (
54
+ <box flexDirection="column" marginBottom={1}>
55
+ {/* File header */}
56
+ <Show when={showHeader()}>
57
+ <box
58
+ backgroundColor={props.headerBackgroundColor ?? HEADER_COLORS.background}
59
+ paddingLeft={1}
60
+ paddingRight={1}
61
+ border={['bottom']}
62
+ borderColor={HEADER_COLORS.border}
63
+ >
64
+ <text fg={HEADER_COLORS.text}>{props.filePath}</text>
65
+ </box>
66
+ </Show>
67
+
68
+ {/* Content based on mode */}
69
+ <Show when={props.mode === 'full'}>
70
+ <FileLogFull
71
+ {...(props as FileLogFullProps)}
72
+ filetype={filetype()}
73
+ syntaxStyle={syntaxStyle}
74
+ treeSitterClient={treeSitterClient}
75
+ showLineNumbers={showLineNumbers()}
76
+ />
77
+ </Show>
78
+
79
+ <Show when={props.mode === 'diff'}>
80
+ <FileLogDiff
81
+ {...(props as FileLogDiffProps)}
82
+ filetype={filetype()}
83
+ syntaxStyle={syntaxStyle}
84
+ treeSitterClient={treeSitterClient}
85
+ />
86
+ </Show>
87
+
88
+ <Show when={props.mode === 'partial'}>
89
+ <FileLogPartial
90
+ {...(props as FileLogPartialProps)}
91
+ filetype={filetype()}
92
+ syntaxStyle={syntaxStyle}
93
+ treeSitterClient={treeSitterClient}
94
+ showLineNumbers={showLineNumbers()}
95
+ />
96
+ </Show>
97
+ </box>
98
+ )
99
+ }
100
+
101
+ interface FileLogInternalProps {
102
+ filetype?: string
103
+ syntaxStyle?: ReturnType<typeof useLoggerContext>['syntaxStyle']
104
+ treeSitterClient?: ReturnType<typeof useLoggerContext>['treeSitterClient']
105
+ }
106
+
107
+ /**
108
+ * Full file display with syntax highlighting.
109
+ */
110
+ function FileLogFull(props: FileLogFullProps & FileLogInternalProps) {
111
+ return (
112
+ <Show
113
+ when={props.syntaxStyle}
114
+ fallback={
115
+ <box paddingLeft={1} paddingRight={1}>
116
+ <text>{props.content}</text>
117
+ </box>
118
+ }
119
+ >
120
+ <code
121
+ content={props.content}
122
+ filetype={props.filetype}
123
+ syntaxStyle={props.syntaxStyle}
124
+ treeSitterClient={props.treeSitterClient}
125
+ />
126
+ </Show>
127
+ )
128
+ }
129
+
130
+ /**
131
+ * Diff display using the built-in <diff> component.
132
+ */
133
+ function FileLogDiff(props: FileLogDiffProps & FileLogInternalProps) {
134
+ const view = () => props.view ?? 'unified'
135
+
136
+ return (
137
+ <Show
138
+ when={props.syntaxStyle}
139
+ fallback={
140
+ <box paddingLeft={1} paddingRight={1}>
141
+ <text>{props.diff}</text>
142
+ </box>
143
+ }
144
+ >
145
+ <diff
146
+ diff={props.diff}
147
+ view={view()}
148
+ filetype={props.filetype}
149
+ syntaxStyle={props.syntaxStyle}
150
+ treeSitterClient={props.treeSitterClient}
151
+ />
152
+ </Show>
153
+ )
154
+ }
155
+
156
+ /**
157
+ * Partial file display with error line highlighting.
158
+ *
159
+ * This component renders a file excerpt and highlights specific lines
160
+ * as errors using box overlays with colored backgrounds.
161
+ */
162
+ function FileLogPartial(props: FileLogPartialProps & FileLogInternalProps) {
163
+ // Parse content into lines for error highlighting
164
+ const lines = createMemo(() => props.content.split('\n'))
165
+
166
+ // Calculate which lines are errors (relative to startLine)
167
+ const errorLineSet = createMemo(() => new Set(props.errorLines ?? []))
168
+
169
+ // Error colors
170
+ const errorBg = () => props.errorLineBackground ?? ERROR_HIGHLIGHT_COLORS.background
171
+ const errorBorder = () => props.errorLineBorderColor ?? ERROR_HIGHLIGHT_COLORS.border
172
+
173
+ // Line number width based on max line number
174
+ const maxLineNum = () => props.startLine + lines().length - 1
175
+ const lineNumWidth = () => Math.max(4, String(maxLineNum()).length + 1)
176
+
177
+ return (
178
+ <box flexDirection="column">
179
+ <For each={lines()}>
180
+ {(line, index) => {
181
+ const lineNumber = () => props.startLine + index()
182
+ const isError = () => errorLineSet().has(lineNumber())
183
+
184
+ return (
185
+ <box
186
+ flexDirection="row"
187
+ backgroundColor={isError() ? errorBg() : undefined}
188
+ border={isError() ? ['left'] : undefined}
189
+ borderColor={isError() ? errorBorder() : undefined}
190
+ >
191
+ {/* Line number gutter */}
192
+ <Show when={props.showLineNumbers}>
193
+ <box
194
+ width={lineNumWidth()}
195
+ backgroundColor={
196
+ isError() ? ERROR_HIGHLIGHT_COLORS.gutterBackground : HEADER_COLORS.background
197
+ }
198
+ paddingRight={1}
199
+ >
200
+ <text fg="#6B7280">{String(lineNumber()).padStart(lineNumWidth() - 1)}</text>
201
+ </box>
202
+ </Show>
203
+
204
+ {/* Code line */}
205
+ <box flexGrow={1} paddingLeft={1}>
206
+ <Show when={props.syntaxStyle} fallback={<text>{line}</text>}>
207
+ <code
208
+ content={line}
209
+ filetype={props.filetype}
210
+ syntaxStyle={props.syntaxStyle}
211
+ treeSitterClient={props.treeSitterClient}
212
+ />
213
+ </Show>
214
+ </box>
215
+ </box>
216
+ )
217
+ }}
218
+ </For>
219
+ </box>
220
+ )
221
+ }
@@ -0,0 +1 @@
1
+ export * from './file_log.tsx'
@@ -0,0 +1,84 @@
1
+ import { TextAttributes } from '@opentui/core'
2
+ import { Show, For } from 'solid-js'
3
+
4
+ import type { LogLevel } from '@navios/core'
5
+
6
+ import { useTheme } from '../../hooks/index.ts'
7
+ import { ALL_LOG_LEVELS } from '../../../../types/index.ts'
8
+
9
+ import type { FilterState, LevelCounts } from '../../../../types/index.ts'
10
+
11
+ export interface FilterBarProps {
12
+ filter: FilterState
13
+ levelCounts: LevelCounts
14
+ }
15
+
16
+ const LEVEL_LABELS: Record<LogLevel, string> = {
17
+ verbose: 'V',
18
+ debug: 'D',
19
+ log: 'L',
20
+ warn: 'W',
21
+ error: 'E',
22
+ fatal: 'F',
23
+ }
24
+
25
+ export function FilterBar(props: FilterBarProps) {
26
+ const theme = useTheme()
27
+ const isSearchFocused = () => props.filter.focusedField === 'search'
28
+
29
+ return (
30
+ <box
31
+ flexDirection="column"
32
+ backgroundColor={theme.filter.background}
33
+ borderColor={theme.filter.border}
34
+ border={['bottom']}
35
+ paddingLeft={1}
36
+ paddingRight={1}
37
+ >
38
+ {/* Search input row */}
39
+ <box flexDirection="row" gap={1}>
40
+ <text fg={isSearchFocused() ? theme.colors.primary : theme.filter.textDim}>/</text>
41
+ <text fg={props.filter.searchQuery ? theme.filter.inputText : theme.filter.inputPlaceholder}>
42
+ {props.filter.searchQuery || 'Search logs...'}
43
+ </text>
44
+ <Show when={isSearchFocused()}>
45
+ <text fg={theme.filter.cursor} attributes={TextAttributes.BLINK}>
46
+ _
47
+ </text>
48
+ </Show>
49
+ </box>
50
+
51
+ {/* Level filters row */}
52
+ <box flexDirection="row" gap={1}>
53
+ <text fg={theme.filter.textDim}>Levels:</text>
54
+ <For each={ALL_LOG_LEVELS}>
55
+ {(level, index) => {
56
+ const isEnabled = () => props.filter.enabledLevels.has(level)
57
+ const count = () => props.levelCounts[level]
58
+ const levelColor = () => theme.logLevels[level].border
59
+ const isLevelsFocused = () => props.filter.focusedField === 'levels'
60
+
61
+ return (
62
+ <box flexDirection="row">
63
+ <text
64
+ fg={isEnabled() ? levelColor() : theme.filter.inactiveLevel}
65
+ attributes={isLevelsFocused() ? TextAttributes.BOLD : undefined}
66
+ >
67
+ {index() + 1}:{LEVEL_LABELS[level]}
68
+ </text>
69
+ <Show when={count() > 0}>
70
+ <text fg={theme.filter.textDim}>({count() > 99 ? '99+' : count()})</text>
71
+ </Show>
72
+ </box>
73
+ )
74
+ }}
75
+ </For>
76
+ </box>
77
+
78
+ {/* Hints */}
79
+ <box flexDirection="row">
80
+ <text fg={theme.filter.textDim}>Tab: switch fields | 1-7: toggle levels | Esc: close</text>
81
+ </box>
82
+ </box>
83
+ )
84
+ }
@@ -0,0 +1 @@
1
+ export { FilterBar } from './filter_bar.tsx'
@@ -0,0 +1,106 @@
1
+ import { TextAttributes } from '@opentui/core'
2
+ import { For, Show, createMemo } from 'solid-js'
3
+
4
+ import { useTheme } from '../../hooks/index.ts'
5
+ import { formatKeyBinding } from '../../../../keyboard/index.ts'
6
+
7
+ import type { KeyBinding, KeyBindingCategory } from '../../../../types/index.ts'
8
+
9
+ export interface HelpOverlayProps {
10
+ bindings: KeyBinding[]
11
+ }
12
+
13
+ const CATEGORY_ORDER: KeyBindingCategory[] = ['general', 'navigation', 'screen', 'filter', 'prompt']
14
+
15
+ const CATEGORY_LABELS: Record<KeyBindingCategory, string> = {
16
+ general: 'General',
17
+ navigation: 'Navigation',
18
+ screen: 'Screen',
19
+ filter: 'Filter',
20
+ prompt: 'Prompts',
21
+ }
22
+
23
+ function groupByCategory(bindings: KeyBinding[]): Record<KeyBindingCategory, KeyBinding[]> {
24
+ const grouped: Record<KeyBindingCategory, KeyBinding[]> = {
25
+ general: [],
26
+ navigation: [],
27
+ screen: [],
28
+ filter: [],
29
+ prompt: [],
30
+ }
31
+
32
+ for (const binding of bindings) {
33
+ if (binding.description) {
34
+ grouped[binding.category].push(binding)
35
+ }
36
+ }
37
+
38
+ return grouped
39
+ }
40
+
41
+ export function HelpOverlay(props: HelpOverlayProps) {
42
+ const theme = useTheme()
43
+ const grouped = createMemo(() => groupByCategory(props.bindings))
44
+
45
+ return (
46
+ <box
47
+ position="absolute"
48
+ top={1}
49
+ left={2}
50
+ right={2}
51
+ bottom={1}
52
+ backgroundColor={theme.help.background}
53
+ borderColor={theme.help.border}
54
+ border={['top', 'bottom', 'left', 'right']}
55
+ flexDirection="column"
56
+ paddingLeft={2}
57
+ paddingRight={2}
58
+ paddingTop={1}
59
+ paddingBottom={1}
60
+ >
61
+ {/* Header */}
62
+ <box marginBottom={1}>
63
+ <text fg={theme.help.title} attributes={TextAttributes.BOLD}>
64
+ Keyboard Shortcuts
65
+ </text>
66
+ </box>
67
+
68
+ {/* Categories */}
69
+ <scrollbox scrollY flexGrow={1}>
70
+ <box flexDirection="column" gap={1}>
71
+ <For each={CATEGORY_ORDER}>
72
+ {(category) => {
73
+ const categoryBindings = () => grouped()[category]
74
+
75
+ return (
76
+ <Show when={categoryBindings().length > 0}>
77
+ <box flexDirection="column">
78
+ <text fg={theme.help.category} attributes={TextAttributes.BOLD}>
79
+ {CATEGORY_LABELS[category]}
80
+ </text>
81
+
82
+ <For each={categoryBindings()}>
83
+ {(binding) => (
84
+ <box flexDirection="row" paddingLeft={2}>
85
+ <text fg={theme.help.key} width={14}>
86
+ {formatKeyBinding(binding)}
87
+ </text>
88
+ <text fg={theme.help.description}>{binding.description}</text>
89
+ </box>
90
+ )}
91
+ </For>
92
+ </box>
93
+ </Show>
94
+ )
95
+ }}
96
+ </For>
97
+ </box>
98
+ </scrollbox>
99
+
100
+ {/* Footer */}
101
+ <box marginTop={1} borderColor={theme.separator.line} border={['top']} paddingTop={1}>
102
+ <text fg={theme.help.hint}>Press ? or Esc to close</text>
103
+ </box>
104
+ </box>
105
+ )
106
+ }
@@ -0,0 +1 @@
1
+ export { HelpOverlay } from './help_overlay.tsx'
@@ -0,0 +1 @@
1
+ export * from './log_message.tsx'
@@ -0,0 +1,92 @@
1
+ import { TextAttributes } from '@opentui/core'
2
+ import { Show, type JSX } from 'solid-js'
3
+
4
+ import { useTheme } from '../../hooks/index.ts'
5
+ import { VARIANT_COLORS } from '../../../../utils/index.ts'
6
+
7
+ import type { LogMessageProps } from '../../../../types/index.ts'
8
+
9
+ /**
10
+ * LogMessage - A chat-like styled log message with level-based coloring.
11
+ *
12
+ * Features:
13
+ * - Left border with prominent color based on log level
14
+ * - Subtle tinted background matching the log level
15
+ * - Optional timestamp and label display
16
+ * - Supports both simple text and complex children
17
+ * - Optional variant for semantic styling (e.g., 'success', 'trace')
18
+ *
19
+ * @example
20
+ * <LogMessage level="error">
21
+ * Connection failed: timeout after 30s
22
+ * </LogMessage>
23
+ *
24
+ * @example
25
+ * <LogMessage level="log" timestamp={new Date()} label="API">
26
+ * Request completed successfully
27
+ * </LogMessage>
28
+ *
29
+ * @example
30
+ * <LogMessage level="log" variant="success">
31
+ * Operation completed successfully
32
+ * </LogMessage>
33
+ */
34
+ export function LogMessage(props: LogMessageProps & { children?: JSX.Element }) {
35
+ const theme = useTheme()
36
+
37
+ // Get colors: variant colors take precedence over level colors
38
+ const levelColors = () => (props.variant ? VARIANT_COLORS[props.variant] : theme.logLevels[props.level])
39
+
40
+ // Resolve final colors (custom overrides level colors)
41
+ const borderColor = () => props.borderColor ?? levelColors().border
42
+ const backgroundColor = () => props.backgroundColor ?? levelColors().background
43
+
44
+ // Text color: use level-specific text color if defined, otherwise use foreground
45
+ const textColor = () => levelColors().text ?? theme.colors.foreground
46
+
47
+ // Determine border sides based on style
48
+ const borderSides = (): ('left' | 'top' | 'bottom')[] =>
49
+ props.borderStyle === 'thin' || props.borderStyle === undefined ? ['left'] : ['left', 'top', 'bottom']
50
+
51
+ // Format timestamp if provided
52
+ const formattedTimestamp = () => {
53
+ if (!props.timestamp) return null
54
+ return props.timestamp instanceof Date ? props.timestamp.toLocaleTimeString() : props.timestamp
55
+ }
56
+
57
+ return (
58
+ <box
59
+ flexDirection="column"
60
+ border={borderSides()}
61
+ borderColor={borderColor()}
62
+ backgroundColor={backgroundColor()}
63
+ paddingLeft={props.padding ?? 1}
64
+ paddingRight={props.padding ?? 1}
65
+ marginBottom={props.margin ?? 0}
66
+ >
67
+ {/* Header row with timestamp and label */}
68
+ <Show when={formattedTimestamp() || props.label}>
69
+ <box flexDirection="row" gap={1}>
70
+ <Show when={formattedTimestamp()}>
71
+ <text fg={theme.colors.muted}>{formattedTimestamp()}</text>
72
+ </Show>
73
+ <Show when={props.label}>
74
+ <text fg={levelColors().border} attributes={TextAttributes.BOLD}>
75
+ [{props.label}]
76
+ </text>
77
+ </Show>
78
+ </box>
79
+ </Show>
80
+
81
+ {/* Message content */}
82
+ <text fg={textColor()}>{props.children}</text>
83
+
84
+ {/* Stack trace (for trace level) */}
85
+ <Show when={props.trace}>
86
+ <box marginTop={1}>
87
+ <text fg={theme.colors.muted}>{props.trace}</text>
88
+ </box>
89
+ </Show>
90
+ </box>
91
+ )
92
+ }
@@ -0,0 +1,2 @@
1
+ export { PromptRenderer } from './prompt_renderer.tsx'
2
+ export type { PromptRendererProps } from './prompt_renderer.tsx'