import type { JSX } from 'solid-js'; export interface DisclosureStateControlledOptions { isOpen: boolean; disabled?: boolean; onChange?: (state: boolean) => void; onClose?: () => void; onOpen?: () => void; } export interface DisclosureStateUncontrolledOptions { defaultOpen: boolean; disabled?: boolean; onChange?: (state: boolean) => void; onClose?: () => void; onOpen?: () => void; } export type DisclosureStateOptions = DisclosureStateControlledOptions | DisclosureStateUncontrolledOptions; export interface DisclosureStateProperties { isOpen: () => boolean; setState: (newState: boolean) => void; disabled: () => boolean; close: () => void; open: () => void; toggle: () => void; } /** * Creates an open/closed state. Backs `Disclosure`, `Dialog`, `AlertDialog`, * `Popover`, `ContextMenu`, `CommandBar` and the popups of `Listbox` and * `Combobox`. * * Pass `defaultOpen` for uncontrolled state or `isOpen` for controlled; the * two are mutually exclusive. * * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#disclosure-state} */ export declare function createDisclosureState(options: DisclosureStateOptions): DisclosureStateProperties; export interface DisclosureStateRenderProps { children?: JSX.Element | ((state: DisclosureStateProperties) => JSX.Element); } export interface DisclosureStateProviderProps extends DisclosureStateRenderProps { state: DisclosureStateProperties; } export declare function DisclosureStateProvider(props: DisclosureStateProviderProps): JSX.Element; /** * Reads the nearest disclosure state from context. Throws when there is none. * * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#disclosure-state} */ export declare function useDisclosureState(): DisclosureStateProperties; /** * Passes the nearest disclosure state to a render prop. A function child is * treated as a render prop only when it declares exactly one parameter. * * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#disclosure-state} */ export declare function DisclosureStateChild(props: DisclosureStateRenderProps): JSX.Element; //# sourceMappingURL=create-disclosure-state.d.ts.map