@mks2508/mks-ui 0.3.2 → 0.5.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 (329) 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/TerminalDisplay.d.ts +46 -0
  16. package/dist/react-ui/blocks/Terminal/TerminalDisplay.d.ts.map +1 -0
  17. package/dist/react-ui/blocks/Terminal/TerminalDisplay.js +168 -0
  18. package/dist/react-ui/blocks/Terminal/TerminalDisplay.styles.d.ts +21 -0
  19. package/dist/react-ui/blocks/Terminal/TerminalDisplay.styles.d.ts.map +1 -0
  20. package/dist/react-ui/blocks/Terminal/TerminalDisplay.styles.js +31 -0
  21. package/dist/react-ui/blocks/Terminal/TerminalDisplay.types.d.ts +56 -0
  22. package/dist/react-ui/blocks/Terminal/TerminalDisplay.types.d.ts.map +1 -0
  23. package/dist/react-ui/blocks/Terminal/TerminalPanel.d.ts +60 -0
  24. package/dist/react-ui/blocks/Terminal/TerminalPanel.d.ts.map +1 -0
  25. package/dist/react-ui/blocks/Terminal/TerminalPanel.js +183 -0
  26. package/dist/react-ui/blocks/Terminal/TerminalRestty.d.ts +111 -0
  27. package/dist/react-ui/blocks/Terminal/TerminalRestty.d.ts.map +1 -0
  28. package/dist/react-ui/blocks/Terminal/TerminalRestty.js +185 -0
  29. package/dist/react-ui/blocks/Terminal/TerminalXterm.d.ts +58 -0
  30. package/dist/react-ui/blocks/Terminal/TerminalXterm.d.ts.map +1 -0
  31. package/dist/react-ui/blocks/Terminal/TerminalXterm.js +143 -0
  32. package/dist/react-ui/blocks/Terminal/XTermAdapter.d.ts +87 -0
  33. package/dist/react-ui/blocks/Terminal/XTermAdapter.d.ts.map +1 -0
  34. package/dist/react-ui/blocks/Terminal/XTermAdapter.js +135 -0
  35. package/dist/react-ui/blocks/Terminal/chrome.d.ts +14 -0
  36. package/dist/react-ui/blocks/Terminal/chrome.d.ts.map +1 -0
  37. package/dist/react-ui/blocks/Terminal/chrome.js +6 -0
  38. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.d.ts +160 -0
  39. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.d.ts.map +1 -0
  40. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.js +185 -0
  41. package/dist/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.d.ts +48 -0
  42. package/dist/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.d.ts.map +1 -0
  43. package/dist/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.js +139 -0
  44. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.d.ts +60 -0
  45. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.d.ts.map +1 -0
  46. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.js +352 -0
  47. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.d.ts +36 -0
  48. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.d.ts.map +1 -0
  49. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.js +52 -0
  50. package/dist/react-ui/blocks/Terminal/components/index.d.ts +10 -0
  51. package/dist/react-ui/blocks/Terminal/components/index.d.ts.map +1 -0
  52. package/dist/react-ui/blocks/Terminal/components/index.js +4 -0
  53. package/dist/react-ui/blocks/Terminal/display.d.ts +20 -0
  54. package/dist/react-ui/blocks/Terminal/display.d.ts.map +1 -0
  55. package/dist/react-ui/blocks/Terminal/display.js +9 -0
  56. package/dist/react-ui/blocks/Terminal/hooks/index.d.ts +11 -0
  57. package/dist/react-ui/blocks/Terminal/hooks/index.d.ts.map +1 -0
  58. package/dist/react-ui/blocks/Terminal/hooks/index.js +2 -0
  59. package/dist/react-ui/blocks/Terminal/hooks/useTerminalSettings.d.ts +69 -0
  60. package/dist/react-ui/blocks/Terminal/hooks/useTerminalSettings.d.ts.map +1 -0
  61. package/dist/react-ui/blocks/Terminal/hooks/useTerminalSettings.js +162 -0
  62. package/dist/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.d.ts +104 -0
  63. package/dist/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.d.ts.map +1 -0
  64. package/dist/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.js +180 -0
  65. package/dist/react-ui/blocks/Terminal/index.d.ts +43 -0
  66. package/dist/react-ui/blocks/Terminal/index.d.ts.map +1 -0
  67. package/dist/react-ui/blocks/Terminal/index.js +41 -0
  68. package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.d.ts +58 -0
  69. package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.d.ts.map +1 -0
  70. package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.js +222 -0
  71. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel.d.ts +74 -0
  72. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel.d.ts.map +1 -0
  73. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel.js +168 -0
  74. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.d.ts +42 -0
  75. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.d.ts.map +1 -0
  76. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.js +175 -0
  77. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs.d.ts +43 -0
  78. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs.d.ts.map +1 -0
  79. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.d.ts +38 -0
  80. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.d.ts.map +1 -0
  81. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.js +62 -0
  82. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.d.ts +67 -0
  83. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.d.ts.map +1 -0
  84. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.d.ts +32 -0
  85. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.d.ts.map +1 -0
  86. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.js +326 -0
  87. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.d.ts +36 -0
  88. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.d.ts.map +1 -0
  89. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.js +371 -0
  90. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.d.ts +67 -0
  91. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.d.ts.map +1 -0
  92. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.js +417 -0
  93. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.d.ts +197 -0
  94. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.d.ts.map +1 -0
  95. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.d.ts +55 -0
  96. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.d.ts.map +1 -0
  97. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.js +214 -0
  98. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.d.ts +35 -0
  99. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.d.ts.map +1 -0
  100. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.js +57 -0
  101. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.d.ts +62 -0
  102. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.d.ts.map +1 -0
  103. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.d.ts +30 -0
  104. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.d.ts.map +1 -0
  105. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.js +126 -0
  106. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.d.ts +31 -0
  107. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.d.ts.map +1 -0
  108. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.js +149 -0
  109. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.d.ts +35 -0
  110. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.d.ts.map +1 -0
  111. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl.d.ts +58 -0
  112. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl.d.ts.map +1 -0
  113. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.d.ts +63 -0
  114. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.d.ts.map +1 -0
  115. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.js +245 -0
  116. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.d.ts +24 -0
  117. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.d.ts.map +1 -0
  118. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.js +225 -0
  119. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.d.ts +35 -0
  120. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.d.ts.map +1 -0
  121. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.js +187 -0
  122. package/dist/react-ui/blocks/Terminal/panel/index.d.ts +30 -0
  123. package/dist/react-ui/blocks/Terminal/panel/index.d.ts.map +1 -0
  124. package/dist/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module-CNVWCefU.css +60 -0
  125. package/dist/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.js +5 -0
  126. package/dist/react-ui/blocks/Terminal/panel/terminal-session-tabs.module-cmyJ11jP.css +60 -0
  127. package/dist/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.js +5 -0
  128. package/dist/react-ui/blocks/Terminal/parsing/BadgeFormatter.d.ts +73 -0
  129. package/dist/react-ui/blocks/Terminal/parsing/BadgeFormatter.d.ts.map +1 -0
  130. package/dist/react-ui/blocks/Terminal/parsing/BadgeFormatter.js +136 -0
  131. package/dist/react-ui/blocks/Terminal/parsing/HttpLogParser.d.ts +117 -0
  132. package/dist/react-ui/blocks/Terminal/parsing/HttpLogParser.d.ts.map +1 -0
  133. package/dist/react-ui/blocks/Terminal/parsing/HttpLogParser.js +174 -0
  134. package/dist/react-ui/blocks/Terminal/parsing/LogParser.types.d.ts +221 -0
  135. package/dist/react-ui/blocks/Terminal/parsing/LogParser.types.d.ts.map +1 -0
  136. package/dist/react-ui/blocks/Terminal/parsing/LogParserService.d.ts +184 -0
  137. package/dist/react-ui/blocks/Terminal/parsing/LogParserService.d.ts.map +1 -0
  138. package/dist/react-ui/blocks/Terminal/parsing/LogParserService.js +478 -0
  139. package/dist/react-ui/blocks/Terminal/parsing/MultilineAggregator.d.ts +173 -0
  140. package/dist/react-ui/blocks/Terminal/parsing/MultilineAggregator.d.ts.map +1 -0
  141. package/dist/react-ui/blocks/Terminal/parsing/MultilineAggregator.js +313 -0
  142. package/dist/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.d.ts +181 -0
  143. package/dist/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.d.ts.map +1 -0
  144. package/dist/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.js +221 -0
  145. package/dist/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.d.ts +69 -0
  146. package/dist/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.d.ts.map +1 -0
  147. package/dist/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.js +142 -0
  148. package/dist/react-ui/blocks/Terminal/parsing/TableParser.d.ts +125 -0
  149. package/dist/react-ui/blocks/Terminal/parsing/TableParser.d.ts.map +1 -0
  150. package/dist/react-ui/blocks/Terminal/parsing/TableParser.js +245 -0
  151. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.d.ts +165 -0
  152. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.d.ts.map +1 -0
  153. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.js +225 -0
  154. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.d.ts +164 -0
  155. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.d.ts.map +1 -0
  156. package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.js +285 -0
  157. package/dist/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.d.ts +188 -0
  158. package/dist/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.d.ts.map +1 -0
  159. package/dist/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.js +178 -0
  160. package/dist/react-ui/blocks/Terminal/parsing/ansi/index.d.ts +12 -0
  161. package/dist/react-ui/blocks/Terminal/parsing/ansi/index.d.ts.map +1 -0
  162. package/dist/react-ui/blocks/Terminal/parsing/index.d.ts +24 -0
  163. package/dist/react-ui/blocks/Terminal/parsing/index.d.ts.map +1 -0
  164. package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.d.ts +56 -0
  165. package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.d.ts.map +1 -0
  166. package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.d.ts +140 -0
  167. package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.d.ts.map +1 -0
  168. package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.js +325 -0
  169. package/dist/react-ui/blocks/Terminal/parsing/levels/index.d.ts +10 -0
  170. package/dist/react-ui/blocks/Terminal/parsing/levels/index.d.ts.map +1 -0
  171. package/dist/react-ui/blocks/index.d.ts +11 -0
  172. package/dist/react-ui/blocks/index.d.ts.map +1 -0
  173. package/dist/react-ui/icons/lucide-animated/activity.js +1 -1
  174. package/dist/react-ui/icons/lucide-animated/bell-electric.js +1 -1
  175. package/dist/react-ui/icons/lucide-animated/bell.js +1 -1
  176. package/dist/react-ui/icons/lucide-animated/bot.js +1 -1
  177. package/dist/react-ui/icons/lucide-animated/box.js +1 -1
  178. package/dist/react-ui/icons/lucide-animated/circle-check.js +1 -1
  179. package/dist/react-ui/icons/lucide-animated/delete.js +1 -1
  180. package/dist/react-ui/icons/lucide-animated/download.js +1 -1
  181. package/dist/react-ui/icons/lucide-animated/home.js +1 -1
  182. package/dist/react-ui/icons/lucide-animated/layout-panel-top.js +1 -1
  183. package/dist/react-ui/icons/lucide-animated/plus.js +1 -1
  184. package/dist/react-ui/icons/lucide-animated/search.js +1 -1
  185. package/dist/react-ui/icons/lucide-animated/settings.js +1 -1
  186. package/dist/react-ui/icons/lucide-animated/trending-down.js +1 -1
  187. package/dist/react-ui/icons/lucide-animated/trending-up.js +1 -1
  188. package/dist/react-ui/icons/lucide-animated/x.js +1 -1
  189. package/dist/react-ui/index.js +3 -1
  190. package/dist/react-ui/lib/icon-wrapper.d.ts +37 -0
  191. package/dist/react-ui/lib/icon-wrapper.d.ts.map +1 -0
  192. package/dist/react-ui/lib/icon-wrapper.js +55 -0
  193. package/dist/react-ui/lib/index.d.ts +1 -0
  194. package/dist/react-ui/lib/index.d.ts.map +1 -1
  195. package/dist/react-ui/lib/index.js +1 -0
  196. package/dist/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.d.ts.map +1 -1
  197. package/dist/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.js +2 -0
  198. package/dist/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.d.ts.map +1 -1
  199. package/dist/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.js +2 -0
  200. package/dist/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.d.ts.map +1 -1
  201. package/dist/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.js +2 -0
  202. package/dist/react-ui/primitives/waapi/Morph/useMorph.d.ts.map +1 -1
  203. package/dist/react-ui/primitives/waapi/Morph/useMorph.js +2 -0
  204. package/dist/react-ui/primitives/waapi/Reorder/useReorder.d.ts.map +1 -1
  205. package/dist/react-ui/primitives/waapi/Reorder/useReorder.js +2 -0
  206. package/dist/react-ui/primitives/waapi/Reorder/useReorderPresence.d.ts.map +1 -1
  207. package/dist/react-ui/primitives/waapi/Reorder/useReorderPresence.js +2 -0
  208. package/dist/react-ui/primitives/waapi/core/useAnimationOrchestrator.d.ts.map +1 -1
  209. package/dist/react-ui/primitives/waapi/core/useAnimationOrchestrator.js +2 -0
  210. package/dist/react-ui/primitives/waapi/core/useElementRegistry.d.ts.map +1 -1
  211. package/dist/react-ui/primitives/waapi/core/useElementRegistry.js +2 -0
  212. package/dist/react-ui/primitives/waapi/core/useFLIPAnimation.d.ts.map +1 -1
  213. package/dist/react-ui/primitives/waapi/core/useFLIPAnimation.js +2 -0
  214. package/dist/react-ui/primitives/waapi/core/usePositionCapture.d.ts.map +1 -1
  215. package/dist/react-ui/primitives/waapi/core/usePositionCapture.js +2 -0
  216. package/dist/react-ui/ui/Button/Button.styles.d.ts +1 -1
  217. package/dist/react-ui/ui/CornerBracket/CornerBracket.styles.d.ts +1 -1
  218. package/dist/react-ui/ui/CornerBracket/CornerBracket.styles.js +1 -1
  219. package/dist/react-ui/ui/InputGroup/index.d.ts.map +1 -1
  220. package/dist/react-ui/ui/InputGroup/index.js +2 -0
  221. package/dist/react-ui/ui/Tabs/Tabs.styles.d.ts +43 -25
  222. package/dist/react-ui/ui/Tabs/Tabs.styles.d.ts.map +1 -1
  223. package/dist/react-ui/ui/Tabs/Tabs.styles.js +105 -13
  224. package/dist/react-ui/ui/Tabs/Tabs.types.d.ts +6 -3
  225. package/dist/react-ui/ui/Tabs/Tabs.types.d.ts.map +1 -1
  226. package/dist/react-ui/ui/Tabs/index.d.ts +18 -9
  227. package/dist/react-ui/ui/Tabs/index.d.ts.map +1 -1
  228. package/dist/react-ui/ui/Tabs/index.js +99 -27
  229. package/dist/react-ui/ui/index.js +1 -0
  230. package/package.json +84 -29
  231. package/src/css.d.ts +6 -0
  232. package/src/react-ui/blocks/Terminal/ResttyAdapter.ts +278 -0
  233. package/src/react-ui/blocks/Terminal/Terminal.adapter.ts +97 -0
  234. package/src/react-ui/blocks/Terminal/Terminal.theme.restty.ts +155 -0
  235. package/src/react-ui/blocks/Terminal/Terminal.theme.ts +80 -0
  236. package/src/react-ui/blocks/Terminal/Terminal.types.ts +438 -0
  237. package/src/react-ui/blocks/Terminal/TerminalDisplay.styles.ts +38 -0
  238. package/src/react-ui/blocks/Terminal/TerminalDisplay.tsx +243 -0
  239. package/src/react-ui/blocks/Terminal/TerminalDisplay.types.ts +73 -0
  240. package/src/react-ui/blocks/Terminal/TerminalPanel.tsx +269 -0
  241. package/src/react-ui/blocks/Terminal/TerminalRestty.tsx +326 -0
  242. package/src/react-ui/blocks/Terminal/TerminalXterm.tsx +230 -0
  243. package/src/react-ui/blocks/Terminal/XTermAdapter.ts +163 -0
  244. package/src/react-ui/blocks/Terminal/chrome.ts +25 -0
  245. package/src/react-ui/blocks/Terminal/components/LogLineBadges.tsx +316 -0
  246. package/src/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.tsx +218 -0
  247. package/src/react-ui/blocks/Terminal/components/SyntaxHighlight.tsx +386 -0
  248. package/src/react-ui/blocks/Terminal/components/TerminalLogBadge.tsx +67 -0
  249. package/src/react-ui/blocks/Terminal/components/index.ts +10 -0
  250. package/src/react-ui/blocks/Terminal/display.ts +46 -0
  251. package/src/react-ui/blocks/Terminal/hooks/index.ts +22 -0
  252. package/src/react-ui/blocks/Terminal/hooks/useTerminalSettings.ts +229 -0
  253. package/src/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.ts +292 -0
  254. package/src/react-ui/blocks/Terminal/index.ts +111 -0
  255. package/src/react-ui/blocks/Terminal/panel/LogLinesViewer.tsx +330 -0
  256. package/src/react-ui/blocks/Terminal/panel/TerminalDebugPanel.tsx +242 -0
  257. package/src/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.tsx +202 -0
  258. package/src/react-ui/blocks/Terminal/panel/TerminalFilterTabs.tsx +140 -0
  259. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.tsx +68 -0
  260. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.ts +85 -0
  261. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.tsx +383 -0
  262. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.tsx +439 -0
  263. package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.tsx +550 -0
  264. package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.ts +259 -0
  265. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.ts +75 -0
  266. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.tsx +266 -0
  267. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.ts +82 -0
  268. package/src/react-ui/blocks/Terminal/panel/TerminalPanelFooter.tsx +112 -0
  269. package/src/react-ui/blocks/Terminal/panel/TerminalPanelHeader.tsx +178 -0
  270. package/src/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.tsx +203 -0
  271. package/src/react-ui/blocks/Terminal/panel/TerminalSessionControl.tsx +252 -0
  272. package/src/react-ui/blocks/Terminal/panel/TerminalSessionTabs.tsx +334 -0
  273. package/src/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.tsx +261 -0
  274. package/src/react-ui/blocks/Terminal/panel/TerminalThemeSelector.tsx +248 -0
  275. package/src/react-ui/blocks/Terminal/panel/index.ts +72 -0
  276. package/src/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.css +59 -0
  277. package/src/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.css +59 -0
  278. package/src/react-ui/blocks/Terminal/parsing/BadgeFormatter.ts +180 -0
  279. package/src/react-ui/blocks/Terminal/parsing/HttpLogParser.ts +248 -0
  280. package/src/react-ui/blocks/Terminal/parsing/LogParser.types.ts +283 -0
  281. package/src/react-ui/blocks/Terminal/parsing/LogParserService.ts +686 -0
  282. package/src/react-ui/blocks/Terminal/parsing/MultilineAggregator.ts +466 -0
  283. package/src/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.ts +343 -0
  284. package/src/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.ts +167 -0
  285. package/src/react-ui/blocks/Terminal/parsing/TableParser.ts +348 -0
  286. package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.ts +251 -0
  287. package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.ts +390 -0
  288. package/src/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.ts +320 -0
  289. package/src/react-ui/blocks/Terminal/parsing/ansi/index.ts +20 -0
  290. package/src/react-ui/blocks/Terminal/parsing/index.ts +69 -0
  291. package/src/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.ts +68 -0
  292. package/src/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.ts +436 -0
  293. package/src/react-ui/blocks/Terminal/parsing/levels/index.ts +14 -0
  294. package/src/react-ui/blocks/index.ts +11 -0
  295. package/src/react-ui/icons/lucide-animated/activity.tsx +2 -2
  296. package/src/react-ui/icons/lucide-animated/bell-electric.tsx +1 -1
  297. package/src/react-ui/icons/lucide-animated/bell.tsx +2 -2
  298. package/src/react-ui/icons/lucide-animated/bot.tsx +1 -1
  299. package/src/react-ui/icons/lucide-animated/box.tsx +2 -2
  300. package/src/react-ui/icons/lucide-animated/circle-check.tsx +2 -2
  301. package/src/react-ui/icons/lucide-animated/delete.tsx +2 -2
  302. package/src/react-ui/icons/lucide-animated/download.tsx +2 -2
  303. package/src/react-ui/icons/lucide-animated/home.tsx +2 -2
  304. package/src/react-ui/icons/lucide-animated/layout-panel-top.tsx +1 -1
  305. package/src/react-ui/icons/lucide-animated/plus.tsx +1 -1
  306. package/src/react-ui/icons/lucide-animated/search.tsx +1 -1
  307. package/src/react-ui/icons/lucide-animated/settings.tsx +1 -1
  308. package/src/react-ui/icons/lucide-animated/trending-down.tsx +2 -2
  309. package/src/react-ui/icons/lucide-animated/trending-up.tsx +2 -2
  310. package/src/react-ui/icons/lucide-animated/x.tsx +2 -2
  311. package/src/react-ui/lib/icon-wrapper.tsx +70 -0
  312. package/src/react-ui/lib/index.ts +1 -0
  313. package/src/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.ts +1 -0
  314. package/src/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.ts +1 -0
  315. package/src/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.ts +1 -0
  316. package/src/react-ui/primitives/waapi/Morph/useMorph.ts +1 -0
  317. package/src/react-ui/primitives/waapi/Reorder/useReorder.ts +1 -0
  318. package/src/react-ui/primitives/waapi/Reorder/useReorderPresence.ts +1 -0
  319. package/src/react-ui/primitives/waapi/core/useAnimationOrchestrator.ts +1 -0
  320. package/src/react-ui/primitives/waapi/core/useElementRegistry.ts +1 -0
  321. package/src/react-ui/primitives/waapi/core/useFLIPAnimation.ts +1 -0
  322. package/src/react-ui/primitives/waapi/core/usePositionCapture.ts +1 -0
  323. package/src/react-ui/ui/Accordion/index.tsx +3 -3
  324. package/src/react-ui/ui/CornerBracket/CornerBracket.styles.ts +1 -1
  325. package/src/react-ui/ui/InputGroup/index.tsx +2 -0
  326. package/src/react-ui/ui/Tabs/Tabs.css +39 -0
  327. package/src/react-ui/ui/Tabs/Tabs.styles.ts +119 -31
  328. package/src/react-ui/ui/Tabs/Tabs.types.ts +8 -3
  329. package/src/react-ui/ui/Tabs/index.tsx +135 -27
