@termaxjs/web-ui-components 0.1.1

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 (391) hide show
  1. package/LICENSE +201 -0
  2. package/dist/ai/AgentStatusPill.d.ts +13 -0
  3. package/dist/ai/AgentStatusPill.d.ts.map +1 -0
  4. package/dist/ai/AgentStatusPill.js +28 -0
  5. package/dist/ai/AgentStatusPill.js.map +1 -0
  6. package/dist/ai/AiToolApproval.d.ts +12 -0
  7. package/dist/ai/AiToolApproval.d.ts.map +1 -0
  8. package/dist/ai/AiToolApproval.js +63 -0
  9. package/dist/ai/AiToolApproval.js.map +1 -0
  10. package/dist/ai/Chip.d.ts +17 -0
  11. package/dist/ai/Chip.d.ts.map +1 -0
  12. package/dist/ai/Chip.js +39 -0
  13. package/dist/ai/Chip.js.map +1 -0
  14. package/dist/ai/ChipsRow.d.ts +35 -0
  15. package/dist/ai/ChipsRow.d.ts.map +1 -0
  16. package/dist/ai/ChipsRow.js +32 -0
  17. package/dist/ai/ChipsRow.js.map +1 -0
  18. package/dist/ai/TodoStrip.d.ts +11 -0
  19. package/dist/ai/TodoStrip.d.ts.map +1 -0
  20. package/dist/ai/TodoStrip.js +27 -0
  21. package/dist/ai/TodoStrip.js.map +1 -0
  22. package/dist/ai/index.d.ts +6 -0
  23. package/dist/ai/index.d.ts.map +1 -0
  24. package/dist/ai/index.js +6 -0
  25. package/dist/ai/index.js.map +1 -0
  26. package/dist/command-palette/CommandPaletteDialog.d.ts +19 -0
  27. package/dist/command-palette/CommandPaletteDialog.d.ts.map +1 -0
  28. package/dist/command-palette/CommandPaletteDialog.js +23 -0
  29. package/dist/command-palette/CommandPaletteDialog.js.map +1 -0
  30. package/dist/command-palette/index.d.ts +2 -0
  31. package/dist/command-palette/index.d.ts.map +1 -0
  32. package/dist/command-palette/index.js +2 -0
  33. package/dist/command-palette/index.js.map +1 -0
  34. package/dist/explorer/ExplorerSearch.d.ts +35 -0
  35. package/dist/explorer/ExplorerSearch.d.ts.map +1 -0
  36. package/dist/explorer/ExplorerSearch.js +153 -0
  37. package/dist/explorer/ExplorerSearch.js.map +1 -0
  38. package/dist/explorer/FileTree.d.ts +65 -0
  39. package/dist/explorer/FileTree.d.ts.map +1 -0
  40. package/dist/explorer/FileTree.js +205 -0
  41. package/dist/explorer/FileTree.js.map +1 -0
  42. package/dist/explorer/InlineInput.d.ts +14 -0
  43. package/dist/explorer/InlineInput.d.ts.map +1 -0
  44. package/dist/explorer/InlineInput.js +77 -0
  45. package/dist/explorer/InlineInput.js.map +1 -0
  46. package/dist/explorer/TreeRow.d.ts +64 -0
  47. package/dist/explorer/TreeRow.d.ts.map +1 -0
  48. package/dist/explorer/TreeRow.js +100 -0
  49. package/dist/explorer/TreeRow.js.map +1 -0
  50. package/dist/explorer/constants.d.ts +12 -0
  51. package/dist/explorer/constants.d.ts.map +1 -0
  52. package/dist/explorer/constants.js +72 -0
  53. package/dist/explorer/constants.js.map +1 -0
  54. package/dist/explorer/contextActions.d.ts +5 -0
  55. package/dist/explorer/contextActions.d.ts.map +1 -0
  56. package/dist/explorer/contextActions.js +38 -0
  57. package/dist/explorer/contextActions.js.map +1 -0
  58. package/dist/explorer/iconMap.json +1 -0
  59. package/dist/explorer/iconResolver.d.ts +3 -0
  60. package/dist/explorer/iconResolver.d.ts.map +1 -0
  61. package/dist/explorer/iconResolver.js +98 -0
  62. package/dist/explorer/iconResolver.js.map +1 -0
  63. package/dist/explorer/index.d.ts +8 -0
  64. package/dist/explorer/index.d.ts.map +1 -0
  65. package/dist/explorer/index.js +8 -0
  66. package/dist/explorer/index.js.map +1 -0
  67. package/dist/explorer/menuItemClass.d.ts +3 -0
  68. package/dist/explorer/menuItemClass.d.ts.map +1 -0
  69. package/dist/explorer/menuItemClass.js +6 -0
  70. package/dist/explorer/menuItemClass.js.map +1 -0
  71. package/dist/explorer/types.d.ts +2 -0
  72. package/dist/explorer/types.d.ts.map +1 -0
  73. package/dist/explorer/types.js +2 -0
  74. package/dist/explorer/types.js.map +1 -0
  75. package/dist/index.d.ts +11 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +11 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/layout/PaneChip.d.ts +13 -0
  80. package/dist/layout/PaneChip.d.ts.map +1 -0
  81. package/dist/layout/PaneChip.js +19 -0
  82. package/dist/layout/PaneChip.js.map +1 -0
  83. package/dist/layout/TabBar.d.ts +36 -0
  84. package/dist/layout/TabBar.d.ts.map +1 -0
  85. package/dist/layout/TabBar.js +237 -0
  86. package/dist/layout/TabBar.js.map +1 -0
  87. package/dist/layout/TabItem.d.ts +19 -0
  88. package/dist/layout/TabItem.d.ts.map +1 -0
  89. package/dist/layout/TabItem.js +66 -0
  90. package/dist/layout/TabItem.js.map +1 -0
  91. package/dist/layout/index.d.ts +7 -0
  92. package/dist/layout/index.d.ts.map +1 -0
  93. package/dist/layout/index.js +7 -0
  94. package/dist/layout/index.js.map +1 -0
  95. package/dist/layout/leafState.d.ts +15 -0
  96. package/dist/layout/leafState.d.ts.map +1 -0
  97. package/dist/layout/leafState.js +70 -0
  98. package/dist/layout/leafState.js.map +1 -0
  99. package/dist/layout/resizable.d.ts +31 -0
  100. package/dist/layout/resizable.d.ts.map +1 -0
  101. package/dist/layout/resizable.js +16 -0
  102. package/dist/layout/resizable.js.map +1 -0
  103. package/dist/layout/tabLabel.d.ts +9 -0
  104. package/dist/layout/tabLabel.d.ts.map +1 -0
  105. package/dist/layout/tabLabel.js +31 -0
  106. package/dist/layout/tabLabel.js.map +1 -0
  107. package/dist/primitives/alert-dialog.d.ts +19 -0
  108. package/dist/primitives/alert-dialog.d.ts.map +1 -0
  109. package/dist/primitives/alert-dialog.js +42 -0
  110. package/dist/primitives/alert-dialog.js.map +1 -0
  111. package/dist/primitives/alert.d.ts +11 -0
  112. package/dist/primitives/alert.d.ts.map +1 -0
  113. package/dist/primitives/alert.js +28 -0
  114. package/dist/primitives/alert.js.map +1 -0
  115. package/dist/primitives/badge.d.ts +10 -0
  116. package/dist/primitives/badge.d.ts.map +1 -0
  117. package/dist/primitives/badge.js +25 -0
  118. package/dist/primitives/badge.js.map +1 -0
  119. package/dist/primitives/breadcrumb.d.ts +12 -0
  120. package/dist/primitives/breadcrumb.d.ts.map +1 -0
  121. package/dist/primitives/breadcrumb.js +29 -0
  122. package/dist/primitives/breadcrumb.js.map +1 -0
  123. package/dist/primitives/button-group.d.ts +12 -0
  124. package/dist/primitives/button-group.d.ts.map +1 -0
  125. package/dist/primitives/button-group.js +28 -0
  126. package/dist/primitives/button-group.js.map +1 -0
  127. package/dist/primitives/button.d.ts +11 -0
  128. package/dist/primitives/button.d.ts.map +1 -0
  129. package/dist/primitives/button.js +36 -0
  130. package/dist/primitives/button.js.map +1 -0
  131. package/dist/primitives/card.d.ts +12 -0
  132. package/dist/primitives/card.d.ts.map +1 -0
  133. package/dist/primitives/card.js +25 -0
  134. package/dist/primitives/card.js.map +1 -0
  135. package/dist/primitives/checkbox.d.ts +5 -0
  136. package/dist/primitives/checkbox.d.ts.map +1 -0
  137. package/dist/primitives/checkbox.js +10 -0
  138. package/dist/primitives/checkbox.js.map +1 -0
  139. package/dist/primitives/collapsible.d.ts +6 -0
  140. package/dist/primitives/collapsible.d.ts.map +1 -0
  141. package/dist/primitives/collapsible.js +13 -0
  142. package/dist/primitives/collapsible.js.map +1 -0
  143. package/dist/primitives/command.d.ts +36 -0
  144. package/dist/primitives/command.d.ts.map +1 -0
  145. package/dist/primitives/command.js +103 -0
  146. package/dist/primitives/command.js.map +1 -0
  147. package/dist/primitives/context-menu.d.ts +41 -0
  148. package/dist/primitives/context-menu.d.ts.map +1 -0
  149. package/dist/primitives/context-menu.js +83 -0
  150. package/dist/primitives/context-menu.js.map +1 -0
  151. package/dist/primitives/dialog.d.ts +18 -0
  152. package/dist/primitives/dialog.d.ts.map +1 -0
  153. package/dist/primitives/dialog.js +38 -0
  154. package/dist/primitives/dialog.js.map +1 -0
  155. package/dist/primitives/dropdown-menu.d.ts +30 -0
  156. package/dist/primitives/dropdown-menu.d.ts.map +1 -0
  157. package/dist/primitives/dropdown-menu.js +52 -0
  158. package/dist/primitives/dropdown-menu.js.map +1 -0
  159. package/dist/primitives/empty.d.ts +12 -0
  160. package/dist/primitives/empty.d.ts.map +1 -0
  161. package/dist/primitives/empty.js +34 -0
  162. package/dist/primitives/empty.js.map +1 -0
  163. package/dist/primitives/hover-card.d.ts +7 -0
  164. package/dist/primitives/hover-card.d.ts.map +1 -0
  165. package/dist/primitives/hover-card.js +14 -0
  166. package/dist/primitives/hover-card.js.map +1 -0
  167. package/dist/primitives/index.d.ts +40 -0
  168. package/dist/primitives/index.d.ts.map +1 -0
  169. package/dist/primitives/index.js +40 -0
  170. package/dist/primitives/index.js.map +1 -0
  171. package/dist/primitives/input-group.d.ts +17 -0
  172. package/dist/primitives/input-group.d.ts.map +1 -0
  173. package/dist/primitives/input-group.js +59 -0
  174. package/dist/primitives/input-group.js.map +1 -0
  175. package/dist/primitives/input.d.ts +4 -0
  176. package/dist/primitives/input.d.ts.map +1 -0
  177. package/dist/primitives/input.js +7 -0
  178. package/dist/primitives/input.js.map +1 -0
  179. package/dist/primitives/item.d.ts +24 -0
  180. package/dist/primitives/item.d.ts.map +1 -0
  181. package/dist/primitives/item.js +68 -0
  182. package/dist/primitives/item.js.map +1 -0
  183. package/dist/primitives/kbd.d.ts +4 -0
  184. package/dist/primitives/kbd.d.ts.map +1 -0
  185. package/dist/primitives/kbd.js +10 -0
  186. package/dist/primitives/kbd.js.map +1 -0
  187. package/dist/primitives/label.d.ts +5 -0
  188. package/dist/primitives/label.d.ts.map +1 -0
  189. package/dist/primitives/label.js +8 -0
  190. package/dist/primitives/label.js.map +1 -0
  191. package/dist/primitives/menubar.d.ts +31 -0
  192. package/dist/primitives/menubar.d.ts.map +1 -0
  193. package/dist/primitives/menubar.js +55 -0
  194. package/dist/primitives/menubar.js.map +1 -0
  195. package/dist/primitives/popover.d.ts +11 -0
  196. package/dist/primitives/popover.d.ts.map +1 -0
  197. package/dist/primitives/popover.js +27 -0
  198. package/dist/primitives/popover.js.map +1 -0
  199. package/dist/primitives/progress.d.ts +5 -0
  200. package/dist/primitives/progress.d.ts.map +1 -0
  201. package/dist/primitives/progress.js +8 -0
  202. package/dist/primitives/progress.js.map +1 -0
  203. package/dist/primitives/radio-group.d.ts +6 -0
  204. package/dist/primitives/radio-group.d.ts.map +1 -0
  205. package/dist/primitives/radio-group.js +11 -0
  206. package/dist/primitives/radio-group.js.map +1 -0
  207. package/dist/primitives/resizable.d.ts +31 -0
  208. package/dist/primitives/resizable.d.ts.map +1 -0
  209. package/dist/primitives/resizable.js +16 -0
  210. package/dist/primitives/resizable.js.map +1 -0
  211. package/dist/primitives/scroll-area.d.ts +6 -0
  212. package/dist/primitives/scroll-area.d.ts.map +1 -0
  213. package/dist/primitives/scroll-area.js +11 -0
  214. package/dist/primitives/scroll-area.js.map +1 -0
  215. package/dist/primitives/select.d.ts +16 -0
  216. package/dist/primitives/select.d.ts.map +1 -0
  217. package/dist/primitives/select.js +37 -0
  218. package/dist/primitives/select.js.map +1 -0
  219. package/dist/primitives/separator.d.ts +5 -0
  220. package/dist/primitives/separator.d.ts.map +1 -0
  221. package/dist/primitives/separator.js +8 -0
  222. package/dist/primitives/separator.js.map +1 -0
  223. package/dist/primitives/sheet.d.ts +15 -0
  224. package/dist/primitives/sheet.d.ts.map +1 -0
  225. package/dist/primitives/sheet.js +38 -0
  226. package/dist/primitives/sheet.js.map +1 -0
  227. package/dist/primitives/skeleton.d.ts +3 -0
  228. package/dist/primitives/skeleton.d.ts.map +1 -0
  229. package/dist/primitives/skeleton.js +7 -0
  230. package/dist/primitives/skeleton.js.map +1 -0
  231. package/dist/primitives/slider.d.ts +5 -0
  232. package/dist/primitives/slider.d.ts.map +1 -0
  233. package/dist/primitives/slider.js +14 -0
  234. package/dist/primitives/slider.js.map +1 -0
  235. package/dist/primitives/sonner.d.ts +5 -0
  236. package/dist/primitives/sonner.d.ts.map +1 -0
  237. package/dist/primitives/sonner.js +12 -0
  238. package/dist/primitives/sonner.js.map +1 -0
  239. package/dist/primitives/spinner.d.ts +3 -0
  240. package/dist/primitives/spinner.d.ts.map +1 -0
  241. package/dist/primitives/spinner.js +11 -0
  242. package/dist/primitives/spinner.js.map +1 -0
  243. package/dist/primitives/switch.d.ts +7 -0
  244. package/dist/primitives/switch.d.ts.map +1 -0
  245. package/dist/primitives/switch.js +18 -0
  246. package/dist/primitives/switch.js.map +1 -0
  247. package/dist/primitives/tabs.d.ts +12 -0
  248. package/dist/primitives/tabs.d.ts.map +1 -0
  249. package/dist/primitives/tabs.js +29 -0
  250. package/dist/primitives/tabs.js.map +1 -0
  251. package/dist/primitives/textarea.d.ts +4 -0
  252. package/dist/primitives/textarea.d.ts.map +1 -0
  253. package/dist/primitives/textarea.js +7 -0
  254. package/dist/primitives/textarea.js.map +1 -0
  255. package/dist/primitives/toggle-group.d.ts +11 -0
  256. package/dist/primitives/toggle-group.d.ts.map +1 -0
  257. package/dist/primitives/toggle-group.js +24 -0
  258. package/dist/primitives/toggle-group.js.map +1 -0
  259. package/dist/primitives/toggle.d.ts +10 -0
  260. package/dist/primitives/toggle.d.ts.map +1 -0
  261. package/dist/primitives/toggle.js +26 -0
  262. package/dist/primitives/toggle.js.map +1 -0
  263. package/dist/primitives/tooltip.d.ts +8 -0
  264. package/dist/primitives/tooltip.d.ts.map +1 -0
  265. package/dist/primitives/tooltip.js +18 -0
  266. package/dist/primitives/tooltip.js.map +1 -0
  267. package/dist/settings/SettingGroup.d.ts +8 -0
  268. package/dist/settings/SettingGroup.d.ts.map +1 -0
  269. package/dist/settings/SettingGroup.js +7 -0
  270. package/dist/settings/SettingGroup.js.map +1 -0
  271. package/dist/settings/SettingRow.d.ts +58 -0
  272. package/dist/settings/SettingRow.d.ts.map +1 -0
  273. package/dist/settings/SettingRow.js +54 -0
  274. package/dist/settings/SettingRow.js.map +1 -0
  275. package/dist/settings/SettingsFormBuilder.d.ts +11 -0
  276. package/dist/settings/SettingsFormBuilder.d.ts.map +1 -0
  277. package/dist/settings/SettingsFormBuilder.js +43 -0
  278. package/dist/settings/SettingsFormBuilder.js.map +1 -0
  279. package/dist/settings/index.d.ts +4 -0
  280. package/dist/settings/index.d.ts.map +1 -0
  281. package/dist/settings/index.js +4 -0
  282. package/dist/settings/index.js.map +1 -0
  283. package/dist/shell/HeaderBar.d.ts +10 -0
  284. package/dist/shell/HeaderBar.d.ts.map +1 -0
  285. package/dist/shell/HeaderBar.js +6 -0
  286. package/dist/shell/HeaderBar.js.map +1 -0
  287. package/dist/shell/StatusBar.d.ts +9 -0
  288. package/dist/shell/StatusBar.d.ts.map +1 -0
  289. package/dist/shell/StatusBar.js +6 -0
  290. package/dist/shell/StatusBar.js.map +1 -0
  291. package/dist/shell/index.d.ts +3 -0
  292. package/dist/shell/index.d.ts.map +1 -0
  293. package/dist/shell/index.js +3 -0
  294. package/dist/shell/index.js.map +1 -0
  295. package/dist/source-control/BranchSwitcher.d.ts +14 -0
  296. package/dist/source-control/BranchSwitcher.d.ts.map +1 -0
  297. package/dist/source-control/BranchSwitcher.js +10 -0
  298. package/dist/source-control/BranchSwitcher.js.map +1 -0
  299. package/dist/source-control/CommitRow.d.ts +15 -0
  300. package/dist/source-control/CommitRow.d.ts.map +1 -0
  301. package/dist/source-control/CommitRow.js +20 -0
  302. package/dist/source-control/CommitRow.js.map +1 -0
  303. package/dist/source-control/EntryRow.d.ts +25 -0
  304. package/dist/source-control/EntryRow.d.ts.map +1 -0
  305. package/dist/source-control/EntryRow.js +67 -0
  306. package/dist/source-control/EntryRow.js.map +1 -0
  307. package/dist/source-control/GraphRail.d.ts +14 -0
  308. package/dist/source-control/GraphRail.d.ts.map +1 -0
  309. package/dist/source-control/GraphRail.js +49 -0
  310. package/dist/source-control/GraphRail.js.map +1 -0
  311. package/dist/source-control/InlineHunkView.d.ts +22 -0
  312. package/dist/source-control/InlineHunkView.d.ts.map +1 -0
  313. package/dist/source-control/InlineHunkView.js +95 -0
  314. package/dist/source-control/InlineHunkView.js.map +1 -0
  315. package/dist/source-control/SourceControlActions.d.ts +15 -0
  316. package/dist/source-control/SourceControlActions.d.ts.map +1 -0
  317. package/dist/source-control/SourceControlActions.js +38 -0
  318. package/dist/source-control/SourceControlActions.js.map +1 -0
  319. package/dist/source-control/SourceControlPanel.d.ts +21 -0
  320. package/dist/source-control/SourceControlPanel.d.ts.map +1 -0
  321. package/dist/source-control/SourceControlPanel.js +300 -0
  322. package/dist/source-control/SourceControlPanel.js.map +1 -0
  323. package/dist/source-control/SourceControlStatusViews.d.ts +20 -0
  324. package/dist/source-control/SourceControlStatusViews.d.ts.map +1 -0
  325. package/dist/source-control/SourceControlStatusViews.js +18 -0
  326. package/dist/source-control/SourceControlStatusViews.js.map +1 -0
  327. package/dist/source-control/StashSection.d.ts +13 -0
  328. package/dist/source-control/StashSection.d.ts.map +1 -0
  329. package/dist/source-control/StashSection.js +14 -0
  330. package/dist/source-control/StashSection.js.map +1 -0
  331. package/dist/source-control/highlight.d.ts +8 -0
  332. package/dist/source-control/highlight.d.ts.map +1 -0
  333. package/dist/source-control/highlight.js +15 -0
  334. package/dist/source-control/highlight.js.map +1 -0
  335. package/dist/source-control/index.d.ts +12 -0
  336. package/dist/source-control/index.d.ts.map +1 -0
  337. package/dist/source-control/index.js +12 -0
  338. package/dist/source-control/index.js.map +1 -0
  339. package/dist/source-control/sourceControlHelpers.d.ts +27 -0
  340. package/dist/source-control/sourceControlHelpers.d.ts.map +1 -0
  341. package/dist/source-control/sourceControlHelpers.js +51 -0
  342. package/dist/source-control/sourceControlHelpers.js.map +1 -0
  343. package/dist/utils/cn.d.ts +3 -0
  344. package/dist/utils/cn.d.ts.map +1 -0
  345. package/dist/utils/cn.js +6 -0
  346. package/dist/utils/cn.js.map +1 -0
  347. package/dist/utils/index.d.ts +2 -0
  348. package/dist/utils/index.d.ts.map +1 -0
  349. package/dist/utils/index.js +2 -0
  350. package/dist/utils/index.js.map +1 -0
  351. package/dist/utils/isTauri.d.ts +2 -0
  352. package/dist/utils/isTauri.d.ts.map +1 -0
  353. package/dist/utils/isTauri.js +2 -0
  354. package/dist/utils/isTauri.js.map +1 -0
  355. package/dist/utils/mockCore.d.ts +6 -0
  356. package/dist/utils/mockCore.d.ts.map +1 -0
  357. package/dist/utils/mockCore.js +3 -0
  358. package/dist/utils/mockCore.js.map +1 -0
  359. package/dist/utils/mockFs.d.ts +10 -0
  360. package/dist/utils/mockFs.d.ts.map +1 -0
  361. package/dist/utils/mockFs.js +10 -0
  362. package/dist/utils/mockFs.js.map +1 -0
  363. package/dist/utils/mockSettings.d.ts +3 -0
  364. package/dist/utils/mockSettings.d.ts.map +1 -0
  365. package/dist/utils/mockSettings.js +3 -0
  366. package/dist/utils/mockSettings.js.map +1 -0
  367. package/dist/utils/mockShortcuts.d.ts +2 -0
  368. package/dist/utils/mockShortcuts.d.ts.map +1 -0
  369. package/dist/utils/mockShortcuts.js +2 -0
  370. package/dist/utils/mockShortcuts.js.map +1 -0
  371. package/dist/utils/mockSpaces.d.ts +4 -0
  372. package/dist/utils/mockSpaces.d.ts.map +1 -0
  373. package/dist/utils/mockSpaces.js +2 -0
  374. package/dist/utils/mockSpaces.js.map +1 -0
  375. package/dist/utils/mockTauri.d.ts +5 -0
  376. package/dist/utils/mockTauri.d.ts.map +1 -0
  377. package/dist/utils/mockTauri.js +3 -0
  378. package/dist/utils/mockTauri.js.map +1 -0
  379. package/dist/utils/mockWorkspace.d.ts +2 -0
  380. package/dist/utils/mockWorkspace.d.ts.map +1 -0
  381. package/dist/utils/mockWorkspace.js +2 -0
  382. package/dist/utils/mockWorkspace.js.map +1 -0
  383. package/dist/utils/platform.d.ts +5 -0
  384. package/dist/utils/platform.d.ts.map +1 -0
  385. package/dist/utils/platform.js +8 -0
  386. package/dist/utils/platform.js.map +1 -0
  387. package/dist/utils/shellQuote.d.ts +2 -0
  388. package/dist/utils/shellQuote.d.ts.map +1 -0
  389. package/dist/utils/shellQuote.js +7 -0
  390. package/dist/utils/shellQuote.js.map +1 -0
  391. package/package.json +118 -0
