@daemoniorum/core
v0.1.1
Published
Core utilities, hooks, and types for Daemoniorum React applications
Maintainers
Readme
@daemoniorum/core
Core utilities, hooks, and types for Daemoniorum React applications.
Installation
npm install @daemoniorum/core
# or
pnpm add @daemoniorum/coreFeatures
Hooks
Timing & Performance
useDebounce- Debounce a valueuseThrottle- Throttle a valueusePolling- Execute async function at intervalsuseRetry/withRetry- Retry logic with exponential backoff
Storage
useLocalStorage- Sync state with localStorageuseSessionStorage- Sync state with sessionStorage
Responsive & Layout
useMediaQuery- Track CSS media query matchesuseResponsive- Responsive breakpoint helpersuseWindowSize- Track window dimensions
DOM & Interaction
useOnClickOutside- Detect clicks outside elementuseKeyboardShortcuts- Handle keyboard shortcutsuseSaveShortcut- Ctrl/Cmd+S handleruseEscapeShortcut- Escape key handler
Focus & Accessibility
useAutoFocus- Auto-focus element on mountuseFocusReturn- Return focus when closinguseFocusTrap- Trap focus in containeruseScreenReaderAnnounce- ARIA live announcements
SEO & Meta
usePageMeta- Update page meta tagsusePageTitle- Update document title
Utilities
Class Names
cn- Merge Tailwind classes with clsx
Formatters
formatCurrency- Format as currencyformatNumber- Format with separatorsformatPercent- Format as percentageformatCompact- Compact notation (1K, 1M)formatBytes- Human-readable file sizesformatDate- Localized date formattingformatRelativeTime- Relative time (5 min ago)formatDuration- Duration formattingtruncate- Truncate with ellipsistoTitleCase/toKebabCase/toCamelCase- String case conversionpluralize- Pluralize words
Validators
isValidEmail- Email validationisValidUrl- URL validationisValidPhone- Phone number validationisValidHexColor- Hex color validationisValidCssSize- CSS size validationisEmpty- Check for empty valuesisValidNumber/isInRange- Number validationisValidLength- String length validationisValidUuid- UUID validationisValidDate/isFutureDate/isPastDate- Date validation
Error Handling
parseApiError- Parse errors into standard formatisHttpError/isNetworkError/isAuthError- Error type checksisRetryableError- Check if error is retryable
Accessibility
checkContrast- WCAG contrast checkingisLightColor- Determine if color is lightgetContrastingTextColor- Get contrasting text colorvalidateColorAccessibility- Validate color schemearia- ARIA attribute helpers
Types
Common TypeScript types including:
AsyncState<T>- Async data statePaginatedResponse<T>- Paginated API responseSelectOption<T>- Select/dropdown optionResult<T, E>- Result type for error handling- And many more...
Usage
import {
useDebounce,
useLocalStorage,
useKeyboardShortcuts,
cn,
formatCurrency,
isValidEmail,
parseApiError,
} from '@daemoniorum/core'
// Debounce search input
const [search, setSearch] = useState('')
const debouncedSearch = useDebounce(search, 300)
// Persist theme preference
const [theme, setTheme] = useLocalStorage('theme', 'light')
// Handle keyboard shortcuts
useKeyboardShortcuts([
{ key: 'k', ctrl: true, handler: () => openSearch() },
{ key: 'Escape', handler: () => closeModal() },
])
// Merge Tailwind classes
<div className={cn('p-4', isActive && 'bg-blue-500')} />
// Format currency
formatCurrency(1234.56) // '$1,234.56'
// Validate email
if (!isValidEmail(email)) {
setError('Invalid email')
}
// Parse API errors
try {
await api.submit()
} catch (error) {
const { message } = parseApiError(error)
showToast(message)
}License
MIT
