@mks2508/mks-ui 0.3.1 → 0.4.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 (325) hide show
  1. package/dist/react-ui/blocks/Terminal/ResttyAdapter.d.ts +146 -0
  2. package/dist/react-ui/blocks/Terminal/ResttyAdapter.d.ts.map +1 -0
  3. package/dist/react-ui/blocks/Terminal/ResttyAdapter.js +213 -0
  4. package/dist/react-ui/blocks/Terminal/Terminal.adapter.d.ts +55 -0
  5. package/dist/react-ui/blocks/Terminal/Terminal.adapter.d.ts.map +1 -0
  6. package/dist/react-ui/blocks/Terminal/Terminal.adapter.js +68 -0
  7. package/dist/react-ui/blocks/Terminal/Terminal.theme.d.ts +43 -0
  8. package/dist/react-ui/blocks/Terminal/Terminal.theme.d.ts.map +1 -0
  9. package/dist/react-ui/blocks/Terminal/Terminal.theme.js +59 -0
  10. package/dist/react-ui/blocks/Terminal/Terminal.theme.restty.d.ts +63 -0
  11. package/dist/react-ui/blocks/Terminal/Terminal.theme.restty.d.ts.map +1 -0
  12. package/dist/react-ui/blocks/Terminal/Terminal.theme.restty.js +109 -0
  13. package/dist/react-ui/blocks/Terminal/Terminal.types.d.ts +351 -0
  14. package/dist/react-ui/blocks/Terminal/Terminal.types.d.ts.map +1 -0
  15. package/dist/react-ui/blocks/Terminal/TerminalPanel.d.ts +60 -0
  16. package/dist/react-ui/blocks/Terminal/TerminalPanel.d.ts.map +1 -0
  17. package/dist/react-ui/blocks/Terminal/TerminalPanel.js +183 -0
  18. package/dist/react-ui/blocks/Terminal/TerminalRestty.d.ts +111 -0
  19. package/dist/react-ui/blocks/Terminal/TerminalRestty.d.ts.map +1 -0
  20. package/dist/react-ui/blocks/Terminal/TerminalRestty.js +185 -0
  21. package/dist/react-ui/blocks/Terminal/TerminalXterm.d.ts +58 -0
  22. package/dist/react-ui/blocks/Terminal/TerminalXterm.d.ts.map +1 -0
  23. package/dist/react-ui/blocks/Terminal/TerminalXterm.js +143 -0
  24. package/dist/react-ui/blocks/Terminal/XTermAdapter.d.ts +87 -0
  25. package/dist/react-ui/blocks/Terminal/XTermAdapter.d.ts.map +1 -0
  26. package/dist/react-ui/blocks/Terminal/XTermAdapter.js +135 -0
  27. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.d.ts +160 -0
  28. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.d.ts.map +1 -0
  29. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.js +185 -0
  30. package/dist/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.d.ts +48 -0
  31. package/dist/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.d.ts.map +1 -0
  32. package/dist/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.js +139 -0
  33. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.d.ts +60 -0
  34. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.d.ts.map +1 -0
  35. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.js +352 -0
  36. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.d.ts +36 -0
  37. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.d.ts.map +1 -0
  38. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.js +52 -0
  39. package/dist/react-ui/blocks/Terminal/components/index.d.ts +10 -0
  40. package/dist/react-ui/blocks/Terminal/components/index.d.ts.map +1 -0
  41. package/dist/react-ui/blocks/Terminal/components/index.js +4 -0
  42. package/dist/react-ui/blocks/Terminal/hooks/index.d.ts +11 -0
  43. package/dist/react-ui/blocks/Terminal/hooks/index.d.ts.map +1 -0
  44. package/dist/react-ui/blocks/Terminal/hooks/index.js +2 -0
  45. package/dist/react-ui/blocks/Terminal/hooks/useTerminalSettings.d.ts +69 -0
  46. package/dist/react-ui/blocks/Terminal/hooks/useTerminalSettings.d.ts.map +1 -0
  47. package/dist/react-ui/blocks/Terminal/hooks/useTerminalSettings.js +162 -0
  48. package/dist/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.d.ts +104 -0
  49. package/dist/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.d.ts.map +1 -0
  50. package/dist/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.js +180 -0
  51. package/dist/react-ui/blocks/Terminal/index.d.ts +39 -0
  52. package/dist/react-ui/blocks/Terminal/index.d.ts.map +1 -0
  53. package/dist/react-ui/blocks/Terminal/index.js +38 -0
  54. package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.d.ts +58 -0
  55. package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.d.ts.map +1 -0
  56. package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.js +222 -0
  57. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel.d.ts +74 -0
  58. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel.d.ts.map +1 -0
  59. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel.js +168 -0
  60. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.d.ts +42 -0
  61. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.d.ts.map +1 -0
  62. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.js +175 -0
  63. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs.d.ts +43 -0
  64. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs.d.ts.map +1 -0
  65. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.d.ts +38 -0
  66. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.d.ts.map +1 -0
  67. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.js +62 -0
  68. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.d.ts +67 -0
  69. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.d.ts.map +1 -0
  70. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.d.ts +32 -0
  71. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.d.ts.map +1 -0
  72. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.js +326 -0
  73. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.d.ts +36 -0
  74. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.d.ts.map +1 -0
  75. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.js +371 -0
  76. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.d.ts +67 -0
  77. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.d.ts.map +1 -0
  78. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.js +417 -0
  79. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.d.ts +197 -0
  80. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.d.ts.map +1 -0
  81. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.d.ts +54 -0
  82. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.d.ts.map +1 -0
  83. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.js +193 -0
  84. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.d.ts +57 -0
  85. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.d.ts.map +1 -0
  86. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.d.ts +30 -0
  87. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.d.ts.map +1 -0
  88. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.js +126 -0
  89. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.d.ts +31 -0
  90. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.d.ts.map +1 -0
  91. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.js +149 -0
  92. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.d.ts +35 -0
  93. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.d.ts.map +1 -0
  94. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl.d.ts +58 -0
  95. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl.d.ts.map +1 -0
  96. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.d.ts +63 -0
  97. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.d.ts.map +1 -0
  98. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.js +245 -0
  99. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.d.ts +24 -0
  100. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.d.ts.map +1 -0
  101. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.js +225 -0
  102. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.d.ts +35 -0
  103. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.d.ts.map +1 -0
  104. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.js +187 -0
  105. package/dist/react-ui/blocks/Terminal/panel/index.d.ts +30 -0
  106. package/dist/react-ui/blocks/Terminal/panel/index.d.ts.map +1 -0
  107. package/dist/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module-Bovc57nm.css +60 -0
  108. package/dist/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.js +5 -0
  109. package/dist/react-ui/blocks/Terminal/panel/terminal-session-tabs.module-QyxHO7cN.css +60 -0
  110. package/dist/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.js +5 -0
  111. package/dist/react-ui/blocks/Terminal/parsing/BadgeFormatter.d.ts +73 -0
  112. package/dist/react-ui/blocks/Terminal/parsing/BadgeFormatter.d.ts.map +1 -0
  113. package/dist/react-ui/blocks/Terminal/parsing/BadgeFormatter.js +136 -0
  114. package/dist/react-ui/blocks/Terminal/parsing/HttpLogParser.d.ts +117 -0
  115. package/dist/react-ui/blocks/Terminal/parsing/HttpLogParser.d.ts.map +1 -0
  116. package/dist/react-ui/blocks/Terminal/parsing/HttpLogParser.js +174 -0
  117. package/dist/react-ui/blocks/Terminal/parsing/LogParser.types.d.ts +221 -0
  118. package/dist/react-ui/blocks/Terminal/parsing/LogParser.types.d.ts.map +1 -0
  119. package/dist/react-ui/blocks/Terminal/parsing/LogParserService.d.ts +184 -0
  120. package/dist/react-ui/blocks/Terminal/parsing/LogParserService.d.ts.map +1 -0
  121. package/dist/react-ui/blocks/Terminal/parsing/LogParserService.js +478 -0
  122. package/dist/react-ui/blocks/Terminal/parsing/MultilineAggregator.d.ts +173 -0
  123. package/dist/react-ui/blocks/Terminal/parsing/MultilineAggregator.d.ts.map +1 -0
  124. package/dist/react-ui/blocks/Terminal/parsing/MultilineAggregator.js +313 -0
  125. package/dist/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.d.ts +181 -0
  126. package/dist/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.d.ts.map +1 -0
  127. package/dist/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.js +221 -0
  128. package/dist/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.d.ts +69 -0
  129. package/dist/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.d.ts.map +1 -0
  130. package/dist/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.js +142 -0
  131. package/dist/react-ui/blocks/Terminal/parsing/TableParser.d.ts +125 -0
  132. package/dist/react-ui/blocks/Terminal/parsing/TableParser.d.ts.map +1 -0
  133. package/dist/react-ui/blocks/Terminal/parsing/TableParser.js +245 -0
  134. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.d.ts +165 -0
  135. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.d.ts.map +1 -0
  136. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.js +225 -0
  137. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.d.ts +164 -0
  138. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.d.ts.map +1 -0
  139. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.js +285 -0
  140. package/dist/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.d.ts +188 -0
  141. package/dist/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.d.ts.map +1 -0
  142. package/dist/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.js +178 -0
  143. package/dist/react-ui/blocks/Terminal/parsing/ansi/index.d.ts +12 -0
  144. package/dist/react-ui/blocks/Terminal/parsing/ansi/index.d.ts.map +1 -0
  145. package/dist/react-ui/blocks/Terminal/parsing/index.d.ts +24 -0
  146. package/dist/react-ui/blocks/Terminal/parsing/index.d.ts.map +1 -0
  147. package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.d.ts +56 -0
  148. package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.d.ts.map +1 -0
  149. package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.d.ts +140 -0
  150. package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.d.ts.map +1 -0
  151. package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.js +325 -0
  152. package/dist/react-ui/blocks/Terminal/parsing/levels/index.d.ts +10 -0
  153. package/dist/react-ui/blocks/Terminal/parsing/levels/index.d.ts.map +1 -0
  154. package/dist/react-ui/blocks/index.d.ts +11 -0
  155. package/dist/react-ui/blocks/index.d.ts.map +1 -0
  156. package/dist/react-ui/icons/lucide-animated/activity.js +1 -1
  157. package/dist/react-ui/icons/lucide-animated/bell-electric.js +1 -1
  158. package/dist/react-ui/icons/lucide-animated/bell.js +1 -1
  159. package/dist/react-ui/icons/lucide-animated/bot.js +1 -1
  160. package/dist/react-ui/icons/lucide-animated/box.js +1 -1
  161. package/dist/react-ui/icons/lucide-animated/circle-check.js +1 -1
  162. package/dist/react-ui/icons/lucide-animated/delete.js +1 -1
  163. package/dist/react-ui/icons/lucide-animated/download.js +1 -1
  164. package/dist/react-ui/icons/lucide-animated/home.js +1 -1
  165. package/dist/react-ui/icons/lucide-animated/layout-panel-top.js +1 -1
  166. package/dist/react-ui/icons/lucide-animated/plus.js +1 -1
  167. package/dist/react-ui/icons/lucide-animated/search.js +1 -1
  168. package/dist/react-ui/icons/lucide-animated/settings.js +1 -1
  169. package/dist/react-ui/icons/lucide-animated/trending-down.js +1 -1
  170. package/dist/react-ui/icons/lucide-animated/trending-up.js +1 -1
  171. package/dist/react-ui/icons/lucide-animated/x.js +1 -1
  172. package/dist/react-ui/index.js +4 -1
  173. package/dist/react-ui/lib/icon-wrapper.d.ts +37 -0
  174. package/dist/react-ui/lib/icon-wrapper.d.ts.map +1 -0
  175. package/dist/react-ui/lib/icon-wrapper.js +55 -0
  176. package/dist/react-ui/lib/index.d.ts +1 -0
  177. package/dist/react-ui/lib/index.d.ts.map +1 -1
  178. package/dist/react-ui/lib/index.js +1 -0
  179. package/dist/react-ui/primitives/AutoHeight/index.d.ts +1 -1
  180. package/dist/react-ui/primitives/CountingNumber/index.d.ts +1 -1
  181. package/dist/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.styles.d.ts +1 -1
  182. package/dist/react-ui/primitives/waapi/SlidingText/SlidingText.styles.d.ts +1 -1
  183. package/dist/react-ui/ui/Accordion/Accordion.styles.d.ts +1 -1
  184. package/dist/react-ui/ui/Accordion/Accordion.types.d.ts +1 -1
  185. package/dist/react-ui/ui/AlertDialog/AlertDialog.styles.d.ts +1 -1
  186. package/dist/react-ui/ui/AlertDialog/AlertDialog.types.d.ts +1 -1
  187. package/dist/react-ui/ui/Badge/Badge.styles.d.ts +1 -1
  188. package/dist/react-ui/ui/Badge/Badge.types.d.ts +1 -1
  189. package/dist/react-ui/ui/Button/Button.styles.d.ts +2 -2
  190. package/dist/react-ui/ui/Button/Button.types.d.ts +1 -1
  191. package/dist/react-ui/ui/Card/Card.styles.d.ts +1 -1
  192. package/dist/react-ui/ui/Card/Card.types.d.ts +1 -1
  193. package/dist/react-ui/ui/Checkbox/Checkbox.styles.d.ts +1 -1
  194. package/dist/react-ui/ui/Checkbox/Checkbox.types.d.ts +1 -1
  195. package/dist/react-ui/ui/Combobox/Combobox.styles.d.ts +1 -1
  196. package/dist/react-ui/ui/Combobox/Combobox.types.d.ts +1 -1
  197. package/dist/react-ui/ui/CornerBracket/CornerBracket.styles.d.ts +2 -2
  198. package/dist/react-ui/ui/CornerBracket/CornerBracket.styles.js +1 -1
  199. package/dist/react-ui/ui/CornerBracket/CornerBracket.types.d.ts +1 -1
  200. package/dist/react-ui/ui/DataCard/DataCard.styles.d.ts +1 -1
  201. package/dist/react-ui/ui/DataCard/DataCard.types.d.ts +1 -1
  202. package/dist/react-ui/ui/DataCard/index.d.ts +1 -1
  203. package/dist/react-ui/ui/Dialog/Dialog.styles.d.ts +1 -1
  204. package/dist/react-ui/ui/Dialog/Dialog.types.d.ts +1 -1
  205. package/dist/react-ui/ui/DropdownMenu/DropdownMenu.styles.d.ts +1 -1
  206. package/dist/react-ui/ui/DropdownMenu/DropdownMenu.types.d.ts +1 -1
  207. package/dist/react-ui/ui/Field/Field.styles.d.ts +1 -1
  208. package/dist/react-ui/ui/Field/Field.types.d.ts +1 -1
  209. package/dist/react-ui/ui/Input/Input.styles.d.ts +1 -1
  210. package/dist/react-ui/ui/Input/Input.types.d.ts +1 -1
  211. package/dist/react-ui/ui/InputGroup/InputGroup.styles.d.ts +1 -1
  212. package/dist/react-ui/ui/InputGroup/InputGroup.types.d.ts +1 -1
  213. package/dist/react-ui/ui/Label/Label.styles.d.ts +1 -1
  214. package/dist/react-ui/ui/Label/Label.types.d.ts +1 -1
  215. package/dist/react-ui/ui/Menu/Menu.styles.d.ts +1 -1
  216. package/dist/react-ui/ui/Menu/Menu.types.d.ts +2 -2
  217. package/dist/react-ui/ui/Popover/Popover.styles.d.ts +1 -1
  218. package/dist/react-ui/ui/Popover/Popover.types.d.ts +1 -1
  219. package/dist/react-ui/ui/Progress/Progress.styles.d.ts +1 -1
  220. package/dist/react-ui/ui/Progress/Progress.types.d.ts +2 -2
  221. package/dist/react-ui/ui/Select/Select.styles.d.ts +1 -1
  222. package/dist/react-ui/ui/Select/Select.types.d.ts +1 -1
  223. package/dist/react-ui/ui/Separator/Separator.styles.d.ts +1 -1
  224. package/dist/react-ui/ui/Separator/Separator.types.d.ts +1 -1
  225. package/dist/react-ui/ui/Switch/Switch.styles.d.ts +1 -1
  226. package/dist/react-ui/ui/Switch/Switch.types.d.ts +1 -1
  227. package/dist/react-ui/ui/Tabs/Tabs.styles.d.ts +43 -25
  228. package/dist/react-ui/ui/Tabs/Tabs.styles.d.ts.map +1 -1
  229. package/dist/react-ui/ui/Tabs/Tabs.styles.js +105 -13
  230. package/dist/react-ui/ui/Tabs/Tabs.types.d.ts +9 -6
  231. package/dist/react-ui/ui/Tabs/Tabs.types.d.ts.map +1 -1
  232. package/dist/react-ui/ui/Tabs/index.d.ts +18 -9
  233. package/dist/react-ui/ui/Tabs/index.d.ts.map +1 -1
  234. package/dist/react-ui/ui/Tabs/index.js +99 -27
  235. package/dist/react-ui/ui/TextFlow/TextFlow.styles.d.ts +1 -1
  236. package/dist/react-ui/ui/Textarea/Textarea.styles.d.ts +1 -1
  237. package/dist/react-ui/ui/Textarea/Textarea.types.d.ts +1 -1
  238. package/dist/react-ui/ui/Tooltip/Tooltip.styles.d.ts +1 -1
  239. package/dist/react-ui/ui/Tooltip/Tooltip.types.d.ts +1 -1
  240. package/dist/react-ui/ui/index.d.ts +1 -0
  241. package/dist/react-ui/ui/index.d.ts.map +1 -1
  242. package/dist/react-ui/ui/index.js +2 -0
  243. package/package.json +54 -6
  244. package/src/react-ui/blocks/Terminal/ResttyAdapter.ts +278 -0
  245. package/src/react-ui/blocks/Terminal/Terminal.adapter.ts +97 -0
  246. package/src/react-ui/blocks/Terminal/Terminal.theme.restty.ts +155 -0
  247. package/src/react-ui/blocks/Terminal/Terminal.theme.ts +80 -0
  248. package/src/react-ui/blocks/Terminal/Terminal.types.ts +438 -0
  249. package/src/react-ui/blocks/Terminal/TerminalPanel.tsx +269 -0
  250. package/src/react-ui/blocks/Terminal/TerminalRestty.tsx +326 -0
  251. package/src/react-ui/blocks/Terminal/TerminalXterm.tsx +230 -0
  252. package/src/react-ui/blocks/Terminal/XTermAdapter.ts +163 -0
  253. package/src/react-ui/blocks/Terminal/components/LogLineBadges.tsx +316 -0
  254. package/src/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.tsx +218 -0
  255. package/src/react-ui/blocks/Terminal/components/SyntaxHighlight.tsx +386 -0
  256. package/src/react-ui/blocks/Terminal/components/TerminalLogBadge.tsx +67 -0
  257. package/src/react-ui/blocks/Terminal/components/index.ts +10 -0
  258. package/src/react-ui/blocks/Terminal/hooks/index.ts +22 -0
  259. package/src/react-ui/blocks/Terminal/hooks/useTerminalSettings.ts +229 -0
  260. package/src/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.ts +292 -0
  261. package/src/react-ui/blocks/Terminal/index.ts +103 -0
  262. package/src/react-ui/blocks/Terminal/panel/LogLinesViewer.tsx +330 -0
  263. package/src/react-ui/blocks/Terminal/panel/TerminalDebugPanel.tsx +242 -0
  264. package/src/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.tsx +202 -0
  265. package/src/react-ui/blocks/Terminal/panel/TerminalFilterTabs.tsx +140 -0
  266. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.tsx +68 -0
  267. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.ts +85 -0
  268. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.tsx +383 -0
  269. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.tsx +439 -0
  270. package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.tsx +550 -0
  271. package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.ts +259 -0
  272. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.tsx +237 -0
  273. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.ts +76 -0
  274. package/src/react-ui/blocks/Terminal/panel/TerminalPanelFooter.tsx +112 -0
  275. package/src/react-ui/blocks/Terminal/panel/TerminalPanelHeader.tsx +178 -0
  276. package/src/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.tsx +203 -0
  277. package/src/react-ui/blocks/Terminal/panel/TerminalSessionControl.tsx +252 -0
  278. package/src/react-ui/blocks/Terminal/panel/TerminalSessionTabs.tsx +334 -0
  279. package/src/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.tsx +261 -0
  280. package/src/react-ui/blocks/Terminal/panel/TerminalThemeSelector.tsx +248 -0
  281. package/src/react-ui/blocks/Terminal/panel/index.ts +72 -0
  282. package/src/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.css +59 -0
  283. package/src/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.css +59 -0
  284. package/src/react-ui/blocks/Terminal/parsing/BadgeFormatter.ts +180 -0
  285. package/src/react-ui/blocks/Terminal/parsing/HttpLogParser.ts +248 -0
  286. package/src/react-ui/blocks/Terminal/parsing/LogParser.types.ts +283 -0
  287. package/src/react-ui/blocks/Terminal/parsing/LogParserService.ts +686 -0
  288. package/src/react-ui/blocks/Terminal/parsing/MultilineAggregator.ts +466 -0
  289. package/src/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.ts +343 -0
  290. package/src/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.ts +167 -0
  291. package/src/react-ui/blocks/Terminal/parsing/TableParser.ts +348 -0
  292. package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.ts +251 -0
  293. package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.ts +390 -0
  294. package/src/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.ts +320 -0
  295. package/src/react-ui/blocks/Terminal/parsing/ansi/index.ts +20 -0
  296. package/src/react-ui/blocks/Terminal/parsing/index.ts +69 -0
  297. package/src/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.ts +68 -0
  298. package/src/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.ts +436 -0
  299. package/src/react-ui/blocks/Terminal/parsing/levels/index.ts +14 -0
  300. package/src/react-ui/blocks/index.ts +11 -0
  301. package/src/react-ui/icons/lucide-animated/activity.tsx +2 -2
  302. package/src/react-ui/icons/lucide-animated/bell-electric.tsx +1 -1
  303. package/src/react-ui/icons/lucide-animated/bell.tsx +2 -2
  304. package/src/react-ui/icons/lucide-animated/bot.tsx +1 -1
  305. package/src/react-ui/icons/lucide-animated/box.tsx +2 -2
  306. package/src/react-ui/icons/lucide-animated/circle-check.tsx +2 -2
  307. package/src/react-ui/icons/lucide-animated/delete.tsx +2 -2
  308. package/src/react-ui/icons/lucide-animated/download.tsx +2 -2
  309. package/src/react-ui/icons/lucide-animated/home.tsx +2 -2
  310. package/src/react-ui/icons/lucide-animated/layout-panel-top.tsx +1 -1
  311. package/src/react-ui/icons/lucide-animated/plus.tsx +1 -1
  312. package/src/react-ui/icons/lucide-animated/search.tsx +1 -1
  313. package/src/react-ui/icons/lucide-animated/settings.tsx +1 -1
  314. package/src/react-ui/icons/lucide-animated/trending-down.tsx +2 -2
  315. package/src/react-ui/icons/lucide-animated/trending-up.tsx +2 -2
  316. package/src/react-ui/icons/lucide-animated/x.tsx +2 -2
  317. package/src/react-ui/lib/icon-wrapper.tsx +70 -0
  318. package/src/react-ui/lib/index.ts +1 -0
  319. package/src/react-ui/ui/CornerBracket/CornerBracket.styles.ts +1 -1
  320. package/src/react-ui/ui/Tabs/Tabs.css +39 -0
  321. package/src/react-ui/ui/Tabs/Tabs.styles.ts +119 -31
  322. package/src/react-ui/ui/Tabs/Tabs.types.ts +8 -3
  323. package/src/react-ui/ui/Tabs/index.tsx +135 -27
  324. package/src/react-ui/ui/index.ts +1 -0
  325. package/dist/index.css +0 -129
