@kala-ui/react-hooks
v0.0.1-beta.0
Published
Collection of reusable React hooks for kala-ui
Maintainers
Readme
@kala-ui/react-hooks
Collection of reusable React hooks for building modern web applications.
Installation
npm install @kala-ui/react-hooks
# or
yarn add @kala-ui/react-hooks
# or
pnpm add @kala-ui/react-hooksHooks
State Management
useDebounce- Debounces a valueuseDebouncedValue- Debounces value changes with cancel supportuseDebouncedState- Debounced useState hookuseThrottledValue- Throttles value changesusePrevious- Returns previous value of stateuseToggle- Boolean state with toggle helperuseDisclosure- Boolean state with open/close/toggle handlers
Storage
useLocalStorage- Sync state with localStorageuseSessionStorage- Sync state with sessionStorage
Browser APIs
useMediaQuery- Subscribe to media queriesuseClickOutside- Detect clicks outside elementuseIntersection- Intersection Observer APIuseWindowScroll- Track window scroll positionuseElementSize- Track element size with ResizeObserveruseClipboard- Copy to clipboard with feedback
Utilities
useMounted- Check if component is mounteduseInterval- Declarative setIntervaluseTimeout- Declarative setTimeoutuseId- Generate unique IDsuseMergedRef- Merge multiple refsuseIsomorphicEffect- SSR-safe useLayoutEffect
Usage Examples
useDebounce
import { useDebounce } from '@kala-ui/react-hooks';
import { useState } from 'react';
function SearchInput() {
const [value, setValue] = useState('');
const debouncedValue = useDebounce(value, 500);
// Use debouncedValue for API calls
useEffect(() => {
if (debouncedValue) {
searchAPI(debouncedValue);
}
}, [debouncedValue]);
return (
<input
value={value}
onChange={(e) => setValue(e.target.value)}
placeholder="Search..."
/>
);
}useLocalStorage
import { useLocalStorage } from '@kala-ui/react-hooks';
function ThemeToggle() {
const [theme, setTheme] = useLocalStorage('theme', 'light');
return (
<button onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}>
Current theme: {theme}
</button>
);
}useMediaQuery
import { useMediaQuery } from '@kala-ui/react-hooks';
function ResponsiveComponent() {
const isMobile = useMediaQuery('(max-width: 768px)');
return <div>{isMobile ? 'Mobile' : 'Desktop'} view</div>;
}License
MIT
