litellm/ui/litellm-dashboard/src/components/shared/DataTable/index.ts
ryan-crabbe-berri eda81fff59 feat(ui): shared URL-state layer for tables and tabs
Add useUrlTableState (search, sort, page, page size and filter_<column>
in the query string via one nuqs useQueryStates call, with keyPrefix and
urlKeys for routes that host two tables or need legacy key names) and
useUrlTab (validated ?tab= param with a role-aware fallback). Migrate
the Virtual Keys table onto useUrlTableState with a byte-identical URL
contract and bind the Playground tab strip to ?tab=.

DataTable gains controlled columnVisibility/onColumnVisibilityChange
plus usePersistedColumnVisibility (localStorage per table id), and an
isError prop that keeps the server page clamp from rewriting a
deep-linked ?page= after a failed fetch. Virtual Keys uses both.

The expired-session redirect in handleError now keeps the query string
and hash so the return URL captured on re-login restores the filtered
view instead of the bare list.

Delete useTabRouting and tabRoutes, the pathname tab router left over
from the reverted path-per-tab attempt (#34327, reverted in #34629);
tab persistence has to be a query param on the static export.
2026-09-16 15:51:45 -07:00

27 lines
1 KiB
TypeScript

import "./columnMeta";
export { DataTable } from "./DataTable";
export { DataTableFilterDrawer, DataTableFilterField, type FilterDraft } from "./DataTableFilterDrawer";
export { DataTablePagination, DEFAULT_PAGE_SIZE_OPTIONS } from "./DataTablePagination";
export { createSelectionColumn } from "./DataTableSelectionColumn";
export { DataTableToolbar } from "./DataTableToolbar";
export { DataTableViewOptions } from "./DataTableViewOptions";
export {
DataTableSortHeader,
DataTableMultiSortHeader,
type DataTableSortVariant,
type DataTableSortField,
} from "./DataTableSortHeader";
export { usePersistedColumnVisibility } from "./usePersistedColumnVisibility";
export { useUrlTableState, type UrlTableState, type UrlTableStateOptions } from "./useUrlTableState";
export type { DataTablePaginationProps } from "./DataTablePagination";
export type {
ColumnPinnedSide,
ColumnResizeMode,
DataTableProps,
DataTableResolvedProps,
DataTableSize,
FilterMode,
PaginationMode,
SortingMode,
} from "./types";