` with the total supply.
+
+## Exported Helpers
+
+- **`totalSupplyQueryKey(token)`** - Generates a query key for cache management.
+
+## Usage
+
+```tsx
+import { useTotalSupply } from "@hemilabs/react-hooks/useTotalSupply";
+
+function TotalSupply() {
+ const { data: totalSupply } = useTotalSupply({
+ address: "0x...",
+ chainId: 1,
+ });
+
+ return Total Supply: {totalSupply?.toString()};
+}
+```
diff --git a/src/useTotalSupply.ts b/src/useTotalSupply/index.ts
similarity index 100%
rename from src/useTotalSupply.ts
rename to src/useTotalSupply/index.ts
diff --git a/src/useUpdateNativeBalanceAfterReceipt/README.md b/src/useUpdateNativeBalanceAfterReceipt/README.md
new file mode 100644
index 0000000..3b4aa96
--- /dev/null
+++ b/src/useUpdateNativeBalanceAfterReceipt/README.md
@@ -0,0 +1,41 @@
+# useUpdateNativeBalanceAfterReceipt
+
+Returns a function that updates the cached native token balance after a transaction receipt. Subtracts gas costs and an optional amount from the cached balance.
+
+## Import
+
+```ts
+import { useUpdateNativeBalanceAfterReceipt } from "@hemilabs/react-hooks/useUpdateNativeBalanceAfterReceipt";
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+| --------- | -------- | -------- | ----------- |
+| chainId | `number` | Yes | Chain ID |
+
+## Return Value
+
+Returns a function: `(receipt: TransactionReceipt, amount?: bigint) => void`
+
+| Parameter | Type | Required | Default | Description |
+| --------- | -------------------- | -------- | ----------- | --------------------------------- |
+| receipt | `TransactionReceipt` | Yes | - | Transaction receipt with gas info |
+| amount | `bigint` | No | `BigInt(0)` | Additional amount to subtract |
+
+## Usage
+
+```tsx
+import { useUpdateNativeBalanceAfterReceipt } from "@hemilabs/react-hooks/useUpdateNativeBalanceAfterReceipt";
+
+function Transaction() {
+ const updateBalance = useUpdateNativeBalanceAfterReceipt(1);
+
+ const onSuccess = (receipt: TransactionReceipt) => {
+ // Updates cached balance by subtracting gas + amount sent
+ updateBalance(receipt, parseEther("0.1"));
+ };
+
+ return ;
+}
+```
diff --git a/src/useUpdateNativeBalanceAfterReceipt.ts b/src/useUpdateNativeBalanceAfterReceipt/index.ts
similarity index 94%
rename from src/useUpdateNativeBalanceAfterReceipt.ts
rename to src/useUpdateNativeBalanceAfterReceipt/index.ts
index 20080c5..ff89ce4 100644
--- a/src/useUpdateNativeBalanceAfterReceipt.ts
+++ b/src/useUpdateNativeBalanceAfterReceipt/index.ts
@@ -3,7 +3,7 @@ import { type GetBalanceReturnType } from "@wagmi/core";
import { useCallback } from "react";
import type { Chain, TransactionReceipt } from "viem";
-import { useNativeBalance } from "./useNativeBalance";
+import { useNativeBalance } from "../useNativeBalance";
/**
* Returns a function that updates the native token balance after a transaction receipt.
diff --git a/src/useWindowSize/README.md b/src/useWindowSize/README.md
new file mode 100644
index 0000000..1747538
--- /dev/null
+++ b/src/useWindowSize/README.md
@@ -0,0 +1,39 @@
+# useWindowSize
+
+Returns the current window dimensions. Updates automatically when the window is resized.
+
+## Import
+
+```ts
+import { useWindowSize } from "@hemilabs/react-hooks/useWindowSize";
+```
+
+## Parameters
+
+None.
+
+## Return Value
+
+| Property | Type | Description |
+| -------- | -------- | ------------------------------- |
+| height | `number` | Current window height in pixels |
+| width | `number` | Current window width in pixels |
+
+Both values default to `0` during server-side rendering.
+
+## Usage
+
+```tsx
+import { useWindowSize } from "@hemilabs/react-hooks/useWindowSize";
+
+function ResponsiveLayout() {
+ const { width, height } = useWindowSize();
+
+ return (
+
+ Window: {width}x{height}
+ {width < 768 && }
+
+ );
+}
+```
diff --git a/src/useWindowSize.ts b/src/useWindowSize/index.ts
similarity index 100%
rename from src/useWindowSize.ts
rename to src/useWindowSize/index.ts