@mks2508/mks-ui 0.6.8 → 0.7.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 (389) hide show
  1. package/dist/css/blocks-Sidebar-animations-tooltip.css +330 -0
  2. package/dist/index.css +587 -357
  3. package/dist/react-ui/blocks/BottomNavBar/MobileBottomNav.d.ts +64 -0
  4. package/dist/react-ui/blocks/BottomNavBar/MobileBottomNav.d.ts.map +1 -0
  5. package/dist/react-ui/blocks/BottomNavBar/MobileBottomNav.js +301 -0
  6. package/dist/react-ui/blocks/BottomNavBar/MobileBottomNav.styles.d.ts +94 -0
  7. package/dist/react-ui/blocks/BottomNavBar/MobileBottomNav.styles.d.ts.map +1 -0
  8. package/dist/react-ui/blocks/BottomNavBar/MobileBottomNav.styles.js +216 -0
  9. package/dist/react-ui/blocks/BottomNavBar/index.d.ts +10 -0
  10. package/dist/react-ui/blocks/BottomNavBar/index.d.ts.map +1 -0
  11. package/dist/react-ui/blocks/BottomNavBar/index.js +4 -0
  12. package/dist/react-ui/blocks/BottomNavBar/types.d.ts +362 -0
  13. package/dist/react-ui/blocks/BottomNavBar/types.d.ts.map +1 -0
  14. package/dist/react-ui/blocks/BottomNavBar/types.js +175 -0
  15. package/dist/react-ui/blocks/BottomNavBar/useIOSSafariFix.d.ts +73 -0
  16. package/dist/react-ui/blocks/BottomNavBar/useIOSSafariFix.d.ts.map +1 -0
  17. package/dist/react-ui/blocks/BottomNavBar/useIOSSafariFix.js +178 -0
  18. package/dist/react-ui/blocks/Sidebar/Sidebar.constants.d.ts +285 -0
  19. package/dist/react-ui/blocks/Sidebar/Sidebar.constants.d.ts.map +1 -0
  20. package/dist/react-ui/blocks/Sidebar/Sidebar.constants.js +208 -0
  21. package/dist/react-ui/blocks/Sidebar/Sidebar.d.ts +80 -0
  22. package/dist/react-ui/blocks/Sidebar/Sidebar.d.ts.map +1 -0
  23. package/dist/react-ui/blocks/Sidebar/Sidebar.js +114 -0
  24. package/dist/react-ui/blocks/Sidebar/Sidebar.styles.d.ts +77 -0
  25. package/dist/react-ui/blocks/Sidebar/Sidebar.styles.d.ts.map +1 -0
  26. package/dist/react-ui/blocks/Sidebar/Sidebar.styles.js +274 -0
  27. package/dist/react-ui/blocks/Sidebar/Sidebar.types.d.ts +546 -0
  28. package/dist/react-ui/blocks/Sidebar/Sidebar.types.d.ts.map +1 -0
  29. package/dist/react-ui/blocks/Sidebar/Sidebar.types.js +149 -0
  30. package/dist/react-ui/blocks/Sidebar/SidebarContent.d.ts +46 -0
  31. package/dist/react-ui/blocks/Sidebar/SidebarContent.d.ts.map +1 -0
  32. package/dist/react-ui/blocks/Sidebar/SidebarContent.js +86 -0
  33. package/dist/react-ui/blocks/Sidebar/SidebarContext.d.ts +85 -0
  34. package/dist/react-ui/blocks/Sidebar/SidebarContext.d.ts.map +1 -0
  35. package/dist/react-ui/blocks/Sidebar/SidebarContext.js +178 -0
  36. package/dist/react-ui/blocks/Sidebar/SidebarFluidIndicator.d.ts +31 -0
  37. package/dist/react-ui/blocks/Sidebar/SidebarFluidIndicator.d.ts.map +1 -0
  38. package/dist/react-ui/blocks/Sidebar/SidebarFluidIndicator.js +37 -0
  39. package/dist/react-ui/blocks/Sidebar/SidebarIndicator.d.ts +59 -0
  40. package/dist/react-ui/blocks/Sidebar/SidebarIndicator.d.ts.map +1 -0
  41. package/dist/react-ui/blocks/Sidebar/SidebarIndicator.js +106 -0
  42. package/dist/react-ui/blocks/Sidebar/SidebarItem.d.ts +82 -0
  43. package/dist/react-ui/blocks/Sidebar/SidebarItem.d.ts.map +1 -0
  44. package/dist/react-ui/blocks/Sidebar/SidebarItem.js +209 -0
  45. package/dist/react-ui/blocks/Sidebar/SidebarNav.d.ts +48 -0
  46. package/dist/react-ui/blocks/Sidebar/SidebarNav.d.ts.map +1 -0
  47. package/dist/react-ui/blocks/Sidebar/SidebarNav.js +317 -0
  48. package/dist/react-ui/blocks/Sidebar/SidebarSafeArea.d.ts +56 -0
  49. package/dist/react-ui/blocks/Sidebar/SidebarSafeArea.d.ts.map +1 -0
  50. package/dist/react-ui/blocks/Sidebar/SidebarSafeArea.js +105 -0
  51. package/dist/react-ui/blocks/Sidebar/SidebarSubContent.d.ts +27 -0
  52. package/dist/react-ui/blocks/Sidebar/SidebarSubContent.d.ts.map +1 -0
  53. package/dist/react-ui/blocks/Sidebar/SidebarSubContent.js +31 -0
  54. package/dist/react-ui/blocks/Sidebar/SidebarSubLink.d.ts +20 -0
  55. package/dist/react-ui/blocks/Sidebar/SidebarSubLink.d.ts.map +1 -0
  56. package/dist/react-ui/blocks/Sidebar/SidebarSubLink.js +44 -0
  57. package/dist/react-ui/blocks/Sidebar/SidebarToggle.d.ts +52 -0
  58. package/dist/react-ui/blocks/Sidebar/SidebarToggle.d.ts.map +1 -0
  59. package/dist/react-ui/blocks/Sidebar/SidebarToggle.js +119 -0
  60. package/dist/react-ui/blocks/Sidebar/SidebarTooltip.d.ts +15 -0
  61. package/dist/react-ui/blocks/Sidebar/SidebarTooltip.d.ts.map +1 -0
  62. package/dist/react-ui/blocks/Sidebar/SidebarTooltip.js +177 -0
  63. package/dist/react-ui/blocks/Sidebar/animations/tooltip-keyframes.js +0 -0
  64. package/dist/react-ui/blocks/Sidebar/animations/tooltip.css +330 -0
  65. package/dist/react-ui/blocks/Sidebar/components/FluidHoverIndicator.d.ts +28 -0
  66. package/dist/react-ui/blocks/Sidebar/components/FluidHoverIndicator.d.ts.map +1 -0
  67. package/dist/react-ui/blocks/Sidebar/components/FluidHoverIndicator.js +74 -0
  68. package/dist/react-ui/blocks/Sidebar/hooks/use-fluid-animation.d.ts +18 -0
  69. package/dist/react-ui/blocks/Sidebar/hooks/use-fluid-animation.d.ts.map +1 -0
  70. package/dist/react-ui/blocks/Sidebar/hooks/use-fluid-animation.js +166 -0
  71. package/dist/react-ui/blocks/Sidebar/hooks/useSidebarContext.d.ts +48 -0
  72. package/dist/react-ui/blocks/Sidebar/hooks/useSidebarContext.d.ts.map +1 -0
  73. package/dist/react-ui/blocks/Sidebar/hooks/useSidebarContext.js +59 -0
  74. package/dist/react-ui/blocks/Sidebar/hooks/useSidebarIndicator.d.ts +72 -0
  75. package/dist/react-ui/blocks/Sidebar/hooks/useSidebarIndicator.d.ts.map +1 -0
  76. package/dist/react-ui/blocks/Sidebar/hooks/useSidebarIndicator.js +159 -0
  77. package/dist/react-ui/blocks/Sidebar/hooks/useSidebarKeyboard.d.ts +51 -0
  78. package/dist/react-ui/blocks/Sidebar/hooks/useSidebarKeyboard.d.ts.map +1 -0
  79. package/dist/react-ui/blocks/Sidebar/hooks/useSidebarKeyboard.js +150 -0
  80. package/dist/react-ui/blocks/Sidebar/hooks/useSubContent.d.ts +42 -0
  81. package/dist/react-ui/blocks/Sidebar/hooks/useSubContent.d.ts.map +1 -0
  82. package/dist/react-ui/blocks/Sidebar/hooks/useSubContent.js +49 -0
  83. package/dist/react-ui/blocks/Sidebar/index.d.ts +163 -0
  84. package/dist/react-ui/blocks/Sidebar/index.d.ts.map +1 -0
  85. package/dist/react-ui/blocks/Sidebar/index.js +19 -0
  86. package/dist/react-ui/blocks/Terminal/Terminal.tokens.d.ts +219 -0
  87. package/dist/react-ui/blocks/Terminal/Terminal.tokens.d.ts.map +1 -0
  88. package/dist/react-ui/blocks/Terminal/Terminal.tokens.js +253 -0
  89. package/dist/react-ui/blocks/Terminal/Terminal.types.d.ts +2 -1
  90. package/dist/react-ui/blocks/Terminal/Terminal.types.d.ts.map +1 -1
  91. package/dist/react-ui/blocks/Terminal/TerminalDisplay.js +1 -1
  92. package/dist/react-ui/blocks/Terminal/TerminalDisplay.types.d.ts +1 -1
  93. package/dist/react-ui/blocks/Terminal/TerminalDisplay.types.d.ts.map +1 -1
  94. package/dist/react-ui/blocks/Terminal/chrome.js +2 -2
  95. package/dist/react-ui/blocks/Terminal/components/LogLineBadges/LogLineBadges.styles.d.ts +15 -0
  96. package/dist/react-ui/blocks/Terminal/components/LogLineBadges/LogLineBadges.styles.d.ts.map +1 -0
  97. package/dist/react-ui/blocks/Terminal/components/LogLineBadges/LogLineBadges.styles.js +14 -0
  98. package/dist/react-ui/blocks/Terminal/components/LogLineBadges/LogLineBadges.types.d.ts +106 -0
  99. package/dist/react-ui/blocks/Terminal/components/LogLineBadges/LogLineBadges.types.d.ts.map +1 -0
  100. package/dist/react-ui/blocks/Terminal/components/LogLineBadges/index.d.ts +89 -0
  101. package/dist/react-ui/blocks/Terminal/components/LogLineBadges/index.d.ts.map +1 -0
  102. package/dist/react-ui/blocks/Terminal/components/LogLineBadges/index.js +136 -0
  103. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.d.ts +21 -7
  104. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.d.ts.map +1 -1
  105. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.js +81 -71
  106. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.styles.d.ts +33 -0
  107. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.styles.d.ts.map +1 -0
  108. package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.styles.js +51 -0
  109. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge/TerminalLogBadge.styles.d.ts +13 -0
  110. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge/TerminalLogBadge.styles.d.ts.map +1 -0
  111. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge/TerminalLogBadge.styles.js +8 -0
  112. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge/TerminalLogBadge.types.d.ts +29 -0
  113. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge/TerminalLogBadge.types.d.ts.map +1 -0
  114. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge/index.d.ts +26 -0
  115. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge/index.d.ts.map +1 -0
  116. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge/index.js +40 -0
  117. package/dist/react-ui/blocks/Terminal/components/index.js +5 -2
  118. package/dist/react-ui/blocks/Terminal/controls/TerminalActionBar/TerminalActionBar.styles.d.ts +12 -0
  119. package/dist/react-ui/blocks/Terminal/controls/TerminalActionBar/TerminalActionBar.styles.d.ts.map +1 -0
  120. package/dist/react-ui/blocks/Terminal/controls/TerminalActionBar/TerminalActionBar.styles.js +13 -0
  121. package/dist/react-ui/blocks/Terminal/controls/TerminalActionBar/TerminalActionBar.types.d.ts +35 -0
  122. package/dist/react-ui/blocks/Terminal/controls/TerminalActionBar/TerminalActionBar.types.d.ts.map +1 -0
  123. package/dist/react-ui/blocks/Terminal/controls/TerminalActionBar/index.d.ts +75 -0
  124. package/dist/react-ui/blocks/Terminal/controls/TerminalActionBar/index.d.ts.map +1 -0
  125. package/dist/react-ui/blocks/Terminal/controls/TerminalActionBar/index.js +115 -0
  126. package/dist/react-ui/blocks/Terminal/controls/TerminalAtoms.d.ts +122 -0
  127. package/dist/react-ui/blocks/Terminal/controls/TerminalAtoms.d.ts.map +1 -0
  128. package/dist/react-ui/blocks/Terminal/controls/TerminalAtoms.js +128 -0
  129. package/dist/react-ui/blocks/Terminal/controls/TerminalConnectionStatus/TerminalConnectionStatus.styles.d.ts +12 -0
  130. package/dist/react-ui/blocks/Terminal/controls/TerminalConnectionStatus/TerminalConnectionStatus.styles.d.ts.map +1 -0
  131. package/dist/react-ui/blocks/Terminal/controls/TerminalConnectionStatus/TerminalConnectionStatus.styles.js +12 -0
  132. package/dist/react-ui/blocks/Terminal/controls/TerminalConnectionStatus/TerminalConnectionStatus.types.d.ts +29 -0
  133. package/dist/react-ui/blocks/Terminal/controls/TerminalConnectionStatus/TerminalConnectionStatus.types.d.ts.map +1 -0
  134. package/dist/react-ui/blocks/Terminal/controls/TerminalConnectionStatus/index.d.ts +37 -0
  135. package/dist/react-ui/blocks/Terminal/controls/TerminalConnectionStatus/index.d.ts.map +1 -0
  136. package/dist/react-ui/blocks/Terminal/controls/TerminalConnectionStatus/index.js +74 -0
  137. package/dist/react-ui/blocks/Terminal/controls/TerminalFontControls/TerminalFontControls.styles.d.ts +12 -0
  138. package/dist/react-ui/blocks/Terminal/controls/TerminalFontControls/TerminalFontControls.styles.d.ts.map +1 -0
  139. package/dist/react-ui/blocks/Terminal/controls/TerminalFontControls/TerminalFontControls.styles.js +16 -0
  140. package/dist/react-ui/blocks/Terminal/controls/TerminalFontControls/TerminalFontControls.types.d.ts +32 -0
  141. package/dist/react-ui/blocks/Terminal/controls/TerminalFontControls/TerminalFontControls.types.d.ts.map +1 -0
  142. package/dist/react-ui/blocks/Terminal/controls/TerminalFontControls/index.d.ts +40 -0
  143. package/dist/react-ui/blocks/Terminal/controls/TerminalFontControls/index.d.ts.map +1 -0
  144. package/dist/react-ui/blocks/Terminal/controls/TerminalFontControls/index.js +81 -0
  145. package/dist/react-ui/blocks/Terminal/controls/TerminalSplitButton/TerminalSplitButton.styles.d.ts +12 -0
  146. package/dist/react-ui/blocks/Terminal/controls/TerminalSplitButton/TerminalSplitButton.styles.d.ts.map +1 -0
  147. package/dist/react-ui/blocks/Terminal/controls/TerminalSplitButton/TerminalSplitButton.styles.js +13 -0
  148. package/dist/react-ui/blocks/Terminal/controls/TerminalSplitButton/TerminalSplitButton.types.d.ts +28 -0
  149. package/dist/react-ui/blocks/Terminal/controls/TerminalSplitButton/TerminalSplitButton.types.d.ts.map +1 -0
  150. package/dist/react-ui/blocks/Terminal/controls/TerminalSplitButton/index.d.ts +40 -0
  151. package/dist/react-ui/blocks/Terminal/controls/TerminalSplitButton/index.d.ts.map +1 -0
  152. package/dist/react-ui/blocks/Terminal/controls/TerminalSplitButton/index.js +108 -0
  153. package/dist/react-ui/blocks/Terminal/controls/TerminalStatusBar/TerminalStatusBar.styles.d.ts +12 -0
  154. package/dist/react-ui/blocks/Terminal/controls/TerminalStatusBar/TerminalStatusBar.styles.d.ts.map +1 -0
  155. package/dist/react-ui/blocks/Terminal/controls/TerminalStatusBar/TerminalStatusBar.styles.js +12 -0
  156. package/dist/react-ui/blocks/Terminal/controls/TerminalStatusBar/TerminalStatusBar.types.d.ts +31 -0
  157. package/dist/react-ui/blocks/Terminal/controls/TerminalStatusBar/TerminalStatusBar.types.d.ts.map +1 -0
  158. package/dist/react-ui/blocks/Terminal/controls/TerminalStatusBar/index.d.ts +73 -0
  159. package/dist/react-ui/blocks/Terminal/controls/TerminalStatusBar/index.d.ts.map +1 -0
  160. package/dist/react-ui/blocks/Terminal/controls/TerminalStatusBar/index.js +99 -0
  161. package/dist/react-ui/blocks/Terminal/controls/index.d.ts +16 -0
  162. package/dist/react-ui/blocks/Terminal/controls/index.d.ts.map +1 -0
  163. package/dist/react-ui/blocks/Terminal/controls/index.js +11 -0
  164. package/dist/react-ui/blocks/Terminal/display.d.ts +2 -2
  165. package/dist/react-ui/blocks/Terminal/display.d.ts.map +1 -1
  166. package/dist/react-ui/blocks/Terminal/display.js +4 -2
  167. package/dist/react-ui/blocks/Terminal/hooks/index.d.ts +9 -2
  168. package/dist/react-ui/blocks/Terminal/hooks/index.d.ts.map +1 -1
  169. package/dist/react-ui/blocks/Terminal/hooks/index.js +6 -0
  170. package/dist/react-ui/blocks/Terminal/hooks/useTerminal.d.ts +198 -0
  171. package/dist/react-ui/blocks/Terminal/hooks/useTerminal.d.ts.map +1 -0
  172. package/dist/react-ui/blocks/Terminal/hooks/useTerminal.js +198 -0
  173. package/dist/react-ui/blocks/Terminal/hooks/useTerminalConnection.d.ts +81 -0
  174. package/dist/react-ui/blocks/Terminal/hooks/useTerminalConnection.d.ts.map +1 -0
  175. package/dist/react-ui/blocks/Terminal/hooks/useTerminalConnection.js +115 -0
  176. package/dist/react-ui/blocks/Terminal/hooks/useTerminalDimensions.d.ts +54 -0
  177. package/dist/react-ui/blocks/Terminal/hooks/useTerminalDimensions.d.ts.map +1 -0
  178. package/dist/react-ui/blocks/Terminal/hooks/useTerminalDimensions.js +57 -0
  179. package/dist/react-ui/blocks/Terminal/hooks/useTerminalFontSize.d.ts +81 -0
  180. package/dist/react-ui/blocks/Terminal/hooks/useTerminalFontSize.d.ts.map +1 -0
  181. package/dist/react-ui/blocks/Terminal/hooks/useTerminalFontSize.js +102 -0
  182. package/dist/react-ui/blocks/Terminal/hooks/useTerminalKeyboardShortcuts.d.ts +78 -0
  183. package/dist/react-ui/blocks/Terminal/hooks/useTerminalKeyboardShortcuts.d.ts.map +1 -0
  184. package/dist/react-ui/blocks/Terminal/hooks/useTerminalKeyboardShortcuts.js +136 -0
  185. package/dist/react-ui/blocks/Terminal/hooks/useTerminalPaneManager.d.ts +88 -0
  186. package/dist/react-ui/blocks/Terminal/hooks/useTerminalPaneManager.d.ts.map +1 -0
  187. package/dist/react-ui/blocks/Terminal/hooks/useTerminalPaneManager.js +101 -0
  188. package/dist/react-ui/blocks/Terminal/index.d.ts +10 -6
  189. package/dist/react-ui/blocks/Terminal/index.d.ts.map +1 -1
  190. package/dist/react-ui/blocks/Terminal/index.js +43 -11
  191. package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.d.ts.map +1 -1
  192. package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.js +8 -13
  193. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel/TerminalDebugPanel.styles.d.ts +13 -0
  194. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel/TerminalDebugPanel.styles.d.ts.map +1 -0
  195. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel/TerminalDebugPanel.styles.js +18 -0
  196. package/dist/react-ui/blocks/Terminal/panel/{TerminalDebugPanel.d.ts → TerminalDebugPanel/TerminalDebugPanel.types.d.ts} +19 -27
  197. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel/TerminalDebugPanel.types.d.ts.map +1 -0
  198. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel/index.d.ts +32 -0
  199. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel/index.d.ts.map +1 -0
  200. package/dist/react-ui/blocks/Terminal/panel/{TerminalDebugPanel.js → TerminalDebugPanel/index.js} +59 -38
  201. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown/TerminalFilterDropdown.styles.d.ts +13 -0
  202. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown/TerminalFilterDropdown.styles.d.ts.map +1 -0
  203. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown/TerminalFilterDropdown.styles.js +17 -0
  204. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown/TerminalFilterDropdown.types.d.ts +34 -0
  205. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown/TerminalFilterDropdown.types.d.ts.map +1 -0
  206. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown/index.d.ts +34 -0
  207. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown/index.d.ts.map +1 -0
  208. package/dist/react-ui/blocks/Terminal/panel/{TerminalFilterDropdown.js → TerminalFilterDropdown/index.js} +29 -31
  209. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown/terminal-filter-dropdown.module.css +60 -0
  210. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown/terminal-filter-dropdown.module.js +5 -0
  211. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs/TerminalFilterTabs.styles.d.ts +13 -0
  212. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs/TerminalFilterTabs.styles.d.ts.map +1 -0
  213. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs/TerminalFilterTabs.types.d.ts +34 -0
  214. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs/TerminalFilterTabs.types.d.ts.map +1 -0
  215. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs/index.d.ts +34 -0
  216. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs/index.d.ts.map +1 -0
  217. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.d.ts.map +1 -1
  218. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.js +5 -1
  219. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.d.ts +2 -1
  220. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.d.ts.map +1 -1
  221. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.d.ts +6 -3
  222. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.d.ts.map +1 -1
  223. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.js +43 -264
  224. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelWterm.d.ts +43 -0
  225. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelWterm.d.ts.map +1 -0
  226. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelWterm.js +248 -0
  227. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.d.ts +4 -2
  228. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.d.ts.map +1 -1
  229. package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.js +40 -150
  230. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel/TerminalLogsPanel.styles.d.ts +26 -0
  231. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel/TerminalLogsPanel.styles.d.ts.map +1 -0
  232. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel/TerminalLogsPanel.styles.js +30 -0
  233. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel/TerminalLogsPanel.types.d.ts +123 -0
  234. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel/TerminalLogsPanel.types.d.ts.map +1 -0
  235. package/dist/react-ui/blocks/Terminal/panel/{TerminalLogsPanel.d.ts → TerminalLogsPanel/index.d.ts} +10 -21
  236. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel/index.d.ts.map +1 -0
  237. package/dist/react-ui/blocks/Terminal/panel/{TerminalLogsPanel.js → TerminalLogsPanel/index.js} +48 -81
  238. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.d.ts +6 -142
  239. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.d.ts.map +1 -1
  240. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.d.ts +1 -1
  241. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.d.ts.map +1 -1
  242. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.js +16 -16
  243. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.d.ts +1 -1
  244. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.js +1 -1
  245. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter/TerminalPanelFooter.styles.d.ts +21 -0
  246. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter/TerminalPanelFooter.styles.d.ts.map +1 -0
  247. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter/TerminalPanelFooter.styles.js +21 -0
  248. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter/TerminalPanelFooter.types.d.ts +40 -0
  249. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter/TerminalPanelFooter.types.d.ts.map +1 -0
  250. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter/index.d.ts +37 -0
  251. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter/index.d.ts.map +1 -0
  252. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter/index.js +127 -0
  253. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader/TerminalPanelHeader.styles.d.ts +22 -0
  254. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader/TerminalPanelHeader.styles.d.ts.map +1 -0
  255. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader/TerminalPanelHeader.styles.js +24 -0
  256. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader/TerminalPanelHeader.types.d.ts +43 -0
  257. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader/TerminalPanelHeader.types.d.ts.map +1 -0
  258. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader/index.d.ts +35 -0
  259. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader/index.d.ts.map +1 -0
  260. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader/index.js +129 -0
  261. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar/TerminalPanelToolbar.styles.d.ts +20 -0
  262. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar/TerminalPanelToolbar.styles.d.ts.map +1 -0
  263. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar/TerminalPanelToolbar.types.d.ts +72 -0
  264. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar/TerminalPanelToolbar.types.d.ts.map +1 -0
  265. package/dist/react-ui/blocks/Terminal/panel/{TerminalPanelToolbar.d.ts → TerminalPanelToolbar/index.d.ts} +10 -4
  266. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar/index.d.ts.map +1 -0
  267. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl/TerminalSessionControl.styles.d.ts +13 -0
  268. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl/TerminalSessionControl.styles.d.ts.map +1 -0
  269. package/dist/react-ui/blocks/Terminal/panel/{TerminalSessionControl.d.ts → TerminalSessionControl/TerminalSessionControl.types.d.ts} +24 -30
  270. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl/TerminalSessionControl.types.d.ts.map +1 -0
  271. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl/index.d.ts +38 -0
  272. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl/index.d.ts.map +1 -0
  273. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs/TerminalSessionTabs.styles.d.ts +23 -0
  274. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs/TerminalSessionTabs.styles.d.ts.map +1 -0
  275. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs/TerminalSessionTabs.styles.js +27 -0
  276. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs/TerminalSessionTabs.types.d.ts +56 -0
  277. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs/TerminalSessionTabs.types.d.ts.map +1 -0
  278. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs/index.d.ts +40 -0
  279. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs/index.d.ts.map +1 -0
  280. package/dist/react-ui/blocks/Terminal/panel/{TerminalSessionTabs.js → TerminalSessionTabs/index.js} +26 -31
  281. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs/terminal-session-tabs.module.css +60 -0
  282. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs/terminal-session-tabs.module.js +5 -0
  283. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover/TerminalSettingsPopover.styles.d.ts +13 -0
  284. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover/TerminalSettingsPopover.styles.d.ts.map +1 -0
  285. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover/TerminalSettingsPopover.styles.js +19 -0
  286. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover/TerminalSettingsPopover.types.d.ts +20 -0
  287. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover/TerminalSettingsPopover.types.d.ts.map +1 -0
  288. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover/index.d.ts +25 -0
  289. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover/index.d.ts.map +1 -0
  290. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover/index.js +217 -0
  291. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector/TerminalThemeSelector.styles.d.ts +13 -0
  292. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector/TerminalThemeSelector.styles.d.ts.map +1 -0
  293. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector/TerminalThemeSelector.styles.js +15 -0
  294. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector/TerminalThemeSelector.types.d.ts +28 -0
  295. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector/TerminalThemeSelector.types.d.ts.map +1 -0
  296. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector/index.d.ts +30 -0
  297. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector/index.d.ts.map +1 -0
  298. package/dist/react-ui/blocks/Terminal/panel/{TerminalThemeSelector.js → TerminalThemeSelector/index.js} +31 -46
  299. package/dist/react-ui/blocks/Terminal/restty/ResttyContext.d.ts +38 -0
  300. package/dist/react-ui/blocks/Terminal/restty/ResttyContext.d.ts.map +1 -0
  301. package/dist/react-ui/blocks/Terminal/restty/ResttyContext.js +47 -0
  302. package/dist/react-ui/blocks/Terminal/restty/ResttySessionProvider.d.ts +50 -0
  303. package/dist/react-ui/blocks/Terminal/restty/ResttySessionProvider.d.ts.map +1 -0
  304. package/dist/react-ui/blocks/Terminal/restty/ResttySessionProvider.js +60 -0
  305. package/dist/react-ui/blocks/Terminal/restty/ResttyTerminal.d.ts +32 -0
  306. package/dist/react-ui/blocks/Terminal/restty/ResttyTerminal.d.ts.map +1 -0
  307. package/dist/react-ui/blocks/Terminal/restty/ResttyTerminal.js +278 -0
  308. package/dist/react-ui/blocks/Terminal/restty/ResttyTerminal.types.d.ts +166 -0
  309. package/dist/react-ui/blocks/Terminal/restty/ResttyTerminal.types.d.ts.map +1 -0
  310. package/dist/react-ui/blocks/Terminal/restty/index.d.ts +20 -0
  311. package/dist/react-ui/blocks/Terminal/restty/index.d.ts.map +1 -0
  312. package/dist/react-ui/blocks/Terminal/restty/index.js +7 -0
  313. package/dist/react-ui/blocks/Terminal/restty/useResttyPane.d.ts +51 -0
  314. package/dist/react-ui/blocks/Terminal/restty/useResttyPane.d.ts.map +1 -0
  315. package/dist/react-ui/blocks/Terminal/restty/useResttyPane.js +61 -0
  316. package/dist/react-ui/blocks/Terminal/restty/useResttyPanes.d.ts +39 -0
  317. package/dist/react-ui/blocks/Terminal/restty/useResttyPanes.d.ts.map +1 -0
  318. package/dist/react-ui/blocks/Terminal/restty/useResttyPanes.js +48 -0
  319. package/dist/react-ui/blocks/Terminal/restty/useResttyPlugins.d.ts +29 -0
  320. package/dist/react-ui/blocks/Terminal/restty/useResttyPlugins.d.ts.map +1 -0
  321. package/dist/react-ui/blocks/Terminal/restty/useResttyPlugins.js +33 -0
  322. package/dist/react-ui/blocks/Terminal/restty/useResttyVisibility.d.ts +32 -0
  323. package/dist/react-ui/blocks/Terminal/restty/useResttyVisibility.d.ts.map +1 -0
  324. package/dist/react-ui/blocks/Terminal/restty/useResttyVisibility.js +67 -0
  325. package/dist/react-ui/blocks/Terminal/wterm/WtermJsonTransport.d.ts +83 -0
  326. package/dist/react-ui/blocks/Terminal/wterm/WtermJsonTransport.d.ts.map +1 -0
  327. package/dist/react-ui/blocks/Terminal/wterm/WtermJsonTransport.js +191 -0
  328. package/dist/react-ui/blocks/index.d.ts +2 -0
  329. package/dist/react-ui/blocks/index.d.ts.map +1 -1
  330. package/dist/react-ui/components/MorphingPopover/morphing-popover.module.css +154 -0
  331. package/dist/react-ui/icons/lucide-animated/terminal.d.ts +45 -13
  332. package/dist/react-ui/icons/lucide-animated/terminal.d.ts.map +1 -1
  333. package/dist/react-ui/icons/lucide-animated/terminal.js +118 -28
  334. package/dist/react-ui/index.d.ts +4 -0
  335. package/dist/react-ui/index.d.ts.map +1 -1
  336. package/dist/react-ui/index.js +40 -1
  337. package/dist/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.module.css +20 -0
  338. package/dist/react-ui/ui/Button/Button.styles.d.ts +2 -2
  339. package/dist/react-ui/ui/Button/Button.styles.d.ts.map +1 -1
  340. package/dist/react-ui/ui/Button/Button.styles.js +4 -2
  341. package/dist/react-ui/ui/Button/Button.types.d.ts +2 -2
  342. package/dist/react-ui/ui/Button/Button.types.d.ts.map +1 -1
  343. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.css +369 -0
  344. package/dist/react-ui/ui/Tabs/Tabs.css +38 -0
  345. package/package.json +20 -7
  346. package/dist/react-ui/blocks/Terminal/ResttyAdapter.d.ts +0 -146
  347. package/dist/react-ui/blocks/Terminal/ResttyAdapter.d.ts.map +0 -1
  348. package/dist/react-ui/blocks/Terminal/ResttyAdapter.js +0 -213
  349. package/dist/react-ui/blocks/Terminal/Terminal.adapter.d.ts +0 -55
  350. package/dist/react-ui/blocks/Terminal/Terminal.adapter.d.ts.map +0 -1
  351. package/dist/react-ui/blocks/Terminal/Terminal.adapter.js +0 -68
  352. package/dist/react-ui/blocks/Terminal/TerminalRestty.d.ts +0 -111
  353. package/dist/react-ui/blocks/Terminal/TerminalRestty.d.ts.map +0 -1
  354. package/dist/react-ui/blocks/Terminal/TerminalRestty.js +0 -185
  355. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.d.ts +0 -160
  356. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.d.ts.map +0 -1
  357. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.js +0 -185
  358. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.d.ts +0 -36
  359. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.d.ts.map +0 -1
  360. package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.js +0 -52
  361. package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel.d.ts.map +0 -1
  362. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.d.ts +0 -42
  363. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.d.ts.map +0 -1
  364. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs.d.ts +0 -43
  365. package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs.d.ts.map +0 -1
  366. package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.d.ts.map +0 -1
  367. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.d.ts +0 -30
  368. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.d.ts.map +0 -1
  369. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.js +0 -126
  370. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.d.ts +0 -31
  371. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.d.ts.map +0 -1
  372. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.js +0 -149
  373. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.d.ts.map +0 -1
  374. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl.d.ts.map +0 -1
  375. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.d.ts +0 -63
  376. package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.d.ts.map +0 -1
  377. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.d.ts +0 -24
  378. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.d.ts.map +0 -1
  379. package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.js +0 -225
  380. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.d.ts +0 -35
  381. package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.d.ts.map +0 -1
  382. package/dist/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.js +0 -5
  383. package/dist/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.js +0 -5
  384. /package/dist/{react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module-p4Aks9qK.css → css/blocks-Terminal-panel-TerminalFilterDropdown-terminal-filter-dropdown.module.css} +0 -0
  385. /package/dist/{react-ui/blocks/Terminal/panel/terminal-session-tabs.module-D7g8zk0W.css → css/blocks-Terminal-panel-TerminalSessionTabs-terminal-session-tabs.module.css} +0 -0
  386. /package/dist/{react-ui/components/MorphingPopover/morphing-popover.module-s63snw7C.css → css/components-MorphingPopover-morphing-popover.module.css} +0 -0
  387. /package/dist/{react-ui/primitives/waapi/Morph/techniques/useViewTransitions.module-7y-To7On.css → css/primitives-waapi-Morph-techniques-useViewTransitions.module.css} +0 -0
  388. /package/dist/{react-ui/ui/DynamicToggle/DynamicToggle-C3rJw_PQ.css → css/ui-DynamicToggle-DynamicToggle.css} +0 -0
  389. /package/dist/{react-ui/ui/Tabs/Tabs-DKe-TP8j.css → css/ui-Tabs-Tabs.css} +0 -0
