diff --git a/README.md b/README.md index e7099a0..3f8ab19 100644 --- a/README.md +++ b/README.md @@ -35,4 +35,5 @@ npm install @hemilabs/react-hooks | useTokenBalance | [useTokenBalance](./src/useTokenBalance) | | useTotalSupply | [useTotalSupply](./src/useTotalSupply) | | useUpdateNativeBalanceAfterReceipt | [useUpdateNativeBalanceAfterReceipt](./src/useUpdateNativeBalanceAfterReceipt) | +| useVisualViewportSize | [useVisualViewportSize](./src/useVisualViewportSize) | | useWindowSize | [useWindowSize](./src/useWindowSize) | diff --git a/src/useVisualViewportSize/README.md b/src/useVisualViewportSize/README.md new file mode 100644 index 0000000..ae62cbd --- /dev/null +++ b/src/useVisualViewportSize/README.md @@ -0,0 +1,39 @@ +# useVisualViewportSize + +Returns the current `VisualViewport` height and top offset. Updates automatically when the visual viewport is resized (e.g., when a mobile keyboard opens or the page is pinch-zoomed). + +## Import + +```ts +import { useVisualViewportSize } from "@hemilabs/react-hooks/useVisualViewportSize"; +``` + +## Parameters + +None. + +## Return Value + +| Property | Type | Description | +| --------- | -------- | ------------------------------------------------------------------------------ | +| height | `number` | Current visual viewport height in pixels | +| offsetTop | `number` | Distance from the top of the layout viewport to the top of the visual viewport | + +Both values default to `0` during server-side rendering or when `window.visualViewport` is unavailable. + +## Usage + +```tsx +import { useVisualViewportSize } from "@hemilabs/react-hooks/useVisualViewportSize"; + +function StickyFooter() { + const { height, offsetTop } = useVisualViewportSize(); + + // Keep a footer pinned above the on-screen keyboard on mobile + return ( +