@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,225 @@
1
+ 'use client';
2
+
3
+ import { cn } from "../../../lib/utils.js";
4
+ import { Popover, PopoverPopup, PopoverPortal, PopoverPositioner, PopoverTrigger } from "../../../ui/Popover/index.js";
5
+ import { Separator } from "../../../ui/Separator/index.js";
6
+ import { SettingsIcon } from "../../../icons/lucide-animated/settings.js";
7
+ import "../../../icons/lucide-animated/index.js";
8
+ import { useTerminalSettings } from "../hooks/useTerminalSettings.js";
9
+ import { TerminalThemeSelector } from "./TerminalThemeSelector.js";
10
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
+
12
+ //#region src/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.tsx
13
+ /**
14
+ * TerminalSettingsPopover Component.
15
+ *
16
+ * Gear icon popover for global terminal settings:
17
+ * renderer (xterm/restty), theme (458 built-in), PTY backend,
18
+ * and font size. Reads and writes via useTerminalSettings hook.
19
+ *
20
+ * @module components/devenv/terminal/panel/TerminalSettingsPopover
21
+ */
22
+ /**
23
+ * Action button base styles for the trigger icon.
24
+ */
25
+ const triggerBtnStyles = "h-8 w-8 rounded-md transition-all hover:bg-muted/20 active:bg-muted/30 flex items-center justify-center text-muted-foreground hover:text-foreground flex-shrink-0";
26
+ /**
27
+ * Segmented control button styles.
28
+ */
29
+ const segmentedBase = "flex items-center gap-1.5 px-2.5 py-1 rounded-md text-xs font-medium transition-all";
30
+ const segmentedInactive = "text-muted-foreground hover:text-foreground hover:bg-white/5 hover:shadow-[inset_0_1px_0_0_rgba(255,255,255,0.1)]";
31
+ const segmentedActive = "bg-primary/20 text-primary border border-primary/30 shadow-[0_0_8px_hsla(330,85%,43%,0.15)] hover:shadow-[0_0_12px_hsla(330,85%,43%,0.25)]";
32
+ /**
33
+ * Min/max font size bounds.
34
+ */
35
+ const MIN_FONT_SIZE = 10;
36
+ const MAX_FONT_SIZE = 24;
37
+ /**
38
+ * Small control button for font size +/-.
39
+ */
40
+ const fontBtnStyles = "h-7 w-7 rounded-md transition-all hover:bg-muted/20 active:bg-muted/30 flex items-center justify-center text-muted-foreground hover:text-foreground disabled:opacity-30 disabled:pointer-events-none";
41
+ /**
42
+ * TerminalSettingsPopover Component.
43
+ *
44
+ * Renders a settings gear icon that opens a popover with
45
+ * terminal configuration options. Reads settings from
46
+ * `useTerminalSettings` — no prop drilling needed.
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * // In action bar:
51
+ * <TerminalSettingsPopover />
52
+ * ```
53
+ */
54
+ function TerminalSettingsPopover() {
55
+ const { settings, setRenderer, setPtyBackend, setResttyThemeName, setFontSize, setCrtEffect, setDebugPanel, resetToDefaults } = useTerminalSettings();
56
+ return /* @__PURE__ */ jsxs(Popover, { children: [/* @__PURE__ */ jsx(PopoverTrigger, { children: /* @__PURE__ */ jsx("button", {
57
+ type: "button",
58
+ className: triggerBtnStyles,
59
+ title: "Terminal settings",
60
+ children: /* @__PURE__ */ jsx(SettingsIcon, { size: 16 })
61
+ }) }), /* @__PURE__ */ jsx(PopoverPortal, { children: /* @__PURE__ */ jsx(PopoverPositioner, {
62
+ align: "end",
63
+ sideOffset: 6,
64
+ children: /* @__PURE__ */ jsxs(PopoverPopup, {
65
+ className: "w-72 p-0 glass-subtle",
66
+ children: [
67
+ /* @__PURE__ */ jsxs("div", {
68
+ className: "flex items-center gap-2 px-4 py-3",
69
+ children: [/* @__PURE__ */ jsx(SettingsIcon, {
70
+ size: 14,
71
+ className: "text-muted-foreground"
72
+ }), /* @__PURE__ */ jsx("span", {
73
+ className: "text-sm font-medium text-foreground",
74
+ children: "Terminal Settings"
75
+ })]
76
+ }),
77
+ /* @__PURE__ */ jsx(Separator, { className: "bg-border/30" }),
78
+ /* @__PURE__ */ jsxs("div", {
79
+ className: "px-4 py-3 space-y-2",
80
+ children: [/* @__PURE__ */ jsx("label", {
81
+ className: "text-[10px] font-mono text-muted-foreground uppercase tracking-wider",
82
+ children: "Renderer"
83
+ }), /* @__PURE__ */ jsxs("div", {
84
+ className: "flex items-center gap-1 bg-muted/10 rounded-lg p-0.5",
85
+ children: [/* @__PURE__ */ jsx("button", {
86
+ type: "button",
87
+ onClick: () => setRenderer("xterm"),
88
+ className: cn(segmentedBase, settings.renderer === "xterm" ? segmentedActive : segmentedInactive, "flex-1 justify-center"),
89
+ children: "xterm"
90
+ }), /* @__PURE__ */ jsx("button", {
91
+ type: "button",
92
+ onClick: () => setRenderer("restty"),
93
+ className: cn(segmentedBase, settings.renderer === "restty" ? segmentedActive : segmentedInactive, "flex-1 justify-center"),
94
+ children: "restty"
95
+ })]
96
+ })]
97
+ }),
98
+ settings.renderer === "restty" && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Separator, { className: "bg-border/30" }), /* @__PURE__ */ jsxs("div", {
99
+ className: "px-4 py-3 space-y-2",
100
+ children: [/* @__PURE__ */ jsx("label", {
101
+ className: "text-[10px] font-mono text-muted-foreground uppercase tracking-wider",
102
+ children: "Theme"
103
+ }), /* @__PURE__ */ jsx(TerminalThemeSelector, {
104
+ currentTheme: settings.resttyThemeName,
105
+ onThemeChange: setResttyThemeName
106
+ })]
107
+ })] }),
108
+ /* @__PURE__ */ jsx(Separator, { className: "bg-border/30" }),
109
+ /* @__PURE__ */ jsxs("div", {
110
+ className: "px-4 py-3 space-y-2",
111
+ children: [/* @__PURE__ */ jsx("label", {
112
+ className: "text-[10px] font-mono text-muted-foreground uppercase tracking-wider",
113
+ children: "PTY Backend"
114
+ }), /* @__PURE__ */ jsxs("div", {
115
+ className: "flex items-center gap-1 bg-muted/10 rounded-lg p-0.5",
116
+ children: [/* @__PURE__ */ jsx("button", {
117
+ type: "button",
118
+ onClick: () => setPtyBackend("nodepty"),
119
+ className: cn(segmentedBase, settings.ptyBackend === "nodepty" ? segmentedActive : segmentedInactive, "flex-1 justify-center"),
120
+ children: "nodepty"
121
+ }), /* @__PURE__ */ jsx("button", {
122
+ type: "button",
123
+ onClick: () => setPtyBackend("webcontainer"),
124
+ className: cn(segmentedBase, settings.ptyBackend === "webcontainer" ? segmentedActive : segmentedInactive, "flex-1 justify-center"),
125
+ children: "webcontainer"
126
+ })]
127
+ })]
128
+ }),
129
+ /* @__PURE__ */ jsx(Separator, { className: "bg-border/30" }),
130
+ /* @__PURE__ */ jsxs("div", {
131
+ className: "px-4 py-3 space-y-2",
132
+ children: [/* @__PURE__ */ jsx("label", {
133
+ className: "text-[10px] font-mono text-muted-foreground uppercase tracking-wider",
134
+ children: "Font Size"
135
+ }), /* @__PURE__ */ jsxs("div", {
136
+ className: "flex items-center gap-2",
137
+ children: [
138
+ /* @__PURE__ */ jsx("button", {
139
+ type: "button",
140
+ onClick: () => setFontSize(settings.fontSize - 1),
141
+ className: fontBtnStyles,
142
+ disabled: settings.fontSize <= MIN_FONT_SIZE,
143
+ title: "Decrease font size",
144
+ children: /* @__PURE__ */ jsx("span", {
145
+ className: "text-sm font-bold",
146
+ children: "−"
147
+ })
148
+ }),
149
+ /* @__PURE__ */ jsx("span", {
150
+ className: "text-sm font-mono text-foreground w-8 text-center",
151
+ children: settings.fontSize
152
+ }),
153
+ /* @__PURE__ */ jsx("button", {
154
+ type: "button",
155
+ onClick: () => setFontSize(settings.fontSize + 1),
156
+ className: fontBtnStyles,
157
+ disabled: settings.fontSize >= MAX_FONT_SIZE,
158
+ title: "Increase font size",
159
+ children: /* @__PURE__ */ jsx("span", {
160
+ className: "text-sm font-bold",
161
+ children: "+"
162
+ })
163
+ }),
164
+ /* @__PURE__ */ jsx("span", {
165
+ className: "text-[10px] font-mono text-muted-foreground/50 ml-auto",
166
+ children: "px"
167
+ })
168
+ ]
169
+ })]
170
+ }),
171
+ /* @__PURE__ */ jsx(Separator, { className: "bg-border/30" }),
172
+ /* @__PURE__ */ jsxs("div", {
173
+ className: "px-4 py-3 space-y-2",
174
+ children: [/* @__PURE__ */ jsx("label", {
175
+ className: "text-[10px] font-mono text-muted-foreground uppercase tracking-wider",
176
+ children: "CRT Effect"
177
+ }), /* @__PURE__ */ jsxs("div", {
178
+ className: "flex items-center justify-between",
179
+ children: [/* @__PURE__ */ jsx("span", {
180
+ className: "text-xs text-muted-foreground",
181
+ children: "Scanlines, bloom & vignette"
182
+ }), /* @__PURE__ */ jsx("button", {
183
+ type: "button",
184
+ onClick: () => setCrtEffect(!settings.crtEffect),
185
+ className: cn("relative w-9 h-5 rounded-full transition-colors", settings.crtEffect ? "bg-primary/60 shadow-[0_0_8px_hsla(330,85%,43%,0.3)]" : "bg-muted/30"),
186
+ children: /* @__PURE__ */ jsx("span", { className: cn("absolute top-0.5 h-4 w-4 rounded-full bg-foreground transition-all", settings.crtEffect ? "left-[18px]" : "left-0.5") })
187
+ })]
188
+ })]
189
+ }),
190
+ /* @__PURE__ */ jsx(Separator, { className: "bg-border/30" }),
191
+ /* @__PURE__ */ jsxs("div", {
192
+ className: "px-4 py-3 space-y-2",
193
+ children: [/* @__PURE__ */ jsx("label", {
194
+ className: "text-[10px] font-mono text-muted-foreground uppercase tracking-wider",
195
+ children: "Debug Panel"
196
+ }), /* @__PURE__ */ jsxs("div", {
197
+ className: "flex items-center justify-between",
198
+ children: [/* @__PURE__ */ jsx("span", {
199
+ className: "text-xs text-muted-foreground",
200
+ children: "GPU, FPS, grid & connection info"
201
+ }), /* @__PURE__ */ jsx("button", {
202
+ type: "button",
203
+ onClick: () => setDebugPanel(!settings.debugPanel),
204
+ className: cn("relative w-9 h-5 rounded-full transition-colors", settings.debugPanel ? "bg-primary/60 shadow-[0_0_8px_hsla(330,85%,43%,0.3)]" : "bg-muted/30"),
205
+ children: /* @__PURE__ */ jsx("span", { className: cn("absolute top-0.5 h-4 w-4 rounded-full bg-foreground transition-all", settings.debugPanel ? "left-[18px]" : "left-0.5") })
206
+ })]
207
+ })]
208
+ }),
209
+ /* @__PURE__ */ jsx(Separator, { className: "bg-border/30" }),
210
+ /* @__PURE__ */ jsx("div", {
211
+ className: "px-4 py-3",
212
+ children: /* @__PURE__ */ jsx("button", {
213
+ type: "button",
214
+ onClick: resetToDefaults,
215
+ className: "w-full h-8 rounded-md text-xs font-mono text-muted-foreground hover:text-foreground hover:bg-muted/20 transition-colors",
216
+ children: "Reset to Defaults"
217
+ })
218
+ })
219
+ ]
220
+ })
221
+ }) })] });
222
+ }
223
+
224
+ //#endregion
225
+ export { TerminalSettingsPopover };
@@ -0,0 +1,35 @@
1
+ /**
2
+ * TerminalThemeSelector Component.
3
+ *
4
+ * Searchable dropdown for restty's 458 built-in terminal themes.
5
+ * Uses Popover for the dropdown UI with glassmorphism styling
6
+ * matching the existing TerminalFilterDropdown pattern.
7
+ *
8
+ * @module components/devenv/terminal/panel/TerminalThemeSelector
9
+ */
10
+ /**
11
+ * Props for the TerminalThemeSelector component.
12
+ */
13
+ export interface ITerminalThemeSelectorProps {
14
+ /** Currently active theme name */
15
+ currentTheme: string;
16
+ /** Callback when user selects a new theme */
17
+ onThemeChange: (themeName: string) => void;
18
+ }
19
+ /**
20
+ * TerminalThemeSelector Component.
21
+ *
22
+ * Searchable dropdown for restty's built-in theme catalog.
23
+ * Favorites are pinned to the top, followed by alphabetically
24
+ * sorted themes. Search filters by case-insensitive substring.
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * <TerminalThemeSelector
29
+ * currentTheme="Synthwave Alpha"
30
+ * onThemeChange={(name) => setResttyThemeName(name)}
31
+ * />
32
+ * ```
33
+ */
34
+ export declare function TerminalThemeSelector({ currentTheme, onThemeChange }: ITerminalThemeSelectorProps): import("react/jsx-runtime").JSX.Element;
35
+ //# sourceMappingURL=TerminalThemeSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalThemeSelector.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/panel/TerminalThemeSelector.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAsBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,2BAA2B,2CAyJjG"}
@@ -0,0 +1,187 @@
1
+ 'use client';
2
+
3
+ import { cn } from "../../../lib/utils.js";
4
+ import { Popover, PopoverPopup, PopoverPortal, PopoverPositioner, PopoverTrigger } from "../../../ui/Popover/index.js";
5
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+
8
+ //#region src/react-ui/blocks/Terminal/panel/TerminalThemeSelector.tsx
9
+ /**
10
+ * TerminalThemeSelector Component.
11
+ *
12
+ * Searchable dropdown for restty's 458 built-in terminal themes.
13
+ * Uses Popover for the dropdown UI with glassmorphism styling
14
+ * matching the existing TerminalFilterDropdown pattern.
15
+ *
16
+ * @module components/devenv/terminal/panel/TerminalThemeSelector
17
+ */
18
+ /**
19
+ * Favorite themes displayed at the top of the list.
20
+ */
21
+ const FAVORITE_THEMES = [
22
+ "Synthwave Alpha",
23
+ "Synthwave",
24
+ "Dracula",
25
+ "Nord",
26
+ "One Dark",
27
+ "Tokyo Night",
28
+ "Catppuccin Mocha",
29
+ "Gruvbox Dark"
30
+ ];
31
+ /**
32
+ * Action button base styles (matches TerminalInteractivePanel pattern).
33
+ */
34
+ const triggerStyles = "h-8 px-2.5 rounded-md transition-all hover:bg-muted/20 active:bg-muted/30 flex items-center justify-center gap-1.5 text-xs font-mono text-muted-foreground hover:text-foreground flex-shrink-0 border border-border/30";
35
+ /**
36
+ * TerminalThemeSelector Component.
37
+ *
38
+ * Searchable dropdown for restty's built-in theme catalog.
39
+ * Favorites are pinned to the top, followed by alphabetically
40
+ * sorted themes. Search filters by case-insensitive substring.
41
+ *
42
+ * @example
43
+ * ```tsx
44
+ * <TerminalThemeSelector
45
+ * currentTheme="Synthwave Alpha"
46
+ * onThemeChange={(name) => setResttyThemeName(name)}
47
+ * />
48
+ * ```
49
+ */
50
+ function TerminalThemeSelector({ currentTheme, onThemeChange }) {
51
+ const [open, setOpen] = useState(false);
52
+ const [search, setSearch] = useState("");
53
+ const [themeNames, setThemeNames] = useState([]);
54
+ const searchInputRef = useRef(null);
55
+ /**
56
+ * Load the theme catalog from restty on first open.
57
+ */
58
+ useEffect(() => {
59
+ if (!open || themeNames.length > 0) return;
60
+ import("restty").then(({ listBuiltinThemeNames }) => {
61
+ const names = listBuiltinThemeNames();
62
+ if (Array.isArray(names)) setThemeNames(names.sort((a, b) => a.localeCompare(b)));
63
+ }).catch(() => {});
64
+ }, [open, themeNames.length]);
65
+ /**
66
+ * Focus search input on open.
67
+ */
68
+ useEffect(() => {
69
+ if (open) requestAnimationFrame(() => searchInputRef.current?.focus());
70
+ else setSearch("");
71
+ }, [open]);
72
+ /**
73
+ * Filter and group themes based on search query.
74
+ */
75
+ const { favorites, others } = useMemo(() => {
76
+ const query = search.toLowerCase().trim();
77
+ const allNames = themeNames.length > 0 ? themeNames : FAVORITE_THEMES;
78
+ const favSet = new Set(FAVORITE_THEMES);
79
+ return {
80
+ favorites: FAVORITE_THEMES.filter((name) => !query || name.toLowerCase().includes(query)),
81
+ others: allNames.filter((name) => !favSet.has(name) && (!query || name.toLowerCase().includes(query)))
82
+ };
83
+ }, [search, themeNames]);
84
+ /**
85
+ * Handle theme selection.
86
+ */
87
+ const handleSelect = useCallback((themeName) => {
88
+ onThemeChange(themeName);
89
+ setOpen(false);
90
+ }, [onThemeChange]);
91
+ return /* @__PURE__ */ jsxs(Popover, {
92
+ open,
93
+ onOpenChange: setOpen,
94
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, { children: /* @__PURE__ */ jsxs("button", {
95
+ type: "button",
96
+ className: triggerStyles,
97
+ title: "Select terminal theme",
98
+ children: [/* @__PURE__ */ jsx("span", {
99
+ className: "truncate max-w-[140px]",
100
+ children: currentTheme
101
+ }), /* @__PURE__ */ jsx("svg", {
102
+ className: cn("w-3 h-3 transition-transform flex-shrink-0", open && "rotate-180"),
103
+ viewBox: "0 0 12 12",
104
+ fill: "none",
105
+ stroke: "currentColor",
106
+ strokeWidth: "2",
107
+ children: /* @__PURE__ */ jsx("path", { d: "M3 5l3 3 3-3" })
108
+ })]
109
+ }) }), /* @__PURE__ */ jsx(PopoverPortal, { children: /* @__PURE__ */ jsx(PopoverPositioner, {
110
+ align: "start",
111
+ sideOffset: 6,
112
+ children: /* @__PURE__ */ jsxs(PopoverPopup, {
113
+ className: "w-64 p-0 glass-subtle rounded-lg",
114
+ children: [/* @__PURE__ */ jsx("div", {
115
+ className: "p-2 border-b border-border/30",
116
+ children: /* @__PURE__ */ jsx("input", {
117
+ ref: searchInputRef,
118
+ type: "text",
119
+ value: search,
120
+ onChange: (e) => setSearch(e.target.value),
121
+ placeholder: "Search themes...",
122
+ className: "w-full h-8 px-2.5 rounded-md bg-muted/20 border border-border/30 text-xs font-mono text-foreground placeholder:text-muted-foreground/50 outline-none focus:border-primary/40 focus:ring-1 focus:ring-primary/20 transition-colors"
123
+ })
124
+ }), /* @__PURE__ */ jsxs("div", {
125
+ className: "max-h-[300px] overflow-y-auto py-1",
126
+ children: [
127
+ favorites.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
128
+ className: "px-3 py-1.5",
129
+ children: /* @__PURE__ */ jsx("span", {
130
+ className: "text-[10px] font-mono text-muted-foreground/60 uppercase tracking-wider",
131
+ children: "Favorites"
132
+ })
133
+ }), favorites.map((name) => /* @__PURE__ */ jsx(ThemeOption, {
134
+ name,
135
+ isActive: name === currentTheme,
136
+ onSelect: handleSelect
137
+ }, `fav-${name}`))] }),
138
+ others.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
139
+ favorites.length > 0 && /* @__PURE__ */ jsx("div", { className: "mx-2 my-1 h-px bg-border/20" }),
140
+ /* @__PURE__ */ jsx("div", {
141
+ className: "px-3 py-1.5",
142
+ children: /* @__PURE__ */ jsxs("span", {
143
+ className: "text-[10px] font-mono text-muted-foreground/60 uppercase tracking-wider",
144
+ children: [
145
+ "All Themes (",
146
+ others.length,
147
+ ")"
148
+ ]
149
+ })
150
+ }),
151
+ others.map((name) => /* @__PURE__ */ jsx(ThemeOption, {
152
+ name,
153
+ isActive: name === currentTheme,
154
+ onSelect: handleSelect
155
+ }, name))
156
+ ] }),
157
+ favorites.length === 0 && others.length === 0 && /* @__PURE__ */ jsx("div", {
158
+ className: "px-3 py-4 text-center",
159
+ children: /* @__PURE__ */ jsxs("span", {
160
+ className: "text-xs font-mono text-muted-foreground/50",
161
+ children: [
162
+ "No themes match \"",
163
+ search,
164
+ "\""
165
+ ]
166
+ })
167
+ })
168
+ ]
169
+ })]
170
+ })
171
+ }) })]
172
+ });
173
+ }
174
+ /**
175
+ * Individual theme option in the dropdown list.
176
+ */
177
+ function ThemeOption({ name, isActive, onSelect }) {
178
+ return /* @__PURE__ */ jsxs("button", {
179
+ type: "button",
180
+ onClick: () => onSelect(name),
181
+ className: cn("w-full text-left px-3 py-1.5 text-xs font-mono transition-colors", "hover:bg-muted/20", isActive ? "text-primary bg-primary/10" : "text-foreground/80"),
182
+ children: [isActive && /* @__PURE__ */ jsx("span", { className: "inline-block w-1.5 h-1.5 rounded-full bg-primary mr-2 align-middle" }), name]
183
+ });
184
+ }
185
+
186
+ //#endregion
187
+ export { TerminalThemeSelector };
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Terminal Panel Module.
3
+ *
4
+ * Complete terminal panel with session tabs, header, filter tabs,
5
+ * action bar, display, and footer. Ghostty-inspired design with
6
+ * glassmorphism effects and premium visual details.
7
+ *
8
+ * @module components/devenv/terminal/panel
9
+ */
10
+ export { TerminalLogsPanel } from './TerminalLogsPanel';
11
+ export { TerminalInteractivePanel } from './TerminalInteractivePanel';
12
+ export { TerminalInteractivePanelRestty } from './TerminalInteractivePanelRestty';
13
+ export { TerminalPanelChrome } from './TerminalPanelChrome';
14
+ export { TerminalSettingsPopover } from './TerminalSettingsPopover';
15
+ export { TerminalThemeSelector } from './TerminalThemeSelector';
16
+ export { TerminalDebugPanel, type ITerminalDebugPanelProps } from './TerminalDebugPanel';
17
+ export { NOISE_TEXTURE_SVG, terminalScrollStyles } from './TerminalPanelChrome';
18
+ export { TerminalPanelHeader } from './TerminalPanelHeader';
19
+ export { TerminalPanelFooter } from './TerminalPanelFooter';
20
+ export { TerminalSessionTabs } from './TerminalSessionTabs';
21
+ export { TerminalFilterTabs } from './TerminalFilterTabs';
22
+ export { TerminalFilterDropdown } from './TerminalFilterDropdown';
23
+ export { TerminalSessionControl } from './TerminalSessionControl';
24
+ export { LogLinesViewer } from './LogLinesViewer';
25
+ export type { ITerminalPanelChromeProps } from './TerminalPanelChrome.types';
26
+ export type { ITerminalInteractivePanelProps, ITerminalInteractivePanelRef, } from './TerminalInteractivePanel.types';
27
+ export type { ITerminalThemeSelectorProps } from './TerminalThemeSelector';
28
+ export type { ITerminalLogsPanelProps, ITerminalLogsPanelRef, ITerminalPanelHeaderProps, ITerminalPanelToolbarProps, ITerminalPanelFooterProps, ITerminalSession, ITerminalSessionTabsProps, ITerminalFilterTabsProps, ITerminalFilterDropdownProps, ITerminalSessionControlProps, TLogLevelFilter, ILevelFilterButton, TTerminalAction, TLogLevel, } from './TerminalLogsPanel.types';
29
+ export type { ILogLinesViewerProps, } from './LogLinesViewer';
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/panel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGzF,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,YAAY,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAG7E,YAAY,EACV,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,kCAAkC,CAAC;AAG1C,YAAY,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAG3E,YAAY,EACV,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,SAAS,GACV,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * TerminalFilterDropdown Styles.
3
+ *
4
+ * Uses CSS Anchor Positioning API for dropdown placement.
5
+ * Button acts as anchor, dropdown is positioned relative to it
6
+ * with automatic flip behavior at viewport edges.
7
+ *
8
+ * @module components/devenv/terminal/panel/terminal-filter-dropdown/styles
9
+ */
10
+
11
+ /* Trigger button - acts as CSS anchor */
12
+ .triggerButton {
13
+ anchor-name: --filter-dropdown-anchor;
14
+ }
15
+
16
+ /* Dropdown menu - anchored to trigger button */
17
+ .dropdownMenu {
18
+ position-anchor: --filter-dropdown-anchor;
19
+ position: fixed;
20
+
21
+ /* Position below and left-aligned */
22
+ left: anchor(left);
23
+ top: anchor(bottom);
24
+ margin-top: 4px;
25
+
26
+ /* Flip to above if no room below */
27
+ position-try-fallbacks: flip-block, flip-inline;
28
+
29
+ min-width: 180px;
30
+ z-index: 50;
31
+
32
+ /* Hidden by default */
33
+ display: none;
34
+ opacity: 0;
35
+ transform: translateY(-4px);
36
+ transition: opacity 0.15s ease-out, transform 0.15s ease-out;
37
+ pointer-events: none;
38
+ }
39
+
40
+ .dropdownMenu[data-open="true"] {
41
+ display: block;
42
+ opacity: 1;
43
+ transform: translateY(0);
44
+ pointer-events: auto;
45
+ }
46
+
47
+ /* Fallback for browsers without CSS Anchor Positioning */
48
+ @supports not (anchor-name: none) {
49
+ .dropdownMenu {
50
+ position: absolute;
51
+ left: 0;
52
+ top: calc(100% + 4px);
53
+ z-index: 50;
54
+ }
55
+
56
+ .dropdownMenu[data-open="true"] {
57
+ display: block;
58
+ }
59
+ }
60
+
@@ -0,0 +1,5 @@
1
+ //#region src/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.css
2
+ var terminal_filter_dropdown_module_default = {};
3
+
4
+ //#endregion
5
+ export { terminal_filter_dropdown_module_default as default };
@@ -0,0 +1,60 @@
1
+ /**
2
+ * TerminalSessionTabs Dropdown Styles.
3
+ *
4
+ * Uses CSS Anchor Positioning API for the "add container" dropdown.
5
+ * The + button acts as anchor, dropdown is positioned below it
6
+ * with automatic flip behavior at viewport edges.
7
+ *
8
+ * @module components/devenv/terminal/panel/terminal-session-tabs/styles
9
+ */
10
+
11
+ /* + button - acts as CSS anchor */
12
+ .addButton {
13
+ anchor-name: --session-tabs-add-anchor;
14
+ }
15
+
16
+ /* Container dropdown - anchored to + button */
17
+ .containerDropdown {
18
+ position-anchor: --session-tabs-add-anchor;
19
+ position: fixed;
20
+
21
+ /* Position below and left-aligned */
22
+ left: anchor(left);
23
+ top: anchor(bottom);
24
+ margin-top: 4px;
25
+
26
+ /* Flip to above if no room below */
27
+ position-try-fallbacks: flip-block, flip-inline;
28
+
29
+ min-width: 200px;
30
+ z-index: 50;
31
+
32
+ /* Hidden by default */
33
+ display: none;
34
+ opacity: 0;
35
+ transform: translateY(-4px);
36
+ transition: opacity 0.15s ease-out, transform 0.15s ease-out;
37
+ pointer-events: none;
38
+ }
39
+
40
+ .containerDropdown[data-open="true"] {
41
+ display: block;
42
+ opacity: 1;
43
+ transform: translateY(0);
44
+ pointer-events: auto;
45
+ }
46
+
47
+ /* Fallback for browsers without CSS Anchor Positioning */
48
+ @supports not (anchor-name: none) {
49
+ .containerDropdown {
50
+ position: absolute;
51
+ left: 0;
52
+ top: calc(100% + 4px);
53
+ z-index: 50;
54
+ }
55
+
56
+ .containerDropdown[data-open="true"] {
57
+ display: block;
58
+ }
59
+ }
60
+
@@ -0,0 +1,5 @@
1
+ //#region src/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.css
2
+ var terminal_session_tabs_module_default = {};
3
+
4
+ //#endregion
5
+ export { terminal_session_tabs_module_default as default };