added mcp ui as tool

This commit is contained in:
dswbx
2025-08-15 10:12:09 +02:00
parent aafd333d12
commit deb8aacca4
19 changed files with 445 additions and 221 deletions

View File

@@ -1,23 +1,73 @@
import { create } from "zustand";
import { combine, persist } from "zustand/middleware";
type SidebarState = {
open: boolean;
width: number;
};
export const appShellStore = create(
persist(
combine(
{
sidebarOpen: false as boolean,
sidebarWidth: 350 as number,
sidebars: {
default: {
open: false,
width: 350,
},
} as Record<string, SidebarState>,
},
(set) => ({
toggleSidebar: () => set((state) => ({ sidebarOpen: !state.sidebarOpen })),
closeSidebar: () => set({ sidebarOpen: false }),
openSidebar: () => set({ sidebarOpen: true }),
setSidebarWidth: (width: number) => set({ sidebarWidth: width }),
resetSidebarWidth: () => set({ sidebarWidth: 350 }),
toggleSidebar: (name: string) => () =>
set((state) => {
const sidebar = state.sidebars[name];
if (!sidebar) return state;
return {
sidebars: {
...state.sidebars,
[name]: { ...sidebar, open: !sidebar.open },
},
};
}),
closeSidebar: (name: string) => () =>
set((state) => {
const sidebar = state.sidebars[name];
if (!sidebar) return state;
return {
sidebars: { ...state.sidebars, [name]: { ...sidebar, open: false } },
};
}),
setSidebarWidth: (name: string) => (width: number) =>
set((state) => {
const sidebar = state.sidebars[name];
if (!sidebar)
return { sidebars: { ...state.sidebars, [name]: { open: false, width } } };
return { sidebars: { ...state.sidebars, [name]: { ...sidebar, width } } };
}),
resetSidebarWidth: (name: string) =>
set((state) => {
const sidebar = state.sidebars[name];
if (!sidebar) return state;
return { sidebars: { ...state.sidebars, [name]: { ...sidebar, width: 350 } } };
}),
setSidebarState: (name: string, update: SidebarState) =>
set((state) => ({ sidebars: { ...state.sidebars, [name]: update } })),
}),
),
{
name: "appshell",
version: 1,
migrate: () => {
return {
sidebars: {
default: {
open: false,
width: 350,
},
},
};
},
},
),
);