garage-webui/src/lib/disclosure.ts

16 lines
381 B
TypeScript

import { createStore, useStore } from "zustand";
export const createDisclosure = <T = any>() => {
const store = createStore(() => ({
data: undefined as T | null,
isOpen: false,
}));
return {
store,
use: () => useStore(store),
open: (data?: T | null) => store.setState({ isOpen: true, data }),
close: () => store.setState({ isOpen: false }),
};
};