@better-auth-ui/core
Version:
Authentication components and data utilities for [Better Auth](https://better-auth.com), available for React and Solid.
72 lines (71 loc) • 3.5 kB
TypeScript
export type TableSortingEntry = {
desc: boolean;
id: string;
};
export type TableColumnVisibility = Record<string, boolean>;
export type TableFilterValue = boolean | number | string | null | readonly (boolean | number | string | null)[];
export type TableUrlState = {
columnFilters: {
id: string;
value: TableFilterValue;
}[];
globalFilter: string;
pagination: {
pageIndex: number;
pageSize: number;
};
sorting: TableSortingEntry[];
};
export type TableSearchParamsAdapter = {
read: () => URLSearchParams;
replace: (params: URLSearchParams) => void;
subscribe: (listener: () => void) => () => void;
};
export type TableStorageAdapter = {
read: (key: string) => string | null;
write: (key: string, value: string) => void;
};
export type TablePersistenceAdapters = {
search: TableSearchParamsAdapter;
storage?: TableStorageAdapter;
};
export declare const DEFAULT_TABLE_SEARCH_DEBOUNCE_MS = 300;
/**
* Create a search adapter from a router's search and navigation primitives.
*
* TanStack Router consumers can pass `router.state.location.searchStr` from
* `read`, use `router.navigate({ replace: true, search })` from `replace`, and
* subscribe to router state changes from `subscribe`. Other routers can expose
* the same three operations without coupling the table package to that router.
*/
export declare function createTableSearchParamsAdapter(adapter: TableSearchParamsAdapter): TableSearchParamsAdapter;
/** Create browser-backed persistence for tables outside a router context. */
export declare function createBrowserTablePersistenceAdapters(): TablePersistenceAdapters;
export declare function parseTablePage(value: string | null, fallback: number, maximum?: number): number;
export declare function parseTablePageSize(value: string | null, fallback: number, allowedPageSizes: readonly number[]): number;
export declare function parseTableSorting(value: string | null, allowedColumnIds?: readonly string[], maximumEntries?: number): TableSortingEntry[];
export declare function parseTableColumnVisibility(value: string | null, allowedColumnIds?: readonly string[]): TableColumnVisibility;
export declare function serializeTableColumnVisibility(columns: TableColumnVisibility): string;
export declare function parseTableFilterValue(value: string): TableFilterValue;
export declare function serializeTableFilterValue(value: unknown): string | undefined;
/** Parse one namespaced table state from URL search parameters. */
export declare function parseTableUrlState(params: URLSearchParams, stateKey: string, defaultPageSize: number, allowedPageSizes: readonly number[], allowedColumnIds?: readonly string[]): TableUrlState;
/** Write one namespaced table state without changing unrelated parameters. */
export declare function serializeTableUrlState(source: URLSearchParams, stateKey: string, defaultPageSize: number, state: {
columnFilters: readonly {
id: string;
value: unknown;
}[];
globalFilter: string;
pagination: {
pageIndex: number;
pageSize: number;
};
sorting: readonly TableSortingEntry[];
}): URLSearchParams;
export declare function getLookaheadPage<T>(items: readonly T[], pageSize: number): {
hasNextPage: boolean;
rows: T[];
};
/** Returns the nearest valid zero-based page index for a result count. */
export declare function getClampedTablePageIndex(pageIndex: number, pageSize: number, rowCount: number): number;