'use client'; import type { ListUser } from '@/app/(private)/admin/users/(table)/_components/data'; import { AddressAvatar } from '@/components/blocks/address-avatar/address-avatar'; import { DataTableColumnCell } from '@/components/blocks/data-table/data-table-column-cell'; import { DataTableColumnHeader } from '@/components/blocks/data-table/data-table-column-header'; import { DataTableRowActions } from '@/components/blocks/data-table/data-table-row-actions'; import { EvmAddress } from '@/components/blocks/evm-address/evm-address'; import { Badge } from '@/components/ui/badge'; import { CopyToClipboard } from '@/components/ui/copy'; import { EvmAddressBalances } from '@/components/ui/evm-address-balances'; import { Skeleton } from '@/components/ui/skeleton'; import { formatDate } from '@/lib/date'; import { createColumnHelper } from '@tanstack/react-table'; import { BadgeCheck, BadgePlus, BadgeX, Ban, Check, ShieldCheck, User2 } from 'lucide-react'; import { type ComponentType, Suspense } from 'react'; import type { Address } from 'viem'; import { BanUserAction } from './actions/ban-user-action'; import { ChangeRoleAction } from './actions/change-role-action'; import { UpdateKycStatusAction } from './actions/update-kyc-status-action'; const columnHelper = createColumnHelper(); export const columns = [ columnHelper.accessor('name', { header: ({ column }) => Name, cell: ({ renderValue, row }) => ( }> {renderValue()} {row.original.banned && Banned for {row.original.ban_reason}} ), enableColumnFilter: false, }), columnHelper.accessor('wallet', { header: ({ column }) => Wallet, cell: ({ getValue }) => ( {getValue() && (
)}
), enableColumnFilter: false, }), columnHelper.accessor('email', { header: ({ column }) => Email, cell: ({ renderValue }) => {renderValue()}, enableColumnFilter: false, }), columnHelper.accessor('role', { header: ({ column }) => Role, cell: ({ renderValue }) => { const role = renderValue(); const Icon = role ? icons[role] : null; return ( {Icon && } {role} ); }, enableColumnFilter: true, }), columnHelper.accessor('banned', { header: ({ column }) => Status, cell: ({ getValue }) => { const banned = getValue(); const status = banned ? 'banned' : 'active'; const Icon = icons[status]; return ( {Icon && } {banned ? 'Banned' : 'Active'} ); }, enableColumnFilter: false, }), columnHelper.accessor('kyc_verified', { header: ({ column }) => KYC Status, cell: ({ getValue }) => { const verified = getValue() as string | undefined; const status = verified ? 'verified' : 'notVerified'; const Icon = icons[status]; return ( {Icon && } {verified ? 'Verified' : 'Not Verified'} ); }, enableColumnFilter: false, }), columnHelper.accessor('lastActivity', { header: ({ column }) => Last activity, cell: ({ getValue }) => { const lastActivity = getValue(); return ( {lastActivity ? formatDate(lastActivity, { type: 'distance' }) : '-'} ); }, enableColumnFilter: false, }), columnHelper.display({ id: 'actions', header: () => '', cell: ({ row }) => ( {({ close }) => ( <> )} ), meta: { enableCsvExport: false, }, }), ]; export const icons: Record> = { admin: ShieldCheck, issuer: BadgePlus, user: User2, banned: Ban, active: Check, verified: BadgeCheck, notVerified: BadgeX, };