@eventcatalogtest/studio
Version:
A drag and drop UI for distributed systems that keeps your diagrams where they belong – in your repo
32 lines (29 loc) • 947 B
text/typescript
import { create } from 'zustand';
import { persist, createJSONStorage } from 'zustand/middleware';
export type SettingsTab = 'config';
interface SettingsStore {
isOpen: boolean;
activeTab: SettingsTab;
eventCatalogPath: string;
toggleModal: () => void;
setModalOpen: (open: boolean) => void;
setActiveTab: (tab: SettingsTab) => void;
setEventCatalogPath: (path: string) => void;
}
export const useSettingsStore = create<SettingsStore>()(
persist(
(set) => ({
isOpen: false,
activeTab: 'config',
eventCatalogPath: '',
toggleModal: () => set((state) => ({ isOpen: !state.isOpen })),
setModalOpen: (open: boolean) => set({ isOpen: open }),
setActiveTab: (tab: SettingsTab) => set({ activeTab: tab }),
setEventCatalogPath: (path: string) => set({ eventCatalogPath: path }),
}),
{
name: 'settings-storage',
storage: createJSONStorage(() => localStorage),
}
)
);