Compare commits

...

1 Commits

Author SHA1 Message Date
Luis de Dios
9ac51cdd09 🎉 Workspace menu for MCP server 2026-02-19 10:30:14 +01:00
2 changed files with 74 additions and 0 deletions

View File

@@ -27,6 +27,7 @@
[app.main.data.workspace.versions :as dwv]
[app.main.features :as features]
[app.main.refs :as refs]
[app.main.router :as rt]
[app.main.store :as st]
[app.main.ui.components.dropdown-menu :refer [dropdown-menu*
dropdown-menu-item*]]
@@ -765,6 +766,57 @@
[:span {:class (stl/css :item-icon)
:title (tr "workspace.plugins.error.need-editor")} deprecated-icon/help])]))])))
(mf/defc mcp-menu*
{::mf/props :obj
::mf/private true}
[{:keys [on-close]}]
(let [profile (mf/deref refs/profile)
mcp-status? (-> profile :props :mcp-status)
mcp-status (if mcp-status? "enabled" "disabled")
on-click-nav-to-integrations
(mf/use-fn
(fn []
(st/emit! (rt/nav :settings-integrations))))
on-enter-nav-to-integrations
(mf/use-fn
(fn [event]
(when (kbd/enter? event)
(on-click-nav-to-integrations))))
on-click-toggle-mcp-plugin-status
(mf/use-fn
#(print "not implemented yet"))
on-enter-toggle-mcp-plugin-status
(mf/use-fn
(fn [event]
(when (kbd/enter? event)
(on-click-toggle-mcp-plugin-status))))]
(print "aaaa" mcp-status?)
[:> dropdown-menu* {:show true
;; :id "workspace-edit-menu"
:class (stl/css-case :sub-menu true
:mcp true)
:on-close on-close}
[:> dropdown-menu-item* {:class (stl/css :submenu-item)
:on-click on-click-toggle-mcp-plugin-status
:on-key-down on-enter-toggle-mcp-plugin-status
:id "mcp-menu-toggle-mcp-plugin-status"}
[:span {:class (stl/css :item-name)}
"Disconnect"]]
[:> dropdown-menu-item* {:class (stl/css :submenu-item)
:on-click on-click-nav-to-integrations
:on-key-down on-enter-nav-to-integrations
:id "mcp-menu-nav-to-integrations"}
[:span {:class (stl/css :item-name)}
"Manage (Status: " mcp-status ")"]]]))
(mf/defc menu
{::mf/props :obj}
[{:keys [layout file profile]}]
@@ -917,6 +969,18 @@
[:span {:class (stl/css :item-name)} (tr "workspace.plugins.menu.title")]
[:span {:class (stl/css :open-arrow)} deprecated-icon/arrow]])
(when (contains? cf/flags :mcp)
[:> dropdown-menu-item* {:class (stl/css :menu-item)
:on-click on-menu-click
:on-key-down (fn [event]
(when (kbd/enter? event)
(on-menu-click event)))
:on-pointer-enter on-menu-click
:data-testid "mcp"
:id "file-menu-mcp"}
[:span {:class (stl/css :item-name)} "MCP Server"]
[:span {:class (stl/css :open-arrow)} deprecated-icon/arrow]])
[:div {:class (stl/css :separator)}]
[:> dropdown-menu-item* {:class (stl/css-case :menu-item true)
:on-click on-menu-click
@@ -971,6 +1035,10 @@
{:open-plugins open-plugins-manager
:on-close close-sub-menu}]
:mcp
[:> mcp-menu*
{:on-close close-sub-menu}]
:help-info
[:> help-info-menu*
{:layout layout

View File

@@ -6,6 +6,8 @@
@use "refactor/common-refactor.scss" as deprecated;
@use "ds/_sizes.scss" as *;
.menu {
@extend .menu-dropdown;
top: deprecated.$s-48;
@@ -111,6 +113,10 @@
overflow-y: auto;
}
&.mcp {
top: $sz-224;
}
&.help-info {
top: deprecated.$s-232;
}