garage-webui/src/lib/disclosure.ts

16 lines
381 B
TypeScript
Raw Normal View History

2024-08-14 15:36:25 +07:00
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 }),
};
};