All hooks are client-side ('use client').
| Hook | Returns | Purpose |
|---|---|---|
useMounted() |
boolean |
True after first client render; guards hydration |
useMediaQuery(query) |
boolean |
Reactive media-query match |
useTheme() |
{ theme, toggleTheme } |
Reads/writes persisted theme, syncs <html> |
useOffers(side) |
React Query result | Fetches P2P offers for buy/sell |
useCreateTrade() |
React Query mutation | Opens a trade, invalidates cache, toasts |
useToast() |
{ toast, success, error } |
Ergonomic toast dispatch |
useOffers, useCreateTrade).['offers', side]) for targeted invalidation.