46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
'use client'
|
|
|
|
import { DataTable } from '@/components/admin/data-table'
|
|
import { Badge } from '@/components/ui/badge'
|
|
import { formatTimestamp } from '@/lib/admin-helpers'
|
|
import type { DataTableColumn, PaginatedResult } from '@/types'
|
|
|
|
interface TradeLogRow {
|
|
id: number
|
|
userOneName: string
|
|
userTwoName: string
|
|
status: string
|
|
timestamp: number
|
|
}
|
|
|
|
const columns: DataTableColumn<TradeLogRow>[] = [
|
|
{ key: 'id', label: 'ID', sortable: true },
|
|
{ key: 'userOneName', label: 'User One' },
|
|
{ key: 'userTwoName', label: 'User Two' },
|
|
{
|
|
key: 'status',
|
|
label: 'Status',
|
|
sortable: true,
|
|
render: (value) => {
|
|
const v = String(value)
|
|
const variant =
|
|
v === 'completed' ? 'default' : v === 'cancelled' ? 'destructive' : 'secondary'
|
|
return <Badge variant={variant}>{v || 'unknown'}</Badge>
|
|
},
|
|
},
|
|
{
|
|
key: 'timestamp',
|
|
label: 'Time',
|
|
sortable: true,
|
|
render: (value) => <span>{formatTimestamp(Number(value))}</span>,
|
|
},
|
|
]
|
|
|
|
interface TradesTableProps {
|
|
data: PaginatedResult<TradeLogRow>
|
|
}
|
|
|
|
export function TradesTable({ data }: TradesTableProps) {
|
|
return <DataTable data={data} columns={columns} searchPlaceholder="Search by username..." />
|
|
}
|