export interface VisualViewportPinOptions { /** Which layout-viewport edge the element is pinned to (default `'top'`). * The hook assumes the element's untransformed position IS that edge — * true for `fixed` bars, and for `sticky` bars while stuck. */ edge?: 'top' | 'bottom'; /** Suspend pinning and hand the transform back to CSS — e.g. while a * `sticky="scroll-up"` header is hidden by its own translate. */ disabled?: boolean; } /** * Keeps a fixed/sticky bar glued to the visual viewport while the user * pinch-zooms or pans, so persistent chrome (and the CTA it carries) never * leaves the visible screen. Returns a callback ref — attach it to the bar * (composable via `composeRefs`); late-mounting and remounting nodes re-pin * automatically. * * The pin engages only under real pinch-zoom (`visualViewport.scale > 1`): * keyboard-driven viewport shrink (scale stays 1) and desktop scrollbar * deltas never move the bar. Deliberate 1.4.4 trade-off: counter-scaled * chrome cannot itself be magnified by pinch-zoom — its text sizes through * rem tokens and OS text-size settings instead, while the pin keeps the * controls reachable (a net gain for zoom accessibility). * * Writes `transform` / `transform-origin` imperatively (per-frame viewport * geometry cannot be expressed as static classes) and suppresses the * element's own transitions only while a pin is applied, so the bar tracks * the viewport without transition lag. All geometry is in physical viewport * coordinates by nature — this is not layout CSS, so the logical-properties * rule does not apply. */ export declare function useVisualViewportPin({ edge, disabled, }?: VisualViewportPinOptions): (node: T | null) => void; //# sourceMappingURL=use-visual-viewport-pin.d.ts.map