polen
Version:
A framework for delightful GraphQL developer portals
43 lines • 1.55 kB
TypeScript
/**
* State management for GraphQL document tooltips
*
* Handles hover delays, pinning, and multiple tooltip coordination
*/
export interface TooltipState {
/** Currently visible tooltip (via hover) */
hoveredId: string | null;
/** Set of pinned tooltip IDs */
pinnedIds: Set<string>;
/** ID pending show (waiting for delay) */
pendingShowId: string | null;
/** ID pending hide (waiting for grace period) */
pendingHideId: string | null;
}
export interface UseTooltipStateOptions {
/** Delay before showing tooltip on hover (ms) */
showDelay?: number;
/** Delay before hiding tooltip on mouse leave (ms) */
hideDelay?: number;
/** Whether to allow multiple pinned tooltips */
allowMultiplePins?: boolean;
}
export interface UseTooltipStateReturn {
/** Check if a tooltip should be visible */
isOpen: (id: string) => boolean;
/** Check if a tooltip is pinned */
isPinned: (id: string) => boolean;
/** Handle hover start */
onHoverStart: (id: string) => void;
/** Handle hover end */
onHoverEnd: (id: string) => void;
/** Handle click (toggle pin) */
onTogglePin: (id: string) => void;
/** Handle tooltip content hover (cancels hide) */
onTooltipHover: (id: string) => void;
/** Unpin a specific tooltip */
unpin: (id: string) => void;
/** Unpin all tooltips */
unpinAll: () => void;
}
export declare const useTooltipState: (options?: UseTooltipStateOptions) => UseTooltipStateReturn;
//# sourceMappingURL=use-tooltip-state.d.ts.map