@@ -0,0 +1,237 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from "../primitives/button.js";
3
+ import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuTrigger, } from "../primitives/context-menu.js";
4
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "../primitives/dropdown-menu.js";
5
+ import { Tabs, TabsList } from "../primitives/tabs.js";
6
+ import { fmtShortcut, MOD_KEY } from "../utils/platform.js";
7
+ import { cn } from "../utils/cn.js";
8
+ import { fileIconUrl } from "../explorer/iconResolver.js";
9
+ import { leafIds } from "@termaxjs/web-core/layout";
10
+ import { useLeafStates } from "./leafState.js";
11
+ import { horizontalListSortingStrategy, SortableContext, useSortable, verticalListSortingStrategy, } from "@dnd-kit/sortable";
12
+ import { CSS } from "@dnd-kit/utilities";
13
+ import { Cancel01Icon, Clock01Icon, ComputerTerminal02Icon, GitBranchIcon, GitCompareIcon, Globe02Icon, IncognitoIcon, PencilEdit02Icon, PlusSignIcon, } from "@hugeicons/core-free-icons";
14
+ import { HugeiconsIcon } from "@hugeicons/react";
15
+ import { forwardRef, useEffect, useRef, useState } from "react";
16
+ import { labelFor } from "./tabLabel.js";
17
+ import { PaneChip } from "./PaneChip.js";
18
+ import { TabItem } from "./TabItem.js";
19
+ export function TabBar({ tabs, activeId, onSelect, onNew, onNewBlock, onNewPrivate, onNewPreview, onNewEditor, onNewGitGraph, onClose, onPin, onRename, onColorChange, onFocusLeaf, onClosePaneByLeaf, compact, orientation = "horizontal", }) {
20
+ const leafStates = useLeafStates();
21
+ const scrollRef = useRef(null);
22
+ const listRef = useRef(null);
23
+ const [editingId, setEditingId] = useState(null);
24
+ // Play the enter animation only for tabs opened after the first paint, never
25
+ // the restored set and never on switch/reorder (triggers are keyed, so they
26
+ // don't remount then). The ref is seeded with the initial ids on first render.
27
+ const seenRef = useRef(null);
28
+ const firstRender = seenRef.current === null;
29
+ let seen = seenRef.current;
30
+ if (seen === null) {
31
+ seen = new Set(tabs.map((t) => t.id));
32
+ seenRef.current = seen;
33
+ }
34
+ useEffect(() => {
35
+ seenRef.current = new Set(tabs.map((t) => t.id));
36
+ }, [tabs]);
37
+ // Horizontal wheel scroll without holding shift.
38
+ useEffect(() => {
39
+ const el = scrollRef.current;
40
+ if (!el)
41
+ return;
42
+ const onWheel = (e) => {
43
+ if (Math.abs(e.deltaY) <= Math.abs(e.deltaX))
44
+ return;
45
+ if (el.scrollWidth <= el.clientWidth)
46
+ return;
47
+ e.preventDefault();
48
+ el.scrollLeft += e.deltaY;
49
+ };
50
+ el.addEventListener("wheel", onWheel, { passive: false });
51
+ return () => el.removeEventListener("wheel", onWheel);
52
+ }, []);
53
+ // Keep the active tab visible after selection / open.
54
+ useEffect(() => {
55
+ const el = scrollRef.current;
56
+ if (!el)
57
+ return;
58
+ const active = el.querySelector(`[data-tab-id="${activeId}"]`);
59
+ active?.scrollIntoView({ block: "nearest", inline: "nearest" });
60
+ }, [activeId]);
61
+ const isVertical = orientation === "vertical";
62
+ return (_jsx("div", { ref: scrollRef, "data-tauri-drag-region": true, className: cn("min-w-0 shrink", isVertical
63
+ ? "flex flex-col h-full w-full overflow-y-auto px-1 py-1 gap-1"
64
+ : "flex h-full items-center overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"), children: _jsxs("div", { className: cn("flex gap-0.5", isVertical ? "flex-col w-full" : "h-full w-max items-center"), children: [_jsx(Tabs, { value: String(activeId), onValueChange: (v) => onSelect(Number(v)), className: cn("flex", isVertical ? "flex-col w-full" : "h-full items-center"), children: _jsx(TabsList, { ref: listRef, className: cn("relative bg-transparent p-0 gap-1", isVertical
65
+ ? "flex flex-col h-auto w-full items-stretch"
66
+ : "flex h-[var(--tx-tab-h,28px)] items-center w-max"), children: _jsx(SortableContext, { items: tabs.map((t) => `tab-${t.id}`), strategy: isVertical
67
+ ? verticalListSortingStrategy
68
+ : horizontalListSortingStrategy, children: tabs.map((t) => {
69
+ // Multi-pane terminal tab → grouped chips
70
+ if (t.kind === "terminal" &&
71
+ !t.blocks &&
72
+ onFocusLeaf &&
73
+ onClosePaneByLeaf) {
74
+ const ids = leafIds(t.paneTree);
75
+ if (ids.length > 1) {
76
+ return (_jsx(GroupedPaneTab, { tab: t, leafIdList: ids, leafStates: leafStates, isTabActive: t.id === activeId, onSelect: () => onSelect(t.id), onRename: (title) => onRename(t.id, title), onColorChange: (color) => onColorChange(t.id, color), onFocusLeaf: (lid) => onFocusLeaf(t.id, lid), onCloseLeaf: onClosePaneByLeaf, onCloseTab: () => onClose(t.id) }, t.id));
77
+ }
78
+ }
79
+ return (_jsx(TabItem, { tab: t, isActive: t.id === activeId, isNew: !firstRender && !seen.has(t.id), isEditing: editingId === t.id, tabsLength: tabs.length, compact: compact, setEditingId: setEditingId, onSelect: () => onSelect(t.id), onRename: onRename, onColorChange: onColorChange, onPin: onPin, onClose: onClose }, t.id));
80
+ }) }) }) }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", className: "size-7 shrink-0 rounded-md text-muted-foreground hover:bg-accent hover:text-foreground", title: "New tab", children: _jsx(HugeiconsIcon, { icon: PlusSignIcon, size: 14, strokeWidth: 2 }) }) }), _jsxs(DropdownMenuContent, { align: "start", className: "min-w-44", children: [_jsxs(DropdownMenuItem, { onSelect: () => onNew(), children: [_jsx(HugeiconsIcon, { icon: ComputerTerminal02Icon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Terminal" }), _jsx("div", { className: "text-xs text-muted-foreground", children: fmtShortcut(MOD_KEY, "T") })] }), _jsxs(DropdownMenuItem, { onSelect: () => onNewBlock(), children: [_jsx(HugeiconsIcon, { icon: ComputerTerminal02Icon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Block terminal" }), _jsx("div", { className: "text-xs text-muted-foreground", children: "beta" })] }), _jsxs(DropdownMenuItem, { onSelect: () => onNewPrivate(), children: [_jsx(HugeiconsIcon, { icon: IncognitoIcon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Privacy" }), _jsx("div", { className: "text-xs text-muted-foreground", children: fmtShortcut(MOD_KEY, "R") })] }), _jsxs(DropdownMenuItem, { onSelect: () => onNewEditor(), children: [_jsx(HugeiconsIcon, { icon: PencilEdit02Icon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Editor" }), _jsx("div", { className: "text-xs text-muted-foreground", children: fmtShortcut(MOD_KEY, "E") })] }), _jsxs(DropdownMenuItem, { onSelect: () => onNewPreview(), children: [_jsx(HugeiconsIcon, { icon: Globe02Icon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Preview" }), _jsx("div", { className: "text-xs text-muted-foreground", children: fmtShortcut(MOD_KEY, "P") })] }), _jsxs(DropdownMenuItem, { onSelect: () => onNewGitGraph(), children: [_jsx(HugeiconsIcon, { icon: GitBranchIcon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Git Graph" })] })] })] })] }) }));
81
+ }
82
+ export function TabIcon({ tab }) {
83
+ if (tab.kind === "editor" || tab.kind === "markdown") {
84
+ const url = fileIconUrl(tab.title);
85
+ return url ? _jsx("img", { src: url, alt: "", className: "size-3.5 shrink-0" }) : null;
86
+ }
87
+ if (tab.kind === "preview") {
88
+ return (_jsx(HugeiconsIcon, { icon: Globe02Icon, size: 14, strokeWidth: 2, className: "shrink-0" }));
89
+ }
90
+ if (tab.kind === "ai-diff") {
91
+ return (_jsx(HugeiconsIcon, { icon: GitCompareIcon, size: 14, strokeWidth: 2, className: "shrink-0" }));
92
+ }
93
+ if (tab.kind === "terminal" && tab.private) {
94
+ return (_jsx(HugeiconsIcon, { icon: IncognitoIcon, size: 14, strokeWidth: 2, className: "shrink-0" }));
95
+ }
96
+ if (tab.kind === "git-diff" || tab.kind === "git-commit-file") {
97
+ return (_jsx(HugeiconsIcon, { icon: GitCompareIcon, size: 14, strokeWidth: 2, className: "shrink-0" }));
98
+ }
99
+ if (tab.kind === "git-history") {
100
+ return (_jsx(HugeiconsIcon, { icon: Clock01Icon, size: 14, strokeWidth: 2, className: "shrink-0" }));
101
+ }
102
+ return (_jsx(HugeiconsIcon, { icon: ComputerTerminal02Icon, size: 14, strokeWidth: 2, className: "shrink-0" }));
103
+ }
104
+ export function TabRenameInput({ initial, onCommit, onCancel, }) {
105
+ const ref = useRef(null);
106
+ // Guards against a trailing blur re-resolving an edit that Enter/Escape
107
+ // already finished (Escape must never commit).
108
+ const done = useRef(false);
109
+ useEffect(() => {
110
+ // Focus on the next frame so it runs after the context menu restores focus
111
+ // to its trigger when closing; a synchronous focus would be stolen.
112
+ const raf = requestAnimationFrame(() => {
113
+ ref.current?.focus();
114
+ ref.current?.select();
115
+ });
116
+ return () => cancelAnimationFrame(raf);
117
+ }, []);
118
+ const finish = (fn) => {
119
+ if (done.current)
120
+ return;
121
+ done.current = true;
122
+ fn();
123
+ };
124
+ // explicit = the user pressed Enter, which pins even the unchanged label. A
125
+ // plain blur with no change must not freeze the cwd-derived default into a
126
+ // custom title.
127
+ const commit = (value, explicit) => {
128
+ if (!explicit && value.trim() === initial.trim())
129
+ finish(onCancel);
130
+ else
131
+ finish(() => onCommit(value));
132
+ };
133
+ return (_jsx("input", { ref: ref, defaultValue: initial, "aria-label": "Rename tab", className: cn("w-28 min-w-0 rounded-sm bg-background px-1 text-xs text-foreground", "outline-none ring-1 ring-border focus:ring-ring"), onKeyDown: (e) => {
134
+ e.stopPropagation();
135
+ if (e.key === "Enter")
136
+ commit(e.currentTarget.value, true);
137
+ else if (e.key === "Escape")
138
+ finish(onCancel);
139
+ }, onBlur: (e) => {
140
+ // Switching windows/apps blurs the input; keep the edit open instead
141
+ // of resolving it on the way out.
142
+ if (!document.hasFocus())
143
+ return;
144
+ commit(e.currentTarget.value, false);
145
+ } }));
146
+ }
147
+ export const SortableTabTrigger = forwardRef(({ id, children, value, "data-tab-id": dataTabId, "data-tab-active": dataTabActive, onClick, onDoubleClick, onAuxClick, onMouseDown, className, ...props }, ref) => {
148
+ const { attributes, listeners, setNodeRef, transform, transition, isDragging, } = useSortable({
149
+ id: `tab-${id}`,
150
+ });
151
+ const style = {
152
+ transform: CSS.Transform.toString(transform),
153
+ transition,
154
+ zIndex: isDragging ? 10 : undefined,
155
+ };
156
+ const setRefs = (node) => {
157
+ setNodeRef(node);
158
+ if (typeof ref === "function") {
159
+ ref(node);
160
+ }
161
+ else if (ref) {
162
+ ref.current = node;
163
+ }
164
+ };
165
+ return (
166
+ // biome-ignore lint/a11y/noStaticElementInteractions: dnd-kit sortable container; drag supports the dnd-kit keyboard sensor and activation lives on the inner tab button.
167
+ _jsx("div", { ref: setRefs, style: style, ...attributes, ...props, ...listeners, onPointerDown: (e) => {
168
+ props.onPointerDown?.(e);
169
+ listeners?.onPointerDown?.(e);
170
+ }, onKeyDown: (e) => {
171
+ props.onKeyDown?.(e);
172
+ listeners?.onKeyDown?.(e);
173
+ }, className: "flex h-full w-max shrink-0 items-center", children: _jsx("button", { type: "button", role: "tab", "aria-selected": dataTabActive === "true", "aria-controls": `radix-${id}`, onClick: onClick, "data-tab-id": dataTabId, "data-tab-active": dataTabActive, onDoubleClick: onDoubleClick, onAuxClick: onAuxClick, onMouseDown: onMouseDown, className: cn("flex items-center h-full", className, isDragging && "opacity-50"), children: children }) }));
174
+ });
175
+ function GroupedPaneTab({ tab, leafIdList, leafStates, isTabActive, onSelect, onFocusLeaf, onCloseLeaf, onCloseTab, onRename, onColorChange, }) {
176
+ const [isEditing, setIsEditing] = useState(false);
177
+ const trigger = (_jsx(SortableTabTrigger, { id: tab.id, value: String(tab.id), "data-tab-id": tab.id, "data-tab-active": isTabActive ? "true" : undefined, onClick: onSelect, onDoubleClick: () => setIsEditing(true), onAuxClick: (e) => {
178
+ if (e.button === 1) {
179
+ e.preventDefault();
180
+ e.stopPropagation();
181
+ onCloseTab();
182
+ }
183
+ }, onMouseDown: (e) => {
184
+ if (e.button === 1)
185
+ e.preventDefault();
186
+ }, className: cn("group relative z-[1] h-[var(--tx-tab-h,28px)] shrink-0 rounded-md text-xs transition-colors p-0!", isTabActive
187
+ ? "text-foreground dark:text-foreground bg-foreground/[0.07] shadow-sm ring-1 ring-inset ring-foreground/[0.05]"
188
+ : "bg-transparent text-muted-foreground hover:text-foreground/80 dark:text-muted-foreground"), style: tab.color ? { borderBottom: `2px solid ${tab.color}` } : undefined, children: _jsx("div", { className: "flex h-full items-stretch", children: isEditing ? (_jsxs("div", { className: "flex h-[var(--tx-tab-h,28px)] shrink-0 items-center gap-1.5 px-2", children: [_jsx(TabIcon, { tab: tab }), _jsx(TabRenameInput, { initial: labelFor(tab), onCommit: (value) => {
189
+ onRename(value);
190
+ setIsEditing(false);
191
+ }, onCancel: () => setIsEditing(false) })] })) : (_jsx(SortableContext, { items: leafIdList.map((lid) => `pane-drag-${lid}`), strategy: horizontalListSortingStrategy, children: leafIdList.map((lid, i) => {
192
+ const ls = leafStates.get(lid);
193
+ const cwd = ls?.cwd ?? tab.cwd;
194
+ const mainTitle = cwd
195
+ ? cwd.split(/[\\/]/).filter(Boolean).pop() || "Terminal"
196
+ : "Terminal";
197
+ const isGenericZsh = ls?.title && /^[^@]+@[^:]+:/.test(ls.title);
198
+ const showSub = ls?.title && !isGenericZsh && ls.title !== mainTitle;
199
+ const subTitle = showSub ? ls?.title : null;
200
+ return (_jsx(SortablePaneChip, { id: lid, className: i > 0 ? "border-l border-border/20" : undefined, children: _jsx(PaneChip, { leafId: lid, mainTitle: mainTitle, subTitle: subTitle, interaction: ls?.interaction, longRunning: ls?.longRunning, isActive: isTabActive && tab.activeLeafId === lid, onFocus: () => {
201
+ onSelect();
202
+ onFocusLeaf(lid);
203
+ }, onClose: () => onCloseLeaf(lid) }) }, lid));
204
+ }) })) }) }));
205
+ return (_jsxs(ContextMenu, { children: [_jsx(ContextMenuTrigger, { asChild: true, children: trigger }), _jsxs(ContextMenuContent, { className: "min-w-36", onCloseAutoFocus: (e) => e.preventDefault(), children: [_jsxs(ContextMenuItem, { onSelect: () => setIsEditing(true), children: [_jsx(HugeiconsIcon, { icon: PencilEdit02Icon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Rename" })] }), tab.kind === "terminal" && tab.customTitle && (_jsxs(ContextMenuItem, { onSelect: () => onRename(""), children: [_jsx(HugeiconsIcon, { icon: Cancel01Icon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Reset Title" })] })), _jsx(ContextMenuSeparator, {}), _jsx("div", { className: "px-2 py-1.5 text-xs font-semibold text-muted-foreground", children: "Color" }), _jsxs("div", { className: "flex gap-1.5 px-2 pb-2", children: [[
206
+ "#ef4444",
207
+ "#f97316",
208
+ "#eab308",
209
+ "#22c55e",
210
+ "#3b82f6",
211
+ "#a855f7",
212
+ "#ec4899",
213
+ ].map((color) => (_jsx("button", { type: "button", className: cn("size-4 rounded-full border border-border/50", tab.color === color &&
214
+ "ring-2 ring-foreground/30 ring-offset-1 ring-offset-background"), style: { backgroundColor: color }, onClick: (e) => {
215
+ e.stopPropagation();
216
+ onColorChange(color);
217
+ } }, color))), _jsx("button", { type: "button", className: "flex size-4 items-center justify-center rounded-full border border-border/50 bg-background text-muted-foreground hover:text-foreground", onClick: (e) => {
218
+ e.stopPropagation();
219
+ onColorChange(undefined);
220
+ }, children: _jsx(HugeiconsIcon, { icon: Cancel01Icon, size: 12, strokeWidth: 2.5 }) })] }), _jsx(ContextMenuSeparator, {}), _jsxs(ContextMenuItem, { onSelect: onCloseTab, children: [_jsx(HugeiconsIcon, { icon: Cancel01Icon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Close" })] })] })] }, tab.id));
221
+ }
222
+ function SortablePaneChip({ id, className, children, }) {
223
+ const { attributes, listeners, setNodeRef, transform, transition, isDragging, } = useSortable({
224
+ id: `pane-drag-${id}`,
225
+ });
226
+ const style = {
227
+ transform: CSS.Transform.toString(transform),
228
+ transition,
229
+ zIndex: isDragging ? 10 : undefined,
230
+ };
231
+ return (_jsx("div", { ref: setNodeRef, style: style, ...attributes, ...listeners, onPointerDown: (e) => {
232
+ // Stop propagation so the outer Tab doesn't start dragging
233
+ e.stopPropagation();
234
+ listeners?.onPointerDown?.(e);
235
+ }, className: cn("flex items-stretch", className, isDragging && "opacity-50"), children: children }));
236
+ }
237
+ //# sourceMappingURL=TabBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabBar.js","sourceRoot":"","sources":["../../src/layout/TabBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type React from "react";
2
+ import type { Tab } from "@termaxjs/web-core/layout";
3
+ type TabItemProps = {
4
+ tab: Tab;
5
+ isActive: boolean;
6
+ isNew: boolean;
7
+ isEditing: boolean;
8
+ tabsLength: number;
9
+ compact?: boolean;
10
+ setEditingId: (id: number | null) => void;
11
+ onSelect: () => void;
12
+ onRename: (id: number, title: string) => void;
13
+ onPin: (id: number) => void;
14
+ onClose: (id: number) => void;
15
+ onColorChange: (id: number, color: string | undefined) => void;
16
+ };
17
+ export declare function TabItem({ tab: t, isActive, isNew, isEditing, tabsLength, compact, setEditingId, onSelect, onRename, onPin, onClose, onColorChange, }: TabItemProps): React.JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=TabItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabItem.d.ts","sourceRoot":"","sources":["../../src/layout/TabItem.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAa,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAGhE,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAChE,CAAC;AAEF,wBAAgB,OAAO,CAAC,EACtB,GAAG,EAAE,CAAC,EACN,QAAQ,EACR,KAAK,EACL,SAAS,EACT,UAAU,EACV,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,OAAO,EACP,aAAa,GACd,EAAE,YAAY,qBAmNd"}
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuTrigger, } from "../primitives/context-menu.js";
3
+ import { cn } from "../utils/cn.js";
4
+ import { Cancel01Icon, Loading02Icon, LockIcon, PencilEdit02Icon, Unlock, } from "@hugeicons/core-free-icons";
5
+ import { HugeiconsIcon } from "@hugeicons/react";
6
+ import { labelFor } from "./tabLabel.js";
7
+ import { SortableTabTrigger, TabIcon, TabRenameInput } from "./TabBar.js";
8
+ export function TabItem({ tab: t, isActive, isNew, isEditing, tabsLength, compact, setEditingId, onSelect, onRename, onPin, onClose, onColorChange, }) {
9
+ const isPreview = t.kind === "editor" && t.preview;
10
+ if (isEditing && t.kind === "terminal") {
11
+ return (_jsxs("div", { "data-tab-id": t.id, className: cn("flex h-[var(--tx-tab-h,28px)] shrink-0 items-center gap-1.5 rounded-md bg-accent text-xs text-foreground", compact ? "px-1.5" : "px-2"), children: [_jsx(TabIcon, { tab: t }), _jsx(TabRenameInput, { initial: labelFor(t), onCommit: (value) => {
12
+ onRename(t.id, value);
13
+ setEditingId(null);
14
+ }, onCancel: () => setEditingId(null) })] }, t.id));
15
+ }
16
+ let mainTitle = labelFor(t);
17
+ let subTitle = null;
18
+ if (t.kind === "terminal" && !t.customTitle) {
19
+ mainTitle = t.cwd
20
+ ? t.cwd.split(/[\\/]/).filter(Boolean).pop() || "Terminal"
21
+ : t.title;
22
+ const isGenericZshPrompt = t.dynamicTitle && /^[^@]+@[^:]+:/.test(t.dynamicTitle);
23
+ if (t.dynamicTitle && !isGenericZshPrompt && t.dynamicTitle !== mainTitle) {
24
+ subTitle = t.dynamicTitle;
25
+ }
26
+ }
27
+ const trigger = (_jsxs(SortableTabTrigger, { id: t.id, value: String(t.id), "data-tab-id": t.id, "data-tab-active": isActive ? "true" : undefined, onClick: onSelect, onDoubleClick: () => {
28
+ if (isPreview)
29
+ onPin(t.id);
30
+ else if (t.kind === "terminal")
31
+ setEditingId(t.id);
32
+ }, onAuxClick: (e) => {
33
+ if (e.button === 1 && tabsLength > 1) {
34
+ e.preventDefault();
35
+ e.stopPropagation();
36
+ onClose(t.id);
37
+ }
38
+ }, onMouseDown: (e) => {
39
+ if (e.button === 1)
40
+ e.preventDefault();
41
+ }, className: cn("group relative z-[1] h-[var(--tx-tab-h,28px)] shrink-0 justify-center gap-1.5 rounded-md text-xs transition-colors p-0!", isNew && "termax-tab-in", isActive
42
+ ? "text-foreground dark:text-foreground bg-foreground/[0.07] shadow-sm ring-1 ring-inset ring-foreground/[0.05]"
43
+ : "bg-transparent text-muted-foreground hover:text-foreground/80 dark:text-muted-foreground", compact ? "px-1.5! pr-6!" : "pl-2! pr-7!"), style: t.color ? { borderBottom: `2px solid ${t.color}` } : undefined, children: [_jsxs("div", { className: cn("flex min-w-0 items-center justify-center gap-1.5 h-full", compact ? "max-w-48" : "max-w-80"), children: [t.kind === "terminal" && t.alert ? (_jsx("div", { className: "flex w-3.5 items-center justify-center", children: _jsx("span", { className: "flex size-1.5 shrink-0 animate-pulse rounded-full bg-blue-500" }) })) : t.kind === "terminal" && t.interaction ? (_jsx("div", { className: "flex w-3.5 items-center justify-center", children: _jsx("span", { className: "flex size-1.5 shrink-0 animate-pulse rounded-full bg-amber-400" }) })) : t.kind === "terminal" && t.longRunning ? (_jsx(HugeiconsIcon, { icon: Loading02Icon, size: 14, className: "animate-spin text-muted-foreground shrink-0", strokeWidth: 2 })) : (_jsx(TabIcon, { tab: t })), _jsxs("div", { className: "flex flex-col min-w-0 justify-center", children: [_jsx("span", { className: cn("truncate font-medium leading-none", isPreview && "italic", subTitle && "text-[11px]"), children: mainTitle }), subTitle && (_jsx("span", { className: "truncate text-[9px] leading-[10px] text-muted-foreground/70 font-normal", children: subTitle }))] }), t.kind === "editor" && t.dirty ? (_jsx("div", { role: "img", "aria-label": "Unsaved changes", className: "size-1.5 shrink-0 rounded-full bg-foreground/70" })) : null] }), _jsx("div", { "aria-hidden": "true", onClick: (e) => {
44
+ e.stopPropagation();
45
+ onClose(t.id);
46
+ }, className: "absolute right-1 top-1/2 -translate-y-1/2 flex items-center justify-center rounded p-0.5 opacity-0 transition-all hover:bg-accent hover:opacity-100 group-hover:opacity-60", children: _jsx(HugeiconsIcon, { icon: Cancel01Icon, size: 12, strokeWidth: 2 }) })] }, t.id));
47
+ if (t.kind !== "terminal")
48
+ return trigger;
49
+ return (_jsxs(ContextMenu, { children: [_jsx(ContextMenuTrigger, { asChild: true, children: trigger }), _jsxs(ContextMenuContent, { className: "min-w-36", onCloseAutoFocus: (e) => e.preventDefault(), children: [_jsxs(ContextMenuItem, { onSelect: () => setEditingId(t.id), children: [_jsx(HugeiconsIcon, { icon: PencilEdit02Icon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Rename" })] }), _jsxs(ContextMenuItem, { onSelect: () => onRename(t.id, t.customTitle ? "" : mainTitle), children: [_jsx(HugeiconsIcon, { icon: t.customTitle ? Unlock : LockIcon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: t.customTitle ? "Unlock title" : "Lock title" })] }), _jsx(ContextMenuSeparator, {}), _jsx("div", { className: "px-2 py-1.5 text-xs font-semibold text-muted-foreground", children: "Color" }), _jsxs("div", { className: "flex gap-1.5 px-2 pb-2", children: [[
50
+ "#ef4444",
51
+ "#f97316",
52
+ "#eab308",
53
+ "#22c55e",
54
+ "#3b82f6",
55
+ "#a855f7",
56
+ "#ec4899",
57
+ ].map((color) => (_jsx("button", { type: "button", className: cn("size-4 rounded-full border border-border/50", t.color === color &&
58
+ "ring-2 ring-foreground/30 ring-offset-1 ring-offset-background"), style: { backgroundColor: color }, onClick: (e) => {
59
+ e.stopPropagation();
60
+ onColorChange(t.id, color);
61
+ } }, color))), _jsx("button", { type: "button", className: "flex size-4 items-center justify-center rounded-full border border-border/50 bg-background text-muted-foreground hover:text-foreground", onClick: (e) => {
62
+ e.stopPropagation();
63
+ onColorChange(t.id, undefined);
64
+ }, children: _jsx(HugeiconsIcon, { icon: Cancel01Icon, size: 12, strokeWidth: 2.5 }) })] }), tabsLength > 1 && (_jsxs(_Fragment, { children: [_jsx(ContextMenuSeparator, {}), _jsxs(ContextMenuItem, { onSelect: () => onClose(t.id), children: [_jsx(HugeiconsIcon, { icon: Cancel01Icon, size: 14, strokeWidth: 1.75 }), _jsx("div", { className: "flex-1", children: "Close" })] })] }))] })] }, t.id));
65
+ }
66
+ //# sourceMappingURL=TabItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabItem.js","sourceRoot":"","sources":["../../src/layout/TabItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,MAAM,GACP,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiB1E,MAAM,UAAU,OAAO,CAAC,EACtB,GAAG,EAAE,CAAC,EACN,QAAQ,EACR,KAAK,EACL,SAAS,EACT,UAAU,EACV,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,OAAO,EACP,aAAa,GACA;IACb,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAK,CAAe,CAAC,OAAO,CAAC;IAElE,IAAI,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACvC,OAAO,CACL,8BAEe,CAAC,CAAC,EAAE,EACjB,SAAS,EAAE,EAAE,CACX,0GAA0G,EAC1G,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAC5B,aAED,KAAC,OAAO,IAAC,GAAG,EAAE,CAAC,GAAI,EACnB,KAAC,cAAc,IACb,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;wBACtB,YAAY,CAAC,IAAI,CAAC,CAAC;oBACrB,CAAC,EACD,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAClC,KAfG,CAAC,CAAC,EAAE,CAgBL,CACP,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,SAAS,GAAG,CAAC,CAAC,GAAG;YACf,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,UAAU;YAC1D,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACZ,MAAM,kBAAkB,GACtB,CAAC,CAAC,YAAY,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACzD,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC1E,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,CACd,MAAC,kBAAkB,IAEjB,EAAE,EAAE,CAAC,CAAC,EAAE,EACR,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,iBACN,CAAC,CAAC,EAAE,qBACA,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC9C,OAAO,EAAE,QAAQ,EACjB,aAAa,EAAE,GAAG,EAAE;YAClB,IAAI,SAAS;gBAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBACtB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;gBAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC,EACD,UAAU,EAAE,CAAC,CAAmB,EAAE,EAAE;YAClC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACrC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,EACD,WAAW,EAAE,CAAC,CAAmB,EAAE,EAAE;YACnC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC,EACD,SAAS,EAAE,EAAE,CACX,yHAAyH,EACzH,KAAK,IAAI,eAAe,EACxB,QAAQ;YACN,CAAC,CAAC,8GAA8G;YAChH,CAAC,CAAC,0FAA0F,EAC9F,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAC1C,EACD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,aAErE,eACE,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAClC,aAEA,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAClC,cAAK,SAAS,EAAC,wCAAwC,YACrD,eAAM,SAAS,EAAC,+DAA+D,GAAG,GAC9E,CACP,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAC3C,cAAK,SAAS,EAAC,wCAAwC,YACrD,eAAM,SAAS,EAAC,gEAAgE,GAAG,GAC/E,CACP,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAC3C,KAAC,aAAa,IACZ,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,6CAA6C,EACvD,WAAW,EAAE,CAAC,GACd,CACH,CAAC,CAAC,CAAC,CACF,KAAC,OAAO,IAAC,GAAG,EAAE,CAAC,GAAI,CACpB,EACD,eAAK,SAAS,EAAC,sCAAsC,aACnD,eACE,SAAS,EAAE,EAAE,CACX,mCAAmC,EACnC,SAAS,IAAI,QAAQ,EACrB,QAAQ,IAAI,aAAa,CAC1B,YAEA,SAAS,GACL,EACN,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,yEAAyE,YACtF,QAAQ,GACJ,CACR,IACG,EACL,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAChC,cACE,IAAI,EAAC,KAAK,gBACC,iBAAiB,EAC5B,SAAS,EAAC,iDAAiD,GAC3D,CACH,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,6BACc,MAAM,EAClB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC,EACD,SAAS,EAAC,4KAA4K,YAEtL,KAAC,aAAa,IAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,GAAI,GAC3D,KAvFD,CAAC,CAAC,EAAE,CAwFU,CACtB,CAAC;IAEF,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,OAAO,CAAC;IAE1C,OAAO,CACL,MAAC,WAAW,eACV,KAAC,kBAAkB,IAAC,OAAO,kBAAE,OAAO,GAAsB,EAC1D,MAAC,kBAAkB,IACjB,SAAS,EAAC,UAAU,EACpB,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,aAE3C,MAAC,eAAe,IAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,aACjD,KAAC,aAAa,IAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,GAAI,EACtE,cAAK,SAAS,EAAC,QAAQ,uBAAa,IACpB,EAElB,MAAC,eAAe,IACd,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAE9D,KAAC,aAAa,IACZ,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EACvC,IAAI,EAAE,EAAE,EACR,WAAW,EAAE,IAAI,GACjB,EACF,cAAK,SAAS,EAAC,QAAQ,YACpB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,GAC1C,IACU,EAElB,KAAC,oBAAoB,KAAG,EAExB,cAAK,SAAS,EAAC,yDAAyD,sBAElE,EACN,eAAK,SAAS,EAAC,wBAAwB,aACpC;gCACC,SAAS;gCACT,SAAS;gCACT,SAAS;gCACT,SAAS;gCACT,SAAS;gCACT,SAAS;gCACT,SAAS;6BACV,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACf,iBAAQ,IAAI,EAAC,QAAQ,EAEnB,SAAS,EAAE,EAAE,CACX,6CAA6C,EAC7C,CAAC,CAAC,KAAK,KAAK,KAAK;oCACf,gEAAgE,CACnE,EACD,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,EACjC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oCACb,CAAC,CAAC,eAAe,EAAE,CAAC;oCACpB,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gCAC7B,CAAC,IAVI,KAAK,CAWV,CACH,CAAC,EACF,iBAAQ,IAAI,EAAC,QAAQ,EACnB,SAAS,EAAC,wIAAwI,EAClJ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oCACb,CAAC,CAAC,eAAe,EAAE,CAAC;oCACpB,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gCACjC,CAAC,YAED,KAAC,aAAa,IAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,GAAI,GAC1D,IACL,EAEL,UAAU,GAAG,CAAC,IAAI,CACjB,8BACE,KAAC,oBAAoB,KAAG,EACxB,MAAC,eAAe,IAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,aAC5C,KAAC,aAAa,IAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,GAAI,EAClE,cAAK,SAAS,EAAC,QAAQ,sBAAY,IACnB,IACjB,CACJ,IACkB,KAzEL,CAAC,CAAC,EAAE,CA0ER,CACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./PaneChip.js";
2
+ export * from "./TabItem.js";
3
+ export * from "./TabBar.js";
4
+ export * from "./tabLabel.js";
5
+ export * from "./leafState.js";
6
+ export * from "./resizable.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./PaneChip.js";
2
+ export * from "./TabItem.js";
3
+ export * from "./TabBar.js";
4
+ export * from "./tabLabel.js";
5
+ export * from "./leafState.js";
6
+ export * from "./resizable.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,15 @@
1
+ export type LeafState = {
2
+ title: string;
3
+ interaction: boolean;
4
+ longRunning: boolean;
5
+ cwd: string | undefined;
6
+ };
7
+ export declare function setLeafTitle(leafId: number, title: string): void;
8
+ export declare function setLeafInteraction(leafId: number, interaction: boolean): void;
9
+ export declare function setLeafLongRunning(leafId: number, longRunning: boolean): void;
10
+ export declare function setLeafCwd(leafId: number, cwd: string): void;
11
+ export declare function clearLeafState(leafId: number): void;
12
+ export declare function getLeafState(leafId: number): LeafState | undefined;
13
+ /** React hook — re-renders when any leaf state changes. */
14
+ export declare function useLeafStates(): ReadonlyMap<number, LeafState>;
15
+ //# sourceMappingURL=leafState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leafState.d.ts","sourceRoot":"","sources":["../../src/layout/leafState.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,CAAC;AAoBF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAKhE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,CAK7E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,CAK7E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAK5D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAElE;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAQ9D"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Lightweight per-leaf state store.
3
+ *
4
+ * PaneLeafView writes title / interaction / cwd here on every change;
5
+ * the TabBar and Sidebar read it via `useLeafStates()` to render grouped
6
+ * pane chips with per-leaf titles and interaction dots.
7
+ *
8
+ * Uses useSyncExternalStore so React only re-renders subscribers when the
9
+ * snapshot reference changes (which only happens on actual value changes).
10
+ */
11
+ import { useSyncExternalStore } from "react";
12
+ const store = new Map();
13
+ const listeners = new Set();
14
+ let snapshot = new Map();
15
+ function emit() {
16
+ snapshot = new Map(store);
17
+ for (const fn of listeners)
18
+ fn();
19
+ }
20
+ function getOrCreate(leafId) {
21
+ let s = store.get(leafId);
22
+ if (!s) {
23
+ s = { title: "", interaction: false, longRunning: false, cwd: undefined };
24
+ store.set(leafId, s);
25
+ }
26
+ return s;
27
+ }
28
+ export function setLeafTitle(leafId, title) {
29
+ const s = getOrCreate(leafId);
30
+ if (s.title === title)
31
+ return;
32
+ s.title = title;
33
+ emit();
34
+ }
35
+ export function setLeafInteraction(leafId, interaction) {
36
+ const s = getOrCreate(leafId);
37
+ if (s.interaction === interaction)
38
+ return;
39
+ s.interaction = interaction;
40
+ emit();
41
+ }
42
+ export function setLeafLongRunning(leafId, longRunning) {
43
+ const s = getOrCreate(leafId);
44
+ if (s.longRunning === longRunning)
45
+ return;
46
+ s.longRunning = longRunning;
47
+ emit();
48
+ }
49
+ export function setLeafCwd(leafId, cwd) {
50
+ const s = getOrCreate(leafId);
51
+ if (s.cwd === cwd)
52
+ return;
53
+ s.cwd = cwd;
54
+ emit();
55
+ }
56
+ export function clearLeafState(leafId) {
57
+ if (store.delete(leafId))
58
+ emit();
59
+ }
60
+ export function getLeafState(leafId) {
61
+ return store.get(leafId);
62
+ }
63
+ /** React hook — re-renders when any leaf state changes. */
64
+ export function useLeafStates() {
65
+ return useSyncExternalStore((cb) => {
66
+ listeners.add(cb);
67
+ return () => listeners.delete(cb);
68
+ }, () => snapshot);
69
+ }
70
+ //# sourceMappingURL=leafState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leafState.js","sourceRoot":"","sources":["../../src/layout/leafState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAS7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;AAC3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;AACxC,IAAI,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;AAE5C,SAAS,IAAI;IACX,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,KAAK,MAAM,EAAE,IAAI,SAAS;QAAE,EAAE,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAC1E,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,KAAa;IACxD,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO;IAC9B,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;IAChB,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,WAAoB;IACrE,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW;QAAE,OAAO;IAC1C,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;IAC5B,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,WAAoB;IACrE,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW;QAAE,OAAO;IAC1C,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;IAC5B,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,GAAW;IACpD,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG;QAAE,OAAO;IAC1B,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;IACZ,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,aAAa;IAC3B,OAAO,oBAAoB,CACzB,CAAC,EAAE,EAAE,EAAE;QACL,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC,EACD,GAAG,EAAE,CAAC,QAAQ,CACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ interface ResizablePanelGroupProps {
3
+ direction?: "horizontal" | "vertical";
4
+ orientation?: "horizontal" | "vertical";
5
+ snapToGrid?: boolean;
6
+ className?: string;
7
+ style?: React.CSSProperties;
8
+ children?: React.ReactNode;
9
+ }
10
+ declare function ResizablePanelGroup({ className, direction, orientation, ...props }: ResizablePanelGroupProps): React.JSX.Element;
11
+ interface ResizablePanelProps {
12
+ id?: string;
13
+ defaultSize?: number;
14
+ minSize?: number;
15
+ maxSize?: number;
16
+ collapsible?: boolean;
17
+ className?: string;
18
+ style?: React.CSSProperties;
19
+ children?: React.ReactNode;
20
+ }
21
+ declare const ResizablePanel: React.ForwardRefExoticComponent<ResizablePanelProps & React.RefAttributes<any>>;
22
+ interface ResizableHandleProps {
23
+ withHandle?: boolean;
24
+ isCollapsed?: boolean;
25
+ onHandleClick?: (e: React.MouseEvent) => void;
26
+ className?: string;
27
+ style?: React.CSSProperties;
28
+ }
29
+ declare function ResizableHandle({ withHandle, className, onHandleClick, isCollapsed, ...props }: ResizableHandleProps): React.JSX.Element;
30
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
31
+ //# sourceMappingURL=resizable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable.d.ts","sourceRoot":"","sources":["../../src/layout/resizable.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAG1C,UAAU,wBAAwB;IAChC,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACtC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,SAAwB,EACxB,WAAW,EACX,GAAG,KAAK,EACT,EAAE,wBAAwB,qBAS1B;AAED,UAAU,mBAAmB;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,QAAA,MAAM,cAAc,iFAInB,CAAC;AAEF,UAAU,oBAAoB;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,iBAAS,eAAe,CAAC,EACvB,UAAU,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,GAAG,KAAK,EACT,EAAE,oBAAoB,qBAetB;AAED,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { TerminalPanel, TerminalPanelGroup, TerminalResizeHandle, } from "@termaxjs/web-react";
3
+ import { forwardRef } from "react";
4
+ import { cn } from "../utils/cn.js";
5
+ function ResizablePanelGroup({ className, direction = "horizontal", orientation, ...props }) {
6
+ const dir = orientation || direction;
7
+ return (_jsx(TerminalPanelGroup, { direction: dir, className: cn("flex h-full w-full", className), ...props }));
8
+ }
9
+ const ResizablePanel = forwardRef(function ResizablePanel(props, ref) {
10
+ return _jsx(TerminalPanel, { ref: ref, ...props });
11
+ });
12
+ function ResizableHandle({ withHandle, className, onHandleClick, isCollapsed, ...props }) {
13
+ return (_jsx(TerminalResizeHandle, { withHandle: withHandle, isCollapsed: isCollapsed, onHandleClick: onHandleClick, className: cn("group relative flex w-px items-center justify-center bg-border ring-offset-background", className), ...props, children: _jsx("div", { className: "z-10 flex h-6 w-px shrink-0 items-center justify-center rounded-full bg-border/0 transition-all group-hover:bg-primary/60 group-active:bg-primary" }) }));
14
+ }
15
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
16
+ //# sourceMappingURL=resizable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable.js","sourceRoot":"","sources":["../../src/layout/resizable.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAWpC,SAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,SAAS,GAAG,YAAY,EACxB,WAAW,EACX,GAAG,KAAK,EACiB;IACzB,MAAM,GAAG,GAAG,WAAW,IAAI,SAAS,CAAC;IACrC,OAAO,CACL,KAAC,kBAAkB,IACjB,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,KAC1C,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAaD,MAAM,cAAc,GAAG,UAAU,CAC/B,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG;IAChC,OAAO,KAAC,aAAa,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,GAAI,CAAC;AAChD,CAAC,CACF,CAAC;AAUF,SAAS,eAAe,CAAC,EACvB,UAAU,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,GAAG,KAAK,EACa;IACrB,OAAO,CACL,KAAC,oBAAoB,IACnB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,EAAE,CACX,uFAAuF,EACvF,SAAS,CACV,KACG,KAAK,YAET,cAAK,SAAS,EAAC,mJAAmJ,GAAG,GAChJ,CACxB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Tab } from "@termaxjs/web-core/layout";
2
+ /**
3
+ * The label shown on a tab. Non-terminal tabs use their stored title; terminal
4
+ * tabs prefer a user-set custom name, then fall back to the last segment of the
5
+ * cwd. Keeping this pure makes the "custom name survives a cd" invariant
6
+ * testable without rendering the bar.
7
+ */
8
+ export declare function labelFor(t: Tab): string;
9
+ //# sourceMappingURL=tabLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabLabel.d.ts","sourceRoot":"","sources":["../../src/layout/tabLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAavC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The label shown on a tab. Non-terminal tabs use their stored title; terminal
3
+ * tabs prefer a user-set custom name, then fall back to the last segment of the
4
+ * cwd. Keeping this pure makes the "custom name survives a cd" invariant
5
+ * testable without rendering the bar.
6
+ */
7
+ export function labelFor(t) {
8
+ if (t.kind === "editor")
9
+ return t.title;
10
+ if (t.kind === "preview")
11
+ return t.title;
12
+ if (t.kind === "markdown")
13
+ return t.title;
14
+ if (t.kind === "ai-diff")
15
+ return t.title;
16
+ if (t.kind === "git-diff")
17
+ return t.title;
18
+ if (t.kind === "git-history")
19
+ return t.title;
20
+ if (t.kind === "git-commit-file")
21
+ return t.title;
22
+ if (t.customTitle)
23
+ return t.customTitle;
24
+ if (t.dynamicTitle)
25
+ return t.dynamicTitle;
26
+ if (!t.cwd)
27
+ return t.title;
28
+ const parts = t.cwd.split(/[\\/]/).filter(Boolean);
29
+ return parts.length ? parts[parts.length - 1] : "/";
30
+ }
31
+ //# sourceMappingURL=tabLabel.js.map