+ {t("number_selected", { count: numberOfSelectedRows })}
+
+
+ Delete Selected
+
+
+)}
+```
+
+## Advanced Usage
+
+### Server-Side Operations
+
+The DataTable system is designed for **server-side filtering, sorting, and pagination** with standard pagination. This approach is necessary because we only fetch a limited number of items per page, unlike the previous infinite scrolling approach that cached large amounts of data and could filter on the client side.
+
+#### Basic Server-Side Pattern
+
+```tsx
+// Get current table state for API calls
+const { limit, offset, sorting } = useDataTable();
+const columnFilters = useColumnFilters();
+
+// Use in your API call
+const { data } = trpc.users.list.useQuery({
+ limit,
+ offset,
+ sorting,
+ filters: columnFilters
+});
+```
+
+#### Prisma Where Clause Construction
+
+For Prisma-based backends, extract individual filters and build typed where conditions:
+
+```tsx
+// From packages/trpc/server/routers/viewer/organizations/listMembers.handler.ts
+const roleFilter = filters.find((filter) => filter.id === "role") as
+ | TypedColumnFilter