/** Options for useDisclosure */
export interface UseDisclosureOptions {
/** Initial open state when uncontrolled. Default: `false` */
defaultOpen?: boolean;
/** Controlled open state. When provided, the hook operates in controlled mode. */
isOpen?: boolean;
/** Callback fired when the open state changes (in both modes) */
onChange?: (isOpen: boolean) => void;
}
/** Return value of useDisclosure */
export interface UseDisclosureReturn {
/** Current open state */
isOpen: boolean;
/** Open the disclosure */
onOpen: () => void;
/** Close the disclosure */
onClose: () => void;
/** Toggle the disclosure */
onToggle: () => void;
/** Set the open state — matches Radix/shadcn `onOpenChange` prop shape */
onOpenChange: (open: boolean) => void;
/** Whether the disclosure is externally controlled */
isControlled: boolean;
}
/**
* Manages open-close state with support for both controlled and uncontrolled usage.
* Designed to drop into Radix/shadcn primitives via the `onOpenChange` prop.
*
* @param {UseDisclosureOptions} [options] - Configuration
* @returns {UseDisclosureReturn} Open state and control callbacks
*
* @example
* const { isOpen, onOpen, onClose, onOpenChange } = useDisclosure();
*
*
*/
export declare function useDisclosure(options?: UseDisclosureOptions): UseDisclosureReturn;