feat: recreate admin dashboard using mantine

This commit is contained in:
Sonny
2024-11-08 18:05:00 +01:00
committed by Sonny
parent 6eb88871e8
commit 174a21288a
7 changed files with 276 additions and 10 deletions

View File

@@ -0,0 +1,39 @@
import {
UsersWithCounts,
UserWithCounts,
} from '~/components/admin/users/users_table';
export function filterData(data: UsersWithCounts, search: string) {
const query = search.toLowerCase().trim();
return data.filter((item) =>
['email', 'name', 'nickName', 'fullname'].some((key) => {
const value = item[key as keyof UserWithCounts];
return typeof value === 'string' && value.toLowerCase().includes(query);
})
);
}
export function sortData(
data: UsersWithCounts,
payload: {
sortBy: keyof UserWithCounts | null;
reversed: boolean;
search: string;
}
) {
const { sortBy } = payload;
if (!sortBy) {
return filterData(data, payload.search);
}
return filterData(
[...data].sort((a, b) => {
if (payload.reversed) {
return b[sortBy] > a[sortBy] ? 1 : -1;
}
return a[sortBy] > b[sortBy] ? 1 : -1;
}),
payload.search
);
}