@@ -1,16 +1,15 @@
1
1
  'use client';
2
2
 
3
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";
4
+ import { useTerminal } from "../hooks/useTerminal.js";
5
+ import { TerminalDisconnectedOverlay } from "../controls/TerminalAtoms.js";
6
+ import { TerminalActionBar } from "../controls/TerminalActionBar/index.js";
7
+ import { TerminalStatusBar } from "../controls/TerminalStatusBar/index.js";
9
8
  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";
9
+ import { ResttyTerminal } from "../restty/ResttyTerminal.js";
10
+ import "../restty/index.js";
11
+ import { TerminalDebugPanel } from "./TerminalDebugPanel/index.js";
12
+ import { forwardRef, useImperativeHandle } from "react";
14
13
  import { jsx, jsxs } from "react/jsx-runtime";
15
14
 
16
15
  //#region src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.tsx
@@ -22,26 +21,20 @@ import { jsx, jsxs } from "react/jsx-runtime";
22
21
  * footer) but uses restty for rendering and its own PTY transport
23
22
  * instead of useTerminalWebSocket.
24
23
  *
24
+ * Internally composes `useTerminal` hook with `TerminalActionBar`,
25
+ * `TerminalStatusBar`, and `TerminalDisconnectedOverlay` atoms.
26
+ *
25
27
  * @module components/devenv/terminal/panel/interactive-restty
