UNPKG

aura-glass

Version:

A comprehensive glassmorphism design system for React applications with 142+ production-ready components

115 lines 4.3 kB
export type SortDirection = 'asc' | 'desc' | null; export type SortKey<T> = keyof T | null; export interface SortConfig<T> { key: SortKey<T>; direction: SortDirection; } export interface SortableDataOptions<T> { /** Initial sort configuration */ initialSort?: SortConfig<T>; /** Custom sort function */ customSort?: (a: T, b: T, key: keyof T, direction: SortDirection) => number; /** Enable multi-column sorting */ multiSort?: boolean; /** Maximum number of sort levels for multi-sort */ maxSortLevels?: number; /** Stable sort (preserves original order for equal items) */ stable?: boolean; /** Case-sensitive sorting for strings */ caseSensitive?: boolean; /** Null/undefined handling */ nullsFirst?: boolean; /** Custom value getter for sorting */ getValue?: (item: T, key: keyof T) => any; } export interface SortableDataResult<T> { /** Sorted data */ data: T[]; /** Current sort configuration */ sortConfig: SortConfig<T>; /** Multi-sort configurations */ sortConfigs: SortConfig<T>[]; /** Sort function */ sort: (key: keyof T, direction?: SortDirection, append?: boolean) => void; /** Clear all sorting */ clearSort: () => void; /** Toggle sort direction */ toggleSort: (key: keyof T) => void; /** Check if column is sorted */ isSorted: (key: keyof T) => boolean; /** Get sort direction for column */ getSortDirection: (key: keyof T) => SortDirection; /** Get sort priority for column (for multi-sort) */ getSortPriority: (key: keyof T) => number | null; } export declare function useSortableData<T>(data: T[], options?: SortableDataOptions<T>): SortableDataResult<T>; export declare function useSearchableSortableData<T>(data: T[], searchFields: (keyof T)[], options?: SortableDataOptions<T> & { searchQuery?: string; searchDebounce?: number; caseSensitive?: boolean; fuzzy?: boolean; }): { filteredData: T[]; searchQuery: string; totalCount: number; filteredCount: number; /** Sorted data */ data: T[]; /** Current sort configuration */ sortConfig: SortConfig<T>; /** Multi-sort configurations */ sortConfigs: SortConfig<T>[]; /** Sort function */ sort: (key: keyof T, direction?: SortDirection, append?: boolean) => void; /** Clear all sorting */ clearSort: () => void; /** Toggle sort direction */ toggleSort: (key: keyof T) => void; /** Check if column is sorted */ isSorted: (key: keyof T) => boolean; /** Get sort direction for column */ getSortDirection: (key: keyof T) => SortDirection; /** Get sort priority for column (for multi-sort) */ getSortPriority: (key: keyof T) => number | null; }; export declare function usePaginatedSortableData<T>(data: T[], itemsPerPage?: number, options?: SortableDataOptions<T> & { initialPage?: number; onPageChange?: (page: number) => void; }): { data: T[]; currentPage: number; totalPages: number; itemsPerPage: number; totalItems: number; goToPage: (page: number) => void; nextPage: () => void; previousPage: () => void; hasNextPage: boolean; hasPreviousPage: boolean; /** Current sort configuration */ sortConfig: SortConfig<T>; /** Multi-sort configurations */ sortConfigs: SortConfig<T>[]; /** Sort function */ sort: (key: keyof T, direction?: SortDirection, append?: boolean) => void; /** Clear all sorting */ clearSort: () => void; /** Toggle sort direction */ toggleSort: (key: keyof T) => void; /** Check if column is sorted */ isSorted: (key: keyof T) => boolean; /** Get sort direction for column */ getSortDirection: (key: keyof T) => SortDirection; /** Get sort priority for column (for multi-sort) */ getSortPriority: (key: keyof T) => number | null; }; export declare const sortUtils: { naturalSort: (a: string, b: string, direction?: SortDirection) => number; weightedSort: <T>(items: T[], criteria: Array<{ key: keyof T; weight: number; direction?: SortDirection; }>) => T[]; groupSort: <T, K extends keyof T>(items: T[], groupBy: K, sortBy: K, direction?: SortDirection) => T[]; }; //# sourceMappingURL=useSortableData.d.ts.map