starchild-widget
Version:
Starchild Widget
132 lines • 3.58 kB
TypeScript
import { Dispatch, SetStateAction, MutableRefObject } from 'react';
export type StateUpdater<T> = Dispatch<SetStateAction<T>>;
export type StateTuple<T> = [T, StateUpdater<T>];
export type RefObject<T> = MutableRefObject<T>;
export type EffectCleanup = () => void;
export type EffectCallback = () => void | EffectCleanup;
export interface AsyncState<T> {
data: T | null;
loading: boolean;
error: Error | null;
}
export interface AsyncActions<T> {
execute: (...args: any[]) => Promise<T>;
reset: () => void;
setData: (data: T | null) => void;
setError: (error: Error | null) => void;
setLoading: (loading: boolean) => void;
}
export type UseAsyncReturn<T> = AsyncState<T> & AsyncActions<T>;
export interface UseLocalStorageOptions<T> {
serialize?: (value: T) => string;
deserialize?: (value: string) => T;
defaultValue?: T;
errorOnFailure?: boolean;
}
export interface UseDebounceOptions {
delay: number;
immediate?: boolean;
maxWait?: number;
}
export interface UseThrottleOptions {
delay: number;
trailing?: boolean;
leading?: boolean;
}
export interface UseIntervalOptions {
immediate?: boolean;
callback: () => void;
delay: number | null;
}
export interface UseEventListenerOptions {
target?: EventTarget | null;
passive?: boolean;
capture?: boolean;
}
export interface UseMediaQueryReturn {
matches: boolean;
media: string;
}
export interface UseNetworkReturn {
online: boolean;
downlink?: number;
effectiveType?: string;
rtt?: number;
saveData?: boolean;
}
export interface UseGeolocationOptions {
enableHighAccuracy?: boolean;
timeout?: number;
maximumAge?: number;
}
export interface UseGeolocationReturn {
position: GeolocationPosition | null;
error: GeolocationPositionError | null;
loading: boolean;
}
export interface UseKeyboardOptions {
target?: EventTarget | null;
event?: 'keydown' | 'keyup' | 'keypress';
capture?: boolean;
}
export interface UseMousePositionReturn {
x: number;
y: number;
}
export interface UseWindowSizeReturn {
width: number;
height: number;
}
export interface UseScrollPositionReturn {
x: number;
y: number;
}
export interface UseClipboardReturn {
value: string;
copy: (text: string) => Promise<void>;
reset: () => void;
error: Error | null;
}
export interface UseFieldReturn<T> {
value: T;
setValue: (value: T) => void;
reset: () => void;
isDirty: boolean;
error: string | null;
setError: (error: string | null) => void;
}
export type ValidationRule<T> = (value: T) => string | null | Promise<string | null>;
export interface UseFieldOptions<T> {
initialValue: T;
validate?: ValidationRule<T>;
validateOnChange?: boolean;
validateOnBlur?: boolean;
}
export interface UsePaginationReturn {
currentPage: number;
totalPages: number;
pageSize: number;
totalItems: number;
hasNextPage: boolean;
hasPreviousPage: boolean;
goToPage: (page: number) => void;
nextPage: () => void;
previousPage: () => void;
setPageSize: (size: number) => void;
}
export interface UseSearchReturn<T> {
query: string;
setQuery: (query: string) => void;
results: T[];
loading: boolean;
error: Error | null;
}
export type SortDirection = 'asc' | 'desc' | null;
export interface UseSortReturn<T> {
sortedData: T[];
sortBy: string | null;
sortDirection: SortDirection;
sort: (key: string) => void;
resetSort: () => void;
}
//# sourceMappingURL=index.d.ts.map