26
28
  */
27
29
  /**
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
30
  * TerminalInteractivePanelRestty Component.
38
31
  *
39
32
  * GPU-accelerated interactive terminal combining:
40
33
  * - TerminalPanelChrome (Ghostty glassmorphism shell)
41
34
  * - 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
35
+ * - Composable action bar (clear, settings, split, font controls)
36
+ * - Composable status bar (connection, dimensions, font size)
37
+ * - Disconnected overlay with reconnect button
45
38
  *
46
39
  * @example
47
40
  * ```tsx
@@ -53,270 +46,56 @@ const actionBtnStyles = "h-8 px-2 rounded-md transition-all hover:bg-muted/20 ac
53
46
  * ```
54
47
  */
55
48
  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
49
+ const terminal = useTerminal({
50
+ wsUrl,
51
+ onConnect,
52
+ onDisconnect,
53
+ onError
62
54
  });
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
55
  /**
142
56
  * Expose imperative methods to parent.
143
57
  */
144
58
  useImperativeHandle(ref, () => ({
145
59
  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
60
+ clear: () => terminal.clear(),
61
+ focus: () => terminal.focus(),
62
+ sendInput: (data) => terminal.sendInput(data),
63
+ isConnected: () => terminal.isConnected
156
64
  }));
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
65
  return /* @__PURE__ */ jsxs(TerminalPanelChrome, {
182
66
  containerName,
183
- isConnected,
184
- crtEffect: settings.crtEffect,
67
+ isConnected: terminal.isConnected,
68
+ crtEffect: terminal.settings.crtEffect,
185
69
  sessions,
186
70
  activeSessionId,
187
71
  onSessionTabClick: onSessionChange,
188
72
  onSessionClose,
189
73
  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
- }),
74
+ actionBar: /* @__PURE__ */ jsx(TerminalActionBar, { terminal }),
75
+ footer: /* @__PURE__ */ jsx(TerminalStatusBar, { terminal }),
273
76
  className,
