Docs
Dialog Helpers
Dialog Helpers
Hooks to manage dialog state.
Installation
Create lib/dialog-helpers.ts
import { useState } from "react";
export type DialogState = ReturnType<typeof useDialog>;
export const useDialog = (options?: { onClose?: () => void }) => {
const [open, setOpen] = useState(false);
return {
props: {
isOpen: open,
onOpenChange: setOpen,
},
isOpen: open,
toggle: () => {
setOpen((prev) => !prev);
},
close: () => {
options?.onClose?.();
setOpen(false);
},
};
};
export const useDialogState = <DialogState extends string>() => {
const [state, setState] = useState<DialogState | undefined>();
return {
set: setState,
state,
is: (which: DialogState) => state === which,
getProps: (which: DialogState) => ({
isOpen: state === which,
onOpenChange: (open: boolean) => {
if (!open) {
setState(undefined);
} else {
setState(which);
}
},
}),
};
};