@@ -0,0 +1,43 @@
1
+ /**
2
+ * TerminalFilterTabs Component.
3
+ *
4
+ * Tab-style filter buttons with badge counts and glow effects.
5
+ * Replaces pill-style filter buttons with Ghostty-inspired tab design.
6
+ *
7
+ * @module components/devenv/terminal/panel/filter-tabs
8
+ */
9
+ import type { TLogLevelFilter, TLogLevel } from './TerminalLogsPanel.types';
10
+ /**
11
+ * Props for TerminalFilterTabs component.
12
+ */
13
+ export interface ITerminalFilterTabsProps {
14
+ /** Current log level filter */
15
+ filterLevel: TLogLevelFilter;
16
+ /** Log level counts for badges */
17
+ levelCounts: Partial<Record<TLogLevel, number>>;
18
+ /** Callback when filter level changes */
19
+ onFilterChange: (level: TLogLevelFilter) => void;
20
+ /** Custom class name */
21
+ className?: string;
22
+ }
23
+ /**
24
+ * TerminalFilterTabs Component.
25
+ *
26
+ * Displays tab-style filter buttons with:
27
+ * - Tab-style layout (not pill buttons)
28
+ * - Badge count integration with glow on active
29
+ * - Keyboard shortcuts in tooltips
30
+ * - Compact horizontal arrangement
31
+ * - Smooth animations on state changes
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * <TerminalFilterTabs
36
+ * filterLevel="all"
37
+ * levelCounts={{ info: 42, warn: 3, error: 1 }}
38
+ * onFilterChange={(level) => setFilterLevel(level)}
39
+ * />
40
+ * ```
41
+ */
42
+ export declare function TerminalFilterTabs({ filterLevel, levelCounts, onFilterChange, className, }: ITerminalFilterTabsProps): import("react/jsx-runtime").JSX.Element;
43
+ //# sourceMappingURL=TerminalFilterTabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalFilterTabs.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/panel/TerminalFilterTabs.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,WAAW,EAAE,eAAe,CAAC;IAE7B,kCAAkC;IAClC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAEhD,yCAAyC;IACzC,cAAc,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAEjD,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,GACV,EAAE,wBAAwB,2CA6D1B"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * TerminalInteractivePanel Router.
3
+ *
4
+ * Thin router that delegates to the xterm or restty panel based on
5
+ * the `renderer` prop or global terminal settings. Both panels are
6
+ * lazy-loaded for code-splitting — restty's WASM bundle is only
7
+ * fetched when the user selects the GPU renderer.
8
+ *
9
+ * @module components/devenv/terminal/panel/interactive
10
+ */
11
+ import type { ITerminalInteractivePanelProps, ITerminalInteractivePanelRef } from './TerminalInteractivePanel.types';
12
+ /**
13
+ * TerminalInteractivePanel Component.
14
+ *
15
+ * Routes to the appropriate renderer-specific panel. The `renderer`
16
+ * prop overrides the global setting from `useTerminalSettings`,
17
+ * allowing per-panel control when needed.
18
+ *
19
+ * Consumer code is unchanged — same component name, same props, same ref.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * // Uses global setting (default: xterm)
24
+ * <TerminalInteractivePanel
25
+ * containerName="mks-devenv"
26
+ * wsUrl="ws://localhost:3100/terminal/session-1"
27
+ * />
28
+ *
29
+ * // Force restty renderer for this instance
30
+ * <TerminalInteractivePanel
31
+ * renderer="restty"
32
+ * containerName="mks-devenv"
33
+ * wsUrl="ws://localhost:3100/terminal/session-1"
34
+ * />
35
+ * ```
36
+ */
37
+ export declare const TerminalInteractivePanel: import("react").ForwardRefExoticComponent<ITerminalInteractivePanelProps & import("react").RefAttributes<ITerminalInteractivePanelRef>>;
38
+ //# sourceMappingURL=TerminalInteractivePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalInteractivePanel.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAUrH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,wBAAwB,yIAgBnC,CAAC"}
@@ -0,0 +1,62 @@
1
+ 'use client';
2
+
3
+ import { useTerminalSettings } from "../hooks/useTerminalSettings.js";
4
+ import { Suspense, forwardRef, lazy } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+
7
+ //#region src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.tsx
8
+ /**
9
+ * TerminalInteractivePanel Router.
10
+ *
11
+ * Thin router that delegates to the xterm or restty panel based on
12
+ * the `renderer` prop or global terminal settings. Both panels are
13
+ * lazy-loaded for code-splitting — restty's WASM bundle is only
14
+ * fetched when the user selects the GPU renderer.
15
+ *
16
+ * @module components/devenv/terminal/panel/interactive
17
+ */
18
+ const TerminalInteractivePanelXterm = lazy(() => import("./TerminalInteractivePanelXterm.js").then((m) => ({ default: m.TerminalInteractivePanelXterm })));
19
+ const TerminalInteractivePanelRestty = lazy(() => import("./TerminalInteractivePanelRestty.js").then((m) => ({ default: m.TerminalInteractivePanelRestty })));
20
+ /**
21
+ * TerminalInteractivePanel Component.
22
+ *
23
+ * Routes to the appropriate renderer-specific panel. The `renderer`
24
+ * prop overrides the global setting from `useTerminalSettings`,
25
+ * allowing per-panel control when needed.
26
+ *
27
+ * Consumer code is unchanged — same component name, same props, same ref.
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * // Uses global setting (default: xterm)
32
+ * <TerminalInteractivePanel
33
+ * containerName="mks-devenv"
34
+ * wsUrl="ws://localhost:3100/terminal/session-1"
35
+ * />
36
+ *
37
+ * // Force restty renderer for this instance
38
+ * <TerminalInteractivePanel
39
+ * renderer="restty"
40
+ * containerName="mks-devenv"
41
+ * wsUrl="ws://localhost:3100/terminal/session-1"
42
+ * />
43
+ * ```
44
+ */
45
+ const TerminalInteractivePanel = forwardRef((props, ref) => {
46
+ const { settings } = useTerminalSettings();
47
+ const renderer = props.renderer ?? settings.renderer;
48
+ return /* @__PURE__ */ jsx(Suspense, {
49
+ fallback: /* @__PURE__ */ jsx("div", { className: "min-h-[400px] bg-[#241B2F]" }),
50
+ children: renderer === "restty" ? /* @__PURE__ */ jsx(TerminalInteractivePanelRestty, {
51
+ ref,
52
+ ...props
53
+ }) : /* @__PURE__ */ jsx(TerminalInteractivePanelXterm, {
54
+ ref,
55
+ ...props
56
+ })
57
+ });
58
+ });
59
+ TerminalInteractivePanel.displayName = "TerminalInteractivePanel";
60
+
61
+ //#endregion
62
+ export { TerminalInteractivePanel };
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Types for TerminalInteractivePanel component.
3
+ *
4
+ * @module components/devenv/terminal/panel/interactive/types
5
+ */
6
+ import type { ITerminalSession } from './TerminalLogsPanel.types';
7
+ /**
8
+ * Props for TerminalInteractivePanel component.
9
+ *
10
+ * Configures the interactive terminal with WebSocket connection,
11
+ * session management, and lifecycle callbacks.
12
+ */
13
+ export interface ITerminalInteractivePanelProps {
14
+ /** Container/session name displayed in header */
15
+ containerName: string;
16
+ /** WebSocket URL for terminal connection (ws:// or wss://) */
17
+ wsUrl: string;
18
+ /**
19
+ * Terminal renderer to use.
20
+ * - `xterm`: xterm.js DOM/canvas renderer (default)
21
+ * - `restty`: GPU-accelerated WebGPU/WebGL2 renderer
22
+ */
23
+ renderer?: 'xterm' | 'restty';
24
+ /**
25
+ * PTY backend type.
26
+ * - `nodepty`: node-pty via WebSocket (default)
27
+ * - `webcontainer`: @webcontainer/api in-browser
28
+ */
29
+ ptyBackend?: 'nodepty' | 'webcontainer';
30
+ /** Session tabs (optional for single-session mode) */
31
+ sessions?: ITerminalSession[];
32
+ /** Currently active session ID */
33
+ activeSessionId?: string | null;
34
+ /** Callback when session tab is clicked */
35
+ onSessionChange?: (sessionId: string) => void;
36
+ /** Callback when session tab close is clicked */
37
+ onSessionClose?: (sessionId: string) => void;
38
+ /** Callback when new session button is clicked */
39
+ onNewSession?: () => void;
40
+ /** Lifecycle: connection established */
41
+ onConnect?: () => void;
42
+ /** Lifecycle: connection lost */
43
+ onDisconnect?: () => void;
44
+ /** Lifecycle: error occurred */
45
+ onError?: (error: string) => void;
46
+ /** Custom class name */
47
+ className?: string;
48
+ }
49
+ /**
50
+ * Imperative handle for TerminalInteractivePanel.
51
+ *
52
+ * Exposes terminal control methods to parent components
53
+ * via React.forwardRef + useImperativeHandle.
54
+ */
55
+ export interface ITerminalInteractivePanelRef {
56
+ /** Write text directly to terminal display */
57
+ write: (text: string) => void;
58
+ /** Clear terminal display */
59
+ clear: () => void;
60
+ /** Focus terminal for input */
61
+ focus: () => void;
62
+ /** Send raw input to backend via WebSocket */
63
+ sendInput: (data: string) => void;
64
+ /** Check if WebSocket is connected */
65
+ isConnected: () => boolean;
66
+ }
67
+ //# sourceMappingURL=TerminalInteractivePanel.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalInteractivePanel.types.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;;;;GAKG;AACH,MAAM,WAAW,8BAA8B;IAC7C,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IAEtB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAE9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,cAAc,CAAC;IAExC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE9B,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C,iDAAiD;IACjD,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,gCAAgC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IAC3C,8CAA8C;IAC9C,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,8CAA8C;IAC9C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,sCAAsC;IACtC,WAAW,EAAE,MAAM,OAAO,CAAC;CAC5B"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * TerminalInteractivePanelRestty Component.
3
+ *
4
+ * Interactive terminal panel using restty's GPU-accelerated renderer.
5
+ * Mirrors TerminalInteractivePanel's UI (Ghostty chrome, action bar,
6
+ * footer) but uses restty for rendering and its own PTY transport
7
+ * instead of useTerminalWebSocket.
8
+ *
9
+ * @module components/devenv/terminal/panel/interactive-restty
10
+ */
11
+ import type { ITerminalInteractivePanelProps, ITerminalInteractivePanelRef } from './TerminalInteractivePanel.types';
12
+ /**
13
+ * TerminalInteractivePanelRestty Component.
14
+ *
15
+ * GPU-accelerated interactive terminal combining:
16
+ * - TerminalPanelChrome (Ghostty glassmorphism shell)
17
+ * - restty with WebGPU/WebGL2 rendering
18
+ * - Custom DevenvPtyTransport for mks-devenv WebSocket protocol
19
+ * - Action bar (clear, font size controls, reconnect)
20
+ * - Footer with connection status and terminal dimensions
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * <TerminalInteractivePanelRestty
25
+ * containerName="mks-devenv"
26
+ * wsUrl="ws://localhost:3100/terminal/session-1"
27
+ * onConnect={() => console.log('Connected')}
28
+ * />
29
+ * ```
30
+ */
31
+ export declare const TerminalInteractivePanelRestty: import("react").ForwardRefExoticComponent<Omit<ITerminalInteractivePanelProps, "renderer" | "ptyBackend"> & import("react").RefAttributes<ITerminalInteractivePanelRef>>;
32
+ //# sourceMappingURL=TerminalInteractivePanelRestty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalInteractivePanelRestty.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,OAAO,KAAK,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AA0BrH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,8BAA8B,0KA0T1C,CAAC"}
@@ -0,0 +1,326 @@
1
+ 'use client';
2
+
3
+ import { cn } from "../../../lib/utils.js";
4
+ import { DeleteIcon } from "../../../icons/lucide-animated/delete.js";
5
+ import { PlusIcon } from "../../../icons/lucide-animated/plus.js";
6
+ import { TerminalIcon } from "../../../icons/lucide-animated/terminal.js";
7
+ import "../../../icons/lucide-animated/index.js";
8
+ import { useTerminalSettings } from "../hooks/useTerminalSettings.js";
9
+ import { TerminalPanelChrome } from "./TerminalPanelChrome.js";
10
+ import { TerminalRestty } from "../TerminalRestty.js";
11
+ import { TerminalSettingsPopover } from "./TerminalSettingsPopover.js";
12
+ import { TerminalDebugPanel } from "./TerminalDebugPanel.js";
13
+ import { forwardRef, useCallback, useImperativeHandle, useRef, useState } from "react";
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+
16
+ //#region src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.tsx
17
+ /**
18
+ * TerminalInteractivePanelRestty Component.
19
+ *
20
+ * Interactive terminal panel using restty's GPU-accelerated renderer.
21
+ * Mirrors TerminalInteractivePanel's UI (Ghostty chrome, action bar,
22
+ * footer) but uses restty for rendering and its own PTY transport
23
+ * instead of useTerminalWebSocket.
24
+ *
25
+ * @module components/devenv/terminal/panel/interactive-restty
26
+ */
27
+ /**
28
+ * Min/max font size bounds.
29
+ */
30
+ const MIN_FONT_SIZE = 10;
31
+ const MAX_FONT_SIZE = 24;
32
+ /**
33
+ * Action button base styles.
34
+ */
35
+ const actionBtnStyles = "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";
36
+ /**
37
+ * TerminalInteractivePanelRestty Component.
38
+ *
39
+ * GPU-accelerated interactive terminal combining:
40
+ * - TerminalPanelChrome (Ghostty glassmorphism shell)
41
+ * - restty with WebGPU/WebGL2 rendering
42
+ * - Custom DevenvPtyTransport for mks-devenv WebSocket protocol
43
+ * - Action bar (clear, font size controls, reconnect)
44
+ * - Footer with connection status and terminal dimensions
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * <TerminalInteractivePanelRestty
49
+ * containerName="mks-devenv"
50
+ * wsUrl="ws://localhost:3100/terminal/session-1"
51
+ * onConnect={() => console.log('Connected')}
52
+ * />
53
+ * ```
54
+ */
55
+ const TerminalInteractivePanelRestty = forwardRef(({ containerName, wsUrl, sessions, activeSessionId, onSessionChange, onSessionClose, onNewSession, onConnect, onDisconnect, onError, className }, ref) => {
56
+ const resttyRef = useRef(null);
57
+ const { settings } = useTerminalSettings();
58
+ const [fontSize, setFontSize] = useState(settings.fontSize);
59
+ const [dimensions, setDimensions] = useState({
60
+ cols: 80,
61
+ rows: 24
62
+ });
63
+ const [connectionStatus, setConnectionStatus] = useState("disconnected");
64
+ const [uptimeStart, setUptimeStart] = useState(null);
65
+ /**
66
+ * Handle PTY connection status changes from restty.
67
+ */
68
+ const handlePtyStatus = useCallback((status) => {
69
+ if (status === "connected" || status === "attached" || status === "welcome" || status === "created") setConnectionStatus("connected");
70
+ else if (status === "connecting") setConnectionStatus("connecting");
71
+ else if (status === "error") setConnectionStatus("error");
72
+ }, []);
73
+ /**
74
+ * Handle PTY connection open.
75
+ */
76
+ const handleConnect = useCallback(() => {
77
+ setConnectionStatus("connected");
78
+ setUptimeStart(Date.now());
79
+ onConnect?.();
80
+ }, [onConnect]);
81
+ /**
82
+ * Handle PTY connection close.
83
+ */
84
+ const handleDisconnect = useCallback(() => {
85
+ setConnectionStatus("disconnected");
86
+ setUptimeStart(null);
87
+ onDisconnect?.();
88
+ }, [onDisconnect]);
89
+ /**
90
+ * Handle PTY errors.
91
+ */
92
+ const handleError = useCallback((message) => {
93
+ setConnectionStatus("error");
94
+ onError?.(message);
95
+ }, [onError]);
96
+ /**
97
+ * Handle terminal resize from restty.
98
+ */
99
+ const handleResize = useCallback((cols, rows) => {
100
+ setDimensions({
101
+ cols,
102
+ rows
103
+ });
104
+ }, []);
105
+ const isConnected = connectionStatus === "connected";
106
+ /**
107
+ * Clear terminal display.
108
+ */
109
+ const handleClear = useCallback(() => {
110
+ resttyRef.current?.clear();
111
+ }, []);
112
+ /**
113
+ * Increase font size.
114
+ */
115
+ const handleFontIncrease = useCallback(() => {
116
+ setFontSize((prev) => {
117
+ const next = Math.min(prev + 1, MAX_FONT_SIZE);
118
+ resttyRef.current?.setFontSize(next);
119
+ return next;
120
+ });
121
+ }, []);
122
+ /**
123
+ * Decrease font size.
124
+ */
125
+ const handleFontDecrease = useCallback(() => {
126
+ setFontSize((prev) => {
127
+ const next = Math.max(prev - 1, MIN_FONT_SIZE);
128
+ resttyRef.current?.setFontSize(next);
129
+ return next;
130
+ });
131
+ }, []);
132
+ /**
133
+ * Reconnect to PTY.
134
+ */
135
+ const handleReconnect = useCallback(() => {
136
+ if (!wsUrl) return;
137
+ resttyRef.current?.disconnectPty();
138
+ resttyRef.current?.connectPty(wsUrl);
139
+ setConnectionStatus("connecting");
140
+ }, [wsUrl]);
141
+ /**
142
+ * Expose imperative methods to parent.
143
+ */
144
+ useImperativeHandle(ref, () => ({
145
+ write: (_text) => {},
146
+ clear: () => {
147
+ resttyRef.current?.clear();
148
+ },
149
+ focus: () => {
150
+ resttyRef.current?.focus();
151
+ },
152
+ sendInput: (data) => {
153
+ resttyRef.current?.sendInput(data);
154
+ },
155
+ isConnected: () => resttyRef.current?.isPtyConnected() ?? false
156
+ }));
157
+ /**
158
+ * Get connection status label with color.
159
+ */
160
+ const getStatusLabel = () => {
161
+ switch (connectionStatus) {
162
+ case "connected": return {
163
+ text: "Connected (GPU)",
164
+ color: "text-success"
165
+ };
166
+ case "connecting": return {
167
+ text: "Connecting...",
168
+ color: "text-yellow-500"
169
+ };
170
+ case "error": return {
171
+ text: "Error",
172
+ color: "text-destructive"
173
+ };
174
+ default: return {
175
+ text: "Disconnected",
176
+ color: "text-muted-foreground"
177
+ };
178
+ }
179
+ };
180
+ const statusLabel = getStatusLabel();
181
+ return /* @__PURE__ */ jsxs(TerminalPanelChrome, {
182
+ containerName,
183
+ isConnected,
184
+ crtEffect: settings.crtEffect,
185
+ sessions,
186
+ activeSessionId,
187
+ onSessionTabClick: onSessionChange,
188
+ onSessionClose,
189
+ onNewSession,
190
+ actionBar: /* @__PURE__ */ jsxs("div", {
191
+ className: "flex items-center gap-2 px-3 h-10 bg-muted/10 border-b border-white/10",
192
+ children: [
193
+ /* @__PURE__ */ jsxs("button", {
194
+ type: "button",
195
+ onClick: handleClear,
196
+ className: actionBtnStyles,
197
+ title: "Clear terminal",
198
+ children: [/* @__PURE__ */ jsx(DeleteIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }), /* @__PURE__ */ jsx("span", { children: "Clear" })]
199
+ }),
200
+ /* @__PURE__ */ jsx("div", { className: "flex-1" }),
201
+ /* @__PURE__ */ jsx(TerminalSettingsPopover, {}),
202
+ /* @__PURE__ */ jsx("span", {
203
+ className: "text-[10px] font-mono text-primary/70 uppercase tracking-wider px-1.5 py-0.5 rounded border border-primary/20 bg-primary/5",
204
+ children: "restty"
205
+ }),
206
+ connectionStatus === "disconnected" && /* @__PURE__ */ jsx("button", {
207
+ type: "button",
208
+ onClick: handleReconnect,
209
+ className: cn(actionBtnStyles, "text-primary hover:text-primary"),
210
+ title: "Reconnect",
211
+ children: "Reconnect"
212
+ }),
213
+ /* @__PURE__ */ jsxs("div", {
214
+ className: "flex items-center gap-1",
215
+ children: [
216
+ /* @__PURE__ */ jsx("span", {
217
+ className: "text-[10px] text-muted-foreground font-mono uppercase tracking-wider mr-1",
218
+ children: "Font"
219
+ }),
220
+ /* @__PURE__ */ jsx("button", {
221
+ type: "button",
222
+ onClick: handleFontDecrease,
223
+ className: cn(actionBtnStyles, "w-7 h-7 px-0"),
224
+ title: "Decrease font size",
225
+ disabled: fontSize <= MIN_FONT_SIZE,
226
+ children: /* @__PURE__ */ jsx("span", {
227
+ className: "text-sm font-bold",
228
+ children: "−"
229
+ })
230
+ }),
231
+ /* @__PURE__ */ jsx("span", {
232
+ className: "text-xs font-mono text-foreground w-7 text-center",
233
+ children: fontSize
234
+ }),
235
+ /* @__PURE__ */ jsx("button", {
236
+ type: "button",
237
+ onClick: handleFontIncrease,
238
+ className: cn(actionBtnStyles, "w-7 h-7 px-0"),
239
+ title: "Increase font size",
240
+ disabled: fontSize >= MAX_FONT_SIZE,
241
+ children: /* @__PURE__ */ jsx(PlusIcon, { className: "w-3 h-3 flex-shrink-0" })
242
+ })
243
+ ]
244
+ })
245
+ ]
246
+ }),
247
+ footer: /* @__PURE__ */ jsxs("div", {
248
+ className: "flex items-center justify-between px-4 h-10 bg-muted/20 border-t border-white/10",
249
+ children: [/* @__PURE__ */ jsx("div", {
250
+ className: "flex items-center gap-3",
251
+ children: /* @__PURE__ */ jsxs("div", {
252
+ className: "flex items-center gap-1.5",
253
+ children: [/* @__PURE__ */ jsx("div", { className: cn("w-2 h-2 rounded-full transition-all duration-300", isConnected ? "bg-success/80 shadow-[0_0_8px_hsla(142,100%,62%,0.5)]" : connectionStatus === "connecting" ? "bg-yellow-500/80 animate-pulse" : connectionStatus === "error" ? "bg-destructive/80" : "bg-muted-foreground/60") }), /* @__PURE__ */ jsx("span", {
254
+ className: cn("text-xs font-mono", statusLabel.color),
255
+ children: statusLabel.text
256
+ })]
257
+ })
258
+ }), /* @__PURE__ */ jsxs("div", {
259
+ className: "flex items-center gap-3",
260
+ children: [/* @__PURE__ */ jsxs("span", {
261
+ className: "text-xs font-mono text-muted-foreground",
262
+ children: [
263
+ dimensions.cols,
264
+ "×",
265
+ dimensions.rows
266
+ ]
267
+ }), /* @__PURE__ */ jsxs("span", {
268
+ className: "text-xs font-mono text-muted-foreground",
269
+ children: [fontSize, "px"]
270
+ })]
271
+ })]
272
+ }),
273
+ className,
274
+ children: [/* @__PURE__ */ jsxs("div", {
275
+ className: "relative min-h-[400px]",
276
+ children: [/* @__PURE__ */ jsx(TerminalRestty, {
277
+ ref: resttyRef,
278
+ wsUrl,
279
+ fontSize,
280
+ resttyThemeName: settings.resttyThemeName,
281
+ gpuRenderer: "auto",
282
+ onResize: handleResize,
283
+ onPtyStatus: handlePtyStatus,
284
+ onConnect: handleConnect,
285
+ onDisconnect: handleDisconnect,
286
+ onError: handleError,
287
+ className: "w-full h-full min-h-[400px] bg-[#241B2F]"
288
+ }), connectionStatus === "disconnected" && /* @__PURE__ */ jsx("div", {
289
+ className: "absolute inset-0 flex items-center justify-center bg-black/40 backdrop-blur-sm pointer-events-none",
290
+ children: /* @__PURE__ */ jsxs("div", {
291
+ className: "text-center pointer-events-auto",
292
+ children: [
293
+ /* @__PURE__ */ jsx(TerminalIcon, { className: "w-12 h-12 mx-auto mb-3 text-muted-foreground/50" }),
294
+ /* @__PURE__ */ jsx("p", {
295
+ className: "text-sm text-muted-foreground/70 font-mono mb-3",
296
+ children: "Terminal disconnected"
297
+ }),
298
+ /* @__PURE__ */ jsx("button", {
299
+ type: "button",
300
+ onClick: handleReconnect,
301
+ className: cn("px-4 py-2 rounded-lg text-sm font-mono transition-colors", "bg-primary/20 text-primary hover:bg-primary/30", "border border-primary/40", "shadow-[0_0_10px_hsla(330,85%,43%,0.2)]"),
302
+ children: "Reconnect"
303
+ })
304
+ ]
305
+ })
306
+ })]
307
+ }), /* @__PURE__ */ jsx(TerminalDebugPanel, {
308
+ visible: settings.debugPanel,
309
+ renderer: connectionStatus === "connected" ? "restty (GPU)" : void 0,
310
+ gridSize: dimensions.cols > 0 ? {
311
+ cols: dimensions.cols,
312
+ rows: dimensions.rows
313
+ } : void 0,
314
+ font: `JetBrains Mono ${fontSize}px`,
315
+ ptyStatus: connectionStatus,
316
+ ptyUrl: wsUrl,
317
+ themeName: settings.resttyThemeName,
318
+ crtEffect: settings.crtEffect,
319
+ uptimeSeconds: uptimeStart ? Math.floor((Date.now() - uptimeStart) / 1e3) : 0
320
+ })]
321
+ });
322
+ });
323
+ TerminalInteractivePanelRestty.displayName = "TerminalInteractivePanelRestty";
324
+
325
+ //#endregion
326
+ export { TerminalInteractivePanelRestty };
@@ -0,0 +1,36 @@
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
+ import type { ITerminalInteractivePanelProps, ITerminalInteractivePanelRef } from './TerminalInteractivePanel.types';
11
+ import '@xterm/xterm/css/xterm.css';
12
+ /**
13
+ * TerminalInteractivePanelXterm Component.
14
+ *
15
+ * Interactive terminal panel combining:
16
+ * - TerminalPanelChrome (Ghostty glassmorphism shell)
17
+ * - xterm.js with interactive mode (cursorBlink, stdin enabled)
18
+ * - WebSocket connection via useTerminalWebSocket
19
+ * - Action bar (clear, settings, font size controls)
20
+ * - Footer with connection status and terminal dimensions
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * const termRef = useRef<ITerminalInteractivePanelRef>(null);
25
+ *
26
+ * <TerminalInteractivePanelXterm
27
+ * ref={termRef}
28
+ * containerName="mks-devenv"
29
+ * wsUrl="ws://localhost:3100/terminal/session-1"
30
+ * onConnect={() => console.log('Connected')}
31
+ * onDisconnect={() => console.log('Disconnected')}
32
+ * />
33
+ * ```
34
+ */
35
+ export declare const TerminalInteractivePanelXterm: import("react").ForwardRefExoticComponent<ITerminalInteractivePanelProps & import("react").RefAttributes<ITerminalInteractivePanelRef>>;
36
+ //# sourceMappingURL=TerminalInteractivePanelXterm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalInteractivePanelXterm.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH,OAAO,KAAK,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAKrH,OAAO,4BAA4B,CAAC;AAoBpC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,6BAA6B,yIAyWzC,CAAC"}