@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
36 lines (35 loc) • 1.12 kB
TypeScript
import { InitialState } from '../misc';
/**
* Handles open/close or similar boolean states.
* Mainly aims to improve readability.
*
* @example
* ```tsx
* const modal = useOpenState()
* <button onClick={modal.open} />
* <Modal isOpen={modal.isOpen} />
* ```
*
*/
export declare const useOpenState: (initialValue?: InitialState<boolean>) => {
isOpen: boolean;
setIsOpen: import('react').Dispatch<import('react').SetStateAction<boolean>>;
close: () => void;
open: () => void;
toggle: () => void;
};
/**
* Implements a stateful open/closed mechanism that preserves component state between transitions.
*
* @remarks
* This pattern is particularly useful in scenarios requiring:
* - A boolean flag to control visibility (open/closed state)
* - Separate state to determine opened entity
* - Saving state even after closing, which prevents flickering during exit animations
*/
export declare const useStatefulOpenState: <T>(initialStateValue?: T, initialValue?: InitialState<boolean>) => {
isOpen: boolean;
close: () => void;
open: (state: T) => void;
state: T | undefined;
};