import { Descriptions, Empty, Table, Tag, Typography } from 'antd'; function scalar(value: unknown) { if (value === null || value === undefined) return '-'; if (typeof value === 'boolean') return value ? : ; if (typeof value === 'object') return {JSON.stringify(value)}; return String(value); } function rowsFrom(payload: unknown): Record[] | null { if (Array.isArray(payload)) return payload.filter((item) => item && typeof item === 'object') as Record[]; if (!payload || typeof payload !== 'object') return null; const object = payload as Record; for (const key of ['items', 'data', 'results']) { if (Array.isArray(object[key])) return object[key] as Record[]; } return null; } export function ResponseView({ payload }: { payload: unknown }) { if (payload === undefined) return ; if (payload === null) return ; const rows = rowsFrom(payload); if (rows) { if (!rows.length) return ; const keys = [...new Set(rows.flatMap((row) => Object.keys(row)))].slice(0, 8); return ( String(row.id ?? row.code ?? row.userId ?? index)} dataSource={rows} scroll={{ x: 'max-content' }} pagination={{ pageSize: 20, showSizeChanger: true }} columns={keys.map((key) => ({ title: key, dataIndex: key, key, ellipsis: true, render: scalar, }))} /> ); } if (typeof payload === 'object') { return ( {Object.entries(payload as Record).map(([key, value]) => ( {scalar(value)} ))} ); } return {String(payload)}; }