274
77
  children: [/* @__PURE__ */ jsxs("div", {
275
78
  className: "relative min-h-[400px]",
276
- children: [/* @__PURE__ */ jsx(TerminalRestty, {
277
- ref: resttyRef,
278
- wsUrl,
279
- fontSize,
280
- resttyThemeName: settings.resttyThemeName,
79
+ children: [/* @__PURE__ */ jsx(ResttyTerminal, {
80
+ ref: terminal.ref,
81
+ ...terminal.resttyProps,
82
+ resttyThemeName: terminal.settings.resttyThemeName,
281
83
  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
- })
84
+ className: cn("w-full h-full min-h-[400px]", "bg-[hsl(var(--terminal-bg,var(--background)))]")
85
+ }), /* @__PURE__ */ jsx(TerminalDisconnectedOverlay, {
86
+ onReconnect: terminal.reconnect,
87
+ visible: terminal.status === "disconnected"
306
88
  })]
307
89
  }), /* @__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,
90
+ visible: terminal.settings.debugPanel,
91
+ renderer: terminal.isConnected ? "restty (GPU)" : void 0,
92
+ gridSize: terminal.dimensions.cols > 0 ? terminal.dimensions : void 0,
93
+ font: `JetBrains Mono ${terminal.fontSize}px`,
94
+ ptyStatus: terminal.status,
316
95
  ptyUrl: wsUrl,
317
- themeName: settings.resttyThemeName,
318
- crtEffect: settings.crtEffect,
319
- uptimeSeconds: uptimeStart ? Math.floor((Date.now() - uptimeStart) / 1e3) : 0
96
+ themeName: terminal.settings.resttyThemeName,
97
+ crtEffect: terminal.settings.crtEffect,
98
+ uptimeSeconds: terminal.uptimeSeconds ?? 0
320
99
  })]
321
100
  });
322
101
  });
@@ -0,0 +1,43 @@
1
+ /**
2
+ * TerminalInteractivePanelWterm Component.
3
+ *
4
+ * Interactive terminal panel using wterm — Zig + WASM terminal emulator.
5
+ * Mirrors TerminalInteractivePanel's UI (Ghostty chrome, action bar,
6
+ * footer) but uses wterm for rendering with WtermJsonTransport
7
+ * bridging the MKS JSON WebSocket protocol.
8
+ *
9
+ * @module components/devenv/terminal/panel/interactive-wterm
10
+ */
11
+ import type { ITerminalInteractivePanelProps, ITerminalInteractivePanelRef } from './TerminalInteractivePanel.types';
12
+ import '@wterm/react/css';
13
+ /**
14
+ * TerminalInteractivePanelWterm Component.
15
+ *
16
+ * Interactive terminal panel combining:
17
+ * - TerminalPanelChrome (Ghostty glassmorphism shell)
18
+ * - wterm with Zig + WASM VT100/VT220/xterm parser
19
+ * - WtermJsonTransport bridging MKS JSON WS protocol
20
+ * - Composable action bar and status bar atoms
21
+ *
22
+ * wterm features:
23
+ * - ~12KB WASM binary (embedded base64 fallback)
24
+ * - DOM rendering with dirty-row tracking via requestAnimationFrame
25
+ * - Full 24-bit color (SGR) support
26
+ * - Alternate screen buffer (vim, less, htop work)
27
+ * - Scrollback history ring buffer
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * const termRef = useRef<ITerminalInteractivePanelRef>(null);
32
+ *
33
+ * <TerminalInteractivePanelWterm
34
+ * ref={termRef}
35
+ * containerName="mks-devenv"
36
+ * wsUrl="ws://localhost:3100/terminal/session-1"
37
+ * onConnect={() => console.log('Connected')}
38
+ * onDisconnect={() => console.log('Disconnected')}
39
+ * />
40
+ * ```
41
+ */
42
+ export declare const TerminalInteractivePanelWterm: import("react").ForwardRefExoticComponent<ITerminalInteractivePanelProps & import("react").RefAttributes<ITerminalInteractivePanelRef>>;
43
+ //# sourceMappingURL=TerminalInteractivePanelWterm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalInteractivePanelWterm.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelWterm.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAeH,OAAO,KAAK,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAWrH,OAAO,kBAAkB,CAAC;AAY1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,6BAA6B,yIAqOzC,CAAC"}
@@ -0,0 +1,248 @@
1
+ 'use client';
2
+
3
+ import { cn } from "../../../lib/utils.js";
4
+ import { useTerminalSettings } from "../hooks/useTerminalSettings.js";
5
+ import { TerminalClearButton, TerminalDimensionsBadge, TerminalDisconnectedOverlay, TerminalReconnectButton } from "../controls/TerminalAtoms.js";
6
+ import { TerminalFontControls } from "../controls/TerminalFontControls/index.js";
7
+ import { TerminalSettingsPopover } from "./TerminalSettingsPopover/index.js";
8
+ import { TerminalActionBar } from "../controls/TerminalActionBar/index.js";
9
+ import { TerminalConnectionStatus } from "../controls/TerminalConnectionStatus/index.js";
10
+ import { TerminalStatusBar } from "../controls/TerminalStatusBar/index.js";
11
+ import { TerminalPanelChrome } from "./TerminalPanelChrome.js";
12
+ import { WtermJsonTransport } from "../wterm/WtermJsonTransport.js";
13
+ import { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from "react";
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+ import { Terminal } from "@wterm/react";
16
+ import "@wterm/react/css";
17
+
18
+ //#region src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelWterm.tsx
19
+ /**
20
+ * TerminalInteractivePanelWterm Component.
21
+ *
22
+ * Interactive terminal panel using wterm — Zig + WASM terminal emulator.
23
+ * Mirrors TerminalInteractivePanel's UI (Ghostty chrome, action bar,
24
+ * footer) but uses wterm for rendering with WtermJsonTransport
25
+ * bridging the MKS JSON WebSocket protocol.
26
+ *
27
+ * @module components/devenv/terminal/panel/interactive-wterm
28
+ */
29
+ /**
30
+ * Terminal display container styles for interactive mode.
31
+ */
32
+ const terminalContainerStyles = "relative bg-[hsl(var(--terminal-bg,var(--background)))] min-h-[400px] border-x border-border/10 terminal-scroll";
33
+ /** Min/max font size bounds. */
34
+ const MIN_FONT_SIZE = 10;
35
+ const MAX_FONT_SIZE = 24;
36
+ /**
37
+ * TerminalInteractivePanelWterm Component.
38
+ *
39
+ * Interactive terminal panel combining:
40
+ * - TerminalPanelChrome (Ghostty glassmorphism shell)
41
+ * - wterm with Zig + WASM VT100/VT220/xterm parser
42
+ * - WtermJsonTransport bridging MKS JSON WS protocol
43
+ * - Composable action bar and status bar atoms
44
+ *
45
+ * wterm features:
46
+ * - ~12KB WASM binary (embedded base64 fallback)
47
+ * - DOM rendering with dirty-row tracking via requestAnimationFrame
48
+ * - Full 24-bit color (SGR) support
49
+ * - Alternate screen buffer (vim, less, htop work)
50
+ * - Scrollback history ring buffer
51
+ *
52
+ * @example
53
+ * ```tsx
54
+ * const termRef = useRef<ITerminalInteractivePanelRef>(null);
55
+ *
56
+ * <TerminalInteractivePanelWterm
57
+ * ref={termRef}
58
+ * containerName="mks-devenv"
59
+ * wsUrl="ws://localhost:3100/terminal/session-1"
60
+ * onConnect={() => console.log('Connected')}
61
+ * onDisconnect={() => console.log('Disconnected')}
62
+ * />
63
+ * ```
64
+ */
65
+ const TerminalInteractivePanelWterm = forwardRef(({ containerName, wsUrl, sessions, activeSessionId, onSessionChange, onSessionClose, onNewSession, onConnect, onDisconnect, onError, className }, ref) => {
66
+ /** wterm terminal instance handle */
67
+ const terminalRef = useRef(null);
68
+ /** MKS JSON → wterm bridge transport */
69
+ const transportRef = useRef(null);
70
+ const containerRef = useRef(null);
71
+ const terminalReadyRef = useRef(false);
72
+ const { settings } = useTerminalSettings();
73
+ const [fontSize, setFontSize] = useState(settings.fontSize);
74
+ const [dimensions, setDimensions] = useState({
75
+ cols: 80,
76
+ rows: 24
77
+ });
78
+ const [connectionStatus, setConnectionStatus] = useState("disconnected");
79
+ /**
80
+ * Connect to MKS terminal server via WtermJsonTransport.
81
+ */
82
+ const connectTransport = useCallback(() => {
83
+ if (!wsUrl) return;
84
+ transportRef.current?.destroy();
85
+ const transport = new WtermJsonTransport(containerName || "bash");
86
+ transport.connect({
87
+ url: wsUrl,
88
+ cols: dimensions.cols,
89
+ rows: dimensions.rows,
90
+ callbacks: {
91
+ onConnect: () => {
92
+ setConnectionStatus("connected");
93
+ onConnect?.();
94
+ terminalRef.current?.write("\r\n\x1B[32m✓ Connected to wterm\x1B[0m\r\n");
95
+ },
96
+ onDisconnect: () => {
97
+ setConnectionStatus("disconnected");
98
+ onDisconnect?.();
99
+ terminalRef.current?.write("\r\n\x1B[31m✗ Disconnected from terminal\x1B[0m\r\n");
100
+ },
101
+ onError: (message) => {
102
+ setConnectionStatus("error");
103
+ onError?.(message);
104
+ terminalRef.current?.write(`\r\n\x1b[31mError: ${message}\x1b[0m\r\n`);
105
+ },
106
+ onData: (data) => {
107
+ terminalRef.current?.write(data);
108
+ },
109
+ onStatus: (shell) => {
110
+ console.debug("[wterm] Shell:", shell);
111
+ },
112
+ onExit: (code) => {
113
+ terminalRef.current?.write(`\r\n\x1b[33m[process exited with code ${code}]\x1b[0m\r\n`);
114
+ setConnectionStatus("disconnected");
115
+ }
116
+ }
117
+ });
118
+ transportRef.current = transport;
119
+ }, [
120
+ wsUrl,
121
+ containerName,
122
+ dimensions.cols,
123
+ dimensions.rows,
124
+ onConnect,
125
+ onDisconnect,
126
+ onError
127
+ ]);
128
+ /**
129
+ * Handle terminal data input from user → send to PTY via JSON transport.
130
+ */
131
+ const handleData = useCallback((data) => {
132
+ transportRef.current?.sendInput(data);
133
+ }, []);
134
+ /**
135
+ * Handle terminal resize → update transport and wterm dimensions.
136
+ */
137
+ const handleResize = useCallback((cols, rows) => {
138
+ setDimensions({
139
+ cols,
140
+ rows
141
+ });
142
+ transportRef.current?.resize(cols, rows);
143
+ }, []);
144
+ /**
145
+ * Reconnect to terminal.
146
+ */
147
+ const reconnect = useCallback(() => {
148
+ connectTransport();
149
+ }, [connectTransport]);
150
+ /**
151
+ * Initialize transport on mount and clean up on unmount.
152
+ */
153
+ useEffect(() => {
154
+ terminalReadyRef.current = true;
155
+ connectTransport();
156
+ return () => {
157
+ terminalReadyRef.current = false;
158
+ transportRef.current?.destroy();
159
+ transportRef.current = null;
160
+ };
161
+ }, [connectTransport]);
162
+ /**
163
+ * Handle font size changes via CSS custom property.
164
+ */
165
+ useEffect(() => {
166
+ if (containerRef.current) containerRef.current.style.setProperty("--wterm-font-size", `${fontSize}px`);
167
+ }, [fontSize]);
168
+ const handleClear = useCallback(() => {
169
+ terminalRef.current?.write("\x1B[2J\x1B[H");
170
+ }, []);
171
+ const handleFontIncrease = useCallback(() => {
172
+ setFontSize((prev) => Math.min(prev + 1, MAX_FONT_SIZE));
173
+ }, []);
174
+ const handleFontDecrease = useCallback(() => {
175
+ setFontSize((prev) => Math.max(prev - 1, MIN_FONT_SIZE));
176
+ }, []);
177
+ useImperativeHandle(ref, () => ({
178
+ write: (text) => {
179
+ terminalRef.current?.write(text);
180
+ },
181
+ clear: () => {
182
+ terminalRef.current?.write("\x1B[2J\x1B[H");
183
+ },
184
+ focus: () => {
185
+ terminalRef.current?.focus();
186
+ },
187
+ sendInput: (data) => {
188
+ transportRef.current?.sendInput(data);
189
+ },
190
+ isConnected: () => connectionStatus === "connected"
191
+ }));
192
+ return /* @__PURE__ */ jsx(TerminalPanelChrome, {
193
+ containerName,
194
+ isConnected: connectionStatus === "connected",
195
+ crtEffect: settings.crtEffect,
196
+ sessions,
197
+ activeSessionId,
198
+ onSessionTabClick: onSessionChange,
199
+ onSessionClose,
200
+ onNewSession,
201
+ actionBar: /* @__PURE__ */ jsxs(TerminalActionBar, { children: [
202
+ /* @__PURE__ */ jsx(TerminalClearButton, { onClear: handleClear }),
203
+ /* @__PURE__ */ jsx("div", { className: "flex-1" }),
204
+ /* @__PURE__ */ jsx(TerminalSettingsPopover, {}),
205
+ /* @__PURE__ */ jsx(TerminalReconnectButton, {
206
+ onReconnect: reconnect,
207
+ status: connectionStatus
208
+ }),
209
+ /* @__PURE__ */ jsx(TerminalFontControls, {
210
+ fontSize,
211
+ onIncrease: handleFontIncrease,
212
+ onDecrease: handleFontDecrease,
213
+ isMin: fontSize <= MIN_FONT_SIZE,
214
+ isMax: fontSize >= MAX_FONT_SIZE
215
+ })
216
+ ] }),
217
+ footer: /* @__PURE__ */ jsxs(TerminalStatusBar, { children: [/* @__PURE__ */ jsx(TerminalStatusBar.Group, { children: /* @__PURE__ */ jsx(TerminalConnectionStatus, { status: connectionStatus }) }), /* @__PURE__ */ jsxs(TerminalStatusBar.Group, { children: [/* @__PURE__ */ jsx(TerminalDimensionsBadge, { dimensions }), /* @__PURE__ */ jsxs("span", {
218
+ className: "text-xs font-mono text-muted-foreground",
219
+ children: [fontSize, "px"]
220
+ })] })] }),
221
+ className,
222
+ children: /* @__PURE__ */ jsxs("div", {
223
+ ref: containerRef,
224
+ className: cn(terminalContainerStyles, "wterm-wrapper"),
225
+ style: { "--wterm-font-size": `${fontSize}px` },
226
+ children: [/* @__PURE__ */ jsx(Terminal, {
227
+ ref: terminalRef,
228
+ cols: dimensions.cols,
229
+ rows: dimensions.rows,
230
+ autoResize: false,
231
+ cursorBlink: true,
232
+ onData: handleData,
233
+ onResize: handleResize,
234
+ onReady: (wt) => {
235
+ wt.focus();
236
+ },
237
+ className: "w-full h-full"
238
+ }), /* @__PURE__ */ jsx(TerminalDisconnectedOverlay, {
239
+ onReconnect: reconnect,
240
+ visible: connectionStatus === "disconnected"
241
+ })]
242
+ })
243
+ });
244
+ });
245
+ TerminalInteractivePanelWterm.displayName = "TerminalInteractivePanelWterm";
246
+
247
+ //#endregion
248
+ export { TerminalInteractivePanelWterm };
@@ -5,6 +5,9 @@
5
5
  * Ghostty-inspired chrome (via TerminalPanelChrome), xterm.js
6
6
  * rendering, and action bar controls. Includes settings popover.
7
7
  *
8
+ * Uses composable control atoms for the action bar and status bar
9
+ * while managing xterm.js lifecycle internally.
10
+ *
8
11
  * @module components/devenv/terminal/panel/interactive-xterm
9
12
  */
10
13
  import type { ITerminalInteractivePanelProps, ITerminalInteractivePanelRef } from './TerminalInteractivePanel.types';
@@ -16,8 +19,7 @@ import '@xterm/xterm/css/xterm.css';
16
19
  * - TerminalPanelChrome (Ghostty glassmorphism shell)
17
20
  * - xterm.js with interactive mode (cursorBlink, stdin enabled)
18
21
  * - WebSocket connection via useTerminalWebSocket
19
- * - Action bar (clear, settings, font size controls)
20
- * - Footer with connection status and terminal dimensions
22
+ * - Composable action bar and status bar atoms
21
23
  *
22
24
  * @example
23
25
  * ```tsx
@@ -1 +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"}
1
+ {"version":3,"file":"TerminalInteractivePanelXterm.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAmBH,OAAO,KAAK,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAWrH,OAAO,4BAA4B,CAAC;AAYpC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,6BAA6B,yIAwPzC,CAAC"}