import DT, { type ConfigColumns } from 'datatables.net-dt' import DataTable, { type DataTableSlots } from 'datatables.net-react' import { useRouteLoaderData } from 'react-router' import type { TUserResponse } from '~/apis/admin/get-users' import { getStatusBadge, type TColorBadge } from '~/components/ui/color-badge' import { UiTable } from '~/components/ui/table' import { TitleDashboard } from '~/components/ui/title-dashboard' import type { loader } from '~/routes/_admin.lg-admin._dashboard.users._index' import { formatDate } from '~/utils/formatter' export const UsersPage = () => { const loaderData = useRouteLoaderData( 'routes/_admin.lg-admin._dashboard.users._index', ) DataTable.use(DT) const dataTable = loaderData?.usersData?.sort( (a, b) => new Date(b.subscribe.start_date).getTime() - new Date(a.subscribe.start_date).getTime(), ) || [] const dataColumns: ConfigColumns[] = [ { title: 'No', render: ( _data: unknown, _type: unknown, _row: unknown, meta: { row: number }, ) => { return meta.row + 1 }, }, { title: 'Tanggal Daftar', data: 'subscribe.start_date', }, { title: 'Nama User', }, { title: 'Email', data: 'email', }, { title: 'Kategori', data: 'subscribe.status', }, { title: 'Status', data: 'subscribe.subscribe_plan.name', }, ] const dataSlot: DataTableSlots = { 1: (value: string) => formatDate(value), 2: (_value: unknown, _type: unknown, data: TUserResponse) => (
{data.phone}
ID: {data.id.slice(0, 8)}
), 4: (_value: string) => Pribadi, 5: (value: TColorBadge, _type: unknown, data: TUserResponse) => ( {value} ), } return (
{/* TODO: Filter */}
) }