mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-17 12:56:05 +00:00
added mcp ui as tool
This commit is contained in:
@@ -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,
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user