@@ -0,0 +1,439 @@
1
+ /**
2
+ * TerminalInteractivePanelXterm Component.
3
+ *
4
+ * Full interactive terminal panel with WebSocket-backed I/O,
5
+ * Ghostty-inspired chrome (via TerminalPanelChrome), xterm.js
6
+ * rendering, and action bar controls. Includes settings popover.
7
+ *
8
+ * @module components/devenv/terminal/panel/interactive-xterm
9
+ */
10
+
11
+ 'use client';
12
+
13
+ import {
14
+ useRef,
15
+ useState,
16
+ useEffect,
17
+ useCallback,
18
+ forwardRef,
19
+ useImperativeHandle,
20
+ } from 'react';
21
+ import { Terminal } from '@xterm/xterm';
22
+ import { FitAddon } from '@xterm/addon-fit';
23
+ import { WebLinksAddon } from '@xterm/addon-web-links';
24
+ import { SearchAddon } from '@xterm/addon-search';
25
+ import { getTerminalTheme } from '../Terminal.theme';
26
+ import { useTerminalWebSocket } from '../hooks/useTerminalWebSocket';
27
+ import { useTerminalSettings } from '../hooks/useTerminalSettings';
28
+ import type { ITerminalInteractivePanelProps, ITerminalInteractivePanelRef } from './TerminalInteractivePanel.types';
29
+ import { TerminalPanelChrome } from './TerminalPanelChrome';
30
+ import { TerminalSettingsPopover } from './TerminalSettingsPopover';
31
+ import { TerminalIcon, DeleteIcon, PlusIcon } from '@/react-ui/icons/lucide-animated';
32
+ import { cn } from '@/react-ui/lib/utils';
33
+ import '@xterm/xterm/css/xterm.css';
34
+
35
+ /**
36
+ * Terminal display container styles for interactive mode.
37
+ */
38
+ const terminalContainerStyles =
39
+ 'relative bg-[#241B2F] min-h-[400px] border-x border-border/10 terminal-scroll';
40
+
41
+ /**
42
+ * Action button base styles.
43
+ */
44
+ const actionBtnStyles =
45
+ 'h-8 px-2 rounded-md transition-all hover:bg-muted/20 active:bg-muted/30 flex items-center justify-center gap-1 text-xs font-mono text-muted-foreground hover:text-foreground flex-shrink-0';
46
+
47
+ /**
48
+ * Min/max font size bounds.
49
+ */
50
+ const MIN_FONT_SIZE = 10;
51
+ const MAX_FONT_SIZE = 24;
52
+
53
+ /**
54
+ * TerminalInteractivePanelXterm Component.
55
+ *
56
+ * Interactive terminal panel combining:
57
+ * - TerminalPanelChrome (Ghostty glassmorphism shell)
58
+ * - xterm.js with interactive mode (cursorBlink, stdin enabled)
59
+ * - WebSocket connection via useTerminalWebSocket
60
+ * - Action bar (clear, settings, font size controls)
61
+ * - Footer with connection status and terminal dimensions
62
+ *
63
+ * @example
64
+ * ```tsx
65
+ * const termRef = useRef<ITerminalInteractivePanelRef>(null);
66
+ *
67
+ * <TerminalInteractivePanelXterm
68
+ * ref={termRef}
69
+ * containerName="mks-devenv"
70
+ * wsUrl="ws://localhost:3100/terminal/session-1"
71
+ * onConnect={() => console.log('Connected')}
72
+ * onDisconnect={() => console.log('Disconnected')}
73
+ * />
74
+ * ```
75
+ */
76
+ export const TerminalInteractivePanelXterm = forwardRef<
77
+ ITerminalInteractivePanelRef,
78
+ ITerminalInteractivePanelProps
79
+ >(
80
+ (
81
+ {
82
+ containerName,
83
+ wsUrl,
84
+ sessions,
85
+ activeSessionId,
86
+ onSessionChange,
87
+ onSessionClose,
88
+ onNewSession,
89
+ onConnect,
90
+ onDisconnect,
91
+ onError,
92
+ className,
93
+ },
94
+ ref
95
+ ) => {
96
+ const terminalRef = useRef<Terminal | null>(null);
97
+ const fitAddonRef = useRef<FitAddon | null>(null);
98
+ const searchAddonRef = useRef<SearchAddon | null>(null);
99
+ const containerRef = useRef<HTMLDivElement>(null);
100
+ const terminalReadyRef = useRef(false);
101
+
102
+ const { settings } = useTerminalSettings();
103
+ const [fontSize, setFontSize] = useState(settings.fontSize);
104
+ const [dimensions, setDimensions] = useState({ cols: 80, rows: 24 });
105
+
106
+ /**
107
+ * WebSocket connection for terminal I/O.
108
+ */
109
+ const {
110
+ status: connectionStatus,
111
+ sendInput,
112
+ sendResize,
113
+ reconnect,
114
+ } = useTerminalWebSocket({
115
+ wsUrl,
116
+ onConnect: () => {
117
+ onConnect?.();
118
+ terminalRef.current?.write('\r\n\x1b[32m✓ Connected to terminal\x1b[0m\r\n');
119
+ },
120
+ onDisconnect: () => {
121
+ onDisconnect?.();
122
+ terminalRef.current?.write('\r\n\x1b[31m✗ Disconnected from terminal\x1b[0m\r\n');
123
+ },
124
+ onOutput: (data) => {
125
+ terminalRef.current?.write(data);
126
+ },
127
+ onError: (error) => {
128
+ onError?.(error);
129
+ terminalRef.current?.write(`\r\n\x1b[31mError: ${error}\x1b[0m\r\n`);
130
+ },
131
+ });
132
+
133
+ const isConnected = connectionStatus === 'connected';
134
+
135
+ /**
136
+ * Initialize xterm.js with interactive mode.
137
+ */
138
+ useEffect(() => {
139
+ if (!containerRef.current) return;
140
+
141
+ const terminal = new Terminal({
142
+ cursorBlink: true,
143
+ cursorStyle: 'bar',
144
+ scrollback: 10000,
145
+ fontSize,
146
+ fontFamily: "'JetBrains Mono', 'Fira Code', 'SF Mono', 'Cascadia Code', monospace",
147
+ theme: getTerminalTheme(),
148
+ allowProposedApi: true,
149
+ disableStdin: false,
150
+ });
151
+
152
+ const fitAddon = new FitAddon();
153
+ const webLinksAddon = new WebLinksAddon();
154
+ const searchAddon = new SearchAddon();
155
+
156
+ terminal.loadAddon(fitAddon);
157
+ terminal.loadAddon(webLinksAddon);
158
+ terminal.loadAddon(searchAddon);
159
+
160
+ terminal.open(containerRef.current);
161
+
162
+ // Defer fit until after DOM paint
163
+ const rafId = requestAnimationFrame(() => {
164
+ requestAnimationFrame(() => {
165
+ try {
166
+ fitAddon.fit();
167
+ setDimensions({ cols: terminal.cols, rows: terminal.rows });
168
+ } catch {
169
+ // Silently ignore fit errors during initialization
170
+ }
171
+ });
172
+ });
173
+
174
+ // Wire user input to WebSocket
175
+ terminal.onData((data: string) => {
176
+ sendInput(data);
177
+ });
178
+
179
+ // Track resize for footer display
180
+ terminal.onResize(({ cols, rows }: { cols: number; rows: number }) => {
181
+ setDimensions({ cols, rows });
182
+ sendResize(cols, rows);
183
+ });
184
+
185
+ terminalRef.current = terminal;
186
+ fitAddonRef.current = fitAddon;
187
+ searchAddonRef.current = searchAddon;
188
+ terminalReadyRef.current = true;
189
+
190
+ // Focus terminal on mount
191
+ terminal.focus();
192
+
193
+ return () => {
194
+ cancelAnimationFrame(rafId);
195
+ terminalReadyRef.current = false;
196
+ terminal.dispose();
197
+ terminalRef.current = null;
198
+ fitAddonRef.current = null;
199
+ searchAddonRef.current = null;
200
+ };
201
+ // eslint-disable-next-line react-hooks/exhaustive-deps
202
+ }, []); // Only mount once - fontSize changes handled separately
203
+
204
+ /**
205
+ * Update font size on existing terminal.
206
+ */
207
+ useEffect(() => {
208
+ if (!terminalRef.current || !terminalReadyRef.current) return;
209
+
210
+ terminalRef.current.options.fontSize = fontSize;
211
+
212
+ // Re-fit after font size change
213
+ requestAnimationFrame(() => {
214
+ try {
215
+ fitAddonRef.current?.fit();
216
+ if (terminalRef.current) {
217
+ setDimensions({ cols: terminalRef.current.cols, rows: terminalRef.current.rows });
218
+ }
219
+ } catch {
220
+ // Silently ignore fit errors
221
+ }
222
+ });
223
+ }, [fontSize]);
224
+
225
+ /**
226
+ * Handle window resize.
227
+ */
228
+ useEffect(() => {
229
+ const handleResize = () => {
230
+ requestAnimationFrame(() => {
231
+ if (fitAddonRef.current && terminalRef.current) {
232
+ try {
233
+ fitAddonRef.current.fit();
234
+ setDimensions({ cols: terminalRef.current.cols, rows: terminalRef.current.rows });
235
+ } catch {
236
+ // Silently ignore fit errors during resize
237
+ }
238
+ }
239
+ });
240
+ };
241
+
242
+ window.addEventListener('resize', handleResize);
243
+ return () => window.removeEventListener('resize', handleResize);
244
+ }, []);
245
+
246
+ /**
247
+ * Clear terminal display.
248
+ */
249
+ const handleClear = useCallback(() => {
250
+ terminalRef.current?.clear();
251
+ }, []);
252
+
253
+ /**
254
+ * Increase font size.
255
+ */
256
+ const handleFontIncrease = useCallback(() => {
257
+ setFontSize((prev) => Math.min(prev + 1, MAX_FONT_SIZE));
258
+ }, []);
259
+
260
+ /**
261
+ * Decrease font size.
262
+ */
263
+ const handleFontDecrease = useCallback(() => {
264
+ setFontSize((prev) => Math.max(prev - 1, MIN_FONT_SIZE));
265
+ }, []);
266
+
267
+ /**
268
+ * Expose imperative methods to parent.
269
+ */
270
+ useImperativeHandle(ref, () => ({
271
+ write: (text: string) => {
272
+ terminalRef.current?.write(text);
273
+ },
274
+ clear: () => {
275
+ terminalRef.current?.clear();
276
+ },
277
+ focus: () => {
278
+ terminalRef.current?.focus();
279
+ },
280
+ sendInput: (data: string) => {
281
+ sendInput(data);
282
+ },
283
+ isConnected: () => connectionStatus === 'connected',
284
+ }));
285
+
286
+ /**
287
+ * Get connection status label with color.
288
+ */
289
+ const getStatusLabel = (): { text: string; color: string } => {
290
+ switch (connectionStatus) {
291
+ case 'connected':
292
+ return { text: 'Connected', color: 'text-success' };
293
+ case 'connecting':
294
+ return { text: 'Connecting...', color: 'text-yellow-500' };
295
+ case 'error':
296
+ return { text: 'Error', color: 'text-destructive' };
297
+ default:
298
+ return { text: 'Disconnected', color: 'text-muted-foreground' };
299
+ }
300
+ };
301
+
302
+ const statusLabel = getStatusLabel();
303
+
304
+ return (
305
+ <TerminalPanelChrome
306
+ containerName={containerName}
307
+ isConnected={isConnected}
308
+ crtEffect={settings.crtEffect}
309
+ sessions={sessions}
310
+ activeSessionId={activeSessionId}
311
+ onSessionTabClick={onSessionChange}
312
+ onSessionClose={onSessionClose}
313
+ onNewSession={onNewSession}
314
+ actionBar={
315
+ <div className="flex items-center gap-2 px-3 h-10 bg-muted/10 border-b border-white/10">
316
+ {/* Clear */}
317
+ <button
318
+ type="button"
319
+ onClick={handleClear}
320
+ className={actionBtnStyles}
321
+ title="Clear terminal (Ctrl+L)"
322
+ >
323
+ <DeleteIcon className="w-3.5 h-3.5 flex-shrink-0" />
324
+ <span>Clear</span>
325
+ </button>
326
+
327
+ {/* Spacer */}
328
+ <div className="flex-1" />
329
+
330
+ {/* Settings */}
331
+ <TerminalSettingsPopover />
332
+
333
+ {/* Reconnect (shown when disconnected) */}
334
+ {connectionStatus === 'disconnected' && (
335
+ <button
336
+ type="button"
337
+ onClick={reconnect}
338
+ className={cn(actionBtnStyles, 'text-primary hover:text-primary')}
339
+ title="Reconnect"
340
+ >
341
+ Reconnect
342
+ </button>
343
+ )}
344
+
345
+ {/* Font Size Controls */}
346
+ <div className="flex items-center gap-1">
347
+ <span className="text-[10px] text-muted-foreground font-mono uppercase tracking-wider mr-1">Font</span>
348
+ <button
349
+ type="button"
350
+ onClick={handleFontDecrease}
351
+ className={cn(actionBtnStyles, 'w-7 h-7 px-0')}
352
+ title="Decrease font size"
353
+ disabled={fontSize <= MIN_FONT_SIZE}
354
+ >
355
+ <span className="text-sm font-bold">&minus;</span>
356
+ </button>
357
+ <span className="text-xs font-mono text-foreground w-7 text-center">{fontSize}</span>
358
+ <button
359
+ type="button"
360
+ onClick={handleFontIncrease}
361
+ className={cn(actionBtnStyles, 'w-7 h-7 px-0')}
362
+ title="Increase font size"
363
+ disabled={fontSize >= MAX_FONT_SIZE}
364
+ >
365
+ <PlusIcon className="w-3 h-3 flex-shrink-0" />
366
+ </button>
367
+ </div>
368
+ </div>
369
+ }
370
+ footer={
371
+ <div className="flex items-center justify-between px-4 h-10 bg-muted/20 border-t border-white/10">
372
+ {/* Left: Connection Status */}
373
+ <div className="flex items-center gap-3">
374
+ <div className="flex items-center gap-1.5">
375
+ <div
376
+ className={cn(
377
+ 'w-2 h-2 rounded-full transition-all duration-300',
378
+ isConnected
379
+ ? 'bg-success/80 shadow-[0_0_8px_hsla(142,100%,62%,0.5)]'
380
+ : connectionStatus === 'connecting'
381
+ ? 'bg-yellow-500/80 animate-pulse'
382
+ : connectionStatus === 'error'
383
+ ? 'bg-destructive/80'
384
+ : 'bg-muted-foreground/60'
385
+ )}
386
+ />
387
+ <span className={cn('text-xs font-mono', statusLabel.color)}>
388
+ {statusLabel.text}
389
+ </span>
390
+ </div>
391
+ </div>
392
+
393
+ {/* Right: Terminal Dimensions */}
394
+ <div className="flex items-center gap-3">
395
+ <span className="text-xs font-mono text-muted-foreground">
396
+ {dimensions.cols}&times;{dimensions.rows}
397
+ </span>
398
+ <span className="text-xs font-mono text-muted-foreground">
399
+ {fontSize}px
400
+ </span>
401
+ </div>
402
+ </div>
403
+ }
404
+ className={className}
405
+ >
406
+ {/* xterm.js Interactive Terminal */}
407
+ <div className="relative min-h-[400px]">
408
+ <div ref={containerRef} className={terminalContainerStyles} />
409
+
410
+ {/* Connection overlay when disconnected */}
411
+ {connectionStatus === 'disconnected' && (
412
+ <div className="absolute inset-0 flex items-center justify-center bg-black/40 backdrop-blur-sm pointer-events-none">
413
+ <div className="text-center pointer-events-auto">
414
+ <TerminalIcon className="w-12 h-12 mx-auto mb-3 text-muted-foreground/50" />
415
+ <p className="text-sm text-muted-foreground/70 font-mono mb-3">
416
+ Terminal disconnected
417
+ </p>
418
+ <button
419
+ type="button"
420
+ onClick={reconnect}
421
+ className={cn(
422
+ 'px-4 py-2 rounded-lg text-sm font-mono transition-colors',
423
+ 'bg-primary/20 text-primary hover:bg-primary/30',
424
+ 'border border-primary/40',
425
+ 'shadow-[0_0_10px_hsla(330,85%,43%,0.2)]'
426
+ )}
427
+ >
428
+ Reconnect
429
+ </button>
430
+ </div>
431
+ </div>
432
+ )}
433
+ </div>
434
+ </TerminalPanelChrome>
435
+ );
436
+ }
437
+ );
438
+
439
+ TerminalInteractivePanelXterm.displayName = 'TerminalInteractivePanelXterm';